2 lines
1.1 MiB
2 lines
1.1 MiB
(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<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},o.apply(null,arguments)}var r=function(e,t){return s.createElement("svg",o({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 11 10",role:"presentation","aria-hidden":!0,ref:t},e),i||(i=s.createElement("path",{fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",d:"M8.5 5.5v3a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3M7 .5h3v3M4.5 6 10 .5"})))},a=(0,s.forwardRef)(r)},"./res/img/matrix.svg":(e,t,n)=>{"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.length;e++){const n=t[e];await this.addLiveEventToIndex(n)}}async addRoomCheckpoint(e,t=!1){var n;const i=null===(n=o.A.get())||void 0===n?void 0:n.getEventIndexingManager();if(!i)return;const r=d.J.safeGet().getRoom(e);if(!r)return;const l=r.getLiveTimeline(),c=l.getPaginationToken(a.Direction.Backward);if(!c)return void await this.addEventsFromLiveTimeline(l);const m={roomId:r.roomId,token:c,fullCrawl:t,direction:a.Direction.Backward};s.vF.log("EventIndex: Adding checkpoint",m);try{await i.addCrawlerCheckpoint(m)}catch(e){s.vF.log("EventIndex: Error adding new checkpoint for room",r.roomId,m,e)}this.crawlerCheckpoints.push(m)}async crawlerFunc(){var e;let t=!1;const n=d.J.safeGet(),i=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager();if(!i)return;this.crawler={cancel:()=>{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<E.length;e++){const t=E[e],n=t.getAssociatedId();n?await i.deleteEvent(n):s.vF.warn("EventIndex: Redaction event doesn't contain a valid associated event id",t)}const e=await i.addHistoricEvents(y,b,o);if(!b){s.vF.log("EventIndex: The server didn't return a valid ","new checkpoint, not continuing the crawl.",o);continue}!0===e&&!0!==b.fullCrawl?(s.vF.log("EventIndex: Checkpoint had already all events","added, stopping the crawl",o),await i.removeCrawlerCheckpoint(b)):(!0===e&&s.vF.log("EventIndex: Checkpoint had already all events","added, but continuing due to a full crawl",o),this.crawlerCheckpoints.push(b))}catch(e){s.vF.log("EventIndex: Error during a crawl",e),this.crawlerCheckpoints.push(o)}}this.crawler=null}startCrawler(){null===this.crawler&&this.crawlerFunc()}stopCrawler(){null!==this.crawler&&this.crawler.cancel()}async close(){var e;const t=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager();this.removeListeners(),this.stopCrawler(),await(null==t?void 0:t.closeEventIndex())}async search(e){var t;const n=null===(t=o.A.get())||void 0===t?void 0:t.getEventIndexingManager();return null==n?void 0:n.searchEventIndex(e)}async loadFileEvents(e,t=10,n,i=a.EventTimeline.BACKWARDS){var r;const c=d.J.safeGet(),m=null===(r=o.A.get())||void 0===r?void 0:r.getEventIndexingManager();if(!m)return[];const u={roomId:e.roomId,limit:t};let h;n&&(u.fromEvent=n,u.direction=i);try{h=await m.loadFileEvents(u)}catch(e){return s.vF.log("EventIndex: Error getting file events",e),[]}const p=c.getEventMapper();return h.map(t=>{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<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Je.apply(null,arguments)}var $e=function(e,t){return i.createElement("svg",Je({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 8 14",role:"presentation","aria-hidden":!0,ref:t},e),Ke||(Ke=i.createElement("path",{fill:"currentColor",d:"M1.333.333C.6.333 0 .933 0 1.666l.007 2.12c0 .354.14.687.386.94L2.667 7 .393 9.286a1.33 1.33 0 0 0-.386.94L0 12.333c0 .733.6 1.333 1.333 1.333h5.334c.733 0 1.333-.6 1.333-1.333v-2.107c0-.353-.14-.693-.387-.94L5.333 7l2.274-2.267C7.86 4.48 8 4.14 8 3.786v-2.12C8 .933 7.4.333 6.667.333zm5.334 9.94v1.393c0 .367-.3.667-.667.667H2a.67.67 0 0 1-.667-.667v-1.393c0-.18.074-.347.194-.473L4 7.333l2.473 2.473c.12.12.194.294.194.467"})))},qe=(0,i.forwardRef)($e);let Ye=function(e){return e.Verified="Verified",e.Unverified="Unverified",e.Inactive="Inactive",e.Unverifiable="Unverifiable",e}({});const Xe=7776e6,Qe=e=>!!e.last_seen_ts&&e.last_seen_ts<Date.now()-Xe,Ze={[Ye.Verified]:e=>!!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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ot(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ot(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function at(e){return"unverified_session_"+e}const lt=async e=>{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.keyBackupFetchedAt<e-3e5)&&(this.keyBackupInfo=await t.getKeyBackupInfo(),this.keyBackupFetchedAt=e),this.keyBackupInfo):null}async shouldShowSetupEncryptionToast(){if((0,ie.kq)())return!1;const e=this.client,t=null==e?void 0:e.getCrypto();return!(!e||!t)&&await(0,se.qM)(e.getRooms(),({roomId:e})=>t.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;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?At(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):At(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({roomId:e},t),i=this.generateIdOf(n);return localStorage.setItem(`${Ct}${i}`,JSON.stringify(n)),this.translateInvite(n)}getWireInvites(){const e=[];for(let t=0;t<localStorage.length;t++){const n=localStorage.key(t);if(null!=n&&n.startsWith(Ct))try{e.push(JSON.parse(localStorage.getItem(n)))}catch(e){console.warn("Failed to parse 3pid invite",e)}}return e}getInvites(){return this.getWireInvites().map(e=>this.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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dn(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class un extends i.PureComponent{constructor(...e){super(...e),(0,w.A)(this,"anchorElement",(0,i.createRef)()),(0,w.A)(this,"onDecrypted",()=>{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;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Mn.apply(null,arguments)}var Dn=function(e,t){return i.createElement("svg",Mn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 18 18",role:"presentation","aria-hidden":!0,ref:t},e),_n||(_n=i.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M3 14h12M5 10.5l7-7"})))},On=(0,i.forwardRef)(Dn);var Fn;function Ln(){return Ln=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Ln.apply(null,arguments)}var Un=function(e,t){return i.createElement("svg",Ln({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",role:"presentation","aria-hidden":!0,ref:t},e),Fn||(Fn=i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M20 1a1 1 0 0 0-1 1v2h-2a1 1 0 1 0 0 2h2v2a1 1 0 1 0 2 0V6h2a1 1 0 1 0 0-2h-2V2a1 1 0 0 0-1-1M7 9.5C7 8.67 7.67 8 8.5 8s1.5.67 1.5 1.5S9.33 11 8.5 11 7 10.33 7 9.5m8.5 1.5c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5M12 17.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5M4 12a8 8 0 0 1 9.774-7.803 1 1 0 1 0 .442-1.95A10 10 0 0 0 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10q0-.318-.02-.632a1 1 0 1 0-1.996.125q.015.25.016.507a8 8 0 1 1-16 0",clipRule:"evenodd"})))},Vn=(0,i.forwardRef)(Un);var Bn;function jn(){return jn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},jn.apply(null,arguments)}var Wn=function(e,t){return i.createElement("svg",jn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 11 14",role:"presentation","aria-hidden":!0,ref:t},e),Bn||(Bn=i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M.22 8.494a.753.753 0 0 1 1.062-.002l3.724 3.7L8.718 8.48a.753.753 0 0 1 1.062-.002.747.747 0 0 1 .002 1.06L5.54 13.78a.753.753 0 0 1-1.063.002L.221 9.552a.747.747 0 0 1-.002-1.058m9.562-2.988a.753.753 0 0 1-1.062.002l-3.724-3.7L1.283 5.52a.753.753 0 0 1-1.062.002.747.747 0 0 1-.002-1.06L4.462.22A.753.753 0 0 1 5.524.218l4.257 4.23a.747.747 0 0 1 .001 1.058",clipRule:"evenodd"})))},Hn=(0,i.forwardRef)(Wn);var zn;function Kn(){return Kn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Kn.apply(null,arguments)}var Gn=function(e,t){return i.createElement("svg",Kn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 11 14",role:"presentation","aria-hidden":!0,ref:t},e),zn||(zn=i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M.22.234A.753.753 0 0 1 1.281.232l3.724 3.7L8.718.22A.753.753 0 0 1 9.781.218a.747.747 0 0 1 .001 1.06L5.54 5.52a.753.753 0 0 1-1.063.002L.221 1.292A.747.747 0 0 1 .219.235m9.562 13.532a.753.753 0 0 1-1.062.002l-3.724-3.7-3.713 3.712a.753.753 0 0 1-1.062.002.747.747 0 0 1-.002-1.06L4.462 8.48a.753.753 0 0 1 1.062-.002l4.257 4.23a.747.747 0 0 1 .001 1.058",clipRule:"evenodd"})))},Jn=(0,i.forwardRef)(Gn);var $n=n("./src/accessibility/Toolbar.tsx"),qn=n("./src/accessibility/RovingTabIndex.tsx"),Yn=n("./src/Resend.ts"),Xn=n("./src/utils/MediaEventHelper.ts"),Qn=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/download.js"),Zn=n("./src/hooks/useDownloadMedia.ts");function ei({mxEvent:e,mediaEventHelperGet:t}){var n,s;const o=(0,i.useMemo)(()=>t(),[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(e<Ti.GRACE_PERIOD_MS)return;e<=Ti.MAXIMUM_LATE_DECRYPTION_PERIOD&&(i.timeToDecryptMillis=e),this.reportFailure(i)}}async handleKeysChanged(e){if(this.checkingVerificationStatus)this.retryVerificationStatus=!0;else{this.checkingVerificationStatus=!0;try{do{this.retryVerificationStatus=!1,this.userTrustsOwnIdentity=(await e.getCrypto().getUserVerificationStatus(e.getUserId())).isCrossSigningVerified()}while(this.retryVerificationStatus)}finally{this.checkingVerificationStatus=!1}}}async start(e){this.loadReportedEvents(),await this.calculateClientProperties(e),this.registerHandlers(e),this.checkInterval=window.setInterval(()=>this.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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ri(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ri(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({eventName:"Error",domain:"E2EE",name:e,context:`mxc_crypto_error_type_${t}`},n);j.Vo.instance.trackEvent(i)},e=>{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<e.length;++n)this.applyStyles(t,e[n]);window.setTimeout(()=>{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 e<t?{hidden:!1,position:e}:{hidden:!0,position:0}}(r,m),c=e.userId;let d;return t&&(d=t[c],d||(d={},t[c]=d)),i.createElement(Zi,{key:c,member:e.roomMember,fallbackUserId:c,offset:10*l,hidden:a,readReceiptPosition:d,checkUnmounting:n,suppressAnimation:s,timestamp:e.ts,showTwelveHour:o})}).reverse();let p;const g=e.length-m;let v;if(g>0&&(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<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},ds.apply(null,arguments)}var ms=function(e,t){return i.createElement("svg",ds({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16",role:"presentation","aria-hidden":!0,ref:t},e),ls||(ls=i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M1 2.75A.75.75 0 0 1 1.75 2h.005a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75m2.495 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.005a.75.75 0 0 1 0 1.5h-.005a.75.75 0 0 1-.75-.75M1 6.75A.75.75 0 0 1 1.75 6h8.5a.75.75 0 0 1 0 1.5h-8.5A.75.75 0 0 1 1 6.75m0 3A.75.75 0 0 1 1.75 9h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 1 9.75m0 4a.75.75 0 0 1 .75-.75h.005a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1-.75-.75m2.495 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 0 1.5h-.01a.75.75 0 0 1-.75-.75m2.5 0a.75.75 0 0 1 .75-.75h.005a.75.75 0 0 1 0 1.5h-.005a.75.75 0 0 1-.75-.75",clipRule:"evenodd"})))},us=(0,i.forwardRef)(ms);function hs({viewInRoom:e,copyLinkToThread:t}){return i.createElement($n.A,{className:"mx_MessageActionBar","aria-label":(0,l._t)("timeline|mab|label"),"aria-live":"off"},i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton",onClick:e,title:(0,l._t)("timeline|mab|view_in_room"),key:"view_in_room"},i.createElement(us,null)),i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton",onClick:t,title:(0,l._t)("timeline|mab|copy_link_thread"),key:"copy_link_to_thread"},i.createElement(cs.A,null)))}function ps(e){return e.getUnsigned()["io.element.late_event"]}var gs=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/pin-solid.js");function vs(e){return i.createElement("div",(0,Wt.A)({},e,{className:"mx_PinnedMessageBadge"}),i.createElement(gs.A,{width:"16px",height:"16px"}),(0,l._t)("room|pinned_message_badge"))}function _s(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;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_s(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_s(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Es(e){return!(!(0,sn.S8)(e)&&e.getType()!==o.EventType.RoomMessageEncrypted)}class ys extends i.Component{constructor(e,t){super(e,t),(0,w.A)(this,"suppressReadReceiptAnimation",void 0),(0,w.A)(this,"isListeningForReceipts",void 0),(0,w.A)(this,"tile",(0,i.createRef)()),(0,w.A)(this,"replyChain",(0,i.createRef)()),(0,w.A)(this,"ref",(0,i.createRef)()),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"updateThread",e=>{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;i<n.length;i++){const s=n[i];if(!t.hasOwnProperty(s))return!1;if("readReceipts"===s){const n=e[s],i=t[s];if(n===i)continue;if(!n||!i)return!1;if(n.length!==i.length)return!1;for(let e=0;e<n.length;e++){if(n[e].userId!==i[e].userId)return!1;if(n[e].roomMember!==i[e].roomMember)return!1}}else if(e[s]!==t[s])return!1}return!0}shouldHighlight(){if(this.props.forExport)return!1;if(this.context.timelineRenderingType===gn.Ae.Notification)return!1;if(this.context.timelineRenderingType===gn.Ae.ThreadsList)return!1;if(this.props.isRedacted)return!1;const e=v.J.safeGet(),t=e.getPushActionsForEvent(this.props.mxEvent.replacingEvent()||this.props.mxEvent),n=this.props.mxEvent.replacingEvent()?e.getPushActionsForEvent(this.props.mxEvent):void 0;return!!(null!=t&&t.tweaks||null!=n&&n.tweaks)&&(this.props.mxEvent.getSender()!==e.credentials.userId&&!!(null!=t&&t.tweaks.highlight||null!=n&&n.tweaks.highlight))}renderE2EPadlock(){var e;const t=null!==(e=this.props.mxEvent.replacingEvent())&&void 0!==e?e:this.props.mxEvent;if((0,os.F)(t.getRoomId()))return null;if(t.isDecryptionFailure())switch(t.decryptionFailureReason){case V.RT.SENDER_IDENTITY_PREVIOUSLY_VERIFIED:case V.RT.UNSIGNED_SENDER_DEVICE:return null;default:return i.createElement(Ss,null)}if(this.state.shieldColour!==V.so.NONE){let e;switch(this.state.shieldReason){case V.uV.UNVERIFIED_IDENTITY:e=(0,l._t)("encryption|event_shield_reason_unverified_identity");break;case V.uV.UNSIGNED_DEVICE:e=(0,l._t)("encryption|event_shield_reason_unsigned_device");break;case V.uV.UNKNOWN_DEVICE:e=(0,l._t)("encryption|event_shield_reason_unknown_device");break;case V.uV.AUTHENTICITY_NOT_GUARANTEED:e=(0,l._t)("encryption|event_shield_reason_authenticity_not_guaranteed");break;case V.uV.MISMATCHED_SENDER_KEY:e=(0,l._t)("encryption|event_shield_reason_mismatched_sender_key");break;case V.uV.SENT_IN_CLEAR:e=(0,l._t)("common|unencrypted");break;case V.uV.VERIFICATION_VIOLATION:e=(0,l._t)("timeline|decryption_failure|sender_identity_previously_verified");break;case V.uV.MISMATCHED_SENDER:e=(0,l._t)("encryption|event_shield_reason_mismatched_sender");break;default:e=(0,l._t)("error|unknown")}return this.state.shieldColour===V.so.GREY?i.createElement(Cs,{icon:As.Normal,title:e}):i.createElement(Cs,{icon:As.Warning,title:e})}if(this.context.isRoomEncrypted){if(t.status===o.EventStatus.ENCRYPTING)return null;if(t.status===o.EventStatus.NOT_SENT)return null;if(t.isState())return null;if(t.isRedacted())return null;if(!t.isEncrypted())return i.createElement(ws,null)}return null}showContextMenu(e,t){var n;const i=e.target,s=i instanceof HTMLAnchorElement?i:i.closest("a");i instanceof HTMLImageElement||(null!==(n=a.A.get())&&void 0!==n&&n.allowOverridingNativeContextMenus()||!s)&&(this.props.editState||(e.preventDefault(),e.stopPropagation(),this.setState({contextMenu:{position:{left:e.clientX,top:e.clientY,bottom:e.clientY},link:(null==s?void 0:s.href)||t},actionBarFocused:!0})))}shouldHideEvent(){var e;return(null===(e=this.props.callEventGrouper)||void 0===e?void 0:e.hangupReason)===Ht.Il.Replaced}renderContextMenu(){if(!this.state.contextMenu)return null;const e=this.getTile(),t=this.getReplyChain(),n=null!=e&&e.getEventTileOps?e.getEventTileOps():void 0,s=null!=t&&t.canCollapse()?t.collapse:void 0;return i.createElement(yn.A,(0,Wt.A)({},(0,bn.ps)(this.state.contextMenu.position),{mxEvent:this.props.mxEvent,permalinkCreator:this.props.permalinkCreator,eventTileOps:n,collapseReplyChain:s,onFinished:this.onCloseMenu,rightClick:!0,reactions:this.state.reactions,link:this.state.contextMenu.link,getRelationsForEvent:this.props.getRelationsForEvent}))}render(){var e,t,n;const r=this.props.mxEvent.getContent().msgtype,a=this.props.mxEvent.getType(),c=(0,Kt.uniqueId)(),{hasRenderer:d,isBubbleMessage:m,isInfoMessage:u,isLeftAlignedBubbleMessage:h,noBubbleEvent:p,isSeeingThroughMessageHiddenForModeration:g}=rn(v.J.safeGet(),this.props.mxEvent,this.context.showHiddenEvents,this.shouldHideEvent()),{isQuoteExpanded:_}=this.state;if(!d){const{mxEvent:e}=this.props;return s.vF.warn(`Event type not supported: type:${a} isState:${e.isState()}`),i.createElement("div",{className:"mx_EventTile mx_EventTile_info mx_MNoticeBody"},i.createElement("div",{className:"mx_EventTile_line"},(0,l._t)("timeline|error_no_renderer")))}const f=Xn.j.isEligible(this.props.mxEvent),E=Lt()("mx_EventTile_line",{mx_EventTile_mediaLine:f,mx_EventTile_image:this.props.mxEvent.getType()===o.EventType.RoomMessage&&this.props.mxEvent.getContent().msgtype===o.MsgType.Image,mx_EventTile_sticker:this.props.mxEvent.getType()===o.EventType.Sticker,mx_EventTile_emote:this.props.mxEvent.getType()===o.EventType.RoomMessage&&this.props.mxEvent.getContent().msgtype===o.MsgType.Emote}),y=["sending","queued","encrypting"].includes(this.props.eventSendStatus),b=(0,sn.S8)(this.props.mxEvent)&&this.props.isRedacted,w=this.props.mxEvent.isDecryptionFailure();let A=this.props.continuation;this.context.timelineRenderingType!==gn.Ae.Room&&this.context.timelineRenderingType!==gn.Ae.Search&&this.context.timelineRenderingType!==gn.Ae.Thread&&this.props.layout!==Bt.P.Bubble&&(A=!1);const C=this.context.timelineRenderingType===gn.Ae.Notification,x=!!this.props.editState,R=Lt()({mx_EventTile_bubbleContainer:m,mx_EventTile_leftAlignedBubble:h,mx_EventTile:!0,mx_EventTile_isEditing:x,mx_EventTile_info:u,mx_EventTile_12hr:this.props.isTwelveHour,mx_EventTile_sending:!x&&y,mx_EventTile_highlight:this.shouldHighlight(),mx_EventTile_selected:this.props.isSelectedEvent||this.state.contextMenu,mx_EventTile_continuation:A||a===o.EventType.CallInvite||on.Fm.matches(a),mx_EventTile_last:this.props.last,mx_EventTile_lastInSection:this.props.lastInSection,mx_EventTile_contextual:this.props.contextual,mx_EventTile_actionBarFocused:this.state.actionBarFocused,mx_EventTile_bad:w,mx_EventTile_emote:r===o.MsgType.Emote,mx_EventTile_noSender:this.props.hideSender,mx_EventTile_clamp:this.context.timelineRenderingType===gn.Ae.ThreadsList||C,mx_EventTile_noBubble:p}),k=null!==this.props.eventSendStatus?"off":void 0;let I="#";this.props.permalinkCreator&&(I=this.props.permalinkCreator.forEvent(this.props.mxEvent.getId()));const T=this.props.mxEvent.status?void 0:this.props.mxEvent.getId();let P,N,M=null,D=null;if(C?(P="24px",N=!0):u?(P="14px",N=!1):this.context.timelineRenderingType===gn.Ae.ThreadsList||this.context.timelineRenderingType===gn.Ae.Thread&&!this.props.continuation?(P="32px",N=!0):a===o.EventType.RoomCreate||m?(P=null,N=!1):this.props.layout==Bt.P.IRC?(P="14px",N=!0):this.props.continuation&&this.context.timelineRenderingType!==gn.Ae.File||a===o.EventType.CallInvite||on.Fm.matches(a)?(P=null,N=!1):this.context.timelineRenderingType===gn.Ae.File?(P="20px",N=!0):(P="30px",N=!0),this.props.mxEvent.sender&&null!==P){let e=null;e=this.props.mxEvent.getContent().third_party_invite?this.props.mxEvent.target:this.props.mxEvent.sender;const t=!this.props.inhibitInteraction&&![gn.Ae.ThreadsList,gn.Ae.Notification].includes(this.context.timelineRenderingType);M=i.createElement("div",{className:"mx_EventTile_avatar"},i.createElement(ln.A,{member:e,size:P,viewUserOnClick:t,forceHistorical:this.props.mxEvent.getType()===o.EventType.RoomMember}))}N&&!0!==this.props.hideSender&&(D=this.context.timelineRenderingType===gn.Ae.Room||this.context.timelineRenderingType===gn.Ae.Search||this.context.timelineRenderingType===gn.Ae.Pinned||this.context.timelineRenderingType===gn.Ae.Thread?i.createElement(Xt,{onClick:this.onSenderProfileClick,mxEvent:this.props.mxEvent}):this.context.timelineRenderingType===gn.Ae.ThreadsList?i.createElement(Xt,{mxEvent:this.props.mxEvent,withTooltip:!0}):i.createElement(Xt,{mxEvent:this.props.mxEvent}));const O=!x&&!this.props.forExport?i.createElement(ui,{mxEvent:this.props.mxEvent,reactions:this.state.reactions,permalinkCreator:this.props.permalinkCreator,getTile:this.getTile,getReplyChain:this.getReplyChain,onFocusChange:this.onActionBarFocusChange,isQuoteExpanded:_,toggleThreadExpanded:()=>this.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;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Os(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Os(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Ls(e){let{room:t,component:n}=e,s=(0,g.A)(e,Ds);const o=function(e){const t=x.A.shared().getUserIdForRoomId(e.roomId),n=e.getMembers().length>2;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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?js(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):js(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Hs=function(e){return e[e.CanSend=0]="CanSend",e[e.Sending=1]="Sending",e[e.Sent=2]="Sent",e[e.Failed=3]="Failed",e}(Hs||{});const zs=({room:e,type:t,content:n,matrixClient:s,onFinished:o})=>{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<e.length;n++)t[n]=e.charCodeAt(n);const n=await crypto.subtle.importKey("raw",t,"HKDF",!1,["deriveBits"]);return t.fill(0),new Uint8Array(await crypto.subtle.deriveBits({name:"HKDF",hash:"SHA-256",salt:new Uint8Array(32),info:new Uint8Array(0)},n,256))}async function Qo(e,t,n){if("string"==typeof t)return t;if(!e)throw new Error(`Error decrypting secret ${n}: no pickle key found.`);const i=await Xo(e),s=await(0,Ho.A)(t,i,n);return i.fill(0),s}async function Zo(e,t,n,i,o){if(n?localStorage.setItem(o,"true"):localStorage.removeItem(o),i){let o;if(n)try{const e=await Xo(i);o=await(0,zo.A)(n,e,t),e.fill(0)}catch(e){s.vF.warn(`Could not encrypt token for ${t}`,e)}try{await M.x7("account",e,o||n)}catch{n?localStorage.setItem(e,n):localStorage.removeItem(e)}}else try{await M.x7("account",e,n)}catch{n?localStorage.setItem(e,n):localStorage.removeItem(e)}}async function er(e,t){return Zo(Ko,Jo,e,t,qo)}async function tr(e,t){return Zo(Go,$o,e,t,Yo)}class nr extends o.OidcTokenRefresher{constructor(e,t,n,i,s,o){super(e,t,i,n,s),(0,w.A)(this,"deviceId",void 0),this.userId=o,this.deviceId=i}async persistTokens({accessToken:e,refreshToken:t}){var n,i;const s=null!==(n=await(null===(i=a.A.get())||void 0===i?void 0:i.getPickleKey(this.userId,this.deviceId)))&&void 0!==n?n:void 0;await er(e,s),await tr(t,s)}}var ir=n("./src/SupportedBrowser.ts");const sr=["roomId"],or="mx_hs_url",rr="mx_is_url";S.A.register(e=>{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;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qr(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qr(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const Xr="im.vector.auto_rs_request";class Qr extends $r.r{constructor(){super(S.A,{reportedSessionIds:new Set,lastRageshakeTime:0,initialSyncCompleted:!1}),this.onDecryptionAttempt=this.onDecryptionAttempt.bind(this),this.onDeviceMessage=this.onDeviceMessage.bind(this),this.onSyncStateChange=this.onSyncStateChange.bind(this)}static get instance(){return Qr.internalInstance}async onAction(e){if(e.action===H.r.ReportKeyBackupNotEnabled)this.onReportKeyBackupNotEnabled()}async onReady(){D.A.getValue("automaticDecryptionErrorReporting")&&this.matrixClient&&(this.matrixClient.on(o.MatrixEventEvent.Decrypted,this.onDecryptionAttempt),this.matrixClient.on(o.ClientEvent.ToDeviceEvent,this.onDeviceMessage),this.matrixClient.on(o.ClientEvent.Sync,this.onSyncStateChange))}async onNotReady(){this.matrixClient&&(this.matrixClient.removeListener(o.ClientEvent.ToDeviceEvent,this.onDeviceMessage),this.matrixClient.removeListener(o.MatrixEventEvent.Decrypted,this.onDecryptionAttempt),this.matrixClient.removeListener(o.ClientEvent.Sync,this.onSyncStateChange))}async onDecryptionAttempt(e){if(!this.state.initialSyncCompleted)return;const t=e.getWireContent(),n=t.session_id;if(e.isDecryptionFailure()&&!this.state.reportedSessionIds.has(n)){var i;if(await(0,Kr.yy)(5e3),!e.isDecryptionFailure())return;const r=new Set(this.state.reportedSessionIds);await this.updateState({reportedSessionIds:r.add(n)});const a=(new Date).getTime();if(a-this.state.lastRageshakeTime<6e4)return void s.vF.info(`Not sending recipient-side autorageshake for event ${e.getId()}/session ${n}: last rageshake was too recent`);await this.updateState({lastRageshakeTime:a});const l=e.getSender(),d={event_id:e.getId(),room_id:e.getRoomId(),session_id:n,device_id:t.device_id,user_id:l,sender_key:t.sender_key};s.vF.info(`Sending recipient-side autorageshake for event ${e.getId()}/session ${n}`);const m=await(0,Jr.Ay)(c.Ay.get().bug_report_endpoint_url,{userText:"Auto-reporting decryption error (recipient)",sendLogs:!0,labels:["Z-UISI","web","uisi-recipient"],customApp:c.Ay.get().uisi_autorageshake_app,customFields:{auto_uisi:JSON.stringify(d)}}),u=Yr(Yr({},d),{},{recipient_rageshake:m,[o.ToDeviceMessageId]:(0,Gr.A)()});null===(i=this.matrixClient)||void 0===i||i.sendToDevice(Xr,new Map([[l,new Map([[u.device_id,u]])]]))}}async onSyncStateChange(e,t,n){this.state.initialSyncCompleted||await this.updateState({initialSyncCompleted:!(null==n||!n.nextSyncToken)})}async onDeviceMessage(e){if(e.getType()!==Xr)return;const t=e.getContent(),n=t.recipient_rageshake||"",i=(new Date).getTime();i-this.state.lastRageshakeTime>6e4?(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<this.toggleSize;t!==this.isCollapsed&&(this.isCollapsed=t,this.item.notifyCollapsed(t)),t||super.resize(e)}}class ha{constructor(e,t,n){(0,w.A)(this,"classNames",void 0),(0,w.A)(this,"onMouseDown",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;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?za(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):za(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const Ga=(e,t)=>async 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;t<nl.length;t++)if(!e[nl[t]])return this.index=t,nl[this.index];return null}async markReleaseAnnouncementAsViewed(){if(!this.isReleaseAnnouncementEnabled())return;const e=this.getViewedReleaseAnnouncements();if(!nl[this.index])return;e[nl[this.index]]=!0,this.index++;if(!D.A.isLevelSupported(O.p.ACCOUNT))return;if(D.A.canSetValue("releaseAnnouncementData",null,O.p.ACCOUNT))try{await D.A.setValue("releaseAnnouncementData",null,O.p.ACCOUNT,e)}catch(e){s.vF.log("Failed to set release announcement settings",e)}}async nextReleaseAnnouncement(){await this.markReleaseAnnouncementAsViewed(),this.emit("releaseAnnouncementChanged",this.getReleaseAnnouncement())}}function sl(e){const t=function(){const[e,t]=(0,i.useState)(!1);return(0,Fi.YK)(R.Ay,R.XM.Opened,()=>t(!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;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qc(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qc(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Xc(e,t){const n=e.findIndex(e=>e.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<o: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&&(t<h.startIndex||t>h.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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pm(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pm(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Mm(e){let{as:t="div",flex:n=null,shrink:s=null,grow:o=null,className:r,children:a}=e,l=(0,g.A)(e,Tm);const c=(0,i.useMemo)(()=>{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;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Qm(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qm(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class eu{constructor(e,t,n,i){if((0,w.A)(this,"files",[]),(0,w.A)(this,"fileNames",new Map),(0,w.A)(this,"cancelled",!1),(0,w.A)(this,"getRelationsForEvent",(e,t,n)=>this.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<n.length;e++)this.setEventMetadata(n[e]);return n}async getMediaBlob(e){let t;try{const n=e.isEncrypted(),i=e.getContent();if(n&&i.hasOwnProperty("file")&&"m.sticker"!==e.getType())t=await(0,Xm.It)(i.file);else{const e=(0,gi.mediaFromContent)(i);if(!e.srcHttp)throw new Error("Cannot fetch without srcHttp");const n=await fetch(e.srcHttp);t=await n.blob()}}catch{s.vF.log("Error decrypting media")}if(!t)throw new Error("Unable to fetch file");return t}splitFileName(e){const t=e.lastIndexOf(".");if(-1===t)return[e,""];return[e.slice(0,t),"."+e.slice(t+1)]}makeUniqueFilePath(e){const t=({directory:e,name:t,date:n,extension:i,count:s=0})=>`${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 i<this.props.minWidth||i>this.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<n)return i.createElement("li",{className:"mx_GenericEventListSummary","data-scroll-tokens":h,"data-expanded":!0,"data-layout":d},i.createElement("ol",{className:"mx_GenericEventListSummary_unstyledList"},t));let p;if(m)p=i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_GenericEventListSummary_spacer"}," "),i.createElement("ol",{className:"mx_GenericEventListSummary_unstyledList"},t));else{const e=(0,Kt.uniqBy)(a.filter(e=>!(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.length<this.props.threshold||e.layout!==this.props.layout||(0,se.dc)(t.summaryMembers,this.state.summaryMembers)||(0,se.dc)(Object.values(t.userEvents),Object.values(this.state.userEvents))||Object.keys(t.userEvents).length!==Object.keys(this.state.userEvents).length||Object.keys(t.userEvents).some(e=>t.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;i<e.length;i++){const s=e[i],o=e[i+1];let r=s;i<e.length-1&&t[s]&&t[s].after===o&&(r=t[s].newTransition,i++),n.push(r)}return n}static coalesceRepeatedTransitions(e){const t=[];for(const n of e)t.length>0&&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.index<n[r])&&(n[r]=s.index)}),{names:t,indices:n}}render(){const e=this.getAggregate(this.state.userEvents),t=Object.keys(e.names).sort((t,n)=>e.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<i.top?-1:s.top<i.bottom?0:1}scrollToTop(){var e;null===(e=this.scrollPanel.current)||void 0===e||e.scrollToTop()}scrollToBottom(){var e;null===(e=this.scrollPanel.current)||void 0===e||e.scrollToBottom()}handleScrollKey(e){var t;null===(t=this.scrollPanel.current)||void 0===t||t.handleScrollKey(e)}scrollToEvent(e,t,n){var i;null===(i=this.scrollPanel.current)||void 0===i||i.scrollToToken(e,t,n)}scrollToEventIfNeeded(e){const t=this.getNodeForEventId(e);t&&t.scrollIntoView({block:"nearest",behavior:"instant"})}get showHiddenEvents(){var e,t;return null!==(e=null===(t=this.context)||void 0===t?void 0:t.showHiddenEvents)&&void 0!==e?e:this._showHiddenEvents}shouldShowEvent(e,t=!1){if(this.props.hideThreadedMessages&&this.props.room){const{shouldLiveInRoom:t}=this.props.room.eventShouldLiveIn(e,this.props.events);if(!t)return!1}return!v.J.safeGet().isUserIgnored(e.getSender())&&(!(!this.showHiddenEvents||t)||!!(0,sn.bN)(e,v.J.safeGet(),this.showHiddenEvents)&&(this.props.highlightedEventId===e.getId()||!(0,mm.A)(e,this.context)))}readMarkerForEvent(e,t){if(this.context.timelineRenderingType===gn.Ae.File)return null;const n=!t&&this.props.readMarkerVisible;if(this.props.readMarkerEventId===e){let t;return n&&(t=i.createElement("hr",{style:{opacity:1,width:"99%"}})),i.createElement("li",{key:"readMarker_"+e,ref:this.readMarkerNode,className:"mx_MessagePanel_myReadMarker","data-scroll-tokens":e},t)}if(this.state.ghostReadMarkers.includes(e)){const t=i.createElement("hr",{ref:this.collectGhostReadMarker,onTransitionEnd:this.onGhostTransitionEnd,"data-eventid":e});return i.createElement("li",{key:"_readuptoghost_"+e,className:"mx_MessagePanel_myReadMarker"},t)}return null}getNextEventInfo(e,t){const n=t<e.length-1?e[t+1]:null,i=function(e,t){for(let n=e+1;n<t.length;n++){const{event:e,shouldShow:i}=t[n];if(i)return e}return null}(t,e);return{nextEventAndShouldShow:n,nextTile:i}}get pendingEditItem(){if(!this.props.room)return null;try{return localStorage.getItem((0,mu.O)(this.props.room.roomId,this.context.timelineRenderingType))}catch(e){return s.vF.error(e),null}}isSentState(e){const t=e.getAssociatedStatus();return!t||t===o.EventStatus.SENT}getEventTiles(){let e;const t=this.props.events.map(e=>({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<t.length;n++){const i=t[n],{event:l,shouldShow:c}=i,d=l.getId(),m=l===e,{nextEventAndShouldShow:u,nextTile:h}=this.getNextEventInfo(t,n);if(a){if(a.shouldGroup(i)){a.add(i);continue}o.push(...a.getTiles()),r=a.getNewPrevEvent(),a=null}for(const t of Fu)if(t.canStartGroup(this,i)&&!this.props.disableGrouping){a=new t(this,i,r,e,u,h);break}if(!a){c&&(o.push(...this.getTilesForEvent(r,i,m,!1,u,h)),r=l);const e=this.readMarkerForEvent(d,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-1?i.createElement("div",{style:{textAlign:"center",margin:"10px"}},i.createElement("a",{href:"./messages"+(t+2)+".html",style:{fontWeight:"bold"}},(0,l._t)("export_chat|next_page"))):i.createElement(i.Fragment,null));return`\n <!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8" />\n <meta http-equiv="X-UA-Compatible" content="IE=edge" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <link href="css/style.css" rel="stylesheet" />\n <script src="js/script.js"><\/script>\n <title>${(0,l._t)("export_chat|html_title")}</title>\n </head>\n <body style="height: 100vh;" class="cpd-theme-light">\n <div id="matrixchat" style="height: 100%; overflow: auto">\n <div class="mx_MatrixChat_wrapper" aria-hidden="false">\n <div class="mx_MatrixChat">\n <main class="mx_RoomView">\n <div class="mx_RoomHeader light-panel">\n ${d}\n <div class="mx_RoomHeader_infoWrapper">\n <div\n dir="auto"\n class="mx_RoomHeader_info"\n title="${E}"\n >\n <span class="mx_RoomHeader_truncated mx_lineClamp">\n ${E}\n </span>\n </div>\n </div>\n </div>\n ${S}\n <div class="mx_MainSplit">\n <div class="mx_RoomView_body">\n <div\n class="mx_RoomView_timeline mx_RoomView_timeline_rr_enabled"\n >\n <div\n class="\n mx_AutoHideScrollbar\n mx_ScrollPanel\n mx_RoomView_messagePanel\n "\n >\n <div class="mx_RoomView_messageListWrapper">\n <ol\n class="mx_RoomView_MessageList"\n aria-live="polite"\n role="list"\n >\n ${0==t?`<div class="mx_NewRoomIntro">\n ${d}\n <h2> ${E} </h2>\n <p> ${_} <br/><br/> ${b} </p>\n <br/>\n <p> ${w} </p>\n </div>`:""}\n ${e}\n </ol>\n </div>\n </div>\n </div>\n <div class="mx_RoomView_statusArea">\n <div class="mx_RoomView_statusAreaBox">\n <div class="mx_RoomView_statusAreaBox_line"></div>\n </div>\n </div>\n </div>\n </div>\n ${A}\n </main>\n </div>\n </div>\n </div>\n <div id="snackbar"/>\n </body>\n </html>`}getAvatarURL(e){const t=e.sender,n=null==t?void 0:t.getMxcAvatarUrl();return n?(0,gi.mediaFromMxc)(n).getThumbnailOfSourceHttp(30,30,"crop"):null}async saveAvatarIfNeeded(e){const t=e.sender;if(!this.avatars.has(t.userId))try{const n=this.getAvatarURL(e);this.avatars.set(t.userId,!0);const i=await fetch(n),s=await i.blob();this.addFile(`users/${t.userId.replace(/:/g,"-")}.png`,s)}catch(e){s.vF.log("Failed to fetch user's avatar"+e)}}getDateSeparator(e){const t=e.getTs(),n=i.createElement("li",{key:t},i.createElement(lu.A,{forExport:!0,key:t,roomId:e.getRoomId(),ts:t}));return(0,Km.qV)(n)}needsDateSeparator(e,t){return!t||(0,tt.fq)(t.getDate()||void 0,e.getDate()||void 0)}getEventTile(e,t,n){return i.createElement("div",{className:"mx_Export_EventWrapper",id:e.getId()},i.createElement(de.Ay.Provider,{value:this.room.client},i.createElement(Dr.B,null,i.createElement(bs,{mxEvent:e,continuation:t,isRedacted:e.isRedacted(),replacingEventId:e.replacingEventId(),forExport:!0,alwaysShowTimestamps:!0,showUrlPreview:!1,checkUnmounting:()=>!1,isTwelveHour:!1,last:!1,lastInSection:!1,permalinkCreator:this.permalinkCreator,lastSuccessful:!1,isSelectedEvent:!1,showReactions:!0,layout:Bt.P.Group,showReadReceipts:!1,getRelationsForEvent:this.getRelationsForEvent,ref:n}))))}async getEventTileMarkup(e,t,n){const i=this.getAvatarURL(e),s=!!i;s&&await this.saveAvatarIfNeeded(e);const r=Promise.withResolvers(),a=this.getEventTile(e,t,r.resolve);let l;if(e.getContent().msgtype==o.MsgType.Emote||e.getContent().msgtype==o.MsgType.Notice||e.getContent().msgtype===o.MsgType.Text){const e=document.createElement("div"),t=(0,zm.createRoot)(e);t.render(a),await r.promise,l=e.innerHTML,t.unmount()}else l=(0,Km.qV)(a);if(n){var c,d;const t=null!==(c=e.getContent().url)&&void 0!==c?c:null===(d=e.getContent().file)||void 0===d?void 0:d.url;l=l.split(t).join(n)}return l=l.replace(/<span class="mx_MFileBody_info_icon".*?>.*?<\/span>/,""),s&&(l=l.replace(encodeURI(i).replace(/&/g,"&"),`users/${e.sender.userId.replace(/:/g,"-")}.png`)),l}createModifiedEvent(e,t,n=!0){const i={msgtype:o.MsgType.Text,body:`${e}`,format:"org.matrix.custom.html",formatted_body:`${e}`};n&&(i.formatted_body="<em>"+i.formatted_body+"</em>",i.body="*"+i.body+"*");const s=new o.MatrixEvent;return s.event=t.event,s.sender=t.sender,s.event.type="m.room.message",s.event.content=i,s}async createMessageBody(e,t=!1){let n;try{if(this.isAttachment(e))if(this.exportOptions.attachmentsIncluded)try{const i=await this.getMediaBlob(e);if(this.totalSize+i.size>this.exportOptions.maxSize)n=await this.getEventTileMarkup(this.createModifiedEvent(this.mediaOmitText,e),t);else{this.totalSize+=i.size;const s=this.getFilePath(e);n=await this.getEventTileMarkup(e,t,s),this.totalSize==this.exportOptions.maxSize&&(this.exportOptions.attachmentsIncluded=!1),this.addFile(s,i)}}catch(i){s.vF.log("Error while fetching file"+i),n=await this.getEventTileMarkup(this.createModifiedEvent((0,l._t)("export_chat|error_fetching_file"),e),t)}else n=await this.getEventTileMarkup(this.createModifiedEvent(this.mediaOmitText,e),t);else n=await this.getEventTileMarkup(e,t)}catch(i){s.vF.error(i),n=await this.getEventTileMarkup(this.createModifiedEvent((0,hu.Rd)(e,this.room.client),e,!1),t)}return n}async createHTML(e,t,n,i){let s="",o=null;for(let n=t;n<Math.min(t+1e3,e.length);n++){const t=e[n];if(this.updateProgress((0,l._t)("export_chat|processing_event_n",{number:n+1,total:e.length}),!1,!0),this.cancelled)return this.cleanUp();if(!(0,sn.bN)(t,this.room.client,!1))continue;s+=this.needsDateSeparator(t,o)?this.getDateSeparator(t):"";const i=!this.needsDateSeparator(t,o)&&Du(o,t,this.room.client,!1),r=await this.createMessageBody(t,i);this.totalSize+=(new TextEncoder).encode(r).byteLength,s+=r,o=t}return this.wrapHTML(s,n,i)}async export(){this.updateProgress((0,l._t)("export_chat|starting_export"));const e=performance.now(),t=await this.getRequiredEvents(),n=performance.now();this.updateProgress((0,l._t)("export_chat|fetched_n_events_in_time",{count:t.length,seconds:(n-e)/1e3}),!0,!1),this.updateProgress((0,l._t)("export_chat|creating_html"));const i=new Set;for(let e=0;e<t.length/1e3;e++){const n=await this.createHTML(t,1e3*e,e,t.length/1e3);(new DOMParser).parseFromString(n,"text/html").querySelectorAll("*").forEach(e=>{e.classList.forEach(e=>i.add(e))}),this.addFile(`messages${e?e+1:""}.html`,new Blob([n]))}const o=await ju(i);this.addFile("css/style.css",new Blob([o])),this.addFile("js/script.js",new Blob(['/*\nCopyright 2024 New Vector Ltd.\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nSPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n*/\n\n// This file is raw-imported (imported as plain text) for the export bundle, which is why this is in JS\nfunction showToastIfNeeded(replyId) {\n const el = document.getElementById(replyId);\n if (!el) {\n showToast("The message you\'re looking for wasn\'t exported");\n return;\n }\n}\n\nfunction showToast(text) {\n const el = document.getElementById("snackbar");\n el.innerHTML = text;\n el.className = "mx_show";\n window.setTimeout(() => {\n el.className = el.className.replace("mx_show", "");\n }, 2000);\n}\n\nwindow.onload = () => {\n document.querySelectorAll(".mx_reply_anchor").forEach((element) => {\n element.addEventListener("click", (event) => {\n showToastIfNeeded(event.target.dataset.scrollTo);\n });\n });\n};\n'])),await this.downloadZIP();const r=performance.now();this.cancelled?s.vF.info("Export cancelled successfully"):(this.updateProgress((0,l._t)("export_chat|export_successful")),this.updateProgress((0,l._t)("export_chat|exported_n_events_in_time",{count:t.length,seconds:(r-e)/1e3}))),this.cleanUp()}}class Hu extends eu{constructor(e,t,n,i){super(e,t,n,i),(0,w.A)(this,"totalSize",0),(0,w.A)(this,"messages",[])}get destinationFileName(){return this.makeFileNameNoExtension()+".json"}createJSONString(){var e,t,n,i;const s=(0,tt.Ah)(new Date),r=null===(e=this.room.currentState.getStateEvents(o.EventType.RoomCreate,""))||void 0===e?void 0:e.getSender(),a=r&&(null===(t=this.room)||void 0===t||null===(t=t.getMember(r))||void 0===t?void 0:t.rawDisplayName)||r,l=(null===(n=this.room.currentState.getStateEvents(o.EventType.RoomTopic,""))||void 0===n||null===(n=n.getContent())||void 0===n?void 0:n.topic)||"",c=this.room.client.getUserId(),d=(null===(i=this.room)||void 0===i||null===(i=i.getMember(c))||void 0===i?void 0:i.rawDisplayName)||c,m={room_name:this.room.name,room_creator:a,topic:l,export_date:s,exported_by:d,messages:this.messages};return JSON.stringify(m,null,2)}async getJSONString(e){if(this.exportOptions.attachmentsIncluded&&this.isAttachment(e))try{const t=await this.getMediaBlob(e);if(this.totalSize+t.size<this.exportOptions.maxSize){this.totalSize+=t.size;const n=this.getFilePath(e);this.totalSize==this.exportOptions.maxSize&&(this.exportOptions.attachmentsIncluded=!1),this.addFile(n,t)}}catch(e){s.vF.log("Error fetching file: "+e)}return e.getEffectiveEvent()}async createOutput(e){for(let t=0;t<e.length;t++){const n=e[t];if(this.updateProgress((0,l._t)("export_chat|processing_event_n",{number:t+1,total:e.length}),!1,!0),this.cancelled)return this.cleanUp();(0,sn.bN)(n,this.room.client,!1)&&this.messages.push(await this.getJSONString(n))}return this.createJSONString()}async export(){s.vF.info("Starting export process..."),s.vF.info("Fetching events...");const e=performance.now(),t=await this.getRequiredEvents(),n=performance.now();s.vF.log(`Fetched ${t.length} events in ${(n-e)/1e3}s`),s.vF.info("Creating output...");const i=await this.createOutput(t);if(this.files.length)this.addFile("export.json",new Blob([i])),await this.downloadZIP();else{const e=this.destinationFileName;this.downloadPlainText(e,i)}const o=performance.now();this.cancelled?s.vF.info("Export cancelled successfully"):(s.vF.info("Export successful!"),s.vF.log(`Exported ${t.length} events in ${(o-e)/1e3} seconds`)),this.cleanUp()}}class zu extends eu{constructor(e,t,n,i){super(e,t,n,i),(0,w.A)(this,"totalSize",void 0),(0,w.A)(this,"mediaOmitText",void 0),(0,w.A)(this,"textForReplyEvent",e=>{const t=/> <(.*?)>(.*?)\n\n(.*)/s.exec(e.body);if(!t)return e.body;let n;const i=t[1],s=t[3];n=t[2].substring(1);const o=n.split("\n").filter(e=>!/^\s*$/.test(e));return o.length>0?(n=o[0].substring(0,32),o[0].length>32&&(n+="..."),n=` "${n}"`):n="",`<${i}${n}> ${s}`}),(0,w.A)(this,"plainTextForEvent",async e=>{const t=e.sender&&e.sender.name?e.sender.name:e.getSender();let n="";if(this.isAttachment(e))if(this.exportOptions.attachmentsIncluded)try{const t=await this.getMediaBlob(e);if(this.totalSize+t.size>this.exportOptions.maxSize)n=` (${this.mediaOmitText})`;else{this.totalSize+=t.size;const i=this.getFilePath(e);n=" ("+(0,l._t)("export_chat|file_attached")+")",this.addFile(i,t),this.totalSize==this.exportOptions.maxSize&&(this.exportOptions.attachmentsIncluded=!1)}}catch(e){n=" ("+(0,l._t)("export_chat|error_fetching_file")+")",s.vF.log("Error fetching file "+e)}else n=` (${this.mediaOmitText})`;return this.isReply(e)?t+": "+this.textForReplyEvent(e.getContent())+n:(0,hu.Rd)(e,this.room.client)+n}),this.totalSize=0,this.mediaOmitText=this.exportOptions.attachmentsIncluded?(0,l._t)("export_chat|media_omitted_file_size"):(0,l._t)("export_chat|media_omitted")}get destinationFileName(){return this.makeFileNameNoExtension()+".txt"}async createOutput(e){let t="";for(let n=0;n<e.length;n++){const i=e[n];if(this.updateProgress((0,l._t)("export_chat|processing_event_n",{number:n+1,total:e.length}),!1,!0),this.cancelled)return this.cleanUp();if(!(0,sn.bN)(i,this.room.client,!1))continue;const s=await this.plainTextForEvent(i);t+=s&&`${(0,tt.Lu)(new Date(i.getTs()),D.A.getValue("showTwelveHourTimestamps"))} - ${s}\n`}return t}async export(){this.updateProgress((0,l._t)("export_chat|starting_export")),this.updateProgress((0,l._t)("export_chat|fetching_events"));const e=performance.now(),t=await this.getRequiredEvents(),n=performance.now();s.vF.log(`Fetched ${t.length} events in ${(n-e)/1e3}s`),this.updateProgress((0,l._t)("export_chat|creating_output"));const i=await this.createOutput(t);if(this.files.length)this.addFile("export.txt",new Blob([i])),await this.downloadZIP();else{const e=this.destinationFileName;this.downloadPlainText(e,i)}const o=performance.now();this.cancelled?s.vF.info("Export cancelled successfully"):(s.vF.info("Export successful!"),s.vF.log(`Exported ${t.length} events in ${(o-e)/1e3} seconds`)),this.cleanUp()}}var Ku=n("./src/customisations/ChatExport.ts");const Gu=(e,t)=>n=>"number"==typeof n&&!(isNaN(n)||e>n||n>t),Ju=({room:e,onFinished:t})=>{const{exportFormat:n,exportType:o,includeAttachments:r,numberOfMessages:a,sizeLimit:c,setExportFormat:d,setExportType:m,setNumberOfMessages:u,setSizeLimit:h,setAttachments:p}=(()=>{var e,t,n,s,o;const r=Ku.A.getForceChatExportParameters(),[a,l]=(0,i.useState)(null!==(e=r.format)&&void 0!==e?e:Bm.Html),[c,d]=(0,i.useState)(null!==(t=r.range)&&void 0!==t?t:jm.Timeline),[m,u]=(0,i.useState)(null!==(n=r.includeAttachments)&&void 0!==n&&n),[h,p]=(0,i.useState)(null!==(s=r.numberOfMessages)&&void 0!==s?s:100),[g,v]=(0,i.useState)(null!==(o=r.sizeMb)&&void 0!==o?o:8);return{exportFormat:a,exportType:c,includeAttachments:m,numberOfMessages:h,sizeLimit:g,setExportFormat:r.format?void 0:l,setExportType:r.range?void 0:d,setNumberOfMessages:r.numberOfMessages?void 0:p,setSizeLimit:r.sizeMb?void 0:v,setAttachments:void 0===r.includeAttachments?u:void 0}})(),[g,v]=(0,i.useState)(!1),_=(0,i.useRef)(null),f=(0,i.useRef)(null),[E,y]=(0,i.useState)((0,l._t)("export_chat|processing")),[b,w]=(0,i.useState)(!1),[S,A]=(0,i.useState)(!1),[C,x]=(0,i.useState)(!1),[R,k]=((e,t)=>{const[n,s]=(0,i.useState)(e);return[n,e=>{s(e),t(e)}]})(null,async e=>{await(null==e?void 0:e.export().then(()=>{S||x(!0)}))}),I=async()=>{var t;if(!h||await(null===(t=_.current)||void 0===t?void 0:t.validate({focused:!1}))){if(o===jm.LastNMessages){var i;var l;if(!await(null===(i=f.current)||void 0===i?void 0:i.validate({focused:!1})))return void(null===(l=f.current)||void 0===l||l.validate({focused:!0}))}v(!0),await(async()=>{const t={numberOfMessages:a,attachmentsIncluded:r,maxSize:1024*c*1024};switch(n){case Bm.Html:k(new Wu(e,jm[o],t,y));break;case Bm.Json:k(new Hu(e,jm[o],t,y));break;case Bm.PlainText:k(new zu(e,jm[o],t,y));break;default:return void s.vF.error("Unknown export format")}})()}else{var d;null===(d=_.current)||void 0===d||d.validate({focused:!0})}},T=(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("export_chat|enter_number_between_min_max",{min:1,max:2e3})},{key:"number",test:({value:e})=>{const t=parseInt(e,10);return Gu(1,2e3)(t)},invalid:()=>(0,l._t)("export_chat|size_limit_min_max",{min:1,max:2e3})}]}),P=async e=>await T(e),N=(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("export_chat|enter_number_between_min_max",{min:1,max:10**8})},{key:"number",test:({value:e})=>{const t=parseInt(e,10);return Gu(1,10**8)(t)},invalid:()=>(0,l._t)("export_chat|num_messages_min_max",{min:1,max:10**8})}]}),M=async e=>await N(e),D=async()=>{g?w(!0):t(!1)},O=async()=>{await(null==R?void 0:R.cancelExport()),A(!0),v(!1),k(null)},F=Object.values(Bm).map(e=>({value:e,label:Wm(e)})),L=Object.values(jm).map(e=>i.createElement("option",{key:jm[e],value:e},(e=>{switch(e){case jm.Beginning:return(0,l._t)("export_chat|from_the_beginning");case jm.LastNMessages:return(0,l._t)("export_chat|number_of_messages");case jm.Timeline:return(0,l._t)("export_chat|current_timeline");default:throw new Error("Unknown type: "+e)}})(e)));let U;o===jm.LastNMessages&&u&&(U=i.createElement(qs.A,{id:"message-count",element:"input",type:"number",value:a.toString(),ref:f,onValidate:M,label:(0,l._t)("export_chat|num_messages"),onChange:e=>{u(parseInt(e.target.value))}}));const V=i.createElement("span",null,(0,l._t)("export_chat|size_limit_postfix"));return S?i.createElement(ll.A,{title:(0,l._t)("export_chat|cancelled"),description:(0,l._t)("export_chat|cancelled_detail"),hasCloseButton:!0,onFinished:t}):C?i.createElement(ll.A,{title:(0,l._t)("export_chat|successful"),description:(0,l._t)("export_chat|successful_detail"),hasCloseButton:!0,onFinished:t}):b?i.createElement(Q.A,{title:(0,l._t)("common|warning"),className:"mx_ExportDialog",contentId:"mx_Dialog_content",onFinished:t,fixedWidth:!0},i.createElement("p",null,(0,l._t)("export_chat|confirm_stop")),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|stop"),primaryButtonClass:"danger",hasCancel:!0,cancelButton:(0,l._t)("action|continue"),onCancel:()=>w(!1),onPrimaryButtonClick:O})):i.createElement(Q.A,{title:g?(0,l._t)("export_chat|exporting_your_data"):(0,l._t)("export_chat|title"),className:`mx_ExportDialog ${g&&"mx_ExportDialog_Exporting"}`,contentId:"mx_Dialog_content",hasCancel:!0,onFinished:t,fixedWidth:!0},g?null:i.createElement("p",null,(0,l._t)("export_chat|select_option")),i.createElement("div",{className:"mx_ExportDialog_options"},!!d&&i.createElement(i.Fragment,null,i.createElement("span",{className:"mx_ExportDialog_subheading"},(0,l._t)("export_chat|format")),i.createElement(Vm.A,{name:"exportFormat",value:n,onChange:e=>d(Bm[e]),definitions:F})),!!m&&i.createElement(i.Fragment,null,i.createElement("span",{className:"mx_ExportDialog_subheading"},(0,l._t)("export_chat|messages")),i.createElement(qs.A,{id:"export-type",element:"select",value:o,onChange:e=>{m(jm[e.target.value])}},L),U),h&&i.createElement(i.Fragment,null,i.createElement("span",{className:"mx_ExportDialog_subheading"},(0,l._t)("export_chat|size_limit")),i.createElement(qs.A,{id:"size-limit",type:"number",autoComplete:"off",onValidate:P,element:"input",ref:_,value:c.toString(),postfixComponent:V,onChange:e=>h(parseInt(e.target.value))})),p&&i.createElement(i.Fragment,null,i.createElement(no.A,{className:"mx_ExportDialog_attachments-checkbox",id:"include-attachments",checked:r,onChange:e=>p(e.target.checked)},(0,l._t)("export_chat|include_attachments")))),g?i.createElement("div",{className:"mx_ExportDialog_progress"},i.createElement(ce.A,{w:24,h:24}),i.createElement("p",null,E),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|cancel"),primaryButtonClass:"danger",hasCancel:!1,onPrimaryButtonClick:D})):i.createElement(Nt.A,{primaryButton:(0,l._t)("action|export"),onPrimaryButtonClick:I,onCancel:()=>t(!1)}))};var $u=n("./src/components/views/dialogs/ShareDialog.tsx"),qu=n("./node_modules/@vector-im/compound-web/dist/components/Form/Field.js"),Yu=n("./node_modules/@vector-im/compound-web/dist/components/Form/Label.js"),Xu=n("./node_modules/@vector-im/compound-web/dist/components/Form/Message.js");const Qu=function({roomId:e,onFinished:t}){var n;const[s,o]=(0,i.useState)(),[r,a]=(0,i.useState)(!1),[d,m]=(0,i.useState)(""),[u,h]=(0,i.useState)(!1),p=v.J.safeGet(),g=(0,i.useCallback)(e=>m(e.target.value),[]),_=(0,i.useCallback)(()=>t(!1),[t]),f=(0,i.useCallback)(async()=>{a(!0);try{await p.reportRoom(e,d),t(u)}catch(e){a(!1),e instanceof Error?o(e.message):o("Unknown error")}},[e,d,p,u,t]),E=null===(n=c.Ay.getObject("report_event"))||void 0===n?void 0:n.get("admin_message_md","adminMessageMD");let y;if(E){const e=new Js.A(E).toHTML({externalLinks:!0});y=i.createElement("p",{dangerouslySetInnerHTML:{__html:e}})}return i.createElement(Q.A,{className:"mx_ReportRoomDialog",onFinished:_,title:(0,l._t)("action|report_room"),contentId:"mx_ReportEventDialog"},i.createElement(Em.b,{id:"mx_ReportEventDialog",onSubmit:f},i.createElement(qu.D,{name:"reason"},i.createElement(Yu.J,{htmlFor:"mx_ReportRoomDialog_reason"},(0,l._t)("report_room|reason_label")),i.createElement("textarea",{id:"mx_ReportRoomDialog_reason",rows:5,onChange:g,value:d,disabled:r}),s?i.createElement(Xu.Kw,null,s):null,i.createElement(Xu.po,null,(0,l._t)("report_room|description"))),y,r?i.createElement(he.Z,null):null,i.createElement(yo.A,{label:(0,l._t)("room_list|more_options|leave_room"),value:u,onChange:h}),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|send_report"),onPrimaryButtonClick:f,focus:!0,onCancel:_,primaryButtonClass:"danger",primaryDisabled:r||!d})))};var Zu=n("./src/components/views/right_panel/types.ts"),eh=n("./src/utils/promise.ts");function th(e){var t,n;const i=null!==(t=null==e||null===(n=e.getLiveTimeline().getState(o.EventTimeline.FORWARDS))||void 0===n||null===(n=n.getStateEvents(o.EventType.RoomPinnedEvents,""))||void 0===n||null===(n=n.getContent())||void 0===n?void 0:n.pinned)&&void 0!==t?t:[];return Array.isArray(i)?i.slice(0,100):(s.vF.warn("Encountered invalid pinned events state in room",null==e?void 0:e.roomId,i),[])}const nh=e=>{const[t,n]=(0,i.useState)(th(e)),s=(0,i.useCallback)(t=>{t&&t.getType()!==o.EventType.RoomPinnedEvents||n(th(e))},[e]);return(0,Fi.YK)(null==e?void 0:e.getLiveTimeline().getState(o.EventTimeline.FORWARDS),o.RoomStateEvent.Events,s),(0,i.useEffect)(()=>(n(th(e)),()=>{n([])}),[e]),t};function ih(e){var t,n;return new Set(null!==(t=null==e||null===(n=e.getAccountData(Zu.M))||void 0===n||null===(n=n.getContent())||void 0===n?void 0:n.event_ids)&&void 0!==t?t:[])}function sh(e,t){const n=(0,de.nH)();return(0,Bi.e)(()=>{const i=t.map(t=>()=>async function(e,t,n){var i;const r=e.getUnfilteredTimelineSet(),a=null==r||null===(i=r.getTimelineForEvent(t))||void 0===i?void 0:i.getEvents().find(e=>e.getId()===t);if(null!=a&&a.isEncrypted()&&await n.decryptEventIfNeeded(a,{emit:!1}),a)return oi.A.isUnpinnable(a)?a:null;try{const[i,{events:[s]}]=await Promise.all([n.fetchRoomEvent(e.roomId,t),n.relations(e.roomId,t,o.RelationType.Replace,null,{limit:1})]),r=new o.MatrixEvent(i);if(r.isEncrypted()&&await n.decryptEventIfNeeded(r,{emit:!1}),await e.processPollEvents([r]),r.getSender()&&oi.A.isUnpinnable(r))return r.setMetadata(e.currentState,!1),s&&r.makeReplaced(s),r}catch(n){s.vF.error(`Error looking up pinned event ${t} in room ${e.roomId}`),s.vF.error(n)}return null}(e,t,n));return(0,eh.vA)(i,10)},[n,e,t],null)}function oh(e,t){const n=sh(e,t);return(0,i.useMemo)(()=>n?n.sort((e,t)=>e?t?e.getTs()-t.getTs():1:-1):[],[n])}function rh(e){e.client.isGuest()?S.A.dispatch({action:"require_registration"}):S.A.dispatch({action:"view_invite",roomId:e.roomId})}const ah=e=>{const t=((e,t)=>{const[n,s]=(0,i.useState)(()=>{return null==(n=e.getAccountData(t))?void 0:n.getContent();var n}),r=(0,i.useCallback)(e=>{e.getType()===t&&s(e.getContent())},[t]);return(0,Fi.YK)(e,o.ClientEvent.AccountData,r),n||{}})(e.client,o.EventType.Direct),[n,s]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{for(const[,i]of Object.entries(t)){var n;if(i.includes(null!==(n=null==e?void 0:e.roomId)&&void 0!==n?n:"")){s(!0);break}}},[e,t]),n};function lh(e,t,n){var s;const r=(0,de.nH)(),a=null!==(s=(0,Dm.g)(r,e))&&void 0!==s&&s,l=(0,Ji.ME)("e2eStatus","timelineRenderingType").e2eStatus,c=(0,Om.j)(e),d=(0,So.U)(e).getJoinRule(),m=e.getCanonicalAlias()||e.getAltAliases()[0]||"",u=nh(e).length,h=(0,Fi.dF)(e,o.RoomStateEvent.Update,()=>Fm(e)),p=(0,Fi.dF)(Yl.Ay.instance,Yl.lA,()=>Yl.Ay.instance.getTagsForRoom(e)).includes(pa.zO.Favourite),g=ah(e),{searchInputRef:v,onUpdateSearchInput:_}=(e=>{const t=(0,i.useRef)(null);return(0,mo.F)(S.A,e=>{var n;e.action===H.r.FocusMessageSearch&&(null===(n=t.current)||void 0===n||n.focus())}),{searchInputRef:t,onUpdateSearchInput:n=>{t.current&&n.key===ii.Uz.ESCAPE&&(t.current.value="",null==e||e())}}})(n);return{isDirectMessage:g,isRoomEncrypted:a,roomJoinRule:d,e2eStatus:l,isVideoRoom:c,alias:m,isFavorite:p,canInviteToState:h,searchInputRef:v,pinCount:u,onRoomMembersClick:()=>{Rl.A.instance.pushCard({phase:kl.n.MemberList},!0)},onRoomThreadsClick:()=>{Rl.A.instance.pushCard({phase:kl.n.ThreadPanel},!0)},onRoomFilesClick:()=>{Rl.A.instance.pushCard({phase:kl.n.FilePanel},!0)},onRoomExtensionsClick:()=>{Rl.A.instance.pushCard({phase:kl.n.Extensions},!0)},onRoomPinsClick:()=>{ri.A.trackInteraction("PinnedMessageRoomInfoButton"),Rl.A.instance.pushCard({phase:kl.n.PinnedMessages},!0)},onRoomSettingsClick:e=>{S.A.dispatch({action:"open_room_settings"}),ri.A.trackInteraction("WebRightPanelRoomInfoSettingsButton",e)},onLeaveRoomClick:()=>{S.A.dispatch({action:"leave_room",room_id:e.roomId})},onShareRoomClick:()=>{R.Ay.createDialog($u.G,{target:e})},onRoomExportClick:async()=>{R.Ay.createDialog(Ju,{room:e})},onRoomPollHistoryClick:()=>{R.Ay.createDialog(Um,{room:e,matrixClient:r,permalinkCreator:t})},onReportRoomClick:async()=>{const[t]=await R.Ay.createDialog(Qu,{roomId:e.roomId}).finished;t&&S.A.dispatch({action:"leave_room",room_id:e.roomId})},onUpdateSearchInput:_,onFavoriteToggleClick:()=>{pd(e,pa.zO.Favourite)},onInviteToRoomClick:()=>{rh(e)}}}const ch=["room","className"];function dh(e){const t=e.target,n=(0,Gt.uK)(t.href);n!==t.href&&(e.preventDefault(),window.location.hash=n)}function mh(e){let{room:t,className:n}=e,s=(0,g.A)(e,ch);const r=(0,i.useContext)(de.Ay),[a,c]=(0,i.useState)(!1),d=vo(t),m=(0,vi.sH)(null==d?void 0:d.text,null==d?void 0:d.html),u=(0,i.useCallback)(e=>{var t;null===(t=s.onClick)||void 0===t||t.call(s,e);"A"===e.target.tagName.toUpperCase()?dh(e):S.A.fire(H.r.ShowRoomTopic)},[s]),h=e=>{c("A"===e.target.tagName.toUpperCase())};return(0,mo.F)(S.A,e=>{if(e.action===H.r.ShowRoomTopic){const e=t.currentState.maySendStateEvent(o.EventType.RoomTopic,r.getSafeUserId()),n=(0,vi.sH)(null==d?void 0:d.text,null==d?void 0:d.html,void 0,!0),s=R.Ay.createDialog(ll.A,{title:t.name,description:i.createElement("div",null,i.createElement(vi.XZ,{options:{attributes:{onClick(e){u(e),s.close()}}},as:"p"},n),e&&i.createElement(le.A,{kind:"primary_outline",onClick:()=>{s.close(),S.A.dispatch({action:"open_room_settings"})}},(0,l._t)("room|edit_topic"))),hasCloseButton:!0,button:!1})}}),m?i.createElement(zt.m,{description:(0,l._t)("room|read_topic"),disabled:a},i.createElement("div",(0,Wt.A)({},s,{tabIndex:0,role:"button",onClick:u,className:Lt()(n,"mx_RoomTopic"),onMouseOver:h,onFocus:h,"aria-label":(0,l._t)("room|read_topic")}),i.createElement(vi.XZ,null,m))):i.createElement("div",{className:Lt()(n,"mx_RoomTopic")})}const uh=({room:e})=>{var t,n;const s=function(e){const[t,n]=(0,i.useState)(!0);return{topic:vo(e),expanded:t,canEditTopic:(0,So.U)(e,t=>t.maySendStateEvent(o.EventType.RoomTopic,e.client.getSafeUserId())),onEditClick:e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:"open_room_settings"})},onExpandedClick:e=>{e.preventDefault(),e.stopPropagation(),n(e=>!e)},onTopicLinkClick:e=>{e.target instanceof HTMLAnchorElement&&dh(e)}}}(e),r=(0,vi.sH)(null===(t=s.topic)||void 0===t?void 0:t.text,null===(n=s.topic)||void 0===n?void 0:n.html);if(!r&&!s.canEditTopic)return null;if(!r)return i.createElement(we.s,{as:"section",direction:"column",justify:"center",gap:"var(--cpd-space-2x)",className:"mx_RoomSummaryCard_topic"},i.createElement(Mm,{flex:"1",className:"mx_RoomSummaryCard_topic_box"},i.createElement(vm.N,{kind:"primary",onClick:s.onEditClick},i.createElement(Al.E,{size:"sm",weight:"regular"},(0,l._t)("right_panel|add_topic")))));const a=s.expanded?i.createElement(vi.XZ,null,r):r;return i.createElement(we.s,{as:"section",direction:"column",justify:"center",gap:"var(--cpd-space-2x)",className:Lt()("mx_RoomSummaryCard_topic",{mx_RoomSummaryCard_topic_collapsed:!s.expanded})},i.createElement(Mm,{flex:"1",className:"mx_RoomSummaryCard_topic_container mx_RoomSummaryCard_topic_box"},i.createElement(Al.E,{size:"sm",weight:"regular",onClick:s.onTopicLinkClick},a),i.createElement(Sl.K,{className:"mx_RoomSummaryCard_topic_chevron",size:"24px",onClick:s.onExpandedClick},i.createElement(rc.A,null))),s.expanded&&s.canEditTopic&&i.createElement(Mm,{flex:"1",className:"mx_RoomSummaryCard_topic_edit"},i.createElement(vm.N,{kind:"primary",onClick:s.onEditClick},i.createElement(Al.E,{size:"sm",weight:"regular"},(0,l._t)("action|edit")))))},hh=({room:e,permalinkCreator:t,onSearchChange:n,onSearchCancel:s,focusRoomSearch:r,searchTerm:a=""})=>{const c=lh(e,t,s),[d,m]=(0,i.useState)(a);(0,i.useEffect)(()=>{m(a)},[a]);const u=i.createElement("header",{className:"mx_RoomSummaryCard_container"},i.createElement(En.A,{room:e,size:"80px",viewAvatarOnClick:!0}),i.createElement(io,{room:e},e=>i.createElement(_m.D,{as:"h1",size:"md",weight:"semibold",className:"mx_RoomSummaryCard_roomName text-primary",title:e},e)),i.createElement(Al.E,{as:"div",size:"sm",weight:"semibold",className:"mx_RoomSummaryCard_alias text-secondary",title:c.alias},c.alias),i.createElement(we.s,{as:"section",justify:"center",gap:"var(--cpd-space-2x)",className:"mx_RoomSummaryCard_badges"},!c.isDirectMessage&&c.roomJoinRule===o.JoinRule.Public&&i.createElement(fm.E,{kind:"blue"},i.createElement(Pd.A,{width:"1em",color:"var(--cpd-color-icon-info-primary)"}),(0,l._t)("common|public_room")),c.isRoomEncrypted&&c.e2eStatus!==km.z.Warning&&i.createElement(fm.E,{kind:"green"},i.createElement(q.A,{width:"1em"}),(0,l._t)("common|encrypted")),!c.isRoomEncrypted&&i.createElement(fm.E,{kind:"blue"},i.createElement(xm.A,{width:"1em",color:"var(--cpd-color-icon-info-primary)"}),(0,l._t)("common|unencrypted")),c.e2eStatus===km.z.Warning&&i.createElement(fm.E,{kind:"red"},i.createElement(ve.A,{width:"1em"}),(0,l._t)("common|not_trusted"))),i.createElement(uh,{room:e})),h=n&&i.createElement(Em.b,{className:"mx_RoomSummaryCard_search",onSubmit:e=>e.preventDefault()},i.createElement(ym.v,{placeholder:(0,l._t)("room|search|placeholder"),name:"room_message_search",onChange:e=>{m(e.currentTarget.value),n(e.currentTarget.value)},value:d,className:"mx_no_textinput",ref:c.searchInputRef,autoFocus:r,onKeyDown:c.onUpdateSearchInput}));return i.createElement(Rm.A,{id:"room-summary-panel",className:"mx_RoomSummaryCard",ariaLabelledBy:"room-summary-panel-tab",role:"tabpanel",header:h},u,i.createElement(od.w,null),i.createElement("div",{role:"menubar","aria-orientation":"vertical"},i.createElement(sd.X,{Icon:ld.A,label:(0,l._t)("room|context_menu|favourite"),checked:c.isFavorite,onSelect:c.onFavoriteToggleClick}),i.createElement(wl.D,{Icon:oc.A,label:(0,l._t)("action|invite"),disabled:!c.canInviteToState,onSelect:c.onInviteToRoomClick}),i.createElement(od.w,null),i.createElement(wl.D,{Icon:Am.A,label:(0,l._t)("common|people"),onSelect:c.onRoomMembersClick}),i.createElement(wl.D,{Icon:Rn.A,label:(0,l._t)("common|threads"),onSelect:c.onRoomThreadsClick}),!c.isVideoRoom&&i.createElement(i.Fragment,null,i.createElement(wl.D,{Icon:In.A,label:(0,l._t)("right_panel|pinned_messages_button"),onSelect:c.onRoomPinsClick},i.createElement(Al.E,{as:"span",size:"sm"},c.pinCount)),i.createElement(wl.D,{Icon:wm.A,label:(0,l._t)("right_panel|files_button"),onSelect:c.onRoomFilesClick}),i.createElement(wl.D,{Icon:Sm.A,label:(0,l._t)("right_panel|extensions_button"),onSelect:c.onRoomExtensionsClick})),i.createElement(od.w,null),i.createElement(wl.D,{Icon:cs.A,label:(0,l._t)("action|copy_link"),onSelect:c.onShareRoomClick}),!c.isVideoRoom&&i.createElement(i.Fragment,null,i.createElement(wl.D,{Icon:Cm.A,label:(0,l._t)("right_panel|polls_button"),onSelect:c.onRoomPollHistoryClick}),i.createElement(wl.D,{Icon:bm.A,label:(0,l._t)("export_chat|title"),onSelect:c.onRoomExportClick})),i.createElement(wl.D,{Icon:dc.A,label:(0,l._t)("common|settings"),onSelect:c.onRoomSettingsClick}),i.createElement(od.w,null),i.createElement("div",{className:"mx_RoomSummaryCard_bottomOptions"},i.createElement(wl.D,{Icon:Pe.A,kind:"critical",label:(0,l._t)("action|report_room"),onSelect:c.onReportRoomClick}),i.createElement(wl.D,{className:"mx_RoomSummaryCard_leave",Icon:dd.A,kind:"critical",label:(0,l._t)("action|leave_room"),onSelect:c.onLeaveRoomClick}))))};var ph=n("./src/utils/WidgetUtils.ts"),gh=n("./node_modules/matrix-widget-api/lib/index.js"),vh=n("./node_modules/@matrix-org/react-sdk-module-api/lib/lifecycles/WidgetLifecycle.js"),_h=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/collapse.js"),fh=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/expand.js"),Eh=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/minus.js"),yh=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/help.js"),bh=n("./src/components/views/typography/Heading.tsx"),wh=n("./src/utils/UrlUtils.ts");function Sh(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}class Ah extends i.Component{constructor(e){super(e);const t=this.parseWidgetUrl(),n=v.J.safeGet().getRoom(this.props.roomId);let i=null;n&&(i=n.getMember(this.props.creatorUserId)),this.state=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sh(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sh(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({roomMember:i},t)}parseWidgetUrl(){const e=(0,wh.Dl)(this.props.url);if(ph.A.isScalarUrl(this.props.url)&&e.searchParams.has("url")){const t=(0,wh.Dl)(e.searchParams.get("url"));return{widgetDomain:t.host||t.hostname,isWrapped:!0}}return{widgetDomain:e.host||e.hostname,isWrapped:!1}}render(){const e=c.Ay.get().brand,t=this.state.roomMember?this.state.roomMember.name:this.props.creatorUserId,n=t===this.props.creatorUserId?null:this.props.creatorUserId,s=this.state.roomMember?i.createElement(ln.A,{member:this.state.roomMember,size:"38px"}):i.createElement(vl.A,{name:this.props.creatorUserId,size:"38px"}),o=i.createElement(zt.m,{label:(0,l._t)("analytics|shared_data_heading"),caption:i.createElement("ul",null,i.createElement("li",null,(0,l._t)("widget|shared_data_name")),i.createElement("li",null,(0,l._t)("widget|shared_data_avatar")),i.createElement("li",null,(0,l._t)("widget|shared_data_mxid")),i.createElement("li",null,(0,l._t)("widget|shared_data_device_id")),i.createElement("li",null,(0,l._t)("widget|shared_data_theme")),i.createElement("li",null,(0,l._t)("widget|shared_data_lang")),i.createElement("li",null,(0,l._t)("widget|shared_data_url",{brand:e})),i.createElement("li",null,(0,l._t)("widget|shared_data_room_id")),i.createElement("li",null,(0,l._t)("widget|shared_data_widget_id")))},i.createElement("div",{className:"mx_TextWithTooltip_target mx_TextWithTooltip_target--helpIcon"},i.createElement(yh.A,{className:"mx_Icon mx_Icon_12"}))),r=this.state.isWrapped?(0,l._t)("widget|shared_data_warning_im",{widgetDomain:this.state.widgetDomain},{helpIcon:()=>o}):(0,l._t)("widget|shared_data_warning",{widgetDomain:this.state.widgetDomain},{helpIcon:()=>o}),a=this.props.isRoomEncrypted?(0,l._t)("widget|unencrypted_warning"):null;return i.createElement("div",{className:"mx_AppPermission"},i.createElement("div",{className:"mx_AppPermission_content"},i.createElement("div",{className:"mx_AppPermission_content_bolder"},(0,l._t)("widget|added_by")),i.createElement("div",null,s,i.createElement(bh.A,{size:"4"},t),i.createElement("div",null,n)),i.createElement("div",null,r),i.createElement("div",null,(0,l._t)("widget|cookie_warning")," ",a),i.createElement("div",null,i.createElement(le.A,{kind:"primary_sm",onClick:this.props.onPermissionGranted},(0,l._t)("action|continue")))))}}(0,w.A)(Ah,"defaultProps",{onPermissionGranted:()=>{}});var Ch=n("./res/img/warning.svg");const xh=e=>i.createElement("div",{className:"mx_AppWarning"},i.createElement("div",null,i.createElement("img",{src:Ch.A,alt:""})),i.createElement("div",null,i.createElement("span",null,e.errorMsg||"Error")));function Rh(e){const t=document.createElement("div");return t.id=e,function(){let e=document.getElementById("mx_PersistedElement_container");return e||(e=document.createElement("div"),e.id="mx_PersistedElement_container",document.body.appendChild(e)),e}().appendChild(t),t}class kh extends i.Component{constructor(e){super(e),(0,w.A)(this,"resizeObserver",void 0),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"childContainer",void 0),(0,w.A)(this,"child",void 0),(0,w.A)(this,"collectChildContainer",e=>{this.childContainer&&this.resizeObserver.unobserve(this.childContainer),this.childContainer=e,e&&this.resizeObserver.observe(e)}),(0,w.A)(this,"collectChild",e=>{this.child=e,this.updateChild()}),(0,w.A)(this,"onAction",e=>{"timeline_resize"===e.action?this.repositionChild():"logout"===e.action&&kh.destroyElement(this.props.persistKey)}),(0,w.A)(this,"repositionChild",()=>{this.updateChildPosition(this.child,this.childContainer)}),this.resizeObserver=new ResizeObserver(this.repositionChild),this.props.moveRef&&(this.props.moveRef.current=this.repositionChild)}static destroyElement(e){const t=kh.rootMap[e];t&&(t[0].unmount(),t[1].remove()),delete kh.rootMap[e]}static isMounted(e){return Boolean(kh.rootMap[e])}componentDidMount(){window.addEventListener("resize",this.repositionChild),this.dispatcherRef=S.A.register(this.onAction),this.updateChild(),this.renderApp()}componentDidUpdate(){this.updateChild(),this.renderApp()}componentWillUnmount(){this.updateChildVisibility(this.child,!1),this.resizeObserver.disconnect(),window.removeEventListener("resize",this.repositionChild),S.A.unregister(this.dispatcherRef)}updateChild(){this.updateChildPosition(this.child,this.childContainer),this.updateChildVisibility(this.child,!0)}renderApp(){const e=i.createElement(i.StrictMode,null,i.createElement(de.Ay.Provider,{value:v.J.safeGet()},i.createElement(Dr.B,null,i.createElement("div",{ref:this.collectChild,style:this.props.style},this.props.children))));let t=kh.rootMap[this.props.persistKey];if(!t){const e=Rh("mx_persistedElement_"+this.props.persistKey);t=[(0,zm.createRoot)(e),e],kh.rootMap[this.props.persistKey]=t}t[0].render(e)}updateChildVisibility(e,t=!1){e&&(e.style.display=t?"block":"none")}updateChildPosition(e,t){if(!e||!t)return;const n=t.getBoundingClientRect();Object.assign(e.style,{zIndex:(0,Kr.hX)(this.props.zIndex)?9:this.props.zIndex,position:"absolute",top:"0",left:"0",transform:`translateX(${n.left}px) translateY(${n.top}px)`,width:n.width+"px",height:n.height+"px"})}render(){return i.createElement("div",{ref:this.collectChildContainer})}}(0,w.A)(kh,"rootMap",{});var Ih=n("./src/widgets/WidgetType.ts");var Th=n("./src/stores/widgets/WidgetPermissionStore.ts");class Ph extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"onAllow",()=>{this.onPermissionSelection(!0)}),(0,w.A)(this,"onDeny",()=>{this.onPermissionSelection(!1)}),(0,w.A)(this,"onRememberSelectionChange",e=>{this.setState({rememberSelection:e})}),this.state={rememberSelection:!1}}onPermissionSelection(e){this.state.rememberSelection&&(s.vF.log(`Remembering ${this.props.widget.id} as allowed=${e} for OpenID`),Do.M.instance.widgetPermissionStore.setOIDCState(this.props.widget,this.props.widgetKind,this.props.inRoomId,e?Th.R.Allowed:Th.R.Denied)),this.props.onFinished(e)}render(){return i.createElement(Q.A,{className:"mx_WidgetOpenIDPermissionsDialog",hasCancel:!0,onFinished:this.props.onFinished,title:(0,l._t)("widget|open_id_permissions_dialog|title")},i.createElement("div",{className:"mx_WidgetOpenIDPermissionsDialog_content"},i.createElement("p",null,(0,l._t)("widget|open_id_permissions_dialog|starting_text")),i.createElement("p",{className:"text-muted"},this.props.widget.templateUrl.split("?")[0].split("#")[0])),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|continue"),onPrimaryButtonClick:this.onAllow,onCancel:this.onDeny,additive:i.createElement(yo.A,{value:this.state.rememberSelection,toggleInFront:!0,onChange:this.onRememberSelectionChange,label:(0,l._t)("widget|open_id_permissions_dialog|remember_selection")})}))}}let Nh=function(e){return e.CanChangeViewedRoom="io.element.view_room",e.RequiresClient="io.element.requires_client",e}({});var Mh=n("./src/components/views/elements/TextWithTooltip.tsx");const Dh="generic";class Oh{static bylineFor(e){return e.kind===gh.EventKind.State?e.keyStr?(0,l._t)("widget|capability|byline_state_key",{stateKey:e.keyStr}):(0,l._t)("widget|capability|byline_empty_state_key"):null}static for(e,t){if(Oh.simpleCaps[e]){const n=Oh.simpleCaps[e];if(n[t])return{primary:(0,l._t)(n[t])};if(n[Dh])return{primary:(0,l._t)(n[Dh])}}if((0,gh.isTimelineCapability)(e)){if((0,gh.isTimelineCapabilityFor)(e,gh.Symbols.AnyRoom))return{primary:(0,l._t)("widget|capability|any_room")};{const t=(0,gh.getTimelineRoomIDFromCapability)(e),n=v.J.safeGet().getRoom(t);return{primary:(0,l._t)("widget|capability|specific_room",{},{Room:()=>{var e;return n?i.createElement(Mh.A,{tooltip:null!==(e=n.getCanonicalAlias())&&void 0!==e?e:t},i.createElement("strong",null,n.name)):i.createElement("strong",null,i.createElement("code",null,t))}})}}}const[n]=gh.WidgetEventCapability.findEventCapabilities([e]);if(n){if(n.kind===gh.EventKind.Event&&n.eventType===o.EventType.RoomMessage)return Oh.forRoomMessageCap(n,t);const e=n.kind===gh.EventKind.State?Oh.stateSendRecvCaps:Oh.nonStateSendRecvCaps;if(e[n.eventType]){const i=e[n.eventType],s=(null==i?void 0:i[t])||(null==i?void 0:i[Dh]);if(null!=s&&s[n.direction])return{primary:(0,l._t)(s[n.direction])}}return t===gh.WidgetKind.Room?n.direction===gh.EventDirection.Send?{primary:(0,l._t)("widget|capability|send_event_type_this_room",{eventType:n.eventType},{b:e=>i.createElement("strong",null,e)}),byline:Oh.bylineFor(n)}:{primary:(0,l._t)("widget|capability|see_event_type_sent_this_room",{eventType:n.eventType},{b:e=>i.createElement("strong",null,e)}),byline:Oh.bylineFor(n)}:n.direction===gh.EventDirection.Send?{primary:(0,l._t)("widget|capability|send_event_type_active_room",{eventType:n.eventType},{b:e=>i.createElement("strong",null,e)}),byline:Oh.bylineFor(n)}:{primary:(0,l._t)("widget|capability|see_event_type_sent_active_room",{eventType:n.eventType},{b:e=>i.createElement("strong",null,e)}),byline:Oh.bylineFor(n)}}return{primary:(0,l._t)("widget|capability|capability",{capability:e},{b:e=>i.createElement("strong",null,e)})}}static forRoomMessageCap(e,t){if(!e.keyStr)return e.direction===gh.EventDirection.Send?{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|send_messages_this_room"):(0,l._t)("widget|capability|send_messages_active_room")}:{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|see_messages_sent_this_room"):(0,l._t)("widget|capability|see_messages_sent_active_room")};switch(e.keyStr){case o.MsgType.Text:return e.direction===gh.EventDirection.Send?{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|send_text_messages_this_room"):(0,l._t)("widget|capability|send_text_messages_active_room")}:{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|see_text_messages_sent_this_room"):(0,l._t)("widget|capability|see_text_messages_sent_active_room")};case o.MsgType.Emote:return e.direction===gh.EventDirection.Send?{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|send_emotes_this_room"):(0,l._t)("widget|capability|send_emotes_active_room")}:{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|see_sent_emotes_this_room"):(0,l._t)("widget|capability|see_sent_emotes_active_room")};case o.MsgType.Image:return e.direction===gh.EventDirection.Send?{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|send_images_this_room"):(0,l._t)("widget|capability|send_images_active_room")}:{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|see_images_sent_this_room"):(0,l._t)("widget|capability|see_images_sent_active_room")};case o.MsgType.Video:return e.direction===gh.EventDirection.Send?{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|send_videos_this_room"):(0,l._t)("widget|capability|send_videos_active_room")}:{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|see_videos_sent_this_room"):(0,l._t)("widget|capability|see_videos_sent_active_room")};case o.MsgType.File:return e.direction===gh.EventDirection.Send?{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|send_files_this_room"):(0,l._t)("widget|capability|send_files_active_room")}:{primary:t===gh.WidgetKind.Room?(0,l._t)("widget|capability|see_sent_files_this_room"):(0,l._t)("widget|capability|see_sent_files_active_room")};default:{let n;return n=e.direction===gh.EventDirection.Send?t===gh.WidgetKind.Room?(0,l._t)("widget|capability|send_msgtype_this_room",{msgtype:e.keyStr},{b:e=>i.createElement("strong",null,e)}):(0,l._t)("widget|capability|send_msgtype_active_room",{msgtype:e.keyStr},{b:e=>i.createElement("strong",null,e)}):t===gh.WidgetKind.Room?(0,l._t)("widget|capability|see_msgtype_sent_this_room",{msgtype:e.keyStr},{b:e=>i.createElement("strong",null,e)}):(0,l._t)("widget|capability|see_msgtype_sent_active_room",{msgtype:e.keyStr},{b:e=>i.createElement("strong",null,e)}),{primary:n}}}}}(0,w.A)(Oh,"simpleCaps",{[gh.MatrixCapabilities.AlwaysOnScreen]:{[gh.WidgetKind.Room]:(0,l.AO)("widget|capability|always_on_screen_viewing_another_room"),[Dh]:(0,l.AO)("widget|capability|always_on_screen_generic")},[gh.MatrixCapabilities.StickerSending]:{[gh.WidgetKind.Room]:(0,l.AO)("widget|capability|send_stickers_this_room"),[Dh]:(0,l.AO)("widget|capability|send_stickers_active_room")},[Nh.CanChangeViewedRoom]:{[Dh]:(0,l.AO)("widget|capability|switch_room")},[gh.MatrixCapabilities.MSC2931Navigate]:{[Dh]:(0,l.AO)("widget|capability|switch_room_message_user")}}),(0,w.A)(Oh,"stateSendRecvCaps",{[o.EventType.RoomTopic]:{[gh.WidgetKind.Room]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|change_topic_this_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_topic_change_this_room")},[Dh]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|change_topic_active_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_topic_change_active_room")}},[o.EventType.RoomName]:{[gh.WidgetKind.Room]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|change_name_this_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_name_change_this_room")},[Dh]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|change_name_active_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_name_change_active_room")}},[o.EventType.RoomAvatar]:{[gh.WidgetKind.Room]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|change_avatar_this_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_avatar_change_this_room")},[Dh]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|change_avatar_active_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_avatar_change_active_room")}},[o.EventType.RoomMember]:{[gh.WidgetKind.Room]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|remove_ban_invite_leave_this_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|receive_membership_this_room")},[Dh]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|remove_ban_invite_leave_active_room"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|receive_membership_active_room")}}}),(0,w.A)(Oh,"nonStateSendRecvCaps",{[o.EventType.Sticker]:{[gh.WidgetKind.Room]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|send_stickers_this_room_as_you"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_sticker_posted_this_room")},[Dh]:{[gh.EventDirection.Send]:(0,l.AO)("widget|capability|send_stickers_active_room_as_you"),[gh.EventDirection.Receive]:(0,l.AO)("widget|capability|see_sticker_posted_active_room")}}});class Fh extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"eventPermissionsMap",new Map),(0,w.A)(this,"onToggle",e=>{const t=(0,wn.tn)(this.state.booleanStates);t[e]=!t[e],this.setState({booleanStates:t})}),(0,w.A)(this,"onRememberSelectionChange",e=>{this.setState({rememberSelection:e})}),(0,w.A)(this,"onSubmit",async()=>{this.closeAndTryRemember(Object.entries(this.state.booleanStates).filter(([e,t])=>t).map(([e])=>e))}),(0,w.A)(this,"onReject",async()=>{this.closeAndTryRemember([])});gh.WidgetEventCapability.findEventCapabilities(this.props.requestedCapabilities).forEach(e=>this.eventPermissionsMap.set(e.raw,e));const t={};this.props.requestedCapabilities.forEach(e=>t[e]=!0),this.state={booleanStates:t,rememberSelection:!0}}closeAndTryRemember(e){this.props.onFinished({approved:e,remember:this.state.rememberSelection})}render(){const e=Object.entries(this.state.booleanStates).sort(([e],[t])=>{const n=(0,gh.isTimelineCapability)(e),i=(0,gh.isTimelineCapability)(t);return n||i?n&&!i?1:!n&&i?-1:n&&i?(0,Kr.aw)(e,t):0:(0,Kr.aw)(e,t)}).map(([e,t],n)=>{const s=Oh.for(e,this.props.widgetKind);return i.createElement("div",{className:"mx_WidgetCapabilitiesPromptDialog_cap",key:e+n},i.createElement(no.A,{checked:t,onChange:()=>this.onToggle(e),description:s.byline},s.primary))});return i.createElement(Q.A,{className:"mx_WidgetCapabilitiesPromptDialog",onFinished:this.props.onFinished,title:(0,l._t)("widget|capabilities_dialog|title")},i.createElement("form",{onSubmit:this.onSubmit},i.createElement("div",{className:"mx_Dialog_content"},i.createElement("div",{className:"text-muted"},(0,l._t)("widget|capabilities_dialog|content_starting_text")),e,i.createElement(Nt.A,{primaryButton:(0,l._t)("action|approve"),cancelButton:(0,l._t)("widget|capabilities_dialog|decline_all_permission"),onPrimaryButtonClick:this.onSubmit,onCancel:this.onReject,additive:i.createElement(yo.A,{value:this.state.rememberSelection,toggleInFront:!0,onChange:this.onRememberSelectionChange,label:(0,l._t)("widget|capabilities_dialog|remember_Selection")})}))))}}var Lh=n("./src/customisations/WidgetPermissions.ts"),Uh=n("./src/effects/index.ts"),Vh=n("./src/effects/utils.ts"),Bh=n("./src/utils/permalinks/navigator.ts");function jh(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 Wh=({urls:e,username:t,credential:n})=>({uris:e,username:t,password:n});class Hh extends gh.WidgetDriver{constructor(e,t,n,i,s){if(super(),(0,w.A)(this,"allowedCapabilities",void 0),this.forWidget=t,this.forWidgetKind=n,this.inRoomId=s,this.allowedCapabilities=new Set([...e,gh.MatrixCapabilities.Screenshots,Nh.RequiresClient]),Ih.x.JITSI.matches(this.forWidget.type)&&n===gh.WidgetKind.Room)this.allowedCapabilities.add(gh.MatrixCapabilities.AlwaysOnScreen);else if(Ih.x.STICKERPICKER.matches(this.forWidget.type)&&n===gh.WidgetKind.Account){const e=gh.WidgetEventCapability.forRoomEvent(gh.EventDirection.Send,o.EventType.Sticker).raw;this.allowedCapabilities.add(gh.MatrixCapabilities.StickerSending),this.allowedCapabilities.add(e),this.allowedCapabilities.add("visibility")}else if(i&&Ih.x.CALL.matches(this.forWidget.type)&&n===gh.WidgetKind.Room){this.allowedCapabilities.add(gh.MatrixCapabilities.AlwaysOnScreen),this.allowedCapabilities.add(gh.MatrixCapabilities.MSC3846TurnServers),this.allowedCapabilities.add(`org.matrix.msc2762.timeline:${s}`),this.allowedCapabilities.add(gh.MatrixCapabilities.MSC4157SendDelayedEvent),this.allowedCapabilities.add(gh.MatrixCapabilities.MSC4157UpdateDelayedEvent),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Receive,o.EventType.RoomName).raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Receive,o.EventType.RoomMember).raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Receive,"org.matrix.msc3401.call").raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Receive,o.EventType.RoomEncryption).raw);const e=v.J.safeGet().getSafeUserId();this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Send,"org.matrix.msc3401.call.member",e).raw);const i=v.J.safeGet().getDeviceId();null!==i&&(this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Send,"org.matrix.msc3401.call.member",`_${e}_${i}`).raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Send,"org.matrix.msc3401.call.member",`_${e}_${i}_m.call`).raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Send,"org.matrix.msc3401.call.member",`${e}_${i}`).raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Send,"org.matrix.msc3401.call.member",`${e}_${i}_m.call`).raw)),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Receive,"org.matrix.msc3401.call.member").raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forStateEvent(gh.EventDirection.Receive,o.EventType.RoomCreate).raw);const r=[o.EventType.CallNotify,o.EventType.RTCNotification],a=["io.element.call.encryption_keys","org.matrix.rageshake_request",o.EventType.Reaction,o.EventType.RoomRedaction,"io.element.call.reaction",o.EventType.RTCDecline,"m.rtc.decline"];for(const e of[...r,...a])this.allowedCapabilities.add(gh.WidgetEventCapability.forRoomEvent(gh.EventDirection.Send,e).raw);for(const e of a)this.allowedCapabilities.add(gh.WidgetEventCapability.forRoomEvent(gh.EventDirection.Receive,e).raw);const l=[o.EventType.CallInvite,o.EventType.CallCandidates,o.EventType.CallAnswer,o.EventType.CallHangup,o.EventType.CallReject,o.EventType.CallSelectAnswer,o.EventType.CallNegotiate,o.EventType.CallSDPStreamMetadataChanged,o.EventType.CallSDPStreamMetadataChangedPrefix,o.EventType.CallReplaces,o.EventType.CallEncryptionKeysPrefix];for(const e of l)this.allowedCapabilities.add(gh.WidgetEventCapability.forToDeviceEvent(gh.EventDirection.Send,e).raw),this.allowedCapabilities.add(gh.WidgetEventCapability.forToDeviceEvent(gh.EventDirection.Receive,e).raw);Do.M.instance.widgetPermissionStore.setOIDCState(t,n,s,Th.R.Allowed)}}async validateCapabilities(e){const t=(n=e,i=this.allowedCapabilities,(0,se.ZQ)(Array.from(n),Array.from(i)));var n,i;const o=new Set(t.removed),r=new Set(this.allowedCapabilities);var a;let l;if((a=this.forWidget,JSON.parse(localStorage.getItem(`widget_${a.id}_approved_caps`)||"[]")).forEach(e=>{r.add(e),o.delete(e)}),Lh.l.preapproveCapabilities)l=await Lh.l.preapproveCapabilities(this.forWidget,e);else{const t={approvedCapabilities:void 0};_.r.instance.invoke(vh.Z.CapabilitiesRequest,t,this.forWidget,e),l=t.approvedCapabilities}l&&l.forEach(e=>{r.add(e),o.delete(e)});let c=!1;if(o.size>0)try{var d;const[e]=await R.Ay.createDialog(Fh,{requestedCapabilities:o,widget:this.forWidget,widgetKind:this.forWidgetKind}).finished;null==e||null===(d=e.approved)||void 0===d||d.forEach(e=>r.add(e)),c=!(null==e||!e.remember)}catch(e){s.vF.error("Non-fatal error getting capabilities: ",e)}const m=new Set(function(e,t){return(0,se.LY)(Array.from(e),Array.from(t))}(r,e));return c&&function(e,t){localStorage.setItem(`widget_${e.id}_approved_caps`,JSON.stringify(t))}(this.forWidget,Array.from(m)),m}async sendEvent(e,t,n=null,i=null){const s=v.J.get(),r=i||Do.M.instance.roomViewStore.getRoomId();if(!s||!r)throw new Error("Not in a room or not attached to a client");let a;return null!==n?a=await s.sendStateEvent(r,e,t,n):e===o.EventType.RoomRedaction?a=await s.redactEvent(r,t.redacts):(a=await s.sendEvent(r,e,t),e===o.EventType.RoomMessage&&Uh.y.forEach(e=>{if((0,Vh._)(t,e.emojis)){var n;(null===(n=t["m.relates_to"])||void 0===n?void 0:n.rel_type)!==o.THREAD_RELATION_TYPE.name&&S.A.dispatch({action:`effects.${e.command}`})}})),{roomId:r,eventId:a.event_id}}async sendDelayedEvent(e,t,n,i,s=null,o=null){const r=v.J.get(),a=o||Do.M.instance.roomViewStore.getRoomId();if(!r||!a)throw new Error("Not in a room or not attached to a client");let l,c;if(null!==e)l=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?jh(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jh(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({delay:e},null!==t&&{parent_delay_id:t});else{if(null===t)throw new Error("Must provide at least one of delay or parentDelayId");l={parent_delay_id:t}}return c=null!==s?await r._unstable_sendDelayedStateEvent(a,l,n,i,s):await r._unstable_sendDelayedEvent(a,l,null,n,i),{roomId:a,delayId:c.delay_id}}async updateDelayedEvent(e,t){const n=v.J.get();if(!n)throw new Error("Not in a room or not attached to a client");await n._unstable_updateDelayedEvent(e,t)}async sendToDevice(e,t,n){const i=v.J.safeGet();if(t){const t=i.getCrypto();if(!t)throw new Error("E2EE not enabled");const s={};for(const e of Object.keys(n)){const t=n[e];for(const n of Object.keys(t)){const i=t[n],o=JSON.stringify(i);s[o]=s[o]||[],s[o].push({userId:e,deviceId:n})}}await Promise.all(Object.entries(s).map(async([n,s])=>{const o=await t.encryptToDeviceMessages(e,s,JSON.parse(n));await i.queueToDevice(o)}))}else await i.queueToDevice({eventType:e,batch:Object.entries(n).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>({userId:e,deviceId:t,payload:n})))})}async readRoomTimeline(e,t,n,i,s,r){s=s>0?Math.min(s,Number.MAX_SAFE_INTEGER):Number.MAX_SAFE_INTEGER;const a=v.J.safeGet().getRoom(e);if(null===a)return[];const l=[],c=a.getLiveTimeline().getEvents();for(let e=c.length-1;e>=0;e--){const a=c[e];if(l.length>=s)break;if(void 0!==r&&a.getId()===r)break;a.getType()===t&&(t===o.EventType.RoomMessage&&n&&n!==a.getContent().msgtype||void 0!==i&&a.getStateKey()!==i||l.push(a))}return l.map(e=>e.getEffectiveEvent())}async readRoomState(e,t,n){const i=v.J.safeGet().getRoom(e);if(null===i)return[];const s=i.getLiveTimeline().getState(o.Direction.Forward);if(void 0===s)return[];if(void 0===n)return s.getStateEvents(t).map(e=>e.getEffectiveEvent());const r=s.getStateEvents(t,n);return null===r?[]:[r.getEffectiveEvent()]}async askOpenID(e){const t={approved:void 0};if(_.r.instance.invoke(vh.Z.IdentityRequest,t,this.forWidget),t.approved)return e.update({state:gh.OpenIDRequestState.Allowed,token:await v.J.safeGet().getOpenIdToken()});const n=Do.M.instance.widgetPermissionStore.getOIDCState(this.forWidget,this.forWidgetKind,this.inRoomId),i=()=>v.J.safeGet().getOpenIdToken();if(n===Th.R.Denied)return e.update({state:gh.OpenIDRequestState.Blocked});if(n===Th.R.Allowed)return e.update({state:gh.OpenIDRequestState.Allowed,token:await i()});e.update({state:gh.OpenIDRequestState.PendingUserConfirmation});const{finished:s}=R.Ay.createDialog(Ph,{widget:this.forWidget,widgetKind:this.forWidgetKind,inRoomId:this.inRoomId}),[o]=await s;o?e.update({state:gh.OpenIDRequestState.Allowed,token:await i()}):e.update({state:gh.OpenIDRequestState.Blocked})}async navigate(e){(0,Bh.O)(e)}async*getTurnServers(){const e=v.J.safeGet();if(!e.pollingTurnServers||!e.getTurnServers().length)return;let t,n;const i=([e])=>t(Wh(e)),s=(e,t)=>{t&&n(e)};e.on(o.ClientEvent.TurnServers,i),e.on(o.ClientEvent.TurnServersError,s);try{const i=e.getTurnServers()[0];for(yield Wh(i);;)yield await new Promise((e,i)=>{t=e,n=i})}finally{e.off(o.ClientEvent.TurnServers,i),e.off(o.ClientEvent.TurnServersError,s)}}async readEventRelations(e,t,n,i,s,o,r,a){var l;const c=v.J.safeGet(),d=a;if("string"!=typeof(t=null!==(l=null!=t?t:Do.M.instance.roomViewStore.getRoomId())&&void 0!==l?l:void 0))throw new Error("Error while reading the current room");const{events:m,nextBatch:u,prevBatch:h}=await c.relations(t,e,null!=n?n:null,null!=i?i:null,{from:s,to:o,limit:r,dir:d});return{chunk:m.map(e=>e.getEffectiveEvent()),nextBatch:null!=u?u:void 0,prevBatch:null!=h?h:void 0}}async searchUserDirectory(e,t){const n=v.J.safeGet(),{limited:i,results:s}=await n.searchUserDirectory({term:e,limit:t});return{limited:i,results:s.map(e=>({userId:e.user_id,displayName:e.display_name,avatarUrl:e.avatar_url}))}}async getMediaConfig(){const e=v.J.safeGet();return await e.getMediaConfig()}async uploadFile(e){const t=v.J.safeGet();return{contentUri:(await t.uploadContent(e)).content_uri}}async downloadFile(e){const t=v.J.safeGet(),n=(0,gi.mediaFromMxc)(e,t),i=await n.downloadSource();return{file:await i.blob()}}getKnownRooms(){return v.J.safeGet().getVisibleRooms(D.A.getValue("feature_dynamic_room_predecessors")).map(e=>e.roomId)}processError(e){return e instanceof o.MatrixError?{matrix_api_error:e.asWidgetApiErrorData()}:void 0}}var zh=n("./src/stores/widgets/WidgetMessagingStore.ts"),Kh=n("./src/stores/widgets/ElementWidgetActions.ts");const Gh="io.element.web";function Jh(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 $h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Jh(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Jh(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class qh extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"widget",void 0),(0,w.A)(this,"possibleButtons",void 0),(0,w.A)(this,"appFrame",i.createRef()),(0,w.A)(this,"themeWatcher",new na.A),(0,w.A)(this,"state",{disabledButtonIds:(this.props.widgetDefinition.buttons||[]).filter(e=>e.disabled).map(e=>e.id)}),(0,w.A)(this,"onReady",()=>{var e;this.themeWatcher.start(),this.themeWatcher.on(na.S.Change,this.onThemeChange),this.onThemeChange(this.themeWatcher.getEffectiveTheme()),null===(e=this.state.messaging)||void 0===e||e.sendWidgetConfig(this.props.widgetDefinition)}),(0,w.A)(this,"onLoad",()=>{this.state.messaging&&(this.state.messaging.once("ready",this.onReady),this.state.messaging.on(`action:${gh.WidgetApiFromWidgetAction.CloseModalWidget}`,this.onWidgetClose),this.state.messaging.on(`action:${gh.WidgetApiFromWidgetAction.SetModalButtonEnabled}`,this.onButtonEnableToggle))}),(0,w.A)(this,"onThemeChange",e=>{var t;null===(t=this.state.messaging)||void 0===t||t.updateTheme({name:e})}),(0,w.A)(this,"onWidgetClose",e=>{this.props.onFinished(!0,e.detail.data)}),(0,w.A)(this,"onButtonEnableToggle",e=>{var t;e.preventDefault();var n;if(e.detail.data.button===gh.BuiltInModalButtonID.Close||!this.possibleButtons.includes(e.detail.data.button))return null===(n=this.state.messaging)||void 0===n?void 0:n.transport.reply(e.detail,{error:{message:"Invalid button"}});let i;if(e.detail.data.enabled)i=(0,se.PF)(this.state.disabledButtonIds).filter(t=>t!==e.detail.data.button);else{const t=new Set(this.state.disabledButtonIds);t.add(e.detail.data.button),i=Array.from(t)}this.setState({disabledButtonIds:i}),null===(t=this.state.messaging)||void 0===t||t.transport.reply(e.detail,{})}),this.widget=new sp($h($h({},this.props.widgetDefinition),{},{creatorUserId:v.J.safeGet().getSafeUserId(),id:`modal_${this.props.sourceWidgetId}`})),this.possibleButtons=(this.props.widgetDefinition.buttons||[]).map(e=>e.id)}componentDidMount(){const e=new Hh([],this.widget,gh.WidgetKind.Modal,!1),t=new gh.ClientWidgetApi(this.widget,this.appFrame.current,e);this.setState({messaging:t})}componentWillUnmount(){this.themeWatcher.off(na.S.Change,this.onThemeChange),this.themeWatcher.stop(),this.state.messaging&&(this.state.messaging.off("ready",this.onReady),this.state.messaging.off(`action:${gh.WidgetApiFromWidgetAction.CloseModalWidget}`,this.onWidgetClose),this.state.messaging.stop())}render(){var e,t,n;const s=this.widget.getCompleteUrl({widgetRoomId:this.props.widgetRoomId,currentUserId:v.J.safeGet().getSafeUserId(),userDisplayName:null!==(e=gl.V.instance.displayName)&&void 0!==e?e:void 0,userHttpAvatarUrl:null!==(t=gl.V.instance.getHttpAvatarUrl())&&void 0!==t?t:void 0,clientId:Gh,clientTheme:this.themeWatcher.getEffectiveTheme(),clientLanguage:(0,l.mf)(),baseUrl:v.J.safeGet().baseUrl}),o=new URL(s);o.searchParams.set("widgetId",this.widget.id),o.searchParams.set("parentUrl",window.location.href.split("#",2)[0]);const r=o.toString().replace(/%24/g,"$");let a;return this.props.widgetDefinition.buttons&&(a=this.props.widgetDefinition.buttons.slice(0,3).reverse().map(e=>{let t="secondary";switch(e.kind){case gh.ModalButtonKind.Primary:t="primary";break;case gh.ModalButtonKind.Secondary:t="primary_outline";break;case gh.ModalButtonKind.Danger:t="danger"}const n=this.state.disabledButtonIds.includes(e.id);return i.createElement(le.A,{key:e.id,kind:t,onClick:()=>{var t;null===(t=this.state.messaging)||void 0===t||t.notifyModalWidgetButtonClicked(e.id)},disabled:n},e.label)})),i.createElement(Q.A,{title:this.props.widgetDefinition.name||(0,l._t)("widget|modal_title_default"),className:"mx_ModalWidgetDialog",contentId:"mx_Dialog_content",onFinished:this.props.onFinished},i.createElement("div",{className:"mx_ModalWidgetDialog_warning"},i.createElement(Pe.A,{width:"16px",height:"16px"}),(0,l._t)("widget|modal_data_warning",{widgetDomain:o.hostname})),i.createElement("div",null,i.createElement("iframe",{title:null!==(n=this.widget.name)&&void 0!==n?n:void 0,ref:this.appFrame,sandbox:"allow-forms allow-scripts allow-same-origin",src:r,onLoad:this.onLoad})),i.createElement("div",{className:"mx_ModalWidgetDialog_buttons"},a))}}var Yh;function Xh(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 Qh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xh(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xh(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class Zh extends $r.r{constructor(){super(S.A,{}),(0,w.A)(this,"modalInstance",null),(0,w.A)(this,"openSourceWidgetId",null),(0,w.A)(this,"openSourceWidgetRoomId",null),(0,w.A)(this,"canOpenModalWidget",()=>!this.modalInstance),(0,w.A)(this,"openModalWidget",(e,t,n)=>{this.modalInstance||(this.openSourceWidgetId=t.id,this.openSourceWidgetRoomId=null!=n?n:null,this.modalInstance=R.Ay.createDialog(qh,{widgetDefinition:Qh({},e),widgetRoomId:n,sourceWidgetId:t.id},void 0,!1,!0),this.modalInstance.finished.then(([e,i])=>{this.closeModalWidget(t,n,e&&i?i:{"m.exited":!0}),this.openSourceWidgetId=null,this.openSourceWidgetRoomId=null,this.modalInstance=null}))}),(0,w.A)(this,"closeModalWidget",(e,t,n)=>{if(this.modalInstance&&this.openSourceWidgetId===e.id&&this.openSourceWidgetRoomId===t){this.openSourceWidgetId=null,this.openSourceWidgetRoomId=null,this.modalInstance.close(),this.modalInstance=null;const i=zh.c.instance.getMessaging(e,t);if(!i)return void s.vF.error("No source widget messaging for modal widget");i.notifyModalWidgetClose(n)}})}static get instance(){return Zh.internalInstance}async onAction(e){}}Yh=Zh,(0,w.A)(Zh,"internalInstance",(()=>{const e=new Yh;return e.start(),e})()),window.mxModalWidgetStore=Zh.instance;var ep=n("./src/stores/WidgetStore.ts"),tp=n("./src/customisations/WidgetVariables.ts");function np(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 ip(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?np(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):np(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class sp extends gh.Widget{constructor(e){super(e),this.rawDefinition=e}get templateUrl(){var e;return Ih.x.JITSI.matches(this.type)?ph.A.getLocalJitsiWrapperUrl({forLocalRender:!0,auth:null===(e=super.rawData)||void 0===e?void 0:e.auth}):super.templateUrl}get popoutTemplateUrl(){var e;return Ih.x.JITSI.matches(this.type)?ph.A.getLocalJitsiWrapperUrl({forLocalRender:!1,auth:null===(e=super.rawData)||void 0===e?void 0:e.auth}):this.templateUrl}get rawData(){let e=super.rawData.conferenceId;if(void 0===e){e=new URL(super.templateUrl).searchParams.get("confId")}let t=super.rawData.domain;void 0===t&&(t="meet.element.io");let n=(new na.A).getEffectiveTheme();if(n.startsWith("custom-")){const e=(0,$a.TP)(n.slice(7));n=e.is_dark?"dark":"light"}return n=n.includes("light")?"light":"dark",ip(ip({},super.rawData),{},{theme:n,conferenceId:e,domain:t})}getCompleteUrl(e,t=!1){return(0,gh.runTemplate)(t?this.popoutTemplateUrl:this.templateUrl,ip(ip({},this.rawDefinition),{},{data:this.rawData}),e)}}class op extends te.EventEmitter{constructor(e){var t;super(),(0,w.A)(this,"client",void 0),(0,w.A)(this,"iframe",null),(0,w.A)(this,"messaging",null),(0,w.A)(this,"mockWidget",void 0),(0,w.A)(this,"scalarToken",void 0),(0,w.A)(this,"roomId",void 0),(0,w.A)(this,"viewedRoomId",null),(0,w.A)(this,"kind",void 0),(0,w.A)(this,"virtual",void 0),(0,w.A)(this,"themeWatcher",new na.A),(0,w.A)(this,"readUpToMap",{}),(0,w.A)(this,"stickyPromise",void 0),(0,w.A)(this,"eventsToFeed",new WeakSet),(0,w.A)(this,"onThemeChange",e=>{var t;null===(t=this.messaging)||void 0===t||t.updateTheme({name:e})}),(0,w.A)(this,"onOpenModal",async e=>{var t,n;(e.preventDefault(),Zh.instance.canOpenModalWidget())?(Zh.instance.openModalWidget(e.detail.data,this.mockWidget,this.roomId),null===(t=this.messaging)||void 0===t||t.transport.reply(e.detail,{})):null===(n=this.messaging)||void 0===n||n.transport.reply(e.detail,{error:{message:"Unable to open modal at this time"}})}),(0,w.A)(this,"onRoomViewStoreUpdate",()=>{var e;const t=null!==(e=Do.M.instance.roomViewStore.getRoomId())&&void 0!==e?e:null;t!==this.viewedRoomId&&(this.messaging.setViewedRoomId(t),this.viewedRoomId=t)}),(0,w.A)(this,"onEvent",e=>{this.client.decryptEventIfNeeded(e),this.feedEvent(e)}),(0,w.A)(this,"onEventDecrypted",e=>{this.feedEvent(e)}),(0,w.A)(this,"onStateUpdate",e=>{if(null===this.messaging)return;const t=e.getEffectiveEvent();this.messaging.feedStateUpdate(t).catch(e=>{s.vF.error("Error sending state update to widget: ",e)})}),(0,w.A)(this,"onToDeviceMessage",async e=>{var t;const{message:n,encryptionInfo:i}=e;await(null===(t=this.messaging)||void 0===t?void 0:t.feedToDevice(n,null!=i))}),this.appTileProps=e,this.client=v.J.safeGet();let n=e.app;n.creatorUserId||(n=(0,wn.tn)(n),n.creatorUserId=this.client.getUserId()),this.mockWidget=new sp(n),this.roomId=null===(t=e.room)||void 0===t?void 0:t.roomId,this.kind=e.userWidget?gh.WidgetKind.Account:gh.WidgetKind.Room,this.virtual=(0,ep.Sw)(n)&&void 0===n.eventId,this.stickyPromise=e.stickyPromise}get widgetApi(){return this.messaging}get embedUrl(){return this.runUrlTemplate({asPopout:!1})}get popoutUrl(){return this.runUrlTemplate({asPopout:!0})}runUrlTemplate(e={asPopout:!1}){var t,n,i,s,o;const r=null!==(t=null===tp.c||void 0===tp.c||null===(n=tp.c.provideVariables)||void 0===n?void 0:n.call(tp.c))&&void 0!==t?t:{},a={widgetRoomId:this.roomId,currentUserId:this.client.getUserId(),userDisplayName:null!==(i=gl.V.instance.displayName)&&void 0!==i?i:void 0,userHttpAvatarUrl:null!==(s=gl.V.instance.getHttpAvatarUrl())&&void 0!==s?s:void 0,clientId:Gh,clientTheme:this.themeWatcher.getEffectiveTheme(),clientLanguage:(0,l.mf)(),deviceId:null!==(o=this.client.getDeviceId())&&void 0!==o?o:void 0,baseUrl:this.client.baseUrl},c=this.mockWidget.getCompleteUrl(Object.assign(a,r),null==e?void 0:e.asPopout),d=new URL(c);return null!=e&&e.asPopout||(d.searchParams.set("widgetId",this.mockWidget.id),d.searchParams.set("parentUrl",window.location.href.split("#",2)[0]),this.scalarToken&&d.searchParams.set("scalar_token",this.scalarToken)),d.toString().replace(/%24/g,"$")}startMessaging(e){if(null!==this.messaging)return;this.iframe=e;const t=this.appTileProps.whitelistCapabilities||[],n=new Hh(t,this.mockWidget,this.kind,this.virtual,this.roomId);var i;(this.messaging=new gh.ClientWidgetApi(this.mockWidget,e,n),this.messaging.on("preparing",()=>this.emit("preparing")),this.messaging.on("error:preparing",e=>this.emit("error:preparing",e)),this.messaging.once("ready",()=>{zh.c.instance.storeMessaging(this.mockWidget,this.roomId,this.messaging),this.emit("ready"),this.themeWatcher.start(),this.themeWatcher.on(na.S.Change,this.onThemeChange),this.onThemeChange(this.themeWatcher.getEffectiveTheme())}),this.messaging.on("capabilitiesNotified",()=>this.emit("capabilitiesNotified")),this.messaging.on(`action:${gh.WidgetApiFromWidgetAction.OpenModalWidget}`,this.onOpenModal),void 0===this.roomId)?(this.messaging.setViewedRoomId(null!==(i=Do.M.instance.roomViewStore.getRoomId())&&void 0!==i?i:null),Do.M.instance.roomViewStore.on(Br.H,this.onRoomViewStoreUpdate)):this.messaging.setViewedRoomId(this.roomId);this.messaging.on(`action:${Kh.k.ViewRoom}`,e=>{var t;e.preventDefault();const n=(e.detail.data||{}).room_id;var i,s;return n?null!==(t=this.messaging)&&void 0!==t&&t.hasCapability(Nh.CanChangeViewedRoom)?(S.A.dispatch({action:H.r.ViewRoom,room_id:n,metricsTrigger:"Widget"}),void this.messaging.transport.reply(e.detail,{})):null===(s=this.messaging)||void 0===s?void 0:s.transport.reply(e.detail,{error:{message:"This widget does not have permission for this action (denied)."}}):null===(i=this.messaging)||void 0===i?void 0:i.transport.reply(e.detail,{error:{message:"Room ID not supplied."}})});for(const e of this.client.getRooms()){var s;const t=(null===(s=e.getLiveTimeline())||void 0===s?void 0:s.getEvents())||[],n=t[t.length-1];n&&(this.readUpToMap[e.roomId]=n.getId())}this.client.on(o.ClientEvent.Event,this.onEvent),this.client.on(o.MatrixEventEvent.Decrypted,this.onEventDecrypted),this.client.on(o.RoomStateEvent.Events,this.onStateUpdate),this.client.on(o.ClientEvent.ReceivedToDeviceMessage,this.onToDeviceMessage),this.messaging.on(`action:${gh.WidgetApiFromWidgetAction.UpdateAlwaysOnScreen}`,async e=>{var t,n;null!==(t=this.messaging)&&void 0!==t&&t.hasCapability(gh.MatrixCapabilities.AlwaysOnScreen)&&(e.preventDefault(),e.detail.data.value&&this.stickyPromise&&await this.stickyPromise(),k.A.instance.setWidgetPersistence(this.mockWidget.id,null!==(n=this.roomId)&&void 0!==n?n:null,e.detail.data.value),this.messaging.transport.reply(e.detail,{}))}),this.messaging.on(`action:${gh.WidgetApiFromWidgetAction.SendSticker}`,e=>{var t;null!==(t=this.messaging)&&void 0!==t&&t.hasCapability(gh.MatrixCapabilities.StickerSending)&&(e.preventDefault(),this.messaging.transport.reply(e.detail,{}),S.A.dispatch({action:"m.sticker",data:e.detail.data,widgetId:this.mockWidget.id}))}),Ih.x.STICKERPICKER.matches(this.mockWidget.type)&&this.messaging.on(`action:${Kh.k.OpenIntegrationManager}`,e=>{var t,n;e.preventDefault(),null===(t=this.messaging)||void 0===t||t.transport.reply(e.detail,{}),S.A.dispatch({action:"stickerpicker_close"});const i=e.detail.data,s=null==i?void 0:i.integType,o=null==i?void 0:i.integId,r=Do.M.instance.roomViewStore.getRoomId(),a=r?this.client.getRoom(r):void 0;a&&(null===(n=L.J.sharedInstance())||void 0===n||null===(n=n.getPrimaryManager())||void 0===n||n.open(a,`type_${s}`,o))}),Ih.x.JITSI.matches(this.mockWidget.type)&&this.messaging.on(`action:${Kh.k.HangupCall}`,e=>{var t,n;e.preventDefault(),null!==(t=e.detail.data)&&void 0!==t&&t.errorMessage&&R.Ay.createDialog(It.A,{title:(0,l._t)("widget|error_hangup_title"),description:(0,l._t)("widget|error_hangup_description",{message:e.detail.data.errorMessage})}),null===(n=this.messaging)||void 0===n||n.transport.reply(e.detail,{})})}async prepare(){var e,t;if(await(null!==(e=null===tp.c||void 0===tp.c||null===(t=tp.c.isReady)||void 0===t?void 0:t.call(tp.c))&&void 0!==e?e:Promise.resolve()),this.scalarToken)return;const n=zh.c.instance.getMessaging(this.mockWidget,this.roomId);n&&(this.messaging=n);try{if(ph.A.isScalarUrl(this.mockWidget.templateUrl)){const e=L.J.sharedInstance();if(e.hasManager()){const t=e.getPrimaryManager();if(t&&ph.A.isScalarUrl(t.apiUrl)){const e=t.getScalarClient();this.scalarToken=await e.getScalarToken()}}}}catch(e){s.vF.error("Error preparing widget communications: ",e)}}stopMessaging(e={forceDestroy:!1}){var t,n;if(null!==this.messaging&&null!==this.iframe){if(e.forceDestroy)this.iframe.src="about:blank";else if(k.A.instance.getWidgetPersistence(this.mockWidget.id,null!==(t=this.roomId)&&void 0!==t?t:null))return void s.vF.log("Skipping destroy - persistent widget");zh.c.instance.stopMessaging(this.mockWidget,this.roomId),null===(n=this.messaging)||void 0===n||n.removeAllListeners(),this.messaging=null,this.iframe=null,Do.M.instance.roomViewStore.off(Br.H,this.onRoomViewStoreUpdate),this.client.off(o.ClientEvent.Event,this.onEvent),this.client.off(o.MatrixEventEvent.Decrypted,this.onEventDecrypted),this.client.off(o.RoomStateEvent.Events,this.onStateUpdate),this.client.off(o.ClientEvent.ReceivedToDeviceMessage,this.onToDeviceMessage)}}relatesToUnknown(e){if(!e.relationEventId||e.replyEventId)return!1;const t=this.client.getRoom(e.getRoomId());return null===t||!t.findEventById(e.relationEventId)}isFromInvite(e){const t=this.client.getRoom(e.getRoomId());return(null==t?void 0:t.getMyMembership())===X.O.Invite}advanceReadUpToMarker(e){const t=e.getId();if(void 0===t)return!1;const n=e.getRoomId();if(void 0===n)return!1;const i=this.client.getRoom(n);if(null===i)return!1;const s=this.readUpToMap[e.getRoomId()];if(!s)return this.readUpToMap[n]=t,!0;if(s===t)return!1;const o=i.getLiveTimeline(),r=(0,se.PF)(o.getEvents()).reverse().slice(0,100);for(const i of r){if(i.getId()===s)return!1;if(i.getId()===e.getId())return this.readUpToMap[n]=t,!0}return!1}feedEvent(e){if(null!==this.messaging&&(this.eventsToFeed.delete(e)||this.relatesToUnknown(e)||this.isFromInvite(e)||this.advanceReadUpToMarker(e)))if(e.isBeingDecrypted()||e.isDecryptionFailure())this.eventsToFeed.add(e);else{const t=e.getEffectiveEvent();this.messaging.feedEvent(t).catch(e=>{s.vF.error("Error sending event to widget: ",e)})}}}var rp=n("./src/stores/widgets/WidgetLayoutStore.ts");function ap(){return c.Ay.get("audio_stream_url")}async function lp(e,t,n){const i=await async function(e,t){const n=await e.getOpenIdToken(),i=ap()+"/createStream",s=await window.fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({room_id:t,openid_token:n})});return(await s.json()).stream_id}(e,n);await t.transport.send(Kh.k.StartLiveStream,{rtmpStreamKey:"rtmp://audiostream.dummy/"+i})}const cp=["onFinished","app","userWidget","onDeleteClick","onEditClick","showUnpin"],dp=e=>!!ap()&&Ih.x.JITSI.matches(e.type),mp=(e,t)=>t&&ph.A.isManagedByManager(e),up=(e,t,n,i)=>{var s;const o=(0,ep.Sw)(n)&&void 0!==n.eventId&&null!==(s=D.A.getValue("allowedWidgets",t)[n.eventId])&&void 0!==s&&s||n.creatorUserId===(null==e?void 0:e.getUserId()),r=Ih.x.JITSI.matches(n.type);return!i&&!r&&o},hp=(e,t)=>!!t||e,pp=e=>D.A.getValue("enableWidgetScreenshots")&&!(null==e||!e.hasCapability(gh.MatrixCapabilities.Screenshots)),gp=(e,t,n)=>{if(!n)return[!1,!1];const i=t?rp.aK.instance.getContainerWidgets(t,rp.mc.Top):[],s=i.findIndex(t=>t.id===e.id);return[s>0,s<i.length-1]},vp=(e,t,n,i,s,o)=>{const r=i||ph.A.canUserModifyWidgets(e,null==t?void 0:t.roomId),a=zh.c.instance.getMessagingForUid(ph.A.getWidgetUid(n));return dp(n)||mp(n,r)||up(e,null==t?void 0:t.roomId,n,i)||hp(r,o)||pp(a)||gp(n,t,s).some(Boolean)},_p=e=>{let{onFinished:t,app:n,userWidget:o,onDeleteClick:r,onEditClick:a,showUnpin:c}=e,d=(0,g.A)(e,cp);const m=(0,i.useContext)(de.Ay),{room:u,roomId:h}=(0,Ji.ME)("room","roomId"),p=zh.c.instance.getMessagingForUid(ph.A.getWidgetUid(n)),v=o||ph.A.canUserModifyWidgets(m,h);let f,E,y,b,w;if(h&&dp(n)){const e=async()=>{try{await lp(m,p,h)}catch(e){s.vF.error("Failed to start livestream",e);const t=e instanceof Error?e.message:(0,l._t)("widget|error_unable_start_audio_stream_description");R.Ay.createDialog(It.A,{title:(0,l._t)("widget|error_unable_start_audio_stream_title"),description:t})}t()};f=i.createElement(Aa.R$,{onClick:e,label:(0,l._t)("widget|context_menu|start_audio_stream")})}if(mp(n,v)){const e=()=>{a?a():u&&ph.A.editWidget(u,n),t()};E=i.createElement(Aa.R$,{onClick:e,label:(0,l._t)("action|edit")})}if(pp(p)){const e=()=>{null==p||p.takeScreenshot().then(e=>{S.A.dispatch({action:"picture_snapshot",file:e.screenshot})}).catch(e=>{s.vF.error("Failed to take screenshot: ",e)}),t()};y=i.createElement(Aa.R$,{onClick:e,label:(0,l._t)("widget|context_menu|screenshot")})}if(hp(v,r)){const e=()=>{if(r)r();else if(h){const{finished:e}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("widget|context_menu|delete"),description:(0,l._t)("widget|context_menu|delete_warning"),button:(0,l._t)("widget|context_menu|delete")});e.then(([e])=>{e&&ph.A.setRoomWidget(m,h,n.id)})}t()};b=i.createElement(Aa.R$,{onClick:e,label:o?(0,l._t)("action|remove"):(0,l._t)("widget|context_menu|remove")})}if(up(m,h,n,o)){const e={approved:void 0};if(_.r.instance.invoke(vh.Z.PreLoadRequest,e,new sp(n)),!e.approved){const e=()=>{const e=(0,ep.Sw)(n)?n.eventId:void 0;s.vF.info("Revoking permission for widget to load: "+e);const i=D.A.getValue("allowedWidgets",h);void 0!==e&&(i[e]=!1);const o=D.A.firstSupportedLevel("allowedWidgets");if(!o)throw new Error("level must be defined");D.A.setValue("allowedWidgets",null!=h?h:null,o,i).catch(e=>{s.vF.error(e)}),t()};w=i.createElement(Aa.R$,{onClick:e,label:(0,l._t)("widget|context_menu|revoke")})}}const[A,C]=gp(n,u,c);let x,k;if(A){const e=()=>{if(!u)throw new Error("room must be defined");rp.aK.instance.moveWithinContainer(u,rp.mc.Top,n,-1),t()};x=i.createElement(Aa.R$,{onClick:e,label:(0,l._t)("widget|context_menu|move_left")})}if(C){const e=()=>{if(!u)throw new Error("room must be defined");rp.aK.instance.moveWithinContainer(u,rp.mc.Top,n,1),t()};k=i.createElement(Aa.R$,{onClick:e,label:(0,l._t)("widget|context_menu|move_right")})}return i.createElement(Aa.Ay,(0,Wt.A)({},d,{chevronFace:bn.t4.None,onFinished:t}),i.createElement(Aa.tx,null,f,E,w,b,y,x,k))},fp=["app","className","size"],Ep=e=>{let{app:t,className:s,size:o="20px"}=e,r=(0,g.A)(e,fp),a=[n("./res/img/element-icons/room/default_app.svg").A];return t.type.includes("jitsi")?a=[n("./res/img/element-icons/room/default_video.svg").A]:t.type.includes("meeting")||t.type.includes("calendar")?a=[n("./res/img/element-icons/room/default_cal.svg").A]:t.type.includes("pad")||t.type.includes("doc")||t.type.includes("calc")?a=[n("./res/img/element-icons/room/default_doc.svg").A]:t.type.includes("clock")&&(a=[n("./res/img/element-icons/room/default_clock.svg").A]),i.createElement(vl.A,(0,Wt.A)({},r,{role:"img",name:t.id,className:Lt()("mx_WidgetAvatar",s),url:(0,ep.Sw)(t)&&t.avatar_url?(0,gi.mediaFromMxc)(t.avatar_url).getSquareThumbnailHttp(20):null,urls:a,size:o}))};var yp=n("./res/img/external-link.svg");function bp(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 wp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bp(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bp(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class Sp extends i.Component{constructor(e,t){super(e,t),(0,w.A)(this,"contextMenuButton",(0,i.createRef)()),(0,w.A)(this,"iframeParent",null),(0,w.A)(this,"allowedWidgetsWatchRef",void 0),(0,w.A)(this,"persistKey",void 0),(0,w.A)(this,"sgWidget",void 0),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"watchUserReady",()=>{gl.V.instance.isProfileInfoFetched||gl.V.instance.once(Br.H,this.onUserReady)}),(0,w.A)(this,"onUserReady",()=>{this.setState({isUserProfileReady:!0})}),(0,w.A)(this,"hasPermissionToLoad",e=>{var t;if(this.usingLocalWidget())return!0;if(!e.room)return!0;const n={approved:void 0};if(_.r.instance.invoke(vh.Z.PreLoadRequest,n,new sp(this.props.app)),n.approved)return!0;const i=D.A.getValue("allowedWidgets",e.room.roomId);return(0,ep.Sw)(e.app)&&void 0!==e.app.eventId&&null!==(t=i[e.app.eventId])&&void 0!==t&&t||e.userId===e.creatorUserId}),(0,w.A)(this,"onMyMembership",(e,t)=>{var n;t!==X.O.Leave&&t!==X.O.Ban||e.roomId!==(null===(n=this.props.room)||void 0===n?void 0:n.roomId)||this.onUserLeftRoom()}),(0,w.A)(this,"onAllowedWidgetsChange",()=>{const e=this.hasPermissionToLoad(this.props);var t;this.state.hasPermissionToLoad&&!e&&(k.A.instance.destroyPersistentWidget(this.props.app.id,(0,ep.Sw)(this.props.app)?this.props.app.roomId:null),kh.destroyElement(this.persistKey),null===(t=this.sgWidget)||void 0===t||t.stopMessaging());this.setState({hasPermissionToLoad:e})}),(0,w.A)(this,"iframeParentRef",e=>{var t;this.unmounted||(null===(t=this.iframeParent)||void 0===t||null===(t=t.querySelector("iframe"))||void 0===t||t.remove(),this.iframeParent=e,e&&this.sgWidget?this.startMessaging():this.resetWidget(this.props))}),(0,w.A)(this,"onWidgetReady",()=>{this.setState({loading:!1})}),(0,w.A)(this,"updateRequiresClient",()=>{var e;this.setState({requiresClient:!(null===(e=this.sgWidget)||void 0===e||null===(e=e.widgetApi)||void 0===e||!e.hasCapability(Nh.RequiresClient))})}),(0,w.A)(this,"onAction",e=>{var t,n;switch(e.action){case"m.sticker":e.widgetId===this.props.app.id&&null!==(t=this.sgWidget)&&void 0!==t&&null!==(t=t.widgetApi)&&void 0!==t&&t.hasCapability(gh.MatrixCapabilities.StickerSending)?(S.A.dispatch({action:"post_sticker_message",data:wp(wp({},e.data),{},{threadId:this.props.threadId})}),S.A.dispatch({action:"stickerpicker_close"})):s.vF.warn("Ignoring sticker message. Invalid capability");break;case H.r.AfterLeaveRoom:e.room_id===(null===(n=this.props.room)||void 0===n?void 0:n.roomId)&&this.onUserLeftRoom()}}),(0,w.A)(this,"grantWidgetPermission",()=>{var e;const t=null===(e=this.props.room)||void 0===e?void 0:e.roomId,n=(0,ep.Sw)(this.props.app)?this.props.app.eventId:void 0;s.vF.info("Granting permission for widget to load: "+n);const i=D.A.getValue("allowedWidgets",t);void 0!==n&&(i[n]=!0);const o=D.A.firstSupportedLevel("allowedWidgets");D.A.setValue("allowedWidgets",null!=t?t:null,o,i).then(()=>{this.setState({hasPermissionToLoad:!0}),this.startWidget()}).catch(e=>{s.vF.error(e)})}),(0,w.A)(this,"onPopoutWidgetClick",()=>{var e;Ih.x.JITSI.matches(this.props.app.type)&&this.reload(),Object.assign(document.createElement("a"),{target:"_blank",href:null===(e=this.sgWidget)||void 0===e?void 0:e.popoutUrl,rel:"noreferrer noopener"}).click()}),(0,w.A)(this,"onToggleMaximisedClick",()=>{if(!this.props.room)return;const e=rp.aK.instance.isInContainer(this.props.room,this.props.app,rp.mc.Center)?rp.mc.Top:rp.mc.Center;rp.aK.instance.moveToContainer(this.props.room,this.props.app,e),e===rp.mc.Top&&this.closeChatCardIfNeeded()}),(0,w.A)(this,"onMinimiseClicked",()=>{this.props.room&&(rp.aK.instance.moveToContainer(this.props.room,this.props.app,rp.mc.Right),this.closeChatCardIfNeeded())}),(0,w.A)(this,"closeChatCardIfNeeded",()=>{this.props.room&&Rl.A.instance.currentCardForRoom(this.props.room.roomId).phase===kl.n.Timeline&&Rl.A.instance.popCard(this.props.room.roomId)}),(0,w.A)(this,"onContextMenuClick",()=>{this.setState({menuDisplayed:!0})}),(0,w.A)(this,"closeContextMenu",()=>{this.setState({menuDisplayed:!1})}),this.persistKey="widget_"+ph.A.getWidgetUid(this.props.app);try{this.sgWidget=new op(this.props)}catch(e){s.vF.log("Failed to construct widget",e),this.sgWidget=void 0}this.state=this.getNewState(e)}onUserLeftRoom(){k.A.instance.getWidgetPersistence(this.props.app.id,(0,ep.Sw)(this.props.app)?this.props.app.roomId:null)&&(this.props.room&&Do.M.instance.roomViewStore.getRoomId()!==this.props.room.roomId?this.endWidgetActions():Ih.x.JITSI.matches(this.props.app.type)?this.reload():k.A.instance.destroyPersistentWidget(this.props.app.id,(0,ep.Sw)(this.props.app)?this.props.app.roomId:null))}determineInitialRequiresClientState(){try{var e;const t=new sp(this.props.app),n=zh.c.instance.getMessaging(t,null===(e=this.props.room)||void 0===e?void 0:e.roomId);if(n)return n.hasCapability(Nh.RequiresClient)}catch{}return!0}getNewState(e){return{initialising:!0,loading:!this.props.waitForIframeLoad&&!kh.isMounted(this.persistKey),hasPermissionToLoad:this.hasPermissionToLoad(e),isUserProfileReady:gl.V.instance.isProfileInfoFetched,error:null,menuDisplayed:!1,requiresClient:this.determineInitialRequiresClientState(),hasContextMenuOptions:vp(this.context,this.props.room,e.app,e.userWidget,!e.userWidget,e.onDeleteClick)}}isMixedContent(){const e=window.location.protocol,t=(0,wh.Dl)(this.props.app.url).protocol;return"https:"===e&&"https:"!==t&&(s.vF.warn("Refusing to load mixed-content app:",e,t,window.location,this.props.app.url),!0)}componentDidMount(){this.unmounted=!1,this.props.miniMode||k.A.instance.dockWidget(this.props.app.id,(0,ep.Sw)(this.props.app)?this.props.app.roomId:null),this.sgWidget&&this.setupSgListeners(),this.sgWidget&&this.state.hasPermissionToLoad&&this.startWidget(),this.watchUserReady(),this.props.room&&this.context.on(o.RoomEvent.MyMembership,this.onMyMembership),this.allowedWidgetsWatchRef=D.A.watchSetting("allowedWidgets",null,this.onAllowedWidgetsChange),this.dispatcherRef=S.A.register(this.onAction)}componentWillUnmount(){this.unmounted=!0,this.props.miniMode||k.A.instance.undockWidget(this.props.app.id,(0,ep.Sw)(this.props.app)?this.props.app.roomId:null),k.A.instance.isLive(this.props.app.id,(0,ep.Sw)(this.props.app)?this.props.app.roomId:null)||this.endWidgetActions(),S.A.unregister(this.dispatcherRef),this.props.room&&this.context.off(o.RoomEvent.MyMembership,this.onMyMembership),D.A.unwatchSetting(this.allowedWidgetsWatchRef),gl.V.instance.removeListener(Br.H,this.onUserReady)}setupSgListeners(){var e,t,n;null===(e=this.sgWidget)||void 0===e||e.on("ready",this.onWidgetReady),null===(t=this.sgWidget)||void 0===t||t.on("error:preparing",this.updateRequiresClient),null===(n=this.sgWidget)||void 0===n||n.on("capabilitiesNotified",this.updateRequiresClient)}stopSgListeners(){var e;this.sgWidget&&(null===(e=this.sgWidget)||void 0===e||e.off("ready",this.onWidgetReady),this.sgWidget.off("error:preparing",this.updateRequiresClient),this.sgWidget.off("capabilitiesNotified",this.updateRequiresClient))}resetWidget(e){var t;null===(t=this.sgWidget)||void 0===t||t.stopMessaging(),this.stopSgListeners();try{this.sgWidget=new op(e),this.setupSgListeners(),this.startWidget()}catch(e){s.vF.error("Failed to construct widget",e),this.sgWidget=void 0}}startWidget(){var e;null===(e=this.sgWidget)||void 0===e||e.prepare().then(()=>{this.unmounted||this.setState({initialising:!1})})}startMessaging(){const e=document.createElement("iframe");e.title=ph.A.getWidgetName(this.props.app),e.allow="microphone; camera; encrypted-media; autoplay; display-capture; clipboard-write; clipboard-read;",e.src=this.sgWidget.embedUrl,e.allowFullscreen=!0,e.sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-presentation allow-downloads",this.iframeParent.appendChild(e),requestAnimationFrame(()=>{if(null!==e.parentElement)try{var t;null===(t=this.sgWidget)||void 0===t||t.startMessaging(e)}catch(e){s.vF.error("Failed to start widget",e)}})}componentDidUpdate(e){e.app.url!==this.props.app.url&&(this.getNewState(this.props),this.state.hasPermissionToLoad&&this.resetWidget(this.props))}endWidgetActions(){var e;Ih.x.JITSI.matches(this.props.app.type)&&this.props.room&&Rt.Ay.instance.hangupCallApp(this.props.room.roomId),kh.destroyElement(this.persistKey),k.A.instance.destroyPersistentWidget(this.props.app.id,(0,ep.Sw)(this.props.app)?this.props.app.roomId:null),null===(e=this.sgWidget)||void 0===e||e.stopMessaging({forceDestroy:!0})}formatAppTileName(){let e="No name";return this.props.app.name&&this.props.app.name.trim()&&(e=this.props.app.name.trim()),e}usingLocalWidget(){return Ih.x.JITSI.matches(this.props.app.type)}getTileTitle(){const e=this.formatAppTileName(),t=i.createElement("span",null," - ");let n="";return this.props.widgetPageTitle&&this.props.widgetPageTitle!==this.formatAppTileName()&&(n=this.props.widgetPageTitle),i.createElement("span",null,i.createElement(Ep,{app:this.props.app,size:"20px"}),i.createElement("h1",null,e),i.createElement("span",null,n?t:"",n))}reload(){var e;this.endWidgetActions(),this.resetWidget(this.props),null===(e=this.iframeParent)||void 0===e||null===(e=e.querySelector("iframe"))||void 0===e||e.remove()}render(){let e;const t=Lt()({mx_AppTileBody:!0,"mx_AppTileBody--large":!this.props.miniMode,"mx_AppTileBody--mini":this.props.miniMode,"mx_AppTileBody--loading":this.state.loading,"mx_AppTileBody--call":this.props.app.type===Ih.x.CALL.preferred}),n={};this.props.pointerEvents&&(n.pointerEvents=this.props.pointerEvents);const s=i.createElement("div",{className:"mx_AppTileBody_fadeInSpinner"},i.createElement(ce.A,{message:(0,l._t)("common|loading")}));if(null===this.sgWidget)e=i.createElement("div",{className:t,style:n},i.createElement(xh,{errorMsg:(0,l._t)("widget|error_loading")}));else if(!this.state.hasPermissionToLoad&&this.props.room&&this.sgWidget){const s=this.context.isRoomEncrypted(this.props.room.roomId);e=i.createElement("div",{className:t,style:n},i.createElement(Ah,{roomId:this.props.room.roomId,creatorUserId:this.props.creatorUserId,url:this.sgWidget.embedUrl,isRoomEncrypted:s,onPermissionGranted:this.grantWidgetPermission}))}else if(this.state.initialising||!this.state.isUserProfileReady)e=i.createElement("div",{className:t,style:n},s);else if(this.isMixedContent())e=i.createElement("div",{className:t,style:n},i.createElement(xh,{errorMsg:(0,l._t)("widget|error_mixed_content")}));else if(this.sgWidget&&(e=i.createElement(i.Fragment,null,i.createElement("div",{className:t,style:n,ref:this.iframeParentRef},this.state.loading&&s),this.props.overlay),!this.props.userWidget)){const t=101;e=i.createElement("div",{className:"mx_AppTile_persistedWrapper"},i.createElement(kh,{zIndex:this.props.miniMode?t:9,persistKey:this.persistKey,moveRef:this.props.movePersistedElement},e))}let o,r;o=this.props.miniMode?{mx_AppTile_mini:!0}:this.props.fullWidth?{mx_AppTileFullWidth:!0}:{mx_AppTile:!0},o=Lt()(o),this.state.menuDisplayed&&(r=i.createElement(_p,(0,Wt.A)({},(0,bn.qv)(this.contextMenuButton.current.getBoundingClientRect()),{app:this.props.app,onFinished:this.closeContextMenu,showUnpin:!this.props.userWidget,userWidget:this.props.userWidget,onEditClick:this.props.onEditClick,onDeleteClick:this.props.onDeleteClick})));const a=[];if(this.props.showLayoutButtons){const e=this.props.room&&rp.aK.instance.isInContainer(this.props.room,this.props.app,rp.mc.Center);a.push(i.createElement(le.A,{key:"toggleMaximised",className:"mx_AppTileMenuBar_widgets_button",title:e?(0,l._t)("widget|unmaximise"):(0,l._t)("action|maximise"),onClick:this.onToggleMaximisedClick},e?i.createElement(_h.A,{className:"mx_Icon mx_Icon_12"}):i.createElement(fh.A,{className:"mx_Icon mx_Icon_12"}))),a.push(i.createElement(le.A,{key:"minimise",className:"mx_AppTileMenuBar_widgets_button",title:(0,l._t)("action|minimise"),onClick:this.onMinimiseClicked},i.createElement(Eh.A,{className:"mx_Icon mx_Icon_16"})))}return i.createElement(i.Fragment,null,i.createElement("div",{className:o,id:this.props.app.id},this.props.showMenubar&&i.createElement("div",{className:"mx_AppTileMenuBar"},i.createElement("span",{className:"mx_AppTileMenuBar_title",style:{pointerEvents:this.props.handleMinimisePointerEvents?"all":"none"}},this.props.showTitle&&this.getTileTitle()),i.createElement("span",{className:"mx_AppTileMenuBar_widgets"},a,this.props.showPopout&&!this.state.requiresClient&&i.createElement(le.A,{className:"mx_AppTileMenuBar_widgets_button",title:(0,l._t)("widget|popout"),onClick:this.onPopoutWidgetClick},i.createElement(yp.I,{className:"mx_Icon mx_Icon_12 mx_Icon--stroke"})),this.state.hasContextMenuOptions&&i.createElement(bn.VJ,{className:"mx_AppTileMenuBar_widgets_button",label:(0,l._t)("common|options"),isExpanded:this.state.menuDisplayed,ref:this.contextMenuButton,onClick:this.onContextMenuClick},i.createElement(xn.A,{className:"mx_Icon mx_Icon_12"})))),e),r)}}(0,w.A)(Sp,"contextType",de.Ay),(0,w.A)(Sp,"defaultProps",{waitForIframeLoad:!0,showMenubar:!0,showTitle:!0,showPopout:!0,handleMinimisePointerEvents:!1,userWidget:!1,miniMode:!1,threadId:null,showLayoutButtons:!0});const Ap=({room:e,widgetId:t,onClose:n})=>{const s=(0,i.useContext)(de.Ay),o=(0,ph.X)(e).find(e=>e.id===t),r=o&&rp.aK.instance.isInContainer(e,o,rp.mc.Right),[a,c,d,m]=(0,bn.EF)();if((0,i.useEffect)(()=>{o&&r||Rl.A.instance.popCard()},[o,r]),!o||!r)return null;let u;if(a){var h;const e=null===(h=c.current)||void 0===h?void 0:h.getBoundingClientRect(),t=e?e.right:0,n=e?e.bottom:0;u=i.createElement(_p,{chevronFace:bn.t4.None,right:ba.A.instance.windowWidth-t-12,top:n+12,onFinished:m,app:o})}const p=i.createElement("div",{className:"mx_BaseCard_header_title"},i.createElement(bh.A,{size:"4",className:"mx_BaseCard_header_title_heading",as:"h1"},ph.A.getWidgetName(o)),i.createElement(bn.VJ,{className:"mx_BaseCard_header_title_button--option",ref:c,onClick:d,isExpanded:a,label:(0,l._t)("common|options")}),u);return i.createElement(Rm.A,{header:p,className:"mx_WidgetCard",onClose:n,withoutScrollContainer:!0},i.createElement(Sp,{app:o,fullWidth:!0,showMenubar:!1,room:e,userId:s.getSafeUserId(),creatorUserId:o.creatorUserId,widgetPageTitle:ph.A.getWidgetDataTitle(o),waitForIframeLoad:o.waitForIframeLoad}))};var Cp=n("./src/components/views/right_panel/UserInfo.tsx");class xp extends i.Component{constructor(e){var t,n,i,r;super(e),(0,w.A)(this,"room",void 0),(0,w.A)(this,"onRoomStateEvents",e=>{if(e.getType()===o.EventType.RoomThirdPartyInvite&&e.getStateKey()===this.state.stateKey){const t=e.getContent().display_name,n={invited:(0,Lr.Qo)(e)};t&&(n.displayName=t),this.setState(n)}}),(0,w.A)(this,"onCancel",()=>{S.A.dispatch({action:H.r.View3pidInvite,event:null})}),(0,w.A)(this,"onKickClick",()=>{v.J.safeGet().sendStateEvent(this.state.roomId,o.EventType.RoomThirdPartyInvite,{},this.state.stateKey).catch(e=>{s.vF.error(e),this.setState({invited:!0}),R.Ay.createDialog(It.A,{title:(0,l._t)("user_info|error_revoke_3pid_invite_title"),description:(0,l._t)("user_info|error_revoke_3pid_invite_description")})}),this.setState({invited:!1})}),this.room=v.J.safeGet().getRoom(this.props.event.getRoomId());const a=null===(t=this.room)||void 0===t?void 0:t.getMember(v.J.safeGet().getSafeUserId()),c=null===(n=this.room)||void 0===n?void 0:n.currentState.getStateEvents("m.room.power_levels",""),d=this.props.event.getSender();let m=c?c.getContent().kick:50;"number"!=typeof m&&(m=50);const u=null===(i=this.room)||void 0===i?void 0:i.getMember(d);this.state={stateKey:this.props.event.getStateKey(),roomId:this.props.event.getRoomId(),displayName:this.props.event.getContent().display_name,invited:!0,canKick:!!a&&a.powerLevel>m,senderName:null!==(r=null==u?void 0:u.name)&&void 0!==r?r:d}}componentDidMount(){v.J.safeGet().on(o.RoomStateEvent.Events,this.onRoomStateEvents)}componentWillUnmount(){const e=v.J.get();e&&e.removeListener(o.RoomStateEvent.Events,this.onRoomStateEvents)}render(){let e;return this.state.canKick&&this.state.invited&&(e=i.createElement(we.s,{direction:"column",as:"section",justify:"start",gap:"var(--cpd-space-2x)"},i.createElement(Al.E,{as:"span",role:"heading",size:"lg",weight:"semibold"},(0,l._t)("user_info|admin_tools_section")),i.createElement(Y.$,{size:"sm",kind:"destructive",className:"mx_MemberInfo_field",onClick:this.onKickClick},(0,l._t)("user_info|revoke_invite")))),i.createElement(Rm.A,{onClose:this.props.onClose,header:(0,l._t)("common|profile")},i.createElement(we.s,{className:"mx_ThirdPartyMemberInfo",direction:"column",gap:"var(--cpd-space-4x)"},i.createElement(we.s,{direction:"column",as:"section",justify:"start",gap:"var(--cpd-space-2x)"},i.createElement(Al.E,{as:"span",role:"heading",size:"lg",weight:"semibold"},this.state.displayName),i.createElement(Al.E,{as:"span"},(0,l._t)("user_info|invited_by",{sender:this.state.senderName}))),e))}}let Rp=function(e){return e[e.Files=0]="Files",e[e.Search=1]="Search",e}({});function kp({isRoomEncrypted:e,kind:t,showLogo:n=!0}){if(!e)return i.createElement(i.Fragment,null);if(f.A.get())return i.createElement(i.Fragment,null);if(f.A.error)return i.createElement("div",{className:"mx_SearchWarning"},(0,l._t)("seshat|error_initialising",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:e=>{e.preventDefault(),S.A.dispatch({action:H.r.ViewUserSettings,initialTabId:Te.v.Security})}},e)}));const o=c.Ay.get("brand"),r=c.Ay.getObject("desktop_builds");let a,d;if(null!=r&&r.get("available")){d=i.createElement("img",{alt:"",src:r.get("logo"),width:"32px"});const e=r.get("url");switch(t){case Rp.Files:a=(0,l._t)("seshat|warning_kind_files_app",{},{a:t=>i.createElement("a",{href:e,target:"_blank",rel:"noreferrer noopener"},t)});break;case Rp.Search:a=(0,l._t)("seshat|warning_kind_search_app",{},{a:t=>i.createElement("a",{href:e,target:"_blank",rel:"noreferrer noopener"},t)})}}else switch(t){case Rp.Files:a=(0,l._t)("seshat|warning_kind_files",{brand:o});break;case Rp.Search:a=(0,l._t)("seshat|warning_kind_search",{brand:o})}return a?i.createElement("div",{className:"mx_SearchWarning"},n?d:null,i.createElement("span",null,a)):(s.vF.warn("Unknown desktop builds warning kind: ",t),i.createElement(i.Fragment,null))}var Ip=n("./src/components/structures/LegacyCallEventGrouper.ts");const Tp=(...e)=>{D.A.getValue("debug_timeline_panel")&&s.vF.log.call(console,"TimelinePanel debuglog:",...e)};class Pp extends i.Component{constructor(e,t){if(super(e,t),(0,w.A)(this,"lastRRSentEventId",void 0),(0,w.A)(this,"lastRMSentEventId",void 0),(0,w.A)(this,"messagePanel",(0,i.createRef)()),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"timelineWindow",void 0),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"readReceiptActivityTimer",null),(0,w.A)(this,"readMarkerActivityTimer",null),(0,w.A)(this,"callEventGroupers",new Map),(0,w.A)(this,"initialReadMarkerId",null),(0,w.A)(this,"onDumpDebugLogs",()=>{var e,t,n,i,r,a;const l=null===(e=this.props.timelineSet)||void 0===e?void 0:e.room,c=null===(t=this.state)||void 0===t||null===(t=t.events)||void 0===t?void 0:t.map(e=>e.getId());let d,m,u;try{const e=this.messagePanelDiv;if(e){d=[...e.querySelectorAll("[data-event-id]")].map(e=>e.getAttribute("data-event-id"))}}catch(e){s.vF.error("onDumpDebugLogs: Failed to get the actual event ID's in the DOM",e)}const h={};if(l){const e=l.getTimelineSets(),t=l.threadsTimelineSets;try{m=Np(e),u=Np(t)}catch(e){s.vF.error("onDumpDebugLogs: Failed to serialize event IDs from timelinesets",e)}try{l.getThreads().forEach(e=>{var t,n;h[e.id]={events:e.events.map(e=>e.getId()),numTimelines:e.timelineSet.getTimelines().length,liveTimeline:e.timelineSet.getLiveTimeline().getEvents().length,prevTimeline:null===(t=e.timelineSet.getLiveTimeline().getNeighbouringTimeline(o.Direction.Backward))||void 0===t?void 0:t.getEvents().length,nextTimeline:null===(n=e.timelineSet.getLiveTimeline().getNeighbouringTimeline(o.Direction.Forward))||void 0===n?void 0:n.getEvents().length}})}catch(e){s.vF.error("onDumpDebugLogs: Failed to serialize event IDs from the threads",e)}}let p,g;try{var v;p=null===(v=this.timelineWindow)||void 0===v?void 0:v.getEvents().map(e=>e.getId())}catch(e){s.vF.error("onDumpDebugLogs: Failed to get event IDs from the timelineWindow",e)}try{g=this.props.timelineSet.getPendingEvents().map(e=>e.getId())}catch(e){s.vF.error("onDumpDebugLogs: Failed to get pending event IDs",e)}s.vF.debug(`TimelinePanel(${this.context.timelineRenderingType}): Debugging info for ${null==l?void 0:l.roomId}\n\tevents(${c.length})=${JSON.stringify(c)}\n\trenderedEventIds(${null!==(n=null===(i=d)||void 0===i?void 0:i.length)&&void 0!==n?n:0})=${JSON.stringify(d)}\n\tserializedEventIdsFromTimelineSets=${JSON.stringify(m)}\n\tserializedEventIdsFromThreadsTimelineSets=${JSON.stringify(u)}\n\tserializedThreadsMap=${JSON.stringify(h)}\n\ttimelineWindowEventIds(${null===(r=p)||void 0===r?void 0:r.length})=${JSON.stringify(p)}\n\tpendingEventIds(${null===(a=g)||void 0===a?void 0:a.length})=${JSON.stringify(g)}`)}),(0,w.A)(this,"onMessageListUnfillRequest",(e,t)=>{const n=e?o.EventTimeline.BACKWARDS:o.EventTimeline.FORWARDS;Tp("unpaginating events in direction",n);const i=t,s=this.timelineWindow.getEvents(),r=s.findIndex(e=>e.getId()===i);let a;a=-1===r?0:e?r+1:s.length-r,a>0&&(Tp("Unpaginating",a,"in direction",n),this.timelineWindow.unpaginate(a,e));const{events:l,liveEvents:c}=this.getEvents();this.buildLegacyCallEventGroupers(l),this.setState({events:l,liveEvents:c}),e?this.setState({canBackPaginate:!0}):this.setState({canForwardPaginate:!0})}),(0,w.A)(this,"onPaginationRequest",(e,t,n)=>this.props.onPaginationRequest?this.props.onPaginationRequest(e,t,n):e.paginate(t,n)),(0,w.A)(this,"onMessageListFillRequest",e=>{var t;if(!this.shouldPaginate())return Promise.resolve(!1);const n=e?o.EventTimeline.BACKWARDS:o.EventTimeline.FORWARDS,i=e?"canBackPaginate":"canForwardPaginate",s=e?"backPaginating":"forwardPaginating";return this.state[i]?null!==(t=this.timelineWindow)&&void 0!==t&&t.canPaginate(n)?(Tp("Initiating paginate; backwards:"+e),this.setState({[s]:!0}),this.onPaginationRequest(this.timelineWindow,n,50).then(async t=>{var n;if(this.unmounted)return!1;Tp("paginate complete backwards:"+e+"; success:"+t);const{events:r,liveEvents:a}=this.getEvents();this.buildLegacyCallEventGroupers(r);const l={[s]:!1,[i]:t,events:r,liveEvents:a},c=e?o.EventTimeline.FORWARDS:o.EventTimeline.BACKWARDS,d=e?"canForwardPaginate":"canBackPaginate";return!this.state[d]&&null!==(n=this.timelineWindow)&&void 0!==n&&n.canPaginate(c)&&(Tp("can now",c,"paginate again"),l[d]=!0),new Promise(e=>{this.setState(l,()=>{e(t)})})})):(Tp("can't",n,"paginate any further"),this.setState({[i]:!1}),Promise.resolve(!1)):(Tp("have given up",n,"paginating this timeline"),Promise.resolve(!1))}),(0,w.A)(this,"onMessageListScroll",e=>{var t,n;null===(t=(n=this.props).onScroll)||void 0===t||t.call(n,e),this.props.manageReadMarkers&&this.doManageReadMarkers()}),(0,w.A)(this,"doManageReadMarkers",(0,Kt.debounce)(()=>{var e;const t=this.getReadMarkerPosition();if(null===t)return;t<0&&this.setState({readMarkerVisible:!0});const n=this.readMarkerTimeout(t);null===(e=this.readMarkerActivityTimer)||void 0===e||e.changeTimeout(n)},100,{leading:!1,trailing:!0})),(0,w.A)(this,"onAction",e=>{switch(e.action){case"ignore_state_changed":this.forceUpdate();break;case H.r.DumpDebugLogs:this.onDumpDebugLogs()}}),(0,w.A)(this,"onRoomTimeline",(e,t,n,i,s)=>{var r,a;s.timeline.getTimelineSet()===this.props.timelineSet&&(o.Thread.hasServerSideSupport||this.context.timelineRenderingType!==gn.Ae.Thread||(n&&!this.state.canBackPaginate&&this.setState({canBackPaginate:!0}),n||this.state.canForwardPaginate||this.setState({canForwardPaginate:!0})),!n&&s&&s.liveEvent&&null!==(r=this.messagePanel.current)&&void 0!==r&&r.getScrollState()&&(null!==(a=this.messagePanel.current.getScrollState())&&void 0!==a&&a.stuckAtBottom?this.timelineWindow.paginate(o.EventTimeline.FORWARDS,1,!1).then(()=>{if(this.unmounted)return;const{events:t,liveEvents:n}=this.getEvents();this.buildLegacyCallEventGroupers(t);const i=n[n.length-1],s={events:t,liveEvents:n};let o=!1;if(this.props.manageReadMarkers){const t=v.J.safeGet().credentials.userId;if(o=!1,e.getSender()===t||b.A.sharedInstance().userActiveRecently()){if(i&&0===this.getReadMarkerPosition()){var r;this.setReadMarker(null!==(r=i.getId())&&void 0!==r?r:null,i.getTs(),!0),s.readMarkerVisible=!1,s.readMarkerEventId=i.getId(),o=!0}}else s.readMarkerVisible=!0}this.setState(s,()=>{var e,t,n;(null===(e=this.messagePanel.current)||void 0===e||e.updateTimelineMinHeight(),o)&&(null===(t=(n=this.props).onReadMarkerUpdated)||void 0===t||t.call(n))})}):this.setState({canForwardPaginate:!0})))}),(0,w.A)(this,"onRoomTimelineReset",(e,t)=>{t===this.props.timelineSet&&this.canResetTimeline()&&this.loadTimeline()}),(0,w.A)(this,"canResetTimeline",()=>{var e;return!0===(null===(e=this.messagePanel)||void 0===e||null===(e=e.current)||void 0===e?void 0:e.isAtBottom())}),(0,w.A)(this,"onRoomRedaction",(e,t)=>{this.unmounted||this.hasTimelineSetFor(t.roomId)&&this.forceUpdate()}),(0,w.A)(this,"onThreadUpdate",e=>{var t;if(this.unmounted)return;if(!this.hasTimelineSetFor(e.roomId))return;const n=null===(t=this.messagePanel.current)||void 0===t?void 0:t.getTileForEventId(e.id);n&&n.forceUpdate()}),(0,w.A)(this,"onEventVisibilityChange",e=>{var t;if(this.unmounted)return;if(!this.hasTimelineSetFor(e.getRoomId()))return;const n=null===(t=this.messagePanel.current)||void 0===t?void 0:t.getTileForEventId(e.getId());n&&n.forceUpdate()}),(0,w.A)(this,"onVisibilityPowerLevelChange",(e,t)=>{var n;if(!this.unmounted&&this.hasTimelineSetFor(t.roomId)&&t.userId==(null===(n=v.J.safeGet().credentials)||void 0===n?void 0:n.userId)){for(const e of this.state.events){var i;const t=null===(i=this.messagePanel.current)||void 0===i?void 0:i.getTileForEventId(e.getId());t&&t.forceUpdate()}this.forceUpdate()}}),(0,w.A)(this,"onEventReplaced",e=>{this.unmounted||this.hasTimelineSetFor(e.getRoomId())&&this.forceUpdate()}),(0,w.A)(this,"onRoomReceipt",(e,t)=>{this.unmounted||t===this.props.timelineSet.room&&this.forceUpdate()}),(0,w.A)(this,"onLocalEchoUpdated",(e,t,n)=>{this.unmounted||this.hasTimelineSetFor(t.roomId)&&this.reloadEvents()}),(0,w.A)(this,"onAccountData",(e,t)=>{this.unmounted||t===this.props.timelineSet.room&&e.getType()===o.EventType.FullyRead&&this.setState({readMarkerEventId:e.getContent().event_id},this.props.onReadMarkerUpdated)}),(0,w.A)(this,"onEventDecrypted",e=>{this.props.timelineSet.room&&this.hasTimelineSetFor(e.getRoomId())&&this.state.events.includes(e)&&(this.buildLegacyCallEventGroupers(this.state.events),this.forceUpdate())}),(0,w.A)(this,"onSync",(e,t,n)=>{this.unmounted||this.setState({clientSyncState:e})}),(0,w.A)(this,"sendReadReceipts",async()=>{var e,t;if(D.A.getValue("lowBandwidth"))return;if(!this.messagePanel.current)return;if(!this.props.manageReadReceipts)return;const n=v.J.get();if(!n||n.isGuest())return;const i=this.getCurrentReadReceipt(!0),s=this.indexForEventId(i),o=this.getLastDisplayedEventIndex({ignoreOwn:!0}),r=null!==(e=this.state.events[null!=o?o:this.state.events.length-1])&&void 0!==e?e:null,a=this.shouldSendReadReceipt(i,s,r,o),l=this.state.readMarkerEventId,c=this.shouldSendFullyReadMarker(l),d=null===(t=this.props.timelineSet.room)||void 0===t?void 0:t.roomId;Tp(`Sending Read Markers for ${d}: `,{shouldSendReadReceipt:a,shouldSendFullyReadMarker:c,currentReadReceiptEventId:i,currentReadReceiptEventIndex:s,lastReadEventId:null==r?void 0:r.getId(),lastReadEventIndex:o,readMarkerEventId:this.state.readMarkerEventId});const m=[];if(a&&m.push(this.sendReadReceipt(n,r)),c){this.props.timelineSet.findEventById(l)&&m.push(this.sendFullyReadMarker(n,null!=d?d:"",l))}await Promise.all(m)}),(0,w.A)(this,"updateReadMarker",async()=>{if(!this.props.manageReadMarkers)return;if(1===this.getReadMarkerPosition())return;const e=this.getLastDisplayedEventIndex({allowPartial:!0});if(null===e)return;const t=this.state.events[e];await this.setReadMarker(t.getId(),t.getTs()),this.state.readMarkerVisible&&this.setState({readMarkerVisible:!1}),await this.sendReadReceipts()}),(0,w.A)(this,"jumpToLiveTimeline",()=>{var e,t;null!==(e=this.timelineWindow)&&void 0!==e&&e.canPaginate(o.EventTimeline.FORWARDS)?this.loadTimeline():null===(t=this.messagePanel.current)||void 0===t||t.scrollToBottom()}),(0,w.A)(this,"scrollToEventIfNeeded",e=>{var t;null===(t=this.messagePanel.current)||void 0===t||t.scrollToEventIfNeeded(e)}),(0,w.A)(this,"jumpToReadMarker",()=>{if(!this.props.manageReadMarkers)return;if(!this.messagePanel.current)return;if(!this.state.readMarkerEventId)return;null===this.messagePanel.current.getReadMarkerPosition()?this.loadTimeline(this.state.readMarkerEventId,0,1/3):this.messagePanel.current.scrollToEvent(this.state.readMarkerEventId,0,1/3)}),(0,w.A)(this,"forgetReadMarker",async()=>{if(!this.props.manageReadMarkers)return;const e=this.getCurrentReadReceipt(),t=this.props.timelineSet.getTimelineForEvent(null!=e?e:"");let n;if(t){const i=t.getEvents().find(t=>t.getId()==e);i&&(n=i.getTs())}await this.setReadMarker(e,n),await this.sendReadReceipts()}),(0,w.A)(this,"isAtEndOfLiveTimeline",()=>{var e;return(null===(e=this.messagePanel.current)||void 0===e?void 0:e.isAtBottom())&&this.timelineWindow&&!this.timelineWindow.canPaginate(o.EventTimeline.FORWARDS)}),(0,w.A)(this,"getScrollState",()=>this.messagePanel.current?this.messagePanel.current.getScrollState():null),(0,w.A)(this,"getReadMarkerPosition",()=>{if(!this.props.manageReadMarkers)return null;if(!this.messagePanel.current)return null;if(!this.props.timelineSet.room)return null;const e=this.messagePanel.current.getReadMarkerPosition();if(null!==e)return e;const t=Pp.roomReadMarkerTsMap[this.props.timelineSet.room.roomId];return t&&this.state.events.length>0?t<this.state.events[0].getTs()?-1:1:null}),(0,w.A)(this,"canJumpToReadMarker",()=>{const e=this.getReadMarkerPosition();return null!==this.state.readMarkerEventId&&(null===e||e<0)}),(0,w.A)(this,"handleScrollKey",e=>{if(!this.messagePanel.current)return;(0,Us.zM)().getRoomAction(e)===si.bY.JumpToLatestMessage?this.jumpToLiveTimeline():this.messagePanel.current.handleScrollKey(e)}),(0,w.A)(this,"getRelationsForEvent",(e,t,n)=>{var i;return null===(i=this.props.timelineSet.relations)||void 0===i?void 0:i.getChildEventsForEvent(e,t,n)}),Tp("mounting"),this.props.manageReadMarkers){var n;const e=null===(n=this.props.timelineSet.room)||void 0===n?void 0:n.getAccountData("m.fully_read");this.initialReadMarkerId=e?e.getContent().event_id:this.getCurrentReadReceipt()}this.state={events:[],liveEvents:[],timelineLoading:!0,canBackPaginate:!1,canForwardPaginate:!1,readMarkerVisible:!0,readMarkerEventId:this.initialReadMarkerId,backPaginating:!1,forwardPaginating:!1,clientSyncState:v.J.safeGet().getSyncState(),isTwelveHour:D.A.getValue("showTwelveHourTimestamps"),alwaysShowTimestamps:D.A.getValue("alwaysShowTimestamps"),readMarkerInViewThresholdMs:D.A.getValue("readMarkerInViewThresholdMs"),readMarkerOutOfViewThresholdMs:D.A.getValue("readMarkerOutOfViewThresholdMs")}}componentDidMount(){var e;this.unmounted=!1,this.dispatcherRef=S.A.register(this.onAction);const t=v.J.safeGet();t.on(o.RoomEvent.Timeline,this.onRoomTimeline),t.on(o.RoomEvent.TimelineReset,this.onRoomTimelineReset),t.on(o.RoomEvent.Redaction,this.onRoomRedaction),D.A.getValue("feature_msc3531_hide_messages_pending_moderation")&&(t.on(o.MatrixEventEvent.VisibilityChange,this.onEventVisibilityChange),t.on(o.RoomMemberEvent.PowerLevel,this.onVisibilityPowerLevelChange)),t.on(o.RoomEvent.RedactionCancelled,this.onRoomRedaction),t.on(o.RoomEvent.Receipt,this.onRoomReceipt),t.on(o.RoomEvent.LocalEchoUpdated,this.onLocalEchoUpdated),t.on(o.RoomEvent.AccountData,this.onAccountData),t.on(o.MatrixEventEvent.Decrypted,this.onEventDecrypted),t.on(o.MatrixEventEvent.Replaced,this.onEventReplaced),t.on(o.ClientEvent.Sync,this.onSync),null===(e=this.props.timelineSet.room)||void 0===e||e.on(o.ThreadEvent.Update,this.onThreadUpdate),this.props.manageReadReceipts&&this.updateReadReceiptOnUserActivity(),this.props.manageReadMarkers&&this.updateReadMarkerOnUserActivity(),this.initTimeline(this.props)}componentDidUpdate(e){var t,n;e.timelineSet!==this.props.timelineSet&&s.vF.warn("Replacing timelineSet on a TimelinePanel - confusion may ensue"),null===(t=this.props.timelineSet.room)||void 0===t||t.off(o.ThreadEvent.Update,this.onThreadUpdate),null===(n=this.props.timelineSet.room)||void 0===n||n.on(o.ThreadEvent.Update,this.onThreadUpdate);const i=e.eventId!=this.props.eventId,r=e.highlightedEventId!=this.props.highlightedEventId,a=e.eventScrollIntoView&&!this.props.eventScrollIntoView;(i||r||a)&&(s.vF.log(`TimelinePanel switching to eventId ${this.props.eventId} (was ${e.eventId}), scrollIntoView: ${this.props.eventScrollIntoView} (was ${e.eventScrollIntoView})`),this.initTimeline(this.props))}componentWillUnmount(){this.unmounted=!0,this.readReceiptActivityTimer&&(this.readReceiptActivityTimer.abort(),this.readReceiptActivityTimer=null),this.readMarkerActivityTimer&&(this.readMarkerActivityTimer.abort(),this.readMarkerActivityTimer=null),S.A.unregister(this.dispatcherRef);const e=v.J.get();var t;e&&(e.removeListener(o.RoomEvent.Timeline,this.onRoomTimeline),e.removeListener(o.RoomEvent.TimelineReset,this.onRoomTimelineReset),e.removeListener(o.RoomEvent.Redaction,this.onRoomRedaction),e.removeListener(o.RoomEvent.RedactionCancelled,this.onRoomRedaction),e.removeListener(o.RoomEvent.Receipt,this.onRoomReceipt),e.removeListener(o.RoomEvent.LocalEchoUpdated,this.onLocalEchoUpdated),e.removeListener(o.RoomEvent.AccountData,this.onAccountData),e.removeListener(o.RoomMemberEvent.PowerLevel,this.onVisibilityPowerLevelChange),e.removeListener(o.MatrixEventEvent.Decrypted,this.onEventDecrypted),e.removeListener(o.MatrixEventEvent.Replaced,this.onEventReplaced),e.removeListener(o.MatrixEventEvent.VisibilityChange,this.onEventVisibilityChange),e.removeListener(o.ClientEvent.Sync,this.onSync),null===(t=this.props.timelineSet.room)||void 0===t||t.removeListener(o.ThreadEvent.Update,this.onThreadUpdate))}get messagePanelDiv(){var e,t;return null!==(e=null===(t=this.messagePanel.current)||void 0===t||null===(t=t.scrollPanel.current)||void 0===t?void 0:t.divScroll)&&void 0!==e?e:null}hasTimelineSetFor(e){var t;return void 0!==e&&e===(null===(t=this.props.timelineSet.room)||void 0===t?void 0:t.roomId)}readMarkerTimeout(e){var t,n,i,s;return 0===e?null!==(t=null===(n=this.context)||void 0===n?void 0:n.readMarkerInViewThresholdMs)&&void 0!==t?t:this.state.readMarkerInViewThresholdMs:null!==(i=null===(s=this.context)||void 0===s?void 0:s.readMarkerOutOfViewThresholdMs)&&void 0!==i?i:this.state.readMarkerOutOfViewThresholdMs}async updateReadMarkerOnUserActivity(){const e=this.readMarkerTimeout(this.getReadMarkerPosition());for(this.readMarkerActivityTimer=new A.A(e);this.readMarkerActivityTimer;){b.A.sharedInstance().timeWhileActiveRecently(this.readMarkerActivityTimer);try{await this.readMarkerActivityTimer.finished()}catch{continue}await this.updateReadMarker()}}async updateReadReceiptOnUserActivity(){for(this.readReceiptActivityTimer=new A.A(500);this.readReceiptActivityTimer;){b.A.sharedInstance().timeWhileActiveNow(this.readReceiptActivityTimer);try{await this.readReceiptActivityTimer.finished()}catch{continue}await this.sendReadReceipts()}}async determineReceiptType(e){var t,n;const i=null!==(t=null===(n=this.props.timelineSet.room)||void 0===n?void 0:n.roomId)&&void 0!==t?t:null;return D.A.getValue("sendReadReceipts",i)?o.ReceiptType.Read:await e.doesServerSupportUnstableFeature("org.matrix.msc2285.stable")||await e.isVersionSupported("v1.4")?o.ReceiptType.ReadPrivate:(s.vF.warn("Falling back to public instead of private receipts because the homeserver does not support them"),o.ReceiptType.Read)}shouldSendFullyReadMarker(e){return!!this.state.readMarkerEventId&&((!this.lastRMSentEventId||this.lastRMSentEventId!==this.state.readMarkerEventId)&&((!this.state.readMarkerEventId||this.state.readMarkerEventId!==this.initialReadMarkerId)&&!this.props.timelineSet.thread))}shouldSendReadReceipt(e,t,n,i){var s;return!!n&&((!e||null!==t||null===(s=this.timelineWindow)||void 0===s||!s.canPaginate(o.EventTimeline.FORWARDS))&&((null===i||null===t||i>t)&&(!this.lastRRSentEventId||this.lastRRSentEventId!==(null==n?void 0:n.getId()))))}async sendReadReceipt(e,t){this.lastRRSentEventId=t.getId();const n=await this.determineReceiptType(e);try{await e.sendReadReceipt(t,n)}catch(e){var i;this.lastRRSentEventId=void 0,s.vF.error("Error sending receipt",{room:null===(i=this.props.timelineSet.room)||void 0===i?void 0:i.roomId,error:e})}}async sendFullyReadMarker(e,t,n){this.lastRMSentEventId=this.state.readMarkerEventId;try{await e.setRoomReadMarkers(t,n)}catch(e){this.lastRMSentEventId=void 0,s.vF.error("Error sending fully_read",{roomId:t,error:e})}}advanceReadMarkerPastMyEvents(){if(!this.props.manageReadMarkers||!this.timelineWindow)return;const e=this.timelineWindow.getEvents();let t;for(t=0;t<e.length&&e[t].getId()!=this.state.readMarkerEventId;t++);if(t>=e.length)return;const n=v.J.safeGet().credentials.userId;for(t++;t<e.length;t++){if(e[t].getSender()!==n)break}t--;const i=e[t];this.setReadMarker(i.getId(),i.getTs())}initTimeline(e){const t=e.eventId,n=e.eventPixelOffset;let i=1;return null==n&&(i=.5),this.loadTimeline(t,n,i,e.eventScrollIntoView)}scrollIntoView(e,t,n){var i,s;const o=()=>{this.messagePanel.current&&(e?(Tp("TimelinePanel scrolling to eventId "+e+" at position "+100*n+"% + "+t),this.messagePanel.current.scrollToEvent(e,t,n)):(Tp("TimelinePanel scrolling to bottom"),this.messagePanel.current.scrollToBottom()))};Tp("TimelinePanel scheduling scroll to event"),null===(i=(s=this.props).onEventScrolledIntoView)||void 0===i||i.call(s,e),o(),window.requestAnimationFrame(()=>{o()})}loadTimeline(e,t,n,i=!0){const r=v.J.safeGet();this.timelineWindow=new o.TimelineWindow(r,this.props.timelineSet,{windowLimit:this.props.timelineCap});const a=()=>{var r,a,l,c,d;this.unmounted||(null===(r=this.messagePanel.current)||void 0===r||r.onTimelineReset(),this.reloadEvents(),this.advanceReadMarkerPastMyEvents(),this.setState({canBackPaginate:null!==(a=null===(l=this.timelineWindow)||void 0===l?void 0:l.canPaginate(o.EventTimeline.BACKWARDS))&&void 0!==a&&a,canForwardPaginate:null!==(c=null===(d=this.timelineWindow)||void 0===d?void 0:d.canPaginate(o.EventTimeline.FORWARDS))&&void 0!==c&&c,timelineLoading:!1},()=>{this.messagePanel.current?(i&&this.scrollIntoView(e,t,n),this.props.sendReadReceiptOnLoad&&this.sendReadReceipts().catch(e=>{s.vF.warn("Error sending receipts on load",e)})):s.vF.log("can't initialise scroll state because messagePanel didn't load")}))};if(this.props.timelineSet.getTimelineForEvent(e))return this.timelineWindow.load(e,30),void a();const c=this.timelineWindow.load(e,30);this.buildLegacyCallEventGroupers(),this.setState({events:[],liveEvents:[],canBackPaginate:!1,canForwardPaginate:!1,timelineLoading:!0}),c.then(a,t=>{var n;if(this.unmounted)return;let i,o;this.setState({timelineLoading:!1}),s.vF.error(`Error loading timeline panel at ${null===(n=this.props.timelineSet.room)||void 0===n?void 0:n.roomId}/${e}`,t),e&&this.props.timelineSet.room&&(i=()=>{S.A.dispatch({action:H.r.ViewRoom,room_id:this.props.timelineSet.room.roomId,metricsTrigger:void 0})}),o="M_FORBIDDEN"==t.errcode?(0,l._t)("timeline|load_error|no_permission"):(0,l._t)("timeline|load_error|unable_to_find");const{finished:r}=R.Ay.createDialog(It.A,{title:(0,l._t)("timeline|load_error|title"),description:o});i&&r.then(i)})}reloadEvents(){if(this.unmounted)return;const e=this.getEvents();this.buildLegacyCallEventGroupers(e.events),this.setState(e)}refreshTimeline(e){this.loadTimeline(e,void 0,void 0,!1),this.reloadEvents()}getEvents(){const e=this.timelineWindow.getEvents(),t=v.J.safeGet();for(let n=e.length-1;n>=0;--n)t.decryptEventIfNeeded(e[n]);const n=[...e];if(!this.timelineWindow.canPaginate(o.EventTimeline.FORWARDS)){const t=this.props.timelineSet.getPendingEvents();e.push(...t.filter(e=>{const{shouldLiveInRoom:n,threadId:i}=this.props.timelineSet.room.eventShouldLiveIn(e,t);return this.context.timelineRenderingType===gn.Ae.Thread?i===this.context.threadId:n}))}return{events:e,liveEvents:n}}indexForEventId(e){if(null===e)return null;if(this.context.timelineRenderingType===gn.Ae.Thread)return 0;const t=this.state.events.findIndex(t=>t.getId()===e);return t>-1?t:null}getLastDisplayedEventIndex(e={}){const t=e.ignoreOwn||!1,n=e.allowPartial||!1,i=this.messagePanel.current;if(!i)return null;const s=this.messagePanelDiv;if(!s)return null;const o=s.getBoundingClientRect(),r=v.J.safeGet().credentials.userId,a=e=>{if(e){const t=e.getBoundingClientRect();if(n&&t.top<=o.bottom||!n&&t.bottom<=o.bottom)return!0}return!1};let l=0;for(let e=this.state.liveEvents.length-1;e>=0;--e){var c;const n=this.state.liveEvents[e],s=i.getNodeForEventId(n.getId()),o=a(s);if(o&&0!==l)return e+l;s&&!o&&(l=0);const d=!!n.status||t&&n.getSender()===r;if(!(!(0,sn.bN)(n,v.J.safeGet(),null===(c=this.context)||void 0===c?void 0:c.showHiddenEvents)||(0,mm.A)(n,this.context))&&s){if(!d&&o)return e}else(!d||d&&0!==l)&&++l}return null}getCurrentReadReceipt(e=!1){var t,n;const i=v.J.get();if(null==i)return null;const s=i.getSafeUserId(),o=null!==(t=this.props.timelineSet.thread)&&void 0!==t?t:this.props.timelineSet.room;return null!==(n=null==o?void 0:o.getEventReadUpTo(s,e))&&void 0!==n?n:null}async setReadMarker(e,t,n=!1){var i;const s=null===(i=this.props.timelineSet.room)||void 0===i?void 0:i.roomId;e!==this.state.readMarkerEventId&&null!==e&&(void 0!==t?Pp.roomReadMarkerTsMap[null!=s?s:""]=t:delete Pp.roomReadMarkerTsMap[null!=s?s:""],n||await new Promise(t=>{this.setState({readMarkerEventId:e},()=>{var e,n;null===(e=(n=this.props).onReadMarkerUpdated)||void 0===e||e.call(n),t()})}))}shouldPaginate(){return!this.state.events.some(e=>e.isBeingDecrypted())}buildLegacyCallEventGroupers(e){this.callEventGroupers=(0,Ip.fN)(this.callEventGroupers,e)}render(){var e,t,n,s,r,a;if(this.state.timelineLoading)return i.createElement("div",{className:"mx_RoomView_messagePanelSpinner"},i.createElement(ce.A,null));if(0==this.state.events.length&&!this.state.canBackPaginate&&this.props.empty)return i.createElement("div",{className:this.props.className+" mx_RoomView_messageListWrapper"},i.createElement("div",{className:"mx_RoomView_empty"},this.props.empty));const l=!(null!==(e=this.timelineWindow)&&void 0!==e&&e.canPaginate(o.EventTimeline.FORWARDS)),c=this.state.forwardPaginating||["PREPARED","CATCHUP"].includes(this.state.clientSyncState),d=this.state.events;return i.createElement(Ou,{ref:this.messagePanel,room:this.props.timelineSet.room,permalinkCreator:this.props.permalinkCreator,hidden:this.props.hidden,backPaginating:this.state.backPaginating,forwardPaginating:c,events:d,highlightedEventId:this.props.highlightedEventId,readMarkerEventId:this.state.readMarkerEventId,readMarkerVisible:this.state.readMarkerVisible,canBackPaginate:this.state.canBackPaginate,showUrlPreview:this.props.showUrlPreview,showReadReceipts:this.props.showReadReceipts,ourUserId:v.J.safeGet().getSafeUserId(),stickyBottom:l,onScroll:this.onMessageListScroll,onFillRequest:this.onMessageListFillRequest,onUnfillRequest:this.onMessageListUnfillRequest,isTwelveHour:null!==(t=null===(n=this.context)||void 0===n?void 0:n.showTwelveHourTimestamps)&&void 0!==t?t:this.state.isTwelveHour,alwaysShowTimestamps:null!==(s=null!==(r=this.props.alwaysShowTimestamps)&&void 0!==r?r:null===(a=this.context)||void 0===a?void 0:a.alwaysShowTimestamps)&&void 0!==s?s:this.state.alwaysShowTimestamps,className:this.props.className,getRelationsForEvent:this.getRelationsForEvent,editState:this.props.editState,showReactions:this.props.showReactions,layout:this.props.layout,hideThreadedMessages:this.props.hideThreadedMessages,disableGrouping:this.props.disableGrouping,callEventGroupers:this.callEventGroupers})}}function Np(e){return e.map(e=>{const t={},n=e.getTimelines(),i=e.getLiveTimeline();return n.forEach((e,n)=>{t[e===i?"liveTimeline":`${n}`]=e.getEvents().map(e=>e.getId())}),t})}(0,w.A)(Pp,"contextType",gn.Ay),(0,w.A)(Pp,"roomReadMarkerTsMap",{}),(0,w.A)(Pp,"defaultProps",{timelineCap:Number.MAX_VALUE,className:"mx_RoomView_messagePanel",sendReadReceiptOnLoad:!0,hideThreadedMessages:!0,disableGrouping:!1});const Mp=Pp;class Dp extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"instanceId",void 0),(0,w.A)(this,"onResize",(e,t)=>{e===ba.x.Resize&&this.props.onMeasurement(t.contentRect.width<=this.props.breakpoint)}),this.instanceId=Dp.instanceCount++}componentDidMount(){ba.A.instance.on(`Measured${this.instanceId}`,this.onResize)}componentDidUpdate(e){const t=e.sensor.current,n=this.props.sensor.current;t!==n&&(t&&ba.A.instance.stopTrackingElementDimensions(`Measured${this.instanceId}`),n&&ba.A.instance.trackElementDimensions(`Measured${this.instanceId}`,n))}componentWillUnmount(){ba.A.instance.off(`Measured${this.instanceId}`,this.onResize),ba.A.instance.stopTrackingElementDimensions(`Measured${this.instanceId}`)}render(){return null}}(0,w.A)(Dp,"instanceCount",0),(0,w.A)(Dp,"defaultProps",{breakpoint:500});const Op=({Icon:e,title:t,description:n})=>i.createElement(we.s,{className:"mx_EmptyState",direction:"column",gap:"var(--cpd-space-4x)",align:"center",justify:"center"},i.createElement(e,{width:"32px",height:"32px"}),i.createElement(Al.E,{size:"lg",weight:"semibold"},t),i.createElement(Al.E,{size:"md",weight:"regular"},n));class Fp extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"decryptingEvents",new Set),(0,w.A)(this,"noRoom",!1),(0,w.A)(this,"card",(0,i.createRef)()),(0,w.A)(this,"state",{timelineSet:null,narrow:!1}),(0,w.A)(this,"onRoomTimeline",(e,t,n,i,s)=>{if((null==t?void 0:t.roomId)!==this.props.roomId)return;if(n||!s||!s.liveEvent||e.isRedacted())return;v.J.safeGet().decryptEventIfNeeded(e),e.isBeingDecrypted()?this.decryptingEvents.add(e.getId()):this.addEncryptedLiveEvent(e)}),(0,w.A)(this,"onEventDecrypted",(e,t)=>{if(e.getRoomId()!==this.props.roomId)return;const n=e.getId();this.decryptingEvents.delete(n)&&(t||this.addEncryptedLiveEvent(e))}),(0,w.A)(this,"onPaginationRequest",(e,t,n)=>{const i=v.J.safeGet(),s=f.A.get(),o=this.props.roomId,r=i.getRoom(o);return r&&i.isRoomEncrypted(o)&&null!==s?s.paginateTimelineWindow(r,e,t,n):e.paginate(t,n)}),(0,w.A)(this,"onMeasurement",e=>{this.setState({narrow:e})})}addEncryptedLiveEvent(e){if(!this.state.timelineSet)return;const t=this.state.timelineSet.getLiveTimeline();"m.room.message"===e.getType()&&["m.file","m.image","m.video","m.audio"].includes(e.getContent().msgtype)&&(this.state.timelineSet.eventIdToTimeline(e.getId())||this.state.timelineSet.addEventToTimeline(e,t,{fromCache:!1,addToState:!1,toStartOfTimeline:!1}))}async componentDidMount(){const e=v.J.safeGet();await this.updateTimelineSet(this.props.roomId),e.isRoomEncrypted(this.props.roomId)&&null!==f.A.get()&&(e.on(o.RoomEvent.Timeline,this.onRoomTimeline),e.on(o.MatrixEventEvent.Decrypted,this.onEventDecrypted))}componentWillUnmount(){const e=v.J.get();null!==e&&e.isRoomEncrypted(this.props.roomId)&&null!==f.A.get()&&(e.removeListener(o.RoomEvent.Timeline,this.onRoomTimeline),e.removeListener(o.MatrixEventEvent.Decrypted,this.onEventDecrypted))}async fetchFileEventsServer(e){const t=v.J.safeGet(),n=new o.Filter(t.getSafeUserId());return n.setDefinition({room:{timeline:{contains_url:!0,types:["m.room.message"]}}}),n.filterId=await t.getOrCreateFilter("FILTER_FILES_"+t.credentials.userId,n),e.getOrCreateFilteredTimelineSet(n)}async updateTimelineSet(e){const t=v.J.safeGet(),n=t.getRoom(e),i=f.A.get();if(this.noRoom=!n,n){let o;try{if(o=await this.fetchFileEventsServer(n),t.isRoomEncrypted(e)&&null!==i){const e=o.getLiveTimeline();await i.populateFileTimeline(o,e,n,10)}this.setState({timelineSet:o})}catch(e){s.vF.error("Failed to get or create file panel filter",e)}}else s.vF.error("Failed to add filtered timelineSet for FilePanel as no room!")}render(){if(v.J.safeGet().isGuest())return i.createElement(Rm.A,{className:"mx_FilePanel mx_RoomView_messageListWrapper",onClose:this.props.onClose,header:(0,l._t)("right_panel|files_button")},i.createElement("div",{className:"mx_RoomView_empty"},(0,l._t)("file_panel|guest_note",{},{a:e=>i.createElement("a",{href:"#/register",key:"sub"},e)})));if(this.noRoom)return i.createElement(Rm.A,{className:"mx_FilePanel mx_RoomView_messageListWrapper",onClose:this.props.onClose,header:(0,l._t)("right_panel|files_button")},i.createElement("div",{className:"mx_RoomView_empty"},(0,l._t)("file_panel|peek_note")));const e=i.createElement(Op,{Icon:wm.A,title:(0,l._t)("file_panel|empty_heading"),description:(0,l._t)("file_panel|empty_description")}),t=!this.noRoom&&v.J.safeGet().isRoomEncrypted(this.props.roomId);return this.state.timelineSet?i.createElement(Ji.yw,(0,Wt.A)({},this.context,{timelineRenderingType:gn.Ae.File,narrow:this.state.narrow}),i.createElement(Rm.A,{className:"mx_FilePanel",onClose:this.props.onClose,withoutScrollContainer:!0,ref:this.card,header:(0,l._t)("right_panel|files_button")},i.createElement(Dp,{sensor:this.card,onMeasurement:this.onMeasurement}),i.createElement(kp,{isRoomEncrypted:t,kind:Rp.Files}),i.createElement(Mp,{manageReadReceipts:!1,manageReadMarkers:!1,timelineSet:this.state.timelineSet,showUrlPreview:!1,onPaginationRequest:this.onPaginationRequest,empty:e,layout:Bt.P.Group}))):i.createElement(Ji.yw,(0,Wt.A)({},this.context,{timelineRenderingType:gn.Ae.File}),i.createElement(Rm.A,{className:"mx_FilePanel",onClose:this.props.onClose,header:(0,l._t)("right_panel|files_button")},i.createElement(ce.A,null)))}}(0,w.A)(Fp,"contextType",gn.Ay);const Lp=Fp;class Up extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"resize",()=>{this.props.onResize&&this.props.onResize()})}componentDidMount(){window.addEventListener("resize",this.resize)}componentWillUnmount(){window.removeEventListener("resize",this.resize)}render(){return i.createElement("div",null,this.props.element)}}const Vp="stickerPicker";class Bp extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"prevSentVisibility",void 0),(0,w.A)(this,"popoverWidth",300),(0,w.A)(this,"popoverHeight",300),(0,w.A)(this,"scalarClient",null),(0,w.A)(this,"removeStickerpickerWidgets",async()=>{const e=await this.acquireScalarClient();s.vF.log("Removing Stickerpicker widgets"),this.state.widgetId?e?e.disableWidgetAssets(Ih.x.STICKERPICKER,this.state.widgetId).then(()=>{s.vF.log("Assets disabled")}).catch(()=>{s.vF.error("Failed to disable assets")}):s.vF.error("Cannot disable assets: no scalar client"):s.vF.warn("No widget ID specified, not disabling assets"),this.props.setStickerPickerOpen(!1),ph.A.removeStickerpickerWidgets(this.props.room.client).then(()=>{this.forceUpdate()}).catch(e=>{s.vF.error("Failed to remove sticker picker widget",e)})}),(0,w.A)(this,"updateWidget",()=>{var e,t,n,i;const s=ph.A.getStickerpickerWidgets(this.props.room.client)[0];if(!s)return Bp.currentWidget=void 0,void this.setState({stickerpickerWidget:null,widgetId:null});const o=Bp.currentWidget,r=null!==(e=null==o||null===(t=o.content)||void 0===t?void 0:t.url)&&void 0!==e?e:null;(null!==(n=null==s||null===(i=s.content)||void 0===i?void 0:i.url)&&void 0!==n?n:null)!==r&&kh.destroyElement(Vp),Bp.currentWidget=s,this.setState({stickerpickerWidget:s,widgetId:s?s.id:null})}),(0,w.A)(this,"onAction",e=>{switch(e.action){case"user_widget_updated":this.forceUpdate();break;case"stickerpicker_close":case"show_left_panel":case"hide_left_panel":this.props.setStickerPickerOpen(!1)}}),(0,w.A)(this,"onRightPanelStoreUpdate",()=>{this.props.setStickerPickerOpen(!1)}),(0,w.A)(this,"onResize",()=>{this.props.isStickerPickerOpen&&this.props.setStickerPickerOpen(!1)}),(0,w.A)(this,"onFinished",()=>{this.props.isStickerPickerOpen&&this.props.setStickerPickerOpen(!1)}),(0,w.A)(this,"launchManageIntegrations",()=>{var e,t;null===(e=L.J.sharedInstance())||void 0===e||null===(e=e.getPrimaryManager())||void 0===e||e.open(this.props.room,`type_${Ih.x.STICKERPICKER.preferred}`,null!==(t=this.state.widgetId)&&void 0!==t?t:void 0)}),this.state={imError:null,stickerpickerWidget:null,widgetId:null}}async acquireScalarClient(){return this.scalarClient?Promise.resolve(this.scalarClient):L.J.sharedInstance().hasManager()?(this.scalarClient=null!==(e=null===(t=L.J.sharedInstance().getPrimaryManager())||void 0===t?void 0:t.getScalarClient())&&void 0!==e?e:null,null===(n=this.scalarClient)||void 0===n?void 0:n.connect().then(()=>(this.forceUpdate(),this.scalarClient)).catch(e=>{this.imError((0,l.AO)("integration_manager|error_connecting_heading"),e)})):void L.J.sharedInstance().openNoManagerDialog();var e,t,n}componentDidMount(){window.addEventListener("resize",this.onResize),this.dispatcherRef=S.A.register(this.onAction),v.J.safeGet().on(o.ClientEvent.AccountData,this.updateWidget),Rl.A.instance.on(Br.H,this.onRightPanelStoreUpdate),this.updateWidget()}componentWillUnmount(){const e=v.J.get();e&&e.removeListener(o.ClientEvent.AccountData,this.updateWidget),Rl.A.instance.off(Br.H,this.onRightPanelStoreUpdate),window.removeEventListener("resize",this.onResize),S.A.unregister(this.dispatcherRef)}componentDidUpdate(){this.sendVisibilityToWidget(this.props.isStickerPickerOpen)}imError(e,t){s.vF.error(e,t),this.setState({imError:(0,l._t)(e)}),this.props.setStickerPickerOpen(!1)}defaultStickerpickerContent(){const e=n("./res/img/stickerpack-placeholder.png");return i.createElement(le.A,{onClick:this.launchManageIntegrations,className:"mx_Stickers_contentPlaceholder"},i.createElement("p",null,(0,l._t)("stickers|empty")),i.createElement("p",{className:"mx_Stickers_addLink"},(0,l._t)("stickers|empty_add_prompt")),i.createElement("img",{src:e,alt:""}))}errorStickerpickerContent(){return i.createElement("div",{style:{textAlign:"center"},className:"error"},i.createElement("p",null," ",this.state.imError," "))}sendVisibilityToWidget(e){if(!this.state.stickerpickerWidget)return;const t=zh.c.instance.getMessagingForUid(ph.A.calcWidgetUid(this.state.stickerpickerWidget.id));t&&e!==this.prevSentVisibility&&(t.updateVisibility(e).catch(e=>{s.vF.error("Error updating widget visibility: ",e)}),this.prevSentVisibility=e)}getStickerpickerContent(){var e;if(this.state.imError)return this.errorStickerpickerContent();const t=this.state.stickerpickerWidget;let n;if(null!=t&&null!==(e=t.content)&&void 0!==e&&e.url){t.content.name=t.content.name||(0,l._t)("common|stickerpack");const e={id:t.id,url:t.content.url,name:t.content.name,type:t.content.type,data:t.content.data,creatorUserId:t.content.creatorUserId||t.sender};n=i.createElement("div",{className:"mx_Stickers_content_container"},i.createElement("div",{id:"stickersContent",className:"mx_Stickers_content",style:{border:"none",height:this.popoverHeight,width:this.popoverWidth}},i.createElement(kh,{persistKey:Vp,zIndex:3500},i.createElement(Sp,{app:e,room:this.props.room,threadId:this.props.threadId,fullWidth:!0,userId:v.J.safeGet().credentials.userId,creatorUserId:t.sender||v.J.safeGet().credentials.userId,waitForIframeLoad:!0,showMenubar:!0,onEditClick:this.launchManageIntegrations,onDeleteClick:this.removeStickerpickerWidgets,showTitle:!1,showPopout:!1,handleMinimisePointerEvents:!0,userWidget:!0,showLayoutButtons:!1}))))}else n=this.defaultStickerpickerContent();return n}render(){return this.props.isStickerPickerOpen?i.createElement(bn.Ay,(0,Wt.A)({chevronFace:bn.t4.Bottom,menuWidth:this.popoverWidth,menuHeight:this.popoverHeight,onFinished:this.onFinished,menuPaddingTop:0,menuPaddingLeft:0,menuPaddingRight:0,zIndex:3500,mountAsChild:!0},this.props.menuPosition),i.createElement(Up,{element:this.getStickerpickerContent(),onResize:this.onFinished})):null}}(0,w.A)(Bp,"defaultProps",{threadId:null}),(0,w.A)(Bp,"currentWidget",void 0);var jp=n("./src/components/views/rooms/E2EIcon.tsx");class Wp extends i.Component{render(){return this.props.replyToEvent?i.createElement("div",{className:"mx_ReplyPreview"},i.createElement("div",{className:"mx_ReplyPreview_section"},i.createElement("div",{className:"mx_ReplyPreview_header"},i.createElement("span",null,(0,l._t)("composer|replying_title")),i.createElement(le.A,{className:"mx_ReplyPreview_header_cancel",onClick:()=>{return e=this.context.timelineRenderingType,void S.A.dispatch({action:"reply_to_event",event:null,context:e});var e}})),i.createElement(un,{mxEvent:this.props.replyToEvent,permalinkCreator:this.props.permalinkCreator}))):null}}function Hp(e,t){const n=(0,de.nH)(),r=n.getCrypto(),[a,l]=(0,i.useState)([]),[c,d]=(0,i.useState)(void 0),m=(0,i.useMemo)(()=>(0,Kt.throttle)(async()=>{if(!(r&&await r.isEncryptionEnabledInRoom(e.roomId)))return l([]),void d(void 0);const t=await e.getEncryptionTargetMembers();l(t);const n=await async function(e,t){const n=new Array;for(const i of t){const t=await e.getUserVerificationStatus(i.userId);t.wasCrossSigningVerified()&&!t.isCrossSigningVerified()?n.push({member:i,type:"VerificationViolation"}):t.needsUserApproval&&n.push({member:i,type:"PinViolation"})}return n}(r,t);let i;if(n.length>0){const e=n.sort((e,t)=>e.member.userId.localeCompare(t.member.userId));i=e[0]}else i=void 0;d(e=>e&&n.includes(e)?e:i||void 0)}),[r,e]);(0,Fi.YK)(n,o.RoomStateEvent.Events,(0,i.useCallback)(async t=>{if(!r||t.getRoomId()!==e.roomId)return;let n=!1;const i=t.getType();if(i===o.EventType.RoomEncryption&&""===t.getStateKey())n=!0;else if(i==o.EventType.RoomMember){n=!!t.getStateKey()}n&&m().catch(e=>{s.vF.error("Error refreshing UserIdentityWarningViewModel:",e)})},[r,e,m])),(0,Fi.YK)(n,V.cr.UserTrustStatusChanged,(0,i.useCallback)(e=>{a.find(t=>t.userId==e)&&m().catch(e=>{s.vF.error("Error refreshing UserIdentityWarning:",e)})},[m,a])),(0,i.useEffect)(()=>{m().catch(e=>{s.vF.error("Error initialising UserIdentityWarning:",e)})},[m]);return{currentPrompt:c,dispatchAction:(0,i.useCallback)(e=>{r&&("PinUserIdentity"===e.type?r.pinCurrentUserIdentity(e.userId).catch(e=>{s.vF.error("Error pinning user identity:",e)}):"WithdrawVerification"===e.type&&r.withdrawVerificationRequirement(e.userId).catch(e=>{s.vF.error("Error withdrawing verification requirement:",e)}))},[r])}}(0,w.A)(Wp,"contextType",gn.Ay);const zp=({room:e})=>{const{currentPrompt:t,dispatchAction:n}=Hp(e,e.roomId);if(!t)return null;const[s,o]=function(e){let t,n;"VerificationViolation"===e.type?(t=e.member.rawDisplayName===e.member.userId?(0,l._t)("encryption|verified_identity_changed_no_displayname",{userId:e.member.userId},{a:Kp,b:Gp}):(0,l._t)("encryption|verified_identity_changed",{displayName:e.member.rawDisplayName,userId:e.member.userId},{a:Kp,b:Gp}),n=(0,l._t)("encryption|withdraw_verification_action")):(t=e.member.rawDisplayName===e.member.userId?(0,l._t)("encryption|pinned_identity_changed_no_displayname",{userId:e.member.userId},{a:Kp,b:Gp}):(0,l._t)("encryption|pinned_identity_changed",{displayName:e.member.rawDisplayName,userId:e.member.userId},{a:Kp,b:Gp}),n=(0,l._t)("action|dismiss"));return[t,n]}(t);return function(e,t,n,s,o){return i.createElement("div",{className:Lt()("mx_UserIdentityWarning",{critical:e})},i.createElement(od.w,null),i.createElement("div",{className:"mx_UserIdentityWarning_row"},t,i.createElement("span",{className:Lt()("mx_UserIdentityWarning_main",{critical:e})},n),i.createElement(Y.$,{kind:"secondary",size:"sm",onClick:o},s)))}("VerificationViolation"===t.type,(r=t.member,i.createElement(ln.A,{member:r,title:r.userId,size:"30px"})),s,o,e=>{e.preventDefault(),"VerificationViolation"===t.type?n({type:"WithdrawVerification",userId:t.member.userId}):n({type:"PinUserIdentity",userId:t.member.userId})});var r};function Kp(e){return i.createElement("a",{href:"https://element.io/help#encryption18",target:"_blank",rel:"noreferrer noopener"},e)}function Gp(e){return i.createElement("b",null,e)}var Jp=n("./src/audio/VoiceRecording.ts"),$p=n("./src/components/views/audio_messages/Waveform.tsx"),qp=n("./src/utils/MarkedExecution.ts");class Yp extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"waveform",[]),(0,w.A)(this,"scheduledUpdate",new qp.L(()=>this.updateWaveform(),()=>requestAnimationFrame(()=>this.scheduledUpdate.trigger()))),this.state={waveform:(0,se.DG)(0,Jp.IZ)}}componentDidMount(){this.props.recorder.liveData.onUpdate(e=>{this.waveform=(0,se.$S)(Array.from(e.waveform),Jp.IZ),this.scheduledUpdate.mark()})}updateWaveform(){this.setState({waveform:this.waveform})}render(){return i.createElement($p.A,{relHeights:this.state.waveform})}}(0,w.A)(Yp,"defaultProps",{progress:1});var Xp=n("./packages/shared-components/src/audio/Clock/index.tsx");class Qp extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"seconds",0),(0,w.A)(this,"scheduledUpdate",new qp.L(()=>this.updateClock(),()=>requestAnimationFrame(()=>this.scheduledUpdate.trigger()))),this.state={seconds:0}}componentDidMount(){this.props.recorder.liveData.onUpdate(e=>{this.seconds=e.timeSeconds,this.scheduledUpdate.mark()})}updateClock(){this.setState({seconds:this.seconds})}render(){return i.createElement(Xp.z,{seconds:this.state.seconds,"aria-live":"off"})}}var Zp=n("./src/utils/Singleflight.ts"),eg=n("./src/audio/Playback.ts");class tg{constructor(e,t){(0,w.A)(this,"lastUpload",void 0),(0,w.A)(this,"buffer",new Uint8Array(0)),(0,w.A)(this,"playback",void 0),(0,w.A)(this,"onDataAvailable",e=>{const t=new Uint8Array(e);this.buffer=(0,se.xW)(this.buffer,t)}),this.matrixClient=e,this.voiceRecording=t,this.voiceRecording.onDataAvailable=this.onDataAvailable}async start(){if(this.lastUpload||this.hasRecording)throw new Error("Recording already prepared");return this.voiceRecording.start()}async stop(){return await this.voiceRecording.stop(),this.audioBuffer}on(e,t){return this.voiceRecording.on(e,t),this}off(e,t){return this.voiceRecording.off(e,t),this}emit(e,...t){return this.voiceRecording.emit(e,...t)}get hasRecording(){return this.buffer.length>0}get isRecording(){return this.voiceRecording.isRecording}getPlayback(){return this.playback=Zp.j.for(this,"playback").do(()=>new eg.Y(this.audioBuffer.buffer,this.voiceRecording.amplitudes)),this.playback}async upload(e){if(!this.hasRecording)throw new Error("No recording available to upload");if(this.lastUpload)return this.lastUpload;try{this.emit(Jp.$T.Uploading);const{url:t,file:n}=await(0,hm.QM)(this.matrixClient,e,new Blob([this.audioBuffer],{type:this.contentType}));this.lastUpload={mxc:t,encrypted:n},this.emit(Jp.$T.Uploaded)}catch(e){throw this.emit(Jp.$T.Ended),e}return this.lastUpload}get durationSeconds(){return this.voiceRecording.durationSeconds}get contentType(){return this.voiceRecording.contentType}get contentLength(){return this.buffer.length}get liveData(){return this.voiceRecording.liveData}get isSupported(){return this.voiceRecording.isSupported}destroy(){var e;null===(e=this.playback)||void 0===e||e.destroy(),this.voiceRecording.destroy()}get audioBuffer(){return this.buffer.slice(0)}}function ng(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function ig(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 sg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ig(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ig(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class og extends $r.r{constructor(){super(S.A,{})}static get instance(){return this.internalInstance||(this.internalInstance=new og,this.internalInstance.start()),this.internalInstance}async onAction(e){}static getVoiceRecordingId(e,t){return"io.element.thread"===(null==t?void 0:t.rel_type)||(null==t?void 0:t.rel_type)===o.RelationType.Thread?e.roomId+"|"+t.event_id:e.roomId}getActiveRecording(e){return this.state[e]}startRecording(e){if(!this.matrixClient)throw new Error("Cannot start a recording without a MatrixClient");if(!e)throw new Error("Recording must be associated with a room");if(this.state[e])throw new Error("A recording is already in progress");const t=(n=this.matrixClient,new tg(n,new Jp.Qj));var n;return this.updateState(sg(sg({},this.state),{},{[e]:t})),t}disposeRecording(e){var t;null===(t=this.state[e])||void 0===t||t.destroy();const n=this.state,{[e]:i}=n,s=(0,g.A)(n,[e].map(ng));return this.reset(s)}}(0,w.A)(og,"internalInstance",void 0),window.mxVoiceRecordingStore=og.instance;var rg=n("./src/components/views/audio_messages/RecordingPlayback.tsx"),ag=n("./src/audio/PlaybackManager.ts"),lg=n("./src/utils/local-room.ts"),cg=n("./src/components/views/rooms/SendMessageComposer.tsx");class dg extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"voiceRecordingId",void 0),(0,w.A)(this,"onCancel",async()=>{await this.disposeRecording()}),(0,w.A)(this,"onRecordStartEndClick",async()=>{if(this.state.recorder)return void await this.state.recorder.stop();const e=()=>{R.Ay.createDialog(It.A,{title:(0,l._t)("voip|unable_to_access_audio_input_title"),description:i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("voip|unable_to_access_audio_input_description")))})};try{var t;const e=await oa.Ay.getDevices();if(null==e||null===(t=e[oa.cm.AudioInput])||void 0===t||!t.length)return void R.Ay.createDialog(It.A,{title:(0,l._t)("voip|no_audio_input_title"),description:i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("voip|no_audio_input_description")))})}catch(t){return s.vF.error("Error getting devices: ",t),void e()}try{ag.T.instance.pauseAllExcept();const e=og.instance.startRecording(this.voiceRecordingId);await e.start(),this.bindNewRecorder(e),this.setState({recorder:e,recordingPhase:Jp.$T.Started})}catch(t){s.vF.error("Error starting recording: ",t),e(),og.instance.disposeRecording(this.voiceRecordingId)}}),(0,w.A)(this,"onRecordingUpdate",e=>{e!==Jp.$T.EndingSoon&&this.setState({recordingPhase:e})}),this.state={},this.voiceRecordingId=og.getVoiceRecordingId(this.props.room,this.props.relation)}componentDidMount(){const e=og.instance.getActiveRecording(this.voiceRecordingId);e&&(!e.isRecording&&e.hasRecording||s.vF.warn("Cached recording hasn't ended yet and might cause issues"),this.bindNewRecorder(e),this.setState({recorder:e,recordingPhase:Jp.$T.Ended}))}async componentWillUnmount(){const e=og.instance.getActiveRecording(this.voiceRecordingId);await(null==e?void 0:e.stop()),this.bindNewRecorder(null)}async send(){if(!this.state.recorder)throw new Error("No recording started - cannot send anything");const{replyToEvent:e,relation:t}=this.props;let n;await this.state.recorder.stop();try{n=await this.state.recorder.upload(this.voiceRecordingId)}catch(e){return s.vF.error("Error uploading voice message:",e),void this.setState({didUploadFail:!0})}try{const s=(i=n.mxc,r=this.state.recorder.contentType,a=Math.round(1e3*this.state.recorder.durationSeconds),l=this.state.recorder.contentLength,c=n.encrypted,d=this.state.recorder.getPlayback().thumbnailWaveform.map(e=>Math.round(1024*e)),{body:"Voice message",msgtype:o.MsgType.Audio,url:i,file:c,info:{duration:a,mimetype:r,size:l},"org.matrix.msc1767.text":"Voice message","org.matrix.msc1767.file":{url:i,file:c,name:"Voice message.ogg",mimetype:r,size:l},"org.matrix.msc1767.audio":{duration:a,waveform:d},"org.matrix.msc3245.voice":{}});(0,cg.LO)(v.J.safeGet().getSafeUserId(),s,null,e),(0,cg.gV)(s,t),e&&((0,pn.fh)(s,e),S.A.dispatch({action:"reply_to_event",event:null,context:this.context.timelineRenderingType})),(0,lg.Y)(this.props.room.roomId,e=>v.J.safeGet().sendMessage(e,s),this.props.room.client)}catch(e){s.vF.error("Error sending voice message:",e)}var i,r,a,l,c,d;await this.disposeRecording()}async disposeRecording(){await og.instance.disposeRecording(this.voiceRecordingId),this.setState({recorder:void 0,recordingPhase:void 0,didUploadFail:!1})}bindNewRecorder(e){this.state.recorder&&this.state.recorder.off(Br.H,this.onRecordingUpdate),e&&e.on(Br.H,this.onRecordingUpdate)}renderWaveformArea(){return this.state.recorder?this.state.recordingPhase!==Jp.$T.Started?i.createElement(rg.A,{playback:this.state.recorder.getPlayback(),layout:rg._.Composer}):i.createElement("div",{className:"mx_MediaBody mx_VoiceMessagePrimaryContainer mx_VoiceRecordComposerTile_recording"},i.createElement(Qp,{recorder:this.state.recorder}),i.createElement(Yp,{recorder:this.state.recorder})):null}render(){if(!this.state.recordingPhase)return null;let e,t,n;if(this.state.recordingPhase===Jp.$T.Started){var s;let t=(0,l._t)("composer|send_voice_message");this.state.recorder&&(t=(0,l._t)("composer|stop_voice_message")),e=i.createElement(le.A,{className:"mx_VoiceRecordComposerTile_stop",onClick:this.onRecordStartEndClick,title:t}),!this.state.recorder||null!==(s=this.state.recorder)&&void 0!==s&&s.isRecording||(e=null)}return this.state.recorder&&this.state.recordingPhase!==Jp.$T.Uploading&&(t=i.createElement(le.A,{className:"mx_VoiceRecordComposerTile_delete",title:(0,l._t)("action|delete"),onClick:this.onCancel})),this.state.recordingPhase===Jp.$T.Uploading?n=i.createElement("span",{className:"mx_VoiceRecordComposerTile_uploadingState"},i.createElement(Ra.A,{w:16,h:16})):this.state.didUploadFail&&this.state.recordingPhase===Jp.$T.Ended&&(n=i.createElement("span",{className:"mx_VoiceRecordComposerTile_failedState"},i.createElement("span",{className:"mx_VoiceRecordComposerTile_uploadState_badge"},i.createElement(An.A,{notification:Sn.d.forSymbol("!",Na.S.Highlight)})),i.createElement("span",{className:"text-warning"},(0,l._t)("timeline|send_state_failed")))),i.createElement(i.Fragment,null,n,t,e,this.renderWaveformArea())}}(0,w.A)(dg,"contextType",gn.Ay);var mg=n("./src/components/views/rooms/MessageComposerButtons.tsx"),ug=n("./src/components/views/rooms/wysiwyg_composer/index.ts");const hg="mx_wysiwyg_state_";let pg=0;function gg(e){var t;return i.createElement(le.A,{className:"mx_MessageComposer_sendMessage",onClick:e.onClick,title:null!==(t=e.title)&&void 0!==t?t:(0,l._t)("composer|send_button_title")})}class vg extends i.Component{constructor(e){var t;super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"messageComposerInput",(0,i.createRef)()),(0,w.A)(this,"voiceRecordingButton",(0,i.createRef)()),(0,w.A)(this,"ref",(0,i.createRef)()),(0,w.A)(this,"instanceId",void 0),(0,w.A)(this,"_voiceRecording",void 0),(0,w.A)(this,"saveWysiwygEditorState",()=>{if(this.shouldSaveWysiwygEditorState()){const{isRichTextEnabled:e,composerContent:t}=this.state,n={content:t,isRichText:e,replyEventId:this.props.replyToEvent?this.props.replyToEvent.getId():void 0};localStorage.setItem(this.editorStateKey,JSON.stringify(n))}else this.clearStoredEditorState()}),(0,w.A)(this,"shouldSaveWysiwygEditorState",()=>{const{isWysiwygLabEnabled:e,isComposerEmpty:t}=this.state;return e&&(!t||!!this.props.replyToEvent)}),(0,w.A)(this,"onResize",(e,t)=>{if(e===ba.x.Resize){const{narrow:e}=this.context;this.setState({isMenuOpen:!!e&&this.state.isMenuOpen,isStickerPickerOpen:!1})}}),(0,w.A)(this,"onAction",e=>{switch(e.action){case"reply_to_event":e.context===this.context.timelineRenderingType&&window.setTimeout(()=>{this.props.resizeNotifier.notifyTimelineHeightChanged()},100);break;case H.r.SettingUpdated:{const t=e;switch(t.settingName){case"MessageComposerInput.showStickersButton":{const e=D.A.getValue("MessageComposerInput.showStickersButton");this.state.showStickersButton!==e&&this.setState({showStickersButton:e});break}case"MessageComposerInput.showPollsButton":{const e=D.A.getValue("MessageComposerInput.showPollsButton");this.state.showPollsButton!==e&&this.setState({showPollsButton:e});break}case"feature_wysiwyg_composer":this.state.isWysiwygLabEnabled!==t.newValue&&this.setState({isWysiwygLabEnabled:Boolean(t.newValue)})}}}}),(0,w.A)(this,"onTombstoneClick",e=>{var t,n;e.preventDefault();const i=null===(t=this.context.tombstone)||void 0===t?void 0:t.getContent().replacement_room,s=v.J.safeGet().getRoom(i);let r;if(s){const e=s.currentState.getStateEvents(o.EventType.RoomCreate,"");null!=e&&e.getId()&&(r=e.getId())}const a=null===(n=this.context.tombstone)||void 0===n?void 0:n.getSender(),l=a?[a.split(":").slice(1).join(":")]:void 0;S.A.dispatch({action:H.r.ViewRoom,highlighted:!0,event_id:r,room_id:i,auto_join:!0,via_servers:l,metricsTrigger:"Tombstone",metricsViaKeyboard:"click"!==e.type})}),(0,w.A)(this,"renderPlaceholderText",()=>{if(this.props.replyToEvent){var e;const t=(null===(e=this.props.relation)||void 0===e?void 0:e.rel_type)===o.THREAD_RELATION_TYPE.name;return t&&this.props.e2eStatus?(0,l._t)("composer|placeholder_thread_encrypted"):t?(0,l._t)("composer|placeholder_thread"):this.props.e2eStatus?(0,l._t)("composer|placeholder_reply_encrypted"):(0,l._t)("composer|placeholder_reply")}return this.props.e2eStatus?(0,l._t)("composer|placeholder_encrypted"):(0,l._t)("composer|placeholder")}),(0,w.A)(this,"addEmoji",e=>(S.A.dispatch({action:H.r.ComposerInsert,text:e,timelineRenderingType:this.context.timelineRenderingType}),!0)),(0,w.A)(this,"sendMessage",async()=>{var e,t;if(this.state.haveRecording&&this.voiceRecordingButton.current)await(null===(t=this.voiceRecordingButton.current)||void 0===t?void 0:t.send());else if(null===(e=this.messageComposerInput.current)||void 0===e||e.sendMessage(),this.state.isWysiwygLabEnabled){const{relation:e,replyToEvent:t}=this.props,n=this.state.composerContent;this.setState({composerContent:"",initialComposerContent:""}),S.A.dispatch({action:H.r.ClearAndFocusSendMessageComposer,timelineRenderingType:this.context.timelineRenderingType}),await(0,ug._z)(n,this.state.isRichTextEnabled,{mxClient:this.props.mxClient,roomContext:this.context,relation:e,replyToEvent:t})}}),(0,w.A)(this,"onChange",e=>{this.setState({isComposerEmpty:e.isEmpty})}),(0,w.A)(this,"onWysiwygChange",e=>{this.setState({composerContent:e,isComposerEmpty:0===(null==e?void 0:e.length)})}),(0,w.A)(this,"onRichTextToggle",async()=>{const{richToPlain:e,plainToRich:t}=await(0,ug.Os)(),{isRichTextEnabled:n,composerContent:i}=this.state,s=n?await e(i,!1):await t(i,!1);this.setState({isRichTextEnabled:!n,composerContent:s,initialComposerContent:s})}),(0,w.A)(this,"onVoiceStoreUpdate",()=>{this.updateRecordingState()}),(0,w.A)(this,"onRecordingStarted",()=>{const e=og.getVoiceRecordingId(this.props.room,this.props.relation);this.voiceRecording=og.instance.getActiveRecording(e),this.setState({haveRecording:!!this.voiceRecording})}),(0,w.A)(this,"onRecordingEndingSoon",({secondsLeft:e})=>{this.setState({recordingTimeLeftSeconds:e}),window.setTimeout(()=>this.setState({recordingTimeLeftSeconds:void 0}),3e3)}),(0,w.A)(this,"setStickerPickerOpen",e=>{this.setState({isStickerPickerOpen:e,isMenuOpen:!1})}),(0,w.A)(this,"toggleStickerPickerOpen",()=>{this.setStickerPickerOpen(!this.state.isStickerPickerOpen)}),(0,w.A)(this,"toggleButtonMenu",()=>{this.setState({isMenuOpen:!this.state.isMenuOpen})}),(0,w.A)(this,"onRecordStartEndClick",()=>{var e;null===(e=this.voiceRecordingButton.current)||void 0===e||e.onRecordStartEndClick(),this.context.narrow&&this.toggleButtonMenu()});const n=D.A.getValue("feature_wysiwyg_composer");let s=!0,r="";if(n){const e=this.restoreWysiwygEditorState();e&&(s=e.isRichText,r=e.content)}this.state={isComposerEmpty:0===(null===(t=r)||void 0===t?void 0:t.length),composerContent:r,haveRecording:!1,recordingTimeLeftSeconds:void 0,isMenuOpen:!1,isStickerPickerOpen:!1,showStickersButton:D.A.getValue("MessageComposerInput.showStickersButton"),showPollsButton:D.A.getValue("MessageComposerInput.showPollsButton"),isWysiwygLabEnabled:n,isRichTextEnabled:s,initialComposerContent:r},this.instanceId=pg++}get editorStateKey(){var e;let t=hg+this.props.room.roomId;return(null===(e=this.props.relation)||void 0===e?void 0:e.rel_type)===o.THREAD_RELATION_TYPE.name&&(t+=`_${this.props.relation.event_id}`),t}restoreWysiwygEditorState(){const e=localStorage.getItem(this.editorStateKey);if(e)try{return JSON.parse(e)}catch(e){s.vF.error(e)}}clearStoredEditorState(){localStorage.removeItem(this.editorStateKey)}get voiceRecording(){return this._voiceRecording}set voiceRecording(e){this._voiceRecording&&(this._voiceRecording.off(Jp.$T.Started,this.onRecordingStarted),this._voiceRecording.off(Jp.$T.EndingSoon,this.onRecordingEndingSoon)),this._voiceRecording=e,e&&(e.on(Jp.$T.Started,this.onRecordingStarted),e.on(Jp.$T.EndingSoon,this.onRecordingEndingSoon))}componentDidMount(){if(og.instance.on(Br.H,this.onVoiceStoreUpdate),window.addEventListener("beforeunload",this.saveWysiwygEditorState),this.state.isWysiwygLabEnabled){const e=this.restoreWysiwygEditorState();null!=e&&e.replyEventId&&S.A.dispatch({action:"reply_to_event",event:this.props.room.findEventById(e.replyEventId),context:this.context.timelineRenderingType})}D.A.monitorSetting("MessageComposerInput.showStickersButton",null),D.A.monitorSetting("MessageComposerInput.showPollsButton",null),D.A.monitorSetting("feature_wysiwyg_composer",null),this.dispatcherRef=S.A.register(this.onAction),this.waitForOwnMember(),ba.A.instance.trackElementDimensions(`MessageComposer${this.instanceId}`,this.ref.current),ba.A.instance.on(`MessageComposer${this.instanceId}`,this.onResize),this.updateRecordingState()}waitForOwnMember(){const e=this.props.room.getMember(v.J.safeGet().getUserId());e?this.setState({me:e}):this.props.room.loadMembersIfNeeded().then(()=>{var e;const t=null!==(e=this.props.room.getMember(v.J.safeGet().getSafeUserId()))&&void 0!==e?e:void 0;this.setState({me:t})})}componentWillUnmount(){og.instance.off(Br.H,this.onVoiceStoreUpdate),S.A.unregister(this.dispatcherRef),ba.A.instance.stopTrackingElementDimensions(`MessageComposer${this.instanceId}`),ba.A.instance.removeListener(`MessageComposer${this.instanceId}`,this.onResize),window.removeEventListener("beforeunload",this.saveWysiwygEditorState),this.saveWysiwygEditorState(),this.voiceRecording=null}updateRecordingState(){const e=og.getVoiceRecordingId(this.props.room,this.props.relation);this.voiceRecording=og.instance.getActiveRecording(e),this.voiceRecording?this.voiceRecording.hasRecording&&!this.voiceRecording.isRecording&&this.setState({haveRecording:!0}):this.setState({haveRecording:!1})}get showStickersButton(){return this.state.showStickersButton&&!(0,os.F)(this.props.room)}getMenuPosition(){if(this.ref.current){const e=this.state.isWysiwygLabEnabled&&this.state.isRichTextEnabled,t=this.ref.current.getBoundingClientRect(),n=e?36:0,i=new DOMRect(t.x,t.y+n,t.width,t.height-n);return(0,bn.qv)(i)}}render(){var e;let t=!1;this.state.isWysiwygLabEnabled||(this.props.e2eStatus?this.props.e2eStatus!==km.z.Normal&&(t=i.createElement("div",{className:"mx_MessageComposer_e2eIconWrapper"},i.createElement(jp.A,{key:"e2eIcon",status:this.props.e2eStatus,className:"mx_MessageComposer_e2eIcon"}))):t=i.createElement("div",{className:"mx_MessageComposer_e2eIconWrapper"},i.createElement(zt.m,{label:(0,l._t)("composer|room_unencrypted")},i.createElement(xm.A,{"aria-label":(0,l._t)("composer|room_unencrypted"),width:12,height:12,color:"var(--cpd-color-icon-info-primary)",className:"mx_E2EIcon mx_MessageComposer_e2eIcon"}))));const n=[],s=this.getMenuPosition(),r=this.context.canSendMessages&&!this.context.tombstone;let a;if(r)a=this.state.isWysiwygLabEnabled&&s?i.createElement(ug.W1,{key:"controls_input",disabled:this.state.haveRecording,onChange:this.onWysiwygChange,onSend:this.sendMessage,isRichTextEnabled:this.state.isRichTextEnabled,initialContent:this.state.initialComposerContent,e2eStatus:this.props.e2eStatus,menuPosition:s,placeholder:this.renderPlaceholderText(),eventRelation:this.props.relation}):i.createElement(cg.Ay,{ref:this.messageComposerInput,key:"controls_input",room:this.props.room,placeholder:this.renderPlaceholderText(),relation:this.props.relation,replyToEvent:this.props.replyToEvent,onChange:this.onChange,disabled:this.state.haveRecording,toggleStickerPickerOpen:this.toggleStickerPickerOpen}),n.push(i.createElement(dg,{key:"controls_voice_record",ref:this.voiceRecordingButton,room:this.props.room,relation:this.props.relation,replyToEvent:this.props.replyToEvent}));else if(this.context.tombstone){const e=this.context.tombstone.getContent().replacement_room,t=e?i.createElement("a",{href:(0,Gt.B4)(v.J.safeGet(),e),className:"mx_MessageComposer_roomReplaced_link",onClick:this.onTombstoneClick},(0,l._t)("composer|room_upgraded_link")):"";n.push(i.createElement("div",{className:"mx_MessageComposer_replaced_wrapper",key:"room_replaced"},i.createElement("div",{className:"mx_MessageComposer_replaced_valign"},i.createElement("img",{"aria-hidden":!0,alt:"",className:"mx_MessageComposer_roomReplaced_icon",src:"img/room_replaced.4ac105f.svg"}),i.createElement("span",{className:"mx_MessageComposer_roomReplaced_header"},(0,l._t)("composer|room_upgraded_notice")),i.createElement("br",null),t)))}else n.push(i.createElement("div",{key:"controls_error",className:"mx_MessageComposer_noperm_error"},(0,l._t)("composer|no_perms_notice")));const c=Boolean(this.state.recordingTimeLeftSeconds),d=this.state.recordingTimeLeftSeconds?Math.round(this.state.recordingTimeLeftSeconds):0,m=(null===(e=this.props.relation)||void 0===e?void 0:e.rel_type)===o.THREAD_RELATION_TYPE.name?this.props.relation.event_id:null;n.push(i.createElement(Bp,{room:this.props.room,threadId:m,isStickerPickerOpen:this.state.isStickerPickerOpen,setStickerPickerOpen:this.setStickerPickerOpen,menuPosition:s,key:"stickers"}));const u=r&&(!this.state.isComposerEmpty||this.state.haveRecording),h=Lt()({mx_MessageComposer:!0,"mx_MessageComposer--compact":this.props.compact,mx_MessageComposer_e2eStatus:t,mx_MessageComposer_wysiwyg:this.state.isWysiwygLabEnabled});return i.createElement(zt.m,{open:c,description:(0,tt.U)(d),placement:"bottom"},i.createElement("div",{className:h,ref:this.ref,role:"region","aria-label":(0,l._t)("a11y|message_composer")},i.createElement("div",{className:"mx_MessageComposer_wrapper"},i.createElement(zp,{room:this.props.room,key:this.props.room.roomId}),i.createElement(Wp,{replyToEvent:this.props.replyToEvent,permalinkCreator:this.props.permalinkCreator}),i.createElement("div",{className:"mx_MessageComposer_row"},t,a,i.createElement("div",{className:"mx_MessageComposer_actions"},n,r&&i.createElement(mg.Ay,{addEmoji:this.addEmoji,haveRecording:this.state.haveRecording,isMenuOpen:this.state.isMenuOpen,isStickerPickerOpen:this.state.isStickerPickerOpen,menuPosition:s,relation:this.props.relation,onRecordStartEndClick:this.onRecordStartEndClick,setStickerPickerOpen:this.setStickerPickerOpen,showLocationButton:!window.electron&&D.A.getValue(gt.f.LocationSharing),showPollsButton:this.state.showPollsButton,showStickersButton:this.showStickersButton,isRichTextEnabled:this.state.isRichTextEnabled,onComposerModeClick:this.onRichTextToggle,toggleButtonMenu:this.toggleButtonMenu}),u&&i.createElement(gg,{key:"controls_send",onClick:this.sendMessage,title:this.state.haveRecording?(0,l._t)("composer|send_button_voice_message"):void 0}))))))}}(0,w.A)(vg,"contextType",gn.Ay),(0,w.A)(vg,"defaultProps",{compact:!1,isRichTextEnabled:!0});const _g=(0,de.dt)(vg);class fg{constructor(e){(0,w.A)(this,"serializedParts",null),(0,w.A)(this,"caret",null),this.event=e}setEditorState(e,t){this.caret=e,this.serializedParts=t}hasEditorState(){return!!this.serializedParts}getSerializedParts(){return this.serializedParts}getCaret(){return this.caret}getEvent(){return this.event}}var Eg=n("./src/components/views/elements/ProgressBar.tsx"),yg=n("./src/utils/FileUtils.ts");class bg extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"onAction",e=>{this.unmounted||function(e){return[H.r.UploadStarted,H.r.UploadProgress,H.r.UploadFailed,H.r.UploadFinished,H.r.UploadCanceled].includes(e.action)}(e)&&this.setState(this.calculateState())}),(0,w.A)(this,"onCancelClick",e=>{e.preventDefault(),hm.Ay.sharedInstance().cancelUpload(this.state.currentUpload)}),this.state=this.calculateState()}componentDidMount(){this.unmounted=!1,this.dispatcherRef=S.A.register(this.onAction)}componentWillUnmount(){this.unmounted=!0,S.A.unregister(this.dispatcherRef)}getUploadsInRoom(){return hm.Ay.sharedInstance().getCurrentUploads(this.props.relation).filter(e=>e.roomId===this.props.room.roomId)}calculateState(){const[e,...t]=this.getUploadsInRoom();return{currentUpload:e,currentFile:null==e?void 0:e.fileName,currentLoaded:null==e?void 0:e.loaded,currentTotal:null==e?void 0:e.total,countFiles:t.length+1}}render(){if(!this.state.currentFile)return null;let e;e=this.state.countFiles>1?(0,l._t)("room|upload|uploading_multiple_file",{filename:this.state.currentFile,count:this.state.countFiles-1}):(0,l._t)("room|upload|uploading_single_file",{filename:this.state.currentFile});const t=(0,yg.Ov)(this.state.currentTotal);return i.createElement("div",{className:"mx_UploadBar"},i.createElement("div",{className:"mx_UploadBar_filename"},e," (",t,")"),i.createElement(le.A,{onClick:this.onCancelClick,className:"mx_UploadBar_cancel"}),i.createElement(Eg.A,{value:this.state.currentLoaded,max:this.state.currentTotal}))}}const wg=["mxEvent","permalinkCreator","onMenuToggle"],Sg=e=>{let{mxEvent:t,permalinkCreator:n,onMenuToggle:s}=e,o=(0,g.A)(e,wg);const[r,a,c,d]=(0,bn.EF)(),m=(0,i.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.ViewRoom,event_id:t.getId(),highlighted:!0,room_id:t.getRoomId(),metricsTrigger:void 0}),d()},[t,d]),u=(0,i.useCallback)(async e=>{if(n){null==e||e.preventDefault(),null==e||e.stopPropagation();const i=n.forEvent(t.getId());await(0,Si.nC)(i),d()}},[t,d,n]);(0,i.useEffect)(()=>{null==s||s(r)},[r,s]);const h=v.J.safeGet().getRoom(t.getRoomId()),p=!!h&&!rp.aK.instance.hasMaximisedWidget(h);return i.createElement(i.Fragment,null,i.createElement(bn.oW,(0,Wt.A)({},o,{className:"mx_BaseCard_header_title_button--option",onClick:c,title:(0,l._t)("right_panel|thread_list|context_menu_label"),isExpanded:r,ref:a})),r&&i.createElement(Aa.Ay,(0,Wt.A)({onFinished:d,className:"mx_RoomTile_contextMenu",compact:!0,rightAligned:!0},{left:(_=a.current.getBoundingClientRect()).left+window.scrollX+_.width,top:_.bottom+window.scrollY,chevronFace:bn.t4.None}),i.createElement(Aa.tx,null,p&&i.createElement(Aa.R$,{onClick:e=>m(e),label:(0,l._t)("timeline|mab|view_in_room"),iconClassName:"mx_ThreadPanel_viewInRoom"}),n&&i.createElement(Aa.R$,{onClick:e=>u(e),label:(0,l._t)("timeline|mab|copy_link_thread"),iconClassName:"mx_ThreadPanel_copyLinkToThread"}))));var _};const Ag=({parent:e,onFileDrop:t,room:n})=>{const[s,o]=(0,i.useState)({dragging:!1,counter:0}),r=(0,So.U)(n,e=>e.maySendMessage(n.client.getUserId()));return(0,i.useEffect)(()=>{if(!r||!e||e.ondrop)return;const n=e=>{e.stopPropagation(),e.preventDefault(),e.dataTransfer&&o(t=>({counter:t.counter+1,dragging:!(!e.dataTransfer.types.includes("Files")&&!e.dataTransfer.types.includes("application/x-moz-file"))||t.dragging}))},i=e=>{e.stopPropagation(),e.preventDefault(),o(e=>({counter:e.counter-1,dragging:!(e.counter<=1)&&e.dragging}))},s=e=>{e.stopPropagation(),e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="none",(e.dataTransfer.types.includes("Files")||e.dataTransfer.types.includes("application/x-moz-file"))&&(e.dataTransfer.dropEffect="copy"))},a=e=>{e.stopPropagation(),e.preventDefault(),e.dataTransfer&&(t(e.dataTransfer),o(e=>({dragging:!1,counter:e.counter-1})))};return null==e||e.addEventListener("drop",a),null==e||e.addEventListener("dragover",s),null==e||e.addEventListener("dragenter",n),null==e||e.addEventListener("dragleave",i),()=>{null==e||e.removeEventListener("drop",a),null==e||e.removeEventListener("dragover",s),null==e||e.removeEventListener("dragenter",n),null==e||e.removeEventListener("dragleave",i)}},[e,t,r]),r&&s.dragging?i.createElement("div",{className:"mx_FileDropTarget"},i.createElement("img",{src:"img/upload-big.ade34b1.svg",className:"mx_FileDropTarget_image",alt:""}),(0,l._t)("room|drop_file_prompt")):null};var Cg,xg,Rg=n("./src/dispatcher/payloads/ComposerInsertPayload.ts");function kg(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 Ig(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kg(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kg(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class Tg extends i.Component{constructor(e){var t;super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"layoutWatcherRef",void 0),(0,w.A)(this,"timelinePanel",(0,i.createRef)()),(0,w.A)(this,"card",(0,i.createRef)()),(0,w.A)(this,"eventId",void 0),(0,w.A)(this,"onAction",e=>{switch(e.phase==kl.n.ThreadView&&e.event&&this.setupThread(e.event),e.action){case H.r.ComposerInsert:if(e.composerType)break;if(e.timelineRenderingType!==gn.Ae.Thread)break;S.A.dispatch(Ig(Ig({},e),{},{composerType:this.state.editState?Rg.D.Edit:Rg.D.Send}));break;case H.r.EditEvent:if(e.timelineRenderingType!==gn.Ae.Thread)return;if(e.event&&!e.event.getThread())return;this.setState({editState:e.event?new fg(e.event):void 0},()=>{var t;e.event&&(null===(t=this.timelinePanel.current)||void 0===t||t.scrollToEventIfNeeded(e.event.getId()))});break;case"reply_to_event":e.context===gn.Ae.Thread&&this.setState({replyToEvent:e.event})}}),(0,w.A)(this,"setupThread",e=>{const t=e.getId();let n=this.props.room.getThread(t);if(!n){const i=[];null===e.status&&i.push(e),n=this.props.room.createThread(t,e,i,!0)}this.updateThread(n)}),(0,w.A)(this,"onNewThread",e=>{e.id===this.props.mxEvent.getId()&&this.setupThread(this.props.mxEvent)}),(0,w.A)(this,"updateThreadRelation",()=>{this.setState({lastReply:this.threadLastReply})}),(0,w.A)(this,"updateThread",e=>{this.state.thread!==e&&(this.setupThreadListeners(e,this.state.thread),e&&this.setState({thread:e,lastReply:this.threadLastReply},async()=>this.postThreadUpdate(e)))}),(0,w.A)(this,"resetJumpToEvent",e=>{var t,n;this.props.initialEvent&&this.props.initialEventScrollIntoView&&e===(null===(t=this.props.initialEvent)||void 0===t?void 0:t.getId())&&S.A.dispatch({action:H.r.ViewRoom,room_id:this.props.room.roomId,event_id:null===(n=this.props.initialEvent)||void 0===n?void 0:n.getId(),highlighted:this.props.isInitialEventHighlighted,scroll_into_view:!1,replyingToEvent:this.state.replyToEvent,metricsTrigger:void 0})}),(0,w.A)(this,"onMeasurement",e=>{this.setState({narrow:e})}),(0,w.A)(this,"onKeyDown",e=>{let t=!1;if((0,Us.zM)().getRoomAction(e)===si.bY.UploadFile)S.A.dispatch({action:"upload_file",context:gn.Ae.Thread},!0),t=!0;t&&(e.stopPropagation(),e.preventDefault())}),(0,w.A)(this,"onFileDrop",e=>{const t=this.props.mxEvent.getRoomId();t?hm.Ay.sharedInstance().sendContentListToRoom(Array.from(e.files),t,this.threadRelation,v.J.safeGet(),gn.Ae.Thread):console.warn("Unknwon roomId for event",this.props.mxEvent)}),(0,w.A)(this,"renderThreadViewHeader",()=>i.createElement("div",{className:"mx_BaseCard_header_title"},i.createElement(bh.A,{size:"4",className:"mx_BaseCard_header_title_heading"},(0,l._t)("common|thread")),i.createElement(Sg,{mxEvent:this.props.mxEvent,permalinkCreator:this.props.permalinkCreator}))),this.setEventId(this.props.mxEvent);const n=null!==(t=this.props.room.getThread(this.eventId))&&void 0!==t?t:void 0;this.state={layout:D.A.getValue("layout"),narrow:!1,thread:n,lastReply:null==n?void 0:n.lastReply(e=>e.isRelation(o.THREAD_RELATION_TYPE.name)&&!e.status)}}componentDidMount(){this.setupThreadListeners(this.state.thread),this.layoutWatcherRef=D.A.watchSetting("layout",null,(...[,,,e])=>this.setState({layout:e})),this.state.thread&&this.postThreadUpdate(this.state.thread),this.setupThread(this.props.mxEvent),this.dispatcherRef=S.A.register(this.onAction),this.props.room.on(o.ThreadEvent.New,this.onNewThread)}componentWillUnmount(){var e;S.A.unregister(this.dispatcherRef);const t=this.props.mxEvent.getRoomId();D.A.unwatchSetting(this.layoutWatcherRef);const n=Do.M.instance.roomViewStore.getRoomId()!==t;this.props.initialEvent&&!n&&S.A.dispatch({action:H.r.ViewRoom,room_id:this.props.room.roomId,metricsTrigger:void 0}),S.A.dispatch({action:H.r.ViewThread,thread_id:null}),null===(e=this.state.thread)||void 0===e||e.off(o.ThreadEvent.NewReply,this.updateThreadRelation),this.props.room.off(o.RoomEvent.LocalEchoUpdated,this.updateThreadRelation),this.props.room.removeListener(o.ThreadEvent.New,this.onNewThread)}componentDidUpdate(e){e.mxEvent!==this.props.mxEvent&&(this.setEventId(this.props.mxEvent),this.setupThread(this.props.mxEvent)),e.room!==this.props.room&&Rl.A.instance.setCard({phase:kl.n.RoomSummary})}setEventId(e){if(!e.getId())throw new Error("Got thread event without id");this.eventId=e.getId()}get threadLastReply(){var e,t;return null!==(e=null===(t=this.state.thread)||void 0===t?void 0:t.lastReply(e=>e.isRelation(o.THREAD_RELATION_TYPE.name)&&!e.status))&&void 0!==e?e:void 0}async postThreadUpdate(e){var t,n;S.A.dispatch({action:H.r.ViewThread,thread_id:e.id}),e.emit(o.ThreadEvent.ViewThread),this.updateThreadRelation(),null===(t=this.timelinePanel.current)||void 0===t||t.refreshTimeline(null===(n=this.props.initialEvent)||void 0===n?void 0:n.getId())}setupThreadListeners(e,t){var n;t&&(null===(n=this.state.thread)||void 0===n||n.off(o.ThreadEvent.NewReply,this.updateThreadRelation),this.props.room.off(o.RoomEvent.LocalEchoUpdated,this.updateThreadRelation));e&&(e.on(o.ThreadEvent.NewReply,this.updateThreadRelation),this.props.room.on(o.RoomEvent.LocalEchoUpdated,this.updateThreadRelation))}get threadRelation(){var e,t,n,i;const s={rel_type:o.THREAD_RELATION_TYPE.name,event_id:null===(e=this.state.thread)||void 0===e?void 0:e.id,is_falling_back:!0},r=null!==(t=null===(n=this.state.lastReply)||void 0===n?void 0:n.getId())&&void 0!==t?t:null===(i=this.state.thread)||void 0===i?void 0:i.id;return r&&(s["m.in_reply_to"]={event_id:r}),s}render(){var e,t,n,o;const r=this.props.isInitialEventHighlighted?null===(e=this.props.initialEvent)||void 0===e?void 0:e.getId():void 0,a=this.threadRelation;let l;var c;this.state.thread?(this.props.initialEvent&&this.props.initialEvent.getRoomId()!==this.state.thread.roomId&&s.vF.warn("ThreadView attempting to render TimelinePanel with mismatched initialEvent",this.state.thread.roomId,this.props.initialEvent.getRoomId(),this.props.initialEvent.getId()),l=i.createElement(i.Fragment,null,i.createElement(Ag,{parent:this.card.current,onFileDrop:this.onFileDrop,room:this.props.room}),i.createElement(Mp,{key:this.state.thread.id,ref:this.timelinePanel,showReadReceipts:this.context.showReadReceipts,manageReadReceipts:!0,manageReadMarkers:!0,sendReadReceiptOnLoad:!0,timelineSet:this.state.thread.timelineSet,showUrlPreview:this.context.showUrlPreview,layout:this.state.layout===Bt.P.Bubble?Bt.P.Bubble:Bt.P.Group,hideThreadedMessages:!1,hidden:!1,showReactions:!0,className:"mx_RoomView_messagePanel",permalinkCreator:this.props.permalinkCreator,membersLoaded:!0,editState:this.state.editState,eventId:null===(c=this.props.initialEvent)||void 0===c?void 0:c.getId(),highlightedEventId:r,eventScrollIntoView:this.props.initialEventScrollIntoView,onEventScrolledIntoView:this.resetJumpToEvent}))):l=i.createElement("div",{className:"mx_RoomView_messagePanelSpinner"},i.createElement(ce.A,null));return i.createElement(Ji.yw,(0,Wt.A)({},this.context,{timelineRenderingType:gn.Ae.Thread,threadId:null===(t=this.state.thread)||void 0===t?void 0:t.id,liveTimeline:null===(n=this.state)||void 0===n||null===(n=n.thread)||void 0===n||null===(n=n.timelineSet)||void 0===n?void 0:n.getLiveTimeline(),narrow:this.state.narrow}),i.createElement(Rm.A,{className:Lt()("mx_ThreadView mx_ThreadPanel",{mx_ThreadView_narrow:this.state.narrow}),onClose:this.props.onClose,withoutScrollContainer:!0,header:this.renderThreadViewHeader(),ref:this.card,onKeyDown:this.onKeyDown,onBack:e=>{ri.A.trackInteraction("WebThreadViewBackButton",e)}},i.createElement(Dp,{sensor:this.card,onMeasurement:this.onMeasurement}),i.createElement("div",{className:"mx_ThreadView_timelinePanelWrapper"},l),hm.Ay.sharedInstance().getCurrentUploads(a).length>0&&i.createElement(bg,{room:this.props.room,relation:a}),(null===(o=this.state.thread)||void 0===o?void 0:o.timelineSet)&&i.createElement(_g,{room:this.props.room,resizeNotifier:this.props.resizeNotifier,relation:a,replyToEvent:this.state.replyToEvent,permalinkCreator:this.props.permalinkCreator,e2eStatus:this.props.e2eStatus,compact:!0})))}}function Pg(){return Pg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Pg.apply(null,arguments)}(0,w.A)(Tg,"contextType",gn.Ay);var Ng=function(e,t){return i.createElement("svg",Pg({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16",role:"presentation","aria-hidden":!0,ref:t},e),Cg||(Cg=i.createElement("path",{stroke:"#656D77",strokeLinecap:"round",strokeWidth:1.5,d:"M1.75 2h12.5M1.75 6h12.5M1.75 10h6.5"})),xg||(xg=i.createElement("path",{stroke:"#656D77",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m6.172 13 2.121 2.121 5.657-5.657"})))},Mg=(0,i.forwardRef)(Ng);var Dg=n("./src/accessibility/context_menu/ContextMenuButton.tsx");let Og=function(e){return e[e.My=0]="My",e[e.All=1]="All",e}({});const Fg=({label:e,description:t,onClick:n,isSelected:s})=>i.createElement(bn.sH,{active:s,className:"mx_ThreadPanel_Header_FilterOptionItem",onClick:n},i.createElement("span",null,e),i.createElement("span",null,t)),Lg=({filterOption:e,setFilterOption:t})=>{const n=(0,de.nH)(),o=(0,Ji.ME)("room"),[r,a,c,d]=(0,bn.EF)(),m=[{label:(0,l._t)("threads|all_threads"),description:(0,l._t)("threads|all_threads_description"),key:Og.All},{label:(0,l._t)("threads|my_threads"),description:(0,l._t)("threads|my_threads_description"),key:Og.My}],u=m.find(t=>t.key===e),h=m.map(e=>i.createElement(Fg,{key:e.key,label:e.label,description:e.description,onClick:()=>{t(e.key),d()},isSelected:e===u})),p=r?i.createElement(bn.Ay,{top:108,right:33,onFinished:d,chevronFace:bn.t4.Top,wrapperClassName:"mx_BaseCard_header_title"},h):null,g=i.useCallback(e=>{ri.A.trackInteraction("WebThreadsMarkAllReadButton",e),o.room?(0,Ui.G9)(o.room,n).catch(e=>{s.vF.error("Failed to mark all threads read",e)}):s.vF.error("No room in context to mark all threads read")},[o.room,n]);return i.createElement("div",{className:"mx_ThreadPanelHeader"},i.createElement(zt.m,{label:(0,l._t)("threads|mark_all_read")},i.createElement(Sl.K,{onClick:g,size:"28px"},i.createElement(Mg,{height:20,width:20}))),i.createElement("div",{className:"mx_ThreadPanel_vertical_separator"}),i.createElement(Dg.V,{className:"mx_ThreadPanel_dropdown",ref:a,isExpanded:r,onClick:e=>{c(),ri.A.trackInteraction("WebRightPanelThreadPanelFilterDropdown",e)}},`${(0,l._t)("threads|show_thread_filter")} ${null==u?void 0:u.label}`),p)},Ug=({roomId:e,onClose:t,permalinkCreator:n})=>{var s,r,a;const c=(0,i.useContext)(de.Ay),d=(0,i.useContext)(gn.Ay),m=(0,i.useRef)(null),u=(0,i.useRef)(null),h=(0,i.useRef)(null),[p,g]=(0,i.useState)(Og.All),[v,_]=(0,i.useState)(null),[f,E]=(0,i.useState)(!1),y=p===Og.My?null==v?void 0:v.threadsTimelineSets[1]:null==v?void 0:v.threadsTimelineSets[0],b=Boolean(null==v||null===(s=v.threadsTimelineSets)||void 0===s||null===(s=s[0])||void 0===s||null===(s=s.getLiveTimeline())||void 0===s||null===(s=s.getEvents())||void 0===s?void 0:s.length);return(0,i.useEffect)(()=>{const t=c.getRoom(e);null==t||t.createThreadsTimelineSets().then(()=>t.fetchRoomThreads()).then(()=>{g(Og.All),_(t)})},[c,e]),(0,i.useEffect)(()=>{var e;y&&!o.Thread.hasServerSideSupport&&(null===(e=m.current)||void 0===e||e.refreshTimeline())},[y,m]),i.createElement(Ji.yw,(0,Wt.A)({},d,{timelineRenderingType:gn.Ae.ThreadsList,showHiddenEvents:!0,narrow:f}),i.createElement(Rm.A,{header:(0,l._t)("common|threads"),id:"thread-panel",className:"mx_ThreadPanel",ariaLabelledBy:"thread-panel-tab",role:"tabpanel",onClose:t,withoutScrollContainer:!0,ref:u,closeButtonRef:h},b&&i.createElement(Lg,{filterOption:p,setFilterOption:g}),i.createElement(Dp,{sensor:u,onMeasurement:E}),y?i.createElement(Mp,{key:p+":"+(null!==(r=null===(a=y.getFilter())||void 0===a?void 0:a.filterId)&&void 0!==r?r:e),ref:m,showReadReceipts:!1,manageReadReceipts:!1,manageReadMarkers:!1,sendReadReceiptOnLoad:!1,timelineSet:y,showUrlPreview:!1,empty:i.createElement(Op,{Icon:Rn.A,title:(0,l._t)("threads|empty_title"),description:(0,l._t)("threads|empty_description",{replyInThread:(0,l._t)("action|reply_in_thread")})}),alwaysShowTimestamps:!0,layout:Bt.P.Group,hideThreadedMessages:!1,hidden:!1,showReactions:!1,className:"mx_RoomView_messagePanel",membersLoaded:!0,permalinkCreator:n,disableGrouping:!0}):i.createElement("div",{className:"mx_AutoHideScrollbar"},i.createElement(ce.A,null))))};var Vg=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/notifications.js");class Bg extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"card",i.createRef()),(0,w.A)(this,"onMeasurement",e=>{this.setState({narrow:e})}),this.state={narrow:!1}}render(){const e=i.createElement(Op,{Icon:Vg.A,title:(0,l._t)("notif_panel|empty_heading"),description:(0,l._t)("notif_panel|empty_description")});let t;const n=v.J.safeGet().getNotifTimelineSet();return n?t=i.createElement(Mp,{manageReadReceipts:!1,manageReadMarkers:!1,timelineSet:n,showUrlPreview:!1,empty:e,alwaysShowTimestamps:!0,layout:Bt.P.Group}):(s.vF.error("No notifTimelineSet available!"),t=i.createElement(ce.A,null)),i.createElement(Ji.yw,(0,Wt.A)({},this.context,{timelineRenderingType:gn.Ae.Notification,narrow:this.state.narrow}),i.createElement(Rm.A,{header:(0,l._t)("notifications|enable_prompt_toast_title"),className:"mx_ThreadPanel",onClose:this.props.onClose,withoutScrollContainer:!0},i.createElement(Dp,{sensor:this.card,onMeasurement:this.onMeasurement}),t))}}(0,w.A)(Bg,"contextType",gn.Ay);var jg=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/visibility-on.js"),Wg=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/forward.js"),Hg=n("./src/components/views/messages/MessageEvent.tsx"),zg=n("./src/events/forward/getForwardableEvent.ts"),Kg=(n("./src/events/location/getShareableLocationEvent.ts"),n("./src/components/views/dialogs/ConfirmRedactDialog.tsx"));function Gg({event:e,room:t,permalinkCreator:n}){var s,o;const r=e.getSender();if(!r)throw new Error("Pinned event unexpectedly has no sender");const a=Boolean(e.threadRootId),c=!e.isThreadRoot&&a,d=(0,i.useId)();return i.createElement("div",{className:"mx_PinnedEventTile",role:"listitem"},i.createElement("div",null,i.createElement(ln.A,{className:"mx_PinnedEventTile_senderAvatar",member:e.sender,size:"32px",fallbackUserId:r})),i.createElement("div",{className:"mx_PinnedEventTile_wrapper"},i.createElement("div",{className:"mx_PinnedEventTile_top"},i.createElement(zt.m,{label:(null===(s=e.sender)||void 0===s?void 0:s.name)||r},i.createElement("span",{className:Lt()("mx_PinnedEventTile_sender",(0,Jt.yJ)(r))},(null===(o=e.sender)||void 0===o?void 0:o.name)||r)),i.createElement(Jg,{event:e,room:t,permalinkCreator:n,contentId:d})),i.createElement(Hg.A,{id:d,mxEvent:e,maxImageHeight:150,permalinkCreator:n,replacingEventId:e.replacingEventId()}),c&&i.createElement("div",{className:"mx_PinnedEventTile_thread"},i.createElement(Rn.A,null),(0,l._t)("right_panel|pinned_messages|reply_thread",{},{link:n=>i.createElement("button",{type:"button",onClick:()=>{if(!e.threadRootId)return;const n=t.findEventById(e.threadRootId);n&&S.A.dispatch({action:H.r.ShowThread,rootEvent:n,push:!0})}},n)}))))}function Jg({event:e,room:t,permalinkCreator:n,contentId:s}){var r;const[a,c]=(0,i.useState)(!1),d=(0,de.nH)(),m=(0,i.useCallback)(()=>{ri.A.trackInteraction("PinnedMessageListViewTimeline"),S.A.dispatch({action:H.r.ViewRoom,event_id:e.getId(),highlighted:!0,room_id:e.getRoomId(),metricsTrigger:void 0})},[e]),u=(0,So.U)(t,()=>oi.A.canUnpin(d,e)),h=(0,i.useCallback)(async()=>{await oi.A.pinOrUnpinEvent(d,e),ri.A.trackPinUnpinMessage("Unpin","MessagePinningList")},[e,d]),p=(0,nn.qe)(e)&&(0,zg.e)(e,d),g=(0,i.useCallback)(()=>{p&&S.A.dispatch({action:H.r.OpenForwardDialog,event:p,permalinkCreator:n})},[p,n]),v=(null===(r=t.getLiveTimeline().getState(o.EventTimeline.FORWARDS))||void 0===r?void 0:r.maySendRedactionForEvent(e,d.getSafeUserId()))&&e.getType()!==o.EventType.RoomServerAcl&&e.getType()!==o.EventType.RoomEncryption,_=(0,i.useCallback)(()=>(0,Kg.Q)({mxEvent:e}),[e]);return i.createElement(bl.W,{open:a,onOpenChange:c,showTitle:!1,title:(0,l._t)("right_panel|pinned_messages|menu"),side:"right",align:"start",trigger:i.createElement(Sl.K,{size:"24px","aria-label":(0,l._t)("right_panel|pinned_messages|menu"),"aria-describedby":s},i.createElement(xn.A,null))},i.createElement(wl.D,{Icon:jg.A,label:(0,l._t)("right_panel|pinned_messages|view"),onSelect:m}),u&&i.createElement(wl.D,{Icon:kn.A,label:(0,l._t)("action|unpin"),onSelect:h}),p&&i.createElement(wl.D,{Icon:Wg.A,label:(0,l._t)("action|forward"),onSelect:g}),v&&i.createElement(i.Fragment,null,i.createElement(od.w,null),i.createElement(wl.D,{kind:"critical",Icon:Tn.A,label:(0,l._t)("action|delete"),onSelect:_})))}function $g({matrixClient:e,roomId:t,onFinished:n}){return i.createElement(Q.A,{hasCancel:!0,title:(0,l._t)("right_panel|pinned_messages|unpin_all|title"),titleClass:"mx_UnpinAllDialog_title",className:"mx_UnpinAllDialog",onFinished:n,fixedWidth:!1},i.createElement(Al.E,{as:"span"},(0,l._t)("right_panel|pinned_messages|unpin_all|content")),i.createElement("div",{className:"mx_UnpinAllDialog_buttons"},i.createElement(Y.$,{destructive:!0,onClick:async()=>{try{await oi.A.unpinAllEvents(e,t),ri.A.trackPinUnpinMessage("Unpin","UnpinAll")}catch(e){s.vF.error("Failed to unpin all events:",e)}n()}},(0,l._t)("action|continue")),i.createElement(Y.$,{kind:"tertiary",onClick:n},(0,l._t)("action|cancel"))))}function qg({room:e,onClose:t,permalinkCreator:n}){const s=(0,de.nH)(),r=(0,i.useContext)(gn.Ay),a=nh(e),c=(e=>{const[t,n]=(0,i.useState)(new Set),s=(0,i.useCallback)(t=>{t&&t.getType()!==Zu.M||n(ih(e))},[e]);return(0,Fi.YK)(e,o.RoomEvent.AccountData,s),(0,i.useEffect)(()=>(n(ih(e)),()=>{n(new Set)}),[e]),t})(e),d=oh(e,a);let m;return(0,i.useEffect)(()=>{if(!s||s.isGuest())return;a.filter(e=>!c.has(e)).length>0&&s.setRoomAccountData(e.roomId,Zu.M,{event_ids:a})},[s,e.roomId,a,c]),m=a.length?null!=d&&d.length?i.createElement(Yg,{events:(0,se.Bo)(d),room:e,permalinkCreator:n}):i.createElement(ce.A,null):i.createElement(Op,{Icon:In.A,title:(0,l._t)("right_panel|pinned_messages|empty_title"),description:(0,l._t)("right_panel|pinned_messages|empty_description",{pinAction:(0,l._t)("action|pin")})}),i.createElement(Rm.A,{header:(0,l._t)("right_panel|pinned_messages|header",{count:a.length}),className:"mx_PinnedMessagesCard",onClose:t},i.createElement(Ji.yw,(0,Wt.A)({},r,{timelineRenderingType:gn.Ae.Pinned}),m))}function Yg({events:e,room:t,permalinkCreator:n}){const s=(0,de.nH)(),o=(0,So.U)(t,()=>oi.A.userHasPinOrUnpinPermission(s,t)),r=(0,i.useCallback)(async()=>{R.Ay.createDialog($g,{roomId:t.roomId,matrixClient:s})},[t,s]);return i.createElement(i.Fragment,null,i.createElement("div",{className:Lt()("mx_PinnedMessagesCard_wrapper",{mx_PinnedMessagesCard_wrapper_unpin_all:o}),role:"list"},e.map((s,o)=>i.createElement(i.Fragment,null,i.createElement(Gg,{key:s.getId(),event:s,permalinkCreator:n,room:t}),e.length-1!==o&&i.createElement(od.w,{key:`separator-${s.getId()}`,className:"mx_PinnedMessagesCard_Separator"})))),o&&i.createElement("div",{className:"mx_PinnedMessagesCard_unpin"},i.createElement(Y.$,{kind:"tertiary",onClick:r},(0,l._t)("right_panel|pinned_messages|unpin_all|button"))))}const Xg=e=>{const t=Lt()({mx_JumpToBottomButton:!0,mx_JumpToBottomButton_highlight:e.highlight});let n;return e.numUnreadMessages&&(n=i.createElement("div",{className:"mx_JumpToBottomButton_badge"},e.numUnreadMessages)),i.createElement("div",{className:t},i.createElement(le.A,{className:"mx_JumpToBottomButton_scrollDown",title:(0,l._t)("room|jump_to_bottom_button"),onClick:e.onScrollToBottomClick}),n)};class Qg extends i.Component{constructor(e){super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"layoutWatcherRef",void 0),(0,w.A)(this,"timelinePanel",i.createRef()),(0,w.A)(this,"card",i.createRef()),(0,w.A)(this,"readReceiptsSettingWatcher",void 0),(0,w.A)(this,"onRoomViewStoreUpdate",async e=>{const t={initialEventId:Do.M.instance.roomViewStore.getInitialEventId(),isInitialEventHighlighted:Do.M.instance.roomViewStore.isInitialEventHighlighted(),replyToEvent:Do.M.instance.roomViewStore.getQuotingEvent()};this.setState(t)}),(0,w.A)(this,"onAction",e=>{if(e.action===H.r.EditEvent)this.setState({editState:e.event?new fg(e.event):void 0},()=>{var t;e.event&&(null===(t=this.timelinePanel.current)||void 0===t||t.scrollToEventIfNeeded(e.event.getId()))})}),(0,w.A)(this,"onScroll",()=>{const e=this.timelinePanel.current;e&&(e.isAtEndOfLiveTimeline()?this.setState({atEndOfLiveTimeline:!0}):this.setState({atEndOfLiveTimeline:!1}),this.state.initialEventId&&this.state.isInitialEventHighlighted&&S.A.dispatch({action:H.r.ViewRoom,room_id:this.props.room.roomId,event_id:this.state.initialEventId,highlighted:!1,replyingToEvent:this.state.replyToEvent,metricsTrigger:void 0}))}),(0,w.A)(this,"onMeasurement",e=>{this.setState({narrow:e})}),(0,w.A)(this,"jumpToLiveTimeline",()=>{var e;this.state.initialEventId&&this.state.isInitialEventHighlighted?S.A.dispatch({action:H.r.ViewRoom,room_id:this.props.room.roomId}):(null===(e=this.timelinePanel.current)||void 0===e||e.jumpToLiveTimeline(),S.A.fire(H.r.FocusSendMessageComposer))}),this.state={showReadReceipts:D.A.getValue("showReadReceipts",e.room.roomId),layout:D.A.getValue("layout"),atEndOfLiveTimeline:!0,narrow:!1}}componentDidMount(){Do.M.instance.roomViewStore.addListener(Br.H,this.onRoomViewStoreUpdate),this.dispatcherRef=S.A.register(this.onAction),this.readReceiptsSettingWatcher=D.A.watchSetting("showReadReceipts",null,(...[,,,e])=>this.setState({showReadReceipts:e})),this.layoutWatcherRef=D.A.watchSetting("layout",null,(...[,,,e])=>this.setState({layout:e}))}componentWillUnmount(){Do.M.instance.roomViewStore.removeListener(Br.H,this.onRoomViewStoreUpdate),D.A.unwatchSetting(this.readReceiptsSettingWatcher),D.A.unwatchSetting(this.layoutWatcherRef),S.A.unregister(this.dispatcherRef)}render(){var e,t;const n=this.state.isInitialEventHighlighted?this.state.initialEventId:void 0;let s;this.state.atEndOfLiveTimeline||(s=i.createElement(Xg,{highlight:this.props.room.getUnreadNotificationCount(o.NotificationCountType.Highlight)>0,onScrollToBottomClick:this.jumpToLiveTimeline}));const r=hm.Ay.sharedInstance().getCurrentUploads(this.props.composerRelation).length>0,a=this.props.room.getMyMembership()===X.O.Join;return i.createElement(Ji.yw,(0,Wt.A)({},this.context,{timelineRenderingType:null!==(e=this.props.timelineRenderingType)&&void 0!==e?e:this.context.timelineRenderingType,liveTimeline:null===(t=this.props.timelineSet)||void 0===t?void 0:t.getLiveTimeline(),narrow:this.state.narrow}),i.createElement(Rm.A,{className:this.props.classNames,onClose:this.props.onClose,withoutScrollContainer:!0,header:(0,l._t)("right_panel|video_room_chat|title"),ref:this.card},i.createElement(Dp,{sensor:this.card,onMeasurement:this.onMeasurement}),i.createElement("div",{className:"mx_TimelineCard_timeline"},s,i.createElement(Mp,{ref:this.timelinePanel,showReadReceipts:this.state.showReadReceipts,manageReadReceipts:!0,manageReadMarkers:!1,sendReadReceiptOnLoad:!0,timelineSet:this.props.timelineSet,showUrlPreview:this.context.showUrlPreview,layout:this.state.layout===Bt.P.Bubble?Bt.P.Bubble:Bt.P.Group,hideThreadedMessages:!1,hidden:!1,showReactions:!0,className:"mx_RoomView_messagePanel",permalinkCreator:this.props.permalinkCreator,membersLoaded:!0,editState:this.state.editState,eventId:this.state.initialEventId,highlightedEventId:n,onScroll:this.onScroll})),r&&i.createElement(bg,{room:this.props.room,relation:this.props.composerRelation}),a&&i.createElement(_g,{room:this.props.room,relation:this.props.composerRelation,resizeNotifier:this.props.resizeNotifier,replyToEvent:this.state.replyToEvent,permalinkCreator:this.props.permalinkCreator,e2eStatus:this.props.e2eStatus,compact:!0})))}}(0,w.A)(Qg,"contextType",gn.Ay);var Zg=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/plus.js");const ev=({app:e,room:t})=>{const n=ph.A.getWidgetName(e),[s,o]=(0,i.useState)();(0,i.useEffect)(()=>{o(ph.A.canUserModifyWidgets(t.client,t.roomId))},[t.client,t.roomId]);const r=rp.aK.instance.isInContainer(t,e,rp.mc.Top),a=r?()=>{rp.aK.instance.moveToContainer(t,e,rp.mc.Right)}:()=>{rp.aK.instance.moveToContainer(t,e,rp.mc.Top)},[c,d,m,u]=(0,bn.EF)();let h;if(c){var p,g,v;const t=null===(p=d.current)||void 0===p?void 0:p.getBoundingClientRect(),n=null!==(g=null==t?void 0:t.right)&&void 0!==g?g:0,s=null!==(v=null==t?void 0:t.top)&&void 0!==v?v:0;h=i.createElement(_p,{chevronFace:bn.t4.None,right:ba.A.instance.windowWidth-n,bottom:ba.A.instance.windowHeight-s,onFinished:u,app:e})}const _=!r&&!rp.aK.instance.canAddToContainer(t,rp.mc.Top);let f;f=_?(0,l._t)("right_panel|pinned_messages|limits",{count:rp.yQ}):r?(0,l._t)("action|unpin"):(0,l._t)("action|pin");const E=rp.aK.instance.isInContainer(t,e,rp.mc.Center);let y="";r?y=(0,l._t)("widget|unpin_to_view_right_panel"):E&&(y=(0,l._t)("widget|close_to_view_right_panel"));const b=Lt()("mx_BaseCard_Button mx_ExtensionsCard_Button",{mx_ExtensionsCard_Button_pinned:r});return i.createElement("div",{className:b,ref:d},i.createElement(le.A,{className:"mx_ExtensionsCard_icon_app",onClick:()=>{Rl.A.instance.pushCard({phase:kl.n.Widget,state:{widgetId:e.id}})},title:r||E?y:void 0,disabled:r||E},i.createElement(Ep,{app:e,size:"24px"}),i.createElement(Al.E,{size:"md",weight:"medium",className:"mx_lineClamp"},n)),s&&i.createElement(bn.oW,{className:"mx_ExtensionsCard_app_options",isExpanded:c,onClick:m,title:(0,l._t)("common|options")}),i.createElement(le.A,{className:"mx_ExtensionsCard_app_pinToggle",onClick:a,title:f,disabled:_}),h)},tv=({room:e,onClose:t})=>{const n=(0,ph.X)(e),s=(0,i.useMemo)(()=>n.filter(e=>void 0!==e.eventId),[n]);let o;if(s.length<1)o=i.createElement(Op,{Icon:Sm.A,title:(0,l._t)("right_panel|extensions_empty_title"),description:(0,l._t)("right_panel|extensions_empty_description",{addIntegrations:(0,l._t)("right_panel|add_integrations")})});else{let t=null;rp.aK.instance.canCopyLayoutToRoom(e)&&(t=i.createElement(vm.N,{onClick:()=>rp.aK.instance.copyLayoutToRoom(e)},(0,l._t)("widget|set_room_layout"))),o=i.createElement(i.Fragment,null,i.createElement(od.w,null),s.map(t=>i.createElement(ev,{key:t.id,app:t,room:e})),t)}return i.createElement(Rm.A,{header:(0,l._t)("right_panel|extensions_button"),className:"mx_ExtensionsCard",onClose:t},(0,wa.g)(gt.C.AddIntegrations)&&i.createElement(Y.$,{size:"sm",onClick:()=>{const t=L.J.sharedInstance();var n;t.hasManager()?null===(n=t.getPrimaryManager())||void 0===n||n.open(e):t.openNoManagerDialog()},kind:"secondary",Icon:Zg.A},(0,l._t)("right_panel|add_integrations")),o)},nv=(e,t=250)=>{const[n,s]=(0,i.useState)(e.getJoinedMembers()),r=(0,i.useMemo)(()=>(0,Kt.throttle)(()=>{s(e.getJoinedMembers())},t,{leading:!0,trailing:!0}),[e,t]);return(0,Fi.YK)(e.currentState,o.RoomStateEvent.Members,r),n},iv=(e,{throttleWait:t,includeInvited:n}={throttleWait:250,includeInvited:!1})=>{const[s,r]=(0,i.useState)(n?e.getInvitedAndJoinedMemberCount():e.getJoinedMemberCount()),a=(0,i.useMemo)(()=>(0,Kt.throttle)(()=>{r(n?e.getInvitedAndJoinedMemberCount():e.getJoinedMemberCount())},t,{leading:!0,trailing:!0}),[e,t,n]);return(0,Fi.YK)(e.currentState,o.RoomStateEvent.Members,a),(0,Fi.YK)(e,o.RoomEvent.Summary,a),s},sv=e=>{const[t,n]=(0,i.useState)(e.getMyMembership());return(0,Fi.YK)(e,o.RoomEvent.MyMembership,()=>{n(e.getMyMembership())}),t};function ov(e){var t,n;const i=null!==(t=$t.A.getDisplayUserIdentifier(e.userId,{roomId:e.roomId}))&&void 0!==t?t:e.userId,s=e.getMxcAvatarUrl(),o=null!==(n=s&&(0,gi.mediaFromMxc)(s).getThumbnailOfSourceHttp(96,96,"crop"))&&void 0!==n?n:void 0,r=e.user;let a;return r&&(a=r.presence||void 0),{member:{roomId:e.roomId,userId:e.userId,displayUserId:i,name:e.name,rawDisplayName:e.rawDisplayName,disambiguate:e.disambiguate,avatarThumbnailUrl:o,powerLevel:e.powerLevel,lastModifiedTime:e.getLastModifiedTime(),presenceState:a,isInvite:e.membership===X.O.Invite}}}const rv="SEPARATOR";function av(e){const t=(0,de.nH)(),n=(0,i.useMemo)(()=>t.getRoom(e),[e,t]);if(!n)throw new Error(`Room with id ${e} does not exist!`);const s=(0,i.useContext)(Do.A),[r,a]=(0,i.useState)(new Map),[l,c]=(0,i.useState)(!0),[d,m]=(0,i.useState)(0),u=iv(n,{includeInvited:!0}),[h,p]=(0,i.useState)(0),g=(0,i.useMemo)(()=>(0,Kt.throttle)(async t=>{const{joined:i,invited:o}=await s.memberListStore.loadMemberList(e,t),r=function(e,t){return e.currentState.getStateEvents("m.room.third_party_invite").filter(function(n){var i;return!!(0,Lr.Qo)(n)&&(!(t&&(null===(i=n.getContent().display_name)||void 0===i||!i.includes(t)))&&!e.currentState.getInviteForThreePidToken(n.getStateKey()))}).map(e=>({threePidInvite:{event:e}}))}(n,t),l=new Map;for(const e of i){const t=ov(e);l.set(e.userId,t)}i.length>0&&(o.length>0||r.length>0)&&l.set(rv,rv);for(const e of o){const t=ov(e);l.set(e.userId,t)}for(const e of r){const t=e.threePidInvite.event.getContent().display_name;l.set(t,e)}a(l),p(u+r.length),t||m(l.size)},500,{leading:!0,trailing:!0}),[s.memberListStore,e,n,u]),v=(0,i.useMemo)(()=>s.memberListStore.isPresenceEnabled(),[s.memberListStore]),_=(0,i.useCallback)(()=>!!n&&Fm(n),[n]),[f,E]=(0,i.useState)(_()),y=(0,i.useCallback)(()=>(null==n?void 0:n.getMyMembership())===X.O.Join&&(0,wa.g)(gt.C.InviteUsers),[n]),[b,w]=(0,i.useState)(y());return(0,Fi.YK)(t,o.RoomStateEvent.Events,t=>{if(t.getRoomId()===e&&t.getType()===o.EventType.RoomThirdPartyInvite){g();const e=_();E(e)}}),(0,Fi.YK)(t,o.RoomStateEvent.Update,t=>{t.roomId===e&&g()}),(0,Fi.YK)(t,o.RoomMemberEvent.Name,(t,n)=>{n.roomId===e&&g()}),(0,Fi.YK)(t,o.ClientEvent.Room,t=>{t.roomId===e&&g()}),(0,Fi.YK)(t,o.RoomEvent.MyMembership,(t,n,i)=>{if(t.roomId===e&&n===X.O.Join&&i!==X.O.Join){g();const e=y();w(e)}}),(0,Fi.YK)(t,o.UserEvent.Presence,(e,t)=>{r.has(t.userId)&&g()}),(0,Fi.YK)(t,o.UserEvent.CurrentlyActive,(e,t)=>{r.has(t.userId)&&g()}),(0,i.useEffect)(()=>{(async()=>{await g(),c(!1)})()},[g]),{members:Array.from(r.values()),memberCount:h,search:g,shouldShowInvite:b,isPresenceEnabled:v,isLoading:l,onInviteButtonClick:e=>{ri.A.trackInteraction("WebRightPanelMemberListInviteButton",e),e.preventDefault(),rh(n)},shouldShowSearch:d>=20,canInvite:f}}let lv=function(e){return e.Creator="creator",e.Admin="admin",e.Moderator="moderator",e}({});const cv={[lv.Creator]:(0,l.AO)("power_level|creator"),[lv.Admin]:(0,l.AO)("power_level|admin"),[lv.Moderator]:(0,l.AO)("power_level|moderator")};var dv=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/verified.js");const mv=({status:e})=>{const t=jp.g[e],n=t?(0,l._t)(t):"",s=function(e){switch(e){case km.z.Normal:return;case km.z.Verified:return i.createElement(dv.A,{height:"16px",width:"16px",className:"mx_E2EIconView_verified"});case km.z.Warning:return i.createElement(ve.A,{height:"16px",width:"16px",className:"mx_E2EIconView_warning"})}}(e);return s?i.createElement(zt.m,{label:n},i.createElement("div",{className:"mx_E2EIconView"},s)):null},uv=new hi.qr("busy","org.matrix.msc3026.busy");const hv=({className:e,presenceState:t})=>{const n=Lt()("mx_PresenceIconView",e);return i.createElement("div",{className:n},function(e){switch(e){case"online":return i.createElement(Nd.A,{height:"8px",width:"8px",className:"mx_PresenceIconView_online"});case"offline":return i.createElement(Md.A,{height:"8px",width:"8px",className:"mx_PresenceIconView_offline"});case"unavailable":case"io.element.unreachable":return i.createElement(Nd.A,{height:"8px",width:"8px",className:"mx_PresenceIconView_unavailable"});case uv.name:case uv.altName:return i.createElement(Dd.A,{height:"8px",width:"8px",className:"mx_PresenceIconView_dnd"});default:throw new Error(`Presence state "${e}" is unknown.`)}}(t))};function pv(e){let t;e.userLabel&&(t=i.createElement("div",{className:"mx_MemberTileView_userLabel"},e.userLabel));const n=(0,i.useRef)(null);return(0,i.useEffect)(()=>{var t;e.focused&&(null===(t=n.current)||void 0===t||t.focus({preventScroll:!0,focusVisible:!0}))},[e.focused]),i.createElement("div",null,i.createElement(le.A,{ref:n,className:"mx_MemberTileView",onClick:e.onClick,onFocus:e.onFocus,"aria-label":null==e?void 0:e.ariaLabel,tabIndex:e.tabIndex,role:"option","aria-posinset":e.memberIndex+1,"aria-setsize":e.memberCount},i.createElement("div",{"aria-hidden":!0,className:"mx_MemberTileView_left"},i.createElement("div",{className:"mx_MemberTileView_avatar"},e.avatarJsx," ",e.presenceJsx),i.createElement("div",{className:"mx_MemberTileView_name"},e.nameJsx)),i.createElement("div",{"aria-hidden":!0,className:"mx_MemberTileView_right"},t,e.iconJsx)))}var gv=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/user-add-solid.js");function vv({isThreePid:e}){const t=e?xd.A:gv.A;return i.createElement(we.s,{align:"center",className:"mx_InvitedIconView"},i.createElement(t,{height:"16px",width:"16px"}))}function _v(e){const t=function(e){const[t,n]=(0,i.useState)();(0,i.useEffect)(()=>{const t=v.J.safeGet(),i=async()=>{var i;const{userId:s}=e.member,o=s===t.getUserId(),r=await(null===(i=t.getCrypto())||void 0===i?void 0:i.getUserVerificationStatus(s));if(null==r||!r.isCrossSigningVerified())return void n(null!=r&&r.wasCrossSigningVerified()?km.z.Warning:km.z.Normal);const a=await(0,vt.a)(t,s),l=await(0,se.rm)(a,async e=>{var n;const i=await(null===(n=t.getCrypto())||void 0===n?void 0:n.getDeviceVerificationStatus(s,e));return!i||(o?!i.crossSigningVerified:!i.isVerified())});n(l?km.z.Warning:km.z.Verified)},s=n=>{if(n.getType()!==o.EventType.RoomEncryption)return;const{roomId:r}=e.member;n.getRoomId()===r&&(t.removeListener(o.RoomStateEvent.Events,s),i())},r=(t,n)=>{t===e.member.userId&&i()},{roomId:a}=e.member;return a&&(t.isRoomEncrypted(a)?(t.on(V.cr.UserTrustStatusChanged,r),i()):t.on(o.RoomStateEvent.Events,s)),()=>{t&&(t.removeListener(o.RoomStateEvent.Events,s),t.removeListener(V.cr.UserTrustStatusChanged,r))}},[e.member]);const s=e.member,r=e.member.name,a=new Map([[1/0,lv.Creator],[100,lv.Admin],[50,lv.Moderator]]);let c,d=e.member.powerLevel;for(const[t]of a)if(e.member.powerLevel>=t){d=t;break}const m=a.get(d);return m&&(c=(0,l._t)(cv[m])),e.member.isInvite&&(c=(0,l._t)("member_list|invited_label")),{member:s,name:r,onClick:()=>{S.A.dispatch({action:H.r.ViewUser,member:e.member,push:!0})},e2eStatus:t,showPresence:e.showPresence,userLabel:c}}(e),n=t.member,s=i.createElement(vl.A,{size:"32px",name:n.name,idName:n.userId,title:n.displayUserId,url:n.avatarThumbnailUrl,altText:(0,l._t)("common|user_avatar")}),r=t.name,a=i.createElement(qt,{withTooltip:!0,member:n,fallbackName:r||""}),c=n.presenceState;let d,m;return t.showPresence&&c&&(d=i.createElement(hv,{presenceState:c})),t.e2eStatus&&(m=i.createElement(mv,{status:t.e2eStatus})),n.isInvite&&(m=i.createElement(vv,{isThreePid:!1})),i.createElement(pv,{onClick:t.onClick,onFocus:e.onFocus,avatarJsx:s,presenceJsx:d,nameJsx:a,userLabel:t.userLabel,ariaLabel:r,iconJsx:m,focused:e.focused,tabIndex:e.tabIndex,memberIndex:e.index-(n.isInvite?1:0),memberCount:e.memberCount})}function fv(e){const t=function(e){const t=e.threePidInvite;return{name:t.event.getContent().display_name,onClick:()=>{S.A.dispatch({action:H.r.View3pidInvite,event:t.event})},userLabel:(0,l._t)("member_list|invited_label")}}(e),n=i.createElement(vl.A,{name:t.name,size:"32px","aria-hidden":"true"}),s=i.createElement(vv,{isThreePid:!0}),o=t.name;return i.createElement(pv,{nameJsx:o,avatarJsx:n,onClick:t.onClick,memberIndex:e.memberIndex,memberCount:e.memberCount,ariaLabel:o,userLabel:t.userLabel,iconJsx:s,focused:e.focused,tabIndex:e.tabIndex,onFocus:e.onFocus})}const Ev=({canInvite:e,children:t})=>{const n=e?(0,l._t)("action|invite"):(0,l._t)("member_list|invite_button_no_perms_tooltip");return i.createElement(zt.m,{description:n},t)},yv=({vm:e})=>{const t=e.shouldShowInvite,n=e.shouldShowSearch,s=!e.canInvite;return t?n?i.createElement(Ev,{canInvite:e.canInvite},i.createElement(Y.$,{className:"mx_MemberListHeaderView_invite_small",kind:"secondary",onClick:e.onInviteButtonClick,size:"sm",iconOnly:!0,Icon:oc.A,disabled:s,"aria-label":(0,l._t)("action|invite"),type:"button"})):i.createElement(Ev,{canInvite:e.canInvite},i.createElement(Y.$,{kind:"secondary",size:"sm",Icon:oc.A,className:"mx_MemberListHeaderView_invite_large",disabled:!e.canInvite,onClick:e.onInviteButtonClick,type:"button"},(0,l._t)("action|invite"))):null};const bv=e=>{const t=e.vm;let n;return n=t.shouldShowSearch?i.createElement(we.s,{justify:"center",className:"mx_MemberListHeaderView_container"},i.createElement(ym.v,{className:"mx_MemberListHeaderView_search mx_no_textinput",name:"searchMembers",placeholder:(0,l._t)("member_list|filter_placeholder"),onChange:e=>t.search(e.target.value)}),i.createElement(yv,{vm:t})):!t.shouldShowSearch&&t.shouldShowInvite?i.createElement(we.s,{justify:"center",className:"mx_MemberListHeaderView_container"},i.createElement(yv,{vm:t})):null,i.createElement(we.s,{className:"mx_MemberListHeaderView",as:"header",align:"center",justify:"space-between",direction:"column"},!t.isLoading&&n,i.createElement(Al.E,{as:"div",size:"sm",weight:"semibold",className:"mx_MemberListHeaderView_label"},function(e){return e.isLoading?i.createElement(we.s,{align:"center",gap:"8px"},i.createElement(he.Z,null)," ",(0,l._t)("common|loading")):0===e.memberCount?(0,l._t)("member_list|no_matches"):(0,l._t)("member_list|count",{count:e.memberCount})}(t)))},wv=e=>{const t=av(e.roomId),{isPresenceEnabled:n,memberCount:s}=t,o=(0,i.useCallback)(e=>e===rv?"separator":e.member?`member-${e.member.userId}`:`threePidInvite-${e.threePidInvite.event.getContent().public_key}`,[]),r=(0,i.useCallback)((e,t,r,a)=>{const l=o(t)===r.tabIndexKey,c=l&&r.focused;return t===rv?i.createElement("hr",{className:"mx_MemberListView_separator"}):t.member?i.createElement(_v,{member:t.member,showPresence:n,focused:c,tabIndex:l?0:-1,index:e,memberCount:s,onFocus:a}):i.createElement(fv,{threePidInvite:t.threePidInvite,focused:c,tabIndex:l?0:-1,memberIndex:e-1,memberCount:s,onFocus:a})},[n,o,s]),a=(0,i.useCallback)(e=>e!==rv,[]);return i.createElement(Rm.A,{id:"memberlist-panel",className:"mx_MemberListView",ariaLabelledBy:"memberlist-panel-tab",role:"tabpanel",header:(0,l._t)("common|people"),onClose:e.onClose},i.createElement(we.s,{align:"stretch",direction:"column",className:"mx_MemberListView_container"},i.createElement(Em.b,{onSubmit:e=>e.preventDefault()},i.createElement(bv,{vm:t})),i.createElement($d,{items:t.members,getItemComponent:r,getItemKey:o,isItemFocusable:a,role:"listbox","aria-label":(0,l._t)("member_list|list_title")})))};function Sv(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}class Av extends i.Component{constructor(e){super(e),(0,w.A)(this,"ref",i.createRef()),(0,w.A)(this,"delayedUpdate",(0,Kt.throttle)(()=>{this.forceUpdate()},500,{leading:!0,trailing:!0})),(0,w.A)(this,"onRoomStateMember",(e,t,n)=>{var i;this.props.room&&n.roomId===this.props.room.roomId&&(this.state.phase===kl.n.MemberList||this.state.phase===kl.n.MemberInfo&&n.userId===(null===(i=this.state.cardState)||void 0===i||null===(i=i.member)||void 0===i?void 0:i.userId))&&this.delayedUpdate()}),(0,w.A)(this,"onRightPanelStoreUpdate",()=>{const e=this.state.phase,t=Av.getDerivedStateFromProps(this.props);var n;(this.setState(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sv(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sv(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},t)),e!==t.phase)&&(null===(n=this.ref.current)||void 0===n||n.focus())}),(0,w.A)(this,"onClose",()=>{var e,t;if(null!==(e=this.props.overwriteCard)&&void 0!==e&&null!==(e=e.state)&&void 0!==e&&e.member)S.A.dispatch({action:H.r.ViewHomePage});else if(this.state.phase===kl.n.EncryptionPanel&&null!==(t=this.state.cardState)&&void 0!==t&&null!==(t=t.verificationRequest)&&void 0!==t&&t.pending)this.state.cardState.verificationRequest.cancel();else{var n,i;Rl.A.instance.togglePanel(null!==(n=null===(i=this.props.room)||void 0===i?void 0:i.roomId)&&void 0!==n?n:null)}}),this.state=Av.getDerivedStateFromProps(e)}componentDidMount(){var e;this.context.on(o.RoomStateEvent.Members,this.onRoomStateMember),Rl.A.instance.on(Br.H,this.onRightPanelStoreUpdate),null===(e=this.ref.current)||void 0===e||e.focus()}componentWillUnmount(){var e;null===(e=this.context)||void 0===e||e.removeListener(o.RoomStateEvent.Members,this.onRoomStateMember),Rl.A.instance.off(Br.H,this.onRightPanelStoreUpdate)}static getDerivedStateFromProps(e){var t,n,i;let s;return e.room&&(s=Rl.A.instance.currentCardForRoom(e.room.roomId)),{cardState:null===(t=s)||void 0===t?void 0:t.state,phase:null!==(n=null===(i=s)||void 0===i?void 0:i.phase)&&void 0!==n?n:void 0}}render(){var e,t,n,s,r;let a=i.createElement("div",null);const c=null===(e=this.props.room)||void 0===e?void 0:e.roomId,d=null!==(t=null===(n=this.props.overwriteCard)||void 0===n?void 0:n.phase)&&void 0!==t?t:this.state.phase,m=null!==(s=null===(r=this.props.overwriteCard)||void 0===r?void 0:r.state)&&void 0!==s?s:this.state.cardState;switch(d){case kl.n.MemberList:c&&(a=i.createElement(wv,{roomId:c,onClose:this.onClose}));break;case kl.n.MemberInfo:case kl.n.EncryptionPanel:if(null!=m&&m.member){var u;const e=m.member instanceof o.RoomMember?m.member:void 0;a=i.createElement(Cp.Ay,{user:m.member,room:null!==(u=this.context.getRoom(null==e?void 0:e.roomId))&&void 0!==u?u:this.props.room,key:null!=c?c:m.member.userId,onClose:this.onClose,phase:d,verificationRequest:m.verificationRequest,verificationRequestPromise:m.verificationRequestPromise})}break;case kl.n.ThreePidMemberInfo:null!=m&&m.memberInfoEvent&&(a=i.createElement(xp,{event:m.memberInfoEvent,key:c,onClose:this.onClose}));break;case kl.n.NotificationPanel:a=i.createElement(Bg,{onClose:this.onClose});break;case kl.n.PinnedMessages:this.props.room&&(a=i.createElement(qg,{room:this.props.room,onClose:this.onClose,permalinkCreator:this.props.permalinkCreator}));break;case kl.n.Timeline:this.props.room&&(a=i.createElement(Qg,{classNames:"mx_ThreadPanel mx_TimelineCard",room:this.props.room,timelineSet:this.props.room.getUnfilteredTimelineSet(),resizeNotifier:this.props.resizeNotifier,onClose:this.onClose,permalinkCreator:this.props.permalinkCreator,e2eStatus:this.props.e2eStatus}));break;case kl.n.FilePanel:c&&(a=i.createElement(Lp,{roomId:c,onClose:this.onClose}));break;case kl.n.ThreadView:this.props.room&&null!=m&&m.threadHeadEvent&&(a=i.createElement(Tg,{room:this.props.room,resizeNotifier:this.props.resizeNotifier,onClose:this.onClose,mxEvent:m.threadHeadEvent,initialEvent:m.initialEvent,isInitialEventHighlighted:m.isInitialEventHighlighted,initialEventScrollIntoView:m.initialEventScrollIntoView,permalinkCreator:this.props.permalinkCreator,e2eStatus:this.props.e2eStatus}));break;case kl.n.ThreadPanel:this.props.room&&(a=i.createElement(Ug,{roomId:this.props.room.roomId,resizeNotifier:this.props.resizeNotifier,onClose:this.onClose,permalinkCreator:this.props.permalinkCreator}));break;case kl.n.RoomSummary:this.props.room&&(a=i.createElement(hh,{room:this.props.room,permalinkCreator:this.props.permalinkCreator,onSearchChange:this.props.onSearchChange,onSearchCancel:this.props.onSearchCancel,searchTerm:this.props.searchTerm,focusRoomSearch:null==m?void 0:m.focusRoomSearch}));break;case kl.n.Extensions:this.props.room&&(a=i.createElement(tv,{room:this.props.room,onClose:this.onClose}));break;case kl.n.Widget:this.props.room&&null!=m&&m.widgetId&&(a=i.createElement(Ap,{room:this.props.room,widgetId:m.widgetId,onClose:this.onClose}))}return i.createElement("aside",{"aria-label":(0,l._t)("right_panel|title"),ref:this.ref,className:"mx_RightPanel",id:"mx_RightPanel",tabIndex:-1},a)}}(0,w.A)(Av,"contextType",de.Ay);class Cv{constructor(){(0,w.A)(this,"scrollStateMap",new Map)}getScrollState(e){return this.scrollStateMap.get(e)}setScrollState(e,t){null===t?this.scrollStateMap.delete(e):this.scrollStateMap.set(e,t)}}void 0===window.mxRoomScrollStateStore&&(window.mxRoomScrollStateStore=new Cv);const xv=window.mxRoomScrollStateStore;var Rv=n("./src/stores/WidgetEchoStore.ts"),kv=n("./node_modules/@matrix-org/react-sdk-module-api/lib/lifecycles/RoomViewLifecycle.js"),Iv=n("./src/IdentityAuthClient.tsx");class Tv extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"onViewClick",()=>{this.setState({hidden:!1})}),this.state={hidden:!0}}render(){const e=Lt()({mx_InviteReason:!0,mx_InviteReason_hidden:this.state.hidden});return i.createElement("div",{className:e},i.createElement("div",{className:"mx_InviteReason_reason"},this.props.htmlReason?(0,vi.bk)(this.props.htmlReason):this.props.reason),i.createElement(le.A,{kind:"link_inline",className:"mx_InviteReason_view",onClick:this.onViewClick},(0,l._t)("common|view_message")))}}var Pv=n("./res/img/element-icons/ask-to-join.svg"),Nv=n("./src/modules/Api.ts");function Mv(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 Dv(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mv(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mv(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Ov=function(e){return e.NotLoggedIn="NotLoggedIn",e.Joining="Joining",e.Loading="Loading",e.Rejecting="Rejecting",e.Kicked="Kicked",e.Banned="Banned",e.OtherThreePIDError="OtherThreePIDError",e.InvitedEmailNotFoundInAccount="InvitedEmailNotFoundInAccount",e.InvitedEmailNoIdentityServer="InvitedEmailNoIdentityServer",e.InvitedEmailMismatch="InvitedEmailMismatch",e.Invite="Invite",e.ViewingRoom="ViewingRoom",e.RoomNotFound="RoomNotFound",e.OtherError="OtherError",e.PromptAskToJoin="PromptAskToJoin",e.Knocked="Knocked",e.RequestDenied="requestDenied",e}(Ov||{});class Fv extends i.Component{constructor(e){super(e),(0,w.A)(this,"onLoginClick",()=>{S.A.dispatch({action:"start_login",screenAfterLogin:this.makeScreenAfterLogin()})}),(0,w.A)(this,"onRegisterClick",()=>{S.A.dispatch({action:"start_registration",screenAfterLogin:this.makeScreenAfterLogin()})}),(0,w.A)(this,"onChangeReason",e=>{this.setState({reason:e.target.value})}),this.state={busy:!1}}componentDidMount(){this.checkInvitedEmail()}componentDidUpdate(e,t){this.props.invitedEmail===e.invitedEmail&&this.props.inviterName===e.inviterName||this.checkInvitedEmail()}async checkInvitedEmail(){if(this.props.inviterName&&this.props.invitedEmail){this.setState({busy:!0});try{const e=await v.J.safeGet().getThreePids();if(this.setState({accountEmails:e.threepids.filter(e=>"email"===e.medium).map(e=>e.address)}),!v.J.safeGet().getIdentityServerUrl())return void this.setState({busy:!1});const t=new Iv.A,n=await t.getAccessToken(),i=await v.J.safeGet().lookupThreePid("email",this.props.invitedEmail,n);if(!("mxid"in i))throw new l.P7("room|error_3pid_invite_email_lookup");this.setState({invitedEmailMxid:i.mxid})}catch(e){this.setState({threePidFetchError:e})}this.setState({busy:!1})}}getMessageCase(){if(v.J.safeGet().isGuest())return Ov.NotLoggedIn;const e=this.getMyMember();if(e){var t;const n=null===(t=e.events.member)||void 0===t?void 0:t.getPrevContent().membership;if(e.isKicked())return n===X.O.Knock?Ov.RequestDenied:this.props.promptAskToJoin?Ov.PromptAskToJoin:Ov.Kicked;if(e.membership===X.O.Ban)return Ov.Banned}if(this.props.joining)return Ov.Joining;if(this.props.rejecting)return Ov.Rejecting;if(this.props.loading||this.state.busy)return Ov.Loading;if(this.props.knocked)return Ov.Knocked;if(this.props.canAskToJoinAndMembershipIsLeave||this.props.promptAskToJoin)return Ov.PromptAskToJoin;if(this.props.inviterName){if(this.props.invitedEmail){if(this.state.threePidFetchError)return Ov.OtherThreePIDError;if(this.state.accountEmails&&!this.state.accountEmails.includes(this.props.invitedEmail))return Ov.InvitedEmailNotFoundInAccount;if(!v.J.safeGet().getIdentityServerUrl())return Ov.InvitedEmailNoIdentityServer;if(this.state.invitedEmailMxid!=v.J.safeGet().getUserId())return Ov.InvitedEmailMismatch}return Ov.Invite}return this.props.error?"M_NOT_FOUND"==this.props.error.errcode?Ov.RoomNotFound:Ov.OtherError:Ov.ViewingRoom}getKickOrBanInfo(){var e,t,n,i;const s=this.getMyMember();if(!s)return{};const o=null===(e=s.events.member)||void 0===e?void 0:e.getSender(),r=o?null===(t=this.props.room)||void 0===t?void 0:t.currentState.getMember(o):void 0;return{memberName:null!==(n=null==r?void 0:r.name)&&void 0!==n?n:o,reason:null===(i=s.events.member)||void 0===i?void 0:i.getContent().reason}}joinRule(){var e,t;return null!==(e=null===(t=this.props.room)||void 0===t||null===(t=t.currentState.getStateEvents(o.EventType.RoomJoinRules,""))||void 0===t?void 0:t.getContent().join_rule)&&void 0!==e?e:null}getMyMember(){var e,t;return null!==(e=null===(t=this.props.room)||void 0===t?void 0:t.getMember(v.J.safeGet().getSafeUserId()))&&void 0!==e?e:null}getInviteMember(){var e;const{room:t}=this.props;if(!t)return null;const n=v.J.safeGet().getSafeUserId(),i=t.currentState.getMember(n);if(!i)return null;const s=null===(e=i.events.member)||void 0===e?void 0:e.getSender();return s?t.currentState.getMember(s):null}isDMInvite(){var e;const t=this.getMyMember();if(!t)return!1;const n=null===(e=t.events.member)||void 0===e?void 0:e.getContent();return(null==n?void 0:n.membership)===X.O.Invite&&n.is_direct}makeScreenAfterLogin(){var e,t,n,i,s,o;return{screen:"room",params:{email:this.props.invitedEmail,signurl:this.props.signUrl,room_name:null!==(e=null===(t=this.props.oobData)||void 0===t?void 0:t.name)&&void 0!==e?e:null,room_avatar_url:null!==(n=null===(i=this.props.oobData)||void 0===i?void 0:i.avatarUrl)&&void 0!==n?n:null,inviter_name:null!==(s=null===(o=this.props.oobData)||void 0===o?void 0:o.inviterName)&&void 0!==s?s:null}}}render(){var e,t,n,s,r,a;const d=c.Ay.get().brand,m=null!==(e=null!==(t=null===(n=this.props.room)||void 0===n?void 0:n.name)&&void 0!==t?t:this.props.roomAlias)&&void 0!==e?e:"",u=null!==(s=null===(r=this.props.room)||void 0===r?void 0:r.isSpaceRoom())&&void 0!==s?s:(null===(a=this.props.oobData)||void 0===a?void 0:a.roomType)===o.RoomType.Space;let h,p,g,f,E,y,b,w,S,A,C=!1;const x=[],R=this.getMessageCase();switch(R){case Ov.Joining:var k;h=null!==(k=this.props.oobData)&&void 0!==k&&k.roomType||u?u?(0,l._t)("room|joining_space"):(0,l._t)("room|joining_room"):(0,l._t)("room|joining"),C=!0;break;case Ov.Loading:h=(0,l._t)("common|loading"),C=!0;break;case Ov.Rejecting:h=(0,l._t)("room|rejecting"),C=!0;break;case Ov.NotLoggedIn:{const e={canJoin:!1};this.props.roomId&&_.r.instance.invoke(kv.J.PreviewRoomNotLoggedIn,e,this.props.roomId),e.canJoin?(h=(0,l._t)("room|join_title"),E=(0,l._t)("action|join"),f=()=>{_.r.instance.invoke(kv.J.JoinFromRoomPreview,this.props.roomId)}):(h=(0,l._t)("room|join_title_account"),D.A.getValue(gt.f.Registration)&&(E=(0,l._t)("room|join_button_account"),f=this.onRegisterClick),b=(0,l._t)("action|sign_in"),y=this.onLoginClick),this.props.previewLoading&&(A=i.createElement("div",null,i.createElement(ce.A,{w:20,h:20}),(0,l._t)("room|loading_preview")));break}case Ov.Kicked:{const{memberName:e,reason:t}=this.getKickOrBanInfo();h=m?(0,l._t)("room|kicked_from_room_by",{memberName:e,roomName:m}):(0,l._t)("room|kicked_by",{memberName:e}),p=t?(0,l._t)("room|kick_reason",{reason:t}):void 0,E=u?(0,l._t)("room|forget_space"):(0,l._t)("room|forget_room"),f=this.props.onForgetClick,this.joinRule()!==o.JoinRule.Invite&&(b=E,y=f,E=(0,l._t)("room|rejoin_button"),f=this.props.onJoinClick);break}case Ov.RequestDenied:h=(0,l._t)("room|knock_denied_title"),p=(0,l._t)("room|knock_denied_subtitle"),E=u?(0,l._t)("room|forget_space"):(0,l._t)("room|forget_room"),f=this.props.onForgetClick;break;case Ov.Banned:{const{memberName:e,reason:t}=this.getKickOrBanInfo();h=m?(0,l._t)("room|banned_from_room_by",{memberName:e,roomName:m}):(0,l._t)("room|banned_by",{memberName:e}),p=t?(0,l._t)("room|kick_reason",{reason:t}):void 0,E=u?(0,l._t)("room|forget_space"):(0,l._t)("room|forget_room"),f=this.props.onForgetClick;break}case Ov.OtherThreePIDError:{var I;h=m?(0,l._t)("room|3pid_invite_error_title_room",{roomName:m}):(0,l._t)("room|3pid_invite_error_title");const e=this.joinRule(),t=(0,l._t)("room|3pid_invite_error_description",{errcode:(null===(I=this.state.threePidFetchError)||void 0===I?void 0:I.errcode)||(0,l._t)("error|unknown_error_code")});switch(e){case"invite":p=[(0,l._t)("room|3pid_invite_error_invite_subtitle"),t],E=(0,l._t)("room|3pid_invite_error_invite_action"),f=this.props.onJoinClick;break;case"public":p=(0,l._t)("room|3pid_invite_error_public_subtitle"),E=(0,l._t)("room|join_the_discussion"),f=this.props.onJoinClick;break;default:p=t,E=(0,l._t)("room|3pid_invite_error_invite_action"),f=this.props.onJoinClick}break}case Ov.InvitedEmailNotFoundInAccount:h=m?(0,l._t)("room|3pid_invite_email_not_found_account_room",{roomName:m,email:this.props.invitedEmail}):(0,l._t)("room|3pid_invite_email_not_found_account",{email:this.props.invitedEmail}),p=(0,l._t)("room|link_email_to_receive_3pid_invite",{brand:d}),E=(0,l._t)("room|join_the_discussion"),f=this.props.onJoinClick;break;case Ov.InvitedEmailNoIdentityServer:h=m?(0,l._t)("room|invite_sent_to_email_room",{roomName:m,email:this.props.invitedEmail}):(0,l._t)("room|invite_sent_to_email",{email:this.props.invitedEmail}),p=(0,l._t)("room|3pid_invite_no_is_subtitle",{brand:d}),E=(0,l._t)("room|join_the_discussion"),f=this.props.onJoinClick;break;case Ov.InvitedEmailMismatch:h=m?(0,l._t)("room|invite_sent_to_email_room",{roomName:m,email:this.props.invitedEmail}):(0,l._t)("room|invite_sent_to_email",{email:this.props.invitedEmail}),p=(0,l._t)("room|invite_email_mismatch_suggestion",{brand:d}),E=(0,l._t)("room|join_the_discussion"),f=this.props.onJoinClick;break;case Ov.Invite:{var T,P,N;const e=this.isDMInvite(),t=i.createElement(En.A,{room:this.props.room,oobData:this.props.oobData}),n=this.getInviteMember(),s=i.createElement("span",{className:"mx_RoomPreviewBar_inviter"},null!==(T=null==n?void 0:n.rawDisplayName)&&void 0!==T?T:this.props.inviterName),o=i.createElement(i.Fragment,null,e?(0,l._t)("room|dm_invite_subtitle",{},{userName:s}):(0,l._t)("room|invite_subtitle",{},{userName:s}),n&&i.createElement(i.Fragment,null,i.createElement("br",null),i.createElement("span",{className:"mx_RoomPreviewBar_inviter_mxid"},n.userId)));var M;if(e)h=(0,l._t)("room|dm_invite_title",{user:null!==(M=null==n?void 0:n.name)&&void 0!==M?M:this.props.inviterName}),E=(0,l._t)("room|dm_invite_action");else h=(0,l._t)("room|invite_title",{roomName:m}),E=(0,l._t)("action|accept");p=[t,o];const r=v.J.safeGet().getSafeUserId(),a=null===(P=this.props.room)||void 0===P?void 0:P.currentState.getMember(r),c=null==a||null===(N=a.events.member)||void 0===N?void 0:N.getContent();null!=c&&c.reason&&(g=i.createElement(Tv,{reason:c.reason,htmlReason:c["io.element.html_reason"]})),f=this.props.onJoinClick,b=(0,l._t)("action|decline"),y=this.props.onDeclineClick,S=(0,l._t)("action|decline_and_block"),w=this.props.onDeclineAndBlockClick;break}case Ov.ViewingRoom:h=this.props.canPreview?(0,l._t)("room|peek_join_prompt",{roomName:m}):m?(0,l._t)("room|no_peek_join_prompt",{roomName:m}):(0,l._t)("room|no_peek_no_name_join_prompt"),E=(0,l._t)("room|join_the_discussion"),f=this.props.onJoinClick;break;case Ov.RoomNotFound:h=m?(0,l._t)("room|not_found_title_name",{roomName:m}):(0,l._t)("room|not_found_title"),p=(0,l._t)("room|not_found_subtitle");break;case Ov.OtherError:var O;h=m?(0,l._t)("room|inaccessible_name",{roomName:m}):(0,l._t)("room|inaccessible"),p=[(0,l._t)("room|inaccessible_subtitle_1"),(0,l._t)("room|inaccessible_subtitle_2",{errcode:String(null===(O=this.props.error)||void 0===O?void 0:O.errcode)},{issueLink:e=>i.createElement("a",{href:c.Ay.get().feedback.new_issue_url,target:"_blank",rel:"noreferrer noopener"},e)})];break;case Ov.PromptAskToJoin:var F;h=m?(0,l._t)("room|knock_prompt_name",{roomName:m}):(0,l._t)("room|knock_prompt");p=[i.createElement(En.A,{room:this.props.room,oobData:this.props.oobData}),(0,l._t)("room|knock_subtitle")],g=i.createElement(qs.A,{autoFocus:!0,className:"mx_RoomPreviewBar_fullWidth",element:"textarea",onChange:this.onChangeReason,placeholder:(0,l._t)("room|knock_message_field_placeholder"),type:"text",value:null!==(F=this.state.reason)&&void 0!==F?F:""}),f=()=>this.props.onSubmitAskToJoin&&this.props.onSubmitAskToJoin(this.state.reason),E=(0,l._t)("room|knock_send_action");break;case Ov.Knocked:h=(0,l._t)("room|knock_sent"),p=[i.createElement(i.Fragment,null,i.createElement(Pv.I,{className:"mx_Icon mx_Icon_16 mx_RoomPreviewBar_icon"}),(0,l._t)("room|knock_sent_subtitle"))],y=this.props.onCancelAskToJoin,b=(0,l._t)("room|knock_cancel_action")}let L,U,V,B,j;p&&(Array.isArray(p)||(p=[p]),L=p.map((e,t)=>i.createElement("p",{key:`subTitle${t}`},e))),U=C?i.createElement("h3",{className:"mx_RoomPreviewBar_spinnerTitle"},i.createElement(ce.A,null),h):i.createElement("h3",null,h),f&&(V=i.createElement(le.A,{kind:"primary",onClick:f},E)),y&&(B=i.createElement(le.A,{kind:"secondary",onClick:y},b)),w&&(j=i.createElement(Y.$,{destructive:!0,kind:"tertiary",onClick:w},S));const W=this.props.canPreview,H=Lt()("mx_RoomPreviewBar",`mx_RoomPreviewBar_${R}`,{mx_RoomPreviewBar_panel:W,mx_RoomPreviewBar_dialog:!W}),z=W?i.createElement(i.Fragment,null,j,B,x,V):i.createElement(i.Fragment,null,V,x,B,j);return i.createElement("div",{role:"complementary",className:H},i.createElement("div",{className:"mx_RoomPreviewBar_message"},U,L),g,i.createElement("div",{className:Lt()("mx_RoomPreviewBar_actions",{mx_RoomPreviewBar_fullWidth:R===Ov.PromptAskToJoin})},z),i.createElement("div",{className:"mx_RoomPreviewBar_footer"},A))}}(0,w.A)(Fv,"defaultProps",{onJoinClick(){}});const Lv=e=>{const t=Nv.A.customComponents.roomPreviewBarRenderer;var n,s,o,r;return t?t(Dv(Dv({},e),{},{roomId:null!==(n=null===(s=e.room)||void 0===s?void 0:s.roomId)&&void 0!==n?n:e.roomId,roomAlias:null!==(o=null===(r=e.room)||void 0===r?void 0:r.getCanonicalAlias())&&void 0!==o?o:e.roomAlias}),e=>i.createElement(Fv,e)):i.createElement(Fv,e)};var Uv=n("./src/components/views/elements/FacePile.tsx");const Vv=["room","onlyKnownUsers","numShown"],Bv=5,jv=e=>{var t;return!(null===(t=x.A.shared().getDMRoomsForUserId(e.userId))||void 0===t||!t.length)},Wv=e=>{let{room:t,onlyKnownUsers:n=!0,numShown:s=Bv}=e,o=(0,g.A)(e,Vv);const r=(0,i.useContext)(de.Ay),a=t.getMyMembership()===X.O.Join;let c=nv(t);const d=c.length,m=[e=>e.getMxcAvatarUrl()?0:1];n?c=c.filter(jv):m.unshift(e=>jv(e)?0:1);const u=(0,Kt.sortBy)(c.filter(e=>e.userId!==r.getUserId()),m).slice(0,s);if(u.length<1)return null;const h=u.map(e=>e.name).reverse().join(", ");return i.createElement(Uv.A,(0,Wt.A)({members:u,size:"28px",overflow:c.length>s,tooltipLabel:o.onClick?(0,l._t)("room|face_pile_tooltip_label",{count:d}):(0,l._t)("common|n_members",{count:d}),tooltipShortcut:a?(0,l._t)("room|face_pile_tooltip_shortcut_joined",{commaSeparatedMembers:h}):(0,l._t)("room|face_pile_tooltip_shortcut",{commaSeparatedMembers:h})},o),n&&i.createElement("span",{className:"mx_FacePile_summary"},(0,l._t)("room|face_pile_summary",{count:c.length})))},Hv=({room:e})=>{const t=(0,Bi.e)(async()=>{if(e.getMyMembership()!==X.O.Invite)return null;try{return await e.client.getRoomSummary(e.roomId)}catch{return null}},[e]),n=(0,So.U)(e,e=>e.getJoinRule()),s=sv(e),r=iv(e);let a,c,d;if((0,Om.j)(e)?(a="mx_RoomInfoLine_video",c=(0,l._t)("common|video_room")):n===o.JoinRule.Public?(a="mx_RoomInfoLine_public",c=e.isSpaceRoom()?(0,l._t)("common|public_space"):(0,l._t)("common|public_room")):(a="mx_RoomInfoLine_private",c=e.isSpaceRoom()?(0,l._t)("common|private_space"):(0,l._t)("common|private_room")),s===X.O.Invite&&t)d=i.createElement("span",{className:"mx_RoomInfoLine_members"},(0,l._t)("common|n_members",{count:t.num_joined_members}));else if(r&&void 0!==t){const e=()=>Rl.A.instance.setCard({phase:kl.n.MemberList});d=i.createElement(le.A,{kind:"link",className:"mx_RoomInfoLine_members",onClick:e},(0,l._t)("common|n_members",{count:r}))}return i.createElement("div",{className:`mx_RoomInfoLine ${a}`},c,d)},zv=({room:e,onJoinButtonClicked:t,onRejectButtonClicked:n})=>{const s=(0,i.useContext)(de.Ay),r=(0,Om.j)(e),a=sv(e);(0,mo.F)(S.A,t=>{t.action===H.r.JoinRoomError&&t.roomId===e.roomId&&d(!1)});const[c,d]=(0,i.useState)(!1),m=(0,So.U)(e,e=>e.getJoinRule()),u=(0,hc.Cs)(a)===hc._T.Leave&&m!==o.JoinRule.Public,h=()=>S.A.dispatch({action:H.r.ViewUserSettings,initialTabId:Te.v.Labs});let p,g,v=null;if(a===X.O.Join)p=i.createElement(le.A,{kind:"danger_outline",onClick:()=>{S.A.dispatch({action:"leave_room",room_id:e.roomId})}},(0,l._t)("action|leave"));else if(a===X.O.Invite){var _;const o=null===(_=e.getMember(s.getUserId()))||void 0===_||null===(_=_.events.member)||void 0===_?void 0:_.getSender();if(o){const t=e.getMember(o);v=i.createElement("div",{className:"mx_RoomPreviewCard_inviter"},i.createElement(ln.A,{member:t,fallbackUserId:o,size:"32px"}),i.createElement("div",null,i.createElement("div",{className:"mx_RoomPreviewCard_inviter_name"},(0,l._t)("room|invites_you_text",{},{inviter:()=>i.createElement("strong",null,(null==t?void 0:t.name)||o)})),t?i.createElement("div",{className:"mx_RoomPreviewCard_inviter_mxid"},o):null))}p=i.createElement(i.Fragment,null,i.createElement(le.A,{kind:"primary_outline",onClick:()=>{d(!0),n()}},(0,l._t)("action|decline")),i.createElement(le.A,{kind:"primary",onClick:()=>{d(!0),t()}},(0,l._t)("action|accept")))}else p=i.createElement(le.A,{kind:"primary",onClick:()=>{t(),s.isGuest()||d(!0)},disabled:u},(0,l._t)("action|join"));return c&&(p=i.createElement(Ra.A,null)),g=r?i.createElement(i.Fragment,null,i.createElement(En.A,{room:e,size:"50px",viewAvatarOnClick:!0}),i.createElement("div",{className:"mx_RoomPreviewCard_video"}),i.createElement(Sa.s,{onClick:h,tooltipTitle:(0,l._t)("labs|video_rooms_beta")})):e.isSpaceRoom()?i.createElement(En.A,{room:e,size:"80px",viewAvatarOnClick:!0}):i.createElement(En.A,{room:e,size:"50px",viewAvatarOnClick:!0}),i.createElement("div",{className:"mx_RoomPreviewCard"},v,i.createElement("div",{className:"mx_RoomPreviewCard_avatar"},g),i.createElement("h1",{className:"mx_RoomPreviewCard_name"},i.createElement(io,{room:e})),i.createElement(Hv,{room:e}),i.createElement(mh,{room:e,className:"mx_RoomPreviewCard_topic"}),"public"===e.getJoinRule()&&i.createElement(Wv,{room:e}),u?i.createElement("div",{className:"mx_RoomPreviewCard_notice"},(0,l._t)("room|join_failed_needs_invite",{roomName:e.name})):null,i.createElement("div",{className:"mx_RoomPreviewCard_joinButtons"},p))};var Kv=n("./src/components/views/dialogs/RoomUpgradeDialog.tsx");class Gv extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"onStateEvents",e=>{if(!this.props.room||e.getRoomId()!==this.props.room.roomId)return;if("m.room.tombstone"!==e.getType())return;const t=this.props.room.currentState.getStateEvents("m.room.tombstone","");this.setState({upgraded:t&&t.getContent().replacement_room})}),(0,w.A)(this,"onUpgradeClick",()=>{R.Ay.createDialog(Kv.A,{room:this.props.room})});const t=this.props.room.currentState.getStateEvents("m.room.tombstone","");this.state={upgraded:null==t?void 0:t.getContent().replacement_room}}componentDidMount(){this.context.on(o.RoomStateEvent.Events,this.onStateEvents)}componentWillUnmount(){this.context.removeListener(o.RoomStateEvent.Events,this.onStateEvents)}render(){let e=i.createElement("div",null,i.createElement("div",{className:"mx_RoomUpgradeWarningBar_body"},i.createElement("p",null,(0,l._t)("room|upgrade_warning_bar")),i.createElement("p",null,(0,l._t)("room_settings|advanced|room_upgrade_warning",{},{b:e=>i.createElement("strong",null,e),i:e=>i.createElement("i",null,e)}))),i.createElement("p",{className:"mx_RoomUpgradeWarningBar_upgradelink"},i.createElement(le.A,{onClick:this.onUpgradeClick},(0,l._t)("room_settings|advanced|room_upgrade_button"))));return this.state.upgraded&&(e=i.createElement("div",{className:"mx_RoomUpgradeWarningBar_body"},i.createElement("p",null,(0,l._t)("room|upgrade_warning_bar_upgraded")))),i.createElement("div",{className:"mx_RoomUpgradeWarningBar"},i.createElement("div",{className:"mx_RoomUpgradeWarningBar_wrapped"},i.createElement("div",{className:"mx_RoomUpgradeWarningBar_header"},(0,l._t)("room|upgrade_warning_bar_unstable",{},{roomVersion:()=>i.createElement("code",null,this.props.room.getVersion()),i:e=>i.createElement("i",null,e)})),e,i.createElement("div",{className:"mx_RoomUpgradeWarningBar_small"},(0,l._t)("room|upgrade_warning_bar_admins"))))}}(0,w.A)(Gv,"contextType",de.Ay);var Jv=function(e){return e.CloseScalar="close_scalar",e.GetWidgets="get_widgets",e.SetWidget="set_widget",e.JoinRulesState="join_rules_state",e.SetPlumbingState="set_plumbing_state",e.GetMembershipCount="get_membership_count",e.GetRoomEncryptionState="get_room_enc_state",e.CanSendEvent="can_send_event",e.MembershipState="membership_state",e.invite="invite",e.Kick="kick",e.BotOptions="bot_options",e.SetBotOptions="set_bot_options",e.SetBotPower="set_bot_power",e.GetOpenIdToken="get_open_id_token",e.SendEvent="send_event",e.ReadEvents="read_events",e}(Jv||{});function $v(e,t){const n=(0,wn.ZV)(e.data);n.response=t,e.source.postMessage(n,e.origin)}function qv(e,t,n){s.vF.error("Action:"+e.data.action+" failed with message: "+t);const i=(0,wn.ZV)(e.data);i.response={error:{message:t}},n&&(i.response.error._error=n),e.source.postMessage(i,e.origin)}function Yv(e,t){const n=v.J.safeGet(),i=e.data.widget_id;let s=e.data.type;const o=e.data.url,r=e.data.name,a=e.data.data,c=e.data.avatar_url,d=e.data.userWidget;if(i&&void 0!==o){if(null!==o){if(void 0!==r&&"string"!=typeof r)return void qv(e,(0,l._t)("scalar|error_create"),new Error("Optional field 'name' must be a string."));if(void 0!==a&&!(a instanceof Object))return void qv(e,(0,l._t)("scalar|error_create"),new Error("Optional field 'data' must be an Object."));if(void 0!==c&&"string"!=typeof c)return void qv(e,(0,l._t)("scalar|error_create"),new Error("Optional field 'avatar_url' must be a string."));if("string"!=typeof s)return void qv(e,(0,l._t)("scalar|error_create"),new Error("Field 'type' must be a string."));if("string"!=typeof o)return void qv(e,(0,l._t)("scalar|error_create"),new Error("Field 'url' must be a string or null."))}if(s=Ih.x.fromString(s),d)ph.A.setUserWidget(n,i,s,o,r,a).then(()=>{$v(e,{success:!0}),S.A.dispatch({action:"user_widget_updated"})}).catch(t=>{qv(e,(0,l._t)("scalar|error_create"),t)});else{if(!t)return void qv(e,(0,l._t)("scalar|error_missing_room_id"));ph.A.setRoomWidget(n,t,i,s,o,r,a,c).then(()=>{$v(e,{success:!0})},t=>{qv(e,(0,l._t)("scalar|error_send_request"),t)})}}else qv(e,(0,l._t)("scalar|error_create"),new Error("Missing required widget fields."))}function Xv(e,t){const n=v.J.get();if(!n)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));let i=[];if(t){const s=n.getRoom(t);if(!s)return void qv(e,(0,l._t)("scalar|error_room_unknown"));i=ph.A.getRoomWidgets(s).map(e=>e.event)}const s=ph.A.getUserWidgetsArray(n);i=i.concat(s),$v(e,i)}function Qv(e,t,n,i){const s=v.J.get();if(!s)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));const o=s.getRoom(t);if(!o)return void qv(e,(0,l._t)("scalar|error_room_unknown"));const r=o.currentState.getStateEvents(n,i);$v(e,r?r.getContent():null)}const Zv=function(e){let t,n;e.origin||(e.origin=e.originalEvent.origin);try{var i;e_||(e_=null===(i=L.J.sharedInstance().getPrimaryManager())||void 0===i?void 0:i.uiUrl),t=new URL(e_)}catch{return}try{n=new URL(e.origin)}catch{return}if(t.origin!==n.origin||!e.data.action||e.data.api)return;if(e.data.action===Jv.CloseScalar)return S.A.dispatch({action:Jv.CloseScalar}),void $v(e,null);const o=e.data.room_id,r=e.data.user_id;if(!o)return e.data.action===Jv.GetWidgets?void Xv(e,null):e.data.action===Jv.SetWidget?void Yv(e,null):e.data.action===Jv.GetOpenIdToken?void async function(e){try{$v(e,await v.J.safeGet().getOpenIdToken())}catch(t){s.vF.warn("Unable to fetch openId token.",t),qv(e,"Unable to fetch openId token.")}}(e):void qv(e,(0,l._t)("scalar|error_missing_room_id_request"));if(o===Do.M.instance.roomViewStore.getRoomId())if(e.data.action!==Jv.GetWidgets)if(e.data.action!==Jv.SetWidget)if(e.data.action!==Jv.JoinRulesState)if(e.data.action!==Jv.SetPlumbingState)if(e.data.action!==Jv.GetMembershipCount)if(e.data.action!==Jv.GetRoomEncryptionState)if(e.data.action!==Jv.CanSendEvent)if(e.data.action!==Jv.SendEvent)if(e.data.action!==Jv.ReadEvents)if(r)switch(e.data.action){case Jv.MembershipState:!function(e,t,n){s.vF.log(`membership_state of ${n} in room ${t} requested.`),Qv(e,t,"m.room.member",n)}(e,o,r);break;case Jv.invite:!function(e,t,n){s.vF.log(`Received request to invite ${n} into room ${t}`);const i=v.J.get();if(!i)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));const o=i.getRoom(t);if(o){const t=o.getMember(n);if(t&&[X.O.Join,X.O.Invite].includes(t.membership))return void $v(e,{success:!0})}i.invite(t,n).then(function(){$v(e,{success:!0})},function(t){qv(e,(0,l._t)("widget|error_need_invite_permission"),t)})}(e,o,r);break;case Jv.Kick:!function(e,t,n){s.vF.log(`Received request to kick ${n} from room ${t}`);const i=v.J.get();if(!i)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));const o=i.getRoom(t);if(o){const t=o.getMember(n);if(!t||(0,hc.Cs)(t.membership)===hc._T.Leave)return void $v(e,{success:!0})}const r=e.data.reason;i.kick(t,n,r).then(()=>{$v(e,{success:!0})}).catch(t=>{qv(e,(0,l._t)("widget|error_need_kick_permission"),t)})}(e,o,r);break;case Jv.BotOptions:!function(e,t,n){s.vF.log(`bot_options of ${n} in room ${t} requested.`),Qv(e,t,"m.room.bot.options","_"+n)}(e,o,r);break;case Jv.SetBotOptions:!function(e,t,n){s.vF.log(`Received request to set options for bot ${n} in room ${t}`);const i=v.J.get();i?i.sendStateEvent(t,"m.room.bot.options",e.data.content,"_"+n).then(()=>{$v(e,{success:!0})},t=>{qv(e,t.message?t.message:(0,l._t)("scalar|error_send_request"),t)}):qv(e,(0,l._t)("widget|error_need_to_be_logged_in"))}(e,o,r);break;case Jv.SetBotPower:!async function(e,t,n,i,o){if(!(Number.isInteger(i)&&i>=0))return void qv(e,(0,l._t)("scalar|error_power_level_invalid"));s.vF.log(`Received request to set power level to ${i} for bot ${n} in room ${t}.`);const r=v.J.get();if(r)try{const s=await r.getStateEvent(t,"m.room.power_levels","");var a,c,d;if(!0===o)if((null!==(a=null!==(c=null===(d=s.users)||void 0===d?void 0:d[n])&&void 0!==c?c:s.users_default)&&void 0!==a?a:0)>=i)return $v(e,{success:!0});return await r.setPowerLevel(t,n,i),$v(e,{success:!0})}catch(t){var m;const n=t instanceof Error?t:void 0;qv(e,null!==(m=null==n?void 0:n.message)&&void 0!==m?m:(0,l._t)("scalar|error_send_request"),n)}else qv(e,(0,l._t)("widget|error_need_to_be_logged_in"))}(e,o,r,e.data.level,e.data.ignoreIfGreater);break;default:s.vF.warn("Unhandled postMessage event with action '"+e.data.action+"'")}else qv(e,(0,l._t)("scalar|error_missing_user_id_request"));else!async function(e,t){const n=e.data.type,i=e.data.state_key,s=e.data.limit;if("string"!=typeof n)return void qv(e,(0,l._t)("scalar|failed_read_event"),new Error("Invalid 'type' in request"));if(!["m.room.power_levels","m.room.encryption","m.room.member","m.room.name","m.widgets","im.vector.modular.widgets","io.element.integrations.installations"].includes(n))return void qv(e,(0,l._t)("scalar|failed_read_event"),new Error("Disallowed 'type' in request"));let o;if(void 0!==s){if("number"!=typeof s||s<0)return void qv(e,(0,l._t)("scalar|failed_read_event"),new Error("Invalid 'limit' in request"));o=Math.min(s,Number.MAX_SAFE_INTEGER)}else o=Number.MAX_SAFE_INTEGER;const r=v.J.get();if(!r)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));const a=r.getRoom(t);if(a){if(void 0!==i){if("string"!=typeof i&&!0!==i)return void qv(e,(0,l._t)("scalar|failed_read_event"),new Error("Invalid 'state_key' in request"));const t=!0===i?void 0:i;let s=[];return s=s.concat(a.currentState.getStateEvents(n,t)||[]),s=s.slice(0,o),void $v(e,{events:s.map(e=>e.getEffectiveEvent())})}qv(e,(0,l._t)("scalar|failed_read_event"),new Error("Reading message events is not implemented"))}else qv(e,(0,l._t)("scalar|error_room_unknown"))}(e,o);else!async function(e,t){const n=e.data.type,i=e.data.state_key,s=e.data.content;if("string"!=typeof n)return void qv(e,(0,l._t)("scalar|failed_send_event"),new Error("Invalid 'type' in request"));if(!["m.widgets","im.vector.modular.widgets","io.element.integrations.installations"].includes(n))return void qv(e,(0,l._t)("scalar|failed_send_event"),new Error("Disallowed 'type' in request"));if(!s||"object"!=typeof s)return void qv(e,(0,l._t)("scalar|failed_send_event"),new Error("Invalid 'content' in request"));const o=v.J.get();if(!o)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));if(o.getRoom(t))if(void 0!==i)try{$v(e,{room_id:t,event_id:(await o.sendStateEvent(t,n,s,i)).event_id})}catch(t){return void qv(e,(0,l._t)("scalar|failed_send_event"),t)}else qv(e,(0,l._t)("scalar|failed_send_event"),new Error("Sending message events is not implemented"));else qv(e,(0,l._t)("scalar|error_room_unknown"))}(e,o);else!function(e,t){const n=""+e.data.event_type,i=Boolean(e.data.is_state),s=v.J.get();if(!s)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));const o=s.getRoom(t);if(!o)return void qv(e,(0,l._t)("scalar|error_room_unknown"));if(o.getMyMembership()!==X.O.Join)return void qv(e,(0,l._t)("scalar|error_membership"));const r=s.credentials.userId;let a;a=i?o.currentState.maySendStateEvent(n,r):o.currentState.maySendEvent(n,r),a?$v(e,!0):qv(e,(0,l._t)("scalar|error_permission"))}(e,o);else!async function(e,t){var n;const i=v.J.get();if(!i)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));if(!i.getRoom(t))return void qv(e,(0,l._t)("scalar|error_room_unknown"));$v(e,Boolean(await(null===(n=i.getCrypto())||void 0===n?void 0:n.isEncryptionEnabledInRoom(t))))}(e,o);else!function(e,t){const n=v.J.get();if(!n)return void qv(e,(0,l._t)("widget|error_need_to_be_logged_in"));const i=n.getRoom(t);if(!i)return void qv(e,(0,l._t)("scalar|error_room_unknown"));$v(e,i.getJoinedMemberCount())}(e,o);else!function(e,t,n){if("string"!=typeof n)throw new Error("Plumbing state status should be a string");s.vF.log(`Received request to set plumbing state to status "${n}" in room ${t}`);const i=v.J.get();i?i.sendStateEvent(t,"m.room.plumbing",{status:n}).then(()=>{$v(e,{success:!0})},t=>{qv(e,t.message?t.message:(0,l._t)("scalar|error_send_request"),t)}):qv(e,(0,l._t)("widget|error_need_to_be_logged_in"))}(e,o,e.data.status);else!function(e,t){s.vF.log(`join_rules of ${t} requested.`),Qv(e,t,"m.room.join_rules","")}(e,o);else Yv(e,o);else Xv(e,o);else qv(e,(0,l._t)("scalar|error_room_not_visible",{roomId:o}))};let e_,t_=0;class n_ extends la{start(e){this.vertical?e.style.minHeight="":e.style.minWidth=""}finish(e){const t=e.offsetParent;if(t)if(this.vertical){const n=(e.offsetHeight/t.offsetHeight*100).toFixed(2)+"%";e.style.minHeight=n,e.style.height=n}else{const n=(e.offsetWidth/t.offsetWidth*100).toFixed(2)+"%";e.style.minWidth=n,e.style.width=n}}}class i_ extends da{static createSizer(e,t,n){return new n_(e,t,n)}}var s_=n("./packages/shared-components/src/utils/numbers.ts");class o_ extends i.Component{constructor(e,t){super(e,t),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"resizeContainer",void 0),(0,w.A)(this,"resizer",void 0),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"onIsResizing",e=>{this.setState({resizingVertical:e}),e||this.relaxResizer()}),(0,w.A)(this,"collectResizer",e=>{this.resizeContainer&&this.resizer.detach(),e&&(this.resizer.container=e,this.resizer.attach()),this.resizeContainer=e,this.loadResizerPreferences()}),(0,w.A)(this,"getAppsHash",e=>e.map(e=>e.id).join("~")),(0,w.A)(this,"relaxResizer",()=>{const e=this.resizer.getDistributors();e.forEach(e=>e.start()),e.forEach(e=>e.finish())}),(0,w.A)(this,"loadResizerPreferences",()=>{const e=rp.aK.instance.getResizerDistributions(this.props.room,rp.mc.Top);if(this.state.apps&&this.topApps().length-1===e.length)e.forEach((e,t)=>{const n=this.resizer.forHandleAt(t);n&&(n.size=e,n.finish())});else if(this.state.apps){const e=this.resizer.getDistributors();e.forEach(e=>e.item.clearSize()),e.forEach(e=>e.start()),e.forEach(e=>e.finish())}}),(0,w.A)(this,"onAction",e=>{const t=this.props.room.roomId+"_hide_widget_drawer";if("appsDrawer"===e.action)e.show?localStorage.setItem(t,"false"):localStorage.setItem(t,"true")}),(0,w.A)(this,"getApps",()=>({[rp.mc.Top]:rp.aK.instance.getContainerWidgets(this.props.room,rp.mc.Top),[rp.mc.Center]:rp.aK.instance.getContainerWidgets(this.props.room,rp.mc.Center)})),(0,w.A)(this,"topApps",()=>this.state.apps[rp.mc.Top]),(0,w.A)(this,"centerApps",()=>this.state.apps[rp.mc.Center]),(0,w.A)(this,"updateApps",()=>{this.unmounted||this.setState({apps:this.getApps()})}),this.state={apps:this.getApps(),resizingVertical:!1,resizingHorizontal:!1,resizing:!1},this.resizer=this.createResizer()}componentDidMount(){this.unmounted=!1,this.context.resizeNotifier.on("isResizing",this.onIsResizing),0===t_&&window.addEventListener("message",Zv,!1),t_+=1,rp.aK.instance.on(rp.aK.emissionForRoom(this.props.room),this.updateApps),this.dispatcherRef=S.A.register(this.onAction)}componentWillUnmount(){this.unmounted=!0,function(){if(t_-=1,0===t_&&window.removeEventListener("message",Zv),t_<0){const e=new Error("ScalarMessaging: mismatched startListening / stopListening detected. Negative count");s.vF.error(e)}}(),rp.aK.instance.off(rp.aK.emissionForRoom(this.props.room),this.updateApps),S.A.unregister(this.dispatcherRef),this.resizeContainer&&this.resizer.detach(),this.context.resizeNotifier.off("isResizing",this.onIsResizing)}createResizer(){const e=new ha(null,i_,{onResizeStart:()=>{var e;null===(e=this.resizeContainer)||void 0===e||e.classList.add("mx_AppsDrawer--resizing"),this.setState({resizingHorizontal:!0})},onResizeStop:()=>{var e;null===(e=this.resizeContainer)||void 0===e||e.classList.remove("mx_AppsDrawer--resizing"),rp.aK.instance.setResizerDistributions(this.props.room,rp.mc.Top,this.topApps().slice(1).map((e,t)=>this.resizer.forHandleAt(t).size)),this.setState({resizingHorizontal:!1})}});return e.setClassNames({handle:"mx_ResizeHandle",vertical:"mx_ResizeHandle--vertical",reverse:"mx_ResizeHandle_reverse"}),e}componentDidUpdate(e,t){e.userId!==this.props.userId||e.room!==this.props.room?this.updateApps():this.getAppsHash(this.topApps())!==this.getAppsHash(t.apps[rp.mc.Top])&&this.loadResizerPreferences()}isResizing(){return this.state.resizingVertical||this.state.resizingHorizontal}render(){if(!this.props.showApps)return i.createElement("div",null);const e=this.centerApps().length>0,t=(e?this.centerApps():this.topApps()).map((e,t,n)=>i.createElement(Sp,{key:e.id,app:e,fullWidth:n.length<2,room:this.props.room,userId:this.props.userId,creatorUserId:e.creatorUserId,widgetPageTitle:ph.A.getWidgetDataTitle(e),waitForIframeLoad:e.waitForIframeLoad,pointerEvents:this.isResizing()?"none":void 0}));if(0===t.length)return i.createElement("div",null);let n;0===t.length&&Rv.A.roomHasPendingWidgets(this.props.room.roomId,ph.A.getRoomWidgets(this.props.room))&&(n=i.createElement(ce.A,null));const s=Lt()({mx_AppsDrawer:!0,"mx_AppsDrawer--maximised":e,"mx_AppsDrawer--resizing":this.state.resizing,"mx_AppsDrawer--2apps":2===t.length,"mx_AppsDrawer--3apps":3===t.length}),o=i.createElement("div",{className:"mx_AppsContainer",ref:this.collectResizer},t.map((e,n)=>n<1?e:i.createElement(i.Fragment,{key:e.key},i.createElement(ra,{reverse:n>t.length/2}),e)));let r;return r=e?o:i.createElement(r_,{room:this.props.room,minHeight:100,maxHeight:this.props.maxHeight-50,className:"mx_AppsDrawer_resizer",handleWrapperClass:"mx_AppsDrawer_resizer_container",handleClass:"mx_AppsDrawer_resizer_container_handle",resizeNotifier:this.context.resizeNotifier},o),i.createElement("div",{role:this.props.role,className:s},r,n)}}(0,w.A)(o_,"defaultProps",{showApps:!0}),(0,w.A)(o_,"contextType",Do.A);const r_=({room:e,minHeight:t,maxHeight:n,className:s,handleWrapperClass:o,handleClass:r,resizeNotifier:a,children:l})=>{let d=rp.aK.instance.getContainerHeight(e,rp.mc.Top);var m;(t||(t=100),n||(n=ba.A.instance.windowHeight/4*3),d)?(d=(0,s_.qE)(d,0,100),d=(0,s_.yj)(d/100,t,n)):d=null!==(m=c.Ay.get().default_widget_container_height)&&void 0!==m?m:280;return i.createElement(pm.c,{size:{height:Math.min(d,n),width:void 0},minHeight:t,maxHeight:n,onResizeStart:()=>{a.startResizing()},onResize:()=>{a.notifyTimelineHeightChanged()},onResizeStop:(i,s,o,r)=>{let l=d+r.height;l=100*(0,s_.s5)(l,t,n),rp.aK.instance.setContainerHeight(e,rp.mc.Top,l),a.stopResizing()},className:s,handleWrapperClass:o,handleClasses:{bottom:r},enable:{bottom:!0}},l)};var a_=n("./node_modules/matrix-js-sdk/src/webrtc/callEventTypes.ts");class l_ extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"element",void 0),(0,w.A)(this,"setElementRef",e=>{var t;e?(this.element=e,e.addEventListener("resize",this.onResize)):null===(t=this.element)||void 0===t||t.removeEventListener("resize",this.onResize)}),(0,w.A)(this,"onNewStream",()=>{this.setState({audioMuted:this.props.feed.isAudioMuted(),videoMuted:this.props.feed.isVideoMuted()}),this.playMedia()}),(0,w.A)(this,"onMuteStateChanged",()=>{this.setState({audioMuted:this.props.feed.isAudioMuted(),videoMuted:this.props.feed.isVideoMuted()})}),(0,w.A)(this,"onResize",e=>{this.props.onResize&&!this.props.feed.isLocal()&&this.props.onResize(e)}),this.state={audioMuted:this.props.feed.isAudioMuted(),videoMuted:this.props.feed.isVideoMuted()}}componentDidMount(){this.updateFeed(null,this.props.feed),this.playMedia()}componentWillUnmount(){this.updateFeed(this.props.feed,null)}componentDidUpdate(e,t){this.updateFeed(e.feed,this.props.feed),t.videoMuted===this.state.videoMuted&&e.feed.stream===this.props.feed.stream||this.playMedia()}static getDerivedStateFromProps(e){return{audioMuted:e.feed.isAudioMuted(),videoMuted:e.feed.isVideoMuted()}}updateFeed(e,t){e!==t&&(e&&(this.props.feed.removeListener(lm.BL.NewStream,this.onNewStream),this.props.feed.removeListener(lm.BL.MuteStateChanged,this.onMuteStateChanged),this.props.feed.purpose===a_.h.Usermedia&&this.props.feed.measureVolumeActivity(!1),this.stopMedia()),t&&(this.props.feed.addListener(lm.BL.NewStream,this.onNewStream),this.props.feed.addListener(lm.BL.MuteStateChanged,this.onMuteStateChanged),this.props.feed.purpose===a_.h.Usermedia&&this.props.feed.measureVolumeActivity(!0),this.playMedia()))}async playMedia(){const e=this.element;if(e){e.muted=!0,e.srcObject=this.props.feed.stream,e.autoplay=!0;try{await e.play()}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;e&&(e.pause(),e.removeAttribute("src"))}render(){const{pipMode:e,primary:t,secondary:n,feed:s}=this.props,o=Lt()("mx_VideoFeed",{mx_VideoFeed_primary:t,mx_VideoFeed_secondary:n,mx_VideoFeed_voice:this.state.videoMuted}),r=Lt()("mx_VideoFeed_mic",{mx_VideoFeed_mic_muted:this.state.audioMuted,mx_VideoFeed_mic_unmuted:!this.state.audioMuted});let a,l;if(s.purpose===a_.h.Screenshare||e||(a=i.createElement("div",{className:r})),this.state.videoMuted){var c;const n=Rt.Ay.instance.roomIdForCall(this.props.call),s=null!==(c=n?v.J.safeGet().getRoom(n):void 0)&&void 0!==c?c:void 0;let o;e&&t?o="76px":e&&!t?o="16px":!e&&t&&(o="160px"),l=i.createElement(En.A,{room:s,size:o})}else{const e=Lt()("mx_VideoFeed_video",{mx_VideoFeed_video_mirror:this.props.feed.isLocal()&&this.props.feed.purpose===a_.h.Usermedia&&D.A.getValue("VideoView.flipVideoHorizontally")});l=i.createElement("video",{className:e,ref:this.setElementRef})}return i.createElement("div",{className:o},a,l)}}class c_ extends i.Component{render(){const e=this.props.feeds.map(e=>i.createElement(l_,{key:e.stream.id,feed:e,call:this.props.call,primary:!1,pipMode:this.props.pipMode})),t=Lt()("mx_LegacyCallViewSidebar",{mx_LegacyCallViewSidebar_pipMode:this.props.pipMode});return i.createElement("div",{className:t},e)}}const d_=({onExpand:e,onPin:t,onMaximize:n})=>i.createElement("div",{className:"mx_LegacyCallViewHeader_controls"},n&&i.createElement(le.A,{className:"mx_LegacyCallViewHeader_button mx_LegacyCallViewHeader_button_fullscreen",onClick:n,title:(0,l._t)("voip|maximise")}),t&&i.createElement(le.A,{className:"mx_LegacyCallViewHeader_button mx_LegacyCallViewHeader_button_pin",onClick:t,title:(0,l._t)("action|pin")}),e&&i.createElement(le.A,{className:"mx_LegacyCallViewHeader_button mx_LegacyCallViewHeader_button_expand",onClick:e,title:(0,l._t)("voip|expand")})),m_=({callRoom:e})=>i.createElement("span",{className:"mx_LegacyCallViewHeader_secondaryCallInfo"},i.createElement(En.A,{room:e,size:"16px"}),i.createElement("span",{className:"mx_LegacyCallView_secondaryCall_roomName"},(0,l._t)("voip|on_hold",{name:e.name}))),u_=({pipMode:e=!1,callRooms:t,onPipMouseDown:n,onExpand:s,onPin:o,onMaximize:r})=>{const[a,c]=t,d=a.name;return e?i.createElement("div",{className:"mx_LegacyCallViewHeader mx_LegacyCallViewHeader_pip",onMouseDown:n},i.createElement(En.A,{room:a,size:"32px"}),i.createElement("div",{className:"mx_LegacyCallViewHeader_callInfo"},i.createElement("div",{className:"mx_LegacyCallViewHeader_roomName"},d),c&&i.createElement(m_,{callRoom:c})),i.createElement(d_,{onExpand:s,onPin:o,onMaximize:r})):i.createElement("div",{className:"mx_LegacyCallViewHeader"},i.createElement("div",{className:"mx_LegacyCallViewHeader_icon"}),i.createElement("span",{className:"mx_LegacyCallViewHeader_text"},(0,l._t)("action|call")),i.createElement(d_,{onMaximize:r}))};class h_ extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"onHoldClick",()=>{this.props.call.setRemoteOnHold(!0),this.props.onFinished()}),(0,w.A)(this,"onUnholdClick",()=>{Rt.Ay.instance.setActiveCallRoomId(this.props.call.roomId),this.props.onFinished()}),(0,w.A)(this,"onTransferClick",()=>{Rt.Ay.instance.showTransferDialog(this.props.call),this.props.onFinished()})}render(){const e=this.props.call.isRemoteOnHold()?(0,l._t)("action|resume"):(0,l._t)("action|hold"),t=this.props.call.isRemoteOnHold()?this.onUnholdClick:this.onHoldClick;let n;return this.props.call.opponentCanBeTransferred()&&(n=i.createElement(bn.Dr,{className:"mx_LegacyCallContextMenu_item",onClick:this.onTransferClick},(0,l._t)("action|transfer"))),i.createElement(bn.Ay,this.props,i.createElement(bn.Dr,{className:"mx_LegacyCallContextMenu_item",onClick:t},e),n)}}var p_=n("./src/components/views/voip/DialPad.tsx");class g_ extends i.Component{constructor(e){super(e),(0,w.A)(this,"numberEntryFieldRef",(0,i.createRef)()),(0,w.A)(this,"onDigitPress",(e,t)=>{var n;(this.props.call.sendDtmfDigit(e),this.setState({value:this.state.value+e}),"click"===t.type)&&(null===(n=this.numberEntryFieldRef.current)||void 0===n||n.focus())}),(0,w.A)(this,"onCancelClick",()=>{this.props.onFinished()}),(0,w.A)(this,"onKeyDown",e=>{"Backspace"!==e.code&&"Delete"!==e.code||e.preventDefault()}),(0,w.A)(this,"onChange",e=>{this.setState({value:e.target.value})}),this.state={value:""}}render(){return i.createElement(bn.Ay,this.props,i.createElement("div",{className:"mx_DialPadContextMenuWrapper"},i.createElement("div",null,i.createElement(le.A,{className:"mx_DialPadContextMenu_cancel",onClick:this.onCancelClick})),i.createElement("div",{className:"mx_DialPadContextMenu_header"},i.createElement(qs.A,{ref:this.numberEntryFieldRef,className:"mx_DialPadContextMenu_dialled",value:this.state.value,autoFocus:!0,onKeyDown:this.onKeyDown,onChange:this.onChange})),i.createElement("div",{className:"mx_DialPadContextMenu_dialPad"},i.createElement(p_.Ay,{onDigitPress:this.onDigitPress,hasDial:!1}))))}}const v_=["deviceKinds"],__={[oa.cm.AudioInput]:(0,l.AO)("voip|input_devices"),[oa.cm.AudioOutput]:(0,l.AO)("voip|output_devices"),[oa.cm.VideoInput]:(0,l.AO)("common|cameras")},f_=({label:e,selected:t,onClick:n})=>i.createElement(Aa.h6,{iconClassName:"mx_DeviceContextMenu_device_icon",label:e,active:t,onClick:n}),E_=({deviceKind:e})=>{const[t,n]=(0,i.useState)([]),[s,o]=(0,i.useState)(oa.Ay.getDevice(e));(0,i.useEffect)(()=>{(async()=>{var t,i;n(null!==(t=null===(i=await oa.Ay.getDevices())||void 0===i?void 0:i[e])&&void 0!==t?t:[])})()},[e]);return i.createElement(Aa.tx,{label:(0,l._t)(__[e])},t.map(({label:t,deviceId:n})=>i.createElement(f_,{key:n,label:t,selected:s===n,onClick:()=>(t=>{oa.Ay.instance.setDevice(t,e),o(t)})(n)})))},y_=e=>{let{deviceKinds:t}=e,n=(0,g.A)(e,v_);return i.createElement(Aa.Ay,(0,Wt.A)({compact:!0,className:"mx_DeviceContextMenu"},n),t.map(e=>i.createElement(E_,{key:e,deviceKind:e})))},b_=["children","state","className","onLabel","offLabel","forceHide","onHover","ref"],w_=["state","deviceKinds"],S_=e=>{let{children:t,state:n,className:s,onLabel:o,offLabel:r,forceHide:a,onHover:l,ref:c}=e,d=(0,g.A)(e,b_);const m=Lt()("mx_LegacyCallViewButtons_button",s,{mx_LegacyCallViewButtons_button_on:n,mx_LegacyCallViewButtons_button_off:!n}),u=a?void 0:n?o:r;return i.createElement(le.A,(0,Wt.A)({ref:c,className:m,title:u,placement:"top",onTooltipOpenChange:l},d),t)},A_=e=>{let{state:t,deviceKinds:n}=e,s=(0,g.A)(e,w_);const[o,r,a,l]=(0,bn.EF)(),[c,d]=(0,i.useState)(!1),m=Lt()("mx_LegacyCallViewButtons_button","mx_LegacyCallViewButtons_dropdownButton",{mx_LegacyCallViewButtons_dropdownButton_collapsed:!o});return i.createElement(S_,(0,Wt.A)({ref:r,forceHide:o||c,state:t},s),i.createElement(S_,{className:m,onClick:e=>{e.stopPropagation(),a()},onHover:e=>d(e),state:t}),o&&r.current&&i.createElement(y_,(0,Wt.A)({},(0,bn.Gi)(r.current.getBoundingClientRect()),{onFinished:l,deviceKinds:n})))};class C_ extends i.Component{constructor(e){super(e),(0,w.A)(this,"dialpadButton",(0,i.createRef)()),(0,w.A)(this,"contextMenuButton",(0,i.createRef)()),(0,w.A)(this,"controlsHideTimer",null),(0,w.A)(this,"onControlsHideTimer",()=>{this.state.hoveringControls||this.state.showDialpad||this.state.showMoreMenu||(this.controlsHideTimer=null,this.setState({visible:!1}))}),(0,w.A)(this,"onMouseEnter",()=>{this.setState({hoveringControls:!0})}),(0,w.A)(this,"onMouseLeave",()=>{this.setState({hoveringControls:!1})}),(0,w.A)(this,"onDialpadClick",()=>{this.state.showDialpad?this.setState({showDialpad:!1}):(this.setState({showDialpad:!0}),this.showControls())}),(0,w.A)(this,"onMoreClick",()=>{this.setState({showMoreMenu:!0}),this.showControls()}),(0,w.A)(this,"closeDialpad",()=>{this.setState({showDialpad:!1})}),(0,w.A)(this,"closeContextMenu",()=>{this.setState({showMoreMenu:!1})}),this.state={showDialpad:!1,hoveringControls:!1,showMoreMenu:!1,visible:!0}}componentDidMount(){this.showControls()}showControls(){this.state.showMoreMenu||this.state.showDialpad||(this.state.visible||this.setState({visible:!0}),null!==this.controlsHideTimer&&clearTimeout(this.controlsHideTimer),this.controlsHideTimer=window.setTimeout(this.onControlsHideTimer,2e3))}render(){const e=Lt()("mx_LegacyCallViewButtons",{mx_LegacyCallViewButtons_hidden:!this.state.visible});let t,n;return this.state.showDialpad&&this.dialpadButton.current&&(t=i.createElement(g_,(0,Wt.A)({},(0,bn.t$)(this.dialpadButton.current.getBoundingClientRect(),bn.t4.None,8),{mountAsChild:!this.props.pipMode,onFinished:this.closeDialpad,call:this.props.call}))),this.state.showMoreMenu&&this.contextMenuButton.current&&(n=i.createElement(h_,(0,Wt.A)({},(0,bn.t$)(this.contextMenuButton.current.getBoundingClientRect(),bn.t4.None,8),{mountAsChild:!this.props.pipMode,onFinished:this.closeContextMenu,call:this.props.call}))),i.createElement("div",{className:e,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave},t,n,this.props.buttonsVisibility.dialpad&&i.createElement(bn.oW,{className:"mx_LegacyCallViewButtons_button mx_LegacyCallViewButtons_dialpad",ref:this.dialpadButton,onClick:this.onDialpadClick,isExpanded:this.state.showDialpad,title:(0,l._t)("voip|dialpad"),placement:"top"}),i.createElement(A_,{state:!this.props.buttonsState.micMuted,className:"mx_LegacyCallViewButtons_button_mic",onLabel:(0,l._t)("voip|disable_microphone"),offLabel:(0,l._t)("voip|enable_microphone"),onClick:this.props.handlers.onMicMuteClick,deviceKinds:[oa.cm.AudioInput,oa.cm.AudioOutput]}),this.props.buttonsVisibility.vidMute&&i.createElement(A_,{state:!this.props.buttonsState.vidMuted,className:"mx_LegacyCallViewButtons_button_vid",onLabel:(0,l._t)("voip|disable_camera"),offLabel:(0,l._t)("voip|enable_camera"),onClick:this.props.handlers.onVidMuteClick,deviceKinds:[oa.cm.VideoInput]}),this.props.buttonsVisibility.screensharing&&i.createElement(S_,{state:this.props.buttonsState.screensharing,className:"mx_LegacyCallViewButtons_button_screensharing",onLabel:(0,l._t)("voip|stop_screenshare"),offLabel:(0,l._t)("voip|start_screenshare"),onClick:this.props.handlers.onScreenshareClick}),this.props.buttonsVisibility.sidebar&&i.createElement(S_,{state:this.props.buttonsState.sidebarShown,className:"mx_LegacyCallViewButtons_button_sidebar",onLabel:(0,l._t)("voip|hide_sidebar_button"),offLabel:(0,l._t)("voip|show_sidebar_button"),onClick:this.props.handlers.onToggleSidebarClick}),this.props.buttonsVisibility.contextMenu&&i.createElement(bn.oW,{className:"mx_LegacyCallViewButtons_button mx_LegacyCallViewButtons_button_more",onClick:this.onMoreClick,ref:this.contextMenuButton,isExpanded:this.state.showMoreMenu,title:(0,l._t)("voip|more_button"),placement:"top"}),i.createElement(le.A,{className:"mx_LegacyCallViewButtons_button mx_LegacyCallViewButtons_button_hangup",onClick:this.props.handlers.onHangupClick,title:(0,l._t)("voip|hangup"),placement:"top"}))}}function x_(){return document.fullscreenElement}function R_(){document.exitFullscreen()}class k_ extends i.Component{constructor(e){super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"contentWrapperRef",(0,i.createRef)()),(0,w.A)(this,"buttonsRef",(0,i.createRef)()),(0,w.A)(this,"onAction",e=>{if("video_fullscreen"===e.action){if(!this.contentWrapperRef.current)return;e.fullscreen?this.contentWrapperRef.current.requestFullscreen():x_()&&R_()}}),(0,w.A)(this,"onCallState",e=>{this.setState({callState:e})}),(0,w.A)(this,"onFeedsChanged",e=>{const{primary:t,secondary:n,sidebar:i}=k_.getOrderedFeeds(e);this.setState({primaryFeed:t,secondaryFeed:n,sidebarFeeds:i,micMuted:this.props.call.isMicrophoneMuted(),vidMuted:this.props.call.isLocalVideoMuted()})}),(0,w.A)(this,"onCallLocalHoldUnhold",()=>{this.setState({isLocalOnHold:this.props.call.isLocalOnHold()})}),(0,w.A)(this,"onCallRemoteHoldUnhold",()=>{this.setState({isRemoteOnHold:this.props.call.isRemoteOnHold(),isLocalOnHold:this.props.call.isLocalOnHold()})}),(0,w.A)(this,"onMouseMove",()=>{var e;null===(e=this.buttonsRef.current)||void 0===e||e.showControls()}),(0,w.A)(this,"onMaximizeClick",()=>{S.A.dispatch({action:"video_fullscreen",fullscreen:!0})}),(0,w.A)(this,"onMicMuteClick",async()=>{const e=!this.state.micMuted;this.setState({micMuted:await this.props.call.setMicrophoneMuted(e)})}),(0,w.A)(this,"onVidMuteClick",async()=>{const e=!this.state.vidMuted;this.setState({vidMuted:await this.props.call.setLocalVideoMuted(e)})}),(0,w.A)(this,"onScreenshareClick",async()=>{var e,t;let n;n=this.state.screensharing?await this.props.call.setScreensharingEnabled(!1):await this.props.call.setScreensharingEnabled(!0),null===(e=(t=this.props).setSidebarShown)||void 0===e||e.call(t,!0),this.setState({screensharing:n})}),(0,w.A)(this,"onNativeKeyDown",e=>{var t,n;let i=!1;switch((0,Us.zM)().getCallAction(e)){case si.bY.ToggleMicInCall:this.onMicMuteClick(),null===(t=this.buttonsRef.current)||void 0===t||t.showControls(),i=!0;break;case si.bY.ToggleWebcamInCall:this.onVidMuteClick(),null===(n=this.buttonsRef.current)||void 0===n||n.showControls(),i=!0}i&&(e.stopPropagation(),e.preventDefault())}),(0,w.A)(this,"onCallResumeClick",()=>{const e=Rt.Ay.instance.roomIdForCall(this.props.call);e&&Rt.Ay.instance.setActiveCallRoomId(e)}),(0,w.A)(this,"onTransferClick",()=>{const e=Rt.Ay.instance.getTransfereeForCallId(this.props.call.callId);e&&this.props.call.transferToCall(e)}),(0,w.A)(this,"onHangupClick",()=>{const e=Rt.Ay.instance.roomIdForCall(this.props.call);e&&Rt.Ay.instance.hangupOrReject(e)}),(0,w.A)(this,"onToggleSidebar",()=>{var e,t;null===(e=(t=this.props).setSidebarShown)||void 0===e||e.call(t,!this.props.sidebarShown)});const{primary:t,secondary:n,sidebar:s}=k_.getOrderedFeeds(this.props.call.getFeeds());this.state={isLocalOnHold:this.props.call.isLocalOnHold(),isRemoteOnHold:this.props.call.isRemoteOnHold(),micMuted:this.props.call.isMicrophoneMuted(),vidMuted:this.props.call.isLocalVideoMuted(),screensharing:this.props.call.isScreensharing(),callState:this.props.call.state,primaryFeed:t,secondaryFeed:n,sidebarFeeds:s}}componentDidMount(){this.updateCallListeners(null,this.props.call),this.dispatcherRef=S.A.register(this.onAction),document.addEventListener("keydown",this.onNativeKeyDown)}componentWillUnmount(){x_()&&R_(),document.removeEventListener("keydown",this.onNativeKeyDown),this.updateCallListeners(this.props.call,null),S.A.unregister(this.dispatcherRef)}static getDerivedStateFromProps(e){const{primary:t,secondary:n,sidebar:i}=k_.getOrderedFeeds(e.call.getFeeds());return{primaryFeed:t,secondaryFeed:n,sidebarFeeds:i}}componentDidUpdate(e){this.props.call!==e.call&&(this.setState({isLocalOnHold:this.props.call.isLocalOnHold(),isRemoteOnHold:this.props.call.isRemoteOnHold(),micMuted:this.props.call.isMicrophoneMuted(),vidMuted:this.props.call.isLocalVideoMuted(),callState:this.props.call.state}),this.updateCallListeners(null,this.props.call))}updateCallListeners(e,t){e!==t&&(e&&(e.removeListener(Ht.$E.State,this.onCallState),e.removeListener(Ht.$E.LocalHoldUnhold,this.onCallLocalHoldUnhold),e.removeListener(Ht.$E.RemoteHoldUnhold,this.onCallRemoteHoldUnhold),e.removeListener(Ht.$E.FeedsChanged,this.onFeedsChanged)),t&&(t.on(Ht.$E.State,this.onCallState),t.on(Ht.$E.LocalHoldUnhold,this.onCallLocalHoldUnhold),t.on(Ht.$E.RemoteHoldUnhold,this.onCallRemoteHoldUnhold),t.on(Ht.$E.FeedsChanged,this.onFeedsChanged)))}static getOrderedFeeds(e){if(e.length<=2)return{primary:e.find(e=>!e.isLocal()),secondary:e.find(e=>e.isLocal()),sidebar:[]};let t;const n=e.filter(e=>e.purpose===a_.h.Screenshare);t=n.find(e=>!e.isLocal())||n[0],t||(t=e.find(e=>!e.isLocal()));const i=[...e];return t&&i.splice(i.indexOf(t),1),i.sort((e,t)=>e.isLocal()&&!t.isLocal()?-1:!e.isLocal()&&t.isLocal()?1:0),{primary:t,sidebar:i}}renderCallControls(){const{call:e,pipMode:t,sidebarShown:n}=this.props,{callState:s,micMuted:o,vidMuted:r,screensharing:a,secondaryFeed:l,sidebarFeeds:c}=this.state,d=e.opponentSupportsSDPStreamMetadata()||e.hasLocalUserMediaVideoTrack,m=(e.opponentSupportsSDPStreamMetadata()||e.hasLocalUserMediaVideoTrack)&&e.state===Ht.iP.Connected,u=!t&&(l&&!l.isVideoMuted()||c.length>0),h=s===Ht.iP.Connected,p=s===Ht.iP.Connected&&e.opponentSupportsDTMF();return i.createElement(C_,{ref:this.buttonsRef,call:e,pipMode:t,handlers:{onToggleSidebarClick:this.onToggleSidebar,onScreenshareClick:this.onScreenshareClick,onHangupClick:this.onHangupClick,onMicMuteClick:this.onMicMuteClick,onVidMuteClick:this.onVidMuteClick},buttonsState:{micMuted:o,vidMuted:r,sidebarShown:n,screensharing:a},buttonsVisibility:{vidMute:d,screensharing:m,sidebar:u,contextMenu:h,dialpad:p}})}renderToast(){var e;const{call:t,sidebarShown:n}=this.props;if(!t.getFeeds().some(e=>e.purpose===a_.h.Screenshare))return null;const s=t.isScreensharing(),{primaryFeed:o}=this.state,r=null==o||null===(e=o.getMember())||void 0===e?void 0:e.name;if(!r)return null;let a=s?(0,l._t)("voip|you_are_presenting"):(0,l._t)("voip|user_is_presenting",{sharerName:r});return n||(a+=" • "+(t.isLocalVideoMuted()?(0,l._t)("voip|camera_disabled"):(0,l._t)("voip|camera_enabled"))),i.createElement("div",{className:"mx_LegacyCallView_toast"},a)}renderContent(){var e;const{pipMode:t,call:n,onResize:s,sidebarShown:o}=this.props,{isLocalOnHold:r,isRemoteOnHold:a,primaryFeed:c,secondaryFeed:d,sidebarFeeds:m}=this.state,u=Rt.Ay.instance.roomIdForCall(n),h=null!==(e=u?v.J.safeGet().getRoom(u):void 0)&&void 0!==e?e:void 0,p=t?"76px":"160px",g=Rt.Ay.instance.getTransfereeForCallId(n.callId),_=r||a;let f;if(o&&d&&!d.isVideoMuted()&&(f=i.createElement(l_,{feed:d,call:n,pipMode:t,onResize:s,secondary:!0})),g||_){const e=Lt()("mx_LegacyCallView_content",{mx_LegacyCallView_content_hold:_}),t=(0,jt._V)(n.getOpponentMember(),1024,1024,"crop");let s;if(g){const e=v.J.safeGet(),t=Rt.Ay.instance.roomIdForCall(n),o=t?e.getRoom(t):null,r=o?o.name:(0,l._t)("voip|unknown_person"),a=Rt.Ay.instance.roomIdForCall(g),c=a?e.getRoom(a):null,d=c?c.name:(0,l._t)("voip|unknown_person");s=i.createElement("div",{className:"mx_LegacyCallView_status"},(0,l._t)("voip|consulting",{transferTarget:r,transferee:d},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.onTransferClick},e)}))}else{let e;if(a)e=(0,l._t)(Rt.Ay.instance.hasAnyUnheldCall()?(0,l.AO)("voip|call_held_switch"):(0,l.AO)("voip|call_held_resume"),{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.onCallResumeClick},e)});else if(r){var E;e=(0,l._t)("voip|call_held",{peerName:null===(E=n.getOpponentMember())||void 0===E?void 0:E.name})}s=i.createElement("div",{className:"mx_LegacyCallView_status"},e)}return i.createElement("div",{className:e,onMouseMove:this.onMouseMove},i.createElement("div",{className:"mx_LegacyCallView_holdBackground",style:{backgroundImage:"url("+t+")"}}),s)}return n.noIncomingFeeds()?i.createElement("div",{className:"mx_LegacyCallView_content",onMouseMove:this.onMouseMove},i.createElement("div",{className:"mx_LegacyCallView_avatarsContainer"},i.createElement("div",{className:"mx_LegacyCallView_avatarContainer",style:{width:p,height:p}},i.createElement(En.A,{room:h,size:p}))),i.createElement("div",{className:"mx_LegacyCallView_status"},(0,l._t)("voip|connecting")),f):t?i.createElement("div",{className:"mx_LegacyCallView_content",onMouseMove:this.onMouseMove},i.createElement(l_,{feed:c,call:n,pipMode:t,onResize:s,primary:!0})):d?i.createElement("div",{className:"mx_LegacyCallView_content",onMouseMove:this.onMouseMove},i.createElement(l_,{feed:c,call:n,pipMode:t,onResize:s,primary:!0}),f):i.createElement("div",{className:"mx_LegacyCallView_content",onMouseMove:this.onMouseMove},i.createElement(l_,{feed:c,call:n,pipMode:t,onResize:s,primary:!0}),o&&i.createElement(c_,{feeds:m,call:n,pipMode:Boolean(t)}))}render(){const{call:e,secondaryCall:t,pipMode:n,showApps:s,onMouseDownOnHeader:o,sidebarShown:r}=this.props,{sidebarFeeds:a}=this.state,l=v.J.safeGet(),c=Rt.Ay.instance.roomIdForCall(e),d=Rt.Ay.instance.roomIdForCall(t),m=c?l.getRoom(c):null;if(!m)return null;const u=d?l.getRoom(d):null,h=Lt()({mx_LegacyCallView:!0,mx_LegacyCallView_pip:n,mx_LegacyCallView_large:!n,mx_LegacyCallView_sidebar:r&&0!==a.length&&!n,mx_LegacyCallView_belowWidget:s});return i.createElement("div",{className:h},i.createElement(u_,{onPipMouseDown:o,pipMode:n,callRooms:[m,u],onMaximize:this.onMaximizeClick}),i.createElement("div",{className:"mx_LegacyCallView_content_wrapper",ref:this.contentWrapperRef},this.renderToast(),this.renderContent(),this.renderCallControls()))}}class I_ extends i.Component{constructor(e,t){super(e,t),(0,w.A)(this,"updateCall",()=>{const e=this.getCall();e!==this.state.call&&this.setState({call:e});const t=!!e&&Rt.Ay.instance.isCallSidebarShown(e.callId);t!==this.state.sidebarShown&&this.setState({sidebarShown:t})}),(0,w.A)(this,"onResizeStart",()=>{this.context.resizeNotifier.startResizing()}),(0,w.A)(this,"onResize",()=>{this.context.resizeNotifier.notifyTimelineHeightChanged()}),(0,w.A)(this,"onResizeStop",()=>{this.context.resizeNotifier.stopResizing()}),(0,w.A)(this,"setSidebarShown",e=>{this.state.call&&Rt.Ay.instance.setCallSidebarShown(this.state.call.callId,e)});const n=this.getCall();this.state={call:n,sidebarShown:!!n&&Rt.Ay.instance.isCallSidebarShown(n.callId)}}componentDidMount(){Rt.Ay.instance.addListener(Rt.uv.CallState,this.updateCall),Rt.Ay.instance.addListener(Rt.uv.CallChangeRoom,this.updateCall),Rt.Ay.instance.addListener(Rt.uv.ShownSidebarsChanged,this.updateCall)}componentWillUnmount(){Rt.Ay.instance.removeListener(Rt.uv.CallState,this.updateCall),Rt.Ay.instance.removeListener(Rt.uv.CallChangeRoom,this.updateCall),Rt.Ay.instance.removeListener(Rt.uv.ShownSidebarsChanged,this.updateCall)}getCall(){const e=Rt.Ay.instance.getCallForRoom(this.props.roomId);return e&&[Ht.iP.Ended,Ht.iP.Ringing].includes(e.state)?null:e}render(){return this.state.call?i.createElement("div",{className:"mx_LegacyCallViewForRoom"},i.createElement(pm.c,{minHeight:380,maxHeight:"80vh",enable:{top:!1,right:!1,bottom:!0,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,className:"mx_LegacyCallViewForRoom_ResizeWrapper",handleClasses:{bottom:"mx_LegacyCallViewForRoom_ResizeHandle"}},i.createElement(k_,{call:this.state.call,pipMode:!1,showApps:this.props.showApps,sidebarShown:this.state.sidebarShown,setSidebarShown:this.setSidebarShown}))):null}}(0,w.A)(I_,"contextType",Do.A);class T_ extends i.Component{shouldComponentUpdate(e){return(0,wn.No)(this.props,e)}render(){const e=i.createElement(I_,{roomId:this.props.room.roomId,showApps:this.props.showApps});let t;return D.A.getValue(gt.f.Widgets)&&(t=i.createElement(o_,{room:this.props.room,userId:this.props.userId,showApps:this.props.showApps})),i.createElement(es.A,{role:"region",className:"mx_AuxPanel"},this.props.children,t,e)}}(0,w.A)(T_,"defaultProps",{showApps:!0});var P_=n("./node_modules/@vector-im/compound-web/dist/components/Typography/Body.js"),N_=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/voice-call-solid.js"),M_=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/close.js"),D_=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/info-solid.js");const O_=(e,t="")=>(null==e?void 0:e.name)||t;var F_=n("./src/models/Call.ts");const L_=async(e,t,n,i)=>{const{analyticsName:s}=j_(n);ri.A.trackInteraction(s),n==B_.LegacyCall||n==B_.JitsiCall?await Rt.Ay.instance.placeCall(e.roomId,t):n==B_.ElementCall&&S.A.dispatch({action:H.r.ViewRoom,room_id:e.roomId,view_call:!0,skipLobby:i,metricsTrigger:void 0})};var U_=n("./src/widgets/ManagedHybrid.ts"),V_=n("./src/stores/CallStore.ts");let B_=function(e){return e[e.ElementCall=0]="ElementCall",e[e.JitsiCall=1]="JitsiCall",e[e.LegacyCall=2]="LegacyCall",e}({});const j_=e=>{switch(e){case B_.ElementCall:return{label:(0,l._t)("voip|element_call"),analyticsName:"WebVoipOptionElementCall"};case B_.JitsiCall:return{label:(0,l._t)("voip|jitsi_call"),analyticsName:"WebVoipOptionJitsi"};case B_.LegacyCall:return{label:(0,l._t)("voip|legacy_call"),analyticsName:"WebVoipOptionLegacy"}}};var W_=function(e){return e[e.NoCall=0]="NoCall",e[e.NoPermission=1]="NoPermission",e[e.Unpinned=2]="Unpinned",e[e.Ongoing=3]="Ongoing",e[e.NotJoined=4]="NotJoined",e}(W_||{});var H_=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/chat-solid.js"),z_=n("./src/components/views/rooms/RoomHeader/toggle/useToggled.tsx");function K_({Icon:e,phase:t}){const n=(0,z_.K)(t),s=Lt()({mx_RoomHeader_toggled:n});return i.createElement(e,{className:s})}const G_=({room:e})=>{const t=(0,i.useContext)(Do.A),n=t.roomNotificationStateStore.getRoomState(e),s=(0,Fi.dF)(n,ed.ce.Update,()=>null==n?void 0:n.level),o=!!s&&[Na.S.Activity,Na.S.Notification,Na.S.Highlight].includes(s);return i.createElement(zt.m,{label:(0,l._t)("right_panel|video_room_chat|title")},i.createElement(Sl.K,{"aria-label":(0,l._t)("right_panel|video_room_chat|title"),onClick:e=>{e.stopPropagation(),t.rightPanelStore.showOrHidePhase(kl.n.Timeline)},indicator:o?"default":void 0},i.createElement(K_,{Icon:H_.A,phase:kl.n.Timeline})))},J_=({room:e})=>{const[t,n]=(0,i.useState)(!1),s=(0,Fi.DY)(e,o.RoomStateEvent.Update,(0,i.useCallback)(()=>e.getMembersWithMembership(X.O.Knock),[e])),r=s.length;if(e.getJoinRule()!==o.JoinRule.Knock||0===r)return null;const a=e.client,c=a.getUserId()||"",d=e.canInvite(c),m=e.getMember(c),u=e.getLiveTimeline().getState(o.EventTimeline.FORWARDS),h=!(!m||!u)&&u.hasSufficientPowerLevelFor("kick",m.powerLevel);if(!d&&!h)return null;const p=e=>{R.Ay.createDialog(It.A,{title:e.name,description:e.message})},g=()=>S.A.dispatch({action:"open_room_settings",room_id:e.roomId,initial_tab_id:Ut.e.People});let v=i.createElement(le.A,{className:"mx_RoomKnocksBar_action",kind:"primary",onClick:g,title:(0,l._t)("action|view")},(0,l._t)("action|view")),_=(0,Jt.ki)(s.map(e=>e.name),3,!0),f=null;var E;1===r&&(v=i.createElement(i.Fragment,null,i.createElement(le.A,{className:"mx_RoomKnocksBar_action",disabled:!h||t,kind:"icon_primary_outline",onClick:()=>(t=>{n(!0),a.kick(e.roomId,t).catch(p).finally(()=>n(!1))})(s[0].userId),title:(0,l._t)("action|deny")},i.createElement(M_.A,{width:18,height:18})),i.createElement(le.A,{className:"mx_RoomKnocksBar_action",disabled:!d||t,kind:"icon_primary",onClick:()=>(t=>{n(!0),a.invite(e.roomId,t).catch(p).finally(()=>n(!1))})(s[0].userId),title:(0,l._t)("action|approve")},i.createElement(pe.A,{width:18,height:18}))),_=`${s[0].name} (${s[0].userId})`,f=(null===(E=s[0].events.member)||void 0===E?void 0:E.getContent().reason)&&i.createElement(le.A,{className:"mx_RoomKnocksBar_link",element:"a",kind:"link_inline",onClick:g},(0,l._t)("action|view_message")));return i.createElement("div",{className:"mx_RoomKnocksBar"},s.slice(0,2).map(e=>i.createElement(ln.A,{className:"mx_RoomKnocksBar_avatar",key:e.userId,member:e,size:"32px"})),i.createElement("div",{className:"mx_RoomKnocksBar_content"},i.createElement(bh.A,{size:"4"},(0,l._t)("room|header|n_people_asking_to_join",{count:r})),i.createElement("p",{className:"mx_RoomKnocksBar_paragraph"},_,f)),v)},$_=({room:e})=>{const{canInviteGuests:t,guestSpaUrl:n,isRoomJoinable:r,canInvite:a}=(e=>{const t=(0,i.useMemo)(()=>c.Ay.get("element_call").guest_spa_url,[]),{joinRule:n,canInvite:s,canChangeJoinRule:r}=(0,So.U)(e,t=>({joinRule:e.getJoinRule(),canInvite:e.canInvite(e.myUserId),canChangeJoinRule:t.maySendStateEvent(o.EventType.RoomJoinRules,e.myUserId)})),a=(0,i.useMemo)(()=>n===o.JoinRule.Public||n===o.JoinRule.Knock&&s,[s,n]);return{canInviteGuests:(0,i.useMemo)(()=>(r||a)&&void 0!==t,[r,a,t]),guestSpaUrl:t,isRoomJoinable:()=>{const t=e.getJoinRule();return t===o.JoinRule.Public||t===o.JoinRule.Knock&&e.canInvite(e.myUserId)},canInvite:s}})(e),d=(0,i.useCallback)(()=>{if(!r())throw new Error("Cannot create link for room that users can not join without invite.");if(!n)throw new Error("No guest SPA url for external links provided.");const t=new URL(n);t.pathname="/room/",t.searchParams.set("roomId",e.roomId),e.hasEncryptionStateEvent()&&t.searchParams.set("perParticipantE2EE","true");for(const n of(0,Gt.Ex)(e))t.searchParams.set("viaServers",n);return t.hash="/"+e.name+t.search,t.search="",s.vF.info("Generated element call external url:",t),t},[n,r,e]),m=(0,i.useCallback)(()=>{try{const e=d();R.Ay.createDialog($u.G,{target:e,customTitle:(0,l._t)("share|share_call"),subtitle:(0,l._t)("share|share_call_subtitle")})}catch(e){s.vF.error("Could not generate call link.",e)}},[d]),u=(0,i.useCallback)(()=>{r()?m():R.Ay.createDialog(q_,{room:e,canInvite:a}).finished.then(()=>{r()&&m()})},[r,m,e,a]);return i.createElement(i.Fragment,null,t&&i.createElement(zt.m,{label:(0,l._t)("voip|get_call_link")},i.createElement(Sl.K,{onClick:u},i.createElement(cs.A,null))))},q_=({onFinished:e,room:t,canInvite:n})=>{const r=D.A.getValue("feature_ask_to_join"),[a,c]=i.useState(void 0),d=(0,i.useCallback)(async n=>{void 0===a&&(c(n),await t.client.sendStateEvent(t.roomId,o.EventType.RoomJoinRules,{join_rule:n},""),setTimeout(()=>e(),1e3))},[a,e,t.client,t.roomId]);return i.createElement(Q.A,{title:(0,l._t)("update_room_access_modal|title"),onFinished:e,className:"mx_JoinRuleDialog"},i.createElement("p",null,(0,l._t)("update_room_access_modal|description",{},{b:e=>i.createElement("strong",null,e)})),i.createElement("p",null,(0,l._t)("update_room_access_modal|revert_access_description",{},{b:e=>i.createElement("strong",null,e)})),i.createElement(wo.A,{recommendedOption:o.JoinRule.Knock,room:t,disabledOptions:new Set([o.JoinRule.Invite,o.JoinRule.Private,o.JoinRule.Restricted]),hiddenOptions:new Set([o.JoinRule.Restricted].concat(r&&n?[]:[o.JoinRule.Knock])),beforeChange:async e=>(await d(e).catch(()=>!1),!0),closeSettingsFn:()=>{},onError:e=>s.vF.error("Could not generate change access level:",e)}),i.createElement("p",null,(0,l._t)("update_room_access_modal|dont_change_description")),i.createElement("div",{className:"mx_JoinRuleDialogButtons"},i.createElement(Y.$,{kind:"tertiary",className:"mx_Dialog_nonDialogButton",onClick:()=>{void 0===a&&e()}},(0,l._t)("update_room_access_modal|no_change"))))};var Y_=n("./src/contexts/CurrentRightPanelPhaseContext.tsx");function X_({room:e,additionalButtons:t,oobData:n}){const s=(0,de.nH)(),r=function(e,t){let n=(0,l._t)("common|unnamed_room");t&&t.name&&(n=t.name);const[s,r]=(0,i.useState)(O_(e,n));return(0,Fi.YK)(e,o.RoomEvent.Name,()=>{r(O_(e,n))}),(0,i.useEffect)(()=>{r(O_(e,n))},[e,n]),s}(e),a=(0,So.U)(e,e=>e.getJoinRule()),d=nv(e,2500),m=iv(e,{throttleWait:2500,includeInvited:!0}),{voiceCallDisabledReason:u,voiceCallClick:h,videoCallDisabledReason:p,videoCallClick:g,toggleCallMaximized:v,isViewingCall:_,isConnectedToCall:f,hasActiveCallSession:E,callOptions:y,showVoiceCallButton:b,showVideoCallButton:w}=(e=>{var t,n;const s=(0,Vt.ny)("feature_group_calls"),o=(0,Vt.ti)(gt.f.Widgets),r=(0,Vt.ti)(gt.f.Voip),a=(0,i.useMemo)(()=>c.Ay.get("element_call").use_exclusively,[]),d=(0,Fi.dF)(Rt.Ay.instance,Rt.uv.CallsChanged,()=>null!==Rt.Ay.instance.getCallForRoom(e.roomId)),m=(0,ph.X)(e),u=(0,i.useMemo)(()=>m.find(e=>Ih.x.JITSI.matches(e.type)),[m]),h=!!u,p=(0,i.useMemo)(()=>m.find(U_.ec),[m]),g=!!p,v=(0,Zc.Gc)(e.roomId),_=(0,Zc.jd)(v)===F_.KN.Connected,f=null!==v,E=(0,Zc.q0)(v)>0,y=(0,Fi.dF)(Do.M.instance.roomViewStore,Br.H,()=>Do.M.instance.roomViewStore.isViewingCall()||(0,Om.j)(e)),b=iv(e),[w,A]=(0,So.U)(e,()=>[e.currentState.mayClientSendStateEvent("im.vector.modular.widgets",e.client),e.currentState.mayClientSendStateEvent(on.Vj.name,e.client)]),C=(0,i.useMemo)(()=>{const e=[];return b<=2?e.push(B_.LegacyCall):(w||h)&&e.push(B_.JitsiCall),s&&((f||A)&&e.push(B_.ElementCall),a&&!h)||f&&Ih.x.CALL.matches(v.widget.type)?[B_.ElementCall]:e},[b,w,h,s,f,A,a,null==v?void 0:v.widget.type]);let x;var R;(C.includes(B_.JitsiCall)||C.includes(B_.LegacyCall))&&(x=null!=u?u:p),x=C.includes(B_.ElementCall)?null==v?void 0:v.widget:null!==(R=null==v?void 0:v.widget)&&void 0!==R?R:u;const k=(0,i.useCallback)(()=>{T(rp.aK.instance.canAddToContainer(e,rp.mc.Top)),N(!!x&&rp.aK.instance.isInContainer(e,x,rp.mc.Top))},[e,x]);(0,Fi.ml)(rp.aK.instance,rp.aK.emissionForRoom(e),k),(0,i.useEffect)(()=>{k()},[e,u,v,k]);const[I,T]=(0,i.useState)(!1),[P,N]=(0,i.useState)(!1),M=!Ih.x.CALL.matches(null!==(t=null===(n=x)||void 0===n?void 0:n.type)&&void 0!==t?t:"")&&I&&!P,D=(0,Fi.dF)(V_.e.instance,V_.s.ConnectedCalls,()=>Array.from(V_.e.instance.connectedCalls)),O=(0,i.useMemo)(()=>D.find(t=>t.roomId!=e.roomId)?W_.Ongoing:f&&(h||g)?M?W_.Unpinned:W_.Ongoing:d?W_.Ongoing:C.includes(B_.LegacyCall)||A||w?W_.NoCall:W_.NoPermission,[C,D,f,h,d,g,A,w,M,e.roomId]),F=(0,i.useCallback)((t,n)=>{null==t||t.stopPropagation(),x&&M?rp.aK.instance.moveToContainer(e,x,rp.mc.Top):L_(e,Ht.JG.Voice,n,(null==t?void 0:t.shiftKey)||void 0)},[M,e,x]),L=(0,i.useCallback)((t,n)=>{null==t||t.stopPropagation(),x&&M?rp.aK.instance.moveToContainer(e,x,rp.mc.Top):L_(e,Ht.JG.Video,n,(null==t?void 0:t.shiftKey)||void 0)},[x,M,e]);let U,V;switch(O){case W_.NoPermission:U=(0,l._t)("voip|disabled_no_perms_start_voice_call"),V=(0,l._t)("voip|disabled_no_perms_start_video_call");break;case W_.Ongoing:U=(0,l._t)("voip|disabled_ongoing_call"),V=(0,l._t)("voip|disabled_ongoing_call");break;case W_.Unpinned:case W_.NotJoined:case W_.NoCall:U=null,V=null}const B=(0,i.useCallback)(()=>{S.A.dispatch({action:H.r.ViewRoom,room_id:e.roomId,metricsTrigger:void 0,view_call:!y})},[y,e.roomId]),j=e instanceof Iu.Np&&e.state!==Iu.cd.CREATED;let W=(0,U_.dq)(e)||!C.includes(B_.LegacyCall),z=!1;return(b>2&&!o||!r||j)&&(W=!0,z=!0),{voiceCallDisabledReason:U,voiceCallClick:F,videoCallDisabledReason:V,videoCallClick:L,toggleCallMaximized:B,isViewingCall:y,isConnectedToCall:_,hasActiveCallSession:E,callOptions:C,showVoiceCallButton:!W,showVideoCallButton:!z}})(e),A=(0,Vt.ny)("feature_group_calls"),C=(0,i.useMemo)(()=>c.Ay.get("element_call").use_exclusively&&A,[A]),x=(e=>{const[t,n]=(0,i.useState)(Na.S.None),s=(0,i.useCallback)(()=>{switch(null==e?void 0:e.threadsAggregateNotificationType){case o.NotificationCountType.Highlight:return void n(Na.S.Highlight);case o.NotificationCountType.Total:return void n(Na.S.Notification)}(0,Il.Nb)(e)?n(Na.S.Activity):n(Na.S.None)},[e]);return(0,Fi.ml)(e,o.RoomEvent.UnreadNotifications,s),(0,Fi.ml)(e,o.RoomEvent.Receipt,s),(0,Fi.ml)(e,o.RoomEvent.Timeline,s),(0,Fi.ml)(e,o.RoomEvent.Redaction,s),(0,Fi.ml)(e,o.RoomEvent.LocalEchoUpdated,s),(0,Fi.ml)(e,o.RoomEvent.MyMembership,s),(0,Fi.ml)(e,o.ThreadEvent.New,s),(0,Fi.ml)(e,o.ThreadEvent.Update,s),(0,i.useEffect)(()=>{s()},[s]),t})(e),R=(()=>{const[e,t]=(0,i.useState)(Va.n.instance.globalState);return(0,Fi.ml)(Va.n.instance,Va.N,e=>{t(e)}),e})(),k=!!(0,Od.rT)(e),I=function(e,t){const[n,s]=(0,i.useState)(null),r=(0,i.useMemo)(()=>(0,Kt.throttle)(()=>{e.getCrypto()&&(0,km.G)(e,t).then(e=>{s(e)})},250,{leading:!0,trailing:!0}),[e,t]);return(0,i.useEffect)(r,[r]),(0,Fi.YK)(t,o.RoomStateEvent.Members,r),(0,Fi.YK)(e,V.cr.UserTrustStatusChanged,r),(0,Fi.YK)(e,V.cr.DevicesUpdated,r),n}(s,e),T=(0,Vt.ny)("feature_notifications"),P=(0,Vt.ny)("feature_ask_to_join"),N=(0,i.useCallback)(e=>g(e,y[0]),[y,g]),M=i.createElement(zt.m,{label:_?(0,l._t)("voip|minimise_call"):(0,l._t)("voip|maximise_call")},i.createElement(Sl.K,{onClick:v},i.createElement(Ha.A,null))),D=i.createElement(zt.m,{label:null!=p?p:(0,l._t)("voip|video_call")},i.createElement(Y.$,{size:"sm",onClick:N,Icon:Ha.A,className:"mx_RoomHeader_join_button",disabled:!!p,color:"primary","aria-label":null!=p?p:(0,l._t)("action|join"),"data-testId":"join-call-button"},(0,l._t)("action|join"))),O=i.createElement(zt.m,{label:null!=p?p:(0,l._t)("voip|video_call")},i.createElement(Ha.A,null)),[F,L]=(0,i.useState)(!1),U=(0,i.useCallback)(e=>{p||L(e)},[p]),B=i.createElement(i.Fragment,null,y.length>1?i.createElement(bl.W,{open:F,onOpenChange:U,title:(0,l._t)("voip|video_call_using"),trigger:i.createElement(Sl.K,{disabled:!!p,"aria-label":null!=p?p:(0,l._t)("voip|video_call")},O),side:"left",align:"start"},y.map(e=>{const{label:t,children:n}=j_(e);return i.createElement(wl.D,{key:e,label:t,"aria-label":t,children:n,className:"mx_RoomHeader_videoCallOption",onClick:t=>{L(!1),g(t,e)},Icon:Ha.A,onSelect:()=>{}})})):i.createElement(Sl.K,{disabled:!!p,"aria-label":null!=p?p:(0,l._t)("voip|video_call"),onClick:N},O));let j=i.createElement(zt.m,{label:null!=u?u:(0,l._t)("voip|voice_call")},i.createElement(Sl.K,{disabled:!!u||_||f,"aria-label":null!=u?u:(0,l._t)("voip|voice_call"),onClick:e=>h(e,y[0])},i.createElement(N_.A,null)));const W=i.createElement(zt.m,{label:(0,l._t)("voip|close_lobby")},i.createElement(Sl.K,{onClick:v},i.createElement(M_.A,null)));let z=B;f?z=M:_&&(z=W),w||(z=void 0),b||(j=void 0);const K=(0,Ji.ME)("mainSplitContentType"),G=(0,Om.j)(e),J=G||K.mainSplitContentType===gn.DZ.MaximisedWidget||K.mainSplitContentType===gn.DZ.Call;return i.createElement(i.Fragment,null,i.createElement(Y_.L,{roomId:e.roomId},i.createElement(we.s,{as:"header",align:"center",gap:"var(--cpd-space-3x)",className:"mx_RoomHeader light-panel"},i.createElement(Od.Ay,{room:e,size:"8px"},i.createElement(En.A,{room:e,size:"40px",oobData:n,onClick:()=>{S.A.dispatch({action:"open_room_settings",initial_tab_id:Ut.e.General})},tabIndex:-1,"aria-label":(0,l._t)("room|header_avatar_open_settings_label")})),i.createElement("button",{"aria-label":(0,l._t)("right_panel|room_summary_card|title"),tabIndex:0,onClick:()=>Rl.A.instance.showOrHidePhase(kl.n.RoomSummary),className:"mx_RoomHeader_infoWrapper"},i.createElement(Mm,{flex:"1",className:"mx_RoomHeader_info"},i.createElement(P_.n,{as:"div",size:"lg",weight:"semibold",dir:"auto",role:"heading","aria-level":1,className:"mx_RoomHeader_heading"},i.createElement("span",{className:"mx_RoomHeader_truncated mx_lineClamp"},r),!k&&a===o.JoinRule.Public&&i.createElement(zt.m,{label:(0,l._t)("common|public_room"),placement:"right"},i.createElement(Pd.A,{width:"16px",height:"16px",className:"mx_RoomHeader_icon",color:"var(--cpd-color-icon-info-primary)","aria-label":(0,l._t)("common|public_room")})),k&&I===km.z.Verified&&i.createElement(zt.m,{label:(0,l._t)("common|verified"),placement:"right"},i.createElement(dv.A,{width:"16px",height:"16px",className:"mx_RoomHeader_icon mx_Verified","aria-label":(0,l._t)("common|verified")})),k&&I===km.z.Warning&&i.createElement(zt.m,{label:(0,l._t)("room|header_untrusted_label"),placement:"right"},i.createElement(ve.A,{width:"16px",height:"16px",className:"mx_RoomHeader_icon mx_Untrusted","aria-label":(0,l._t)("room|header_untrusted_label")}))))),null==t?void 0:t.map(e=>{const t=e.label();return i.createElement(zt.m,{label:t,key:e.id},i.createElement(Sl.K,{"aria-label":t,onClick:t=>{t.stopPropagation(),e.onClick()}},"function"==typeof e.icon?e.icon():e.icon))}),_&&i.createElement($_,{room:e}),!E||f||_?i.createElement(i.Fragment,null,!G&&z,!C&&!G&&j):D,J&&i.createElement(G_,{room:e}),i.createElement(zt.m,{label:(0,l._t)("common|threads")},i.createElement(Sl.K,{indicator:(0,Ui.W7)(x),onClick:e=>{e.stopPropagation(),Rl.A.instance.showOrHidePhase(kl.n.ThreadPanel),ri.A.trackInteraction("WebRoomHeaderButtonsThreadsButton",e)},"aria-label":(0,l._t)("common|threads")},i.createElement(K_,{Icon:Oi.A,phase:kl.n.ThreadPanel}))),T&&i.createElement(zt.m,{label:(0,l._t)("notifications|enable_prompt_toast_title")},i.createElement(Sl.K,{indicator:(0,Ui.W7)(R.level),onClick:e=>{e.stopPropagation(),Rl.A.instance.showOrHidePhase(kl.n.NotificationPanel)},"aria-label":(0,l._t)("notifications|enable_prompt_toast_title")},i.createElement(K_,{Icon:md.A,phase:kl.n.NotificationPanel}))),i.createElement(zt.m,{label:(0,l._t)("right_panel|room_summary_card|title")},i.createElement(Sl.K,{onClick:e=>{e.stopPropagation(),Rl.A.instance.showOrHidePhase(kl.n.RoomSummary)},"aria-label":(0,l._t)("right_panel|room_summary_card|title")},i.createElement(K_,{Icon:D_.A,phase:kl.n.RoomSummary}))),!k&&i.createElement(P_.n,{as:"div",size:"sm",weight:"medium"},i.createElement(Uv.A,{className:"mx_RoomHeader_members",members:d.slice(0,3),size:"20px",overflow:!1,viewUserOnClick:!1,tooltipLabel:(0,l._t)("room|header_face_pile_tooltip"),onClick:e=>{Rl.A.instance.showOrHidePhase(kl.n.MemberList),e.stopPropagation()},"aria-label":(0,l._t)("common|n_members",{count:m})},(0,Jt.B4)(m)))),P&&i.createElement(J_,{room:e})))}const Q_=({roomWidth:e})=>{const t=(0,i.useRef)(null),o=(0,i.useRef)(new Map);return(0,i.useEffect)(()=>{const e=()=>{var e;t.current&&(null===(e=t.current)||void 0===e?void 0:e.height)!==ba.A.instance.windowHeight&&(t.current.height=ba.A.instance.windowHeight)},i=S.A.register(e=>{const i="effects.",r=function(e){if(!e)return!1;const t=Date.now(),n=e.getTs();return t-n>Z_}(e.event);if(t.current&&e.action.startsWith(i)&&!r){(async e=>{if(!e)return null;let t=o.current.get(e)||null;if(null===t){var i;const r=null===(i=Uh.y.find(t=>t.command===e))||void 0===i?void 0:i.options;try{const{default:i}=await n("./src/effects lazy recursive ^\\.\\/.*$ referencedExports: default")(`./${e}`);t=new i(r),o.current.set(e,t)}catch(t){s.vF.warn(`Unable to load effect module at '../../../effects/${e}.`,t)}}return t})(e.action.slice(8)).then(e=>null==e?void 0:e.start(t.current))}}),r=t.current;r&&(r.height=ba.A.instance.windowHeight),ba.A.instance.on(ba.x.Resize,e);const a=o.current;return()=>{S.A.unregister(i),ba.A.instance.off(ba.x.Resize,e);for(const e in a){const t=a.get(e);t&&t.isRunning&&t.stop()}}},[]),i.createElement("canvas",{ref:t,width:e,style:{display:"block",zIndex:999999,pointerEvents:"none",position:"fixed",top:0,right:0},"aria-hidden":!0})},Z_=1728e5;const ef=({room:e,resizing:t,call:n,role:s,onClose:o})=>{const r=(0,i.useContext)(de.Ay);(0,Fi.YK)(n,F_.$E.Close,o),(0,i.useEffect)(()=>{n.clean()},[n]);const a=(0,i.useCallback)(async()=>{const e=[...V_.e.instance.connectedCalls].filter(e=>Do.M.instance.roomViewStore.getRoomId()!==e.roomId);await Promise.all(e.map(async e=>await e.disconnect()))},[]);return i.createElement("div",{className:"mx_CallView",role:s},i.createElement(Sp,{app:n.widget,room:e,userId:r.credentials.userId,creatorUserId:n.widget.creatorUserId,waitForIframeLoad:n.widget.waitForIframeLoad,showMenubar:!1,pointerEvents:t?"none":void 0,stickyPromise:a}))},tf=({room:e,resizing:t,role:n,onClose:s})=>{const o=(0,Zc.Gc)(e.roomId);return o&&i.createElement(ef,{room:e,resizing:t,call:o,role:n,onClose:s})};var nf=n("./src/toasts/DesktopNotificationsToast.ts"),sf=n("./src/email.ts");const of=(e,t)=>{const[n,s]=(0,i.useState)(()=>Array.isArray(t)?t:new Array(e).fill(t));return[n,(e,t)=>s(n=>{const i=[...n];return i[e]=t,i})]};var rf=n("./src/components/views/spaces/SpacePublicShare.tsx"),af=n("./node_modules/matrix-js-sdk/src/room-hierarchy.ts"),lf=n("./src/components/views/elements/InfoTooltip.tsx"),cf=n("./src/utils/RoomUpgrade.ts");function df(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 mf(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?df(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):df(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const uf=({room:e,suggested:t,selected:n,hasPermissions:s,onToggleClick:r,onViewRoomClick:a,onJoinRoomClick:c,numChildRooms:d,children:m})=>{var u,h;const p=(0,i.useContext)(de.Ay),g=(0,Fi.DY)(p,o.ClientEvent.Room,()=>{const t=null==p?void 0:p.getRoom(e.room_id);return(null==t?void 0:t.getMyMembership())===X.O.Join?t:void 0}),v=(0,Fi.DY)(g,o.RoomEvent.Name,e=>null==e?void 0:e.name),_=v||e.name||e.canonical_alias||(null===(u=e.aliases)||void 0===u?void 0:u[0])||(e.room_type===o.RoomType.Space?(0,l._t)("common|unnamed_space"):(0,l._t)("common|unnamed_room")),[f,E]=(0,Eo.X)(!0),[y,b,w,S]=(0,qn.A9)(),[A,C]=(0,i.useState)(!1),x=(0,i.useId)(),R=e=>{e.preventDefault(),e.stopPropagation(),a()},k=async t=>{C(!0),t.preventDefault(),t.stopPropagation();try{await c(),await(0,cf.R)(p,e.room_id)}finally{C(!1)}};let I,T,P;I=A?i.createElement(le.A,{disabled:!0,onClick:k,kind:"primary_outline",onFocus:y,tabIndex:b?0:-1,title:(0,l._t)("space|joining_space")},i.createElement(ce.A,{w:24,h:24})):g||e.join_rule===o.JoinRule.Knock?i.createElement(le.A,{onClick:R,kind:"primary_outline",onFocus:y,tabIndex:b?0:-1},(0,l._t)("action|view")):i.createElement(le.A,{onClick:k,kind:"primary",onFocus:y,tabIndex:b?0:-1},(0,l._t)("action|join")),r&&(T=s?i.createElement(no.A,{role:"presentation","aria-labelledby":x,checked:!!n,tabIndex:-1}):i.createElement(Mh.A,{tooltip:(0,l._t)("space|user_lacks_permission"),onClick:e=>{e.stopPropagation()}},i.createElement(no.A,{role:"presentation","aria-labelledby":x,disabled:!0,tabIndex:-1}))),P=g?i.createElement(En.A,{room:g,size:"20px"}):i.createElement(vl.A,{name:_,idName:e.room_id,url:e.avatar_url?(0,gi.mediaFromMxc)(e.avatar_url).getSquareThumbnailHttp(20):null,size:"20px"});let N,M,D,O,F=(0,l._t)("common|n_members",{count:null!==(h=e.num_joined_members)&&void 0!==h?h:0});if(void 0!==d&&(F+=" · "+(0,l._t)("common|n_rooms",{count:d})),g){const e=go(g);N=(0,vi.sH)(null==e?void 0:e.text,null==e?void 0:e.html)}else N=e.topic;N&&(M=i.createElement(vi.XZ,{options:{attributes:{onClick(e){e.stopPropagation()}}}}," · ",N)),g&&(D=i.createElement("div",{className:"mx_SpaceHierarchy_roomTile_joined"},(0,l._t)("common|joined"))),!t||g&&!s||(O=i.createElement(lf.A,{tooltip:(0,l._t)("space|suggested_tooltip")},(0,l._t)("space|suggested")));const L=i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_SpaceHierarchy_roomTile_item"},i.createElement("div",{className:"mx_SpaceHierarchy_roomTile_avatar"},P),i.createElement("div",{className:"mx_SpaceHierarchy_roomTile_name"},i.createElement("span",{id:x},_),D,O),i.createElement("div",{className:"mx_SpaceHierarchy_roomTile_info"},F,M)),i.createElement("div",{className:"mx_SpaceHierarchy_actions"},I,T));let U,V,B;if(m){if(U=i.createElement("div",{className:Lt()("mx_SpaceHierarchy_subspace_toggle",{mx_SpaceHierarchy_subspace_toggle_shown:f}),onClick:e=>{e.stopPropagation(),E()}}),f){const e=e=>{var t;if((0,Us.zM)().getAccessibilityAction(e)===si.bY.ArrowLeft)e.preventDefault(),e.stopPropagation(),null===(t=S.current)||void 0===t||t.focus()};V=i.createElement("div",{className:"mx_SpaceHierarchy_subspace_children",onKeyDown:e,role:"group"},m)}B=e=>{let t=!1;switch((0,Us.zM)().getAccessibilityAction(e)){case si.bY.ArrowLeft:f&&(t=!0,E());break;case si.bY.ArrowRight:if(t=!0,f){var n,i;const e=null===(n=S.current)||void 0===n?void 0:n.nextElementSibling;null==e||null===(i=e.querySelector(".mx_SpaceHierarchy_roomTile"))||void 0===i||i.focus()}else E()}t&&(e.preventDefault(),e.stopPropagation())}}const j=s&&r;return i.createElement("li",{className:"mx_SpaceHierarchy_roomTileWrapper",role:"treeitem","aria-selected":n,"aria-labelledby":x,"aria-expanded":m?f:void 0},i.createElement(le.A,{className:Lt()("mx_SpaceHierarchy_roomTile",{mx_SpaceHierarchy_subspace:e.room_type===o.RoomType.Space,mx_SpaceHierarchy_joining:A}),onClick:j?r:R,onKeyDown:B,ref:w,onFocus:y,tabIndex:b?0:-1},L,U),V)},hf=(e,t,n,i)=>{var s,o;const r=t.roomMap.get(n);if(e.isGuest()&&!(null!=r&&r.world_readable||null!=r&&r.guest_can_join))return void S.A.dispatch({action:"require_registration"});const a=(0,Ur.iW)(null!==(s=null==r?void 0:r.canonical_alias)&&void 0!==s?s:"",null!==(o=null==r?void 0:r.aliases)&&void 0!==o?o:[])||void 0;S.A.dispatch({action:H.r.ViewRoom,should_peek:!0,room_alias:a,room_id:n,via_servers:Array.from(t.viaMap.get(n)||[]),oob_data:{avatarUrl:null==r?void 0:r.avatar_url,name:(null==r?void 0:r.name)||a||(0,l._t)("common|unnamed_room"),roomType:i},metricsTrigger:"RoomDirectory"})},pf=async(e,t,n)=>{if(e.isGuest())S.A.dispatch({action:"require_registration"});else{try{await e.joinRoom(n,{viaServers:Array.from(t.viaMap.get(n)||[])})}catch(e){throw e instanceof o.MatrixError?Do.M.instance.roomViewStore.showJoinRoomError(e,n):(s.vF.warn("Got a non-MatrixError while joining room",e),Do.M.instance.roomViewStore.showJoinRoomError(new o.MatrixError({error:(0,l._t)("error|unknown")}),n)),e}S.A.dispatch({action:H.r.JoinRoomReady,roomId:n,metricsTrigger:"SpaceHierarchy"})}},gf=({root:e,roomSet:t,hierarchy:n,parents:s,selectedMap:r,onViewRoomClick:a,onJoinRoomClick:l,onToggleClick:c})=>{const d=(0,i.useContext)(de.Ay),m=d.getRoom(e.room_id),u=null==m?void 0:m.currentState.maySendStateEvent(o.EventType.SpaceChild,d.getSafeUserId()),h=(0,Kt.sortBy)(e.children_state,e=>(0,Ms.tK)(e.content.order,e.origin_server_ts,e.state_key)),[p,g]=h.reduce((e,i)=>{const s=n.roomMap.get(i.state_key);return s&&t.has(s)&&e[s.room_type===o.RoomType.Space?0:1].push(((e,t,n)=>{const i=e.getRoomUpgradeHistory(t.room_id,!0,D.A.getValue("feature_dynamic_room_predecessors"));let s=null;for(let e=i.length-1;e>=0;--e)if(n.roomMap.get(i[e].roomId)){s=i[e];break}var r,a,l,c,d;return s?mf(mf({},t),{},{room_id:s.roomId,room_type:s.getType(),name:s.name,topic:null===(r=s.currentState.getStateEvents(o.EventType.RoomTopic,""))||void 0===r?void 0:r.getContent().topic,avatar_url:null!==(a=s.getMxcAvatarUrl())&&void 0!==a?a:void 0,canonical_alias:null!==(l=s.getCanonicalAlias())&&void 0!==l?l:void 0,aliases:s.getAltAliases(),world_readable:(null===(c=s.currentState.getStateEvents(o.EventType.RoomHistoryVisibility,""))||void 0===c?void 0:c.getContent().history_visibility)===o.HistoryVisibility.WorldReadable,guest_can_join:(null===(d=s.currentState.getStateEvents(o.EventType.RoomGuestAccess,""))||void 0===d?void 0:d.getContent().guest_access)===o.GuestAccess.CanJoin,num_joined_members:s.getJoinedMemberCount()}):t})(d,s,n)),e},[[],[]]),v=new Set(s).add(e.room_id);return i.createElement(i.Fragment,null,(0,Kt.uniqBy)(g,"room_id").map(t=>{var s;return i.createElement(uf,{key:t.room_id,room:t,suggested:n.isSuggested(e.room_id,t.room_id),selected:null==r||null===(s=r.get(e.room_id))||void 0===s?void 0:s.has(t.room_id),onViewRoomClick:()=>a(t.room_id,t.room_type),onJoinRoomClick:()=>l(t.room_id,v),hasPermissions:u,onToggleClick:c?()=>c(e.room_id,t.room_id):void 0})}),p.filter(e=>!v.has(e.room_id)).map(s=>{var d;return i.createElement(uf,{key:s.room_id,room:s,numChildRooms:s.children_state.filter(e=>{const i=n.roomMap.get(e.state_key);return i&&t.has(i)&&!i.room_type}).length,suggested:n.isSuggested(e.room_id,s.room_id),selected:null==r||null===(d=r.get(e.room_id))||void 0===d?void 0:d.has(s.room_id),onViewRoomClick:()=>a(s.room_id,o.RoomType.Space),onJoinRoomClick:()=>l(s.room_id,v),hasPermissions:u,onToggleClick:c?()=>c(e.room_id,s.room_id):void 0},i.createElement(gf,{root:s,roomSet:t,hierarchy:n,parents:v,selectedMap:r,onViewRoomClick:a,onJoinRoomClick:l,onToggleClick:c}))}))},vf=({hierarchy:e,selected:t,setSelected:n,setError:s})=>{const r=(0,i.useContext)(de.Ay),[a,c]=(0,i.useState)(!1),[d,m]=(0,i.useState)(!1),u=Array.from(t.keys()).flatMap(e=>[...t.get(e).values()].map(t=>[e,t])),h=u.every(([t,n])=>e.isSuggested(t,n)),p=!u.length||a||d;let g=(0,l._t)("common|saving");d||(g=h?(0,l._t)("space|unmark_suggested"):(0,l._t)("space|mark_suggested"));const v=u.length?void 0:(0,l._t)("space|select_room_below");return i.createElement(i.Fragment,null,i.createElement(le.A,{onClick:async()=>{c(!0);try{const t=r.getSafeUserId();for(const[n,i]of u){await r.sendStateEvent(n,o.EventType.SpaceChild,{},i);const s=r.getRoom(i),a=null==s?void 0:s.currentState.getStateEvents(o.EventType.SpaceParent,n);null!=s&&s.currentState.maySendStateEvent(o.EventType.SpaceParent,t)&&Array.isArray(null==a?void 0:a.getContent().via)&&await r.sendStateEvent(i,o.EventType.SpaceParent,{},n),e.removeRelation(n,i)}}catch{s((0,l._t)("space|failed_remove_rooms"))}c(!1),n(new Map)},kind:"danger_outline",disabled:p,"aria-label":a?(0,l._t)("redact|ongoing"):(0,l._t)("action|remove"),title:v,placement:"top"},a?(0,l._t)("redact|ongoing"):(0,l._t)("action|remove")),i.createElement(le.A,{onClick:async()=>{m(!0);try{for(const[n,i]of u){var t;const s=!h,a=null===(t=e.getRelation(n,i))||void 0===t?void 0:t.content;if(!a||a.suggested===s)continue;const l=mf(mf({},a),{},{suggested:!h});await r.sendStateEvent(n,o.EventType.SpaceChild,l,i),a.suggested=l.suggested}}catch{s("Failed to update some suggestions. Try again later")}m(!1),n(new Map)},kind:"primary_outline",disabled:p,"aria-label":g,title:v,placement:"top"},g))},_f=({space:e,initialText:t="",showRoom:n,additionalButtons:s})=>{const r=(0,i.useContext)(de.Ay),[a,c]=(0,i.useState)(t),[d,m]=(0,i.useState)(new Map),{loading:u,rooms:h,hierarchy:p,loadMore:g,error:v}=(e=>{const[t,n]=(0,i.useState)([]),[s,o]=(0,i.useState)(),[r,a]=(0,i.useState)(),l=(0,i.useCallback)(()=>{a(void 0);const t=new af.B(e,20);t.load().then(()=>{var i;e===t.root&&n(null!==(i=t.rooms)&&void 0!==i?i:[])},a),o(t)},[e]);(0,i.useEffect)(l,[l]),(0,mo.F)(S.A,e=>{e.action===H.r.UpdateSpaceHierarchy&&(n([]),l())});const c=(0,i.useCallback)(async e=>{var t;!s||s.loading||!s.canLoadMore||s.noSupport||r||(await s.load(e).catch(a),n(null!==(t=s.rooms)&&void 0!==t?t:[]))},[r,s]);return(null==s?void 0:s.root)!==e?{loading:!0,loadMore:c}:{loading:s.loading,rooms:t,hierarchy:s,loadMore:c,error:r}})(e),_=(0,i.useMemo)(()=>{if(null==h||!h.length||!p)return new Set;const e=a.toLowerCase().trim();if(!e)return new Set(h);const t=h.filter(t=>{var n,i;return(null===(n=t.name)||void 0===n?void 0:n.toLowerCase().includes(e))||(null===(i=t.topic)||void 0===i?void 0:i.toLowerCase().includes(e))}),n=new Set,i=[...t.map(e=>e.room_id)];for(;i.length;){var s;const e=i.pop();n.add(e),null===(s=p.backRefs.get(e))||void 0===s||s.forEach(e=>{n.has(e)||i.push(e)})}return new Set(h.filter(e=>n.has(e.room_id)))},[h,p,a]),[f,E]=(0,i.useState)("");let y=f;!f&&v&&(y=(0,l._t)("space|failed_load_rooms"));const b=(e=>{const t=t=>{t[0].isIntersecting&&e()},n=(0,i.useRef)(void 0);return e=>{n.current?n.current.disconnect():e&&(n.current=new IntersectionObserver(t,{root:e.parentElement,rootMargin:"0px 0px 600px 0px"})),n.current&&e&&n.current.observe(e)}})(g);if(!u&&p.noSupport)return i.createElement("p",null,(0,l._t)("space|incompatible_server_hierarchy"));const w=(e,t)=>{if(E(""),!d.has(e))return void m(new Map(d.set(e,new Set([t]))));const n=d.get(e);n.has(t)?(n.delete(t),m(new Map(d.set(e,new Set(n))))):m(new Map(d.set(e,new Set([...n,t]))))};return i.createElement(qn.Se,{onKeyDown:(e,t)=>{var n;(0,Us.zM)().getAccessibilityAction(e)===si.bY.ArrowDown&&e.currentTarget.classList.contains("mx_SpaceHierarchy_search")&&(null===(n=t.nodes[0])||void 0===n||n.focus())},handleHomeEnd:!0,handleUpDown:!0},({onKeyDownHandler:g})=>{let v;if(p&&(!u||null!=h&&h.length)){const t=(null==e?void 0:e.getMyMembership())===X.O.Join&&e.currentState.maySendStateEvent(o.EventType.SpaceChild,r.getSafeUserId()),c=p.roomMap.get(e.roomId);let u,h;_.size&&c?u=i.createElement(i.Fragment,null,i.createElement(gf,{root:c,roomSet:_,hierarchy:p,parents:new Set,selectedMap:d,onToggleClick:t?w:void 0,onViewRoomClick:(e,t)=>n(r,p,e,t),onJoinRoomClick:async(e,t)=>{for(const e of t){var n;(null===(n=r.getRoom(e))||void 0===n?void 0:n.getMyMembership())!==X.O.Join&&await pf(r,p,e)}await pf(r,p,e)}})):p.canLoadMore||(u=i.createElement("div",{className:"mx_SpaceHierarchy_noResults"},i.createElement("h3",null,(0,l._t)("common|no_results_found")),i.createElement("div",null,(0,l._t)("space|no_search_result_hint")))),p.canLoadMore&&(h=i.createElement("div",{ref:b},i.createElement(ce.A,null))),v=i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_SpaceHierarchy_listHeader"},i.createElement("h4",{className:"mx_SpaceHierarchy_listHeader_header"},a.trim()?(0,l._t)("space|title_when_query_available"):(0,l._t)("space|title_when_query_unavailable")),i.createElement("div",{className:"mx_SpaceHierarchy_listHeader_buttons"},s,t&&i.createElement(vf,{hierarchy:p,selected:d,setSelected:m,setError:E}))),y&&i.createElement("div",{className:"mx_SpaceHierarchy_error"},y),i.createElement("ul",{className:"mx_SpaceHierarchy_list",onKeyDown:g,role:"tree","aria-label":(0,l._t)("common|space")},u),h)}else v=i.createElement(ce.A,null);return i.createElement(i.Fragment,null,i.createElement(Rs.A,{className:"mx_SpaceHierarchy_search mx_textinput_icon mx_textinput_search",placeholder:(0,l._t)("space|search_placeholder"),onSearch:c,autoFocus:!0,initialValue:t,onKeyDown:g}),v)})};var ff=function(e){return e[e.Landing=0]="Landing",e[e.PublicCreateRooms=1]="PublicCreateRooms",e[e.PublicShare=2]="PublicShare",e[e.PrivateScope=3]="PrivateScope",e[e.PrivateInvite=4]="PrivateInvite",e[e.PrivateCreateRooms=5]="PrivateCreateRooms",e[e.PrivateExistingRooms=6]="PrivateExistingRooms",e}(ff||{});const Ef=({space:e})=>{const[t,n,s,r]=(0,bn.EF)(),a=(0,wa.g)(gt.C.CreateRooms),c=(0,wa.g)(gt.C.CreateSpaces),d=(0,Vt.ny)("feature_video_rooms"),m=(0,Vt.ny)("feature_element_call_video_rooms");let u=null;if(t){const t=n.current.getBoundingClientRect();u=i.createElement(Aa.Ay,{left:t.left+window.scrollX+0,top:t.bottom+window.scrollY+8,chevronFace:bn.t4.None,onFinished:r,className:"mx_RoomTile_contextMenu",compact:!0},i.createElement(Aa.tx,{first:!0},a&&i.createElement(i.Fragment,null,i.createElement(Aa.R$,{label:(0,l._t)("action|new_room"),iconClassName:"mx_LegacyRoomList_iconNewRoom",onClick:async t=>{t.preventDefault(),t.stopPropagation(),r(),ri.A.trackInteraction("WebSpaceHomeCreateRoomButton",t),await(0,Mo.PT)(e)&&S.A.fire(H.r.UpdateSpaceHierarchy)}}),d&&i.createElement(Aa.R$,{label:(0,l._t)("action|new_video_room"),iconClassName:"mx_LegacyRoomList_iconNewVideoRoom",onClick:async t=>{t.preventDefault(),t.stopPropagation(),r(),await(0,Mo.PT)(e,m?o.RoomType.UnstableCall:o.RoomType.ElementVideo)&&S.A.fire(H.r.UpdateSpaceHierarchy)}},i.createElement(Sa.s,null))),i.createElement(Aa.R$,{label:(0,l._t)("action|add_existing_room"),iconClassName:"mx_LegacyRoomList_iconAddExistingRoom",onClick:t=>{t.preventDefault(),t.stopPropagation(),r(),(0,Mo.yV)(e)}}),c&&i.createElement(Aa.R$,{label:(0,l._t)("room_list|add_space_label"),iconClassName:"mx_LegacyRoomList_iconPlus",onClick:t=>{t.preventDefault(),t.stopPropagation(),r(),(0,Mo.Sl)(e)}},i.createElement(Sa.s,null))))}return i.createElement(i.Fragment,null,i.createElement(bn.VJ,{kind:"primary",ref:n,onClick:s,isExpanded:t,label:(0,l._t)("action|add")},(0,l._t)("action|add")),u)},yf=({space:e})=>{const t=(0,i.useContext)(de.Ay),n=sv(e),s=t.getSafeUserId(),r=(0,i.useCallback)(()=>{var t;return Rl.A.instance.isOpenForRoom(e.roomId)&&(null===(t=Rl.A.instance.currentCardForRoom(e.roomId))||void 0===t?void 0:t.phase)===kl.n.MemberList},[e.roomId]),a=(0,Fi.dF)(Rl.A.instance,Br.H,r);let c;(0,Mo.MI)(e)&&(0,wa.g)(gt.C.InviteUsers)&&(c=i.createElement(le.A,{kind:"primary",className:"mx_SpaceRoomView_landing_inviteButton",onClick:()=>{(0,Mo.Lo)(e)}},(0,l._t)("action|invite")));let d,m;n===X.O.Join&&e.currentState.maySendStateEvent(o.EventType.SpaceChild,s)&&(d=i.createElement(Ef,{space:e})),(0,Mo.Kv)(e)&&(m=i.createElement(le.A,{className:"mx_SpaceRoomView_landing_settingsButton",onClick:()=>{(0,Mo.hL)(e)},title:(0,l._t)("common|settings"),placement:"bottom"}));return i.createElement("div",{className:"mx_SpaceRoomView_landing"},i.createElement("div",{className:"mx_SpaceRoomView_landing_header"},i.createElement(En.A,{room:e,size:"80px",viewAvatarOnClick:!0,type:"square"})),i.createElement("div",{className:"mx_SpaceRoomView_landing_name"},i.createElement(io,{room:e},e=>{const t={name:()=>i.createElement("h1",null,e)};return(0,l._t)("space|landing_welcome",{},t)})),i.createElement("div",{className:"mx_SpaceRoomView_landing_infoBar"},i.createElement(Hv,{room:e}),i.createElement("div",{className:"mx_SpaceRoomView_landing_infoBar_interactive"},i.createElement(Wv,{room:e,onlyKnownUsers:!1,numShown:7,onClick:a?void 0:()=>{Rl.A.instance.setCard({phase:kl.n.MemberList})}}),c,m)),i.createElement(mh,{room:e,className:"mx_SpaceRoomView_landing_topic"}),i.createElement(_f,{space:e,showRoom:hf,additionalButtons:d}))},bf=({space:e,title:t,description:n,onFinished:r})=>{const[a,c]=(0,i.useState)(!1),[d,m]=(0,i.useState)(""),u=[(0,l._t)("common|general"),(0,l._t)("common|random"),(0,l._t)("common|support")],[h,p]=of(3,[(0,l._t)("common|general"),(0,l._t)("common|random"),""]),g=new Array(3).fill(0).map((e,t)=>{const n="roomName"+t;return i.createElement(qs.A,{key:n,name:n,type:"text",label:(0,l._t)("common|room_name"),placeholder:u[t],value:h[t],onChange:e=>p(t,e.target.value),autoFocus:2===t,disabled:a,autoComplete:"off"})}),v=async t=>{if(t.preventDefault(),!a){m(""),c(!0);try{var n;const t=e.getJoinRule()===o.JoinRule.Public,i=h.map(e=>e.trim()).filter(Boolean),s=await Promise.all(i.map(n=>(0,Gs.Ay)(e.client,{createOpts:{preset:t?o.Preset.PublicChat:o.Preset.PrivateChat,name:n},spinner:!1,encryption:!1,andView:!1,inlineErrors:!0,parentSpace:e,joinRule:t?void 0:o.JoinRule.Restricted,suggested:!0})));r(null!==(n=s[0])&&void 0!==n?n:void 0)}catch(e){s.vF.error("Failed to create initial space rooms",e),m((0,l._t)("create_space|failed_create_initial_rooms"))}c(!1)}};let _=e=>{e.preventDefault(),r()},f=(0,l._t)("create_space|skip_action");return h.some(e=>e.trim())&&(_=v,f=a?(0,l._t)("create_space|creating_rooms"):(0,l._t)("action|continue")),i.createElement("div",null,i.createElement("h1",null,t),i.createElement("div",{className:"mx_SpaceRoomView_description"},n),d&&i.createElement("div",{className:"mx_SpaceRoomView_errorText"},d),i.createElement("form",{onSubmit:_,id:"mx_SpaceSetupFirstRooms"},g),i.createElement("div",{className:"mx_SpaceRoomView_buttons"},i.createElement(le.A,{kind:"primary",disabled:a,onClick:_,element:"input",type:"submit",form:"mx_SpaceSetupFirstRooms",value:f})))},wf=({space:e,onFinished:t})=>i.createElement("div",null,i.createElement("h1",null,(0,l._t)("create_space|add_existing_rooms_heading")),i.createElement("div",{className:"mx_SpaceRoomView_description"},(0,l._t)("create_space|add_existing_rooms_description")),i.createElement(No.sS,{space:e,emptySelectionButton:i.createElement(le.A,{kind:"primary",onClick:t},(0,l._t)("create_space|skip_action")),filterPlaceholder:(0,l._t)("space|room_filter_placeholder"),onFinished:t,roomsRenderer:No.FM,dmsRenderer:No.nZ})),Sf=({justCreatedOpts:e,space:t,onFinished:n,firstRoomId:s})=>{var o;return i.createElement("div",{className:"mx_SpaceRoomView_publicShare"},i.createElement("h1",null,(0,l._t)("create_space|share_heading",{name:(null==e||null===(o=e.createOpts)||void 0===o?void 0:o.name)||t.name})),i.createElement("div",{className:"mx_SpaceRoomView_description"},(0,l._t)("create_space|share_description")),i.createElement(rf.A,{space:t}),i.createElement("div",{className:"mx_SpaceRoomView_buttons"},i.createElement(le.A,{kind:"primary",onClick:n},s?(0,l._t)("create_space|done_action_first_room"):(0,l._t)("create_space|done_action"))))},Af=({space:e,justCreatedOpts:t,onFinished:n})=>{var s;return i.createElement("div",{className:"mx_SpaceRoomView_privateScope"},i.createElement("h1",null,(0,l._t)("create_space|private_personal_heading")),i.createElement("div",{className:"mx_SpaceRoomView_description"},(0,l._t)("create_space|private_personal_description",{name:(null==t||null===(s=t.createOpts)||void 0===s?void 0:s.name)||e.name})),i.createElement(le.A,{className:"mx_SpaceRoomView_privateScope_justMeButton",onClick:()=>{n(!1)}},(0,l._t)("create_space|personal_space"),i.createElement("div",null,(0,l._t)("create_space|personal_space_description"))),i.createElement(le.A,{className:"mx_SpaceRoomView_privateScope_meAndMyTeammatesButton",onClick:()=>{n(!0)}},(0,l._t)("create_space|private_space"),i.createElement("div",null,(0,l._t)("create_space|private_space_description"))))},Cf=(0,Hm.A)({rules:[{key:"email",test:({value:e})=>!e||sf.X(e),invalid:()=>(0,l._t)("auth|email_field_label_invalid")}]}),xf=({space:e,onFinished:t})=>{const[n,o]=(0,i.useState)(!1),[r,a]=(0,i.useState)(""),c=[(0,i.useRef)(null),(0,i.useRef)(null),(0,i.useRef)(null)],[d,m]=of(3,""),u=new Array(3).fill(0).map((e,t)=>{const s="emailAddress"+t;return i.createElement(qs.A,{key:s,name:s,type:"text",label:(0,l._t)("common|email_address"),placeholder:(0,l._t)("auth|email_field_label"),value:d[t],onChange:e=>m(t,e.target.value),ref:c[t],onValidate:Cf,autoFocus:0===t,disabled:n})}),h=async i=>{if(i.preventDefault(),n)return;a("");for(const e of c){var r;if(!1===await(null===(r=e.current)||void 0===r?void 0:r.validate({allowEmpty:!0})))return e.current.focus(),void e.current.validate({allowEmpty:!0,focused:!0})}o(!0);const m=d.map(e=>e.trim()).filter(Boolean);try{const n=await(0,Lr.wq)(e.client,e.roomId,m),i=Object.keys(n.states).filter(e=>"error"===n.states[e]);i.length>0?(s.vF.log("Failed to invite users to space: ",n),a((0,l._t)("create_space|failed_invite_users",{csvUsers:i.join(", ")}))):t()}catch(e){s.vF.error("Failed to invite users to space: ",e),a((0,l._t)("invite|error_invite"))}o(!1)};let p=e=>{e.preventDefault(),t()},g=(0,l._t)("create_space|skip_action");return d.some(e=>e.trim())&&(p=h,g=n?(0,l._t)("create_space|inviting_users"):(0,l._t)("action|continue")),i.createElement("div",{className:"mx_SpaceRoomView_inviteTeammates"},i.createElement("h1",null,(0,l._t)("create_space|invite_teammates_heading")),i.createElement("div",{className:"mx_SpaceRoomView_description"},(0,l._t)("create_space|invite_teammates_description")),r&&i.createElement("div",{className:"mx_SpaceRoomView_errorText"},r),i.createElement("form",{onSubmit:p,id:"mx_SpaceSetupPrivateInvite"},u),i.createElement("div",{className:"mx_SpaceRoomView_inviteTeammates_buttons"},i.createElement(le.A,{className:"mx_SpaceRoomView_inviteTeammates_inviteDialogButton",onClick:()=>(0,Lr._7)(e.roomId)},(0,l._t)("create_space|invite_teammates_by_username"))),i.createElement("div",{className:"mx_SpaceRoomView_buttons"},i.createElement(le.A,{kind:"primary",disabled:n,onClick:p,element:"input",type:"submit",form:"mx_SpaceSetupPrivateInvite",value:g})))};class Rf extends i.PureComponent{constructor(e,t){var n;super(e,t),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"onMyMembership",(e,t)=>{e.roomId===this.props.space.roomId&&this.setState({myMembership:t})}),(0,w.A)(this,"onRightPanelStoreUpdate",()=>{this.setState({showRightPanel:Rl.A.instance.isOpenForRoom(this.props.space.roomId)})}),(0,w.A)(this,"onAction",e=>{e.action!==H.r.ViewRoom||e.room_id!==this.props.space.roomId||this.setState({phase:ff.Landing})}),(0,w.A)(this,"goToFirstRoom",async()=>{this.state.firstRoomId?S.A.dispatch({action:H.r.ViewRoom,room_id:this.state.firstRoomId,metricsTrigger:void 0}):this.setState({phase:ff.Landing})});let i=ff.Landing;const s=null===(n=this.props.space.currentState.getStateEvents(o.EventType.RoomCreate,""))||void 0===n?void 0:n.getSender();var r;this.props.justCreatedOpts&&t.getSafeUserId()===s&&(i=(null===(r=this.props.justCreatedOpts.createOpts)||void 0===r?void 0:r.preset)===o.Preset.PublicChat?ff.PublicCreateRooms:ff.PrivateScope);this.state={phase:i,showRightPanel:Rl.A.instance.isOpenForRoom(this.props.space.roomId),myMembership:this.props.space.getMyMembership()}}componentDidMount(){this.dispatcherRef=S.A.register(this.onAction),Rl.A.instance.on(Br.H,this.onRightPanelStoreUpdate),this.context.on(o.RoomEvent.MyMembership,this.onMyMembership)}componentWillUnmount(){S.A.unregister(this.dispatcherRef),Rl.A.instance.off(Br.H,this.onRightPanelStoreUpdate),this.context.off(o.RoomEvent.MyMembership,this.onMyMembership)}renderBody(){var e;switch(this.state.phase){case ff.Landing:return this.state.myMembership===X.O.Join?i.createElement(yf,{space:this.props.space}):i.createElement(zv,{room:this.props.space,onJoinButtonClicked:this.props.onJoinButtonClicked,onRejectButtonClicked:this.props.onRejectButtonClicked});case ff.PublicCreateRooms:return i.createElement(bf,{space:this.props.space,title:(0,l._t)("create_space|setup_rooms_community_heading",{spaceName:(null===(e=this.props.justCreatedOpts)||void 0===e||null===(e=e.createOpts)||void 0===e?void 0:e.name)||this.props.space.name}),description:i.createElement(i.Fragment,null,(0,l._t)("create_space|setup_rooms_community_description"),i.createElement("br",null),(0,l._t)("create_space|setup_rooms_description")),onFinished:e=>this.setState({phase:ff.PublicShare,firstRoomId:e})});case ff.PublicShare:return i.createElement(Sf,{justCreatedOpts:this.props.justCreatedOpts,space:this.props.space,onFinished:this.goToFirstRoom,firstRoomId:this.state.firstRoomId});case ff.PrivateScope:return i.createElement(Af,{space:this.props.space,justCreatedOpts:this.props.justCreatedOpts,onFinished:e=>{this.setState({phase:e?ff.PrivateCreateRooms:ff.PrivateExistingRooms})}});case ff.PrivateInvite:return i.createElement(xf,{space:this.props.space,onFinished:()=>this.setState({phase:ff.Landing})});case ff.PrivateCreateRooms:return i.createElement(bf,{space:this.props.space,title:(0,l._t)("create_space|setup_rooms_private_heading"),description:i.createElement(i.Fragment,null,(0,l._t)("create_space|setup_rooms_private_description"),i.createElement("br",null),(0,l._t)("create_space|setup_rooms_description")),onFinished:e=>this.setState({phase:ff.PrivateInvite,firstRoomId:e})});case ff.PrivateExistingRooms:return i.createElement(wf,{space:this.props.space,onFinished:()=>this.setState({phase:ff.Landing})})}}render(){const e=this.state.showRightPanel&&this.state.phase===ff.Landing?i.createElement(Av,{room:this.props.space,resizeNotifier:this.props.resizeNotifier,permalinkCreator:this.props.permalinkCreator}):void 0;return i.createElement("main",{className:"mx_SpaceRoomView"},i.createElement(du.A,null,i.createElement(gm,{panel:e,analyticsRoomType:"space"},this.renderBody())))}}(0,w.A)(Rf,"contextType",de.Ay);var kf=n("./src/components/structures/RoomStatusBar.tsx");class If extends i.PureComponent{render(){return i.createElement("div",{className:"mx_TopUnreadMessagesBar"},i.createElement(le.A,{className:"mx_TopUnreadMessagesBar_scrollUp",title:(0,l._t)("room|jump_read_marker"),onClick:this.props.onScrollUpClick}),i.createElement(le.A,{className:"mx_TopUnreadMessagesBar_markAsRead",title:(0,l._t)("notifications|mark_all_read"),onClick:this.props.onCloseClick}))}}var Tf=n("./src/utils/direct-messages.ts"),Pf=n("./src/components/views/messages/EncryptionEvent.tsx"),Nf=n("./src/components/structures/RoomStatusBarUnsentMessages.tsx");const Mf=({text:e})=>i.createElement("div",{className:"mx_LargeLoader"},i.createElement(ce.A,{w:45,h:45}),i.createElement("div",{className:"mx_LargeLoader_text"},e));class Df extends i.Component{constructor(e){super(e),(0,w.A)(this,"callEventGroupers",new Map),this.buildLegacyCallEventGroupers(this.props.timeline)}buildLegacyCallEventGroupers(e){this.callEventGroupers=(0,Ip.fN)(this.callEventGroupers,e)}render(){const e=this.props.timeline,t=e[this.props.ourEventsIndexes[0]],n=t.getId(),s=t.getTs(),o=[i.createElement(lu.A,{key:s+"-search",roomId:t.getRoomId(),ts:s})],r=D.A.getValue("layout"),a=D.A.getValue("showTwelveHourTimestamps"),l=D.A.getValue("alwaysShowTimestamps"),c=v.J.safeGet();for(let t=0;t<e.length;t++){var d;const s=e[t];let h;const p=!this.props.ourEventsIndexes.includes(t);if(p||(h=this.props.searchHighlights),(0,sn.bN)(s,c,null===(d=this.context)||void 0===d?void 0:d.showHiddenEvents)){var m;const d=e[t-1],g=d&&!(0,tt.fq)(d.getDate()||void 0,s.getDate()||void 0)&&Du(d,s,c,null===(m=this.context)||void 0===m?void 0:m.showHiddenEvents,gn.Ae.Search);let v=!0;const _=e[t+1];if(_){var u;v=(0,tt.fq)(s.getDate()||void 0,_.getDate()||void 0)||s.getSender()!==_.getSender()||!Du(s,_,c,null===(u=this.context)||void 0===u?void 0:u.showHiddenEvents,gn.Ae.Search)}o.push(i.createElement(bs,{key:`${n}+${t}`,mxEvent:s,layout:r,contextual:p,highlights:h,permalinkCreator:this.props.permalinkCreator,highlightLink:this.props.resultLink,isTwelveHour:a,alwaysShowTimestamps:l,lastInSection:v,continuation:g,callEventGrouper:this.callEventGroupers.get(s.getContent().call_id)}))}}return i.createElement("li",{"data-scroll-tokens":n},i.createElement("ol",null,o))}}(0,w.A)(Df,"contextType",gn.Ay);var Of=n("./src/Typeguards.ts");async function Ff(e,t,n,i){const s={limit:10};void 0!==n&&(s.rooms=[n]);const r={search_categories:{room_events:{search_term:t,filter:s,order_by:o.SearchOrderBy.Recent,event_context:{before_limit:1,after_limit:1,include_profile:!0}}}};return{response:await e.search({body:r},i),query:r}}async function Lf(e,t,n,i){const s=await Ff(e,t,n,i),o={abortSignal:i,_query:s.query,results:[],highlights:[]};return e.processRoomEventsSearch(o,s.response)}function Uf(e,t){const n=e.result,i=t.result;return n.origin_server_ts>i.origin_server_ts?-1:n.origin_server_ts<i.origin_server_ts?1:0}async function Vf(e,t,n=!0){const i=f.A.get(),s={search_term:e,before_limit:1,after_limit:1,limit:10,order_by_recency:!0,room_id:void 0};void 0!==t&&(s.room_id=t);const o=await i.search(s);if(!o)throw new Error("Local search failed");s.next_batch=o.next_batch;return{response:o,query:s}}function Bf(e,t){try{const n=e[e.length-1].result,i=t[t.length-1].result;return n.origin_server_ts<=i.origin_server_ts?-1:1}catch{return 0}}function jf(e,t,n,i){const s=n.concat(i).sort(Uf);t.results=s.slice(0,10),e.cachedEvents=s.slice(10)}function Wf(e,t,n){var i;const s=function(e,t,n){var i;const s={},o=null!==(i=e.cachedEvents)&&void 0!==i?i:[];let r=e.oldestEventFrom;var a,l,c,d;if(s.highlights=e.highlights,t&&n&&n.results)Bf(null!==(a=t.results)&&void 0!==a?a:[],n.results)<0&&(r="local"),jf(e,s,null!==(l=t.results)&&void 0!==l?l:[],n.results),s.highlights=(null!==(c=t.highlights)&&void 0!==c?c:[]).concat(null!==(d=n.highlights)&&void 0!==d?d:[]);else if(t){var m,u;Bf(null!==(m=t.results)&&void 0!==m?m:[],o)<0&&(r="local"),jf(e,s,null!==(u=t.results)&&void 0!==u?u:[],o)}else n&&n.results?(Bf(n.results,o)<0&&(r="server"),jf(e,s,n.results,o)):(s.results=o,e.cachedEvents=[]);return e.oldestEventFrom=r,s}(e,t,n);if(e.count)s.count=e.count;else{var o,r;const e=null!==(o=null==t?void 0:t.count)&&void 0!==o?o:0,i=null!==(r=null==n?void 0:n.count)&&void 0!==r?r:0;s.count=e+i}return t&&(0,Of.E)(e.seshatQuery)&&(e.seshatQuery.next_batch=t.next_batch),n&&(e.serverSideNextBatch=n.next_batch),null!==(i=e.seshatQuery)&&void 0!==i&&i.next_batch?s.next_batch=e.seshatQuery.next_batch:e.serverSideNextBatch&&(s.next_batch=e.serverSideNextBatch),!s.next_batch&&(0,Of.E)(e.cachedEvents)&&e.cachedEvents.length>0&&(s.next_batch="cached"),s}function Hf(e=[]){for(const t of e){const e=t.context.getTimeline();for(const t of e){const e=t.event;e.curve25519Key&&(t.makeEncrypted(o.EventType.RoomMessageEncrypted,{algorithm:e.algorithm},e.curve25519Key,e.ed25519Key),t.forwardingCurve25519KeyChain=e.forwardingCurve25519KeyChain,delete e.curve25519Key,delete e.ed25519Key,delete e.algorithm,delete e.forwardingCurve25519KeyChain)}}}async function zf(e,t,n,i){let s;var o;void 0!==n?s=await(null===(o=e.getCrypto())||void 0===o?void 0:o.isEncryptionEnabledInRoom(n))?async function(e,t,n){const i={results:[],highlights:[]};if(""===t)return i;const s=await Vf(t,n);i.seshatQuery=s.query;const o={search_categories:{room_events:s.response}},r=e.processRoomEventsSearch(i,o);return Hf(r.results),r}(e,t,n):Lf(e,t,n,i):s=async function(e,t,n){const i=Ff(e,t,void 0,n),s=Vf(t);await Promise.all([i,s]);const o=await s,r=await i,a=r.query,l=r.response,c=o.query,d=o.response,m={seshatQuery:c,_query:a,serverSideNextBatch:l.search_categories.room_events.next_batch,cachedEvents:[],oldestEventFrom:"server",results:[],highlights:[]},u={search_categories:{room_events:Wf(m,d,l.search_categories.room_events)}},h=e.processRoomEventsSearch(m,u);return Hf(h.results),h}(e,t,i);return s}function Kf(e,t){const n=t.seshatQuery,i=t._query;if(n){if(i){const n=async function(e,t){var n;const i=f.A.get(),s=t.seshatQuery,o=t.oldestEventFrom;let r,a;if(null==s||!s.next_batch||t.serverSideNextBatch&&"server"!==o||(r=await i.search(s)),t.serverSideNextBatch&&("local"===o||null==s||!s.next_batch)){const n={body:t._query,next_batch:t.serverSideNextBatch};a=await e.search(n)}const l={search_categories:{room_events:Wf(t,r,null===(n=a)||void 0===n?void 0:n.search_categories.room_events)}},c=t.results?t.results.length:0,d=e.processRoomEventsSearch(t,l),m=d.results.length-c;return Hf(d.results.slice(Math.max(d.results.length-m,0))),t.pendingRequest=void 0,d}(e,t);return t.pendingRequest=n,n}{const n=async function(e,t){var n,i;const s=f.A.get();if(!t.seshatQuery)throw new Error("localSearchProcess must be called first");const o=await s.search(t.seshatQuery);if(!o)throw new Error("Local search pagination failed");t.seshatQuery.next_batch=o.next_batch;const r=null!==(n=null===(i=o.results)||void 0===i?void 0:i.length)&&void 0!==n?n:0,a={search_categories:{room_events:o}},l=e.processRoomEventsSearch(t,a);return Hf(l.results.slice(Math.max(l.results.length-r,0))),t.pendingRequest=void 0,l}(e,t);return t.pendingRequest=n,n}}return e.backPaginateRoomEventsSearch(t)}let Gf=function(e){return e.Room="Room",e.All="All",e}({});function Jf(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}let $f=function(e){};const qf=({term:e,scope:t,promise:n,abortController:r,className:a,onUpdate:c,inProgress:d,ref:m})=>{const u=(0,i.useContext)(de.Ay),h=(0,Ji.ME)("showHiddenEvents"),[p,g]=(0,i.useState)(null),[v,_]=(0,i.useState)(null),E=(0,i.useRef)(!1),y=(0,i.useMemo)(()=>new Map,[]),b=(0,i.useRef)(null);(0,i.useEffect)(()=>()=>{y.forEach(e=>e.stop()),y.clear()},[y]);const S=(0,i.useCallback)(t=>(c(!0,null,null),t.then(async t=>{if($f("search complete"),E.current)return s.vF.error("Discarding stale search results"),!1;let n=t.highlights;n.includes(e)||(n=n.concat(e)),n=n.sort(function(e,t){return t.length-e.length});for(const e of t.results)for(const t of e.context.getTimeline()){if(!t.getServerAggregatedRelation(o.THREAD_RELATION_TYPE.name)||t.getThread())continue;const e=u.getRoom(t.getRoomId()),n=null==e?void 0:e.findThreadForEvent(t);n?t.setThread(n):null==e||e.createThread(t.getId(),t,[],!0)}return g(n),_(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Jf(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Jf(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},t)),c(!1,t,null),!1},e=>E.current?(s.vF.error("Discarding stale search results"),!1):(s.vF.error("Search failed",e),c(!1,null,e),!1))),[u,e,c]);if((0,i.useEffect)(()=>(E.current=!1,S(n),()=>{E.current=!0,null==r||r.abort()}),[]),null===v)return i.createElement("div",{className:"mx_RoomView_messagePanel mx_RoomView_messagePanelSearchSpinner"});const A=[];var C;(d&&A.push(i.createElement("li",{key:"search-spinner"},i.createElement(ce.A,null))),v.next_batch)||(null!=v&&null!==(C=v.results)&&void 0!==C&&C.length?A.push(i.createElement("li",{key:"search-top-marker"},i.createElement("h2",{className:"mx_RoomView_topMarker"},(0,l._t)("no_more_results")))):A.push(i.createElement("li",{key:"search-top-marker"},i.createElement("h2",{className:"mx_RoomView_topMarker"},(0,l._t)("common|no_results")))));let x,R=[],k=[];for(let e=((null==v||null===(I=v.results)||void 0===I?void 0:I.length)||0)-1;e>=0;e--){var I;const n=v.results[e],o=n.context.getEvent(),r=o.getRoomId(),a=u.getRoom(r);if(!a){s.vF.log("Hiding search result from an unknown room",r);continue}if(!(0,sn.bN)(o,u,h.showHiddenEvents))continue;t===Gf.All&&r!==x&&(A.push(i.createElement("li",{key:o.getId()+"-room"},i.createElement("h2",null,(0,l._t)("common|room"),": ",a.name))),x=r);const c="#/room/"+r+"/"+o.getId(),d=n.context.getTimeline(),m=e>0?v.results[e-1].context.getTimeline():[];if(e>0&&d[d.length-1].getId()==m[0].getId()){if(0==R.length){for(let e=0==R.length?0:1;e<n.context.getTimeline().length;e++)R.push(d[e]);k.push(n.context.getOurEventIndex())}for(let e=1;e<m.length;e++)R.push(m[e]);k.push(k[k.length-1]+v.results[e-1].context.getOurEventIndex()+1);continue}0==R.length&&(R=n.context.getTimeline(),k=[],k.push(n.context.getOurEventIndex()));let g=y.get(r);g||(g=new Gt.pE(a),g.start(),y.set(r,g)),A.push(i.createElement(Df,{key:o.getId(),timeline:R,ourEventsIndexes:k,searchHighlights:null!=p?p:[],resultLink:c,permalinkCreator:g})),k=[],R=[]}return i.createElement(au.A,{ref:e=>{"function"==typeof m?m(e):m&&(m.current=e),b.current=e},className:"mx_RoomView_searchResultsPanel "+a,onFillRequest:async e=>{if(!e)return!1;if(!v.next_batch)return $f("no more search results"),!1;$f("requesting more search results");const t=function(e,t){const n=f.A.get();return t.pendingRequest?t.pendingRequest:null===n?e.backPaginateRoomEventsSearch(t):Kf(e,t)}(u,v);return S(t)}},i.createElement("li",{className:"mx_RoomView_scrollheader"}),A)},Yf=({roomView:e,resizeNotifier:t,inviteEvent:n})=>{const s=(0,Ji.ME)("room"),o=c.Ay.get().brand;return i.createElement("div",{className:"mx_RoomView mx_RoomView--local"},i.createElement(du.A,null,i.createElement(X_,{room:s.room}),i.createElement("main",{className:"mx_RoomView_body",ref:e},i.createElement("div",{className:"mx_RoomView_timeline"},i.createElement(au.A,{className:"mx_RoomView_messagePanel"},i.createElement(pu.A,{className:"mx_cryptoEvent mx_cryptoEvent_icon",title:(0,l._t)("room|waiting_for_join_title",{brand:o}),subtitle:(0,l._t)("room|waiting_for_join_subtitle",{brand:o})}),i.createElement(Pu,null),i.createElement(ys,{mxEvent:n}))))))},Xf=({searchInfo:e,isRoomEncrypted:t,onSearchScopeChange:n,onCancelClick:s})=>{var o;const r=null!==(o=null==e?void 0:e.scope)&&void 0!==o?o:Gf.Room;return i.createElement(i.Fragment,null,i.createElement(ri.Z,{screenName:"RoomSearch"}),i.createElement("div",{className:"mx_RoomSearchAuxPanel"},i.createElement("div",{className:"mx_RoomSearchAuxPanel_summary"},i.createElement(tc.A,{width:"24px",height:"24px"}),i.createElement("div",{className:"mx_RoomSearchAuxPanel_summary_text"},void 0!==(null==e?void 0:e.count)?(0,l._t)("room|search|summary",{count:e.count},{query:()=>i.createElement("strong",null,e.term)}):void 0!==(null==e?void 0:e.error)?null==e?void 0:e.error.message:i.createElement(Ra.A,null),i.createElement(kp,{kind:Rp.Search,isRoomEncrypted:t,showLogo:!1}))),i.createElement("div",{className:"mx_RoomSearchAuxPanel_buttons"},i.createElement(vm.N,{onClick:()=>n(r===Gf.Room?Gf.All:Gf.Room),kind:"primary"},r===Gf.All?(0,l._t)("room|search|this_room_button"):(0,l._t)("room|search|all_rooms_button")),i.createElement(Sl.K,{onClick:s,destructive:!0,tooltip:(0,l._t)("action|cancel"),"aria-label":(0,l._t)("action|cancel")},i.createElement(M_.A,{width:"20px",height:"20px"})))))};function Qf({room:e,permalinkCreator:t}){const n=nh(e),s=oh(e,n),o=s.length,r=1===o,[a,c]=(0,i.useState)(o-1);(0,i.useEffect)(()=>{c(()=>o-1)},[o]);const d=a===o-1,m=s[a];!function(e){const t=(0,i.useContext)(Do.A).resizeNotifier,n=(0,i.useRef)(null);(0,i.useEffect)(()=>{(n.current&&!e||!n.current&&e)&&t.notifyTimelineHeightChanged(),n.current=e},[e,t])}(m);const u=(0,i.useId)();if(!m)return null;const h=m.isRedacted()||m.isDecryptionFailure();return i.createElement("div",{role:"region",className:"mx_PinnedMessageBanner","data-single-message":r,"aria-label":(0,l._t)("room|pinned_message_banner|description")},i.createElement("button",{"aria-label":d?(0,l._t)("room|pinned_message_banner|go_to_newest_message"):(0,l._t)("room|pinned_message_banner|go_to_next_message"),"aria-describedby":u,type:"button",className:"mx_PinnedMessageBanner_main",onClick:()=>{ri.A.trackInteraction("PinnedMessageBannerClick"),S.A.dispatch({action:H.r.ViewRoom,event_id:m.getId(),highlighted:!0,room_id:e.roomId,metricsTrigger:void 0}),c(e=>-1===--e?o-1:e)}},i.createElement("div",{className:"mx_PinnedMessageBanner_content",id:u},i.createElement(eE,{count:o,currentIndex:a}),i.createElement(gs.A,{width:"20px",height:"20px",className:"mx_PinnedMessageBanner_PinIcon"}),!r&&i.createElement("div",{className:"mx_PinnedMessageBanner_title"},(0,l._t)("room|pinned_message_banner|title",{index:a+1,length:o},{bold:e=>i.createElement("span",{className:"mx_PinnedMessageBanner_title_counter"},e)})),i.createElement(Hi,{mxEvent:m,className:"mx_PinnedMessageBanner_message"}),h&&i.createElement("div",{className:"mx_PinnedMessageBanner_redactedMessage"},i.createElement(Hg.A,{mxEvent:m,maxImageHeight:20,permalinkCreator:t,replacingEventId:m.replacingEventId()})))),!r&&i.createElement(iE,{room:e}))}const Zf=3;function eE({count:e,currentIndex:t}){const n=Math.min(e,Zf),s=t%n,o=Math.ceil(e/n),r=t>=(o-1)*Zf,a=n-(o*n-e);return i.createElement("div",{className:"mx_PinnedMessageBanner_Indicators"},Array.from({length:n}).map((e,t)=>i.createElement(tE,{key:t,active:t===s,hidden:r&&a<=t})))}function tE({active:e,hidden:t}){return i.createElement("div",{className:Lt()("mx_PinnedMessageBanner_Indicator",{"mx_PinnedMessageBanner_Indicator--active":e,"mx_PinnedMessageBanner_Indicator--hidden":t})})}function nE(e){return Rl.A.instance.isOpenForRoom(e)?Rl.A.instance.currentCard.phase:null}function iE({room:e}){const[t,n]=(0,i.useState)(nE(e.roomId));(0,Fi.ml)(Rl.A.instance,Br.H,()=>n(nE(e.roomId)));const s=t===kl.n.PinnedMessages;return i.createElement(Y.$,{className:"mx_PinnedMessageBanner_actions",kind:"tertiary",onClick:()=>{s?ri.A.trackInteraction("PinnedMessageBannerCloseListButton"):ri.A.trackInteraction("PinnedMessageBannerViewAllButton"),Rl.A.instance.showOrHidePhase(kl.n.PinnedMessages)}},s?(0,l._t)("room|pinned_message_banner|button_close_list"):(0,l._t)("room|pinned_message_banner|button_view_all"))}const sE=({onFinished:e,roomName:t})=>{const[n,s]=(0,i.useState)(!1),[o,r]=(0,i.useState)(!1),[a,c]=(0,i.useState)(""),d=(0,i.useCallback)(e=>c(e.target.value),[c]),m=(0,i.useCallback)(()=>e(!1,!1,!1),[e]),u=(0,i.useCallback)(()=>e(!0,o,!!n&&a),[e,o,n,a]);return i.createElement(Q.A,{className:"mx_DeclineAndBlockInviteDialog",onFinished:m,title:(0,l._t)("decline_invitation_dialog|title"),contentId:"mx_Dialog_content"},i.createElement(Em.b,null,i.createElement("p",null,(0,l._t)("decline_invitation_dialog|confirm",{roomName:t})),i.createElement(yo.A,{label:(0,l._t)("report_content|ignore_user"),onChange:r,caption:(0,l._t)("decline_invitation_dialog|ignore_user_help"),value:o}),i.createElement(yo.A,{label:(0,l._t)("action|report_room"),onChange:s,caption:(0,l._t)("decline_invitation_dialog|report_room_description"),value:n}),i.createElement(qu.D,{name:"report-reason","aria-disabled":!n},i.createElement(Yu.J,{htmlFor:"mx_DeclineAndBlockInviteDialog_reason"},(0,l._t)("room_settings|permissions|ban_reason")),i.createElement("textarea",{id:"mx_DeclineAndBlockInviteDialog_reason",className:"mx_RoomReportTextArea",placeholder:(0,l._t)("decline_invitation_dialog|reason_description"),rows:5,onChange:d,value:n?a:"",disabled:!n})),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|decline_invite"),primaryButtonClass:"danger",cancelButton:(0,l._t)("action|cancel"),onPrimaryButtonClick:u,onCancel:m})))},oE=["upgradeRecommendation"],rE=["upgradeRecommendation"];function aE(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 lE(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?aE(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):aE(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}let cE=function(e){};const dE="sandbox"in document.createElement("iframe");function mE(e){const t=(0,Ji.ME)("room").room,n=e.localRoom.currentState.getStateEvents(o.EventType.RoomEncryption)[0];let s;n&&(s=i.createElement(Pf.A,{mxEvent:n}));const r=()=>{t.state=Iu.cd.NEW,S.A.dispatch({action:"local_room_event",roomId:t.roomId})};let a=null,c=null;if(t.isError){const e=i.createElement(le.A,{onClick:r,className:"mx_RoomStatusBar_unsentRetry"},(0,l._t)("action|retry"));a=i.createElement(Nf.E,{title:(0,l._t)("room|status_bar|some_messages_not_sent"),notificationState:Sn.d.RED_EXCLAMATION,buttons:e})}else c=i.createElement(_g,{e2eStatus:e.e2eStatus,room:e.localRoom,resizeNotifier:e.resizeNotifier,permalinkCreator:e.permalinkCreator});return i.createElement("div",{className:"mx_RoomView mx_RoomView--local"},i.createElement(du.A,null,i.createElement(X_,{room:t}),i.createElement("main",{className:"mx_RoomView_body",ref:e.roomView,"aria-label":(0,l._t)("room|room_content")},i.createElement(Ag,{parent:e.roomView.current,onFileDrop:e.onFileDrop,room:t}),i.createElement("div",{className:"mx_RoomView_timeline"},i.createElement(au.A,{className:"mx_RoomView_messagePanel"},s,i.createElement(Pu,null))),a,c)))}function uE(e){const t=(0,l._t)("room|creating_room_text",{names:e.names});return i.createElement("div",{className:"mx_RoomView mx_RoomView--local"},i.createElement(du.A,null,i.createElement(X_,{room:e.localRoom}),i.createElement("div",{className:"mx_RoomView_body"},i.createElement(Mf,{text:t}))))}class hE extends i.Component{constructor(e,t){var n;if(super(e,t),(0,w.A)(this,"askToJoinEnabled",void 0),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"settingWatchers",[]),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"permalinkCreators",{}),(0,w.A)(this,"inviter",void 0),(0,w.A)(this,"roomView",(0,i.createRef)()),(0,w.A)(this,"searchResultsPanel",(0,i.createRef)()),(0,w.A)(this,"messagePanel",null),(0,w.A)(this,"roomViewBody",(0,i.createRef)()),(0,w.A)(this,"onIsResizing",e=>{this.setState({resizing:e})}),(0,w.A)(this,"onWidgetStoreUpdate",()=>{this.state.room&&(this.checkWidgets(this.state.room),this.doMaybeRemoveOwnJitsiWidget())}),(0,w.A)(this,"onWidgetEchoStoreUpdate",()=>{this.state.room&&this.checkWidgets(this.state.room)}),(0,w.A)(this,"onWidgetLayoutChange",()=>{this.state.room&&(S.A.dispatch({action:"appsDrawer",show:!0}),this.context.widgetLayoutStore.hasMaximisedWidget(this.state.room)&&this.context.rightPanelStore.setCard({phase:kl.n.Timeline}),this.checkWidgets(this.state.room))}),(0,w.A)(this,"checkWidgets",e=>{this.setState({hasPinnedWidgets:this.context.widgetLayoutStore.hasPinnedWidgets(e),mainSplitContentType:this.getMainSplitContentType(e),showApps:this.shouldShowApps(e)})}),(0,w.A)(this,"getMainSplitContentType",e=>this.context.roomViewStore.isViewingCall()||(0,Om.j)(e)?gn.DZ.Call:this.context.widgetLayoutStore.hasMaximisedWidget(e)?gn.DZ.MaximisedWidget:gn.DZ.Timeline),(0,w.A)(this,"onRoomViewStoreUpdate",async e=>{var t,n,i,o,r,a,l,c;if(this.unmounted)return;const d=null!==(t=this.context.roomViewStore.getRoomLoadError())&&void 0!==t?t:void 0;if(!e&&!d&&this.state.roomId!==this.context.roomViewStore.getRoomId())return;const m=null!==(n=this.context.roomViewStore.getRoomId())&&void 0!==n?n:null,u=null!==(i=null===(o=this.context.client)||void 0===o?void 0:o.getRoom(null!=m?m:void 0))&&void 0!==i?i:void 0,h={roomId:null!=m?m:void 0,roomAlias:null!==(r=this.context.roomViewStore.getRoomAlias())&&void 0!==r?r:void 0,roomLoading:this.context.roomViewStore.isRoomLoading(),roomLoadError:d,joining:this.context.roomViewStore.isJoining(),replyToEvent:null!==(a=this.context.roomViewStore.getQuotingEvent())&&void 0!==a?a:void 0,shouldPeek:this.state.matrixClientIsReady&&this.context.roomViewStore.shouldPeek(),showReadReceipts:D.A.getValue("showReadReceipts",m),showRedactions:D.A.getValue("showRedactions",m),showJoinLeaves:D.A.getValue("showJoinLeaves",m),showAvatarChanges:D.A.getValue("showAvatarChanges",m),showDisplaynameChanges:D.A.getValue("showDisplaynameChanges",m),wasContextSwitch:this.context.roomViewStore.getWasContextSwitch(),mainSplitContentType:u?this.getMainSplitContentType(u):void 0,initialEventId:void 0,showRightPanel:!!m&&this.context.rightPanelStore.isOpenForRoom(m),promptAskToJoin:this.context.roomViewStore.promptAskToJoin(),viewRoomOpts:this.context.roomViewStore.getViewRoomOpts()};var p;this.state.mainSplitContentType!==gn.DZ.Timeline&&h.mainSplitContentType===gn.DZ.Timeline&&this.context.rightPanelStore.isOpen&&this.context.rightPanelStore.currentCard.phase===kl.n.Timeline&&this.context.rightPanelStore.roomPhaseHistory.some(e=>e.phase===kl.n.Timeline)&&(this.context.rightPanelStore.setCard({phase:kl.n.RoomSummary}),this.context.rightPanelStore.togglePanel(null!==(p=this.state.roomId)&&void 0!==p?p:null),h.showRightPanel=!1);const g=null!==(l=this.context.roomViewStore.getInitialEventId())&&void 0!==l?l:this.state.initialEventId;if(g){var v,_;let e=null==u?void 0:u.findEventById(g);var f;if(!e&&this.context.client&&m)e=null!==(f=await(0,nn.$I)(this.context.client,m,g))&&void 0!==f?f:void 0;h.initialEventPixelOffset=void 0;const t=null===(v=e)||void 0===v?void 0:v.getThread();null==t||!t.rootEvent||null!==(_=e)&&void 0!==_&&_.isThreadRoot?(h.initialEventId=g,h.isInitialEventHighlighted=this.context.roomViewStore.isInitialEventHighlighted(),h.initialEventScrollIntoView=this.context.roomViewStore.initialEventScrollIntoView()):S.A.dispatch({action:H.r.ShowThread,rootEvent:t.rootEvent,initialEvent:e,highlighted:this.context.roomViewStore.isInitialEventHighlighted(),scroll_into_view:this.context.roomViewStore.initialEventScrollIntoView()})}var E,y;(this.settingWatchers=this.settingWatchers.concat([D.A.watchSetting("showReadReceipts",m,(...[,,,e])=>this.setState({showReadReceipts:e})),D.A.watchSetting("showRedactions",m,(...[,,,e])=>this.setState({showRedactions:e})),D.A.watchSetting("showJoinLeaves",m,(...[,,,e])=>this.setState({showJoinLeaves:e})),D.A.watchSetting("showAvatarChanges",m,(...[,,,e])=>this.setState({showAvatarChanges:e})),D.A.watchSetting("showDisplaynameChanges",m,(...[,,,e])=>this.setState({showDisplaynameChanges:e}))]),e||!this.state.shouldPeek||h.shouldPeek)||(null===(E=this.context.client)||void 0===E||E.stopPeeking());if(s.vF.log("RVS update:",h.roomId,h.roomAlias,"loading?",h.roomLoading,"joining?",h.joining,"initial?",e,"shouldPeek?",h.shouldPeek),e&&(h.room=this.context.client.getRoom(h.roomId)||void 0,h.isRoomEncrypted=null,h.room&&(h.showApps=this.shouldShowApps(h.room),this.onRoomLoaded(h.room))),void 0===this.state.roomId&&void 0!==h.roomId&&!h.initialEventId&&h.roomId){const e=xv.getScrollState(h.roomId);e&&(h.initialEventId=e.focussedEvent,h.initialEventPixelOffset=e.pixelOffset)}this.state.timelineRenderingType===gn.Ae.Search&&this.state.initialEventId!==h.initialEventId&&(h.timelineRenderingType=gn.Ae.Room,null===(y=this.state.search)||void 0===y||null===(y=y.abortController)||void 0===y||y.abort(),h.search=void 0);this.setState(h),e&&this.setupRoom(h.room,h.roomId,!!h.joining,!!h.shouldPeek);const b=await this.getIsRoomEncrypted(h.roomId);this.setState(lE({isRoomEncrypted:b},b&&h.roomId&&{e2eStatus:null!==(c=hE.e2eStatusCache.get(h.roomId))&&void 0!==c?c:km.z.Warning}))}),(0,w.A)(this,"onCallClose",()=>{S.A.dispatch({action:H.r.ViewRoom,room_id:this.state.roomId,view_call:!1,metricsTrigger:void 0},!0)}),(0,w.A)(this,"getRoomId",()=>{var e,t;return null!==(e=null===(t=this.state.room)||void 0===t?void 0:t.roomId)&&void 0!==e?e:this.state.roomId}),(0,w.A)(this,"onRightPanelStoreUpdate",()=>{const{roomId:e}=this.state;this.setState({showRightPanel:!!e&&this.context.rightPanelStore.isOpenForRoom(e)})}),(0,w.A)(this,"onPageUnload",e=>hm.Ay.sharedInstance().getCurrentUploads().length>0?e.returnValue=(0,l._t)("quit_warning|file_upload_in_progress"):this.getCallForRoom()&&"ended"!==this.state.callState?e.returnValue=(0,l._t)("quit_warning|call_in_progress"):void 0),(0,w.A)(this,"onReactKeyDown",e=>{var t;let n=!1;switch((0,Us.zM)().getRoomAction(e)){case si.bY.DismissReadMarker:null===(t=this.messagePanel)||void 0===t||t.forgetReadMarker(),this.jumpToLiveTimeline(),n=!0;break;case si.bY.JumpToOldestUnread:this.jumpToReadMarker(),n=!0;break;case si.bY.UploadFile:S.A.dispatch({action:"upload_file",context:gn.Ae.Room},!0),n=!0}n&&(e.stopPropagation(),e.preventDefault())}),(0,w.A)(this,"onCallState",e=>{if(!e)return;const t=this.getCallForRoom();this.setState({callState:null==t?void 0:t.state})}),(0,w.A)(this,"onAction",async e=>{var t;if(this.context.client)switch(e.action){case"message_sent":this.checkDesktopNotifications();break;case"post_sticker_message":this.injectSticker(e.data.content.url,e.data.content.info,e.data.description||e.data.name,e.data.threadId);break;case"picture_snapshot":{const t=this.getRoomId();(0,Of.E)(t)&&hm.Ay.sharedInstance().sendContentListToRoom([e.file],t,void 0,this.context.client);break}case"notifier_enabled":case H.r.UploadStarted:case H.r.UploadFinished:case H.r.UploadCanceled:this.forceUpdate();break;case"appsDrawer":this.setState({showApps:e.show});break;case"reply_to_event":!this.unmounted&&this.state.search&&(null===(t=e.event)||void 0===t?void 0:t.getRoomId())===this.state.roomId&&e.context===gn.Ae.Search&&this.onCancelSearchClick();break;case"MatrixActions.sync":if(!this.state.matrixClientIsReady){var n;const e=Boolean(null===(n=this.context.client)||void 0===n?void 0:n.isInitialSyncComplete());this.setState({matrixClientIsReady:e},()=>{e&&this.onRoomViewStoreUpdate(!0)})}break;case"local_room_event":this.onLocalRoomEvent(e.roomId);break;case H.r.EditEvent:{if(e.timelineRenderingType!==this.state.timelineRenderingType)return;if(e.event&&e.event.getRoomId()!==this.state.roomId)return void S.A.dispatch({action:H.r.ViewRoom,room_id:e.event.getRoomId(),metricsTrigger:void 0,deferred_action:e});const t=e.event?new fg(e.event):void 0;this.setState({editState:t,search:void 0},()=>{var t;e.event&&(null===(t=this.messagePanel)||void 0===t||t.scrollToEventIfNeeded(e.event.getId()))});break}case H.r.ComposerInsert:{if(e.composerType)break;let t=e.timelineRenderingType;if(t===gn.Ae.Thread)break;this.state.timelineRenderingType===gn.Ae.Search&&e.timelineRenderingType===gn.Ae.Search&&(await this.onCancelSearchClick(),t=gn.Ae.Room),S.A.dispatch(lE(lE({},e),{},{timelineRenderingType:t,composerType:this.state.editState?Rg.D.Edit:Rg.D.Send}));break}case H.r.FocusAComposer:S.A.dispatch(lE(lE({},e),{},{action:this.state.editState?H.r.FocusEditMessageComposer:H.r.FocusSendMessageComposer}));break;case"scroll_to_bottom":var i;if(e.timelineRenderingType===gn.Ae.Room)null===(i=this.messagePanel)||void 0===i||i.jumpToLiveTimeline();break;case H.r.ViewUser:e.member?e.push?Rl.A.instance.pushCard({phase:kl.n.MemberInfo,state:{member:e.member}}):Rl.A.instance.setCards([{phase:kl.n.RoomSummary},{phase:kl.n.MemberList},{phase:kl.n.MemberInfo,state:{member:e.member}}]):Rl.A.instance.showOrHidePhase(kl.n.MemberList);break;case H.r.View3pidInvite:((e,t)=>{e.event?t.pushCard({phase:kl.n.ThreePidMemberInfo,state:{memberInfoEvent:e.event}}):t.showOrHidePhase(kl.n.MemberList)})(e,Rl.A.instance);break;case H.r.FocusMessageSearch:e.initialText&&this.onSearch(e.initialText)}}),(0,w.A)(this,"onRoomTimeline",(e,t,n,i,s)=>{var o;this.unmounted||t&&t.roomId===(null===(o=this.state.room)||void 0===o?void 0:o.roomId)&&s.timeline.getTimelineSet()===t.getUnfilteredTimelineSet()&&("org.matrix.room.preview_urls"===e.getType()&&this.updatePreviewUrlVisibility(t),"m.room.encryption"===e.getType()&&(this.updateE2EStatus(t),this.updatePreviewUrlVisibility(t)),!n&&null!=s&&s.liveEvent&&(this.state.joining||(e.isBeingDecrypted()||e.isDecryptionFailure()||this.handleEffects(e),this.context.client&&e.getSender()!==this.context.client.getSafeUserId()&&(!this.state.search&&this.state.atEndOfLiveTimeline||(0,mm.A)(e,this.state)||this.setState(e=>({numUnreadMessages:e.numUnreadMessages+1}))))))}),(0,w.A)(this,"onEventDecrypted",e=>{this.state.room&&this.state.matrixClientIsReady&&e.getRoomId()===this.state.room.roomId&&(e.isDecryptionFailure()||this.handleEffects(e))}),(0,w.A)(this,"handleEffects",e=>{if(!this.state.room)return;this.context.roomNotificationStateStore.getRoomState(this.state.room).isUnread&&Uh.y.forEach(t=>{((0,Vh._)(e.getContent(),t.emojis)||e.getContent().msgtype===t.msgType)&&(e.isRelation(o.THREAD_RELATION_TYPE.name)||S.A.dispatch({action:`effects.${t.command}`,event:e}))})}),(0,w.A)(this,"onRoomName",e=>{this.state.room&&e.roomId==this.state.room.roomId&&this.forceUpdate()}),(0,w.A)(this,"onKeyBackupStatus",()=>{this.forceUpdate()}),(0,w.A)(this,"canResetTimeline",()=>!this.messagePanel||this.messagePanel.canResetTimeline()),(0,w.A)(this,"onRoomLoaded",e=>{this.unmounted||(this.inviter=this.getInviterFromRoom(e),this.context.widgetLayoutStore.on(rp.aK.emissionForRoom(e),this.onWidgetLayoutChange),this.calculatePeekRules(e),this.loadMembersIfJoined(e),this.calculateRecommendedVersion(e),this.updatePermissions(e),this.checkWidgets(e),this.updateRoomEncrypted(e),this.getMainSplitContentType(e)!==gn.DZ.Timeline&&this.context.roomNotificationStateStore.getRoomState(e).isUnread&&this.context.rightPanelStore.setCard({phase:kl.n.Timeline},!0,e.roomId),this.setState({tombstone:this.getRoomTombstone(e),liveTimeline:e.getLiveTimeline()}),S.A.dispatch({action:H.r.RoomLoaded}))}),(0,w.A)(this,"onRoomTimelineReset",e=>{var t;e&&e.roomId===(null===(t=this.state.room)||void 0===t?void 0:t.roomId)&&e.getLiveTimeline()!==this.state.liveTimeline&&(s.vF.log(`Live timeline of ${e.roomId} was reset`),this.setState({liveTimeline:e.getLiveTimeline()}))}),(0,w.A)(this,"onRoom",e=>{e&&e.roomId===this.state.roomId&&(this.state.room&&this.context.widgetLayoutStore.off(rp.aK.emissionForRoom(this.state.room),this.onWidgetLayoutChange),this.setState({room:e},()=>{this.onRoomLoaded(e)}))}),(0,w.A)(this,"onUserVerificationChanged",e=>{const t=this.state.room;t&&t.currentState.getMember(e)&&this.updateE2EStatus(t)}),(0,w.A)(this,"onCrossSigningKeysChanged",()=>{const e=this.state.room;e&&this.updateE2EStatus(e)}),(0,w.A)(this,"onUrlPreviewsEnabledChange",()=>{this.state.room&&this.updatePreviewUrlVisibility(this.state.room)}),(0,w.A)(this,"onRoomStateEvents",async(e,t)=>{if(this.state.room&&this.state.room.roomId===t.roomId&&this.context.client)switch(e.getType()){case o.EventType.RoomTombstone:this.setState({tombstone:this.getRoomTombstone()});break;case o.EventType.RoomEncryption:await this.updateRoomEncrypted();break;default:this.updatePermissions(this.state.room)}}),(0,w.A)(this,"onRoomStateUpdate",e=>{var t;e.roomId===(null===(t=this.state.room)||void 0===t?void 0:t.roomId)&&this.updateRoomMembers()}),(0,w.A)(this,"onMyMembership",e=>{e.roomId===this.state.roomId&&(this.forceUpdate(),this.loadMembersIfJoined(e),this.updatePermissions(e))}),(0,w.A)(this,"updateRoomMembers",(0,Kt.throttle)(()=>{this.state.room&&(this.updateDMState(),this.updateE2EStatus(this.state.room))},500,{leading:!0,trailing:!0})),(0,w.A)(this,"onInviteClick",()=>{S.A.dispatch({action:"view_invite",roomId:this.getRoomId()})}),(0,w.A)(this,"onJoinButtonClicked",()=>{var e;null!==(e=this.context.client)&&void 0!==e&&e.isGuest()?(S.A.dispatch({action:H.r.DoAfterSyncPrepared,deferred_action:{action:H.r.ViewRoom,room_id:this.getRoomId(),metricsTrigger:void 0}}),S.A.dispatch({action:"require_registration"})):Promise.resolve().then(()=>{var e;const t=null===(e=this.props.threepidInvite)||void 0===e?void 0:e.signUrl,n=this.getRoomId();var i;(0,Of.E)(n)&&S.A.dispatch({action:H.r.JoinRoom,roomId:n,opts:{inviteSignUrl:t},metricsTrigger:(null===(i=this.state.room)||void 0===i?void 0:i.getMyMembership())===X.O.Invite?"Invite":"RoomPreview",canAskToJoin:this.state.canAskToJoin});return Promise.resolve()})}),(0,w.A)(this,"onMessageListScroll",()=>{var e;null!==(e=this.messagePanel)&&void 0!==e&&e.isAtEndOfLiveTimeline()?this.setState({numUnreadMessages:0,atEndOfLiveTimeline:!0}):this.setState({atEndOfLiveTimeline:!1}),this.updateTopUnreadMessagesBar()}),(0,w.A)(this,"resetJumpToEvent",e=>{this.state.initialEventId&&this.state.initialEventScrollIntoView&&this.state.initialEventId===e&&(cE("Removing scroll_into_view flag from initial event"),S.A.dispatch({action:H.r.ViewRoom,room_id:this.getRoomId(),event_id:this.state.initialEventId,highlighted:this.state.isInitialEventHighlighted,scroll_into_view:!1,replyingToEvent:this.state.replyToEvent,metricsTrigger:void 0}))}),(0,w.A)(this,"onSearch",(e,t=Gf.Room)=>{const n=t===Gf.Room?this.getRoomId():void 0;cE("sending search request");const i=new AbortController,s=function(e,t,n,i){return null===f.A.get()?Lf(e,t,n,i):zf(e,t,n,i)}(this.context.client,e,n,i.signal);this.setState({timelineRenderingType:gn.Ae.Search,search:{searchId:(new Date).getTime(),roomId:n,term:e,scope:t,promise:s,abortController:i}})}),(0,w.A)(this,"onSearchScopeChange",e=>{var t,n;this.onSearch(null!==(t=null===(n=this.state.search)||void 0===n?void 0:n.term)&&void 0!==t?t:"",e)}),(0,w.A)(this,"onSearchUpdate",(e,t,n)=>{this.setState({search:lE(lE({},this.state.search),{},{count:null==t?void 0:t.count,error:null!=n?n:void 0,inProgress:e})})}),(0,w.A)(this,"onForgetClick",()=>{S.A.dispatch({action:"forget_room",room_id:this.getRoomId()})}),(0,w.A)(this,"onDeclineAndBlockButtonClicked",async()=>{if(!this.state.room||!this.context.client)return;const[e,t,n]=await R.Ay.createDialog(sE,{roomName:this.state.room.name}).finished;if(!e)return;this.setState({rejecting:!0});const i=[];if(t){const e=async()=>{const e=this.context.client.getSafeUserId();if(!this.inviter||this.inviter===e)throw new pE("Cannot determine which user to ignore since the member event has changed.");const t=this.context.client.getIgnoredUsers();t.push(this.inviter),await this.context.client.setIgnoredUsers(t)};i.push(e())}!1!==n&&i.push(this.context.client.reportRoom(this.state.room.roomId,n)),i.push(this.context.client.leave(this.state.room.roomId));try{await Promise.all(i),S.A.dispatch({action:H.r.ViewHomePage}),this.setState({rejecting:!1})}catch(e){s.vF.error(`Failed to reject invite: ${e}`);let t="";t=e instanceof pE?(0,l._t)("room|failed_determine_user"):e instanceof Error?e.message:JSON.stringify(e),R.Ay.createDialog(It.A,{title:(0,l._t)("room|failed_reject_invite"),description:t}),this.setState({rejecting:!1})}}),(0,w.A)(this,"onDeclineButtonClicked",async()=>{if(this.state.room&&this.context.client)try{this.setState({rejecting:!0}),await this.context.client.leave(this.state.room.roomId),S.A.dispatch({action:H.r.ViewHomePage}),this.setState({rejecting:!1})}catch(e){s.vF.error(`Failed to reject invite: ${e}`);const t=e instanceof Error?e.message:JSON.stringify(e);R.Ay.createDialog(It.A,{title:(0,l._t)("room|failed_reject_invite"),description:t}),this.setState({rejecting:!1})}}),(0,w.A)(this,"onRejectThreepidInviteButtonClicked",()=>{S.A.fire(H.r.ViewRoomDirectory)}),(0,w.A)(this,"onSearchChange",(0,Kt.debounce)(e=>{this.onSearch(e)},300)),(0,w.A)(this,"onCancelSearchClick",()=>new Promise(e=>{this.setState({timelineRenderingType:gn.Ae.Room,search:void 0},e)})),(0,w.A)(this,"jumpToLiveTimeline",()=>{var e;this.state.initialEventId&&this.state.isInitialEventHighlighted?S.A.dispatch({action:H.r.ViewRoom,room_id:this.getRoomId(),metricsTrigger:void 0}):(null===(e=this.messagePanel)||void 0===e||e.jumpToLiveTimeline(),S.A.fire(H.r.FocusSendMessageComposer))}),(0,w.A)(this,"jumpToReadMarker",()=>{var e;null===(e=this.messagePanel)||void 0===e||e.jumpToReadMarker()}),(0,w.A)(this,"forgetReadMarker",e=>{var t;e.stopPropagation(),null===(t=this.messagePanel)||void 0===t||t.forgetReadMarker()}),(0,w.A)(this,"updateTopUnreadMessagesBar",()=>{if(!this.messagePanel)return;const e=this.messagePanel.canJumpToReadMarker();this.state.showTopUnreadMessagesBar!=e&&this.setState({showTopUnreadMessagesBar:e})}),(0,w.A)(this,"onStatusBarVisible",()=>{this.unmounted||this.state.statusBarVisible||this.setState({statusBarVisible:!0})}),(0,w.A)(this,"onStatusBarHidden",()=>{!this.unmounted&&this.state.statusBarVisible&&this.setState({statusBarVisible:!1})}),(0,w.A)(this,"handleScrollKey",e=>{var t;let n;this.searchResultsPanel.current?n=this.searchResultsPanel.current:this.messagePanel&&(n=this.messagePanel),null===(t=n)||void 0===t||t.handleScrollKey(e)}),(0,w.A)(this,"gatherTimelinePanelRef",e=>{this.messagePanel=e}),(0,w.A)(this,"onHiddenHighlightsClick",()=>{const e=this.getOldRoom();e&&S.A.dispatch({action:H.r.ViewRoom,room_id:e.roomId,metricsTrigger:"Predecessor"})}),(0,w.A)(this,"onFileDrop",async e=>{const t=this.getRoomId();t&&this.context.client&&await hm.Ay.sharedInstance().sendContentListToRoom(Array.from(e.files),t,void 0,this.context.client,gn.Ae.Room)}),(0,w.A)(this,"onMeasurement",e=>{this.setState({narrow:e})}),(0,w.A)(this,"onSubmitAskToJoin",e=>{const t=this.getRoomId();(0,Of.E)(t)&&S.A.dispatch({action:H.r.SubmitAskToJoin,roomId:t,opts:{reason:e}})}),(0,w.A)(this,"onCancelAskToJoin",()=>{const e=this.getRoomId();(0,Of.E)(e)&&S.A.dispatch({action:H.r.CancelAskToJoin,roomId:e})}),this.askToJoinEnabled=D.A.getValue("feature_ask_to_join"),!t.client)throw new Error("Unable to create RoomView without MatrixClient");const r=t.client.hasLazyLoadMembersEnabled();this.state={roomId:void 0,roomLoading:!0,peekLoading:!1,shouldPeek:!0,membersLoaded:!r,numUnreadMessages:0,callState:void 0,canPeek:!1,canSelfRedact:!1,showApps:!1,isPeeking:!1,showRightPanel:!1,joining:!1,showTopUnreadMessagesBar:!1,statusBarVisible:!1,canReact:!1,canSendMessages:!1,resizing:!1,layout:D.A.getValue("layout"),lowBandwidth:D.A.getValue("lowBandwidth"),alwaysShowTimestamps:D.A.getValue("alwaysShowTimestamps"),showTwelveHourTimestamps:D.A.getValue("showTwelveHourTimestamps"),userTimezone:um.dB(),readMarkerInViewThresholdMs:D.A.getValue("readMarkerInViewThresholdMs"),readMarkerOutOfViewThresholdMs:D.A.getValue("readMarkerOutOfViewThresholdMs"),showHiddenEvents:D.A.getValue("showHiddenEventsInTimeline"),showReadReceipts:!0,showRedactions:!0,showJoinLeaves:!0,showAvatarChanges:!0,showDisplaynameChanges:!0,matrixClientIsReady:null===(n=t.client)||void 0===n?void 0:n.isInitialSyncComplete(),mainSplitContentType:gn.DZ.Timeline,timelineRenderingType:gn.Ae.Room,liveTimeline:void 0,narrow:!1,msc3946ProcessDynamicPredecessor:D.A.getValue("feature_dynamic_room_predecessors"),canAskToJoin:this.askToJoinEnabled,promptAskToJoin:!1,viewRoomOpts:{buttons:[]},isRoomEncrypted:null}}doMaybeRemoveOwnJitsiWidget(){if(!this.state.roomId||!this.state.room||!this.context.client)return;const e=this.context.widgetStore.getApps(this.state.roomId).filter(e=>e.eventId&&Ih.x.JITSI.matches(e.type));if(e.length<2)return;const t=this.context.client.getSafeUserId(),n=e.find(e=>e.creatorUserId===t);if(!n)return;const i=this.state.room.findEventById(n.eventId);if(!i)return;const s=i.getTs();if(!s)return;const o=e.reduce((e,t)=>{var i;if(t.eventId===n.eventId)return e;const s=(null===(i=this.state.room.findEventById(t.eventId))||void 0===i?void 0:i.getTs())||0;return Math.max(e,s)},0);o&&s>o&&s-o<3e4&&ph.A.setRoomWidget(this.context.client,this.state.roomId,n.id)}getPermalinkCreatorForRoom(){const{room:e,roomId:t}=this.state;if(void 0===e){if((0,Of.E)(t)){const e=new Gt.pE(null,t);return this.permalinkCreators[t]=e,e}throw new Error("Cannot get a permalink creator without a roomId")}return this.permalinkCreators[e.roomId]||(this.permalinkCreators[e.roomId]=new Gt.pE(e),this.state.room&&e.roomId===this.state.room.roomId?this.permalinkCreators[e.roomId].start():this.permalinkCreators[e.roomId].load()),this.permalinkCreators[e.roomId]}stopAllPermalinkCreators(){if(this.permalinkCreators)for(const e of Object.keys(this.permalinkCreators))this.permalinkCreators[e].stop()}setupRoom(e,t,n,i){var r;if(!n&&t)if(!e&&i)s.vF.info(`Attempting to peek into room ${t}`),this.setState({peekLoading:!0,isPeeking:!0}),null===(r=this.context.client)||void 0===r||r.peekInRoom(t).then(e=>{this.unmounted||(this.setState({room:e,peekLoading:!1,canAskToJoin:this.askToJoinEnabled&&e.getJoinRule()===o.JoinRule.Knock}),this.onRoomLoaded(e))}).catch(e=>{if(!this.unmounted){if(this.setState({isPeeking:!1}),"M_GUEST_ACCESS_FORBIDDEN"!==e.errcode&&"M_FORBIDDEN"!==e.errcode)throw e;this.setState({peekLoading:!1})}});else if(e){var a;null===(a=this.context.client)||void 0===a||a.stopPeeking(),this.setState({isPeeking:!1,canAskToJoin:this.askToJoinEnabled&&e.getJoinRule()===o.JoinRule.Knock})}}shouldShowApps(e){if(!dE||!e)return!1;const t=e.roomId+"_hide_widget_drawer",n=localStorage.getItem(t),i=!n||"false"===n,s=this.context.widgetLayoutStore.getContainerWidgets(e,rp.mc.Top);return i&&s.length>0}componentDidMount(){this.unmounted=!1,this.dispatcherRef=S.A.register(this.onAction),this.context.client&&(this.context.client.on(o.ClientEvent.Room,this.onRoom),this.context.client.on(o.RoomEvent.Timeline,this.onRoomTimeline),this.context.client.on(o.RoomEvent.TimelineReset,this.onRoomTimelineReset),this.context.client.on(o.RoomEvent.Name,this.onRoomName),this.context.client.on(o.RoomStateEvent.Events,this.onRoomStateEvents),this.context.client.on(o.RoomStateEvent.Update,this.onRoomStateUpdate),this.context.client.on(o.RoomEvent.MyMembership,this.onMyMembership),this.context.client.on(V.cr.KeyBackupStatus,this.onKeyBackupStatus),this.context.client.on(V.cr.UserTrustStatusChanged,this.onUserVerificationChanged),this.context.client.on(V.cr.KeysChanged,this.onCrossSigningKeysChanged),this.context.client.on(o.MatrixEventEvent.Decrypted,this.onEventDecrypted)),this.context.roomViewStore.on(Br.H,this.onRoomViewStoreUpdate),this.context.rightPanelStore.on(Br.H,this.onRightPanelStoreUpdate),Rv.A.on(Br.H,this.onWidgetEchoStoreUpdate),this.context.widgetStore.on(Br.H,this.onWidgetStoreUpdate),this.context.resizeNotifier.on("isResizing",this.onIsResizing),this.settingWatchers=[D.A.watchSetting("layout",null,(...[,,,e])=>this.setState({layout:e})),D.A.watchSetting("lowBandwidth",null,(...[,,,e])=>this.setState({lowBandwidth:e})),D.A.watchSetting("alwaysShowTimestamps",null,(...[,,,e])=>this.setState({alwaysShowTimestamps:e})),D.A.watchSetting("showTwelveHourTimestamps",null,(...[,,,e])=>this.setState({showTwelveHourTimestamps:e})),D.A.watchSetting(um.cd,null,(...[,,,e])=>this.setState({userTimezone:e})),D.A.watchSetting("readMarkerInViewThresholdMs",null,(...[,,,e])=>this.setState({readMarkerInViewThresholdMs:e})),D.A.watchSetting("readMarkerOutOfViewThresholdMs",null,(...[,,,e])=>this.setState({readMarkerOutOfViewThresholdMs:e})),D.A.watchSetting("showHiddenEventsInTimeline",null,(...[,,,e])=>this.setState({showHiddenEvents:e})),D.A.watchSetting("urlPreviewsEnabled",null,this.onUrlPreviewsEnabledChange),D.A.watchSetting("urlPreviewsEnabled_e2ee",null,this.onUrlPreviewsEnabledChange),D.A.watchSetting("feature_dynamic_room_predecessors",null,(...[,,,e])=>this.setState({msc3946ProcessDynamicPredecessor:e}))],this.onRoomViewStoreUpdate(!0);const e=this.getCallForRoom(),t=null==e?void 0:e.state;this.setState({callState:t}),this.context.legacyCallHandler.on(Rt.uv.CallState,this.onCallState),window.addEventListener("beforeunload",this.onPageUnload)}shouldComponentUpdate(e,t){const n=(0,wn.No)(this.props,e),i=this.state,{upgradeRecommendation:s}=i,o=(0,g.A)(i,oE),{upgradeRecommendation:r}=t,a=(0,g.A)(t,rE),l=(null==r?void 0:r.needsUpgrade)!==(null==s?void 0:s.needsUpgrade)||(0,wn.No)(o,a);return n||l}componentDidUpdate(){this.messagePanel&&void 0===this.state.atEndOfLiveTimeline&&this.setState({atEndOfLiveTimeline:this.messagePanel.isAtEndOfLiveTimeline()})}componentWillUnmount(){var e,t;(this.unmounted=!0,this.context.legacyCallHandler.removeListener(Rt.uv.CallState,this.onCallState),this.state.roomId&&xv.setScrollState(this.state.roomId,this.getScrollState()),this.state.shouldPeek)&&(null===(e=this.context.client)||void 0===e||e.stopPeeking());this.stopAllPermalinkCreators(),S.A.unregister(this.dispatcherRef),this.context.client&&(this.context.client.removeListener(o.ClientEvent.Room,this.onRoom),this.context.client.removeListener(o.RoomEvent.Timeline,this.onRoomTimeline),this.context.client.removeListener(o.RoomEvent.TimelineReset,this.onRoomTimelineReset),this.context.client.removeListener(o.RoomEvent.Name,this.onRoomName),this.context.client.removeListener(o.RoomStateEvent.Events,this.onRoomStateEvents),this.context.client.removeListener(o.RoomEvent.MyMembership,this.onMyMembership),this.context.client.removeListener(o.RoomStateEvent.Update,this.onRoomStateUpdate),this.context.client.removeListener(V.cr.KeyBackupStatus,this.onKeyBackupStatus),this.context.client.removeListener(V.cr.UserTrustStatusChanged,this.onUserVerificationChanged),this.context.client.removeListener(V.cr.KeysChanged,this.onCrossSigningKeysChanged),this.context.client.removeListener(o.MatrixEventEvent.Decrypted,this.onEventDecrypted)),window.removeEventListener("beforeunload",this.onPageUnload),this.context.roomViewStore.off(Br.H,this.onRoomViewStoreUpdate),this.context.rightPanelStore.off(Br.H,this.onRightPanelStoreUpdate),Rv.A.removeListener(Br.H,this.onWidgetEchoStoreUpdate),this.context.widgetStore.removeListener(Br.H,this.onWidgetStoreUpdate),this.context.resizeNotifier.off("isResizing",this.onIsResizing),this.state.room&&this.context.widgetLayoutStore.off(rp.aK.emissionForRoom(this.state.room),this.onWidgetLayoutChange),this.context.legacyCallHandler.off(Rt.uv.CallState,this.onCallState),this.updateRoomMembers.cancel();for(const e of this.settingWatchers)D.A.unwatchSetting(e);this.viewsLocalRoom&&this.state.room&&(null===(t=this.context.client)||void 0===t||t.store.removeRoom(this.state.room.roomId))}onLocalRoomEvent(e){this.context.client&&this.state.room&&e===this.state.room.roomId&&(0,Tf.Cp)(this.context.client,this.state.room)}getRoomTombstone(e=this.state.room){var t;return null!==(t=null==e?void 0:e.currentState.getStateEvents(o.EventType.RoomTombstone,""))&&void 0!==t?t:void 0}async getIsRoomEncrypted(e=this.state.roomId){var t,n;if(!e)return!1;const i=null===(t=this.context.client)||void 0===t?void 0:t.getRoom(e),s=null===(n=this.context.client)||void 0===n?void 0:n.getCrypto();return!(!i||!s)&&(0,Dm.Y)(i,s)}async calculateRecommendedVersion(e){const t=await e.getRecommendedVersion();this.unmounted||this.setState({upgradeRecommendation:t})}async loadMembersIfJoined(e){var t;if(null!==(t=this.context.client)&&void 0!==t&&t.hasLazyLoadMembersEnabled()&&e&&e.getMyMembership()===X.O.Join)try{await e.loadMembersIfNeeded(),this.unmounted||this.setState({membersLoaded:!0})}catch(t){const n=`Fetching room members for ${e.roomId} failed. Room members will appear incomplete.`;s.vF.error(n),s.vF.error(t)}}calculatePeekRules(e){const t=e.currentState.getStateEvents(o.EventType.RoomHistoryVisibility,"");this.setState({canPeek:(null==t?void 0:t.getContent().history_visibility)===o.HistoryVisibility.WorldReadable})}updatePreviewUrlVisibility(e){this.setState(({isRoomEncrypted:t})=>({showUrlPreview:this.getPreviewUrlVisibility(e,t)}))}getPreviewUrlVisibility({roomId:e},t){const n=t?"urlPreviewsEnabled_e2ee":"urlPreviewsEnabled";return D.A.getValue(n,e)}async updateE2EStatus(e){if(!this.context.client||!this.state.isRoomEncrypted)return;const t=await this.cacheAndGetE2EStatus(e,this.context.client);this.unmounted||this.setState({e2eStatus:t})}async cacheAndGetE2EStatus(e,t){let n=hE.e2eStatusCache.get(e.roomId);return n&&this.setState({e2eStatus:n}),n=await(0,km.G)(t,e),hE.e2eStatusCache.set(e.roomId,n),n}async updateRoomEncrypted(e=this.state.room){if(!e||!this.context.client)return;const t=await this.getIsRoomEncrypted(e.roomId),n=t?await this.cacheAndGetE2EStatus(e,this.context.client):null;this.setState(lE({isRoomEncrypted:t,showUrlPreview:this.getPreviewUrlVisibility(e,t)},n&&{e2eStatus:n}))}updatePermissions(e){if(e&&this.context.client){const t=this.context.client.getSafeUserId(),n=e.getMyMembership()===X.O.Join&&e.currentState.maySendEvent(o.EventType.Reaction,t),i=e.maySendMessage(),s=e.currentState.maySendEvent(o.EventType.RoomRedaction,t);this.setState({canReact:n,canSendMessages:i,canSelfRedact:s})}}checkDesktopNotifications(){if(!this.state.room)return;this.state.room.getJoinedMemberCount()+this.state.room.getInvitedMemberCount()>1&&y.default.shouldShowPrompt()&&(0,nf.P)(!0)}updateDMState(){const e=this.state.room;if((null==e?void 0:e.getMyMembership())!=X.O.Join)return;const t=null==e?void 0:e.getDMInviter();t&&Ur.FZ(e.client,e.roomId,t)}injectSticker(e,t,n,i){const s=this.getRoomId();this.context.client&&s&&(this.context.client.isGuest()?S.A.dispatch({action:"require_registration"}):hm.Ay.sharedInstance().sendStickerContentToRoom(e,s,i,t,n,this.context.client).then(void 0,e=>{e.name}))}getInviterFromRoom(e){var t;const n=null===(t=this.context.client)||void 0===t?void 0:t.getSafeUserId();if(!n)return;const i=e.getMember(n),s=null==i?void 0:i.events.member,o=null==s?void 0:s.getSender();return(null==s?void 0:s.getContent().membership)===X.O.Invite?o:void 0}getScrollState(){const e=this.messagePanel;if(!e)return null;if(this.state.atEndOfLiveTimeline)return null;const t=e.getScrollState();return!t||t.stuckAtBottom?null:{focussedEvent:t.trackedScrollToken,pixelOffset:t.pixelOffset}}getCallForRoom(){return this.state.room?this.context.legacyCallHandler.getCallForRoom(this.state.room.roomId):null}getOldRoom(){var e,t;const{roomId:n}=(null===(e=this.state.room)||void 0===e?void 0:e.findPredecessor(this.state.msc3946ProcessDynamicPredecessor))||{};return(null===(t=this.context.client)||void 0===t?void 0:t.getRoom(n))||null}getHiddenHighlightCount(){const e=this.getOldRoom();return e?e.getUnreadNotificationCount(o.NotificationCountType.Highlight):0}get messagePanelClassNames(){return Lt()("mx_RoomView_messagePanel",{mx_IRCLayout:this.state.layout===Bt.P.IRC})}get viewsLocalRoom(){return(0,os.F)(this.state.room)}get permalinkCreator(){return this.getPermalinkCreatorForRoom()}renderLocalRoomCreateLoader(e){var t;if(!this.state.room||null===(t=this.context)||void 0===t||!t.client)return null;const n=this.state.room.getDefaultRoomName(this.context.client.getSafeUserId());return i.createElement(Ji.yw,this.state,i.createElement(uE,{localRoom:e,names:n,mainSplitContentType:this.state.mainSplitContentType}))}renderLocalRoomView(e){return i.createElement(Ji.yw,this.state,i.createElement(mE,{e2eStatus:this.state.e2eStatus,localRoom:e,resizeNotifier:this.context.resizeNotifier,permalinkCreator:this.permalinkCreator,roomView:this.roomView,onFileDrop:this.onFileDrop,mainSplitContentType:this.state.mainSplitContentType}))}renderWaitingForThirdPartyRoomView(e){return i.createElement(Ji.yw,this.state,i.createElement(Yf,{resizeNotifier:this.context.resizeNotifier,roomView:this.roomView,inviteEvent:e}))}render(){var e,t,n;if(!this.context.client)return null;const{isRoomEncrypted:s}=this.state,r=null===s;if(this.state.room instanceof Iu.Np)return this.state.room.state===Iu.cd.CREATING?this.renderLocalRoomCreateLoader(this.state.room):this.renderLocalRoomView(this.state.room);if(this.state.room){const{shouldEncrypt:e,inviteEvent:t}=Tu(this.state.room);if(e)return this.renderWaitingForThirdPartyRoomView(t)}if(!this.state.room){const e=!this.state.matrixClientIsReady||this.state.roomLoading||this.state.peekLoading;if(e){const t=!this.state.matrixClientIsReady||!this.state.roomId||this.state.peekLoading;return i.createElement("div",{className:"mx_RoomView"},i.createElement(du.A,null,i.createElement(Lv,{canPreview:!1,previewLoading:t&&!this.state.roomLoadError,error:this.state.roomLoadError,loading:e,joining:this.state.joining,oobData:this.props.oobData,roomId:this.state.roomId})))}{var a,c;let e;this.props.oobData&&(e=this.props.oobData.inviterName);const t=null===(a=this.props.threepidInvite)||void 0===a?void 0:a.toEmail,n=this.state.roomAlias;return i.createElement("div",{className:"mx_RoomView"},i.createElement(du.A,null,i.createElement(Lv,{onJoinClick:this.onJoinButtonClicked,onForgetClick:this.onForgetClick,onDeclineClick:this.onRejectThreepidInviteButtonClicked,canPreview:!1,error:this.state.roomLoadError,roomAlias:n,joining:this.state.joining,inviterName:e,invitedEmail:t,oobData:this.props.oobData,signUrl:null===(c=this.props.threepidInvite)||void 0===c?void 0:c.signUrl,roomId:this.state.roomId,promptAskToJoin:this.state.promptAskToJoin,onSubmitAskToJoin:this.onSubmitAskToJoin,onCancelAskToJoin:this.onCancelAskToJoin})))}}const d=this.state.room.getMyMembership();if((0,Om.j)(this.state.room)&&d!==X.O.Join)return i.createElement(du.A,null,i.createElement("div",{className:"mx_MainSplit"},i.createElement(zv,{room:this.state.room,onJoinButtonClicked:this.onJoinButtonClicked,onRejectButtonClicked:this.onDeclineButtonClicked})),";");if(d===X.O.Invite&&!this.state.room.isSpaceRoom()){if(this.state.joining||this.state.rejecting)return i.createElement(du.A,null,i.createElement(Lv,{canPreview:!1,error:this.state.roomLoadError,joining:this.state.joining,rejecting:this.state.rejecting,roomId:this.state.roomId}));{const e=this.context.client.getSafeUserId(),t=this.state.room.getMember(e),n=t?t.events.member:null;let s=(0,l._t)("room|inviter_unknown");var m,u;if(n)s=null!==(m=null===(u=n.sender)||void 0===u?void 0:u.name)&&void 0!==m?m:n.getSender();return i.createElement("div",{className:"mx_RoomView"},i.createElement(du.A,null,i.createElement(Lv,{onJoinClick:this.onJoinButtonClicked,onForgetClick:this.onForgetClick,onDeclineClick:this.onDeclineButtonClicked,onDeclineAndBlockClick:this.onDeclineAndBlockButtonClicked,promptRejectionOptions:!0,inviterName:s,canPreview:!1,joining:this.state.joining,room:this.state.room,roomId:this.state.roomId})))}}if(this.state.canAskToJoin&&[X.O.Knock,X.O.Leave].includes(d))return i.createElement("div",{className:"mx_RoomView"},i.createElement(du.A,null,i.createElement(Lv,{onJoinClick:this.onJoinButtonClicked,room:this.state.room,canAskToJoinAndMembershipIsLeave:d===X.O.Leave,promptAskToJoin:this.state.promptAskToJoin,knocked:d===X.O.Knock,onSubmitAskToJoin:this.onSubmitAskToJoin,onCancelAskToJoin:this.onCancelAskToJoin,onForgetClick:this.onForgetClick})));let h,p=null;{const e=this.getCallForRoom();e&&"ended"!==this.state.callState&&"ringing"!==this.state.callState&&(p=e)}let g=!0;hm.Ay.sharedInstance().getCurrentUploads().length>0?h=i.createElement(bg,{room:this.state.room}):this.state.search||(g=this.state.statusBarVisible,h=i.createElement(kf.A,{room:this.state.room,isPeeking:d!==X.O.Join,onInviteClick:this.onInviteClick,onVisible:this.onStatusBarVisible,onHidden:this.onStatusBarHidden}));const v=Lt()("mx_RoomView_statusArea",{mx_RoomView_statusArea_expanded:g}),_=h&&i.createElement("div",{role:"region",className:v,"aria-label":(0,l._t)("a11y|room_status_bar")},i.createElement("div",{className:"mx_RoomView_statusAreaBox"},i.createElement("div",{className:"mx_RoomView_statusAreaBox_line"}),h)),f=this.state.upgradeRecommendation,E=f&&f.needsUpgrade&&this.state.room.userMayUpgradeRoom(this.context.client.getSafeUserId()),y=this.getHiddenHighlightCount();let b,w;if(this.state.timelineRenderingType===gn.Ae.Search)r||(b=i.createElement(Xf,{searchInfo:this.state.search,onCancelClick:this.onCancelSearchClick,onSearchScopeChange:this.onSearchScopeChange,isRoomEncrypted:s}));else if(E)b=i.createElement(Gv,{room:this.state.room});else if(d!==X.O.Join){var S,A;let e;this.props.oobData&&(e=this.props.oobData.inviterName);const t=null===(S=this.props.threepidInvite)||void 0===S?void 0:S.toEmail;if(w=i.createElement(Lv,{onJoinClick:this.onJoinButtonClicked,onForgetClick:this.onForgetClick,onDeclineClick:this.onRejectThreepidInviteButtonClicked,promptRejectionOptions:!0,joining:this.state.joining,inviterName:e,invitedEmail:t,oobData:this.props.oobData,canPreview:this.state.canPeek,room:this.state.room,roomId:this.state.roomId}),!(this.state.canPeek||null!==(A=this.state.room)&&void 0!==A&&A.isSpaceRoom()))return i.createElement("div",{className:"mx_RoomView"},w)}else y>0&&(b=i.createElement(le.A,{element:"div",className:"mx_RoomView_auxPanel_hiddenHighlights",onClick:this.onHiddenHighlightsClick},(0,l._t)("room|unread_notifications_predecessor",{count:y})));if(null!==(e=this.state.room)&&void 0!==e&&e.isSpaceRoom()&&!this.props.forceTimeline)return i.createElement(Rf,{space:this.state.room,justCreatedOpts:this.props.justCreatedOpts,resizeNotifier:this.context.resizeNotifier,permalinkCreator:this.permalinkCreator,onJoinButtonClicked:this.onJoinButtonClicked,onRejectButtonClicked:this.props.threepidInvite?this.onRejectThreepidInviteButtonClicked:this.onDeclineButtonClicked});const C=i.createElement(T_,{room:this.state.room,userId:this.context.client.getSafeUserId(),showApps:this.state.showApps},b),x=i.createElement(Qf,{room:this.state.room,permalinkCreator:this.permalinkCreator});let R;let k;!r&&d===X.O.Join&&!this.state.search&&(R=i.createElement(_g,{room:this.state.room,e2eStatus:this.state.e2eStatus,resizeNotifier:this.context.resizeNotifier,replyToEvent:this.state.replyToEvent,permalinkCreator:this.permalinkCreator}));let I,T,P,N,M=!1;this.state.search&&(k=i.createElement(qf,{key:this.state.search.searchId,ref:this.searchResultsPanel,term:this.state.search.term,scope:this.state.search.scope,promise:this.state.search.promise,abortController:this.state.search.abortController,inProgress:!!this.state.search.inProgress,className:this.messagePanelClassNames,onUpdate:this.onSearchUpdate}),M=!0),this.state.isInitialEventHighlighted&&(I=this.state.initialEventId),r||(T=i.createElement(Mp,{ref:this.gatherTimelinePanelRef,timelineSet:this.state.room.getUnfilteredTimelineSet(),showReadReceipts:this.state.showReadReceipts,manageReadReceipts:!this.state.isPeeking,sendReadReceiptOnLoad:!this.state.wasContextSwitch,manageReadMarkers:!this.state.isPeeking,hidden:M,highlightedEventId:I,eventId:this.state.initialEventId,eventScrollIntoView:this.state.initialEventScrollIntoView,eventPixelOffset:this.state.initialEventPixelOffset,onScroll:this.onMessageListScroll,onEventScrolledIntoView:this.resetJumpToEvent,onReadMarkerUpdated:this.updateTopUnreadMessagesBar,showUrlPreview:this.state.showUrlPreview,className:this.messagePanelClassNames,membersLoaded:this.state.membersLoaded,permalinkCreator:this.permalinkCreator,showReactions:!0,layout:this.state.layout,editState:this.state.editState})),this.state.showTopUnreadMessagesBar&&!this.state.search&&(P=i.createElement(If,{onScrollUpClick:this.jumpToReadMarker,onCloseClick:this.forgetReadMarker})),!1!==this.state.atEndOfLiveTimeline||this.state.search||(N=i.createElement(Xg,{highlight:this.state.room.getUnreadNotificationCount(o.NotificationCountType.Highlight)>0,numUnreadMessages:this.state.numUnreadMessages,onScrollToBottomClick:this.jumpToLiveTimeline}));const O=!r&&this.state.room&&this.state.showRightPanel?i.createElement(Av,{room:this.state.room,resizeNotifier:this.context.resizeNotifier,permalinkCreator:this.permalinkCreator,e2eStatus:this.state.e2eStatus,onSearchChange:this.onSearchChange,onSearchCancel:this.onCancelSearchClick,searchTerm:null!==(t=null===(n=this.state.search)||void 0===n?void 0:n.term)&&void 0!==t?t:""}):void 0,F=Lt()("mx_RoomView_timeline",{mx_RoomView_timeline_rr_enabled:this.state.showReadReceipts});let{mainSplitContentType:L}=this.state;this.state.search&&(L=gn.DZ.Timeline);const U=Lt()("mx_RoomView",{mx_RoomView_inCall:Boolean(p),mx_RoomView_immersive:L!==gn.DZ.Timeline}),V=D.A.getValue("showChatEffects");let B,j;switch(L){case gn.DZ.Timeline:j="mx_MainSplit_timeline",B=i.createElement(i.Fragment,null,i.createElement(Dp,{sensor:this.roomViewBody,onMeasurement:this.onMeasurement}),C,x,i.createElement("main",{className:F},i.createElement(Ag,{parent:this.roomView.current,onFileDrop:this.onFileDrop,room:this.state.room}),P,N,T,k),_,w,R);break;case gn.DZ.MaximisedWidget:j="mx_MainSplit_maximisedWidget",B=i.createElement(i.Fragment,null,i.createElement(o_,{room:this.state.room,userId:this.context.client.getSafeUserId(),showApps:!0,role:"main"}),w);break;case gn.DZ.Call:j="mx_MainSplit_call",B=i.createElement(i.Fragment,null,i.createElement(tf,{room:this.state.room,resizing:this.state.resizing,role:"main",onClose:this.onCallClose}),w)}const W=Lt()("mx_RoomView_body",j);let H,z,K="other_room";return this.state.mainSplitContentType!==gn.DZ.Timeline&&(H="wide",z=420,K=this.state.mainSplitContentType===gn.DZ.Call?"video_room":"maximised_widget"),i.createElement(Ji.yw,this.state,i.createElement("div",{className:U,ref:this.roomView,onKeyDown:this.onReactKeyDown},V&&this.roomView.current&&i.createElement(Q_,{roomWidth:this.roomView.current.offsetWidth}),i.createElement(du.A,null,i.createElement(gm,{panel:O,sizeKey:H,defaultSize:z,analyticsRoomType:K},i.createElement("div",{className:W,ref:this.roomViewBody,"data-layout":this.state.layout},i.createElement(X_,{room:this.state.room,additionalButtons:this.state.viewRoomOpts.buttons}),B)))))}}(0,w.A)(hE,"e2eStatusCache",new Map),(0,w.A)(hE,"contextType",Do.A);class pE extends Error{constructor(...e){super(...e),(0,w.A)(this,"name","CannotDetermineUserError")}}class gE extends i.Component{constructor(e){super(e),(0,w.A)(this,"onToastStoreUpdate",()=>{this.setState({toasts:F.A.sharedInstance().getToasts(),countSeen:F.A.sharedInstance().getCountSeen()})}),this.state={toasts:F.A.sharedInstance().getToasts(),countSeen:F.A.sharedInstance().getCountSeen()}}componentDidMount(){F.A.sharedInstance().on("update",this.onToastStoreUpdate),this.onToastStoreUpdate()}componentWillUnmount(){F.A.sharedInstance().removeListener("update",this.onToastStoreUpdate)}render(){const e=this.state.toasts.length,t=e>1;let n,s;if(0!==e){const o=this.state.toasts[0],{title:r,icon:a,key:l,component:c,className:d,bodyClassName:m,props:u}=o,h=Lt()("mx_Toast_body",m),p=Lt()("mx_Toast_toast",d,{mx_Toast_hasIcon:a,[`mx_Toast_icon_${a}`]:a}),g=Object.assign({},u,{key:l,toastKey:l}),v=i.createElement(c,g);let _,f;(r&&t||this.state.countSeen>0)&&(_=` (${this.state.countSeen+1}/${this.state.countSeen+e})`),r&&(f=i.createElement("div",{className:"mx_Toast_title"},i.createElement(Al.E,{size:"lg",weight:"semibold",as:"h2"},r),i.createElement("span",{className:"mx_Toast_title_countIndicator"},_))),n=i.createElement("div",{className:p},f,i.createElement("div",{className:h},v)),s=Lt()("mx_ToastContainer",{mx_ToastContainer_stacked:t})}return n?i.createElement("div",{className:s,role:"alert"},n):null}}class vE extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"onAction",e=>{"client_started"===e.action&&this.forceUpdate()}),this.state={page:""}}translate(e){return Fr()((0,l._t)(e))}async fetchEmbed(){let e;try{e=await fetch(this.props.url,{method:"GET"})}catch(e){if(this.unmounted)return;return s.vF.warn(`Error loading page: ${e}`),void this.setState({page:(0,l._t)("cant_load_page")})}if(this.unmounted)return;if(!e.ok)return s.vF.warn(`Error loading page: ${e.status}`),void this.setState({page:(0,l._t)("cant_load_page")});let t=(await e.text()).replace(/_t\((?:['"]|(?:&#(?:34|27);))([\s\S]*?)(?:['"]|(?:&#(?:34|27);))\)/gm,(e,t)=>this.translate(t));this.props.replaceMap&&Object.keys(this.props.replaceMap).forEach(e=>{t=t.split(e).join(this.props.replaceMap[e])}),this.setState({page:t})}componentDidMount(){this.unmounted=!1,this.props.url&&(this.fetchEmbed(),this.dispatcherRef=S.A.register(this.onAction))}componentWillUnmount(){this.unmounted=!0,S.A.unregister(this.dispatcherRef)}render(){const e=this.context||v.J.get(),t=!e||e.isGuest(),n=this.props.className,s=Lt()(n,{[`${n}_guest`]:t,[`${n}_loggedIn`]:!!e}),o=i.createElement("div",{className:`${n}_body`,dangerouslySetInnerHTML:{__html:this.state.page}});return this.props.scrollbar?i.createElement(es.A,{className:s},o):i.createElement("div",{className:s},o)}}(0,w.A)(vE,"contextType",de.Ay);const _E=e=>{ri.A.trackInteraction("WebHomeCreateChatButton",e),S.A.dispatch({action:H.r.CreateChat})},fE=e=>{ri.A.trackInteraction("WebHomeExploreRoomsButton",e),S.A.fire(H.r.ViewRoomDirectory)},EE=e=>{ri.A.trackInteraction("WebHomeCreateRoomButton",e),S.A.dispatch({action:H.r.CreateRoom})},yE=e=>{var t;return{displayName:gl.V.instance.displayName||e,avatarUrl:null!==(t=gl.V.instance.getHttpAvatarUrl(parseInt(xu,10)))&&void 0!==t?t:void 0}},bE=()=>{const e=(0,i.useContext)(de.Ay),t=e.getUserId(),[n,s]=(0,i.useState)(yE(t));return(0,Fi.ml)(gl.V.instance,Br.H,()=>{s(yE(t))}),i.createElement("div",null,i.createElement(Ru,{hasAvatar:!!n.avatarUrl,hasAvatarLabel:(0,l._t)("onboarding|has_avatar_label"),noAvatarLabel:(0,l._t)("onboarding|no_avatar_label"),setAvatarUrl:t=>e.setAvatarUrl(t),isUserAvatar:!0,onClick:e=>ri.A.trackInteraction("WebHomeMiniAvatarUploadButton",e)},i.createElement(vl.A,{idName:t,name:n.displayName,url:n.avatarUrl,size:xu})),i.createElement("h1",null,(0,l._3)("onboarding|welcome_user",{name:n.displayName})),i.createElement("h2",null,(0,l._3)("onboarding|welcome_detail")))},wE=({justRegistered:e=!1})=>{const t=(0,de.nH)(),n=c.Ay.get(),s=pl(n,t);if(s)return i.createElement(vE,{className:"mx_HomePage",url:s,scrollbar:!0});let o;if(e||!gl.V.instance.getHttpAvatarUrl(parseInt(xu,10)))o=i.createElement(bE,null);else{var r;const e=c.Ay.getObject("branding"),t=null!==(r=null==e?void 0:e.get("auth_header_logo_url"))&&void 0!==r?r:"themes/element/img/logos/element-logo.svg";o=i.createElement(i.Fragment,null,i.createElement("img",{src:t,alt:n.brand}),i.createElement("h1",null,(0,l._3)("onboarding|intro_welcome",{appName:n.brand})),i.createElement("h2",null,(0,l._3)("onboarding|intro_byline")))}return i.createElement(es.A,{className:"mx_HomePage mx_HomePage_default",element:"main"},i.createElement("div",{className:"mx_HomePage_default_wrapper"},o,i.createElement("div",{className:"mx_HomePage_default_buttons"},i.createElement(le.A,{onClick:_E,className:"mx_HomePage_button_sendDm"},(0,l._3)("onboarding|send_dm")),i.createElement(le.A,{onClick:fE,className:"mx_HomePage_button_explore"},(0,l._3)("onboarding|explore_rooms")),i.createElement(le.A,{onClick:EE,className:"mx_HomePage_button_createGroup"},(0,l._3)("onboarding|create_room")))))};class SE extends i.Component{constructor(e){super(e),this.state={loading:!0}}componentDidMount(){this.props.userId&&this.loadProfileInfo()}componentDidUpdate(e){e.userId!==this.props.userId&&this.props.userId&&this.loadProfileInfo()}async loadProfileInfo(){let e;this.setState({loading:!0});try{e=await this.context.getProfileInfo(this.props.userId)}catch(e){return R.Ay.createDialog(It.A,{title:(0,l._t)("error_dialog|error_loading_user_profile"),description:e instanceof Error?e.message:(0,l._t)("invite|failed_generic")}),void this.setState({loading:!1})}const t=new o.MatrixEvent({type:"m.room.member",content:e}),n=new o.RoomMember("",this.props.userId);n.setMembershipEvent(t),this.setState({member:n,loading:!1})}render(){if(this.state.loading)return i.createElement(ce.A,null);if(this.state.member){const e=i.createElement(Av,{overwriteCard:{phase:kl.n.MemberInfo,state:{member:this.state.member}},resizeNotifier:this.props.resizeNotifier});return i.createElement(gm,{panel:e,defaultSize:420,analyticsRoomType:"user_profile"},i.createElement(wE,null))}return i.createElement("div",null)}}(0,w.A)(SE,"contextType",de.Ay);const AE=({backgroundImage:e,blurMultiplier:t})=>{if(!e)return null;const n={};if(t){const e=getComputedStyle(document.documentElement).getPropertyValue("--lp-background-blur").replace("px",""),i=parseInt(e,10);isNaN(i)||(n.filter=`blur(${i*t}px)`)}return i.createElement("div",{className:"mx_BackdropPanel"},i.createElement("img",{role:"presentation",alt:"",style:n,className:"mx_BackdropPanel--image",src:e}))};var CE=n("./src/stores/OwnBeaconStore.ts"),xE=n("./res/img/location/live-location.svg");const RE=({isMinimized:e})=>{const t=(0,Fi.dF)(CE.g.instance,CE.q.MonitoringLivePosition,()=>CE.g.instance.isMonitoringLiveLocation),n=(0,Fi.dF)(CE.g.instance,CE.q.LocationPublishError,()=>CE.g.instance.getLiveBeaconIdsWithLocationPublishError()),s=(0,Fi.dF)(CE.g.instance,CE.q.BeaconUpdateError,()=>CE.g.instance.getLiveBeaconIds().filter(e=>CE.g.instance.beaconUpdateErrors.has(e))),o=(0,Fi.dF)(CE.g.instance,CE.q.LivenessChange,()=>CE.g.instance.getLiveBeaconIds()),r=!!n.length,a=!!s.length;if(((e,t)=>{(0,i.useEffect)(()=>{const n=()=>{"visible"===document.visibilityState&&e.forEach(e=>{var n;return null===(n=t.get(e))||void 0===n?void 0:n.monitorLiveness()})};return e.length&&document.addEventListener("visibilitychange",n),()=>{document.removeEventListener("visibilitychange",n)}},[e,t])})(o,CE.g.instance.beacons),!t)return null;const c=((e,t,n)=>{var i,s;const o=null!==(i=null!==(s=null==t?void 0:t[0])&&void 0!==s?s:null==n?void 0:n[0])&&void 0!==i?i:null==e?void 0:e[0];if(!o)return;return CE.g.instance.getBeaconById(o)})(o,s,n),d=c?e=>{S.A.dispatch({action:H.r.ViewRoom,room_id:c.roomId,metricsTrigger:void 0,event_id:c.beaconInfoId,scroll_into_view:!0,highlighted:!0})}:null,m=((e,t)=>e?(0,l._t)("location_sharing|error_stopping_live_location"):t?(0,l._t)("location_sharing|error_sharing_live_location"):(0,l._t)("location_sharing|live_location_active"))(a,r);return i.createElement(le.A,{className:Lt()("mx_LeftPanelLiveShareWarning",{mx_LeftPanelLiveShareWarning__minimized:e,mx_LeftPanelLiveShareWarning__error:r||a}),title:e?m:void 0,onClick:d},e?i.createElement(xE.I,{height:10}):m)};function kE(e,t,n){return(1-(n=(0,Kt.clamp)(n,0,1)))*e+n*t}const IE=58,TE=58,PE=76,NE=8;class ME extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"callViewWrapper",(0,i.createRef)()),(0,w.A)(this,"initX",0),(0,w.A)(this,"initY",0),(0,w.A)(this,"desiredTranslationX",ba.A.instance.windowWidth-NE-336),(0,w.A)(this,"desiredTranslationY",ba.A.instance.windowHeight-TE-232),(0,w.A)(this,"translationX",this.desiredTranslationX),(0,w.A)(this,"translationY",this.desiredTranslationY),(0,w.A)(this,"mouseHeld",!1),(0,w.A)(this,"scheduledUpdate",new qp.L(()=>this.animationCallback(),()=>requestAnimationFrame(()=>this.scheduledUpdate.trigger()))),(0,w.A)(this,"startingPositionX",0),(0,w.A)(this,"startingPositionY",0),(0,w.A)(this,"_moving",!1),(0,w.A)(this,"animationCallback",()=>{var e,t;if(!this.moving&&Math.abs(this.translationX-this.desiredTranslationX)<=1&&Math.abs(this.translationY-this.desiredTranslationY)<=1)this.translationX=this.desiredTranslationX,this.translationY=this.desiredTranslationY,this.setStyle();else{const e=this.moving?.2:.1;this.translationX=kE(this.translationX,this.desiredTranslationX,e),this.translationY=kE(this.translationY,this.desiredTranslationY,e),this.setStyle(),this.scheduledUpdate.mark()}null===(e=(t=this.props).onMove)||void 0===e||e.call(t)}),(0,w.A)(this,"setStyle",()=>{this.callViewWrapper.current&&(this.callViewWrapper.current.style.transform=`translateX(${this.translationX}px) translateY(${this.translationY}px)`)}),(0,w.A)(this,"onResize",()=>{this.snap(!1)}),(0,w.A)(this,"snap",(e=!1)=>{var t,n;const i=this.desiredTranslationX,s=this.desiredTranslationY,o=ba.A.instance.windowWidth-((null===(t=this.callViewWrapper.current)||void 0===t?void 0:t.clientWidth)||336),r=ba.A.instance.windowHeight-((null===(n=this.callViewWrapper.current)||void 0===n?void 0:n.clientHeight)||232);i>=o/2&&s>=r/2?(this.desiredTranslationX=o-NE,this.desiredTranslationY=r-TE):i>=o/2&&s<=r/2?(this.desiredTranslationX=o-NE,this.desiredTranslationY=IE):i<=o/2&&s>=r/2?(this.desiredTranslationX=PE,this.desiredTranslationY=r-TE):(this.desiredTranslationX=PE,this.desiredTranslationY=IE),e||(this.translationX=this.desiredTranslationX,this.translationY=this.desiredTranslationY),this.scheduledUpdate.mark()}),(0,w.A)(this,"onStartMoving",e=>{e.preventDefault(),e.stopPropagation(),this.mouseHeld=!0,this.startingPositionX=e.clientX,this.startingPositionY=e.clientY}),(0,w.A)(this,"onMoving",e=>{this.mouseHeld&&(Math.abs(this.startingPositionX-e.clientX)<5&&Math.abs(this.startingPositionY-e.clientY)<5||(e.preventDefault(),e.stopPropagation(),this.moving||(this.moving=!0,this.initX=e.pageX-this.desiredTranslationX,this.initY=e.pageY-this.desiredTranslationY,this.scheduledUpdate.mark()),this.setTranslation(e.pageX-this.initX,e.pageY-this.initY)))}),(0,w.A)(this,"onEndMoving",e=>{this.mouseHeld&&(e.preventDefault(),e.stopPropagation(),this.mouseHeld=!1,setTimeout(()=>this.moving=!1),this.snap(!0))}),(0,w.A)(this,"onClickCapture",e=>{this.moving&&(e.preventDefault(),e.stopPropagation())})}get moving(){return this._moving}set moving(e){this._moving=e}componentDidMount(){document.addEventListener("mousemove",this.onMoving),document.addEventListener("mouseup",this.onEndMoving),ba.A.instance.on(ba.x.Resize,this.onResize),this.snap()}componentWillUnmount(){document.removeEventListener("mousemove",this.onMoving),document.removeEventListener("mouseup",this.onEndMoving),ba.A.instance.off(ba.x.Resize,this.onResize)}componentDidUpdate(e){e.children!==this.props.children&&this.snap(!0)}setTranslation(e,t){var n,i;const s=(null===(n=this.callViewWrapper.current)||void 0===n?void 0:n.clientWidth)||336,o=(null===(i=this.callViewWrapper.current)||void 0===i?void 0:i.clientHeight)||232;e+s>=ba.A.instance.windowWidth?this.desiredTranslationX=ba.A.instance.windowWidth-s:this.desiredTranslationX=e<=0?0:e,t+o>=ba.A.instance.windowHeight?this.desiredTranslationY=ba.A.instance.windowHeight-o:this.desiredTranslationY=t<=0?0:t}render(){const e={transform:`translateX(${this.translationX}px) translateY(${this.translationY}px)`},t=this.props.children.map(e=>e({onStartMoving:this.onStartMoving,onResize:this.onResize}));return i.createElement("aside",{className:this.props.className,style:e,ref:this.callViewWrapper,onClickCapture:this.onClickCapture,onDoubleClick:this.props.onDoubleClick},t)}}var DE,OE,FE=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/arrow-left.js");class LE extends i.Component{constructor(e,t){super(e,t),(0,w.A)(this,"room",void 0),this.room=t.getRoom(this.props.persistentRoomId)}render(){const e=ep.Ay.instance.get(this.props.persistentWidgetId,this.props.persistentRoomId);return e?i.createElement(Sp,{key:e.id,app:e,fullWidth:!0,room:this.room,userId:this.context.getSafeUserId(),creatorUserId:e.creatorUserId,widgetPageTitle:ph.A.getWidgetDataTitle(e),waitForIframeLoad:e.waitForIframeLoad,miniMode:!0,showMenubar:!1,pointerEvents:this.props.pointerEvents,movePersistedElement:this.props.movePersistedElement,overlay:this.props.children}):null}}function UE(){return UE=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},UE.apply(null,arguments)}(0,w.A)(LE,"contextType",de.Ay);var VE=function(e,t){return i.createElement("svg",UE({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",role:"presentation","aria-hidden":!0,ref:t},e),DE||(DE=i.createElement("path",{fill:"currentColor",d:"M8.027 15.961c1.141 1.232 3.888 3.365 4.637 3.803l.151.09c1.143.679 4.722 2.807 7.33.815 2.021-1.542 1.364-3.278.684-3.794-.466-.362-1.838-1.36-3.128-2.26-1.268-.883-1.974-.175-2.452.303l-.026.026-.96.961c-.246.245-.618.156-.974-.125a26 26 0 0 1-2.692-2.385l-.004-.004c-.47-.47-1.4-1.4-2.373-2.68-.28-.356-.37-.728-.125-.973l.96-.961.027-.026c.478-.478 1.186-1.184.303-2.452-.9-1.29-1.898-2.662-2.26-3.128-.516-.68-2.252-1.337-3.794.684-1.992 2.608.136 6.187.815 7.33l.09.151c.438.75 2.56 3.484 3.791 4.625"})),OE||(OE=i.createElement("path",{fill:"currentColor",d:"M20.697 3.078a.64.64 0 0 0 0-.893.615.615 0 0 0-.88 0L17 5.045l-2.817-2.86a.615.615 0 0 0-.88 0 .64.64 0 0 0 0 .893l2.817 2.86-2.938 2.984a.64.64 0 0 0 0 .893.615.615 0 0 0 .88 0L17 6.832l2.938 2.983a.615.615 0 0 0 .88 0 .64.64 0 0 0 0-.893L17.88 5.939z"})))},BE=(0,i.forwardRef)(VE);const jE=({widgetId:e,room:t,viewingRoom:n,onStartMoving:s,movePersistedElement:r})=>{const a=(0,i.useMemo)(()=>ep.Ay.instance.getApps(t.roomId).find(t=>t.id===e),[t,e]),c=(0,Fi.DY)(t,o.RoomEvent.Name,(0,i.useCallback)(()=>t.name,[t])),d=(0,Zc.Jf)(e,t.roomId),m=(0,i.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),null!==d?S.A.dispatch({action:H.r.ViewRoom,room_id:t.roomId,view_call:!0,metricsTrigger:"WebFloatingCallWindow"}):n?rp.aK.instance.moveToContainer(t,a,rp.mc.Center):S.A.dispatch({action:H.r.ViewRoom,room_id:t.roomId,metricsTrigger:"WebFloatingCallWindow"})},[t,d,a,n]),u=(0,i.useCallback)(e=>{var t;(e.preventDefault(),e.stopPropagation(),null!==d)?d.disconnect().catch(e=>console.error("Failed to leave call",e)):null===(t=zh.c.instance.getMessagingForUid(ph.A.getWidgetUid(a)))||void 0===t||t.transport.send(Kh.k.HangupCall,{}).catch(e=>console.error("Failed to leave Jitsi",e))},[d,a]);return i.createElement("div",{className:"mx_WidgetPip",onMouseDown:s,onClick:m},i.createElement(LE,{persistentWidgetId:e,persistentRoomId:t.roomId,pointerEvents:"none",movePersistedElement:r},i.createElement("div",{onMouseDown:s,className:"mx_WidgetPip_overlay"},i.createElement($n.A,{className:"mx_WidgetPip_header"},i.createElement(qn.k,{onClick:m,className:"mx_WidgetPip_backButton","aria-label":(0,l._t)("action|back")},i.createElement(FE.A,{className:"mx_Icon mx_Icon_16"}),c)),(null!==d||Ih.x.JITSI.matches(null==a?void 0:a.type))&&i.createElement($n.A,{className:"mx_WidgetPip_footer"},i.createElement(qn.k,{onClick:u,title:(0,l._t)("action|leave"),"aria-label":(0,l._t)("action|leave"),placement:"top"},i.createElement(BE,{className:"mx_Icon mx_Icon_24"}))))))},WE=[Ht.iP.Connected,Ht.iP.InviteSent,Ht.iP.Connecting,Ht.iP.CreateAnswer,Ht.iP.CreateOffer,Ht.iP.WaitLocalMedia];function HE(e){if(!e)return[null,[]];const t=Rt.Ay.instance.getAllActiveCallsForPip(e);let n=null,i=[];for(const e of t)WE.includes(e.state)&&(e.isRemoteOnHold()||null!==n?i.push(e):n=e);return null===n&&i.length>0&&(n=i[0],i=i.slice(1)),i.length>1&&s.vF.log("Found more than 1 secondary call! Other calls will not be shown."),[n,i]}class zE extends i.Component{constructor(e){super(e),(0,w.A)(this,"onMove",()=>{var e,t;return null===(e=(t=this.props.movePersistedElement).current)||void 0===e?void 0:e.call(t)}),(0,w.A)(this,"onRoomViewStoreUpdate",()=>{var e,t;const n=Do.M.instance.roomViewStore.getRoomId(),i=this.state.viewedRoomId;if(n===i)return;const s=null===(e=v.J.get())||void 0===e?void 0:e.getRoom(i);s&&rp.aK.instance.off(rp.aK.emissionForRoom(s),this.updateCalls);const o=null===(t=v.J.get())||void 0===t?void 0:t.getRoom(n||void 0);if(o&&rp.aK.instance.on(rp.aK.emissionForRoom(o),this.updateCalls),!n)return;const[r,a]=HE(n);this.setState({viewedRoomId:n,primaryCall:r,secondaryCall:a[0]}),this.updateShowWidgetInPip()}),(0,w.A)(this,"onWidgetPersistence",()=>{this.updateShowWidgetInPip()}),(0,w.A)(this,"onWidgetDockChanges",()=>{this.updateShowWidgetInPip()}),(0,w.A)(this,"updateCalls",()=>{if(!this.state.viewedRoomId)return;const[e,t]=HE(this.state.viewedRoomId);this.setState({primaryCall:e,secondaryCall:t[0]}),this.updateShowWidgetInPip()}),(0,w.A)(this,"onCallRemoteHold",()=>{if(!this.state.viewedRoomId)return;const[e,t]=HE(this.state.viewedRoomId);this.setState({primaryCall:e,secondaryCall:t[0]})}),(0,w.A)(this,"onDoubleClick",()=>{var e;const t=null===(e=this.state.primaryCall)||void 0===e?void 0:e.roomId;var n;(null!=t?t:this.state.persistentRoomId)&&S.A.dispatch({action:H.r.ViewRoom,room_id:null!==(n=null!=t?t:this.state.persistentRoomId)&&void 0!==n?n:void 0,metricsTrigger:"WebFloatingCallWindow"})});const t=Do.M.instance.roomViewStore.getRoomId(),[n,i]=HE(t);this.state={viewedRoomId:t||void 0,primaryCall:n||null,secondaryCall:i[0],persistentWidgetId:k.A.instance.getPersistentWidgetId(),persistentRoomId:k.A.instance.getPersistentRoomId(),showWidgetInPip:!1}}componentDidMount(){Rt.Ay.instance.addListener(Rt.uv.CallChangeRoom,this.updateCalls),Rt.Ay.instance.addListener(Rt.uv.CallState,this.updateCalls),Do.M.instance.roomViewStore.addListener(Br.H,this.onRoomViewStoreUpdate),v.J.safeGet().on(Ht.$E.RemoteHoldUnhold,this.onCallRemoteHold);const e=v.J.safeGet().getRoom(this.state.viewedRoomId);e&&rp.aK.instance.on(rp.aK.emissionForRoom(e),this.updateCalls),k.A.instance.on(k.y.Persistence,this.onWidgetPersistence),k.A.instance.on(k.y.Dock,this.onWidgetDockChanges),k.A.instance.on(k.y.Undock,this.onWidgetDockChanges)}componentWillUnmount(){Rt.Ay.instance.removeListener(Rt.uv.CallChangeRoom,this.updateCalls),Rt.Ay.instance.removeListener(Rt.uv.CallState,this.updateCalls);const e=v.J.get();null==e||e.removeListener(Ht.$E.RemoteHoldUnhold,this.onCallRemoteHold),Do.M.instance.roomViewStore.removeListener(Br.H,this.onRoomViewStoreUpdate);const t=null==e?void 0:e.getRoom(this.state.viewedRoomId);t&&rp.aK.instance.off(rp.aK.emissionForRoom(t),this.updateCalls),k.A.instance.off(k.y.Persistence,this.onWidgetPersistence),k.A.instance.off(k.y.Dock,this.onWidgetDockChanges),k.A.instance.off(k.y.Undock,this.onWidgetDockChanges)}updateShowWidgetInPip(){const e=k.A.instance.getPersistentWidgetId(),t=k.A.instance.getPersistentRoomId();let n=!1,i=!1;e&&t&&v.J.safeGet().getRoom(t)&&(i=!k.A.instance.isDocked(e,t),n=this.state.viewedRoomId!==t);const s=n||i;this.setState({showWidgetInPip:s,persistentWidgetId:e,persistentRoomId:t})}render(){const e=!0,t=[];if(this.state.primaryCall){const n=this.state.primaryCall;t.push(({onStartMoving:t,onResize:s})=>i.createElement(k_,{key:"call-view",onMouseDownOnHeader:t,call:n,secondaryCall:this.state.secondaryCall,pipMode:e,onResize:s,sidebarShown:!1}))}return this.state.showWidgetInPip&&this.state.persistentWidgetId&&t.push(({onStartMoving:e})=>{var t;return i.createElement(jE,{key:"widget-pip",widgetId:this.state.persistentWidgetId,room:v.J.safeGet().getRoom(null!==(t=this.state.persistentRoomId)&&void 0!==t?t:void 0),viewingRoom:this.state.viewedRoomId===this.state.persistentRoomId,onStartMoving:e,movePersistedElement:this.props.movePersistedElement})}),t.length?i.createElement(ME,{className:"mx_LegacyCallPreview",draggable:e,onDoubleClick:this.onDoubleClick,onMove:this.onMove},t):null}}const KE=()=>{const e=(0,i.useRef)(null);return i.createElement(zE,{movePersistedElement:e})};class GE{static encodeActions(e){const t=e.notify,n=e.sound,i=e.highlight;if(t){const e=[o.PushRuleActionName.Notify];return n&&e.push({set_tweak:"sound",value:n}),i?e.push({set_tweak:"highlight"}):e.push({set_tweak:"highlight",value:!1}),e}return[o.PushRuleActionName.DontNotify]}static decodeActions(e){let t,n=!1,i=!1;for(const s of e)if(s===o.PushRuleActionName.Notify)n=!0;else if(s===o.PushRuleActionName.DontNotify)n=!1;else{if("object"!=typeof s)return null;if("sound"===s.set_tweak)t=s.value;else{if("highlight"!==s.set_tweak)return null;i=s.value}}void 0===i&&(i=!0);const s={notify:n,highlight:i};return void 0!==t&&(s.sound=t),s}}const JE=GE.encodeActions;class $E{}(0,w.A)($E,"ACTION_NOTIFY",JE({notify:!0})),(0,w.A)($E,"ACTION_NOTIFY_DEFAULT_SOUND",JE({notify:!0,sound:"default"})),(0,w.A)($E,"ACTION_NOTIFY_RING_SOUND",JE({notify:!0,sound:"ring"})),(0,w.A)($E,"ACTION_HIGHLIGHT",JE({notify:!0,highlight:!0})),(0,w.A)($E,"ACTION_HIGHLIGHT_DEFAULT_SOUND",JE({notify:!0,sound:"default",highlight:!0})),(0,w.A)($E,"ACTION_DONT_NOTIFY",JE({notify:!1})),(0,w.A)($E,"ACTION_DISABLED",void 0);let qE=function(e){return e.Off="off",e.On="on",e.Loud="loud",e}({});class YE{static actionsFor(e){return e===qE.On?$E.ACTION_NOTIFY:e===qE.Loud?$E.ACTION_HIGHLIGHT_DEFAULT_SOUND:[]}static contentRuleVectorStateKind(e){const t=GE.decodeActions(e.actions);if(!t)return null;let n=0;t.sound&&n++,t.highlight&&n++;let i=null;switch(n){case 0:i=qE.On;break;case 2:i=qE.Loud}return i}}(0,w.A)(YE,"OFF",qE.Off),(0,w.A)(YE,"ON",qE.On),(0,w.A)(YE,"LOUD",qE.Loud),(0,w.A)(YE,"states",qE);class XE{constructor(e){(0,w.A)(this,"description",void 0),(0,w.A)(this,"vectorStateToActions",void 0),(0,w.A)(this,"syncedRuleIds",void 0),this.description=e.description,this.vectorStateToActions=e.vectorStateToActions,this.syncedRuleIds=e.syncedRuleIds}ruleToVectorState(e){let t=!1;e&&(t=e.enabled);for(const n of Object.values(YE.states)){const i=this.vectorStateToActions[n];if(i){if(t&&JSON.stringify(GE.decodeActions(e.actions))===JSON.stringify(GE.decodeActions(i)))return n}else if(!t)return n}s.vF.error(`Cannot translate rule actions into Vector rule state. Rule: ${JSON.stringify(e)}, Expected: ${JSON.stringify(this.vectorStateToActions)}`)}}const QE={".m.rule.contains_display_name":new XE({description:(0,l.AO)("settings|notifications|rule_contains_display_name"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_HIGHLIGHT_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DISABLED}}),".m.rule.contains_user_name":new XE({description:(0,l.AO)("settings|notifications|rule_contains_user_name"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_HIGHLIGHT_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DISABLED},syncedRuleIds:[o.RuleId.IsUserMention]}),".m.rule.roomnotif":new XE({description:(0,l.AO)("settings|notifications|rule_roomnotif"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_HIGHLIGHT,[qE.Off]:$E.ACTION_DISABLED},syncedRuleIds:[o.RuleId.IsRoomMention]}),".m.rule.room_one_to_one":new XE({description:(0,l.AO)("settings|notifications|rule_room_one_to_one"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_NOTIFY_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DONT_NOTIFY},syncedRuleIds:[o.RuleId.PollStartOneToOne,o.RuleId.PollStartOneToOneUnstable,o.RuleId.PollEndOneToOne,o.RuleId.PollEndOneToOneUnstable]}),".m.rule.encrypted_room_one_to_one":new XE({description:(0,l.AO)("settings|notifications|rule_encrypted_room_one_to_one"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_NOTIFY_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DONT_NOTIFY}}),".m.rule.message":new XE({description:(0,l.AO)("settings|notifications|rule_message"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_NOTIFY_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DONT_NOTIFY},syncedRuleIds:[o.RuleId.PollStart,o.RuleId.PollStartUnstable,o.RuleId.PollEnd,o.RuleId.PollEndUnstable]}),".m.rule.encrypted":new XE({description:(0,l.AO)("settings|notifications|rule_encrypted"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_NOTIFY_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DONT_NOTIFY}}),".m.rule.invite_for_me":new XE({description:(0,l.AO)("settings|notifications|rule_invite_for_me"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_NOTIFY_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DISABLED}}),".m.rule.call":new XE({description:(0,l.AO)("settings|notifications|rule_call"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_NOTIFY_RING_SOUND,[qE.Off]:$E.ACTION_DISABLED}}),".m.rule.suppress_notices":new XE({description:(0,l.AO)("settings|notifications|rule_suppress_notices"),vectorStateToActions:{[qE.On]:$E.ACTION_DISABLED,[qE.Loud]:$E.ACTION_NOTIFY_DEFAULT_SOUND,[qE.Off]:$E.ACTION_DONT_NOTIFY}}),".m.rule.tombstone":new XE({description:(0,l.AO)("settings|notifications|rule_tombstone"),vectorStateToActions:{[qE.On]:$E.ACTION_NOTIFY,[qE.Loud]:$E.ACTION_HIGHLIGHT,[qE.Off]:$E.ACTION_DISABLED}})};class ZE{static parseContentRules(e){const t=ZE.categoriseContentRules(e);return t.loud.length?{vectorState:qE.Loud,rules:t.loud,externalRules:[...t.loud_but_disabled,...t.on,...t.on_but_disabled,...t.other]}:t.loud_but_disabled.length?{vectorState:qE.Off,rules:t.loud_but_disabled,externalRules:[...t.on,...t.on_but_disabled,...t.other]}:t.on.length?{vectorState:qE.On,rules:t.on,externalRules:[...t.on_but_disabled,...t.other]}:t.on_but_disabled.length?{vectorState:qE.Off,rules:t.on_but_disabled,externalRules:t.other}:{vectorState:qE.On,rules:[],externalRules:t.other}}static categoriseContentRules(e){const t={on:[],on_but_disabled:[],loud:[],loud_but_disabled:[],other:[]};for(const n in e.global)for(let i=0;i<Object.keys(e.global[n]).length;++i){const s=e.global[n][i];if("."!==s.rule_id[0]&&n===o.PushRuleKind.ContentSpecific)switch(s.kind=n,YE.contentRuleVectorStateKind(s)){case qE.On:s.enabled?t.on.push(s):t.on_but_disabled.push(s);break;case qE.Loud:s.enabled?t.loud.push(s):t.loud_but_disabled.push(s);break;default:t.other.push(s)}}return t}}const ey=async(e,t,n,i)=>{i?(await e.setPushRuleActions("global",n,t,i),await e.setPushRuleEnabled("global",n,t,!0)):await e.setPushRuleEnabled("global",n,t,!1)},ty=async(e,t,n)=>{const i=null==t?void 0:t.map(t=>e.pushProcessor.getPushRuleAndKindById(t)).filter(e=>Boolean(e));if(null!=i&&i.length)for(const{kind:t,rule:s}of i)await ey(e,s.rule_id,t,n)};function ny(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 iy(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ny(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ny(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const sy=e=>e?iy(iy({},e.rule),{},{kind:e.kind}):void 0,oy=async(e,t)=>{(null==e?void 0:e.getType())===o.EventType.PushRules&&Object.entries(QE).forEach(async([e,n])=>{try{await(async(e,t,n)=>{var i;const s=sy(e.pushProcessor.getPushRuleAndKindById(t));if(!s)return;const o=null===(i=n.syncedRuleIds)||void 0===i?void 0:i.map(t=>sy(e.pushProcessor.getPushRuleAndKindById(t))).filter(e=>Boolean(e));if(null==o||!o.length)return;const r=n.ruleToVectorState(s),a=o.filter(e=>e.enabled!==s.enabled||n.ruleToVectorState(e)!==r);a.length&&await ty(e,a.map(({rule_id:e})=>e),s.enabled?s.actions:void 0)})(t,e,n)}catch(t){s.vF.error(`Failed to fully synchronise push rules for ${e}`,t)}})};var ry=n("./src/contexts/LocalDeviceVerificationStateContext.ts");function ay(e){const t=function(e){const[t,n]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{const t=e.getUserId();if(!t)return;const i=e.getCrypto();null==i||i.getUserVerificationStatus(t).then(e=>n(e.isCrossSigningVerified()),e=>s.vF.error("Error fetching verification status",e))},[e]),(0,Fi.ml)(e,V.cr.UserTrustStatusChanged,(t,i)=>{t===e.getUserId()&&n(i.isCrossSigningVerified())}),t}(e.client);return i.createElement(de.Ay.Provider,{value:e.client},i.createElement(ry.f.Provider,{value:t},e.children))}function ly(e){return e.closest("input, textarea, select, [contenteditable=true]")}class cy extends i.Component{constructor(e,t){super(e,t),(0,w.A)(this,"_matrixClient",void 0),(0,w.A)(this,"_roomView",void 0),(0,w.A)(this,"_resizeContainer",void 0),(0,w.A)(this,"resizeHandler",void 0),(0,w.A)(this,"layoutWatcherRef",void 0),(0,w.A)(this,"compactLayoutWatcherRef",void 0),(0,w.A)(this,"backgroundImageWatcherRef",void 0),(0,w.A)(this,"timezoneProfileUpdateRef",void 0),(0,w.A)(this,"resizer",void 0),(0,w.A)(this,"onTimezoneUpdate",async()=>{if(!D.A.getValue("userTimezonePublish")){try{await this._matrixClient.deleteExtendedProfileProperty(o.ProfileKeyMSC4175Timezone),await this._matrixClient.deleteExtendedProfileProperty(o.ProfileKeyTimezone)}catch(e){console.warn("Failed to delete timezone from user profile",e)}return}const e=D.A.getValue("userTimezone")||Intl.DateTimeFormat().resolvedOptions().timeZone;if(e&&"string"==typeof e)try{await this._matrixClient.setExtendedProfileProperty(o.ProfileKeyTimezone,e),await this._matrixClient.setExtendedProfileProperty(o.ProfileKeyMSC4175Timezone,e)}catch(e){console.warn("Failed to update user profile with current timezone",e)}}),(0,w.A)(this,"onCallState",()=>{const e=Rt.Ay.instance.getAllActiveCalls();e!==this.state.activeCalls&&this.setState({activeCalls:e})}),(0,w.A)(this,"refreshBackgroundImage",async()=>{let e=D.A.getValue("RoomList.backgroundImage");e=e?(0,gi.mediaFromMxc)(e).srcHttp:gl.V.instance.getHttpAvatarUrl(),this.setState({backgroundImage:null!=e?e:void 0})}),(0,w.A)(this,"canResetTimelineInRoom",e=>!this._roomView.current||this._roomView.current.canResetTimeline()),(0,w.A)(this,"onAccountData",e=>{"m.ignored_user_list"===e.getType()&&S.A.dispatch({action:"ignore_state_changed"}),oy(e,this._matrixClient)}),(0,w.A)(this,"onCompactLayoutChanged",()=>{this.setState({useCompactLayout:D.A.getValue("useCompactLayout")})}),(0,w.A)(this,"onSync",(e,t,n)=>{var i,s;const r=null===(i=this.state.syncErrorData)||void 0===i||null===(i=i.error)||void 0===i?void 0:i.errcode,a=null==n||null===(s=n.error)||void 0===s?void 0:s.errcode;e===t&&r===a||(this.setState({syncErrorData:e===o.SyncState.Error?n:void 0}),t===o.SyncState.Prepared&&e===o.SyncState.Syncing?this.updateServerNoticeEvents():this.calculateServerLimitToast(this.state.syncErrorData,this.state.usageLimitEventContent))}),(0,w.A)(this,"onRoomStateEvents",e=>{const t=Yl.Ay.instance.orderedLists[pa.zO.ServerNotice];null!=t&&t.some(t=>t.roomId===e.getRoomId())&&this.updateServerNoticeEvents()}),(0,w.A)(this,"onUsageLimitDismissed",()=>{this.setState({usageLimitDismissed:!0})}),(0,w.A)(this,"updateServerNoticeEvents",async()=>{const e=Yl.Ay.instance.orderedLists[pa.zO.ServerNotice];if(!e)return;const t=[];let n=0;for(const i of e){const e=i.currentState.getStateEvents("m.room.pinned_events","");if(!e||!e.getContent().pinned)continue;n=e.getTs();const s=e.getContent().pinned.slice(0,2);for(const e of s){const n=await this._matrixClient.getEventTimeline(i.getUnfilteredTimelineSet(),e),s=null==n?void 0:n.getEvents().find(t=>t.getId()===e);s&&t.push(s)}}if(n&&this.state.usageLimitEventTs&&this.state.usageLimitEventTs>n)return;const i=t.find(e=>e&&"m.room.message"===e.getType()&&"m.server_notice.usage_limit_reached"===e.getContent().server_notice_type),s=null==i?void 0:i.getContent();this.calculateServerLimitToast(this.state.syncErrorData,s),this.setState({usageLimitEventContent:s,usageLimitEventTs:n,usageLimitDismissed:!1})}),(0,w.A)(this,"onPaste",e=>{const t=ly(e.target);if(t!==document.activeElement)if(null!=t&&t.focus)t.focus();else{var n;const e=!(null===(n=document.activeElement)||void 0===n||!n.closest(".mx_ThreadView"));S.A.dispatch({action:H.r.FocusSendMessageComposer,context:e?gn.Ae.Thread:gn.Ae.Room},!0)}}),(0,w.A)(this,"onReactKeyDown",e=>{this.onKeyDown(e)}),(0,w.A)(this,"onNativeKeyDown",e=>{e.target===document.body&&this.onKeyDown(e)}),(0,w.A)(this,"onKeyDown",e=>{var t,n,i;let s=!1;switch((0,Us.zM)().getRoomAction(e)){case si.bY.ScrollUp:case si.bY.ScrollDown:case si.bY.JumpToFirstMessage:case si.bY.JumpToLatestMessage:this.onScrollKeyPressed(e),s=!0;break;case si.bY.SearchInRoom:S.A.fire(H.r.FocusMessageSearch),s=!0}if(s)return e.stopPropagation(),void e.preventDefault();const o=(0,Us.zM)().getNavigationAction(e);switch(o){case si.bY.NextLandmark:case si.bY.PreviousLandmark:Dl.r.findAndFocusNextLandmark(Dl.H.MESSAGE_COMPOSER_OR_HOME,o===si.bY.PreviousLandmark),s=!0;break;case si.bY.FilterRooms:S.A.fire(H.r.OpenSpotlight),s=!0;break;case si.bY.ToggleUserMenu:S.A.fire(H.r.ToggleUserMenu),s=!0;break;case si.bY.ShowKeyboardSettings:S.A.dispatch({action:H.r.ViewUserSettings,initialTabId:Te.v.Keyboard}),s=!0;break;case si.bY.GoToHome:if(s=!0,R.Ay.hasDialogs())return;S.A.dispatch({action:H.r.ViewHomePage});break;case si.bY.ToggleSpacePanel:S.A.fire(H.r.ToggleSpacePanel),s=!0;break;case si.bY.ToggleRoomSidePanel:"room_view"===this.props.page_type&&(Rl.A.instance.togglePanel(null),s=!0);break;case si.bY.SelectPrevRoom:S.A.dispatch({action:H.r.ViewRoomDelta,delta:-1,unread:!1}),s=!0;break;case si.bY.SelectNextRoom:S.A.dispatch({action:H.r.ViewRoomDelta,delta:1,unread:!1}),s=!0;break;case si.bY.SelectPrevUnreadRoom:S.A.dispatch({action:H.r.ViewRoomDelta,delta:-1,unread:!0});break;case si.bY.SelectNextUnreadRoom:S.A.dispatch({action:H.r.ViewRoomDelta,delta:1,unread:!0});break;case si.bY.PreviousVisitedRoomOrSpace:null===(t=a.A.get())||void 0===t||t.navigateForwardBack(!0),s=!0;break;case si.bY.NextVisitedRoomOrSpace:null===(n=a.A.get())||void 0===n||n.navigateForwardBack(!1),s=!0}if(!s){switch((0,Us.zM)().getLabsAction(e)){case si.bY.ToggleHiddenEventVisibility:{const e=D.A.getValueAt(O.p.DEVICE,"showHiddenEventsInTimeline",void 0,!1);D.A.setValue("showHiddenEventsInTimeline",null,O.p.DEVICE,!e),s=!0;break}}}if(!s&&null!==(i=a.A.get())&&void 0!==i&&i.overrideBrowserShortcuts()&&e.code.startsWith("Digit")&&"Digit0"!==e.code&&(0,ii.Et)(e)&&(S.A.dispatch({action:H.r.SwitchSpace,num:parseInt(e.code.slice(5),10)}),s=!0),s)return e.stopPropagation(),void e.preventDefault();if(!(e.key===ii.Uz.ALT||e.key===ii.Uz.CONTROL||e.key===ii.Uz.META||e.key===ii.Uz.SHIFT)&&!e.ctrlKey&&!e.metaKey){const t=e.target!==document.body&&(e.key===ii.Uz.SPACE||e.key===ii.Uz.ENTER),n=1===e.key.length||"Dead"===e.key;if(!t&&n&&!ly(e.target)){var r;const t=!(null===(r=document.activeElement)||void 0===r||!r.closest(".mx_ThreadView"));S.A.dispatch({action:H.r.FocusSendMessageComposer,context:t?gn.Ae.Thread:gn.Ae.Room},!0),e.stopPropagation()}}}),(0,w.A)(this,"onScrollKeyPressed",e=>{var t;null===(t=this._roomView.current)||void 0===t||t.handleScrollKey(e)}),this.state={syncErrorData:void 0,useCompactLayout:D.A.getValue("useCompactLayout"),usageLimitDismissed:!1,activeCalls:Rt.Ay.instance.getAllActiveCalls()},this._matrixClient=this.props.matrixClient,oa.Ay.loadDevices(),this._roomView=i.createRef(),this._resizeContainer=i.createRef(),this.resizeHandler=i.createRef()}componentDidMount(){var e;document.addEventListener("keydown",this.onNativeKeyDown,!1),Rt.Ay.instance.addListener(Rt.uv.CallState,this.onCallState),this.updateServerNoticeEvents(),this._matrixClient.on(o.ClientEvent.AccountData,this.onAccountData),oy(this._matrixClient.getAccountData(o.EventType.PushRules),this._matrixClient),this._matrixClient.on(o.ClientEvent.Sync,this.onSync),this.onSync(this._matrixClient.getSyncState(),null,null!==(e=this._matrixClient.getSyncStateData())&&void 0!==e?e:void 0),this._matrixClient.on(o.RoomStateEvent.Events,this.onRoomStateEvents),this.layoutWatcherRef=D.A.watchSetting("layout",null,this.onCompactLayoutChanged),this.compactLayoutWatcherRef=D.A.watchSetting("useCompactLayout",null,this.onCompactLayoutChanged),this.backgroundImageWatcherRef=D.A.watchSetting("RoomList.backgroundImage",null,this.refreshBackgroundImage),this.timezoneProfileUpdateRef=[D.A.watchSetting("userTimezonePublish",null,this.onTimezoneUpdate),D.A.watchSetting("userTimezone",null,this.onTimezoneUpdate)],this.resizer=this.createResizer(),this.resizer.attach(),gl.V.instance.on(Br.H,this.refreshBackgroundImage),this.loadResizerPreferences(),this.refreshBackgroundImage()}componentWillUnmount(){var e,t;document.removeEventListener("keydown",this.onNativeKeyDown,!1),Rt.Ay.instance.removeListener(Rt.uv.CallState,this.onCallState),this._matrixClient.removeListener(o.ClientEvent.AccountData,this.onAccountData),this._matrixClient.removeListener(o.ClientEvent.Sync,this.onSync),this._matrixClient.removeListener(o.RoomStateEvent.Events,this.onRoomStateEvents),gl.V.instance.off(Br.H,this.refreshBackgroundImage),D.A.unwatchSetting(this.layoutWatcherRef),D.A.unwatchSetting(this.compactLayoutWatcherRef),D.A.unwatchSetting(this.backgroundImageWatcherRef),null===(e=this.timezoneProfileUpdateRef)||void 0===e||e.forEach(e=>D.A.unwatchSetting(e)),null===(t=this.resizer)||void 0===t||t.detach()}createResizer(){var e;let t,n;const i=D.A.getValue("feature_new_room_list"),s={toggleSize:i?224:156,onCollapsed:e=>{i||(n=e,e?(S.A.dispatch({action:"hide_left_panel"}),window.localStorage.setItem("mx_lhs_size","0")):S.A.dispatch({action:"show_left_panel"}))},onResized:e=>{t=e,this.context.resizeNotifier.notifyLeftHandleResized()},onResizeStart:()=>{this.context.resizeNotifier.startResizing()},onResizeStop:()=>{!i&&n||window.localStorage.setItem("mx_lhs_size",""+t),this.context.resizeNotifier.stopResizing()},isItemCollapsed:e=>!i&&e.classList.contains("mx_LeftPanel_minimized"),handler:null!==(e=this.resizeHandler.current)&&void 0!==e?e:void 0},o=new ha(this._resizeContainer.current,ua,s);return o.setClassNames({handle:"mx_ResizeHandle",vertical:"mx_ResizeHandle--vertical",reverse:"mx_ResizeHandle_reverse"}),o}loadResizerPreferences(){var e;const t=D.A.getValue("feature_new_room_list");let n=parseInt(window.localStorage.getItem("mx_lhs_size"),10);(isNaN(n)||t&&n<224)&&(n=350),null===(e=this.resizer)||void 0===e||null===(e=e.forHandleWithId("lp-resizer"))||void 0===e||e.resize(n)}calculateServerLimitToast(e,t){var n;const s="M_RESOURCE_LIMIT_EXCEEDED"===(null==e||null===(n=e.error)||void 0===n?void 0:n.errcode);s&&(t=(null==e?void 0:e.error).data),t&&this.state.usageLimitDismissed?((e,t,n)=>{const s=(0,Fo.AB)(e,n,{monthly_active_user:(0,l.AO)("error|mau"),hs_blocked:(0,l.AO)("error|hs_blocked"),"":(0,l.AO)("error|resource_limits")}),o=(0,Fo.AB)(e,n,{"":(0,l.AO)("error|admin_contact_short")});F.A.sharedInstance().addOrReplaceToast({key:ga,title:(0,l._t)("common|warning"),props:{description:i.createElement(i.Fragment,null,s," ",o),primaryLabel:(0,l._t)("action|ok"),onPrimaryClick:()=>{va(),t&&t()}},component:W.A,priority:70})})(t.limit_type,this.onUsageLimitDismissed,t.admin_contact):va()}render(){let e;switch(this.props.page_type){case Zr.A.RoomView:e=i.createElement(hE,{ref:this._roomView,onRegistered:this.props.onRegistered,threepidInvite:this.props.threepidInvite,oobData:this.props.roomOobData,key:this.props.currentRoomId||"roomview",justCreatedOpts:this.props.roomJustCreatedOpts,forceTimeline:this.props.forceTimeline});break;case Zr.A.HomePage:e=i.createElement(wE,{justRegistered:this.props.justRegistered});break;case Zr.A.UserView:this.props.currentUserId&&(e=i.createElement(SE,{userId:this.props.currentUserId,resizeNotifier:this.context.resizeNotifier}))}const t=Lt()({mx_MatrixChat_wrapper:!0,mx_MatrixChat_useCompactLayout:this.state.useCompactLayout}),n=Lt()({mx_MatrixChat:!0,"mx_MatrixChat--with-avatar":this.state.backgroundImage}),s=D.A.getValue("feature_new_room_list"),o=Lt()({mx_LeftPanel_wrapper:!0,mx_LeftPanel_newRoomList:s}),r=this.state.activeCalls.map(e=>i.createElement(dm,{call:e,key:e.callId})),a=!s&&this.props.collapseLhs;return i.createElement(ay,{client:this._matrixClient},i.createElement("div",{onPaste:this.onPaste,onKeyDown:this.onReactKeyDown,className:t,"aria-hidden":this.props.hideToSRUsers},i.createElement(gE,null),i.createElement("div",{className:n},i.createElement("div",{className:"mx_LeftPanel_outerWrapper"},i.createElement(RE,{isMinimized:a||!1}),i.createElement("div",{className:o},!s&&i.createElement(AE,{blurMultiplier:.5,backgroundImage:this.state.backgroundImage}),i.createElement(Kl,null),!s&&i.createElement(AE,{backgroundImage:this.state.backgroundImage}),i.createElement("div",{className:"mx_LeftPanel_wrapper--user",ref:this._resizeContainer,"data-collapsed":!!a||void 0},i.createElement(om,{pageType:this.props.page_type,isMinimized:a||!1,resizeNotifier:this.context.resizeNotifier})))),i.createElement(ra,{passRef:this.resizeHandler,id:"lp-resizer"}),i.createElement("div",{className:"mx_RoomView_wrapper"},e))),i.createElement(KE,null),i.createElement(am,null),r)}}(0,w.A)(cy,"displayName","LoggedInView"),(0,w.A)(cy,"contextType",Do.A);const dy=cy;function my(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}let uy=function(e){return e[e.Primary=0]="Primary",e[e.Cancel=1]="Cancel",e}({});const hy=({onFinished:e,analyticsOwner:t,privacyPolicyUrl:n,primaryButton:s,cancelButton:o,hasCancel:r})=>{const a=n?i.createElement("span",null,(0,l._t)("analytics|privacy_policy",{},{PrivacyPolicyUrl:e=>i.createElement(Re.A,{href:n,rel:"norefferer noopener",target:"_blank"},e)})):"";return i.createElement(Q.A,{className:"mx_AnalyticsLearnMoreDialog",contentId:"mx_AnalyticsLearnMore",title:(0,l._t)("analytics|enable_prompt",{analyticsOwner:t}),onFinished:e},i.createElement("div",{className:"mx_Dialog_content"},i.createElement("div",{className:"mx_AnalyticsLearnMore_image_holder"}),i.createElement("div",{className:"mx_AnalyticsLearnMore_copy"},(0,l._t)("analytics|pseudonymous_usage_data",{analyticsOwner:t})),i.createElement("ul",{className:"mx_AnalyticsLearnMore_bullets"},i.createElement("li",null,(0,l._t)("analytics|bullet_1",{},{Bold:e=>i.createElement("strong",null,e)})),i.createElement("li",null,(0,l._t)("analytics|bullet_2",{},{Bold:e=>i.createElement("strong",null,e)})),i.createElement("li",null,(0,l._t)("analytics|disable_prompt"))),a),i.createElement(Nt.A,{primaryButton:s,cancelButton:o,onPrimaryButtonClick:()=>e(uy.Primary),onCancel:()=>e(uy.Cancel),hasCancel:r}))},py=e=>{var t;const n=c.Ay.get("privacy_policy_url"),i=null!==(t=c.Ay.get("analytics_owner"))&&void 0!==t?t:c.Ay.get("brand");return R.Ay.createDialog(hy,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?my(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):my(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({privacyPolicyUrl:n,analyticsOwner:i},e),"mx_AnalyticsLearnMoreDialog_wrapper")},gy=()=>{S.A.dispatch({action:H.r.PseudonymousAnalyticsAccept})},vy=()=>{S.A.dispatch({action:H.r.PseudonymousAnalyticsReject})},_y=()=>{const{finished:e}=py({primaryButton:(0,l._t)("action|enable")});e.then(([e])=>{e===uy.Primary&&gy()})},fy=()=>{const{finished:e}=py({primaryButton:(0,l._t)("analytics|accept_button"),cancelButton:(0,l._t)("action|stop")});e.then(([e])=>{e===uy.Primary?gy():e===uy.Cancel&&vy()})},Ey="analytics";const yy=()=>{var e;const t=D.A.getValue("analyticsOptIn",null,!0);let n;if(t)n={description:(0,l._t)("analytics|consent_migration"),primaryLabel:(0,l._t)("analytics|accept_button"),onPrimaryClick:gy,secondaryLabel:(0,l._t)("action|learn_more"),onSecondaryClick:fy};else{if(null!=t)return;{const e=e=>i.createElement(le.A,{kind:"link_inline",onClick:_y},e);n={description:(0,l._t)("analytics|learn_more",{},{LearnMoreLink:e}),primaryLabel:(0,l._t)("action|yes"),onPrimaryClick:gy,secondaryLabel:(0,l._t)("action|no"),onSecondaryClick:vy}}}const s=null!==(e=c.Ay.get("analytics_owner"))&&void 0!==e?e:c.Ay.get().brand;F.A.sharedInstance().addOrReplaceToast({key:Ey,title:(0,l._t)("analytics|enable_prompt",{analyticsOwner:s}),props:n,component:W.A,className:"mx_AnalyticsToast",priority:10})},by=()=>{F.A.sharedInstance().dismissToast(Ey)};var wy=n("./src/components/views/elements/DialPadBackspaceButton.tsx");class Sy extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"numberEntryFieldRef",(0,i.createRef)()),(0,w.A)(this,"onCancelClick",()=>{this.props.onFinished(!1)}),(0,w.A)(this,"onChange",e=>{this.setState({value:e.target.value})}),(0,w.A)(this,"onFormSubmit",e=>{e.preventDefault(),this.onDialPress()}),(0,w.A)(this,"onDigitPress",(e,t)=>{var n;(this.setState({value:this.state.value+e}),"click"===t.type)&&(null===(n=this.numberEntryFieldRef.current)||void 0===n||n.focus())}),(0,w.A)(this,"onDeletePress",e=>{var t;0!==this.state.value.length&&(this.setState({value:this.state.value.slice(0,-1)}),"click"===e.type&&(null===(t=this.numberEntryFieldRef.current)||void 0===t||t.focus()))}),(0,w.A)(this,"onDialPress",async()=>{Rt.Ay.instance.dialNumber(this.state.value),this.props.onFinished(!0)}),this.state={value:""}}render(){const e=i.createElement(wy.A,{onBackspacePress:this.onDeletePress});let t;return t=0!==this.state.value.length?i.createElement(qs.A,{ref:this.numberEntryFieldRef,className:"mx_DialPadModal_field",id:"dialpad_number",value:this.state.value,autoFocus:!0,onChange:this.onChange,postfixComponent:e}):i.createElement(qs.A,{ref:this.numberEntryFieldRef,className:"mx_DialPadModal_field",id:"dialpad_number",value:this.state.value,autoFocus:!0,onChange:this.onChange}),i.createElement("div",{className:"mx_DialPadModal"},i.createElement("div",null,i.createElement(le.A,{className:"mx_DialPadModal_cancel",onClick:this.onCancelClick})),i.createElement("div",{className:"mx_DialPadModal_header"},i.createElement("form",{onSubmit:this.onFormSubmit},t)),i.createElement("div",{className:"mx_DialPadModal_dialPad"},i.createElement(p_.Ay,{hasDial:!0,onDigitPress:this.onDigitPress,onDeletePress:this.onDeletePress,onDialPress:this.onDialPress})))}}const Ay=()=>{window.location.href="mobile_guide/"},Cy=()=>{document.cookie="element_mobile_redirect_to_guide=false;path=/;max-age=14400",Ry()},xy="mobileguide",Ry=()=>{F.A.sharedInstance().dismissToast(xy)};var ky=n("./node_modules/@vector-im/compound-web/dist/components/Toast/Toast.js"),Iy=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/keyboard.js"),Ty=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/sidebar.js"),Py=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/mic-on.js"),Ny=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/lock.js"),My=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/labs.js"),Dy=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/block.js"),Oy=n("./node_modules/@vector-im/compound-web/dist/components/Form/Controls/EditInPlace/EditInPlace.js"),Fy=n("./node_modules/@vector-im/compound-web/dist/components/Alert/Alert.js"),Ly=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/sign-out.js");const Uy=(0,i.createContext)(null);Uy.displayName="ToastContext";class Vy{constructor(){(0,w.A)(this,"currentToast",void 0),(0,w.A)(this,"updateCallback",void 0),(0,w.A)(this,"idSeq",0)}setCallback(e){this.updateCallback=e}displayToast(e){var t;const n=++this.idSeq;this.currentToast={id:n,contents:e},null===(t=this.updateCallback)||void 0===t||t.call(this);return()=>{var e,t;(null===(e=this.currentToast)||void 0===e?void 0:e.id)===n&&(this.currentToast=void 0,null===(t=this.updateCallback)||void 0===t||t.call(this))}}getActiveToast(){var e;return null===(e=this.currentToast)||void 0===e?void 0:e.contents}}var By=n("./src/components/views/elements/CopyableText.tsx");const jy=({children:e})=>i.createElement(i.Fragment,null,i.createElement(Ra.A,null),e),Wy=({username:e})=>{const t=(0,i.useId)();return i.createElement("div",{className:"mx_UserProfileSettings_profile_controls_userId"},i.createElement("div",{className:"mx_UserProfileSettings_profile_controls_userId_label",id:t},(0,l._t)("settings|general|username")),i.createElement(By.A,{getTextToCopy:()=>e,"aria-labelledby":t},e))},Hy=({externalAccountManagementUrl:e})=>i.createElement(le.A,{onClick:null,element:"a",kind:"primary",target:"_blank",rel:"noreferrer noopener",href:e},i.createElement(Ne.A,{className:"mx_UserProfileSettings_accountmanageIcon",width:"24",height:"24"}),(0,l._t)("settings|general|oidc_manage_button")),zy=()=>{const e=(0,de.nH)(),t=(0,i.useCallback)(async()=>{await ml(e)?R.Ay.createDialog(ul):S.A.dispatch({action:"logout"})},[e]);return i.createElement(le.A,{onClick:t,kind:"danger_outline"},i.createElement(Ly.A,{className:"mx_UserProfileSettings_accountmanageIcon",width:"24",height:"24"}),(0,l._t)("action|sign_out"))},Ky=({externalAccountManagementUrl:e,canSetDisplayName:t,canSetAvatar:n})=>{var o,r;const[a,c]=(0,i.useState)(gl.V.instance.avatarMxc),[d,m]=(0,i.useState)(null!==(o=gl.V.instance.displayName)&&void 0!==o?o:""),[u,h]=(0,i.useState)(!1),[p,g]=(0,i.useState)(),[v,_]=(0,i.useState)(!1),f=(0,i.useContext)(Uy),E=(0,de.nH)();(0,i.useEffect)(()=>{(async()=>{try{const e=await E.getMediaConfig();g(e["m.upload.size"])}catch(e){s.vF.warn("Failed to get media config",e)}})()},[E]);const y=(0,i.useCallback)(async()=>{const e=f.displayToast(i.createElement(jy,null,(0,l._t)("settings|general|avatar_remove_progress")));try{await E.setAvatarUrl(""),c("")}finally{e()}},[f,E]),b=(0,i.useCallback)(async e=>{ri.A.trackInteraction("WebProfileSettingsAvatarUploadButton"),s.vF.log(`Uploading new avatar, ${e.name} of type ${e.type}, (${e.size}) bytes`);const t=f.displayToast(i.createElement(jy,null,(0,l._t)("settings|general|avatar_save_progress")));try{h(!1);const{content_uri:t}=await E.uploadContent(e);await E.setAvatarUrl(t),c(t)}catch{h(!0)}finally{t()}},[f,E]),w=(0,i.useCallback)(e=>{m(e.target.value)},[]),S=(0,i.useCallback)(()=>{var e;m(null!==(e=gl.V.instance.displayName)&&void 0!==e?e:"")},[]),A=(0,i.useCallback)(async()=>{try{_(!1),await E.setDisplayName(d)}catch(e){throw _(!0),e}},[d,E]),C=(0,i.useMemo)(()=>$t.A.getDisplayUserIdentifier(E.getSafeUserId(),{withDisplayName:!0}),[E]),x=!t||!n;return i.createElement("div",{className:"mx_UserProfileSettings"},i.createElement("h2",null,(0,l._t)("common|profile")),i.createElement("div",null,x?(0,l._t)("settings|general|profile_subtitle_oidc"):(0,l._t)("settings|general|profile_subtitle")),i.createElement("div",{className:"mx_UserProfileSettings_profile"},i.createElement(Cu.A,{avatar:null!=a?a:void 0,avatarAccessibleName:(0,l._t)("common|user_avatar"),onChange:b,removeAvatar:a?y:void 0,placeholderName:d,placeholderId:null!==(r=E.getUserId())&&void 0!==r?r:"",disabled:!n}),i.createElement(Oy.d,{className:"mx_UserProfileSettings_profile_displayName",label:(0,l._t)("settings|general|display_name"),value:d,saveButtonLabel:(0,l._t)("common|save"),cancelButtonLabel:(0,l._t)("common|cancel"),savedLabel:(0,l._t)("common|saved"),savingLabel:(0,l._t)("common|updating"),onChange:w,onCancel:S,onSave:A,disabled:!t},v&&i.createElement(Xu.Kw,null,(0,l._t)("settings|general|display_name_error")))),u&&i.createElement(Fy.F,{title:(0,l._t)("settings|general|avatar_upload_error_title"),type:"critical"},void 0===p?(0,l._t)("settings|general|avatar_upload_error_text_generic"):(0,l._t)("settings|general|avatar_upload_error_text",{size:(0,Jt.z3)(p)})),C&&i.createElement(Wy,{username:C}),i.createElement(we.s,{gap:"var(--cpd-space-4x)",className:"mx_UserProfileSettings_profile_buttons"},e&&i.createElement(Hy,{externalAccountManagementUrl:e}),i.createElement(zy,null)))};var Gy=n("./src/components/structures/InteractiveAuth.tsx");class Jy extends i.Component{constructor(e){super(e),(0,w.A)(this,"onStagePhaseChange",(e,t)=>{const n={[fe.av.PHASE_PREAUTH]:{body:(0,l._t)("settings|general|deactivate_confirm_body_sso"),continueText:(0,l._t)("auth|sso"),continueKind:"danger"},[fe.av.PHASE_POSTAUTH]:{body:(0,l._t)("settings|general|deactivate_confirm_body"),continueText:(0,l._t)("settings|general|deactivate_confirm_continue"),continueKind:"danger"}},i={[fe.av.LOGIN_TYPE]:n,[fe.av.UNSTABLE_LOGIN_TYPE]:n}[e];let s,o,r;if(i){const e=i[t];e&&(e.body&&(s=e.body),e.continueText&&(o=e.continueText),e.continueKind&&(r=e.continueKind))}this.setState({bodyText:s,continueText:o,continueKind:r})}),(0,w.A)(this,"onUIAuthFinished",async(e,t)=>{e||(t!==Gy.R?(s.vF.error("Error during UI Auth:",{result:t}),this.setState({errStr:(0,l._t)("settings|general|error_deactivate_communication")})):this.onCancel())}),(0,w.A)(this,"onUIAuthComplete",e=>{v.J.safeGet().deactivateAccount(null!=e?e:void 0,this.state.shouldErase).then(e=>{S.A.fire(H.r.TriggerLogout),this.props.onFinished(!0)}).catch(e=>{s.vF.error(e),this.setState({errStr:(0,l._t)("settings|general|error_deactivate_communication")})})}),(0,w.A)(this,"onEraseFieldChange",e=>{this.setState({shouldErase:e.currentTarget.checked,authEnabled:!1}),this.initAuth(e.currentTarget.checked)}),this.state={shouldErase:!1,errStr:null,authData:null,authEnabled:!0}}componentDidMount(){this.initAuth(!1)}onCancel(){this.props.onFinished(!1)}initAuth(e){v.J.safeGet().deactivateAccount(void 0,e).then(e=>{s.vF.warn("User's account got deactivated without confirmation: Server had no auth"),this.setState({errStr:(0,l._t)("settings|general|error_deactivate_no_auth")})}).catch(e=>{e&&401===e.httpStatus&&e.data?this.setState({authData:e.data,authEnabled:!0}):this.setState({errStr:(0,l._t)("settings|general|error_deactivate_invalid_auth")})})}render(){let e;this.state.errStr&&(e=i.createElement("div",{className:"error"},this.state.errStr));let t=i.createElement("div",null,(0,l._t)("common|loading"));return this.state.authData&&this.state.authEnabled&&(t=i.createElement("div",null,this.state.bodyText,i.createElement(Gy.A,{matrixClient:v.J.safeGet(),authData:this.state.authData,makeRequest:this.onUIAuthComplete,onAuthFinished:this.onUIAuthFinished,onStagePhaseChange:this.onStagePhaseChange,continueText:this.state.continueText,continueKind:this.state.continueKind}))),i.createElement(Q.A,{className:"mx_DeactivateAccountDialog",onFinished:this.props.onFinished,titleClass:"danger",title:(0,l._t)("settings|general|deactivate_section"),screenName:"DeactivateAccount"},i.createElement("div",{className:"mx_Dialog_content"},i.createElement("p",null,(0,l._t)("settings|general|deactivate_confirm_content")),i.createElement("ul",null,i.createElement("li",null,(0,l._t)("settings|general|deactivate_confirm_content_1")),i.createElement("li",null,(0,l._t)("settings|general|deactivate_confirm_content_2")),i.createElement("li",null,(0,l._t)("settings|general|deactivate_confirm_content_3")),i.createElement("li",null,(0,l._t)("settings|general|deactivate_confirm_content_4")),i.createElement("li",null,(0,l._t)("settings|general|deactivate_confirm_content_5"))),i.createElement("p",null,(0,l._t)("settings|general|deactivate_confirm_content_6")),i.createElement("div",{className:"mx_DeactivateAccountDialog_input_section"},i.createElement("p",null,i.createElement(no.A,{checked:this.state.shouldErase,onChange:this.onEraseFieldChange},(0,l._t)("settings|general|deactivate_confirm_erase_label"))),e,t)))}}var $y=n("./src/components/views/auth/PassphraseField.tsx");const qy=/^[0-9 -.]+$/;const Yy=127462-"A".charCodeAt(0),Xy=/^[A-Z]{2}$/,Qy=[{iso2:"GB",prefix:"44"},{iso2:"US",prefix:"1"},{iso2:"AF",prefix:"93"},{iso2:"AX",prefix:"358"},{iso2:"AL",prefix:"355"},{iso2:"DZ",prefix:"213"},{iso2:"AS",prefix:"1"},{iso2:"AD",prefix:"376"},{iso2:"AO",prefix:"244"},{iso2:"AI",prefix:"1"},{iso2:"AQ",prefix:"672"},{iso2:"AG",prefix:"1"},{iso2:"AR",prefix:"54"},{iso2:"AM",prefix:"374"},{iso2:"AW",prefix:"297"},{iso2:"AU",prefix:"61"},{iso2:"AT",prefix:"43"},{iso2:"AZ",prefix:"994"},{iso2:"BS",prefix:"1"},{iso2:"BH",prefix:"973"},{iso2:"BD",prefix:"880"},{iso2:"BB",prefix:"1"},{iso2:"BY",prefix:"375"},{iso2:"BE",prefix:"32"},{iso2:"BZ",prefix:"501"},{iso2:"BJ",prefix:"229"},{iso2:"BM",prefix:"1"},{iso2:"BT",prefix:"975"},{iso2:"BO",prefix:"591"},{iso2:"BA",prefix:"387"},{iso2:"BW",prefix:"267"},{iso2:"BV",prefix:"47"},{iso2:"BR",prefix:"55"},{iso2:"IO",prefix:"246"},{iso2:"VG",prefix:"1"},{iso2:"BN",prefix:"673"},{iso2:"BG",prefix:"359"},{iso2:"BF",prefix:"226"},{iso2:"BI",prefix:"257"},{iso2:"KH",prefix:"855"},{iso2:"CM",prefix:"237"},{iso2:"CA",prefix:"1"},{iso2:"CV",prefix:"238"},{iso2:"BQ",prefix:"599"},{iso2:"KY",prefix:"1"},{iso2:"CF",prefix:"236"},{iso2:"TD",prefix:"235"},{iso2:"CL",prefix:"56"},{iso2:"CN",prefix:"86"},{iso2:"CX",prefix:"61"},{iso2:"CC",prefix:"61"},{iso2:"CO",prefix:"57"},{iso2:"KM",prefix:"269"},{iso2:"CG",prefix:"242"},{iso2:"CD",prefix:"243"},{iso2:"CK",prefix:"682"},{iso2:"CR",prefix:"506"},{iso2:"HR",prefix:"385"},{iso2:"CU",prefix:"53"},{iso2:"CW",prefix:"599"},{iso2:"CY",prefix:"357"},{iso2:"CZ",prefix:"420"},{iso2:"CI",prefix:"225"},{iso2:"DK",prefix:"45"},{iso2:"DJ",prefix:"253"},{iso2:"DM",prefix:"1"},{iso2:"DO",prefix:"1"},{iso2:"EC",prefix:"593"},{iso2:"EG",prefix:"20"},{iso2:"SV",prefix:"503"},{iso2:"GQ",prefix:"240"},{iso2:"ER",prefix:"291"},{iso2:"EE",prefix:"372"},{iso2:"ET",prefix:"251"},{iso2:"FK",prefix:"500"},{iso2:"FO",prefix:"298"},{iso2:"FJ",prefix:"679"},{iso2:"FI",prefix:"358"},{iso2:"FR",prefix:"33"},{iso2:"GF",prefix:"594"},{iso2:"PF",prefix:"689"},{iso2:"TF",prefix:"262"},{iso2:"GA",prefix:"241"},{iso2:"GM",prefix:"220"},{iso2:"GE",prefix:"995"},{iso2:"DE",prefix:"49"},{iso2:"GH",prefix:"233"},{iso2:"GI",prefix:"350"},{iso2:"GR",prefix:"30"},{iso2:"GL",prefix:"299"},{iso2:"GD",prefix:"1"},{iso2:"GP",prefix:"590"},{iso2:"GU",prefix:"1"},{iso2:"GT",prefix:"502"},{iso2:"GG",prefix:"44"},{iso2:"GN",prefix:"224"},{iso2:"GW",prefix:"245"},{iso2:"GY",prefix:"592"},{iso2:"HT",prefix:"509"},{iso2:"HM",prefix:"672"},{iso2:"HN",prefix:"504"},{iso2:"HK",prefix:"852"},{iso2:"HU",prefix:"36"},{iso2:"IS",prefix:"354"},{iso2:"IN",prefix:"91"},{iso2:"ID",prefix:"62"},{iso2:"IR",prefix:"98"},{iso2:"IQ",prefix:"964"},{iso2:"IE",prefix:"353"},{iso2:"IM",prefix:"44"},{iso2:"IL",prefix:"972"},{iso2:"IT",prefix:"39"},{iso2:"JM",prefix:"1"},{iso2:"JP",prefix:"81"},{iso2:"JE",prefix:"44"},{iso2:"JO",prefix:"962"},{iso2:"KZ",prefix:"7"},{iso2:"KE",prefix:"254"},{iso2:"KI",prefix:"686"},{iso2:"XK",prefix:"383"},{iso2:"KW",prefix:"965"},{iso2:"KG",prefix:"996"},{iso2:"LA",prefix:"856"},{iso2:"LV",prefix:"371"},{iso2:"LB",prefix:"961"},{iso2:"LS",prefix:"266"},{iso2:"LR",prefix:"231"},{iso2:"LY",prefix:"218"},{iso2:"LI",prefix:"423"},{iso2:"LT",prefix:"370"},{iso2:"LU",prefix:"352"},{iso2:"MO",prefix:"853"},{iso2:"MK",prefix:"389"},{iso2:"MG",prefix:"261"},{iso2:"MW",prefix:"265"},{iso2:"MY",prefix:"60"},{iso2:"MV",prefix:"960"},{iso2:"ML",prefix:"223"},{iso2:"MT",prefix:"356"},{iso2:"MH",prefix:"692"},{iso2:"MQ",prefix:"596"},{iso2:"MR",prefix:"222"},{iso2:"MU",prefix:"230"},{iso2:"YT",prefix:"262"},{iso2:"MX",prefix:"52"},{iso2:"FM",prefix:"691"},{iso2:"MD",prefix:"373"},{iso2:"MC",prefix:"377"},{iso2:"MN",prefix:"976"},{iso2:"ME",prefix:"382"},{iso2:"MS",prefix:"1"},{iso2:"MA",prefix:"212"},{iso2:"MZ",prefix:"258"},{iso2:"MM",prefix:"95"},{iso2:"NA",prefix:"264"},{iso2:"NR",prefix:"674"},{iso2:"NP",prefix:"977"},{iso2:"NL",prefix:"31"},{iso2:"NC",prefix:"687"},{iso2:"NZ",prefix:"64"},{iso2:"NI",prefix:"505"},{iso2:"NE",prefix:"227"},{iso2:"NG",prefix:"234"},{iso2:"NU",prefix:"683"},{iso2:"NF",prefix:"672"},{iso2:"KP",prefix:"850"},{iso2:"MP",prefix:"1"},{iso2:"NO",prefix:"47"},{iso2:"OM",prefix:"968"},{iso2:"PK",prefix:"92"},{iso2:"PW",prefix:"680"},{iso2:"PS",prefix:"970"},{iso2:"PA",prefix:"507"},{iso2:"PG",prefix:"675"},{iso2:"PY",prefix:"595"},{iso2:"PE",prefix:"51"},{iso2:"PH",prefix:"63"},{iso2:"PN",prefix:"870"},{iso2:"PL",prefix:"48"},{iso2:"PT",prefix:"351"},{iso2:"PR",prefix:"1"},{iso2:"QA",prefix:"974"},{iso2:"RO",prefix:"40"},{iso2:"RU",prefix:"7"},{iso2:"RW",prefix:"250"},{iso2:"RE",prefix:"262"},{iso2:"WS",prefix:"685"},{iso2:"SM",prefix:"378"},{iso2:"SA",prefix:"966"},{iso2:"SN",prefix:"221"},{iso2:"RS",prefix:"381 p"},{iso2:"SC",prefix:"248"},{iso2:"SL",prefix:"232"},{iso2:"SG",prefix:"65"},{iso2:"SX",prefix:"1"},{iso2:"SK",prefix:"421"},{iso2:"SI",prefix:"386"},{iso2:"SB",prefix:"677"},{iso2:"SO",prefix:"252"},{iso2:"ZA",prefix:"27"},{iso2:"GS",prefix:"500"},{iso2:"KR",prefix:"82"},{iso2:"SS",prefix:"211"},{iso2:"ES",prefix:"34"},{iso2:"LK",prefix:"94"},{iso2:"BL",prefix:"590"},{iso2:"SH",prefix:"290 n"},{iso2:"KN",prefix:"1"},{iso2:"LC",prefix:"1"},{iso2:"MF",prefix:"590"},{iso2:"PM",prefix:"508"},{iso2:"VC",prefix:"1"},{iso2:"SD",prefix:"249"},{iso2:"SR",prefix:"597"},{iso2:"SJ",prefix:"47"},{iso2:"SZ",prefix:"268"},{iso2:"SE",prefix:"46"},{iso2:"CH",prefix:"41"},{iso2:"SY",prefix:"963"},{iso2:"ST",prefix:"239"},{iso2:"TW",prefix:"886"},{iso2:"TJ",prefix:"992"},{iso2:"TZ",prefix:"255"},{iso2:"TH",prefix:"66"},{iso2:"TL",prefix:"670"},{iso2:"TG",prefix:"228"},{iso2:"TK",prefix:"690"},{iso2:"TO",prefix:"676"},{iso2:"TT",prefix:"1"},{iso2:"TN",prefix:"216"},{iso2:"TR",prefix:"90"},{iso2:"TM",prefix:"993"},{iso2:"TC",prefix:"1"},{iso2:"TV",prefix:"688"},{iso2:"VI",prefix:"1"},{iso2:"UG",prefix:"256"},{iso2:"UA",prefix:"380"},{iso2:"AE",prefix:"971"},{iso2:"UY",prefix:"598"},{iso2:"UZ",prefix:"998"},{iso2:"VU",prefix:"678"},{iso2:"VA",prefix:"39"},{iso2:"VE",prefix:"58"},{iso2:"VN",prefix:"84"},{iso2:"WF",prefix:"681"},{iso2:"EH",prefix:"212"},{iso2:"YE",prefix:"967"},{iso2:"ZM",prefix:"260"},{iso2:"ZW",prefix:"263"}];class Zy extends i.PureComponent{constructor(...e){super(...e),(0,w.A)(this,"validate",(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)(this.props.labelRequired)},{key:"email",test:({value:e})=>!e||sf.X(e),invalid:()=>(0,l._t)(this.props.labelInvalid)}]})),(0,w.A)(this,"onValidate",async e=>{let t=this.validate;this.props.validationRules&&(t=this.props.validationRules);const n=await t(e);return this.props.onValidate&&this.props.onValidate(n),n})}render(){return i.createElement(qs.A,{id:this.props.id,ref:this.props.fieldRef,type:"text",label:(0,l._t)(this.props.label),value:this.props.value,autoFocus:this.props.autoFocus,onChange:this.props.onChange,onValidate:this.onValidate,tooltipAlignment:this.props.tooltipAlignment})}}(0,w.A)(Zy,"defaultProps",{label:(0,l.AO)("auth|email_field_label"),labelRequired:(0,l.AO)("auth|email_field_label_required"),labelInvalid:(0,l.AO)("auth|email_field_label_invalid")});const eb=Zy,tb=({onFinished:e})=>{const[t,n]=(0,i.useState)(""),s=(0,i.useRef)(null),o=async n=>{if(n.preventDefault(),s.current){if(t){if(!await s.current.validate({}))return s.current.focus(),void s.current.validate({focused:!0})}e(!0,t)}};return i.createElement(Q.A,{title:(0,l._t)("auth|registration|continue_without_email_title"),className:"mx_RegistrationEmailPromptDialog",contentId:"mx_RegistrationEmailPromptDialog",onFinished:()=>e(!1),fixedWidth:!1},i.createElement("div",{className:"mx_Dialog_content",id:"mx_RegistrationEmailPromptDialog"},i.createElement("p",null,(0,l._t)("auth|registration|continue_without_email_description",{},{b:e=>i.createElement("strong",null,e)})),i.createElement("form",{onSubmit:o},i.createElement(eb,{fieldRef:s,autoFocus:!0,label:(0,l.AO)("auth|registration|continue_without_email_field_label"),value:t,onChange:e=>{const t=e.target;n(t.value)}}))),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|continue"),onPrimaryButtonClick:o,hasCancel:!1}))};function nb(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}class ib extends i.Component{constructor(e){super(e),(0,w.A)(this,"defaultCountry",void 0),(0,w.A)(this,"countries",void 0),(0,w.A)(this,"countryMap",void 0),(0,w.A)(this,"onSearchChange",e=>{this.setState({searchQuery:e})}),(0,w.A)(this,"onOptionChange",e=>{this.props.onOptionChange(this.countryMap.get(e))}),(0,w.A)(this,"getShortOption",e=>{if(!this.props.isSmall)return;let t;return this.props.showPrefix&&(t="+"+this.countryMap.get(e).prefix),i.createElement("span",{className:"mx_CountryDropdown_shortOption"},this.flagImgForIso2(e),t)});const t=new Intl.DisplayNames([(0,l.mf)()],{type:"region"});let n;this.countries=Qy.map(e=>{var n;return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?nb(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):nb(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({name:null!==(n=t.of(e.iso2))&&void 0!==n?n:e.iso2},e)}),this.countryMap=new Map(this.countries.map(e=>[e.iso2,e]));const s=c.Ay.get("default_country_code");if(s){const e=this.countries.find(e=>e.iso2===s.toUpperCase());e&&(n=e)}if(!n)try{var o,r,a;const e=new Intl.Locale(null!==(o=navigator.language)&&void 0!==o?o:navigator.languages[0]),i=null!==(r=null!==(a=e.region)&&void 0!==a?a:e.language)&&void 0!==r?r:e.baseName,s=t.of(i).toUpperCase();n=this.countries.find(e=>e.iso2===i.toUpperCase()||e.name.toUpperCase()===s)}catch(e){console.warn("Failed to detect default locale",e)}this.defaultCountry=null!=n?n:this.countries[0],this.state={searchQuery:""}}componentDidMount(){this.props.value||this.props.onOptionChange(this.defaultCountry)}flagImgForIso2(e){return i.createElement("div",{className:"mx_Dropdown_option_emoji"},(t=e,Xy.test(t)?String.fromCodePoint(...t.split("").map(e=>Yy+e.charCodeAt(0))):""));var t}render(){let e;if(this.state.searchQuery){if(e=this.countries.filter(e=>function(e,t){return"+"===e[0]&&(e=e.slice(1)),0==t.name.toUpperCase().indexOf(e.toUpperCase())||t.iso2==e.toUpperCase()||-1!==t.prefix.indexOf(e)}(this.state.searchQuery,e)),2==this.state.searchQuery.length&&this.countryMap.has(this.state.searchQuery.toUpperCase())){const t=this.countryMap.get(this.state.searchQuery.toUpperCase());e=e.filter(e=>e.iso2!=t.iso2),e.unshift(t)}}else e=this.countries;const t=e.map(e=>i.createElement("div",{className:"mx_CountryDropdown_option",key:e.iso2},this.flagImgForIso2(e.iso2),e.name," (+",e.prefix,")")),n=this.props.value||this.defaultCountry.iso2;return i.createElement(qa.A,{id:"mx_CountryDropdown",className:this.props.className+" mx_CountryDropdown",onOptionChange:this.onOptionChange,onSearchChange:this.onSearchChange,menuWidth:298,getShortOption:this.getShortOption,value:n,searchEnabled:!0,disabled:this.props.disabled,label:(0,l._t)("auth|country_dropdown"),autoComplete:"tel-country-code"},t)}}var sb=n("./src/components/views/auth/PassphraseConfirmField.tsx");let ob,rb,ab,lb,cb;var db=function(e){return e.Email="field_email",e.PhoneNumber="field_phone_number",e.Username="field_username",e.Password="field_password",e.PasswordConfirm="field_password_confirm",e}(db||{}),mb=function(e){return e[e.Unknown=0]="Unknown",e[e.Available=1]="Available",e[e.Unavailable=2]="Unavailable",e[e.Error=3]="Error",e[e.Invalid=4]="Invalid",e}(mb||{});ob=db.Email,rb=db.Password,ab=db.PasswordConfirm,lb=db.Username,cb=db.PhoneNumber;class ub extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,ob,null),(0,w.A)(this,rb,null),(0,w.A)(this,ab,null),(0,w.A)(this,lb,null),(0,w.A)(this,cb,null),(0,w.A)(this,"onSubmit",async e=>{if(e.preventDefault(),e.persist(),!this.props.canSubmit)return;if(await this.verifyFieldsBeforeSubmit())if(""===this.state.email){if(!this.showEmail())return void this.doSubmit(e);{const{finished:t}=R.Ay.createDialog(tb);t.then(async([t,n])=>{t&&void 0!==n&&this.setState({email:n},()=>this.doSubmit(e))})}}else this.doSubmit(e)}),(0,w.A)(this,"onEmailChange",e=>{this.setState({email:e.target.value.trim()})}),(0,w.A)(this,"onEmailValidate",e=>{this.markFieldValid(db.Email,!!e.valid)}),(0,w.A)(this,"validateEmailRules",(0,Hm.A)({description:()=>(0,l._t)("auth|reset_password_email_field_description"),hideDescriptionIfValid:!0,rules:[{key:"required",test({value:e,allowEmpty:t}){return t||!this.authStepIsRequired("m.login.email.identity")||!!e},invalid:()=>(0,l._t)("auth|reset_password_email_field_required_invalid")},{key:"email",test:({value:e})=>!e||sf.X(e),invalid:()=>(0,l._t)("auth|email_field_label_invalid")}]})),(0,w.A)(this,"onPasswordChange",e=>{this.setState({password:e.target.value})}),(0,w.A)(this,"onPasswordValidate",e=>{this.markFieldValid(db.Password,!!e.valid)}),(0,w.A)(this,"onPasswordConfirmChange",e=>{this.setState({passwordConfirm:e.target.value})}),(0,w.A)(this,"onPasswordConfirmValidate",e=>{this.markFieldValid(db.PasswordConfirm,!!e.valid)}),(0,w.A)(this,"onPhoneCountryChange",e=>{this.setState({phoneCountry:e.iso2})}),(0,w.A)(this,"onPhoneNumberChange",e=>{this.setState({phoneNumber:e.target.value})}),(0,w.A)(this,"onPhoneNumberValidate",async e=>{const t=await this.validatePhoneNumberRules(e);return this.markFieldValid(db.PhoneNumber,!!t.valid),t}),(0,w.A)(this,"validatePhoneNumberRules",(0,Hm.A)({description:()=>(0,l._t)("auth|msisdn_field_description"),hideDescriptionIfValid:!0,rules:[{key:"required",test({value:e,allowEmpty:t}){return t||!this.authStepIsRequired("m.login.msisdn")||!!e},invalid:()=>(0,l._t)("auth|registration_msisdn_field_required_invalid")},{key:"email",test:({value:e})=>{return!e||(t=e,qy.test(t));var t},invalid:()=>(0,l._t)("auth|msisdn_field_number_invalid")}]})),(0,w.A)(this,"onUsernameChange",e=>{this.setState({username:e.target.value})}),(0,w.A)(this,"onUsernameValidate",async e=>{const t=await this.validateUsernameRules(e);return this.markFieldValid(db.Username,!!t.valid),t}),(0,w.A)(this,"validateUsernameRules",(0,Hm.A)({description:(e,t)=>t.every(({key:e,valid:t})=>"available"===e||t)?null:(0,l._t)("auth|registration_username_validation"),hideDescriptionIfValid:!0,async deriveData({value:e}){if(!e)return mb.Unknown;try{return await this.props.matrixClient.isUsernameAvailable(e)?mb.Available:mb.Unavailable}catch(e){return e instanceof o.MatrixError&&"M_INVALID_USERNAME"===e.errcode?mb.Invalid:mb.Error}},rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("auth|username_field_required_invalid")},{key:"safeLocalpart",test:({value:e},t)=>(!e||ta.test(e))&&t!==mb.Invalid,invalid:()=>(0,l._t)("room_settings|general|alias_field_safe_localpart_invalid")},{key:"available",final:!0,test:async({value:e},t)=>!e||t===mb.Available,invalid:e=>e===mb.Error?(0,l._t)("auth|registration_username_unable_check"):(0,l._t)("auth|registration_username_in_use")}]})),this.state={fieldValid:{},phoneCountry:this.props.defaultPhoneCountry,username:this.props.defaultUsername||"",email:this.props.defaultEmail||"",phoneNumber:this.props.defaultPhoneNumber||"",password:this.props.defaultPassword||"",passwordConfirm:this.props.defaultPassword||""}}doSubmit(e){j.Vo.instance.setAuthenticationType("Password");const t=this.state.email.trim(),n=this.props.onRegisterClick({username:this.state.username.trim(),password:this.state.password.trim(),email:t,phoneCountry:this.state.phoneCountry,phoneNumber:this.state.phoneNumber});n&&(e.target.disabled=!0,n.finally(function(){e.target.disabled=!1}))}async verifyFieldsBeforeSubmit(){const e=document.activeElement;e&&e.blur();const t=[db.Username,db.Password,db.PasswordConfirm,db.Email,db.PhoneNumber];for(const e of t){const t=this[e];t&&await t.validate({allowEmpty:!1})}if(await new Promise(e=>this.setState({},e)),this.allFieldsValid())return!0;const n=this.findFirstInvalidField(t);return!n||(n.focus(),n.validate({allowEmpty:!1,focused:!0}),!1)}allFieldsValid(){return Object.values(this.state.fieldValid).every(Boolean)}findFirstInvalidField(e){for(const t of e)if(!this.state.fieldValid[t]&&this[t])return this[t];return null}markFieldValid(e,t){const{fieldValid:n}=this.state;n[e]=t,this.setState({fieldValid:n})}authStepIsRequired(e){return this.props.flows.every(t=>t.stages.includes(e))}authStepIsUsed(e){return this.props.flows.some(t=>t.stages.includes(e))}showEmail(){return!(c.Ay.get().disable_3pid_login||!this.authStepIsUsed("m.login.email.identity"))}showPhoneNumber(){return!(c.Ay.get().disable_3pid_login||!this.authStepIsUsed("m.login.msisdn"))}tooltipAlignment(){if(this.props.mobileRegister)return"bottom"}renderEmail(){if(!this.showEmail())return null;const e=this.authStepIsRequired("m.login.email.identity")?(0,l.AO)("auth|email_field_label"):(0,l.AO)("auth|registration|continue_without_email_field_label");return i.createElement(eb,{fieldRef:e=>{this[db.Email]=e},label:e,value:this.state.email,validationRules:this.validateEmailRules.bind(this),onChange:this.onEmailChange,onValidate:this.onEmailValidate,tooltipAlignment:this.tooltipAlignment()})}renderPassword(){return i.createElement($y.A,{id:"mx_RegistrationForm_password",fieldRef:e=>{this[db.Password]=e},minScore:3,value:this.state.password,onChange:this.onPasswordChange,onValidate:this.onPasswordValidate,userInputs:[this.state.username],tooltipAlignment:this.tooltipAlignment()})}renderPasswordConfirm(){return i.createElement(sb.A,{id:"mx_RegistrationForm_passwordConfirm",fieldRef:e=>{this[db.PasswordConfirm]=e},autoComplete:"new-password",value:this.state.passwordConfirm,password:this.state.password,onChange:this.onPasswordConfirmChange,onValidate:this.onPasswordConfirmValidate,tooltipAlignment:this.tooltipAlignment()})}renderPhoneNumber(){if(!this.showPhoneNumber())return null;const e=this.authStepIsRequired("m.login.msisdn")?(0,l._t)("auth|phone_label"):(0,l._t)("auth|phone_optional_label"),t=i.createElement(ib,{value:this.state.phoneCountry,isSmall:!0,showPrefix:!0,onOptionChange:this.onPhoneCountryChange});return i.createElement(qs.A,{ref:e=>{this[db.PhoneNumber]=e},type:"text",label:e,value:this.state.phoneNumber,prefixComponent:t,onChange:this.onPhoneNumberChange,onValidate:this.onPhoneNumberValidate})}renderUsername(){return i.createElement(qs.A,{id:"mx_RegistrationForm_username",ref:e=>{this[db.Username]=e},type:"text",autoFocus:!0,label:(0,l._t)("common|username"),placeholder:(0,l._t)("common|username"),value:this.state.username,onChange:this.onUsernameChange,onValidate:this.onUsernameValidate,tooltipAlignment:this.tooltipAlignment(),autoCorrect:"off",autoCapitalize:"none"})}render(){const e=i.createElement("input",{className:"mx_Login_submit",type:"submit",value:(0,l._t)("action|register"),disabled:!this.props.canSubmit});let t,n;return this.showEmail()&&(t=this.showPhoneNumber()?i.createElement("div",null,(0,l._t)("auth|email_help_text")," ",(0,l._t)("auth|email_phone_discovery_text")):i.createElement("div",null,(0,l._t)("auth|email_help_text")," ",(0,l._t)("auth|email_discovery_text"))),n=this.props.mobileRegister?i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_AuthBody_fieldRow"},this.renderPassword()),i.createElement("div",{className:"mx_AuthBody_fieldRow"},this.renderPasswordConfirm())):i.createElement("div",{className:"mx_AuthBody_fieldRow"},this.renderPassword(),this.renderPasswordConfirm()),i.createElement("div",null,i.createElement("form",{onSubmit:this.onSubmit},i.createElement("div",{className:"mx_AuthBody_fieldRow"},this.renderUsername()),n,i.createElement("div",{className:"mx_AuthBody_fieldRow"},this.renderEmail(),this.renderPhoneNumber()),t,e))}}function hb(e){const t=e.getIdentityServerUrl(!0);if(!t)throw new l.P7("settings|general|identity_server_not_set");return t}(0,w.A)(ub,"defaultProps",{onValidationChange:s.vF.error,canSubmit:!0});class pb{constructor(e){(0,w.A)(this,"sessionId",void 0),(0,w.A)(this,"submitUrl",void 0),(0,w.A)(this,"bind",!1),(0,w.A)(this,"clientSecret",void 0),(0,w.A)(this,"makeAddThreepidOnlyRequest",e=>this.matrixClient.addThreePidOnly({sid:this.sessionId,client_secret:this.clientSecret,auth:null!=e?e:void 0})),this.matrixClient=e,this.clientSecret=e.generateClientSecret()}async addEmailAddress(e){try{const t=await this.matrixClient.requestAdd3pidEmailToken(e,this.clientSecret,1);return this.sessionId=t.sid,t}catch(e){if(e instanceof o.MatrixError&&"M_THREEPID_IN_USE"===e.errcode)throw new l.P7("settings|general|email_address_in_use",{cause:e});if(e instanceof o.MatrixError&&"M_THREEPID_MEDIUM_NOT_SUPPORTED"===e.errcode)throw new l.P7("settings|general|email_adding_unsupported_by_hs",{cause:e});throw e}}async bindEmailAddress(e){var t;this.bind=!0;const n=new Iv.A,i=null!==(t=await n.getAccessToken())&&void 0!==t?t:void 0;try{const t=await this.matrixClient.requestEmailToken(e,this.clientSecret,1,void 0,i);return this.sessionId=t.sid,t}catch(e){if(e instanceof o.MatrixError&&"M_THREEPID_IN_USE"===e.errcode)throw new l.P7("settings|general|email_address_in_use",{cause:e});throw e}}async addMsisdn(e,t){try{const n=await this.matrixClient.requestAdd3pidMsisdnToken(e,t,this.clientSecret,1);return this.sessionId=n.sid,this.submitUrl=n.submit_url,n}catch(e){if(e instanceof o.MatrixError&&"M_THREEPID_IN_USE"===e.errcode)throw new l.P7("settings|general|msisdn_in_use",{cause:e});if(e instanceof o.MatrixError&&"M_THREEPID_MEDIUM_NOT_SUPPORTED"===e.errcode)throw new l.P7("settings|general|msisdn_adding_unsupported_by_hs",{cause:e});if(e instanceof o.MatrixError&&"M_INVALID_PARAM"===e.errcode)throw new l.P7("settings|general|invalid_phone_number",{cause:e});throw e}}async bindMsisdn(e,t){var n;this.bind=!0;const i=new Iv.A,s=null!==(n=await i.getAccessToken())&&void 0!==n?n:void 0;try{const n=await this.matrixClient.requestMsisdnToken(e,t,this.clientSecret,1,void 0,s);return this.sessionId=n.sid,n}catch(e){if(e instanceof o.MatrixError&&"M_THREEPID_IN_USE"===e.errcode)throw new l.P7("settings|general|msisdn_in_use",{cause:e});throw e}}async checkEmailLinkClicked(){try{if(this.bind){const e=new Iv.A,t=await e.getAccessToken();if(!t)throw new l.P7("settings|general|identity_server_no_token");await this.matrixClient.bindThreePid({sid:this.sessionId,client_secret:this.clientSecret,id_server:hb(this.matrixClient),id_access_token:t})}else try{return await this.makeAddThreepidOnlyRequest(),[!0]}catch(t){var e;if(!(t instanceof o.MatrixError&&401===t.httpStatus&&null!==(e=t.data)&&void 0!==e&&e.flows))throw t;const n={[fe.av.PHASE_PREAUTH]:{title:(0,l._t)("auth|uia|sso_title"),body:(0,l._t)("auth|uia|sso_body"),continueText:(0,l._t)("auth|sso"),continueKind:"primary"},[fe.av.PHASE_POSTAUTH]:{title:(0,l._t)("settings|general|confirm_adding_email_title"),body:(0,l._t)("settings|general|confirm_adding_email_body"),continueText:(0,l._t)("action|confirm"),continueKind:"primary"}},{finished:i}=R.Ay.createDialog(Ee.A,{title:(0,l._t)("settings|general|add_email_dialog_title"),matrixClient:this.matrixClient,authData:t.data,makeRequest:this.makeAddThreepidOnlyRequest,aestheticsForStagePhases:{[fe.av.LOGIN_TYPE]:n,[fe.av.UNSTABLE_LOGIN_TYPE]:n}});return i}}catch(e){if(e instanceof o.HTTPError&&401===e.httpStatus)throw new l.P7("settings|general|add_email_failed_verification",{cause:e});throw e}return[]}async haveMsisdnToken(e){const t=new Iv.A;if(this.submitUrl)await this.matrixClient.submitMsisdnTokenOtherUrl(this.submitUrl,this.sessionId,this.clientSecret,e);else{if(!this.bind)throw new l.P7("settings|general|add_msisdn_misconfigured");await this.matrixClient.submitMsisdnToken(this.sessionId,this.clientSecret,e,await t.getAccessToken())}if(this.bind)return await this.matrixClient.bindThreePid({sid:this.sessionId,client_secret:this.clientSecret,id_server:hb(this.matrixClient),id_access_token:await t.getAccessToken()}),[!0];try{return await this.makeAddThreepidOnlyRequest(),[!0]}catch(e){var n;if(!(e instanceof o.MatrixError&&401===e.httpStatus&&null!==(n=e.data)&&void 0!==n&&n.flows))throw e;const t={[fe.av.PHASE_PREAUTH]:{title:(0,l._t)("auth|uia|sso_title"),body:(0,l._t)("settings|general|add_msisdn_confirm_sso_button"),continueText:(0,l._t)("auth|sso"),continueKind:"primary"},[fe.av.PHASE_POSTAUTH]:{title:(0,l._t)("settings|general|add_msisdn_confirm_button"),body:(0,l._t)("settings|general|add_msisdn_confirm_body"),continueText:(0,l._t)("action|confirm"),continueKind:"primary"}},{finished:i}=R.Ay.createDialog(Ee.A,{title:(0,l._t)("settings|general|add_msisdn_dialog_title"),matrixClient:this.matrixClient,authData:e.data,makeRequest:this.makeAddThreepidOnlyRequest,aestheticsForStagePhases:{[fe.av.LOGIN_TYPE]:t,[fe.av.UNSTABLE_LOGIN_TYPE]:t}});return i}}}var gb=function(e){return e.Display="display",e.Edit="edit",e}(gb||{});class vb extends i.Component{constructor(e){super(e),(0,w.A)(this,"value",""),(0,w.A)(this,"placeholder",!1),(0,w.A)(this,"editableDiv",(0,i.createRef)()),(0,w.A)(this,"showPlaceholder",e=>{this.editableDiv.current&&(e?(this.editableDiv.current.textContent=this.props.placeholder,this.editableDiv.current.setAttribute("class",this.props.className+" "+this.props.placeholderClassName),this.placeholder=!0,this.value=""):(this.editableDiv.current.textContent=this.value,this.editableDiv.current.setAttribute("class",this.props.className),this.placeholder=!1))}),(0,w.A)(this,"cancelEdit",()=>{var e;this.setState({phase:gb.Display}),this.value=this.props.initialValue,this.showPlaceholder(!this.value),this.onValueChanged(!1),null===(e=this.editableDiv.current)||void 0===e||e.blur()}),(0,w.A)(this,"onValueChanged",e=>{var t,n;null===(t=(n=this.props).onValueChanged)||void 0===t||t.call(n,this.value,e)}),(0,w.A)(this,"onKeyDown",e=>{this.placeholder&&this.showPlaceholder(!1);if((0,Us.zM)().getAccessibilityAction(e)===si.bY.Enter)e.stopPropagation(),e.preventDefault()}),(0,w.A)(this,"onKeyUp",e=>{if(e.target.textContent){if(!this.placeholder){var t;this.value=null!==(t=e.target.textContent)&&void 0!==t?t:""}}else this.showPlaceholder(!0);switch((0,Us.zM)().getAccessibilityAction(e)){case si.bY.Escape:this.cancelEdit();break;case si.bY.Enter:this.onFinish(e)}}),(0,w.A)(this,"onClickDiv",()=>{this.props.editable&&this.setState({phase:gb.Edit})}),(0,w.A)(this,"onFocus",e=>{const t=e.target.childNodes[0];if(t){const n=document.createRange();n.setStart(t,0),n.setEnd(t,e.target.childNodes.length);const i=window.getSelection();i.removeAllRanges(),i.addRange(n)}}),(0,w.A)(this,"onFinish",(e,t=!1)=>{const n=this,i=(0,Us.zM)().getAccessibilityAction(e)===si.bY.Enter||t;this.setState({phase:gb.Display},()=>{this.value!==this.props.initialValue&&n.onValueChanged(i)})}),(0,w.A)(this,"onBlur",e=>{window.getSelection().removeAllRanges(),this.props.blurToCancel?this.cancelEdit():this.onFinish(e,this.props.blurToSubmit),this.showPlaceholder(!this.value)}),this.state={phase:gb.Display}}componentDidUpdate(e){e.initialValue!==this.props.initialValue&&(this.value=this.props.initialValue,this.editableDiv.current&&this.showPlaceholder(!this.value))}componentDidMount(){this.value=this.props.initialValue,this.editableDiv.current&&this.showPlaceholder(!this.value)}render(){const{className:e,editable:t,initialValue:n,label:s,labelClassName:o}=this.props;let r;return r=!t||this.state.phase===gb.Display&&(s||o)&&!this.value?i.createElement("div",{className:e+" "+o,onClick:this.onClickDiv},s||n):i.createElement("div",{ref:this.editableDiv,contentEditable:!0,className:e,onKeyDown:this.onKeyDown,onKeyUp:this.onKeyUp,onFocus:this.onFocus,onBlur:this.onBlur}),r}}(0,w.A)(vb,"defaultProps",{onValueChanged(){},initialValue:"",label:"",placeholder:"",editable:!0,className:"mx_EditableText",placeholderClassName:"mx_EditableText_placeholder",blurToSubmit:!1});class _b extends i.Component{constructor(e){super(e),(0,w.A)(this,"addThreepid",void 0),(0,w.A)(this,"onEmailAddressChanged",e=>{this.setState({emailAddress:e})}),(0,w.A)(this,"onSubmit",()=>{const e=this.state.emailAddress;sf.X(e)?(this.addThreepid=new pb(v.J.safeGet()),this.addThreepid.addEmailAddress(e).then(()=>{const{finished:e}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("auth|set_email|verification_pending_title"),description:(0,l._t)("auth|set_email|verification_pending_description"),button:(0,l._t)("action|continue")});e.then(([e])=>this.onEmailDialogFinished(e))},t=>{this.setState({emailBusy:!1}),s.vF.error("Unable to add email address "+e+" "+t),R.Ay.createDialog(It.A,{title:(0,l._t)("settings|general|error_add_email"),description:(0,It.$)(t,(0,l._t)("invite|failed_generic"))})}),this.setState({emailBusy:!0})):R.Ay.createDialog(It.A,{title:(0,l._t)("settings|general|error_invalid_email"),description:(0,l._t)("settings|general|error_invalid_email_detail")})}),(0,w.A)(this,"onCancelled",()=>{this.props.onFinished(!1)}),(0,w.A)(this,"onEmailDialogFinished",e=>{e?this.verifyEmailAddress():this.setState({emailBusy:!1})}),this.state={emailAddress:"",emailBusy:!1}}verifyEmailAddress(){var e;null===(e=this.addThreepid)||void 0===e||e.checkEmailLinkClicked().then(()=>{this.props.onFinished(!0)},e=>{this.setState({emailBusy:!1});let t=e;if(e instanceof l.P7&&(t=e.cause),t instanceof o.MatrixError&&"M_THREEPID_AUTH_FAILED"===t.errcode){const e=(0,l._t)("settings|general|error_email_verification")+" "+(0,l._t)("auth|set_email|verification_pending_description"),{finished:t}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("auth|set_email|verification_pending_title"),description:e,button:(0,l._t)("action|continue")});t.then(([e])=>this.onEmailDialogFinished(e))}else s.vF.error("Unable to verify email address: "+e),R.Ay.createDialog(It.A,{title:(0,l._t)("settings|general|error_email_verification"),description:(0,It.$)(e,(0,l._t)("invite|failed_generic"))})})}render(){const e=this.state.emailBusy?i.createElement(ce.A,null):i.createElement(vb,{initialValue:this.state.emailAddress,className:"mx_SetEmailDialog_email_input",placeholder:(0,l._t)("common|email_address"),placeholderClassName:"mx_SetEmailDialog_email_input_placeholder",blurToCancel:!1,onValueChanged:this.onEmailAddressChanged});return i.createElement(Q.A,{className:"mx_SetEmailDialog",onFinished:this.onCancelled,title:this.props.title,contentId:"mx_Dialog_content"},i.createElement("div",{className:"mx_Dialog_content"},i.createElement("p",{id:"mx_Dialog_content"},(0,l._t)("auth|set_email|description")),e),i.createElement("div",{className:"mx_Dialog_buttons"},i.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,l._t)("action|continue"),onClick:this.onSubmit}),i.createElement("input",{type:"submit",value:(0,l._t)("action|skip"),onClick:this.onCancelled})))}}const fb="field_old_password",Eb="field_new_password",yb="field_new_password_confirm";var bb=function(e){return e.Edit="edit",e.Uploading="uploading",e.Error="error",e}(bb||{});class wb extends i.Component{constructor(e){super(e),(0,w.A)(this,fb,null),(0,w.A)(this,Eb,null),(0,w.A)(this,yb,null),(0,w.A)(this,"onChangeOldPassword",e=>{this.setState({oldPassword:e.target.value})}),(0,w.A)(this,"onOldPasswordValidate",async e=>{const t=await this.validateOldPasswordRules(e);return this.markFieldValid(fb,t.valid),t}),(0,w.A)(this,"validateOldPasswordRules",(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("auth|change_password_empty")}]})),(0,w.A)(this,"onChangeNewPassword",e=>{this.setState({newPassword:e.target.value})}),(0,w.A)(this,"onNewPasswordValidate",e=>{this.markFieldValid(Eb,e.valid)}),(0,w.A)(this,"onChangeNewPasswordConfirm",e=>{this.setState({newPasswordConfirm:e.target.value})}),(0,w.A)(this,"onNewPasswordConfirmValidate",async e=>{const t=await this.validatePasswordConfirmRules(e);return this.markFieldValid(yb,t.valid),t}),(0,w.A)(this,"validatePasswordConfirmRules",(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("auth|change_password_confirm_label")},{key:"match",test({value:e}){return!e||e===this.state.newPassword},invalid:()=>(0,l._t)("auth|change_password_confirm_invalid")}]})),(0,w.A)(this,"onClickChange",async e=>{e.preventDefault();if(!await this.verifyFieldsBeforeSubmit())return;const t=this.state.oldPassword,n=this.state.newPassword,i=this.state.newPasswordConfirm;try{return this.checkPassword(t,n,i),this.onChangePassword(t,n)}catch(e){e instanceof Error?this.props.onError(e):this.props.onError(new l.P7("auth|change_password_error",{error:String(e),cause:void 0}))}}),this.state={fieldValid:{},phase:bb.Edit,oldPassword:"",newPassword:"",newPasswordConfirm:""}}async onChangePassword(e,t){const n=v.J.safeGet();this.changePassword(n,e,t)}changePassword(e,t,n){const i={type:"m.login.password",identifier:{type:"m.id.user",user:e.credentials.userId},password:t};this.setState({phase:bb.Uploading}),e.setPassword(i,n,!1).then(()=>{if(this.props.shouldAskForEmail)return this.optionallySetEmail().then(e=>{this.props.onFinished({didSetEmail:e})});this.props.onFinished({})},e=>{e instanceof Error?this.props.onError(e):this.props.onError(new l.P7("auth|change_password_error",{error:String(e),cause:void 0}))}).finally(()=>{this.setState({phase:bb.Edit,oldPassword:"",newPassword:"",newPasswordConfirm:""})})}checkPassword(e,t,n){if(t!==n)throw new l.P7("auth|change_password_mismatch");if(!t||0===t.length)throw new l.P7("auth|change_password_empty")}optionallySetEmail(){return R.Ay.createDialog(_b,{title:(0,l._t)("auth|set_email_prompt")}).finished.then(([e])=>!!e)}markFieldValid(e,t){const{fieldValid:n}=this.state;n[e]=t,this.setState({fieldValid:n})}async verifyFieldsBeforeSubmit(){const e=document.activeElement;e&&e.blur();const t=[fb,Eb,yb];for(const e of t){const t=this[e];t&&await t.validate({allowEmpty:!1})}if(await new Promise(e=>this.setState({},e)),this.allFieldsValid())return!0;const n=this.findFirstInvalidField(t);return!n||(n.focus(),n.validate({allowEmpty:!1,focused:!0}),!1)}allFieldsValid(){return Object.values(this.state.fieldValid).every(Boolean)}findFirstInvalidField(e){for(const t of e)if(!this.state.fieldValid[t]&&this[t])return this[t];return null}render(){const e=this.props.rowClassName,t=this.props.buttonClassName;switch(this.state.phase){case bb.Edit:return i.createElement("form",{className:this.props.className,onSubmit:this.onClickChange},i.createElement("div",{className:e},i.createElement(qs.A,{ref:e=>{this[fb]=e},type:"password",label:(0,l._t)("auth|change_password_current_label"),value:this.state.oldPassword,onChange:this.onChangeOldPassword,onValidate:this.onOldPasswordValidate})),i.createElement("div",{className:e},i.createElement($y.A,{fieldRef:e=>{this[Eb]=e},type:"password",label:(0,l.AO)("auth|change_password_new_label"),minScore:3,value:this.state.newPassword,autoFocus:this.props.autoFocusNewPasswordInput,onChange:this.onChangeNewPassword,onValidate:this.onNewPasswordValidate,autoComplete:"new-password"})),i.createElement("div",{className:e},i.createElement(qs.A,{ref:e=>{this[yb]=e},type:"password",label:(0,l._t)("auth|change_password_confirm_label"),value:this.state.newPasswordConfirm,onChange:this.onChangeNewPasswordConfirm,onValidate:this.onNewPasswordConfirmValidate,autoComplete:"new-password"})),i.createElement(le.A,{className:t,kind:this.props.buttonKind,onClick:this.onClickChange},this.props.buttonLabel||(0,l._t)("auth|change_password_action")));case bb.Uploading:return i.createElement("div",{className:"mx_Dialog_content"},i.createElement(ce.A,null))}}}(0,w.A)(wb,"defaultProps",{onFinished(){},onError(){},confirm:!0});const Sb=({mode:e,threepid:t,onChange:n,disabled:r})=>{const[a,c]=(0,i.useState)(!1),d=(0,de.nH)(),m=(0,i.useRef)(void 0),[u,h]=(0,i.useState)(!1),[p,g]=(0,i.useState)(!1),[v,_]=(0,i.useState)(""),f=(0,i.useCallback)(e=>{e.stopPropagation(),e.preventDefault(),c(!0)},[]),E=(0,i.useCallback)(e=>{e.stopPropagation(),e.preventDefault(),c(!1)},[]),y=(0,i.useCallback)(e=>{e.stopPropagation(),e.preventDefault(),d.deleteThreePid(t.medium,t.address).then(()=>n(t)).catch(e=>{var t;s.vF.error("Unable to remove contact information: "+e),R.Ay.createDialog(It.A,{title:(0,l._t)("settings|general|error_remove_3pid"),description:null!==(t=null==e?void 0:e.message)&&void 0!==t?t:(0,l._t)("invite|failed_generic")})})},[d,t,n]),b=(0,i.useCallback)(async({bind:e,label:i,errorTitle:r})=>{try{e?(m.current=new pb(d),g(!0),t.medium===o.ThreepidMedium.Email?await m.current.bindEmailAddress(t.address):await m.current.bindMsisdn(null,`+${t.address}`),g(!1),h(!0)):(await d.unbindThreePid(t.medium,t.address),n(t))}catch(e){s.vF.error(`changeBinding: Unable to ${i} email address ${t.address}`,e),h(!1),g(!1),m.current=void 0,R.Ay.createDialog(It.A,{title:r,description:(0,It.$)(e,(0,l._t)("invite|failed_generic"))})}},[d,t,n]),w=(0,i.useCallback)(e=>{e.stopPropagation(),e.preventDefault(),b({bind:!1,label:"revoke",errorTitle:"email"===t.medium?(0,l._t)("settings|general|error_revoke_email_discovery"):(0,l._t)("settings|general|error_revoke_msisdn_discovery")}).then()},[b,t.medium]),S=(0,i.useCallback)(e=>{e.stopPropagation(),e.preventDefault(),b({bind:!0,label:"share",errorTitle:"email"===t.medium?(0,l._t)("settings|general|error_share_email_discovery"):(0,l._t)("settings|general|error_share_msisdn_discovery")}).then()},[b,t.medium]),A=(0,i.useCallback)(async e=>{e.stopPropagation(),e.preventDefault(),g(!0);try{var i,r;if(t.medium===o.ThreepidMedium.Email)await(null===(i=m.current)||void 0===i?void 0:i.checkEmailLinkClicked());else await(null===(r=m.current)||void 0===r?void 0:r.haveMsisdnToken(v));h(!1),n(t),m.current=void 0}catch(e){s.vF.error("Unable to verify threepid:",e);let n=e;e instanceof l.P7&&(n=e.cause),n instanceof o.MatrixError&&"M_THREEPID_AUTH_FAILED"===n.errcode?R.Ay.createDialog(It.A,{title:"email"===t.medium?(0,l._t)("settings|general|email_not_verified"):(0,l._t)("settings|general|error_msisdn_verification"),description:"email"===t.medium?(0,l._t)("settings|general|email_verification_instructions"):(0,It.$)(e,(0,l._t)("invite|failed_generic"))}):(s.vF.error("Unable to verify email address: "+e),R.Ay.createDialog(It.A,{title:(0,l._t)("settings|general|error_email_verification"),description:(0,It.$)(e,(0,l._t)("invite|failed_generic"))}))}finally{g(!1)}},[v,n,t]),C=(0,i.useCallback)(e=>{_(e.target.value)},[]);return a?i.createElement("div",{className:"mx_AddRemoveThreepids_existing"},i.createElement("span",{className:"mx_AddRemoveThreepids_existing_promptText"},t.medium===o.ThreepidMedium.Email?(0,l._t)("settings|general|remove_email_prompt",{email:t.address}):(0,l._t)("settings|general|remove_msisdn_prompt",{phone:t.address})),i.createElement(le.A,{onClick:y,kind:"danger_sm",className:"mx_AddRemoveThreepids_existing_button"},(0,l._t)("action|remove")),i.createElement(le.A,{onClick:E,kind:"link_sm",className:"mx_AddRemoveThreepids_existing_button"},(0,l._t)("action|cancel"))):u?t.medium===o.ThreepidMedium.Email?i.createElement("div",{className:"mx_EmailAddressesPhoneNumbers_verify"},i.createElement("span",{className:"mx_EmailAddressesPhoneNumbers_verify_instructions"},(0,l._t)("settings|general|discovery_email_verification_instructions")),i.createElement(le.A,{className:"mx_EmailAddressesPhoneNumbers_existing_button",kind:"primary_sm",onClick:A,disabled:p},(0,l._t)("action|complete"))):i.createElement("div",{className:"mx_EmailAddressesPhoneNumbers_verify"},i.createElement("span",{className:"mx_EmailAddressesPhoneNumbers_verify_instructions"},(0,l._t)("settings|general|msisdn_verification_instructions")),i.createElement("form",{onSubmit:A,autoComplete:"off",noValidate:!0},i.createElement(qs.A,{type:"text",label:(0,l._t)("settings|general|msisdn_verification_field_label"),autoComplete:"off",disabled:p,value:v,onChange:C}))):i.createElement("div",{className:"mx_AddRemoveThreepids_existing"},i.createElement("span",{className:"mx_AddRemoveThreepids_existing_address"},t.address),i.createElement(le.A,{onClick:"hs"===e?f:t.bound?w:S,kind:"hs"===e||t.bound?"danger_sm":"primary_sm",disabled:r},"hs"===e?(0,l._t)("action|remove"):t.bound?(0,l._t)("action|revoke"):(0,l._t)("action|share")))};const Ab=({medium:e,disabled:t,onChange:n})=>{const r=(0,i.useRef)(void 0),[a,c]=(0,i.useState)(""),[d,m]=(0,i.useState)(""),[u,h]=(0,i.useState)(""),[p,g]=(0,i.useState)(!1),[v,_]=(0,i.useState)(!1),[f,E]=(0,i.useState)(""),y=(0,de.nH)(),b=(0,i.useCallback)(e=>{m(e.iso2)},[]),w=(0,i.useCallback)(t=>{var i,a;if(t.stopPropagation(),t.preventDefault(),!r.current)return;_(!0);("email"===e?null===(i=r.current)||void 0===i?void 0:i.checkEmailLinkClicked():null===(a=r.current)||void 0===a?void 0:a.haveMsisdnToken(u)).then(([e])=>{e&&(r.current=void 0,g(!1),c(""),n()),_(!1)}).catch(t=>{s.vF.error("Unable to verify 3pid: ",t),_(!1);let n=t;t instanceof l.P7&&(n=t.cause),n instanceof o.MatrixError&&"M_THREEPID_AUTH_FAILED"===n.errcode?R.Ay.createDialog(It.A,{title:"email"===e?(0,l._t)("settings|general|email_not_verified"):(0,l._t)("settings|general|error_msisdn_verification"),description:(0,l._t)("settings|general|email_verification_instructions")}):R.Ay.createDialog(It.A,{title:"email"==e?(0,l._t)("settings|general|error_email_verification"):(0,l._t)("settings|general|error_msisdn_verification"),description:(0,It.$)(t,(0,l._t)("invite|failed_generic"))})})},[n,e,u]),S=(0,i.useCallback)(e=>{c(e.target.value)},[]),A=(0,i.useCallback)(t=>{if(t.stopPropagation(),t.preventDefault(),!a)return;if("email"===e&&!(0,sf.X)(a))return void R.Ay.createDialog(It.A,{title:(0,l._t)("settings|general|error_invalid_email"),description:(0,l._t)("settings|general|error_invalid_email_detail")});r.current=new pb(y),g(!0),_(!0);("email"===e?r.current.addEmailAddress(a):r.current.addMsisdn(d,a)).then(e=>{_(!1),function(e){return void 0!==e.msisdn}(e)&&E(e.msisdn)}).catch(t=>{s.vF.error(`Unable to add threepid ${a}`,t),g(!1),_(!1),r.current=void 0,R.Ay.createDialog(It.A,{title:"email"===e?(0,l._t)("settings|general|error_add_email"):(0,l._t)("common|error"),description:(0,It.$)(t,(0,l._t)("invite|failed_generic"))})})},[y,d,a,e]),C=(0,i.useCallback)(e=>{h(e.target.value)},[]);if(p&&"email"===e)return i.createElement("div",null,i.createElement("div",null,(0,l._t)("settings|general|add_email_instructions")),i.createElement(le.A,{onClick:w,kind:"primary",disabled:v},(0,l._t)("action|continue")));if(p)return i.createElement("div",null,i.createElement("div",null,(0,l._t)("settings|general|add_msisdn_instructions",{msisdn:f}),i.createElement("br",null)),i.createElement("form",{onSubmit:w,autoComplete:"off",noValidate:!0},i.createElement(qs.A,{type:"text",label:(0,l._t)("settings|general|msisdn_verification_field_label"),autoComplete:"off",disabled:t||v,value:u,onChange:C}),i.createElement(le.A,{onClick:w,kind:"primary",disabled:t||v||0===u.length},(0,l._t)("action|continue"))));const x="msisdn"===e?i.createElement(ib,{onOptionChange:b,className:"mx_PhoneNumbers_country",value:d,disabled:p,isSmall:!0,showPrefix:!0}):void 0;return i.createElement("form",{onSubmit:A,autoComplete:"off",noValidate:!0},i.createElement(qs.A,{type:"text",label:"email"===e?(0,l._t)("settings|general|email_address_label"):(0,l._t)("settings|general|msisdn_label"),autoComplete:"email"===e?"email":"tel-national",disabled:t||p,value:a,onChange:S,prefixComponent:x}),i.createElement(le.A,{onClick:A,kind:"primary",disabled:t},(0,l._t)("action|add")))},Cb=({mode:e,medium:t,threepids:n,disabled:s,onChange:o,isLoading:r})=>{if(r)return i.createElement(Ra.A,null);const a=n.map(t=>i.createElement(Sb,{mode:e,threepid:t,onChange:o,key:t.address,disabled:s}));return i.createElement(i.Fragment,null,a,"hs"===e&&i.createElement(Ab,{medium:t,disabled:s,onChange:o}))},xb=({error:e,loadingState:t,children:n})=>"loading"===t?i.createElement(Ra.A,null):"error"===t?i.createElement(Fy.F,{type:"critical",title:(0,l._t)("common|error")},e):i.createElement(i.Fragment,null,n),Rb=({canMake3pidChanges:e})=>{const[t,n]=(0,i.useState)(),[s,r]=(0,i.useState)(),[a,c]=(0,i.useState)("loading"),d=(0,de.nH)(),m=(0,i.useCallback)(async()=>{try{const e=await d.getThreePids();n(e.threepids.filter(e=>e.medium===o.ThreepidMedium.Email)),r(e.threepids.filter(e=>e.medium===o.ThreepidMedium.Phone)),c("loaded")}catch{c("error")}},[d]);(0,i.useEffect)(()=>{m().then()},[m]);const u=(0,i.useCallback)(()=>{m().then()},[m]),h=(0,i.useCallback)(()=>{m().then()},[m]);return D.A.getValue(gt.f.ThirdPartyID)?i.createElement("div",null,i.createElement("h2",null,(0,l._t)("settings|general|personal_info")),i.createElement(ao.P,{heading:(0,l._t)("settings|general|emails_heading"),stretchContent:!0},i.createElement(xb,{error:(0,l._t)("settings|general|unable_to_load_emails"),loadingState:a},i.createElement(Cb,{mode:"hs",medium:o.ThreepidMedium.Email,threepids:t,onChange:u,disabled:!e,isLoading:"loading"===a}))),i.createElement(ao.P,{heading:(0,l._t)("settings|general|msisdns_heading"),stretchContent:!0},i.createElement(xb,{error:(0,l._t)("settings|general|unable_to_load_msisdns"),loadingState:a},i.createElement(Cb,{mode:"hs",medium:o.ThreepidMedium.Phone,threepids:s,onChange:h,disabled:!e,isLoading:"loading"===a})))):null},kb=({canChangePassword:e,onPasswordChangeError:t,onPasswordChanged:n})=>e?i.createElement(i.Fragment,null,i.createElement(ao.P,{heading:(0,l._t)("settings|general|account_section"),stretchContent:!0},i.createElement(ao.s,null,(0,l._t)("settings|general|password_change_section")),i.createElement(wb,{rowClassName:"",buttonKind:"primary",onError:t,onFinished:n}))):i.createElement(i.Fragment,null),Ib=({onDeactivateClicked:e})=>i.createElement(ro.X,{heading:(0,l._t)("settings|general|deactivate_section")},i.createElement(ao.P,{heading:(0,l._t)("settings|general|account_management_section"),description:(0,l._t)("settings|general|deactivate_warning")},i.createElement(le.A,{onClick:e,kind:"danger"},(0,l._t)("settings|general|deactivate_section")))),Tb=({closeSettingsFn:e})=>{const[t,n]=i.useState(),[r,a]=i.useState(!1),[c,d]=i.useState(!1),[m,u]=i.useState(!1),[h,p]=i.useState(!1),g=(0,de.nH)(),v=(0,i.useContext)(Do.A);(0,i.useEffect)(()=>{(async e=>{const t=null!==(e=await g.getCapabilities())&&void 0!==e?e:{},i=t["m.change_password"],s=!i||!1!==i.enabled;await v.oidcClientStore.readyPromise;const o=v.oidcClientStore.accountManagementEndpoint,r=!t["m.3pid_changes"]||!0===t["m.3pid_changes"].enabled,l=!t["m.set_displayname"]||!0===t["m.set_displayname"].enabled,c=!t["m.set_avatar_url"]||!0===t["m.set_avatar_url"].enabled;a(r),d(l),u(c),n(o),p(s)})()},[g,v.oidcClientStore]);const _=(0,i.useCallback)(e=>{s.vF.error("Failed to change password: "+e);let t=e;e instanceof l.P7&&e.cause instanceof Error&&(t=e.cause);const n=(0,It.$)(e,(0,l._t)("settings|general|error_password_change_unknown",{stringifiedError:String(e)}));let i=n;t instanceof o.HTTPError&&403===t.httpStatus?i=(0,l._t)("settings|general|error_password_change_403"):t instanceof o.HTTPError&&(i=(0,l._t)("settings|general|error_password_change_http",{errorMessage:n,httpStatus:t.httpStatus})),R.Ay.createDialog(It.A,{title:(0,l._t)("settings|general|error_password_change_title"),description:i})},[]),f=(0,i.useCallback)(()=>{const e=(0,l._t)("settings|general|password_change_success");R.Ay.createDialog(It.A,{title:(0,l._t)("common|success"),description:e})},[]),E=(0,i.useCallback)(()=>{const{finished:t}=R.Ay.createDialog(Jy);t.then(([t])=>{t&&e()})},[e]);let y;const b=Boolean(t);return D.A.getValue(gt.f.Deactivate)&&!b&&(y=i.createElement(Ib,{onDeactivateClicked:E})),i.createElement(oo.A,null,i.createElement(ro.X,null,i.createElement(Ky,{externalAccountManagementUrl:t,canSetDisplayName:c,canSetAvatar:m}),(!b||r)&&i.createElement(Rb,{canMake3pidChanges:r}),i.createElement(kb,{canChangePassword:h,onPasswordChanged:f,onPasswordChangeError:_})),y)};var Pb=n("./src/components/views/elements/SettingsFlag.tsx"),Nb=n("./src/utils/maps.ts");const Mb=()=>c.Ay.get("show_labs_settings")||D.A.getValue("developerMode");class Db extends i.Component{constructor(e){super(e),(0,w.A)(this,"labs",void 0),(0,w.A)(this,"betas",void 0);const t=D.A.getFeatureSettingNames(),[n,i]=t.reduce((e,t)=>(e[D.A.getBetaInfo(t)?1:0].push(t),e),[[],[]]);this.labs=n,this.betas=i,Mb()||(this.labs=[])}render(){let e,t;if(this.betas.length&&(e=i.createElement(i.Fragment,null,this.betas.map(e=>i.createElement(Sa.A,{key:e,featureId:e})))),this.labs.length){const e=new Nb.h;this.labs.forEach(t=>{e.getOrCreate(D.A.getLabGroup(t),[]).push(i.createElement(Pb.A,{level:O.p.DEVICE,name:t,key:t}))}),e.getOrCreate(tl.$q.Experimental,[]).push(i.createElement(Pb.A,{key:"lowBandwidth",name:"lowBandwidth",level:O.p.DEVICE})),e.getOrCreate(tl.$q.Analytics,[]).push(i.createElement(Pb.A,{key:"automaticErrorReporting",name:"automaticErrorReporting",level:O.p.DEVICE}),i.createElement(Pb.A,{key:"automaticDecryptionErrorReporting",name:"automaticDecryptionErrorReporting",level:O.p.DEVICE})),t=i.createElement(i.Fragment,null,(0,Kt.sortBy)(Array.from(e.entries()),"0").map(([e,t])=>i.createElement(ao.P,{key:e,heading:(0,l._t)(tl.B2[e])},t)))}return i.createElement(oo.A,null,i.createElement(ro.X,{heading:(0,l._t)("labs|beta_section")},i.createElement(ao.s,null,(0,l._t)("labs|beta_description",{brand:c.Ay.get("brand")})),e),t&&i.createElement(ro.X,{heading:(0,l._t)("labs|experimental_section")},i.createElement(ao.s,null,(0,l._t)("labs|experimental_description",{},{a:e=>i.createElement("a",{href:"https://github.com/vector-im/element-web/blob/develop/docs/labs.md",rel:"noreferrer noopener",target:"_blank"},e)})),t))}}var Ob=n("./node_modules/@vector-im/compound-web/dist/components/Form/Controls/Radio/Radio.js"),Fb=n("./node_modules/@vector-im/compound-web/dist/components/Form/InlineField.js"),Lb=n("./node_modules/@vector-im/compound-web/dist/components/Form/Controls/Toggle/Toggle.js");class Ub extends i.Component{constructor(e){super(e),this.state={message:e.message}}fakeEvent({message:e}){const t={type:"m.room.message",sender:this.props.userId,content:{"m.new_content":{msgtype:o.MsgType.Text,body:e,displayname:this.props.displayName,avatar_url:this.props.avatarUrl},msgtype:o.MsgType.Text,body:e,displayname:this.props.displayName,avatar_url:this.props.avatarUrl},unsigned:{age:97},event_id:"$9999999999999999999999999999999999999999999",room_id:"!999999999999999999:example.org"},n=new o.MatrixEvent(t);return n.sender={name:this.props.displayName||this.props.userId,rawDisplayName:this.props.displayName,userId:this.props.userId,getAvatarUrl:(...e)=>jt.r4({avatarUrl:this.props.avatarUrl},32,32,"crop"),getMxcAvatarUrl:()=>this.props.avatarUrl},n}render(){const e=Lt()(this.props.className,{mx_IRCLayout:this.props.layout==Bt.P.IRC,mx_EventTilePreview_loader:!this.props.userId});if(!this.props.userId)return i.createElement("div",{className:e},i.createElement(ce.A,null));const t=this.fakeEvent(this.state);return i.createElement("div",{className:e,role:"presentation"},i.createElement(bs,{mxEvent:t,layout:this.props.layout,as:"div",hideTimestamp:!0,inhibitInteraction:!0}))}}function Vb(){return i.createElement(ao.P,{heading:(0,l._t)("common|message_layout"),legacy:!1},i.createElement(Bb,null),i.createElement(Wb,null))}function Bb(){return i.createElement(Em.b,{className:"mx_LayoutSwitcher_LayoutSelector",onChange:async e=>{const t=new FormData(e.currentTarget).get("layout");await D.A.setValue("layout",null,O.p.DEVICE,t)}},i.createElement(jb,{layout:Bt.P.Group,label:(0,l._t)("common|modern")}),i.createElement(jb,{layout:Bt.P.Bubble,label:(0,l._t)("settings|appearance|layout_bubbles")}),i.createElement(jb,{layout:Bt.P.IRC,label:(0,l._t)("settings|appearance|layout_irc")}))}function jb({layout:e,label:t}){const n=(0,Vt.ti)("layout"),s=function(){const e=(0,de.nH)(),t=e.getSafeUserId(),[n,s]=(0,i.useState)({userId:t});return(0,i.useEffect)(()=>{(async()=>{const n=await e.getProfileInfo(t);s({userId:t,displayName:n.displayname,avatarUrl:n.avatar_url})})()},[t,e,s]),n}();return i.createElement(qu.D,{name:"layout",className:"mxLayoutSwitcher_LayoutSelector_LayoutRadio"},i.createElement(Yu.J,{"aria-label":t},i.createElement("div",{className:"mxLayoutSwitcher_LayoutSelector_LayoutRadio_inline"},i.createElement(Ob.b,{name:"layout",value:e,defaultChecked:n===e}),i.createElement("span",null,t)),i.createElement("hr",{className:"mxLayoutSwitcher_LayoutSelector_LayoutRadio_separator"}),i.createElement(Ub,(0,Wt.A)({message:(0,l._t)("common|preview_message"),layout:e,className:"mxLayoutSwitcher_LayoutSelector_LayoutRadio_EventTilePreview"},s))))}function Wb(){const e=(0,Vt.ti)("useCompactLayout"),t=(0,Vt.ti)("layout");return i.createElement(Em.b,{onChange:async e=>{const t="on"===new FormData(e.currentTarget).get("compactLayout");await D.A.setValue("useCompactLayout",null,O.p.DEVICE,t)}},i.createElement(Fb.I,{name:"compactLayout",control:i.createElement(Lb._,{disabled:t!==Bt.P.Group,name:"compactLayout",defaultChecked:e})},i.createElement(Yu.J,null,(0,l._t)("settings|appearance|compact_layout")),i.createElement(Xu.po,null,(0,l._t)("settings|appearance|compact_layout_description"))))}class Hb extends i.Component{constructor(e){super(e),(0,w.A)(this,"MESSAGE_PREVIEW_TEXT",(0,l._t)("common|preview_message")),(0,w.A)(this,"sizes",[9,10,11,12,13,14,15,16,17,18,20,22,24,26,28,30,32,34,36]),(0,w.A)(this,"layoutWatcherRef",void 0),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"onFontSizeChanged",async e=>{const t=parseInt(e,10)||0;this.setState({fontSizeDelta:t}),await D.A.setValue("fontSizeDelta",null,O.p.DEVICE,t)}),(0,w.A)(this,"computeDeltaFontSize",e=>e-this.state.browserFontSize),this.state={fontSizeDelta:D.A.getValue("fontSizeDelta",null),browserFontSize:ia.g.getBrowserDefaultFontSize(),useCustomFontSize:D.A.getValue("useCustomFontSize"),layout:D.A.getValue("layout")}}async componentDidMount(){this.unmounted=!1;const e=v.J.safeGet(),t=e.getSafeUserId(),n=await e.getProfileInfo(t);this.layoutWatcherRef=D.A.watchSetting("layout",null,()=>{const e=D.A.getValue("layout");this.state.layout!==e&&this.setState({layout:e})}),this.unmounted||this.setState({userId:t,displayName:n.displayname,avatarUrl:n.avatar_url})}componentWillUnmount(){this.unmounted=!0,D.A.unwatchSetting(this.layoutWatcherRef)}render(){return i.createElement(ao.P,{heading:(0,l._t)("settings|appearance|font_size"),stretchContent:!0},i.createElement(qs.A,{element:"select",className:"mx_FontScalingPanel_Dropdown",label:(0,l._t)("settings|appearance|font_size"),value:this.state.fontSizeDelta.toString(),onChange:e=>this.onFontSizeChanged(e.target.value)},this.sizes.map(e=>i.createElement("option",{key:e,value:this.computeDeltaFontSize(e)},e===this.state.browserFontSize?(0,l._t)("settings|appearance|font_size_default",{fontSize:e}):e))),i.createElement(Ub,{className:"mx_FontScalingPanel_preview",message:this.MESSAGE_PREVIEW_TEXT,layout:this.state.layout,userId:this.state.userId,displayName:this.state.displayName,avatarUrl:this.state.avatarUrl}))}}function zb(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 Kb(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zb(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zb(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Gb(){const e=Ya(),t=(0,i.useMemo)(()=>new na.A,[]),n=(0,Vt.ti)("feature_custom_themes");return i.createElement(ao.P,{heading:(0,l._t)("common|theme"),legacy:!1},t.isSystemThemeSupported()&&i.createElement(Jb,{systemThemeActivated:e.systemThemeActivated}),i.createElement($b,{theme:e.theme,disabled:e.systemThemeActivated}),n&&i.createElement(qb,{theme:e.theme}))}function Jb({systemThemeActivated:e}){return i.createElement(Em.b,{onChange:async e=>{const t="on"===new FormData(e.currentTarget).get("systemTheme");await D.A.setValue("use_system_theme",null,O.p.DEVICE,t),S.A.dispatch({action:H.r.RecheckTheme})}},i.createElement(Fb.I,{name:"systemTheme",control:i.createElement(Lb._,{name:"systemTheme",defaultChecked:e})},i.createElement(Yu.J,null,D.A.getDisplayName("use_system_theme"))))}function $b({theme:e,disabled:t}){const n=function(){const e=(0,Vt.ti)("custom_themes");return(0,i.useMemo)(()=>{const t=(e||[]).reduce((e,t)=>e.set(t.name,t),new Map),n=(0,$a.E0)(),i=n.filter(e=>!t.has(e.name)),s=n.filter(e=>t.has(e.name)),o=function(){const e=(0,$a.TJ)("light");if(e)return{name:(0,l._t)("settings|appearance|high_contrast"),id:e}}();o&&i.push(o);return i.concat(s).map(e=>{const n=t.get(e.name),i=(n?n.is_dark:e.id.includes("dark"))||!1;return Kb(Kb({},e),{},{isDark:i})})},[e])}();return i.createElement(Em.b,{className:"mx_ThemeChoicePanel_ThemeSelectors",onChange:async t=>{const n=new FormData(t.currentTarget).get("themeSelector");n&&e!==n&&(D.A.setValue("theme",null,O.p.DEVICE,n).catch(()=>{S.A.dispatch({action:H.r.RecheckTheme})}),S.A.dispatch({action:H.r.RecheckTheme,forceTheme:n}))}},n.map(n=>{const s=e===n.id;return i.createElement(Fb.I,{className:Lt()("mx_ThemeChoicePanel_themeSelector",{mx_ThemeChoicePanel_themeSelector_enabled:!t&&e===n.id,mx_ThemeChoicePanel_themeSelector_disabled:t,"cpd-theme-light":!n.isDark,"cpd-theme-dark":n.isDark}),name:"themeSelector",key:n.id,control:i.createElement(Ob.b,{name:"themeSelector",checked:!t&&s,disabled:t,value:n.id})},i.createElement(Yu.J,{className:"mx_ThemeChoicePanel_themeSelector_Label"},n.name))}))}function qb({theme:e}){const[t,n]=(0,i.useState)(""),[o,r]=(0,i.useState)(),a=(0,i.useCallback)(()=>{r(void 0),n("")},[r,n]);return i.createElement("div",{className:"mx_ThemeChoicePanel_CustomTheme"},i.createElement(Oy.d,{className:"mx_ThemeChoicePanel_CustomTheme_EditInPlace",label:(0,l._t)("settings|appearance|custom_theme_add"),cancelButtonLabel:(0,l._t)("action|cancel"),saveButtonLabel:(0,l._t)("settings|appearance|custom_theme_add"),savingLabel:(0,l._t)("settings|appearance|custom_theme_downloading"),value:t,onChange:e=>{r(void 0),n(e.target.value)},onSave:async()=>{if(!t)return;const e=D.A.getValue("custom_themes").map(e=>e)||[];try{const n=await fetch(t),i=await n.json();if(!i||"string"!=typeof i.name||"object"!=typeof i.colors)return void r((0,l._t)("settings|appearance|custom_theme_invalid"));if(Boolean(e.find(e=>e.name===i.name)))return void a();e.push(i)}catch(e){return s.vF.error(e),void r((0,l._t)("settings|appearance|custom_theme_error_downloading"))}a(),await D.A.setValue("custom_themes",null,O.p.ACCOUNT,e)},onCancel:a},i.createElement(Xu.po,null,(0,l._t)("settings|appearance|custom_theme_help")),o&&i.createElement(Xu.Kw,null,o)),i.createElement(Yb,{theme:e}))}function Yb({theme:e}){const t=(0,Vt.ti)("custom_themes")||[];return i.createElement("ul",{className:"mx_ThemeChoicePanel_CustomThemeList"},t.map(t=>i.createElement("li",{key:t.name,className:"mx_ThemeChoicePanel_CustomThemeList_theme","aria-label":t.name},i.createElement("span",{className:"mx_ThemeChoicePanel_CustomThemeList_name"},t.name),i.createElement(Sl.K,{destructive:!0,"aria-label":(0,l._t)("action|delete"),tooltip:(0,l._t)("action|delete"),onClick:async()=>{const n=(D.A.getValue("custom_themes").map(e=>e)||[]).filter(e=>e.name!==t.name);await D.A.setValue("custom_themes",null,O.p.ACCOUNT,n),e===`custom-${t.name}`&&(await D.A.setValue("theme",null,O.p.DEVICE,null),S.A.dispatch({action:H.r.RecheckTheme}))}},i.createElement(Tn.A,null)))))}var Xb=n("./src/settings/enums/ImageSize.ts");class Qb extends i.Component{constructor(e){super(e),(0,w.A)(this,"onSizeChange",e=>{const t=e.target.value;this.setState({size:t}),D.A.setValue("Images.size",null,O.p.ACCOUNT,t)}),this.state={size:D.A.getValue("Images.size")}}render(){return i.createElement(ao.P,{heading:(0,l._t)("settings|appearance|timeline_image_size")},i.createElement("div",{className:"mx_ImageSizePanel_radios"},i.createElement("label",null,i.createElement("div",{className:"mx_ImageSizePanel_size mx_ImageSizePanel_sizeDefault"}),i.createElement($s.A,{name:"image_size",value:Xb.h.Normal,checked:this.state.size===Xb.h.Normal,onChange:this.onSizeChange},(0,l._t)("settings|appearance|image_size_default"))),i.createElement("label",null,i.createElement("div",{className:"mx_ImageSizePanel_size mx_ImageSizePanel_sizeLarge"}),i.createElement($s.A,{name:"image_size",value:Xb.h.Large,checked:this.state.size===Xb.h.Large,onChange:this.onSizeChange},(0,l._t)("settings|appearance|image_size_large")))))}}class Zb extends i.Component{constructor(e){super(e),this.state={useBundledEmojiFont:D.A.getValue("useBundledEmojiFont"),useSystemFont:D.A.getValue("useSystemFont"),systemFont:D.A.getValue("systemFont"),showAdvanced:!1}}renderAdvancedSection(){if(!D.A.getValue(gt.f.AdvancedSettings))return null;const e=c.Ay.get().brand,t=i.createElement(le.A,{kind:"link",onClick:()=>this.setState({showAdvanced:!this.state.showAdvanced}),"aria-expanded":this.state.showAdvanced},this.state.showAdvanced?(0,l._t)("action|hide_advanced"):(0,l._t)("action|show_advanced"));let n;if(this.state.showAdvanced){const t=(0,l._t)("settings|appearance|custom_font_description",{brand:e});n=i.createElement(i.Fragment,null,i.createElement(Pb.A,{name:"useCompactLayout",level:O.p.DEVICE,useCheckbox:!0}),i.createElement(Pb.A,{name:"useBundledEmojiFont",level:O.p.DEVICE,useCheckbox:!0,onChange:e=>this.setState({useBundledEmojiFont:e})}),i.createElement(Pb.A,{name:"useSystemFont",level:O.p.DEVICE,useCheckbox:!0,onChange:e=>this.setState({useSystemFont:e})}),i.createElement(qs.A,{className:"mx_AppearanceUserSettingsTab_checkboxControlledField",label:D.A.getDisplayName("systemFont"),onChange:e=>{this.setState({systemFont:e.target.value}),D.A.setValue("systemFont",null,O.p.DEVICE,e.target.value)},tooltipContent:t,forceTooltipVisible:!0,disabled:!this.state.useSystemFont,value:this.state.systemFont}))}return i.createElement(ao.P,null,t,n)}render(){return i.createElement(oo.A,null,i.createElement(ro.X,null,i.createElement(Gb,null),i.createElement(Vb,null),i.createElement(Hb,null),this.renderAdvancedSection(),i.createElement(Qb,null)))}}class ew extends i.PureComponent{render(){return i.createElement(Q.A,{hasCancel:!0,onFinished:this.props.onFinished.bind(null,!1),title:(0,l._t)("seshat|reset_title")},i.createElement("div",null,i.createElement("p",null,(0,l._t)("seshat|reset_description"),i.createElement("br",null),(0,l._t)("seshat|reset_explainer"))),i.createElement(Nt.A,{primaryButton:(0,l._t)("seshat|reset_button"),onPrimaryButtonClick:this.props.onFinished.bind(null,!0),primaryButtonClass:"danger",cancelButton:(0,l._t)("action|cancel"),onCancel:this.props.onFinished.bind(null,!1)}))}}class tw extends i.Component{constructor(e){super(e),(0,w.A)(this,"updateCurrentRoom",async()=>{const e=f.A.get(),t=await(null==e?void 0:e.getStats().catch(()=>{}));t&&this.setState({eventIndexSize:t.size,roomCount:t.roomCount})}),(0,w.A)(this,"onManage",async()=>{R.Ay.createDialog((0,i.lazy)(()=>n.e(797).then(n.bind(n,"./src/async-components/views/dialogs/eventindex/ManageEventIndexDialog.tsx"))),{onFinished:()=>{}},void 0,!1,!0)}),(0,w.A)(this,"onEnable",async()=>{var e,t;this.setState({enabling:!0}),await f.A.initEventIndex(),await(null===(e=f.A.get())||void 0===e?void 0:e.addInitialCheckpoints()),null===(t=f.A.get())||void 0===t||t.startCrawler(),await D.A.setValue("enableEventIndexing",null,O.p.DEVICE,!0),await this.updateState()}),(0,w.A)(this,"confirmEventStoreReset",()=>{const{finished:e,close:t}=R.Ay.createDialog(ew);e.then(async([e])=>{e&&(await D.A.setValue("enableEventIndexing",null,O.p.DEVICE,!1),await f.A.deleteEventIndex(),await this.onEnable(),t())})}),this.state={enabling:!1,eventIndexSize:0,roomCount:0,eventIndexingEnabled:D.A.getValueAt(O.p.DEVICE,"enableEventIndexing")}}componentWillUnmount(){const e=f.A.get();null!==e&&e.removeListener("changedCheckpoint",this.updateCurrentRoom)}componentDidMount(){this.updateState()}async updateState(){const e=f.A.get(),t=D.A.getValueAt(O.p.DEVICE,"enableEventIndexing");let n=0,i=0;if(null!==e){e.on("changedCheckpoint",this.updateCurrentRoom);const t=await e.getStats().catch(()=>{});t&&(n=t.size,i=t.roomCount)}this.setState({enabling:!1,eventIndexSize:n,roomCount:i,eventIndexingEnabled:t})}render(){let e;const{brand:t,desktop_builds:n}=c.Ay.get();if(null!==f.A.get())e=i.createElement(i.Fragment,null,i.createElement(ao.s,null,(0,l._t)("settings|security|message_search_enabled",{size:(0,Jt.z3)(this.state.eventIndexSize,0),count:this.state.roomCount,rooms:(0,Jt.Zl)(this.state.roomCount)})),i.createElement(le.A,{kind:"primary",onClick:this.onManage},(0,l._t)("action|manage")));else if(!this.state.eventIndexingEnabled&&f.A.supportIsInstalled())e=i.createElement(i.Fragment,null,i.createElement(ao.s,null,(0,l._t)("settings|security|message_search_disabled")),i.createElement("div",null,i.createElement(le.A,{kind:"primary",disabled:this.state.enabling,onClick:this.onEnable},(0,l._t)("action|enable")),this.state.enabling?i.createElement(Ra.A,null):i.createElement("div",null)));else if(f.A.platformHasSupport()&&!f.A.supportIsInstalled()){const n="https://github.com/vector-im/element-desktop/blob/develop/docs/native-node-modules.md#adding-seshat-for-search-in-e2e-encrypted-rooms";e=i.createElement(ao.s,null,(0,l._t)("settings|security|message_search_unsupported",{brand:t},{nativeLink:e=>i.createElement(Re.A,{href:n,target:"_blank",rel:"noreferrer noopener"},e)}))}else e=f.A.platformHasSupport()?i.createElement(i.Fragment,null,i.createElement(ao.s,null,this.state.enabling?i.createElement(Ra.A,null):(0,l._t)("settings|security|message_search_failed")),f.A.error?i.createElement(ao.s,null,i.createElement("details",null,i.createElement("summary",null,(0,l._t)("common|advanced")),i.createElement("code",null,f.A.error instanceof Error?f.A.error.message:(0,l._t)("error|unknown")),i.createElement("p",null,i.createElement(le.A,{key:"delete",kind:"danger",onClick:this.confirmEventStoreReset},(0,l._t)("action|reset"))))):void 0):i.createElement(ao.s,null,(0,l._t)("settings|security|message_search_unsupported_web",{brand:t},{desktopLink:e=>i.createElement(Re.A,{href:n.url,target:"_blank",rel:"noreferrer noopener"},e)}));return e}}function nw(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 iw(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?nw(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):nw(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const sw=(e,t)=>{const{name:n,version:i,url:s}=pt(e,t.device_id);return{appName:n,appVersion:i,url:s}};let ow=function(e){return e.Unsupported="Unsupported",e.Default="Default",e}({});const rw=()=>{var e;const t=(0,i.useContext)(Do.A).client,n=t.getDeviceId(),r=t.getSafeUserId(),[a,c]=(0,i.useState)({}),[d,m]=(0,i.useState)(void 0),[u,h]=(0,i.useState)([]),[p,g]=(0,i.useState)(new Map),[v,_]=(0,i.useState)(!0),[f,E]=(0,i.useState)(!0),[y,b]=(0,i.useState)();(0,i.useEffect)(()=>{t.doesServerSupportUnstableFeature("org.matrix.msc3881").then(e=>{E(e)})},[t]);const w=(0,i.useCallback)(async()=>{_(!0);try{var e,n;const s=await async function(e){const{devices:t}=await e.getDevices(),n={};for(const i of t)n[i.device_id]=iw(iw(iw({},i),{},{isVerified:await ze(e,i.device_id)},sw(e,i)),(0,Ge.y)(i[o.UNSTABLE_MSC3852_LAST_SEEN_UA.name]));return n}(t);c(s);const{pushers:r}=await t.getPushers();h(r);const a=new Map;Object.keys(s).forEach(e=>{const n=`${o.LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${e}`,i=t.getAccountData(n);i&&a.set(e,i.getContent())}),g(a);const l=t.getUserId(),d=null===(e=await(null===(n=t.getCrypto())||void 0===n?void 0:n.getUserDeviceInfo([l])))||void 0===e?void 0:e.get(l),u=[];for(const e of null!==(i=null==d?void 0:d.values())&&void 0!==i?i:[]){var i;e.dehydrated&&u.push(e.deviceId)}m(1==u.length?u[0]:void 0),_(!1)}catch(e){404==e.httpStatus?b(ow.Unsupported):(s.vF.error("Error loading sessions:",e),b(ow.Default)),_(!1)}},[t]);(0,i.useEffect)(()=>{w()},[w]),(0,i.useEffect)(()=>{const e=Object.keys(a);e.length&&((e,t)=>{Array.from(t.store.accountData.values()).forEach(n=>{if(!n.getType().startsWith(dt))return;const[,i]=n.getType().split(dt);i&&!e.includes(i)&&t.deleteAccountData(n.getType())})})(e,t)},[a,t]),(0,Fi.ml)(t,V.cr.DevicesUpdated,e=>{e.includes(r)&&w()}),(0,Fi.ml)(t,o.ClientEvent.AccountData,e=>{const t=e.getType();if(t.startsWith(o.LOCAL_NOTIFICATION_SETTINGS_PREFIX.name)){const n=new Map(p),i=t.slice(t.lastIndexOf(".")+1);n.set(i,e.getContent()),g(n)}});const S=!(null===(e=a[n])||void 0===e||!e.isVerified)&&r?async e=>await t.getCrypto().requestDeviceVerification(r,e):void 0,A=(0,i.useCallback)(async(e,n)=>{const i=a[e];if(n!==(null==i?void 0:i.display_name))try{await t.setDeviceDetails(e,{display_name:n}),await w()}catch(e){throw s.vF.error("Error setting device name",e),new Error((0,l._t)("settings|sessions|error_set_name"))}},[t,a,w]),C=(0,i.useCallback)(async(e,n)=>{try{const i=u.find(t=>t[o.PUSHER_DEVICE_ID.name]===e);i?await t.setPusher(iw(iw({},i),{},{[o.PUSHER_ENABLED.name]:n})):p.has(e)&&await t.setLocalNotificationSettings(e,{is_silenced:!n})}catch(e){throw s.vF.error("Error setting pusher state",e),new Error((0,l._t)("settings|sessions|error_pusher_state"))}finally{await w()}},[t,u,p,w]);return{devices:a,dehydratedDeviceId:d,pushers:u,localNotificationSettings:p,currentDeviceId:n,isLoadingDeviceList:v,error:y,requestDeviceVerification:S,refreshDevices:w,saveDeviceName:A,setPushNotifications:C,supportsMSC3881:f}};async function aw(e,t){const n=e.getUserId();let{threepids:i}=await e.getThreePids();if(t&&(i=i.filter(e=>e.medium===t)),i.length>0&&e.getIdentityServerUrl())try{const s=new Iv.A,o=await s.getAccessToken({check:!1});if(!o)throw new Error("No identity access token found");const r=i.map(({medium:e,address:t})=>[e,t]),a=await e.bulkLookupThreePids(r,o);for(const[e,s,o]of a.threepids){if(o!==n)continue;if(t&&e!==t)continue;const r=i.find(t=>t.medium===e&&t.address===s);r&&(r.bound=!0)}}catch(e){if(!(e instanceof o.MatrixError)||"M_TERMS_NOT_SIGNED"!==e.errcode)throw e}return i}var lw=n("./src/utils/IdentityServerUtils.ts");class cw extends i.Component{constructor(e){super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"onAction",e=>{"id_server_changed"===e.action&&this.setState({currentClientIdServer:v.J.safeGet().getIdentityServerUrl()})}),(0,w.A)(this,"onIdentityServerChanged",e=>{const t=e.target.value;this.setState({idServer:t,error:void 0})}),(0,w.A)(this,"saveIdServer",e=>{v.J.safeGet().setAccountData("m.identity_server",{base_url:e}),this.setState({busy:!1,error:void 0,currentClientIdServer:e,idServer:e})}),(0,w.A)(this,"checkIdServer",async e=>{e.preventDefault();const{idServer:t,currentClientIdServer:n}=this.state;this.setState({busy:!0,checking:!0,error:void 0});const o=(0,wh.qe)(t);let r=await async function(e){if("https:"!==(0,wh.Dl)(e).protocol)return(0,l._t)("identity_server|url_not_https");try{const t=await fetch(e+"/_matrix/identity/v2");return t.ok?null:t.status<200||t.status>=300?(0,l._t)("identity_server|error_invalid",{code:t.status}):(0,l._t)("identity_server|error_connection")}catch{return(0,l._t)("identity_server|error_connection")}}(o);if(!r)try{this.setState({checking:!1});const e=new Iv.A(o);await e.getAccessToken();let s=!0;if(!await(0,lw.mn)(v.J.safeGet(),o)){const[e]=await this.showNoTermsWarning();s=!!e}if(s&&n&&o!==n){const[e]=await this.showServerChangeWarning({title:(0,l._t)("identity_server|change"),unboundMessage:(0,l._t)("identity_server|change_prompt",{},{current:e=>i.createElement("strong",null,(0,wh.FO)(n)),new:e=>i.createElement("strong",null,(0,wh.FO)(t))}),button:(0,l._t)("action|continue")});s=!!e}s&&this.saveIdServer(o)}catch(e){s.vF.error(e),r=(0,l._t)("identity_server|error_invalid_or_terms")}this.setState({busy:!1,checking:!1,error:null!=r?r:void 0,currentClientIdServer:v.J.safeGet().getIdentityServerUrl()})}),(0,w.A)(this,"onDisconnectClicked",async()=>{this.setState({disconnectBusy:!0});try{const[e]=await this.showServerChangeWarning({title:(0,l._t)("identity_server|disconnect"),unboundMessage:(0,l._t)("identity_server|disconnect_server",{},{idserver:e=>i.createElement("strong",null,(0,wh.FO)(this.state.currentClientIdServer))}),button:(0,l._t)("action|disconnect")});e&&this.disconnectIdServer()}finally{this.setState({disconnectBusy:!1})}}),(0,w.A)(this,"disconnectIdServer",()=>{v.J.safeGet().setAccountData("m.identity_server",{base_url:null});let e="";(0,lw.iR)()&&(e=(0,wh.FO)((0,lw.iR)())),this.setState({busy:!1,error:void 0,currentClientIdServer:v.J.safeGet().getIdentityServerUrl(),idServer:e})}),(0,w.A)(this,"onInputCancel",()=>this.setState(e=>{var t;return{idServer:null!==(t=e.currentClientIdServer)&&void 0!==t?t:""}})),(0,w.A)(this,"onClearServerErrors",()=>this.setState({error:void 0}));let t="";!v.J.safeGet().getIdentityServerUrl()&&(0,lw.iR)()&&(t=(0,wh.FO)((0,lw.iR)()));const n=v.J.safeGet().getIdentityServerUrl();this.state={defaultIdServer:t,currentClientIdServer:n,idServer:null!=n?n:"",busy:!1,disconnectBusy:!1,checking:!1}}componentDidMount(){this.dispatcherRef=S.A.register(this.onAction)}componentWillUnmount(){S.A.unregister(this.dispatcherRef)}showNoTermsWarning(){const{finished:e}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("terms|identity_server_no_terms_title"),description:i.createElement("div",null,i.createElement("strong",{className:"warning"},(0,l._t)("identity_server|no_terms")),i.createElement("span",null," ",(0,l._t)("terms|identity_server_no_terms_description_2"))),button:(0,l._t)("action|continue")});return e}async showServerChangeWarning({title:e,unboundMessage:t,button:n}){const{currentClientIdServer:o}=this.state;let r=[],a=!0;try{r=await(0,eh.wR)(aw(v.J.safeGet()),Promise.reject(new Error("Timeout attempting to reach identity server")),1e4)}catch(e){a=!1,s.vF.warn(`Unable to reach identity server at ${o} to check for 3PIDs during IS change flow`),s.vF.warn(e)}const c=r.filter(e=>e.bound);let d,m=!1;const u={idserver:e=>i.createElement("strong",null,(0,wh.FO)(o)),b:e=>i.createElement("strong",null,e)};a?c.length?(d=i.createElement("div",null,i.createElement("p",null,(0,l._t)("identity_server|disconnect_personal_data_warning_1",{},u)),i.createElement("p",null,(0,l._t)("identity_server|disconnect_personal_data_warning_2"))),m=!0,n=(0,l._t)("identity_server|disconnect_anyway")):d=t:(d=i.createElement("div",null,i.createElement("p",null,(0,l._t)("identity_server|disconnect_offline_warning",{},u)),i.createElement("p",null,(0,l._t)("identity_server|suggestions")),i.createElement("ul",null,i.createElement("li",null,(0,l._t)("identity_server|suggestions_1")),i.createElement("li",null,(0,l._t)("identity_server|suggestions_2",{},{idserver:u.idserver})),i.createElement("li",null,(0,l._t)("identity_server|suggestions_3")))),m=!0,n=(0,l._t)("identity_server|disconnect_anyway"));const{finished:h}=R.Ay.createDialog(Tt.A,{title:e,description:d,button:n,cancelButton:(0,l._t)("action|go_back"),danger:m});return h}render(){const e=this.state.currentClientIdServer;let t,n,s;if(e?(t=(0,l._t)("identity_server|url",{server:(0,wh.FO)(e)}),n=(0,l._t)("identity_server|description_connected",{},{server:()=>i.createElement("strong",null,(0,wh.FO)(e))}),this.props.missingTerms&&(n=(0,l._t)("identity_server|change_server_prompt",{},{server:()=>i.createElement("strong",null,(0,wh.FO)(e))}))):(t=(0,l._t)("common|identity_server"),n=(0,l._t)("identity_server|description_disconnected")),e){let e=(0,l._t)("action|disconnect"),t=(0,l._t)("identity_server|disconnect_warning");this.props.missingTerms&&(t=(0,l._t)("identity_server|description_optional"),e=(0,l._t)("identity_server|do_not_use")),this.state.disconnectBusy&&(e=i.createElement(Ra.A,null)),s=i.createElement(i.Fragment,null,i.createElement(ao.s,null,t),i.createElement(le.A,{onClick:this.onDisconnectClicked,kind:"danger_sm"},e))}return i.createElement(Ao.A,{legend:t,description:n},i.createElement(Oy.d,{className:"mx_IdentityServerPicker",cancelButtonLabel:(0,l._t)("action|reset"),disabled:!!this.state.busy,label:(0,l._t)("identity_server|url_field_label"),onCancel:this.onInputCancel,onChange:this.onIdentityServerChanged,onClearServerErrors:this.onClearServerErrors,onSave:this.checkIdServer,placeholder:this.state.defaultIdServer,saveButtonLabel:(0,l._t)("action|change"),savedLabel:this.state.error?void 0:(0,l._t)("identity_server|changed"),savingLabel:(0,l._t)("identity_server|checking"),serverInvalid:!!this.state.error,value:this.state.idServer},this.state.error&&i.createElement(Xu.Kw,null,this.state.error)),s)}}var dw=n("./src/Terms.ts");class mw extends i.Component{constructor(e){super(e),(0,w.A)(this,"togglePolicy",e=>{const t=(0,wn.ZV)(this.state.policies);t[e].checked=!t[e].checked,this.setState({policies:t})}),(0,w.A)(this,"onContinue",()=>{!!this.state.policies.some(e=>!e.checked)||(this.setState({busy:!0}),this.props.onFinished(this.state.policies.map(e=>e.url)))}),this.state={policies:[],busy:!1}}componentDidMount(){const e=[];for(const t of this.props.policiesAndServicePairs){const n=Object.values(t.policies);for(const t of n){const n=(0,dw.S$)(t);if(!n)continue;const i={checked:!1,url:n.url,name:n.name};e.push(i)}}this.setState({policies:e})}renderCheckboxes(){const e=[];for(let t=0;t<this.state.policies.length;t++){const n=this.state.policies[t],s=(0,l._t)("terms|inline_intro_text",{},{policyLink:()=>i.createElement("a",{href:n.url,rel:"noreferrer noopener",target:"_blank"},n.name,i.createElement("span",{className:"mx_InlineTermsAgreement_link"}))});e.push(i.createElement("div",{key:t,className:"mx_InlineTermsAgreement_cbContainer"},i.createElement("div",null,s),i.createElement("div",{className:"mx_InlineTermsAgreement_checkbox"},i.createElement(no.A,{onChange:()=>this.togglePolicy(t),checked:n.checked},(0,l._t)("action|accept")))))}return e}render(){const e=!!this.state.policies.some(e=>!e.checked);return i.createElement("div",null,this.props.introElement,this.renderCheckboxes(),i.createElement(le.A,{onClick:this.onContinue,disabled:e||this.state.busy,kind:"primary_sm"},(0,l._t)("action|continue")))}}const uw=()=>{const e=(0,de.nH)(),[t,n]=(0,i.useState)(!0),[r,a]=(0,i.useState)([]),[c,d]=(0,i.useState)([]),[m,u]=(0,i.useState)((0,wh.FO)(e.getIdentityServerUrl())),[h,p]=(0,i.useState)({policiesAndServices:null,agreedUrls:null,resolve:null}),[g,v]=(0,i.useState)(!1),_=(0,i.useCallback)(async()=>{n(!0);const t=await aw(e);a(t.filter(e=>e.medium===o.ThreepidMedium.Email)),d(t.filter(e=>e.medium===o.ThreepidMedium.Phone)),n(!1)},[e]);if((0,mo.F)(S.A,(0,i.useCallback)(t=>{"id_server_changed"===t.action&&(u((0,wh.FO)(e.getIdentityServerUrl())),_().then())},[e,_])),(0,i.useEffect)(()=>{(async()=>{try{await _();const t=e.getIdentityServerUrl();if(!t)return;const n=new Iv.A;try{const i=await n.getAccessToken({check:!1});await(0,dw.gw)(e,[new dw.kl(o.SERVICE_TYPES.IS,t,i)],(e,n,i)=>new Promise(i=>{u((0,wh.FO)(t)),v(!0),p({policiesAndServices:e,agreedUrls:n,resolve:i})})),v(!1)}catch(e){s.vF.warn(`Unable to reach identity server at ${t} to check for terms in Settings`),s.vF.warn(e)}}catch{}})()},[e,_]),!D.A.getValue(gt.f.ThirdPartyID))return null;if(g&&h.policiesAndServices){const e=i.createElement(Fy.F,{type:"info",title:(0,l._t)("settings|general|discovery_needs_terms_title")},(0,l._t)("settings|general|discovery_needs_terms",{serverName:m}));return i.createElement(i.Fragment,null,i.createElement(mw,{policiesAndServicePairs:h.policiesAndServices,agreedUrls:h.agreedUrls,onFinished:h.resolve,introElement:e}),i.createElement(cw,{missingTerms:!0}))}let f;return m&&(f=i.createElement(i.Fragment,null,i.createElement(ao.P,{heading:(0,l._t)("settings|general|emails_heading"),description:0===r.length?(0,l._t)("settings|general|discovery_email_empty"):void 0,stretchContent:!0},i.createElement(Cb,{mode:"is",medium:o.ThreepidMedium.Email,threepids:r,onChange:_,disabled:g,isLoading:t})),i.createElement(ao.P,{heading:(0,l._t)("settings|general|msisdns_heading"),description:0===c.length?(0,l._t)("settings|general|discovery_msisdn_empty"):void 0,stretchContent:!0},i.createElement(Cb,{mode:"is",medium:o.ThreepidMedium.Phone,threepids:c,onChange:_,disabled:g,isLoading:t})))),i.createElement(ao.P,{heading:(0,l._t)("settings|discovery|title"),stretchContent:!0},f,i.createElement(cw,{missingTerms:!1}))};class hw extends i.Component{constructor(e){super(e),(0,w.A)(this,"onProvisioningToggled",()=>{const e=this.state.provisioningEnabled;D.A.setValue("integrationProvisioning",null,O.p.ACCOUNT,!e).catch(t=>{s.vF.error("Error changing integration manager provisioning"),s.vF.error(t),this.setState({provisioningEnabled:e})}),this.setState({provisioningEnabled:!e})});const t=L.J.sharedInstance().getPrimaryManager();this.state={currentManager:t,provisioningEnabled:D.A.getValue("integrationProvisioning")}}render(){const e=this.state.currentManager;let t,n;return e?(t=`(${e.name})`,n=(0,l._t)("integration_manager|use_im_default",{serverName:e.name},{b:e=>i.createElement("strong",null,e)})):n=(0,l._t)("integration_manager|use_im"),D.A.getValue(gt.f.Widgets)?i.createElement("div",{className:"mx_SetIntegrationManager"},i.createElement("div",{className:"mx_SettingsFlag"},i.createElement("div",{className:"mx_SetIntegrationManager_heading_manager"},i.createElement(bh.A,{size:"3"},(0,l._t)("integration_manager|manage_title")),i.createElement(bh.A,{size:"4"},t))),i.createElement(ao.s,null,n),i.createElement(ao.s,null,(0,l._t)("integration_manager|explainer")),i.createElement(Em.b,null,i.createElement(Fb.I,{name:"enable_im",control:i.createElement(Lb.l,{role:"switch",id:"mx_SetIntegrationManager_Toggle",checked:this.state.provisioningEnabled,onChange:this.onProvisioningToggled})},i.createElement(Yu.J,{htmlFor:"mx_SetIntegrationManager_Toggle"},(0,l._t)("integration_manager|toggle_label"))))):null}}const pw=()=>{const{dehydratedDeviceId:e}=rw();return e?i.createElement(ao.P,{heading:(0,l._t)("common|secure_backup")},i.createElement("div",{className:"mx_SettingsSubsection_content"},i.createElement("div",{className:"mx_SettingsFlag_label"},(0,l._t)("settings|security|dehydrated_device_enabled")),i.createElement("div",{className:"mx_SettingsSubsection_text"},(0,l._t)("settings|security|dehydrated_device_description")))):null};class gw extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"onUnignoreClicked",()=>{this.props.onUnignored(this.props.userId)})}render(){const e=`mx_SecurityUserSettingsTab_ignoredUser_${this.props.userId}`;return i.createElement("li",{className:"mx_SecurityUserSettingsTab_ignoredUser","aria-label":this.props.userId},i.createElement(le.A,{onClick:this.onUnignoreClicked,kind:"primary_sm","aria-describedby":e,disabled:this.props.inProgress},(0,l._t)("action|unignore")),i.createElement("span",{id:e},this.props.userId))}}class vw extends i.Component{constructor(e){super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"onAction",({action:e})=>{if("ignore_state_changed"===e){const e=v.J.safeGet().getIgnoredUsers(),t=this.state.waitingUnignored.filter(t=>e.includes(t));this.setState({ignoredUserIds:e,waitingUnignored:t})}}),(0,w.A)(this,"onMyMembership",(e,t)=>{e.isSpaceRoom()||(t===X.O.Invite?this.addInvitedRoom(e):this.state.invitedRoomIds.has(e.roomId)&&this.removeInvitedRoom(e.roomId))}),(0,w.A)(this,"addInvitedRoom",e=>{this.setState(({invitedRoomIds:t})=>({invitedRoomIds:new Set(t).add(e.roomId)}))}),(0,w.A)(this,"removeInvitedRoom",e=>{this.setState(({invitedRoomIds:t})=>{const n=new Set(t);return n.delete(e),{invitedRoomIds:n}})}),(0,w.A)(this,"onUserUnignored",async e=>{const{ignoredUserIds:t,waitingUnignored:n}=this.state,i=t.filter(e=>!n.includes(e)),s=i.indexOf(e);-1!==s&&(i.splice(s,1),this.setState(({waitingUnignored:t})=>({waitingUnignored:[...t,e]})),v.J.safeGet().setIgnoredUsers(i))}),(0,w.A)(this,"getInvitedRooms",()=>v.J.safeGet().getRooms().filter(e=>e.hasMembershipState(v.J.safeGet().getUserId(),X.O.Invite))),(0,w.A)(this,"manageInvites",async e=>{this.setState({managingInvites:!0});const t=Array.from(this.state.invitedRoomIds),n=v.J.safeGet(),i=e?n.joinRoom.bind(n):n.leave.bind(n);for(let e=0;e<t.length;e++){const n=t[e];await i(n).then(()=>{this.removeInvitedRoom(n)},async t=>{"M_LIMIT_EXCEEDED"===t.errcode?(await(0,Kr.yy)(t.retry_after_ms||2500),e--):s.vF.warn(t)})}this.setState({managingInvites:!1})}),(0,w.A)(this,"onAcceptAllInvitesClicked",()=>{this.manageInvites(!0)}),(0,w.A)(this,"onRejectAllInvitesClicked",()=>{this.manageInvites(!1)});const t=new Set(this.getInvitedRooms().map(e=>e.roomId));this.state={ignoredUserIds:v.J.safeGet().getIgnoredUsers(),waitingUnignored:[],managingInvites:!1,invitedRoomIds:t}}componentDidMount(){this.dispatcherRef=S.A.register(this.onAction),v.J.safeGet().on(o.RoomEvent.MyMembership,this.onMyMembership),v.J.safeGet().getVersions().then(e=>this.setState({versions:e}))}componentWillUnmount(){S.A.unregister(this.dispatcherRef),v.J.safeGet().removeListener(o.RoomEvent.MyMembership,this.onMyMembership)}renderIgnoredUsers(){const{waitingUnignored:e,ignoredUserIds:t}=this.state;return null!=t&&t.length?i.createElement(ao.P,{id:"mx_SecurityUserSettingsTab_ignoredUsersHeading",heading:(0,l._t)("settings|security|ignore_users_section")},i.createElement(ao.s,null,i.createElement("ul",{"aria-label":(0,l._t)("settings|security|ignore_users_section"),className:"mx_SecurityUserSettingsTab_ignoredUsers"},t.map(t=>i.createElement(gw,{userId:t,onUnignored:this.onUserUnignored,key:t,inProgress:e.includes(t)}))))):i.createElement(ao.P,{heading:(0,l._t)("settings|security|ignore_users_section")},i.createElement(ao.s,null,(0,l._t)("settings|security|ignore_users_empty")))}renderManageInvites(){const{invitedRoomIds:e}=this.state;return 0===e.size?null:i.createElement(ao.P,{heading:(0,l._t)("settings|security|bulk_options_section")},i.createElement("div",{className:"mx_SecurityUserSettingsTab_bulkOptions"},i.createElement(le.A,{onClick:this.onAcceptAllInvitesClicked,kind:"primary_outline",disabled:this.state.managingInvites},(0,l._t)("settings|security|bulk_options_accept_all_invites",{invitedRooms:e.size})),i.createElement(le.A,{onClick:this.onRejectAllInvitesClicked,kind:"danger_outline",disabled:this.state.managingInvites},(0,l._t)("settings|security|bulk_options_reject_all_invites",{invitedRooms:e.size})),this.state.managingInvites?i.createElement(Ra.A,null):i.createElement("div",null)))}render(){const e=i.createElement(pw,null),t=i.createElement(ao.P,{heading:(0,l._t)("settings|security|message_search_section")},i.createElement(tw,null));let n,s,o;if((0,ku.u)(v.J.safeGet())||(n=i.createElement("div",{className:"mx_SecurityUserSettingsTab_warning"},(0,l._t)("settings|security|e2ee_default_disabled_warning"))),j.Vo.instance.isEnabled()){const e=()=>{py({primaryButton:(0,l._t)("action|ok"),hasCancel:!1})};s=i.createElement(i.Fragment,null,i.createElement(ao.P,{heading:(0,l._t)("common|analytics"),description:(0,l._t)("settings|security|analytics_description")},i.createElement(le.A,{kind:"link",onClick:e},(0,l._t)("action|learn_more")),j.Vo.instance.isEnabled()&&i.createElement(Pb.A,{name:"pseudonymousAnalyticsOptIn",level:O.p.ACCOUNT})),i.createElement(ao.P,{heading:(0,l._t)("settings|sessions|title")},i.createElement(Pb.A,{name:"deviceClientInformationOptIn",level:O.p.ACCOUNT})))}if(D.A.getValue(gt.f.AdvancedSettings)){const e=this.renderIgnoredUsers(),t=this.renderManageInvites();(e||t)&&(o=i.createElement(ro.X,{heading:(0,l._t)("common|advanced")},e,t))}return i.createElement(oo.A,null,n,i.createElement(hw,null),i.createElement(ro.X,{heading:(0,l._t)("settings|security|encryption_section")},e,t),i.createElement(ro.X,{heading:(0,l._t)("common|privacy")},i.createElement(uw,null),s),o)}}const _w=["icon","label","onDeleteClick","disabled"],fw=e=>{let{icon:t,label:n,onDeleteClick:s,disabled:o=!1}=e,r=(0,g.A)(e,_w);return i.createElement("div",(0,Wt.A)({className:"mx_Tag"},r),null==t?void 0:t(),n,s&&i.createElement(le.A,{"aria-label":"Remove",className:"mx_Tag_delete",onClick:s,disabled:o},i.createElement(M_.A,null)))};class Ew extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"onInputChange",e=>{this.setState({newTag:e.target.value})}),(0,w.A)(this,"onAdd",e=>{e.preventDefault(),this.state.newTag&&(this.props.onAdd(this.state.newTag),this.setState({newTag:""}))}),this.state={newTag:""}}onRemove(e){this.props.onRemove(e)}render(){return i.createElement("div",{className:Lt()("mx_TagComposer",{mx_TagComposer_disabled:this.props.disabled})},i.createElement("form",{className:"mx_TagComposer_input",onSubmit:this.onAdd},i.createElement(qs.A,{id:this.props.id?this.props.id+"_field":void 0,value:this.state.newTag,onChange:this.onInputChange,label:this.props.label||(0,l._t)("notifications|keyword"),placeholder:this.props.placeholder||(0,l._t)("notifications|keyword_new"),disabled:this.props.disabled,autoComplete:"off"}),i.createElement(le.A,{onClick:this.onAdd,kind:"primary",disabled:this.props.disabled},(0,l._t)("action|add"))),i.createElement("div",{className:"mx_TagComposer_tags",role:"list"},this.props.tags.map((e,t)=>i.createElement(fw,{label:e,key:e,onDeleteClick:this.onRemove.bind(this,e),disabled:this.props.disabled,role:"listitem"}))))}}var yw=n("./src/components/views/typography/Caption.tsx"),bw=n("./src/components/views/settings/shared/SettingsSubsectionHeading.tsx");function ww(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 Sw(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ww(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ww(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Aw=function(e){return e.Loading="loading",e.Ready="ready",e.Persisting="persisting",e.Error="error",e.SavingError="savingError",e}(Aw||{}),Cw=function(e){return e.Master="master",e.VectorGlobal="vector_global",e.VectorMentions="vector_mentions",e.VectorOther="vector_other",e.Other="other",e}(Cw||{});const xw="_keywords",Rw=Cw.VectorMentions,kw=[o.RuleId.DM,o.RuleId.EncryptedDM,o.RuleId.Message,o.RuleId.EncryptedMessage,o.RuleId.ContainsDisplayName,o.RuleId.ContainsUserName,o.RuleId.AtRoomNotification,o.RuleId.InviteToSelf,o.RuleId.IncomingCall,o.RuleId.SuppressNotices,o.RuleId.Tombstone],Iw=[qE.Off,qE.On,qE.Loud],Tw=(e,t,n)=>{var i;if(null===(i=n.syncedRuleIds)||void 0===i||!i.length)return;const s=n.syncedRuleIds.reduce((t,i)=>{if(t===qE.Loud)return t;const s=((e,t)=>{for(const n in t){const i=t[n].find(t=>t.rule_id===e);if(i)return i}})(i,e);if(s){const e=n.ruleToVectorState(s);if(e&&Iw.indexOf(e)>Iw.indexOf(t))return e}return t},n.ruleToVectorState(t));return s},Pw=()=>i.createElement("div",null,i.createElement(Pb.A,{name:"Notifications.showbold",level:O.p.DEVICE}),i.createElement(Pb.A,{name:"Notifications.tac_only_notifications",level:O.p.DEVICE}));class Nw extends i.PureComponent{constructor(e){var t;super(e),(0,w.A)(this,"settingWatchers",[]),(0,w.A)(this,"onMasterRuleChanged",async e=>{this.setState({phase:Aw.Persisting});const t=this.state.masterPushRule;try{await v.J.safeGet().setPushRuleEnabled("global",t.kind,t.rule_id,!e),await this.refreshFromServer()}catch(e){this.setState({phase:Aw.Error}),s.vF.error("Error updating master push rule:",e),this.showSaveError()}}),(0,w.A)(this,"setSavingError",e=>{this.setState(({ruleIdsWithError:t})=>({phase:Aw.SavingError,ruleIdsWithError:Sw(Sw({},t),{},{[e]:!0})}))}),(0,w.A)(this,"updateDeviceNotifications",async e=>{await D.A.setValue("deviceNotificationsEnabled",null,O.p.DEVICE,e)}),(0,w.A)(this,"onEmailNotificationsChanged",async(e,t)=>{this.setState({phase:Aw.Persisting});try{if(t)await v.J.safeGet().setPusher({kind:"email",app_id:"m.email",pushkey:e,app_display_name:"Email Notifications",device_display_name:e,lang:navigator.language,data:{brand:c.Ay.get().brand},append:!0});else{var n;const t=null===(n=this.state.pushers)||void 0===n?void 0:n.find(t=>"email"===t.kind&&t.pushkey===e);t&&await v.J.safeGet().removePusher(t.pushkey,t.app_id)}await this.refreshFromServer()}catch(e){this.setState({phase:Aw.Error}),s.vF.error("Error updating email pusher:",e),this.showSaveError()}}),(0,w.A)(this,"onDesktopNotificationsChanged",async e=>{await D.A.setValue("notificationsEnabled",null,O.p.DEVICE,e)}),(0,w.A)(this,"onDesktopShowBodyChanged",async e=>{await D.A.setValue("notificationBodyEnabled",null,O.p.DEVICE,e)}),(0,w.A)(this,"onAudioNotificationsChanged",async e=>{await D.A.setValue("audioNotificationsEnabled",null,O.p.DEVICE,e)}),(0,w.A)(this,"onRadioChecked",async(e,t)=>{this.setState(({ruleIdsWithError:t})=>({phase:Aw.Persisting,ruleIdsWithError:Sw(Sw({},t),{},{[e.ruleId]:!1})}));try{const n=v.J.safeGet();if(e.ruleId===xw){if(!this.state.vectorKeywordRuleInfo)throw new Error("Notification data is incomplete.");for(const e of this.state.vectorKeywordRuleInfo.rules){let i,s;t===qE.On?(1!==e.actions.length&&(s=YE.actionsFor(t)),this.state.vectorKeywordRuleInfo.vectorState===qE.Off&&(i=!0)):t===qE.Loud?(3!==e.actions.length&&(s=YE.actionsFor(t)),this.state.vectorKeywordRuleInfo.vectorState===qE.Off&&(i=!0)):i=!1,s&&await n.setPushRuleActions("global",e.kind,e.rule_id,s),void 0!==i&&await n.setPushRuleEnabled("global",e.kind,e.rule_id,i)}}else{const i=QE[e.ruleId],s=i.vectorStateToActions[t];if(!e.rule)throw new Error("Cannot update rule: push rule data is incomplete.");await ey(n,e.rule.rule_id,e.rule.kind,s),await ty(n,i.syncedRuleIds,s)}await this.refreshFromServer()}catch(t){this.setSavingError(e.ruleId),s.vF.error("Error updating push rule:",t)}}),(0,w.A)(this,"onClearNotificationsClicked",async()=>{try{this.setState({clearingNotifications:!0});const e=v.J.safeGet();await(0,Ui.XC)(e)}finally{this.setState({clearingNotifications:!1})}}),(0,w.A)(this,"onKeywordAdd",e=>{if(!this.state.vectorKeywordRuleInfo)throw new Error("Notification data is incomplete.");const t=(0,wn.ZV)(this.state.vectorKeywordRuleInfo.rules);this.setState({phase:Aw.Persisting,vectorKeywordRuleInfo:Sw(Sw({},this.state.vectorKeywordRuleInfo),{},{rules:[...this.state.vectorKeywordRuleInfo.rules,{pattern:e}]})},async()=>{await this.setKeywords(this.state.vectorKeywordRuleInfo.rules.map(e=>e.pattern),t)})}),(0,w.A)(this,"onKeywordRemove",e=>{if(!this.state.vectorKeywordRuleInfo)throw new Error("Notification data is incomplete.");const t=(0,wn.ZV)(this.state.vectorKeywordRuleInfo.rules);this.setState({phase:Aw.Persisting,vectorKeywordRuleInfo:Sw(Sw({},this.state.vectorKeywordRuleInfo),{},{rules:this.state.vectorKeywordRuleInfo.rules.filter(t=>t.pattern!==e)})},async()=>{await this.setKeywords(this.state.vectorKeywordRuleInfo.rules.map(e=>e.pattern),t)})}),this.state={phase:Aw.Loading,deviceNotificationsEnabled:null===(t=D.A.getValue("deviceNotificationsEnabled"))||void 0===t||t,desktopNotifications:D.A.getValue("notificationsEnabled"),desktopShowBody:D.A.getValue("notificationBodyEnabled"),audioNotifications:D.A.getValue("audioNotificationsEnabled"),clearingNotifications:!1,ruleIdsWithError:{}}}get isInhibited(){var e;return!(null===(e=this.state.masterPushRule)||void 0===e||!e.enabled)}componentDidMount(){this.settingWatchers=[D.A.watchSetting("notificationsEnabled",null,(...[,,,,e])=>this.setState({desktopNotifications:e})),D.A.watchSetting("deviceNotificationsEnabled",null,(...[,,,,e])=>{this.setState({deviceNotificationsEnabled:e})}),D.A.watchSetting("notificationBodyEnabled",null,(...[,,,,e])=>this.setState({desktopShowBody:e})),D.A.watchSetting("audioNotificationsEnabled",null,(...[,,,,e])=>this.setState({audioNotifications:e}))],this.refreshFromServer(),this.refreshFromAccountData()}componentWillUnmount(){this.settingWatchers.forEach(e=>D.A.unwatchSetting(e))}componentDidUpdate(e,t){this.state.deviceNotificationsEnabled!==t.deviceNotificationsEnabled&&this.persistLocalNotificationSettings(this.state.deviceNotificationsEnabled)}async refreshFromServer(){try{const e=(await Promise.all([this.refreshRules(),this.refreshPushers(),this.refreshThreepids()])).reduce((e,t)=>Object.assign(t,e),{});this.setState(Sw(Sw({},e),{},{phase:Aw.Ready}))}catch(e){s.vF.error("Error setting up notifications for settings: ",e),this.setState({phase:Aw.Error})}}async refreshFromAccountData(){const e=v.J.safeGet(),t=e.getAccountData((0,Ui.uG)(e.deviceId));if(t){const e=!t.getContent().is_silenced;await this.updateDeviceNotifications(e)}}persistLocalNotificationSettings(e){const t=v.J.safeGet();return t.setAccountData((0,Ui.uG)(t.deviceId),{is_silenced:!e})}async refreshRules(){const e=await v.J.safeGet().getPushRules(),t={[o.RuleId.Master]:Cw.Master,[o.RuleId.DM]:Cw.VectorGlobal,[o.RuleId.EncryptedDM]:Cw.VectorGlobal,[o.RuleId.Message]:Cw.VectorGlobal,[o.RuleId.EncryptedMessage]:Cw.VectorGlobal,[o.RuleId.ContainsDisplayName]:Cw.VectorMentions,[o.RuleId.ContainsUserName]:Cw.VectorMentions,[o.RuleId.AtRoomNotification]:Cw.VectorMentions,[o.RuleId.InviteToSelf]:Cw.VectorOther,[o.RuleId.IncomingCall]:Cw.VectorOther,[o.RuleId.SuppressNotices]:Cw.VectorOther,[o.RuleId.Tombstone]:Cw.VectorOther},n={[Cw.Master]:[],[Cw.VectorGlobal]:[],[Cw.VectorMentions]:[],[Cw.VectorOther]:[],[Cw.Other]:[]};for(const s in e.global){const o=s;for(const s of e.global[o]){var i;const e=Object.assign(s,{kind:o}),r=null!==(i=t[e.rule_id])&&void 0!==i?i:Cw.Other;"."===e.rule_id[0]&&n[r].push(e)}}const s={};if(!(n.master.length>0))throw new Error("Failed to locate a master push rule");s.masterPushRule=n.master[0],s.vectorKeywordRuleInfo=ZE.parseContentRules(e),s.vectorPushRules={};const r=[Cw.VectorGlobal,Cw.VectorMentions,Cw.VectorOther];for(const e of r){s.vectorPushRules[e]=[];for(const t of n[e]){const i=QE[t.rule_id],o=i.ruleToVectorState(t);s.vectorPushRules[e].push({ruleId:t.rule_id,rule:t,vectorState:o,syncedVectorState:Tw(n,t,i),description:(0,l._t)(i.description)})}s.vectorPushRules[e].sort((e,t)=>{let n=kw.indexOf(e.ruleId),i=kw.indexOf(t.ruleId);return n<0&&(n=kw.length),i<0&&(i=kw.length),n-i}),e===Rw&&s.vectorPushRules[e].push({ruleId:xw,description:(0,l._t)("settings|notifications|messages_containing_keywords"),vectorState:s.vectorKeywordRuleInfo.vectorState})}return s}refreshPushers(){return v.J.safeGet().getPushers()}refreshThreepids(){return v.J.safeGet().getThreePids()}showSaveError(){R.Ay.createDialog(It.A,{title:(0,l._t)("settings|notifications|error_saving"),description:(0,l._t)("settings|notifications|error_saving_detail")})}async setKeywords(e,t){try{const n=(0,se.Bo)(Array.from(new Set(e))),i=(0,se.Bo)(Array.from(new Set(t.map(e=>e.pattern)))),s=(0,se.ZQ)(i,n);for(const e of s.removed)for(const n of t.filter(t=>t.pattern===e))await v.J.safeGet().deletePushRule("global",n.kind,n.rule_id);let r=this.state.vectorKeywordRuleInfo.vectorState;if(r===qE.Off){const e=t.length?YE.contentRuleVectorStateKind(t[0]):void 0;r=null!=e?e:qE.On}const a=o.PushRuleKind.ContentSpecific;for(const e of s.added)await v.J.safeGet().addPushRule("global",a,e,{actions:YE.actionsFor(r),pattern:e}),r===qE.Off&&await v.J.safeGet().setPushRuleEnabled("global",a,e,!1);await this.refreshFromServer()}catch(e){this.setState({phase:Aw.Error}),s.vF.error("Error updating keyword push rules:",e),this.showSaveError()}}renderTopSection(){const e=i.createElement(yo.A,{value:!this.isInhibited,label:(0,l._t)("settings|notifications|enable_notifications_account"),caption:(0,l._t)("settings|notifications|enable_notifications_account_detail"),onChange:this.onMasterRuleChanged,disabled:this.state.phase===Aw.Persisting});if(this.isInhibited)return e;const t=(this.state.threepids||[]).filter(e=>e.medium===o.ThreepidMedium.Email).map(e=>{var t;return i.createElement(yo.A,{key:e.address,value:!(null===(t=this.state.pushers)||void 0===t||!t.some(t=>"email"===t.kind&&t.pushkey===e.address)),label:(0,l._t)("settings|notifications|enable_email_notifications",{email:e.address}),onChange:this.onEmailNotificationsChanged.bind(this,e.address),disabled:this.state.phase===Aw.Persisting})});return i.createElement(ao.P,null,e,i.createElement(yo.A,{value:this.state.deviceNotificationsEnabled,label:(0,l._t)("settings|notifications|enable_notifications_device"),onChange:e=>this.updateDeviceNotifications(e),disabled:this.state.phase===Aw.Persisting}),this.state.deviceNotificationsEnabled&&i.createElement(i.Fragment,null,i.createElement(yo.A,{value:this.state.desktopNotifications,onChange:this.onDesktopNotificationsChanged,label:(0,l._t)("settings|notifications|enable_desktop_notifications_session"),disabled:this.state.phase===Aw.Persisting}),i.createElement(yo.A,{value:this.state.desktopShowBody,onChange:this.onDesktopShowBodyChanged,label:(0,l._t)("settings|notifications|show_message_desktop_notification"),disabled:this.state.phase===Aw.Persisting}),i.createElement(yo.A,{value:this.state.audioNotifications,onChange:this.onAudioNotificationsChanged,label:(0,l._t)("settings|notifications|enable_audible_notifications_session"),disabled:this.state.phase===Aw.Persisting})),t)}renderCategory(e){var t;if(this.isInhibited)return null;let n;if(e===Cw.VectorMentions){var s;const e=(0,se.Bo)((null===(s=this.state.vectorKeywordRuleInfo)||void 0===s?void 0:s.rules.map(e=>e.pattern))||[]);n=i.createElement(Ew,{tags:e,onAdd:this.onKeywordAdd,onRemove:this.onKeywordRemove,disabled:this.state.phase===Aw.Persisting,label:(0,l._t)("notifications|keyword"),placeholder:(0,l._t)("notifications|keyword_new")})}const o={[qE.On]:(0,l._t)("common|on"),[qE.Off]:(0,l._t)("common|off"),[qE.Loud]:(0,l._t)("settings|notifications|noisy")},r=(e,t)=>{var n;return i.createElement($s.A,{key:e.ruleId+t,name:e.ruleId,checked:(null!==(n=e.syncedVectorState)&&void 0!==n?n:e.vectorState)===t,onChange:this.onRadioChecked.bind(this,e,t),disabled:this.state.phase===Aw.Persisting,"aria-label":o[t]})},a=null===(t=this.state.vectorPushRules)||void 0===t||null===(t=t[e])||void 0===t?void 0:t.map(t=>i.createElement("fieldset",{key:e+t.ruleId,className:"mx_UserNotifSettings_gridRowContainer"},i.createElement("legend",{className:"mx_UserNotifSettings_gridRowLabel"},t.description),r(t,qE.Off),r(t,qE.On),r(t,qE.Loud),this.state.ruleIdsWithError[t.ruleId]&&i.createElement("div",{className:"mx_UserNotifSettings_gridRowError"},i.createElement(yw.H,{isError:!0},(0,l._t)("settings|notifications|error_updating")))));let c;switch(e){case Cw.VectorGlobal:c=(0,l._t)("notifications|class_global");break;case Cw.VectorMentions:c=(0,l._t)("notifications|mentions_keywords");break;case Cw.VectorOther:c=(0,l._t)("notifications|class_other");break;default:throw new Error("Developer error: Unnamed notifications section: "+e)}return i.createElement("div",null,i.createElement("div",{className:"mx_UserNotifSettings_grid"},i.createElement(bw.r,{heading:c,as:"h2"}),i.createElement("span",{className:"mx_UserNotifSettings_gridColumnLabel"},o[qE.Off]),i.createElement("span",{className:"mx_UserNotifSettings_gridColumnLabel"},o[qE.On]),i.createElement("span",{className:"mx_UserNotifSettings_gridColumnLabel"},o[qE.Loud]),a),n)}renderTargets(){var e;if(this.isInhibited)return null;const t=null===(e=this.state.pushers)||void 0===e?void 0:e.map(e=>i.createElement("tr",{key:e.kind+e.pushkey},i.createElement("td",null,e.app_display_name),i.createElement("td",null,e.device_display_name)));return null!=t&&t.length?i.createElement("div",{className:"mx_UserNotifSettings_floatingSection"},i.createElement("div",null,(0,l._t)("settings|notifications|push_targets")),i.createElement("table",null,i.createElement("tbody",null,t))):null}render(){if(this.state.phase===Aw.Loading)return i.createElement(ce.A,null);if(this.state.phase===Aw.Error)return i.createElement("p",null,(0,l._t)("settings|notifications|error_loading"));let e;return v.J.safeGet().getRooms().some(e=>(0,Il.GN)(e,!0))&&(e=i.createElement(le.A,{onClick:this.onClearNotificationsClicked,disabled:this.state.clearingNotifications,kind:"danger",className:"mx_UserNotifSettings_clearNotifsButton"},(0,l._t)("notifications|mark_all_read"))),i.createElement(i.Fragment,null,this.renderTopSection(),this.renderCategory(Cw.VectorGlobal),this.renderCategory(Cw.VectorMentions),this.renderCategory(Cw.VectorOther),this.renderTargets(),i.createElement(Pw,null),e)}}function Mw(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 Dw(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mw(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mw(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Ow(e){const t=new Map;for(const i of Object.values(o.PushRuleKind))for(const s of null!==(n=e.global[i])&&void 0!==n?n:[]){var n;s.rule_id.startsWith(".")&&t.set(s.rule_id,Dw(Dw({},s),{},{kind:i}))}return t}function Fw(e,t,n){var i,s;const r={updated:[],added:[],deleted:[]},a=Ow(e),l=function(e,t){const n=new Map;n.set(o.RuleId.Master,{rule_id:o.RuleId.Master,kind:o.PushRuleKind.Override,enabled:e.globalMute}),n.set(o.RuleId.EncryptedMessage,{rule_id:o.RuleId.EncryptedMessage,kind:o.PushRuleKind.Underride,enabled:!0,actions:GE.encodeActions({notify:e.defaultLevels.room===gd.dC.AllMessages,highlight:!1})}),n.set(o.RuleId.Message,{rule_id:o.RuleId.Message,kind:o.PushRuleKind.Underride,enabled:!0,actions:GE.encodeActions({notify:e.defaultLevels.room===gd.dC.AllMessages,highlight:!1})}),n.set(o.RuleId.EncryptedDM,{rule_id:o.RuleId.EncryptedDM,kind:o.PushRuleKind.Underride,enabled:!0,actions:GE.encodeActions({notify:e.defaultLevels.dm===gd.dC.AllMessages,highlight:!1,sound:e.sound.people})}),n.set(o.RuleId.DM,{rule_id:o.RuleId.DM,kind:o.PushRuleKind.Underride,enabled:!0,actions:GE.encodeActions({notify:e.defaultLevels.dm===gd.dC.AllMessages,highlight:!1,sound:e.sound.people})}),n.set(o.RuleId.SuppressNotices,{rule_id:o.RuleId.SuppressNotices,kind:o.PushRuleKind.Override,enabled:!e.activity.bot_notices,actions:$E.ACTION_DONT_NOTIFY}),n.set(o.RuleId.InviteToSelf,{rule_id:o.RuleId.InviteToSelf,kind:o.PushRuleKind.Override,enabled:e.activity.invite,actions:GE.encodeActions({notify:!0,highlight:!1,sound:e.sound.people})}),n.set(o.RuleId.MemberEvent,{rule_id:o.RuleId.MemberEvent,kind:o.PushRuleKind.Override,enabled:!0,actions:e.activity.status_event?$E.ACTION_NOTIFY:$E.ACTION_DONT_NOTIFY});const i=GE.encodeActions({notify:!0,sound:e.sound.mentions,highlight:!0}),s=e.mentions.user?i:$E.ACTION_DONT_NOTIFY;t&&n.set(o.RuleId.IsUserMention,{rule_id:o.RuleId.IsUserMention,kind:o.PushRuleKind.Override,enabled:!0,actions:s}),n.set(o.RuleId.ContainsDisplayName,{rule_id:o.RuleId.ContainsDisplayName,kind:o.PushRuleKind.Override,enabled:!0,actions:s}),n.set(o.RuleId.ContainsUserName,{rule_id:o.RuleId.ContainsUserName,kind:o.PushRuleKind.ContentSpecific,enabled:!0,actions:s});const r=e.mentions.room?$E.ACTION_NOTIFY:$E.ACTION_DONT_NOTIFY;return t&&n.set(o.RuleId.IsRoomMention,{rule_id:o.RuleId.IsRoomMention,kind:o.PushRuleKind.Override,enabled:!0,actions:r}),n.set(o.RuleId.AtRoomNotification,{rule_id:o.RuleId.AtRoomNotification,kind:o.PushRuleKind.Override,enabled:!0,actions:r}),n.set(o.RuleId.Tombstone,{rule_id:o.RuleId.Tombstone,kind:o.PushRuleKind.Override,enabled:e.activity.status_event,actions:$E.ACTION_HIGHLIGHT}),n.set(o.RuleId.IncomingCall,{rule_id:o.RuleId.IncomingCall,kind:o.PushRuleKind.Underride,enabled:!0,actions:GE.encodeActions({notify:!0,sound:e.sound.calls})}),n}(t,n);for(const e of l.values()){const t=a.get(e.rule_id);let n=!1;if(void 0===t)n=!0;else if(void 0!==e.enabled&&e.enabled!==t.enabled)n=!0;else if(void 0!==e.actions){const i=GE.decodeActions(t.actions),s=GE.decodeActions(e.actions);null===i||null===s?n=!0:(0,Kr.ky)(s,i)||(n=!0)}n&&r.updated.push(e)}const c=GE.encodeActions({notify:!0,sound:t.sound.mentions,highlight:!0}),d=null!==(i=null===(s=e.global.content)||void 0===s?void 0:s.filter(e=>!e.rule_id.startsWith(".")))&&void 0!==i?i:[],m=new Set(t.keywords);for(const e of d){if(m.has(e.pattern)){let n=!1;if(e.enabled!==t.mentions.keywords)n=!0;else if(void 0!==e.actions){const t=GE.decodeActions(e.actions),i=GE.decodeActions(c);null===t||null===i?n=!0:(0,Kr.ky)(i,t)||(n=!0)}n&&r.updated.push({rule_id:e.rule_id,kind:o.PushRuleKind.ContentSpecific,enabled:t.mentions.keywords,actions:c})}else r.deleted.push({rule_id:e.rule_id,kind:o.PushRuleKind.ContentSpecific});m.delete(e.pattern)}for(const e of m)r.added.push({rule_id:e,kind:o.PushRuleKind.ContentSpecific,default:!1,enabled:t.mentions.keywords,pattern:e,actions:c});return r}function Lw(e){if(0===e.length)return!0;for(const t of e){if(null==t||!1===t||!t.enabled)continue;const e=GE.decodeActions(t.actions);if(null!==e&&e.notify)return!0}return!1}function Uw(e){if(0===e.length)return!1;for(const t of e){if(null==t||!1===t||!t.enabled)continue;const e=GE.decodeActions(t.actions);if(null!==e&&!e.notify&&!0!==e.highlight&&void 0===e.sound)return!0}return!1}function Vw(e){for(const t of e){if(null==t||!1===t||!t.enabled)continue;const e=GE.decodeActions(t.actions);if(null!==e&&e.notify&&void 0!==e.sound)return e.sound}}function Bw(e){const t=function(){const e=(0,i.useRef)(null);return(0,i.useCallback)(t=>{let n;return n=null===e.current?t():e.current.then(t),e.current=n,n},[])}(),n=(0,i.useMemo)(()=>e.supportsIntentionalMentions(),[e]),s=(0,i.useRef)(null),[r,a]=(0,i.useState)(null),[l,c]=(0,i.useState)(!1),d=(0,i.useCallback)(async()=>{const t=await e.getPushRules(),i=function(e,t){var n,i,s,r;const a=Ow(e),l=null!==(n=null===(i=e.global.content)||void 0===i?void 0:i.filter(e=>!e.rule_id.startsWith(".")))&&void 0!==n?n:[],c=[a.get(o.RuleId.DM),a.get(o.RuleId.EncryptedDM)],d=[a.get(o.RuleId.Message),a.get(o.RuleId.EncryptedMessage)];return{globalMute:null!==(s=null===(r=a.get(o.RuleId.Master))||void 0===r?void 0:r.enabled)&&void 0!==s&&s,defaultLevels:{room:Lw(d)?gd.dC.AllMessages:gd.dC.MentionsOnly,dm:Lw(c)?gd.dC.AllMessages:gd.dC.MentionsOnly},sound:{calls:Vw([a.get(o.RuleId.IncomingCall)]),mentions:Vw([t&&a.get(o.RuleId.IsUserMention),a.get(o.RuleId.ContainsUserName),a.get(o.RuleId.ContainsDisplayName),...l]),people:Vw(c)},activity:{bot_notices:!Uw([a.get(o.RuleId.SuppressNotices)]),invite:Lw([a.get(o.RuleId.InviteToSelf)]),status_event:Lw([a.get(o.RuleId.MemberEvent),a.get(o.RuleId.Tombstone)])},mentions:{user:Lw([t&&a.get(o.RuleId.IsUserMention),a.get(o.RuleId.ContainsUserName),a.get(o.RuleId.ContainsDisplayName)]),room:Lw([t&&a.get(o.RuleId.IsRoomMention),a.get(o.RuleId.AtRoomNotification)]),keywords:Lw(l)},keywords:l.map(e=>e.pattern)}}(t,n),r=Fw(t,i,n);s.current=t,c(r.updated.length>0||r.added.length>0||r.deleted.length>0),a(i)},[e,n]);(0,i.useEffect)(()=>{t(d).catch(e=>console.error(e))},[e,t,d]);const m=(0,i.useCallback)(i=>{a(i),t(async()=>{if(null!==s.current){const t=Fw(s.current,i,n);await async function(e,t){await Promise.all(t.deleted.map(t=>e.deletePushRule("global",t.kind,t.rule_id))),await Promise.all(t.added.map(t=>e.addPushRule("global",t.kind,t.rule_id,t))),await Promise.all(t.updated.map(async t=>{void 0!==t.enabled&&await e.setPushRuleEnabled("global",t.kind,t.rule_id,t.enabled),void 0!==t.actions&&await e.setPushRuleActions("global",t.kind,t.rule_id,t.actions)}))}(e,t),await d()}}).catch(e=>console.error(e))},[t,n,e,d]);return{model:r,hasPendingChanges:l,reconcile:m}}const jw={globalMute:!1,defaultLevels:{room:gd.dC.AllMessages,dm:gd.dC.AllMessages},sound:{people:"default",mentions:"default",calls:"ring"},activity:{invite:!0,status_event:!1,bot_notices:!0},mentions:{user:!0,room:!0,keywords:!0},keywords:[]};function Ww({children:e,icon:t,action:n,onAction:s}){return i.createElement("div",{className:"mx_SettingsBanner"},t,i.createElement("div",{className:"mx_SettingsBanner_content"},e),n&&i.createElement(le.A,{kind:"primary_outline",onClick:null!=s?s:null},n))}function Hw(e,t,n){const[s,o]=(0,i.useState)(n),r=(0,i.useCallback)(()=>{let t=!1;return e().then(e=>{t||o(e)}).catch(e=>console.error(e)),()=>{t=!0}},t);return(0,i.useEffect)(r,[r]),[s,r]}const zw=["children"],Kw=e=>{let{children:t}=e,n=(0,g.A)(e,zw);return i.createElement("div",(0,Wt.A)({},n,{className:"mx_SettingsIndent"}),t)};function Gw(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 Jw(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Gw(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gw(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function $w(e){return i.createElement(le.A,{kind:"link_inline",onClick:()=>{S.A.dispatch({action:H.r.ViewUserSettings,initialTabId:Te.v.Account})}},e)}function qw(){const e=(0,i.useMemo)(()=>({kind:"email",app_id:"m.email",app_display_name:(0,l._t)("notifications|email_pusher_app_display_name"),lang:navigator.language,data:{brand:c.Ay.get().brand}}),[]),t=(0,de.nH)(),[n,s]=function(e){return Hw(()=>e.getPushers().then(e=>e.pushers),[e],[])}(t),[r,a]=function(e){return Hw(()=>e.getThreePids().then(e=>e.threepids),[e],[])}(t),d=(0,i.useCallback)((i,o)=>{if(o)t.setPusher(Jw(Jw({},e),{},{pushkey:i,device_display_name:i,append:!0})).catch(e=>console.error(e));else{const e=n.find(e=>"email"===e.kind&&e.pushkey===i);e&&t.removePusher(e.pushkey,e.app_id).catch(e=>console.error(e))}a(),s()},[e,t,n,s,a]),m=n.filter(e=>"email"!==e.kind);return i.createElement(i.Fragment,null,i.createElement(ao.P,{className:"mx_NotificationPusherSettings",heading:(0,l._t)("settings|notifications|email_section")},i.createElement(ao.s,{className:"mx_NotificationPusherSettings_description"},(0,l._t)("settings|notifications|email_description")),i.createElement("div",{className:"mx_SettingsSubsection_description mx_NotificationPusherSettings_detail"},i.createElement(ao.s,null,(0,l._t)("settings|notifications|email_select",{},{button:$w}))),i.createElement(Kw,null,r.filter(e=>e.medium===o.ThreepidMedium.Email).map(e=>i.createElement(Ys.A,{key:e.address,label:e.address,value:void 0!==n.find(t=>t.pushkey===e.address),onChange:t=>d(e.address,t)})))),m.length>0&&i.createElement(ao.P,{heading:(0,l._t)("settings|notifications|push_targets")},i.createElement("ul",null,n.filter(e=>"email"!==e.kind).map(e=>i.createElement("li",{key:e.pushkey},e.device_display_name||e.app_display_name)))))}function Yw(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 Xw(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yw(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yw(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Qw=function(e){return e.AllMessages="all_messages",e.PeopleMentionsKeywords="people_mentions_keywords",e.MentionsKeywords="mentions_keywords",e}(Qw||{});function Zw(e){return i.createElement("strong",null,e)}function eS(e){return i.createElement(Re.A,{href:"https://element.io/help#settings2"},e)}function tS(){var e;const t=(0,de.nH)(),n=(0,Vt.ti)("notificationsEnabled"),s=(0,Vt.ti)("notificationBodyEnabled"),o=(0,Vt.ti)("audioNotificationsEnabled"),{model:r,hasPendingChanges:a,reconcile:c}=Bw(t),d=null===r||a,m=null!=r?r:jw,[u,h]=(0,i.useState)(!1),p=(0,de.nH)().getRooms().some(e=>e.getUnreadNotificationCount()>0),g=[{value:Qw.AllMessages,label:(0,l._t)("notifications|all_messages")},{value:Qw.PeopleMentionsKeywords,label:(0,l._t)("settings|notifications|people_mentions_keywords")},{value:Qw.MentionsKeywords,label:(0,l._t)("settings|notifications|mentions_keywords_only")}];return i.createElement("div",{className:"mx_NotificationSettings2"},a&&null!==r&&i.createElement(Ww,{icon:i.createElement("img",{src:"img/element-icons/new-and-improved.65a63c7.svg",alt:"",width:12}),action:(0,l._t)("action|proceed"),onAction:()=>c(r)},(0,l._t)("settings|notifications|labs_notice_prompt",{},{strong:Zw,a:eS})),i.createElement(ro.X,null,i.createElement("div",{className:"mx_SettingsSubsection_content mx_NotificationSettings2_flags"},i.createElement(yo.A,{label:(0,l._t)("settings|notifications|enable_notifications_account"),value:!m.globalMute,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{globalMute:!e}))}}),i.createElement(yo.A,{label:(0,l._t)("settings|notifications|enable_desktop_notifications_session"),value:n,onChange:e=>D.A.setValue("notificationsEnabled",null,O.p.DEVICE,e)}),i.createElement(yo.A,{label:(0,l._t)("settings|notifications|desktop_notification_message_preview"),value:s,onChange:e=>D.A.setValue("notificationBodyEnabled",null,O.p.DEVICE,e)}),i.createElement(yo.A,{label:(0,l._t)("settings|notifications|enable_audible_notifications_session"),value:o,onChange:e=>D.A.setValue("audioNotificationsEnabled",null,O.p.DEVICE,e)})),i.createElement(ao.P,{heading:i.createElement(bw.r,{heading:(0,l._t)("settings|notifications|default_setting_section"),as:"h2"}),description:(0,l._t)("settings|notifications|default_setting_description")},i.createElement(Vm.A,{name:"defaultNotificationLevel",value:(v=m.defaultLevels,v.room===gd.dC.AllMessages?Qw.AllMessages:v.dm===gd.dC.AllMessages?Qw.PeopleMentionsKeywords:Qw.MentionsKeywords),disabled:d,definitions:g,onChange:e=>{c(Xw(Xw({},r),{},{defaultLevels:Xw(Xw({},r.defaultLevels),{},{dm:e!==Qw.MentionsKeywords?gd.dC.AllMessages:gd.dC.MentionsOnly,room:e===Qw.AllMessages?gd.dC.AllMessages:gd.dC.MentionsOnly})}))}})),i.createElement(ao.P,{heading:i.createElement(bw.r,{heading:(0,l._t)("settings|notifications|play_sound_for_section"),as:"h2"}),description:(0,l._t)("settings|notifications|play_sound_for_description")},i.createElement(Ys.A,{label:(0,l._t)("common|people"),value:void 0!==m.sound.people,disabled:d||m.defaultLevels.dm===gd.dC.MentionsOnly,onChange:e=>{c(Xw(Xw({},r),{},{sound:Xw(Xw({},r.sound),{},{people:e?"default":void 0})}))}}),i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|mentions_keywords"),value:void 0!==m.sound.mentions,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{sound:Xw(Xw({},r.sound),{},{mentions:e?"default":void 0})}))}}),i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|voip"),value:void 0!==m.sound.calls,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{sound:Xw(Xw({},r.sound),{},{calls:e?"ring":void 0})}))}})),i.createElement(ao.P,{heading:i.createElement(bw.r,{heading:(0,l._t)("settings|notifications|other_section"),as:"h2"})},i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|invites"),value:m.activity.invite,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{activity:Xw(Xw({},r.activity),{},{invite:e})}))}}),i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|room_activity"),value:m.activity.status_event,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{activity:Xw(Xw({},r.activity),{},{status_event:e})}))}}),i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|notices"),value:m.activity.bot_notices,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{activity:Xw(Xw({},r.activity),{},{bot_notices:e})}))}})),i.createElement(ao.P,{heading:i.createElement(bw.r,{heading:(0,l._t)("settings|notifications|mentions_keywords"),as:"h2"}),description:(0,l._t)("settings|notifications|keywords",{},{badge:i.createElement(rs.V,{symbol:"1",count:1,level:Na.S.Notification})})},i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|notify_at_room"),value:m.mentions.room,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{mentions:Xw(Xw({},r.mentions),{},{room:e})}))}}),i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|notify_mention",{mxid:t.getUserId()}),value:m.mentions.user,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{mentions:Xw(Xw({},r.mentions),{},{user:e})}))}}),i.createElement(Ys.A,{label:(0,l._t)("settings|notifications|notify_keyword"),byline:(0,l._t)("settings|notifications|keywords_prompt"),value:m.mentions.keywords,disabled:d,onChange:e=>{c(Xw(Xw({},r),{},{mentions:Xw(Xw({},r.mentions),{},{keywords:e})}))}}),i.createElement(Ew,{id:"mx_NotificationSettings2_Keywords",tags:null!==(e=null==r?void 0:r.keywords)&&void 0!==e?e:[],disabled:d,onAdd:e=>{c(Xw(Xw({},r),{},{keywords:[e,...r.keywords]}))},onRemove:e=>{c(Xw(Xw({},r),{},{keywords:r.keywords.filter(t=>t!==e)}))},label:(0,l._t)("notifications|keyword"),placeholder:(0,l._t)("notifications|keyword_new")}),i.createElement(Pb.A,{name:"Notifications.showbold",level:O.p.DEVICE}),i.createElement(Pb.A,{name:"Notifications.tac_only_notifications",level:O.p.DEVICE})),i.createElement(qw,null),i.createElement(ao.P,{heading:(0,l._t)("settings|notifications|quick_actions_section")},p&&i.createElement(le.A,{kind:"primary_outline",disabled:u,onClick:async()=>{h(!0),await(0,Ui.XC)(t),h(!1)}},(0,l._t)("settings|notifications|quick_actions_mark_all_read")),i.createElement(le.A,{kind:"danger_outline",disabled:null===r,onClick:()=>{c(jw)}},(0,l._t)("settings|notifications|quick_actions_reset")))));var v}class nS extends i.Component{render(){const e=D.A.getValue(tl.O5.NotificationSettings2);return i.createElement(oo.A,null,e?i.createElement(tS,null):i.createElement(ro.X,null,i.createElement(Nw,null)))}}class iS extends i.Component{constructor(e){super(e),(0,w.A)(this,"onSearchChange",e=>{this.setState({searchQuery:e})}),this.state={searchQuery:"",langs:null}}componentDidMount(){if(l.om().then(e=>{e.sort(function(e,t){return e.labelInTargetLanguage<t.labelInTargetLanguage?-1:e.labelInTargetLanguage>t.labelInTargetLanguage?1:0}),this.setState({langs:e})}).catch(()=>{this.setState({langs:[{value:"en",label:"English",labelInTargetLanguage:"English"}]})}),!this.props.value){const e=l.mf();this.props.onOptionChange(e)}}render(){if(null===this.state.langs)return i.createElement(ce.A,null);let e;e=this.state.searchQuery?this.state.langs.filter(e=>{return t=this.state.searchQuery,!!(n=e).labelInTargetLanguage.toUpperCase().includes(t.toUpperCase())||!!n.label.toUpperCase().includes(t.toUpperCase())||n.value.toUpperCase()===t.toUpperCase();var t,n}):this.state.langs;const t=e.map(e=>i.createElement("div",{key:e.value},e.labelInTargetLanguage));return i.createElement(qa.A,{id:"mx_LanguageDropdown",className:Lt()("mx_LanguageDropdown",this.props.className),onOptionChange:this.props.onOptionChange,onSearchChange:this.onSearchChange,searchEnabled:!0,value:this.props.value,label:(0,l._t)("language_dropdown_label"),disabled:this.props.disabled},t)}}class sS extends i.Component{constructor(e){super(e),this.onSearchChange=this.onSearchChange.bind(this),this.state={searchQuery:""}}componentDidMount(){const e=a.A.get();if(e){var t;const n=new Intl.DisplayNames([(0,l.mf)()],{type:"language",style:"short"});null===(t=e.getAvailableSpellCheckLanguages())||void 0===t||t.then(e=>{e.sort(function(e,t){return e<t?-1:e>t?1:0});const t=[];e.forEach(e=>{t.push({label:n.of(e),value:e})}),this.setState({languages:t})}).catch(e=>{this.setState({languages:[{value:"en",label:n.of("en")}]})})}}onSearchChange(e){this.setState({searchQuery:e})}render(){if(!this.state.languages)return i.createElement(ce.A,null);let e;e=this.state.searchQuery?this.state.languages.filter(e=>{return t=this.state.searchQuery,!!(n=e).label.toUpperCase().includes(t.toUpperCase())||n.value.toUpperCase()===t.toUpperCase();var t,n}):this.state.languages;const t=e.map(e=>i.createElement("div",{key:e.value},e.label));return i.createElement(qa.A,{id:"mx_LanguageDropdown",className:this.props.className,onOptionChange:this.props.onOptionChange,onSearchChange:this.onSearchChange,searchEnabled:!0,value:this.props.value,label:(0,l._t)("language_dropdown_label"),placeholder:(0,l._t)("settings|general|spell_check_locale_placeholder")},t)}}class oS extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"onRemove",e=>(e.stopPropagation(),e.preventDefault(),this.props.onRemoved(this.props.language)))}render(){var e;return i.createElement("div",{className:"mx_ExistingSpellCheckLanguage"},i.createElement("span",{className:"mx_ExistingSpellCheckLanguage_language"},null!==(e=this.props.label)&&void 0!==e?e:this.props.language),i.createElement(le.A,{onClick:this.onRemove,kind:"danger_sm"},(0,l._t)("action|remove")))}}class rS extends i.Component{constructor(e){super(e),(0,w.A)(this,"onRemoved",e=>{const t=this.props.languages.filter(t=>t!==e);this.props.onLanguagesChange(t)}),(0,w.A)(this,"onAddClick",e=>{e.stopPropagation(),e.preventDefault();const t=this.state.newLanguage;this.setState({newLanguage:""}),t&&(this.props.languages.includes(t)||(this.props.languages.push(t),this.props.onLanguagesChange(this.props.languages)))}),(0,w.A)(this,"onNewLanguageChange",e=>{this.state.newLanguage!==e&&this.setState({newLanguage:e})}),this.state={newLanguage:""}}render(){const e=new Intl.DisplayNames([(0,l.mf)()],{type:"language",style:"short"}),t=this.props.languages.map(t=>i.createElement(oS,{language:t,label:e.of(t),onRemoved:this.onRemoved,key:t})),n=i.createElement(le.A,{onClick:this.onAddClick,kind:"primary"},(0,l._t)("action|add"));return i.createElement(i.Fragment,null,t,i.createElement("form",{onSubmit:this.onAddClick,noValidate:!0},i.createElement(sS,{className:"mx_GeneralUserSettingsTab_spellCheckLanguageInput",value:this.state.newLanguage,onOptionChange:this.onNewLanguageChange}),n))}}var aS=n("./src/components/views/settings/tabs/user/MediaPreviewAccountSettings.tsx");const lS=()=>{const e=(0,Vt.ti)("inviteRules"),t=D.A.disabledMessage("inviteRules"),[n,o]=(0,i.useState)(!1),r=(0,i.useCallback)(async e=>{try{o(!0),await D.A.setValue("inviteRules",null,O.p.ACCOUNT,{allBlocked:!e})}catch(e){s.vF.error("Unable to set invite rules",e)}finally{o(!1)}},[]);return i.createElement(Em.b,{className:"mx_MediaPreviewAccountSetting_Form"},i.createElement(yo.A,{className:"mx_MediaPreviewAccountSetting_ToggleSwitch",label:(0,l._t)("settings|invite_controls|default_label"),value:!e.allBlocked,onChange:r,tooltip:t,disabled:!!t||n}))};var cS=n("./packages/shared-components/src/utils/i18n.tsx");const dS=({settingKey:e,roomId:t,level:n,label:s,isExplicit:o,hideIfCannotSet:r,onChange:a})=>{const l=(0,i.useId)(),c=(0,Vt.wL)(n,e,null!=t?t:null,o),[d,m]=(0,i.useState)(c),u=tl.yy[e],h=(0,i.useCallback)(i=>{m(i),D.A.setValue(e,null!=t?t:null,n,i),null==a||a(i)},[e,t,n,a]),p=!D.A.canSetValue(e,null!=t?t:null,n);if(p&&r)return i.createElement(i.Fragment,null);if(!u.options)return console.error("SettingsDropdown used for a setting with no `options`"),i.createElement(i.Fragment,null);const g=null!=s?s:D.A.getDisplayName(e,n),v=u.options.map(e=>i.createElement("div",{key:e.value},(0,cS._t)(e.label)));return i.createElement("div",{className:"mx_SettingsDropdown"},i.createElement("label",{className:"mx_SettingsDropdown_label",htmlFor:l},i.createElement("span",{className:"mx_SettingsDropdown_labelText"},g)),i.createElement(qa.A,{id:l,onOptionChange:h,menuWidth:360,value:d,disabled:p,label:g},v))},mS=()=>{const[e,t]=(0,i.useState)((0,l.UK)()),n=(0,i.useCallback)(n=>{if(e===n)return;D.A.setValue("language",null,O.p.DEVICE,n),t(n);const i=a.A.get();i&&(i.setLanguage([n]),i.reload())},[e]);return i.createElement("div",{className:"mx_SettingsSubsection_dropdown"},(0,l._t)("settings|general|application_language"),i.createElement(iS,{onOptionChange:n,value:e}),i.createElement("div",{className:"mx_PreferencesUserSettingsTab_section_hint"},(0,l._t)("settings|general|application_language_reload_hint")))},uS=()=>{var e;const[t,n]=(0,i.useState)(),[s,o]=(0,i.useState)();(0,i.useEffect)(()=>{(async()=>{const e=a.A.get(),[t,i]=await Promise.all([null==e?void 0:e.getSpellCheckEnabled(),null==e?void 0:e.getSpellCheckLanguages()]);n(t),o(i||void 0)})()},[]);const r=(0,i.useCallback)(e=>{var t;n(e),null===(t=a.A.get())||void 0===t||t.setSpellCheckEnabled(e)},[]),c=(0,i.useCallback)(e=>{var t;o(e),null===(t=a.A.get())||void 0===t||t.setSpellCheckLanguages(e)},[]);return null!==(e=a.A.get())&&void 0!==e&&e.supportsSpellCheckSettings()?i.createElement(i.Fragment,null,i.createElement(yo.A,{label:(0,l._t)("settings|general|allow_spellcheck"),value:Boolean(t),onChange:r}),t&&void 0!==s&&!ii.vL&&i.createElement(rS,{languages:s,onLanguagesChange:c})):null};class hS extends i.Component{constructor(e){super(e),(0,w.A)(this,"onTimezoneChange",e=>{this.setState({timezone:e}),um.nY(e)}),(0,w.A)(this,"onTimezoneSearchChange",e=>{const t=e.toLowerCase(),n=t?um.QG().filter(e=>e.toLowerCase().includes(t)):um.QG();this.setState({timezones:n,timezoneSearch:t})}),(0,w.A)(this,"onAutocompleteDelayChange",e=>{this.setState({autocompleteDelay:e.target.value}),D.A.setValue("autocompleteDelay",null,O.p.DEVICE,e.target.value)}),(0,w.A)(this,"onReadMarkerInViewThresholdMs",e=>{this.setState({readMarkerInViewThresholdMs:e.target.value}),D.A.setValue("readMarkerInViewThresholdMs",null,O.p.DEVICE,e.target.value)}),(0,w.A)(this,"onReadMarkerOutOfViewThresholdMs",e=>{this.setState({readMarkerOutOfViewThresholdMs:e.target.value}),D.A.setValue("readMarkerOutOfViewThresholdMs",null,O.p.DEVICE,e.target.value)}),(0,w.A)(this,"onKeyboardShortcutsClicked",()=>{S.A.dispatch({action:H.r.ViewUserSettings,initialTabId:Te.v.Keyboard})}),this.state={timezone:um.dB(),timezones:um.QG(),timezoneSearch:void 0,autocompleteDelay:D.A.getValueAt(O.p.DEVICE,"autocompleteDelay").toString(10),readMarkerInViewThresholdMs:D.A.getValueAt(O.p.DEVICE,"readMarkerInViewThresholdMs").toString(10),readMarkerOutOfViewThresholdMs:D.A.getValueAt(O.p.DEVICE,"readMarkerOutOfViewThresholdMs").toString(10)}}renderGroup(e,t=O.p.ACCOUNT){return i.createElement(i.Fragment,null,e.map(e=>i.createElement(Pb.A,{key:e,name:e,level:t})))}render(){const e=(0,l._t)("settings|preferences|default_timezone",{timezone:um.cf()}),t=D.A.getValue("feature_new_room_list"),n=c.Ay.get().brand,s=this.state.timezones.map(e=>i.createElement("div",{key:e},e));return s.unshift(i.createElement("div",{key:""},e)),i.createElement(oo.A,null,i.createElement(ro.X,null,i.createElement(ao.P,{heading:(0,l._t)("settings|general|language_section")},i.createElement(mS,null),i.createElement(uS,null)),D.A.canSetValue("Electron.autoLaunch",null,O.p.PLATFORM)&&i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|startup_window_behaviour_label")},i.createElement(dS,{settingKey:"Electron.autoLaunch",label:(0,l._t)("settings|start_automatically|label",{brand:n}),level:O.p.PLATFORM,hideIfCannotSet:!0})),i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|room_list_heading")},!t&&this.renderGroup(hS.ROOM_LIST_SETTINGS),t&&i.createElement(Pb.A,{name:"RoomList.showMessagePreview",level:O.p.DEVICE})),i.createElement(ao.P,{heading:(0,l._t)("common|spaces")},this.renderGroup(hS.SPACES_SETTINGS,O.p.ACCOUNT)),i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|keyboard_heading"),description:(0,l._t)("settings|preferences|keyboard_view_shortcuts_button",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.onKeyboardShortcutsClicked},e)})},this.renderGroup(hS.KEYBINDINGS_SETTINGS)),i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|time_heading")},i.createElement("div",{className:"mx_SettingsSubsection_dropdown"},(0,l._t)("settings|preferences|user_timezone"),i.createElement(qa.A,{id:"mx_dropdownUserTimezone",className:"mx_dropdownUserTimezone",searchEnabled:!0,value:this.state.timezone,label:(0,l._t)("settings|preferences|user_timezone"),placeholder:e,onOptionChange:this.onTimezoneChange,onSearchChange:this.onTimezoneSearchChange},s)),this.renderGroup(hS.TIME_SETTINGS),i.createElement(Pb.A,{name:"userTimezonePublish",level:O.p.DEVICE})),i.createElement(ao.P,{heading:(0,l._t)("common|presence"),description:(0,l._t)("settings|preferences|presence_description")},this.renderGroup(hS.PRESENCE_SETTINGS)),i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|composer_heading")},this.renderGroup(hS.COMPOSER_SETTINGS)),i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|code_blocks_heading")},this.renderGroup(hS.CODE_BLOCKS_SETTINGS)),i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|media_heading")},this.renderGroup(hS.IMAGES_AND_VIDEOS_SETTINGS)),i.createElement(ao.P,{heading:(0,l._t)("common|timeline")},this.renderGroup(hS.TIMELINE_SETTINGS)),i.createElement(ao.P,{heading:(0,l._t)("common|moderation_and_safety"),legacy:!1},i.createElement(aS.H,null),i.createElement(lS,null)),i.createElement(ao.P,{heading:(0,l._t)("settings|preferences|room_directory_heading")},this.renderGroup(hS.ROOM_DIRECTORY_SETTINGS)),i.createElement(ao.P,{heading:(0,l._t)("common|general"),stretchContent:!0},this.renderGroup(hS.GENERAL_SETTINGS),i.createElement(Pb.A,{name:"Electron.showTrayIcon",level:O.p.PLATFORM,hideIfCannotSet:!0}),i.createElement(Pb.A,{name:"Electron.enableHardwareAcceleration",level:O.p.PLATFORM,hideIfCannotSet:!0,label:(0,l._t)("settings|preferences|Electron.enableHardwareAcceleration",{appName:n})}),i.createElement(Pb.A,{name:"Electron.enableContentProtection",level:O.p.PLATFORM,hideIfCannotSet:!0,label:(0,l._t)("settings|preferences|Electron.enableContentProtection")}),i.createElement(Pb.A,{name:"Electron.alwaysShowMenuBar",level:O.p.PLATFORM,hideIfCannotSet:!0}),i.createElement(Pb.A,{name:"Electron.warnBeforeExit",level:O.p.PLATFORM,hideIfCannotSet:!0}),i.createElement(qs.A,{label:(0,l._t)("settings|preferences|autocomplete_delay"),type:"number",value:this.state.autocompleteDelay,onChange:this.onAutocompleteDelayChange}),i.createElement(qs.A,{label:(0,l._t)("settings|preferences|rm_lifetime"),type:"number",value:this.state.readMarkerInViewThresholdMs,onChange:this.onReadMarkerInViewThresholdMs}),i.createElement(qs.A,{label:(0,l._t)("settings|preferences|rm_lifetime_offscreen"),type:"number",value:this.state.readMarkerOutOfViewThresholdMs,onChange:this.onReadMarkerOutOfViewThresholdMs}))))}}(0,w.A)(hS,"ROOM_LIST_SETTINGS",["breadcrumbs"]),(0,w.A)(hS,"SPACES_SETTINGS",["Spaces.allRoomsInHome"]),(0,w.A)(hS,"KEYBINDINGS_SETTINGS",["ctrlFForSearch"]),(0,w.A)(hS,"PRESENCE_SETTINGS",["sendReadReceipts","sendTypingNotifications"]),(0,w.A)(hS,"COMPOSER_SETTINGS",["MessageComposerInput.autoReplaceEmoji","MessageComposerInput.useMarkdown","MessageComposerInput.suggestEmoji","MessageComposerInput.ctrlEnterToSend","MessageComposerInput.surroundWith","MessageComposerInput.showStickersButton","MessageComposerInput.insertTrailingColon"]),(0,w.A)(hS,"TIME_SETTINGS",["showTwelveHourTimestamps","alwaysShowTimestamps"]),(0,w.A)(hS,"CODE_BLOCKS_SETTINGS",["enableSyntaxHighlightLanguageDetection","expandCodeByDefault","showCodeLineNumbers"]),(0,w.A)(hS,"IMAGES_AND_VIDEOS_SETTINGS",["urlPreviewsEnabled","autoplayGifs","autoplayVideo"]),(0,w.A)(hS,"TIMELINE_SETTINGS",["showTypingNotifications","showRedactions","showReadReceipts","showJoinLeaves","showDisplaynameChanges","showChatEffects","showAvatarChanges","Pill.shouldShowPillAvatar","TextualBody.enableBigEmoji","scrollToBottomOnMessageSent","useOnlyCurrentProfiles"]),(0,w.A)(hS,"ROOM_DIRECTORY_SETTINGS",["SpotlightSearch.showNsfwPublicRooms"]),(0,w.A)(hS,"GENERAL_SETTINGS",["promptBeforeInviteUnknownUsers"]);const pS=e=>{switch(e){case oa.cm.AudioOutput:return oa.Ay.getAudioOutput();case oa.cm.AudioInput:return oa.Ay.getAudioInput();case oa.cm.VideoInput:return oa.Ay.getVideoInput()}};class gS extends i.Component{constructor(e){super(e),(0,w.A)(this,"refreshMediaDevices",async e=>{var t;this.setState({mediaDevices:null!==(t=await oa.Ay.getDevices())&&void 0!==t?t:null,[oa.cm.AudioOutput]:pS(oa.cm.AudioOutput),[oa.cm.AudioInput]:pS(oa.cm.AudioInput),[oa.cm.VideoInput]:pS(oa.cm.VideoInput)}),e&&e.getTracks().forEach(e=>e.stop())}),(0,w.A)(this,"requestMediaPermissions",async()=>{const e=await(async(e=!0)=>{let t,n;try{t=await navigator.mediaDevices.getUserMedia({audio:!0,video:e})}catch(i){if(e&&"NotFoundError"===i.name)try{t=await navigator.mediaDevices.getUserMedia({audio:!0})}catch(e){n=e}else n=i}if(n){s.vF.log("Failed to list userMedia devices",n);const e=c.Ay.get().brand;R.Ay.createDialog(It.A,{title:(0,l._t)("voip|no_media_perms_title"),description:(0,l._t)("voip|no_media_perms_description",{brand:e})})}return t})();e&&await this.refreshMediaDevices(e)}),(0,w.A)(this,"setDevice",async(e,t)=>{this.setState({[t]:e});try{await oa.Ay.instance.setDevice(e,t)}catch{s.vF.error(`Failed to set device ${t}: ${e}`),this.setState({[t]:pS(t)})}}),(0,w.A)(this,"changeWebRtcMethod",e=>{this.context.setForceTURN(!e)}),this.state={mediaDevices:null,[oa.cm.AudioOutput]:null,[oa.cm.AudioInput]:null,[oa.cm.VideoInput]:null,audioAutoGainControl:oa.Ay.getAudioAutoGainControl(),audioEchoCancellation:oa.Ay.getAudioEchoCancellation(),audioNoiseSuppression:oa.Ay.getAudioNoiseSuppression()}}async componentDidMount(){await oa.Ay.hasAnyLabeledDevices()&&await this.refreshMediaDevices()}renderDeviceOptions(e,t){return e.map(e=>i.createElement("option",{key:`${t}-${e.deviceId}`,value:e.deviceId},e.label))}renderDropdown(e,t){var n;const s=null===(n=this.state.mediaDevices)||void 0===n?void 0:n[e].slice(0);if(null==s||!s.length)return null;const o=oa.Ay.getDefaultDevice(s);return i.createElement(qs.A,{element:"select",label:t,value:this.state[e]||o,onChange:t=>this.setDevice(t.target.value,e)},this.renderDeviceOptions(s,e))}render(){let e,t,n,s;return this.state.mediaDevices?this.state.mediaDevices&&(t=this.renderDropdown(oa.cm.AudioOutput,(0,l._t)("settings|voip|audio_output"))||i.createElement("p",null,(0,l._t)("settings|voip|audio_output_empty")),n=this.renderDropdown(oa.cm.AudioInput,(0,l._t)("common|microphone"))||i.createElement("p",null,(0,l._t)("settings|voip|audio_input_empty")),s=this.renderDropdown(oa.cm.VideoInput,(0,l._t)("common|camera"))||i.createElement("p",null,(0,l._t)("settings|voip|video_input_empty"))):e=i.createElement("div",null,i.createElement("p",null,(0,l._t)("settings|voip|missing_permissions_prompt")),i.createElement(le.A,{onClick:this.requestMediaPermissions,kind:"primary"},(0,l._t)("settings|voip|request_permissions"))),i.createElement(oo.A,null,i.createElement(ro.X,null,e,i.createElement(ao.P,{heading:(0,l._t)("settings|voip|voice_section"),stretchContent:!0},t,n,i.createElement(yo.A,{value:this.state.audioAutoGainControl,onChange:async e=>{await oa.Ay.setAudioAutoGainControl(e),this.setState({audioAutoGainControl:oa.Ay.getAudioAutoGainControl()})},label:(0,l._t)("settings|voip|voice_agc")})),i.createElement(ao.P,{heading:(0,l._t)("settings|voip|video_section"),stretchContent:!0},s,i.createElement(Pb.A,{name:"VideoView.flipVideoHorizontally",level:O.p.ACCOUNT}))),i.createElement(ro.X,{heading:(0,l._t)("common|advanced")},i.createElement(ao.P,{heading:(0,l._t)("settings|voip|voice_processing")},i.createElement(yo.A,{value:this.state.audioNoiseSuppression,onChange:async e=>{await oa.Ay.setAudioNoiseSuppression(e),this.setState({audioNoiseSuppression:oa.Ay.getAudioNoiseSuppression()})},label:(0,l._t)("settings|voip|noise_suppression")}),i.createElement(yo.A,{value:this.state.audioEchoCancellation,onChange:async e=>{await oa.Ay.setAudioEchoCancellation(e),this.setState({audioEchoCancellation:oa.Ay.getAudioEchoCancellation()})},label:(0,l._t)("settings|voip|echo_cancellation")})),i.createElement(ao.P,{heading:(0,l._t)("settings|voip|connection_section")},i.createElement(Pb.A,{name:"webRtcAllowPeerToPeer",level:O.p.DEVICE,onChange:this.changeWebRtcMethod}),i.createElement(Pb.A,{name:"fallbackICEServerAllowed",label:(0,l._t)("settings|voip|enable_fallback_ice_server",{server:new URL(Ht.ZB).pathname}),level:O.p.DEVICE,hideIfCannotSet:!0}))))}}(0,w.A)(gS,"contextType",de.Ay);const vS=["action"];function _S(){var e;null===(e=a.A.get())||void 0===e||e.installUpdate()}const fS=[wt.Kn.Ready,wt.Kn.Error,wt.Kn.NotAvailable],ES=()=>{const[e,t]=(0,i.useState)(null);(0,mo.F)(S.A,e=>{let{action:n}=e,i=(0,g.A)(e,vS);n===H.r.CheckUpdates&&t(i)});const n=!!e&&!fS.includes(e.status);let s;return e&&(s=i.createElement("span",{className:"mx_UpdateCheckButton_summary"},function(e,t){switch(e){case wt.Kn.Error:return(0,l._t)("update|error_encountered",{errorDetail:t});case wt.Kn.Checking:return(0,l._t)("update|checking");case wt.Kn.NotAvailable:return(0,l._t)("update|no_update");case wt.Kn.Downloading:return(0,l._t)("update|downloading");case wt.Kn.Ready:return(0,l._t)("update|new_version_available",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:_S},e)})}}(e.status,e.detail),n&&i.createElement(Ra.A,null))),i.createElement(i.Fragment,null,i.createElement(le.A,{onClick:()=>{var e;t(null),null===(e=a.A.get())||void 0===e||e.startUpdateCheck()},kind:"primary_outline",disabled:n},(0,l._t)("update|check_action")),s)};class yS extends i.Component{constructor(e){super(e),(0,w.A)(this,"onClearCacheAndReload",()=>{a.A.get()&&(s.vF.log("Clear cache & reload clicked"),this.context.stopClient(),this.context.store.deleteAllData().then(()=>{var e;null===(e=a.A.get())||void 0===e||e.reload()}))}),(0,w.A)(this,"onBugReport",()=>{R.Ay.createDialog(Pt.A,{})}),(0,w.A)(this,"getVersionTextToCopy",()=>{const{appVersion:e,cryptoVersion:t}=this.getVersionInfo();return`${e}\n${t}`}),this.state={appVersion:null,canUpdate:!1}}componentDidMount(){var e,t;null===(e=a.A.get())||void 0===e||e.getAppVersion().then(e=>this.setState({appVersion:e})).catch(e=>{s.vF.error("Error getting vector version: ",e)}),null===(t=a.A.get())||void 0===t||t.canSelfUpdate().then(e=>this.setState({canUpdate:e})).catch(e=>{s.vF.error("Error getting self updatability: ",e)})}getVersionInfo(){var e,t;const n=c.Ay.get().brand,i=this.state.appVersion||"unknown",s=null!==(e=null===(t=this.context.getCrypto())||void 0===t?void 0:t.getVersion())&&void 0!==e?e:"<not-enabled>";return{appVersion:`${(0,l._t)("setting|help_about|brand_version",{brand:n})} ${i}`,cryptoVersion:`${(0,l._t)("setting|help_about|crypto_version")} ${s}`}}renderLegal(){const e=c.Ay.get().terms_and_conditions_links;if(!e)return null;const t=[];for(const n of e)t.push(i.createElement("div",{key:n.url},i.createElement(Re.A,{href:n.url},n.text)));return i.createElement(ao.P,{heading:(0,l._t)("common|legal")},i.createElement(ao.s,null,t))}renderCredits(){return i.createElement(ao.P,{heading:(0,l._t)("common|credits")},i.createElement(ao.s,null,i.createElement("ul",null,i.createElement("li",null,(0,l._t)("credits|default_cover_photo",{},{photo:e=>i.createElement(Re.A,{href:"themes/element/img/backgrounds/lake.jpg",rel:"noreferrer noopener",target:"_blank"},e),author:e=>i.createElement(Re.A,{href:"https://www.flickr.com/golan"},e),terms:e=>i.createElement(Re.A,{href:"https://creativecommons.org/licenses/by-sa/4.0/",rel:"noreferrer noopener",target:"_blank"},e)})),i.createElement("li",null,(0,l._t)("credits|twemoji_colr",{},{colr:e=>i.createElement(Re.A,{href:"https://github.com/matrix-org/twemoji-colr",rel:"noreferrer noopener",target:"_blank"},e),author:e=>i.createElement(Re.A,{href:"https://mozilla.org"},e),terms:e=>i.createElement(Re.A,{href:"https://www.apache.org/licenses/LICENSE-2.0",rel:"noreferrer noopener",target:"_blank"},e)})),i.createElement("li",null,(0,l._t)("credits|twemoji",{},{twemoji:e=>i.createElement(Re.A,{href:"https://twemoji.twitter.com/"},e),author:e=>i.createElement(Re.A,{href:"https://twemoji.twitter.com/"},e),terms:e=>i.createElement(Re.A,{href:"https://creativecommons.org/licenses/by/4.0/",rel:"noreferrer noopener",target:"_blank"},e)})))))}render(){const e=c.Ay.get().brand,t=(0,l._t)("setting|help_about|help_link",{brand:e},{a:e=>i.createElement(Re.A,{href:c.Ay.get("help_url")},e)});let n,s;this.state.canUpdate&&(n=i.createElement(ES,null)),c.Ay.get().bug_report_endpoint_url&&(s=i.createElement(ao.P,{heading:(0,l._t)("bug_reporting|title"),description:i.createElement(i.Fragment,null,i.createElement(ao.s,null,(0,l._t)("bug_reporting|introduction")),(0,l._t)("bug_reporting|description"))},i.createElement(le.A,{onClick:this.onBugReport,kind:"primary_outline"},(0,l._t)("bug_reporting|submit_debug_logs")),i.createElement(ao.s,null,(0,l._t)("bug_reporting|matrix_security_issue",{},{a:e=>i.createElement(Re.A,{href:"https://matrix.org/security-disclosure-policy/"},e)}))));const{appVersion:o,cryptoVersion:r}=this.getVersionInfo();return i.createElement(oo.A,null,i.createElement(ro.X,null,s,i.createElement(ao.P,{heading:(0,l._t)("common|faq"),description:t}),i.createElement(ao.P,{heading:(0,l._t)("setting|help_about|versions")},i.createElement(ao.s,null,i.createElement(By.A,{getTextToCopy:this.getVersionTextToCopy},o,i.createElement("br",null),r,i.createElement("br",null)),n)),this.renderLegal(),this.renderCredits(),i.createElement(ao.P,{heading:(0,l._t)("common|advanced")},i.createElement(ao.s,null,(0,l._t)("setting|help_about|homeserver",{homeserverUrl:this.context.getHomeserverUrl()},{code:e=>i.createElement("code",null,e)})),this.context.getIdentityServerUrl()&&i.createElement(ao.s,null,(0,l._t)("setting|help_about|identity_server",{identityServerUrl:this.context.getIdentityServerUrl()},{code:e=>i.createElement("code",null,e)})),i.createElement(ao.s,null,i.createElement("details",null,i.createElement("summary",{className:"mx_HelpUserSettingsTab_accessTokenDetails"},(0,l._t)("common|access_token")),i.createElement("strong",null,(0,l._t)("setting|help_about|access_token_detail")),i.createElement(By.A,{getTextToCopy:()=>this.context.getAccessToken()},this.context.getAccessToken()))),i.createElement(le.A,{onClick:this.onClearCacheAndReload,kind:"danger_outline"},(0,l._t)("setting|help_about|clear_cache_reload")))))}}(0,w.A)(yS,"contextType",de.Ay);var bS=n("./src/mjolnir/BanList.ts");class wS extends i.Component{constructor(e){super(e),(0,w.A)(this,"onPersonalRuleChanged",e=>{this.setState({newPersonalRule:e.target.value})}),(0,w.A)(this,"onNewListChanged",e=>{this.setState({newList:e.target.value})}),(0,w.A)(this,"onAddPersonalRule",async e=>{e.preventDefault(),e.stopPropagation();let t=bS.fy;this.state.newPersonalRule.startsWith("@")&&(t=bS.ZZ),this.setState({busy:!0});try{const e=await U.u.sharedInstance().getOrCreatePersonalList();await e.banEntity(t,this.state.newPersonalRule,(0,l._t)("labs_mjolnir|ban_reason")),this.setState({newPersonalRule:""})}catch(e){s.vF.error(e),R.Ay.createDialog(It.A,{title:(0,l._t)("labs_mjolnir|error_adding_ignore"),description:(0,l._t)("labs_mjolnir|something_went_wrong")})}finally{this.setState({busy:!1})}}),(0,w.A)(this,"onSubscribeList",async e=>{e.preventDefault(),e.stopPropagation(),this.setState({busy:!0});try{const e=await v.J.safeGet().joinRoom(this.state.newList);await U.u.sharedInstance().subscribeToList(e.roomId),this.setState({newList:""})}catch(e){s.vF.error(e),R.Ay.createDialog(It.A,{title:(0,l._t)("labs_mjolnir|error_adding_list_title"),description:(0,l._t)("labs_mjolnir|error_adding_list_description")})}finally{this.setState({busy:!1})}}),this.state={busy:!1,newPersonalRule:"",newList:""}}async removePersonalRule(e){this.setState({busy:!0});try{const t=U.u.sharedInstance().getPersonalList();await t.unbanEntity(e.kind,e.entity)}catch(e){s.vF.error(e),R.Ay.createDialog(It.A,{title:(0,l._t)("labs_mjolnir|error_removing_ignore"),description:(0,l._t)("labs_mjolnir|something_went_wrong")})}finally{this.setState({busy:!1})}}async unsubscribeFromList(e){this.setState({busy:!0});try{await U.u.sharedInstance().unsubscribeFromList(e.roomId),await v.J.safeGet().leave(e.roomId)}catch(e){s.vF.error(e),R.Ay.createDialog(It.A,{title:(0,l._t)("labs_mjolnir|error_removing_list_title"),description:(0,l._t)("labs_mjolnir|error_removing_list_description")})}finally{this.setState({busy:!1})}}viewListRules(e){const t=v.J.safeGet().getRoom(e.roomId),n=t?t.name:e.roomId,s=e=>{if(0===e.length)return i.createElement("i",null,(0,l._t)("labs_mjolnir|rules_empty"));const t=[];for(const n of e)t.push(i.createElement("li",{key:n.kind+n.entity},i.createElement("code",null,n.entity)));return i.createElement("ul",null,t)};R.Ay.createDialog(Tt.A,{title:(0,l._t)("labs_mjolnir|rules_title",{roomName:n}),description:i.createElement("div",null,i.createElement("h3",null,(0,l._t)("labs_mjolnir|rules_server")),s(e.serverRules),i.createElement("h3",null,(0,l._t)("labs_mjolnir|rules_user")),s(e.userRules)),button:(0,l._t)("action|close"),hasCancelButton:!1})}renderPersonalBanListRules(){const e=U.u.sharedInstance().getPersonalList(),t=e?[...e.userRules,...e.serverRules]:[];if(!e||t.length<=0)return i.createElement("i",null,(0,l._t)("labs_mjolnir|personal_empty"));const n=[];for(const e of t)n.push(i.createElement("li",{key:e.entity,className:"mx_MjolnirUserSettingsTab_listItem"},i.createElement(le.A,{kind:"danger_sm",onClick:()=>this.removePersonalRule(e),disabled:this.state.busy},(0,l._t)("action|remove"))," ",i.createElement("code",null,e.entity)));return i.createElement("div",null,i.createElement("p",null,(0,l._t)("labs_mjolnir|personal_section")),i.createElement("ul",null,n))}renderSubscribedBanLists(){const e=U.u.sharedInstance().getPersonalList(),t=U.u.sharedInstance().lists.filter(t=>!e||e.roomId!==t.roomId);if(!t||t.length<=0)return i.createElement("i",null,(0,l._t)("labs_mjolnir|no_lists"));const n=[];for(const e of t){const t=v.J.safeGet().getRoom(e.roomId),s=t?i.createElement("span",null,t.name," (",i.createElement("code",null,e.roomId),")"):i.createElement("code",null,"list.roomId");n.push(i.createElement("li",{key:e.roomId,className:"mx_MjolnirUserSettingsTab_listItem"},i.createElement(le.A,{kind:"danger_sm",onClick:()=>this.unsubscribeFromList(e),disabled:this.state.busy},(0,l._t)("action|unsubscribe"))," ",i.createElement(le.A,{kind:"primary_sm",onClick:()=>this.viewListRules(e),disabled:this.state.busy},(0,l._t)("labs_mjolnir|view_rules"))," ",s))}return i.createElement("div",null,i.createElement("p",null,(0,l._t)("labs_mjolnir|lists")),i.createElement("ul",null,n))}render(){const e=c.Ay.get().brand;return i.createElement(oo.A,null,i.createElement(ro.X,null,i.createElement(ao.s,null,i.createElement("strong",{className:"warning"},(0,l._t)("labs_mjolnir|advanced_warning")),i.createElement("p",null,(0,l._t)("labs_mjolnir|explainer_1",{brand:e},{code:e=>i.createElement("code",null,e)})),i.createElement("p",null,(0,l._t)("labs_mjolnir|explainer_2"))),i.createElement(ao.P,{heading:(0,l._t)("labs_mjolnir|personal_heading"),description:(0,l._t)("labs_mjolnir|personal_description",{myBanList:(0,l._t)("labs_mjolnir|room_name")})},this.renderPersonalBanListRules(),i.createElement("form",{onSubmit:this.onAddPersonalRule,autoComplete:"off"},i.createElement(qs.A,{type:"text",label:(0,l._t)("labs_mjolnir|personal_new_label"),placeholder:(0,l._t)("labs_mjolnir|personal_new_placeholder"),value:this.state.newPersonalRule,onChange:this.onPersonalRuleChanged}),i.createElement(le.A,{kind:"primary",onClick:this.onAddPersonalRule,disabled:this.state.busy},(0,l._t)("action|ignore")))),i.createElement(ao.P,{heading:(0,l._t)("labs_mjolnir|lists_heading"),description:i.createElement(i.Fragment,null,i.createElement("strong",{className:"warning"},(0,l._t)("labs_mjolnir|lists_description_1"))," ",i.createElement("span",null,(0,l._t)("labs_mjolnir|lists_description_2")))},this.renderSubscribedBanLists(),i.createElement("form",{onSubmit:this.onSubscribeList,autoComplete:"off"},i.createElement(qs.A,{type:"text",label:(0,l._t)("labs_mjolnir|lists_new_label"),value:this.state.newList,onChange:this.onNewListChanged}),i.createElement(le.A,{kind:"primary",onClick:this.onSubscribeList,disabled:this.state.busy},(0,l._t)("action|subscribe"))))))}}var SS=n("./src/accessibility/KeyboardShortcutUtils.ts");const AS=Object.entries(si.R6).filter(([e])=>e!==si.md.LABS||Mb()),CS=({name:e})=>{const t=(0,SS.Lt)(e),n=(0,SS.Tz)(e);return t&&n?i.createElement("li",{className:"mx_KeyboardShortcut_shortcutRow"},t,i.createElement(Ol.S,{value:n})):null},xS=({categoryName:e,category:t})=>t.categoryLabel?i.createElement(ao.P,{heading:(0,l._t)(t.categoryLabel),key:e},i.createElement("ul",{className:"mx_KeyboardShortcut_shortcutList"},t.settingNames.map(e=>i.createElement(CS,{key:e,name:e})))):null,RS=()=>i.createElement(oo.A,null,i.createElement(ro.X,null,AS.map(([e,t])=>i.createElement(xS,{key:e,categoryName:e,category:t})))),kS=["value","options","selectedLabel","className"],IS=(e,t)=>n=>{const i=e.find(({id:e})=>e===n);return i?t?`${t}: ${i.label}`:i.label:null},TS=e=>{let{value:t,options:n,selectedLabel:s,className:o}=e,r=(0,g.A)(e,kS);return i.createElement(qa.A,(0,Wt.A)({},r,{value:t,className:Lt()("mx_FilterDropdown",o),getShortOption:IS(n,s)}),n.map(({id:e,label:n,description:s})=>i.createElement("div",{className:"mx_FilterDropdown_option",key:e},e===t&&i.createElement(pe.A,{className:"mx_FilterDropdown_optionSelectedIcon"}),i.createElement("span",{className:"mx_FilterDropdown_optionLabel"},n),!!s&&i.createElement("span",{className:"mx_FilterDropdown_optionDescription"},s))))};var PS=n("./src/components/views/elements/ToggleSwitch.tsx");const NS=["title","description"],MS=e=>{let{title:t,description:n}=e,s=(0,g.A)(e,NS);return i.createElement(le.A,(0,Wt.A)({},s,{kind:"link_inline",onClick:()=>{R.Ay.createDialog(ll.A,{title:t,description:n,button:(0,l._t)("action|got_it"),hasCloseButton:!0})},className:"mx_LearnMore_button"}),(0,l._t)("action|learn_more"))},DS=({device:e,saveDeviceName:t,stopEditing:n})=>{const[s,o]=(0,i.useState)(e.display_name||""),[r,a]=(0,i.useState)(!1),[c,d]=(0,i.useState)(null);(0,i.useEffect)(()=>{o(e.display_name||"")},[e.display_name]);const m=async e=>{a(!0),d(null),e.preventDefault();try{await t(s),n()}catch{d((0,l._t)("settings|sessions|error_set_name")),a(!1)}},u=`device-rename-${e.device_id}`,h=`device-rename-description-${e.device_id}`;return i.createElement("form",{"aria-disabled":r,className:"mx_DeviceDetailHeading_renameForm",onSubmit:m,method:"post"},i.createElement("p",{id:u,className:"mx_DeviceDetailHeading_renameFormHeading"},(0,l._t)("settings|sessions|rename_form_heading")),i.createElement("div",null,i.createElement(qs.A,{type:"text",value:s,autoComplete:"off",onChange:e=>o(e.target.value),autoFocus:!0,disabled:r,"aria-labelledby":u,"aria-describedby":h,className:"mx_DeviceDetailHeading_renameFormInput",maxLength:100}),i.createElement(yw.H,{id:h},(0,l._t)("settings|sessions|rename_form_caption"),i.createElement(MS,{title:(0,l._t)("settings|sessions|rename_form_learn_more"),description:i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("settings|sessions|rename_form_learn_more_description_1")),i.createElement("p",null,(0,l._t)("settings|sessions|rename_form_learn_more_description_2")))}),!!c&&i.createElement("span",{className:"mx_DeviceDetailHeading_renameFormError"},c))),i.createElement("div",{className:"mx_DeviceDetailHeading_renameFormButtons"},i.createElement(le.A,{onClick:m,kind:"primary",disabled:r},(0,l._t)("action|save")),i.createElement(le.A,{onClick:n,kind:"secondary",disabled:r},(0,l._t)("action|cancel")),r&&i.createElement(ce.A,{w:16,h:16})))},OS=({device:e,saveDeviceName:t})=>{const[n,s]=(0,i.useState)(!1);return n?i.createElement(DS,{device:e,saveDeviceName:t,stopEditing:()=>s(!1)}):i.createElement("div",{className:"mx_DeviceDetailHeading"},i.createElement(bh.A,{size:"4"},e.display_name||e.device_id),i.createElement(le.A,{kind:"link_inline",onClick:()=>s(!0),className:"mx_DeviceDetailHeading_renameCta"},(0,l._t)("action|rename")))};var FS;function LS(){return LS=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},LS.apply(null,arguments)}var US=function(e,t){return i.createElement("svg",LS({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 18 18",role:"presentation","aria-hidden":!0,ref:t},e),FS||(FS=i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M2 3.05v6.22C2 15.63 9 17 9 17s7-1.37 7-7.73V3.05L9 1zm9.94 2.47c.19-.18.49-.17.67.02.16.18.16.45.02.63l-4.22 5.11-.03.04c-.28.34-.79.39-1.13.11a.3.3 0 0 1-.077-.067l-.023-.023-1.81-2.08c-.2-.24-.18-.6.06-.8.2-.18.49-.18.7-.04l1.57 1.1z",clipRule:"evenodd"})))},VS=(0,i.forwardRef)(US);var BS=n("./res/img/e2e/warning.svg");const jS={[Ye.Inactive]:qe,[Ye.Verified]:VS,[Ye.Unverified]:BS.I,[Ye.Unverifiable]:BS.I},WS=({variation:e})=>{const t=jS[e];return i.createElement("div",{className:Lt()("mx_DeviceSecurityCard_icon",e)},i.createElement(t,{height:16,width:16}))},HS=({variation:e,heading:t,description:n,children:s})=>i.createElement("div",{className:"mx_DeviceSecurityCard"},i.createElement(WS,{variation:e}),i.createElement("div",{className:"mx_DeviceSecurityCard_content"},i.createElement("p",{className:"mx_DeviceSecurityCard_heading"},t),i.createElement("p",{className:"mx_DeviceSecurityCard_description"},n),!!s&&i.createElement("div",{className:"mx_DeviceSecurityCard_actions"},s))),zS={[Ye.Verified]:{title:(0,l._t)("settings|sessions|verified_sessions"),description:i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("settings|sessions|verified_sessions_explainer_1")),i.createElement("p",null,(0,l._t)("settings|sessions|verified_sessions_explainer_2")))},[Ye.Unverified]:{title:(0,l._t)("settings|sessions|unverified_sessions"),description:i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("settings|sessions|unverified_sessions_explainer_1")),i.createElement("p",null,(0,l._t)("settings|sessions|unverified_sessions_explainer_2")))},[Ye.Unverifiable]:{title:(0,l._t)("settings|sessions|unverified_session"),description:i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("settings|sessions|unverified_session_explainer_1")),i.createElement("p",null,(0,l._t)("settings|sessions|unverified_session_explainer_2")),i.createElement("p",null,(0,l._t)("settings|sessions|unverified_session_explainer_3")))},[Ye.Inactive]:{title:(0,l._t)("settings|sessions|inactive_sessions"),description:i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("settings|sessions|inactive_sessions_explainer_1")),i.createElement("p",null,(0,l._t)("settings|sessions|inactive_sessions_explainer_2")))}},KS=({variation:e})=>{const{title:t,description:n}=zS[e];return i.createElement(MS,{title:t,description:n})},GS=({device:e,isCurrentDevice:t,onVerifyDevice:n})=>{const s=((e,t)=>{if(e.isVerified){const e=t?(0,l._t)("settings|sessions|device_verified_description_current"):(0,l._t)("settings|sessions|device_verified_description");return{variation:Ye.Verified,heading:(0,l._t)("settings|sessions|verified_session"),description:i.createElement(i.Fragment,null,e,i.createElement(KS,{variation:Ye.Verified}))}}if(null===e.isVerified)return{variation:Ye.Unverified,heading:(0,l._t)("settings|sessions|unverified_session"),description:i.createElement(i.Fragment,null,(0,l._t)("settings|sessions|unverified_session_explainer_1"),i.createElement(KS,{variation:Ye.Unverifiable}))};const n=t?(0,l._t)("settings|sessions|device_unverified_description_current"):(0,l._t)("settings|sessions|device_unverified_description");return{variation:Ye.Unverified,heading:(0,l._t)("settings|sessions|unverified_session"),description:i.createElement(i.Fragment,null,n,i.createElement(KS,{variation:Ye.Unverified}))}})(e,t);return i.createElement(HS,s,!1===e.isVerified&&!!n&&i.createElement(le.A,{kind:"primary",onClick:n},(0,l._t)("settings|sessions|verify_session")))};var JS=function(e){return e.Profile="org.matrix.profile",e.SessionsList="org.matrix.sessions_list",e.SessionView="org.matrix.session_view",e.SessionEnd="org.matrix.session_end",e.AccountDeactivate="org.matrix.account_deactivate",e.CrossSigningReset="org.matrix.cross_signing_reset",e}(JS||{});const $S=(e,t)=>{const n=((e,t)=>{const n=new URL(e);return n.searchParams.set("action",t),n})(e,JS.SessionView);return n.searchParams.set("device_id",t),n.toString()};function qS(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 YS(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qS(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qS(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function XS(e,t){return e?!!e[o.PUSHER_ENABLED.name]:!t||!t.is_silenced}function QS(e,t,n){return!t&&!(!e||n)}const ZS=({device:e,pusher:t,localNotificationSettings:n,isSigningOut:s,onVerifyDevice:o,onSignOutDevice:r,saveDeviceName:a,setPushNotifications:c,supportsMSC3881:d,className:m,isCurrentDevice:u,delegatedAuthAccountUrl:h})=>{const p=[{id:"session",values:[{label:(0,l._t)("settings|sessions|session_id"),value:e.device_id},{label:(0,l._t)("settings|sessions|last_activity"),value:e.last_seen_ts&&(0,tt.Yq)(new Date(e.last_seen_ts))}]},{id:"application",heading:(0,l._t)("common|application"),values:[{label:(0,l._t)("common|name"),value:e.appName},{label:(0,l._t)("common|version"),value:e.appVersion},{label:(0,l._t)("settings|sessions|url"),value:e.url}]},{id:"device",heading:(0,l._t)("common|device"),values:[{label:(0,l._t)("common|model"),value:e.deviceModel},{label:(0,l._t)("settings|sessions|os"),value:e.deviceOperatingSystem},{label:(0,l._t)("settings|sessions|browser"),value:e.client},{label:(0,l._t)("settings|sessions|ip"),value:e.last_seen_ip}]}].map(e=>YS(YS({},e),{},{values:e.values.filter(e=>!!e.value)})).filter(e=>e.values.length),g=!!t||!!n;return i.createElement("div",{className:Lt()("mx_DeviceDetails",m)},i.createElement("section",{className:"mx_DeviceDetails_section"},i.createElement(OS,{device:e,saveDeviceName:a}),i.createElement(GS,{device:e,onVerifyDevice:o,isCurrentDevice:u})),!h&&i.createElement("section",{className:"mx_DeviceDetails_section"},i.createElement("p",{className:"mx_DeviceDetails_sectionHeading"},(0,l._t)("settings|sessions|details_heading")),p.map(({heading:e,values:t,id:n},s)=>i.createElement("table",{className:"mx_DeviceDetails_metadataTable",key:s},e&&i.createElement("thead",null,i.createElement("tr",null,i.createElement("th",null,e))),i.createElement("tbody",null,t.map(({label:e,value:t})=>i.createElement("tr",{key:e},i.createElement("td",{className:"mxDeviceDetails_metadataLabel"},e),i.createElement("td",{className:"mxDeviceDetails_metadataValue"},t))))))),g&&i.createElement("section",{className:"mx_DeviceDetails_section mx_DeviceDetails_pushNotifications"},i.createElement(PS.A,{checked:XS(t,n),disabled:QS(t,n,d),onChange:t=>null==c?void 0:c(e.device_id,t),title:(0,l._t)("settings|sessions|push_toggle")}),i.createElement("p",{className:"mx_DeviceDetails_sectionHeading"},(0,l._t)("settings|sessions|push_heading"),i.createElement("small",{className:"mx_DeviceDetails_sectionSubheading"},(0,l._t)("settings|sessions|push_subheading")))),i.createElement("section",{className:"mx_DeviceDetails_section"},h&&!u?i.createElement(le.A,{element:"a",onClick:null,kind:"link_inline",href:$S(h,e.device_id),target:"_blank"},i.createElement("span",{className:"mx_DeviceDetails_signOutButtonContent"},(0,l._t)("settings|sessions|manage"))):i.createElement(le.A,{onClick:r,kind:"danger_inline",disabled:s},i.createElement("span",{className:"mx_DeviceDetails_signOutButtonContent"},(0,l._t)("settings|sessions|sign_out"),s&&i.createElement(ce.A,{w:16,h:16})))))},eA=["isExpanded"],tA=e=>{let{isExpanded:t}=e,n=(0,g.A)(e,eA);const s=t?(0,l._t)("settings|sessions|hide_details"):(0,l._t)("settings|sessions|show_details");return i.createElement(le.A,(0,Wt.A)({},n,{"aria-label":s,title:s,kind:"icon",className:Lt()("mx_DeviceExpandDetailsButton",{mx_DeviceExpandDetailsButton_expanded:t})}),i.createElement(rc.A,{className:"mx_DeviceExpandDetailsButton_icon"}))};var nA;function iA(){return iA=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},iA.apply(null,arguments)}var sA=function(e,t){return i.createElement("svg",iA({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 22 23",role:"presentation","aria-hidden":!0,ref:t},e),nA||(nA=i.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M11 22.5c6.075 0 11-4.925 11-11S17.075.5 11 .5 0 5.425 0 11.5s4.925 11 11 11m0-4.24a1.375 1.375 0 1 0 0-2.75 1.375 1.375 0 0 0 0 2.75M9.09 9.429A1.91 1.91 0 0 1 11 7.518c1.048 0 1.91.862 1.91 1.91 0 .485-.208.659-1.026 1.224-.363.25-.86.598-1.246 1.108-.415.546-.67 1.227-.67 2.093h2.063c0-.424.113-.666.25-.846.164-.217.402-.4.775-.659l.124-.084c.676-.46 1.792-1.219 1.792-2.836A3.98 3.98 0 0 0 11 5.456a3.97 3.97 0 0 0-3.973 3.972z",clipRule:"evenodd"})))},oA=(0,i.forwardRef)(sA);var rA;function aA(){return aA=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},aA.apply(null,arguments)}var lA=function(e,t){return i.createElement("svg",aA({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 22 19",role:"presentation","aria-hidden":!0,ref:t},e),rA||(rA=i.createElement("path",{fill:"currentColor",d:"M3 15.5q-.824 0-1.412-.587A1.93 1.93 0 0 1 1 13.5v-11q0-.825.588-1.413A1.93 1.93 0 0 1 3 .5h16q.825 0 1.413.587Q21 1.675 21 2.5v11q0 .825-.587 1.413A1.93 1.93 0 0 1 19 15.5zm0-2h16v-11H3zm-2 5a.97.97 0 0 1-.712-.288A.97.97 0 0 1 0 17.5q0-.424.288-.712A.97.97 0 0 1 1 16.5h20q.424 0 .712.288A.97.97 0 0 1 22 17.5q0 .424-.288.712A.97.97 0 0 1 21 18.5zm2-5v-11z"})))},cA=(0,i.forwardRef)(lA);var dA;function mA(){return mA=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},mA.apply(null,arguments)}var uA=function(e,t){return i.createElement("svg",mA({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 20 17",role:"presentation","aria-hidden":!0,ref:t},e),dA||(dA=i.createElement("path",{fill:"currentColor",d:"M18 16.5H2q-.824 0-1.412-.587A1.93 1.93 0 0 1 0 14.5v-12q0-.825.588-1.412A1.92 1.92 0 0 1 2 .5h16q.825 0 1.413.588Q20 1.675 20 2.5v12q0 .825-.587 1.413A1.93 1.93 0 0 1 18 16.5M2 4.5v10h16v-10z"})))},hA=(0,i.forwardRef)(uA);var pA;function gA(){return gA=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},gA.apply(null,arguments)}var vA=function(e,t){return i.createElement("svg",gA({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 14 23",role:"presentation","aria-hidden":!0,ref:t},e),pA||(pA=i.createElement("path",{fill:"currentColor",d:"M12 .51 2 .5c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-18c0-1.1-.9-1.99-2-1.99m0 17.99H2v-14h10z"})))},_A=(0,i.forwardRef)(vA);const fA={[Ge.b.Desktop]:cA,[Ge.b.Mobile]:_A,[Ge.b.Web]:hA,[Ge.b.Unknown]:oA},EA={[Ge.b.Desktop]:(0,l.AO)("settings|sessions|desktop_session"),[Ge.b.Mobile]:(0,l.AO)("settings|sessions|mobile_session"),[Ge.b.Web]:(0,l.AO)("settings|sessions|web_session"),[Ge.b.Unknown]:(0,l.AO)("settings|sessions|unknown_session")},yA=({isVerified:e,isSelected:t,deviceType:n})=>{const s=fA[n]||fA[Ge.b.Unknown],o=(0,l._t)(EA[n]||EA[Ge.b.Unknown]);return i.createElement("div",{className:Lt()("mx_DeviceTypeIcon",{mx_DeviceTypeIcon_selected:t})},i.createElement("div",{className:"mx_DeviceTypeIcon_deviceIconWrapper"},i.createElement(s,{className:"mx_DeviceTypeIcon_deviceIcon",role:"img","aria-label":o})),e?i.createElement(VS,{className:Lt()("mx_DeviceTypeIcon_verificationIcon","verified"),role:"img","aria-label":(0,l._t)("common|verified")}):i.createElement(BS.I,{className:Lt()("mx_DeviceTypeIcon_verificationIcon","unverified"),role:"img","aria-label":(0,l._t)("common|unverified")}))};var bA=n("./src/utils/NativeEventUtils.ts");const wA=({device:e})=>i.createElement(bh.A,{size:"4"},e.display_name||e.device_id),SA=({device:e,children:t,isSelected:n,onClick:s})=>i.createElement("div",{className:Lt()("mx_DeviceTile",{mx_DeviceTile_interactive:!!s}),onClick:s},i.createElement(yA,{isVerified:e.isVerified,isSelected:n,deviceType:e.deviceType}),i.createElement("div",{className:"mx_DeviceTile_info"},i.createElement(wA,{device:e}),i.createElement("div",{className:"mx_DeviceTile_metadata"},i.createElement(st,{device:e}))),i.createElement("div",{className:"mx_DeviceTile_actions",onClick:(0,bA.Z)(()=>{})},t)),AA=({children:e,device:t,isSelected:n,onSelect:s,onClick:o})=>i.createElement("div",{className:"mx_SelectableDeviceTile"},i.createElement(no.A,{checked:n,onChange:s,className:"mx_SelectableDeviceTile_checkbox",id:`device-tile-checkbox-${t.device_id}`},i.createElement(SA,{device:t,onClick:o,isSelected:n},e))),CA=["selectedDeviceCount","isAllSelected","isSelectDisabled","toggleSelectAll","children"],xA=e=>{let{selectedDeviceCount:t,isAllSelected:n,isSelectDisabled:s,toggleSelectAll:o,children:r}=e,a=(0,g.A)(e,CA);const c=n?(0,l._t)("common|deselect_all"):(0,l._t)("common|select_all");return i.createElement("div",(0,Wt.A)({className:"mx_FilteredDeviceListHeader"},a),!s&&i.createElement(zt.m,{label:c,placement:"top",isTriggerInteractive:!1},i.createElement(no.A,{checked:n,onChange:o,id:"device-select-all-checkbox","aria-label":c})),i.createElement("span",{className:"mx_FilteredDeviceListHeader_label"},t>0?(0,l._t)("settings|sessions|n_sessions_selected",{count:t}):(0,l._t)("settings|sessions|title")),r)},RA=(e,t)=>t.includes(e),kA=(e,t)=>(t.last_seen_ts||0)-(e.last_seen_ts||0)||(e.display_name||e.device_id).localeCompare(t.display_name||t.device_id),IA="ALL",TA=({filter:e})=>{if((e=>!!e&&[Ye.Inactive,Ye.Unverified,Ye.Verified].includes(e))(e)){const t={[Ye.Verified]:{title:(0,l._t)("settings|sessions|verified_sessions"),description:(0,l._t)("settings|sessions|verified_sessions_list_description")},[Ye.Unverified]:{title:(0,l._t)("settings|sessions|unverified_sessions"),description:(0,l._t)("settings|sessions|unverified_sessions_list_description")},[Ye.Unverifiable]:{title:(0,l._t)("settings|sessions|unverified_session"),description:(0,l._t)("settings|sessions|unverified_session_explainer_1")},[Ye.Inactive]:{title:(0,l._t)("settings|sessions|inactive_sessions"),description:(0,l._t)("settings|sessions|inactive_sessions_list_description",{inactiveAgeDays:90})}},{title:n,description:s}=t[e];return i.createElement("div",{className:"mx_FilteredDeviceList_securityCard"},i.createElement(HS,{variation:e,heading:n,description:i.createElement("span",null,s,i.createElement(KS,{variation:e}))}))}return null},PA=({filter:e,clearFilter:t})=>i.createElement("div",{className:"mx_FilteredDeviceList_noResults"},(e=>{switch(e){case Ye.Verified:return(0,l._t)("settings|sessions|no_verified_sessions");case Ye.Unverified:return(0,l._t)("settings|sessions|no_unverified_sessions");case Ye.Inactive:return(0,l._t)("settings|sessions|no_inactive_sessions");default:return(0,l._t)("settings|sessions|no_sessions")}})(e),!!e&&i.createElement(i.Fragment,null," ",i.createElement(le.A,{kind:"link_inline",onClick:t},(0,l._t)("action|show_all")))),NA=({device:e,pusher:t,localNotificationSettings:n,isExpanded:s,isSigningOut:o,isSelected:r,onDeviceExpandToggle:a,onSignOutDevice:l,saveDeviceName:c,onRequestDeviceVerification:d,setPushNotifications:m,toggleSelected:u,supportsMSC3881:h,isSelectDisabled:p,delegatedAuthAccountUrl:g})=>{const v=i.createElement(i.Fragment,null,o&&i.createElement(ce.A,{w:16,h:16}),i.createElement(tA,{isExpanded:s,onClick:a}));return i.createElement("li",{className:"mx_FilteredDeviceList_listItem"},p?i.createElement(SA,{device:e,onClick:a},v):i.createElement(AA,{isSelected:r,onSelect:u,onClick:a,device:e},v),s&&i.createElement(ZS,{device:e,pusher:t,localNotificationSettings:n,isSigningOut:o,onVerifyDevice:d,onSignOutDevice:l,saveDeviceName:c,setPushNotifications:m,supportsMSC3881:h,className:"mx_FilteredDeviceList_deviceDetails",delegatedAuthAccountUrl:g}))},MA=({devices:e,pushers:t,localNotificationSettings:n,filter:s,expandedDeviceIds:r,signingOutDeviceIds:a,selectedDeviceIds:c,onFilterChange:d,onDeviceExpandToggle:m,saveDeviceName:u,onSignOutDevices:h,onRequestDeviceVerification:p,setPushNotifications:g,setSelectedDeviceIds:v,supportsMSC3881:_,delegatedAuthAccountUrl:f,ref:E})=>{const y=((e,t)=>et(Object.values(e),t?[t]:[]).sort(kA))(e,s);function b(e){return t.find(t=>t[o.PUSHER_DEVICE_ID.name]===e.device_id)}const w=[{id:IA,label:(0,l._t)("settings|sessions|filter_all")},{id:Ye.Verified,label:(0,l._t)("common|verified"),description:(0,l._t)("settings|sessions|filter_verified_description")},{id:Ye.Unverified,label:(0,l._t)("common|unverified"),description:(0,l._t)("settings|sessions|filter_unverified_description")},{id:Ye.Inactive,label:(0,l._t)("settings|sessions|filter_inactive"),description:(0,l._t)("settings|sessions|filter_inactive_description",{inactiveAgeDays:90})}],S=c.length>=y.length,A=!!a.length;return i.createElement("div",{className:"mx_FilteredDeviceList",ref:E},i.createElement(xA,{selectedDeviceCount:c.length,isAllSelected:S,toggleSelectAll:()=>{v(S?[]:y.map(e=>e.device_id))},isSelectDisabled:!!f},c.length?i.createElement(i.Fragment,null,i.createElement(le.A,{kind:"danger_inline",disabled:A,onClick:()=>h(c),className:"mx_FilteredDeviceList_headerButton"},A&&i.createElement(ce.A,{w:16,h:16}),(0,l._t)("action|sign_out")),i.createElement(le.A,{kind:"content_inline",disabled:A,onClick:()=>v([]),className:"mx_FilteredDeviceList_headerButton"},(0,l._t)("action|cancel"))):i.createElement(TS,{id:"device-list-filter",label:(0,l._t)("settings|sessions|filter_label"),value:s||IA,onOptionChange:e=>{d(e===IA?void 0:e)},options:w,selectedLabel:(0,l._t)("action|show")})),y.length?i.createElement(TA,{filter:s}):i.createElement(PA,{filter:s,clearFilter:()=>d(void 0)}),i.createElement("ol",{className:"mx_FilteredDeviceList_list"},y.map(e=>i.createElement(NA,{key:e.device_id,device:e,pusher:b(e),localNotificationSettings:n.get(e.device_id),isExpanded:r.includes(e.device_id),isSigningOut:a.includes(e.device_id),isSelected:RA(e.device_id,c),isSelectDisabled:!!f,onDeviceExpandToggle:()=>m(e.device_id),onSignOutDevice:()=>h([e.device_id]),saveDeviceName:t=>u(e.device_id,t),onRequestDeviceVerification:p?()=>p(e.device_id):void 0,setPushNotifications:g,toggleSelected:()=>{return t=e.device_id,void(RA(t,c)?v(c.filter(e=>e!==t)):v([...c,t]));var t},supportsMSC3881:_,delegatedAuthAccountUrl:f}))))},DA=["options","title"],OA=e=>{let{options:t,title:n}=e,s=(0,g.A)(e,DA);const[o,r,a,l]=(0,bn.EF)();return i.createElement(i.Fragment,null,i.createElement(bn.VJ,(0,Wt.A)({},s,{onClick:a,title:n,isExpanded:o,ref:r}),i.createElement(xn.A,{className:"mx_KebabContextMenu_icon"})),o&&i.createElement(Aa.Ay,(0,Wt.A)({onFinished:l,compact:!0,rightAligned:!0,closeOnInteraction:!0},{left:(c=r.current.getBoundingClientRect()).left+window.scrollX+c.width,top:c.bottom+window.scrollY,chevronFace:bn.t4.None}),i.createElement(Aa.tx,null,t)));var c},FA=({onSignOutCurrentDevice:e,signOutAllOtherSessions:t,otherSessionsCount:n,disabled:s})=>{const o=[i.createElement(Aa.R$,{key:"sign-out",label:(0,l._t)("action|sign_out"),onClick:e,isDestructive:!0}),...t?[i.createElement(Aa.R$,{key:"sign-out-all-others",label:(0,l._t)("settings|sessions|sign_out_all_other_sessions",{otherSessionsCount:n}),onClick:t,isDestructive:!0})]:[]];return i.createElement(bw.r,{heading:(0,l._t)("settings|sessions|current_session")},i.createElement(OA,{disabled:s,title:(0,l._t)("common|options"),options:o}))},LA=({device:e,isLoading:t,isSigningOut:n,localNotificationSettings:s,otherSessionsCount:o,setPushNotifications:r,onVerifyCurrentDevice:a,onSignOutCurrentDevice:l,signOutAllOtherSessions:c,saveDeviceName:d,delegatedAuthAccountUrl:m})=>{const[u,h]=(0,i.useState)(!1);return i.createElement(ao.P,{heading:i.createElement(FA,{onSignOutCurrentDevice:l,signOutAllOtherSessions:c,otherSessionsCount:o,disabled:t||!e||n})},t&&!e&&i.createElement(ce.A,null),!!e&&i.createElement(i.Fragment,null,i.createElement(SA,{device:e,onClick:()=>h(!u)},i.createElement(tA,{isExpanded:u,onClick:()=>h(!u)})),u?i.createElement(ZS,{device:e,localNotificationSettings:s,setPushNotifications:r,isSigningOut:n,onVerifyDevice:a,onSignOutDevice:l,saveDeviceName:d,className:"mx_CurrentDeviceSection_deviceDetails",delegatedAuthAccountUrl:m,isCurrentDevice:!0}):i.createElement(i.Fragment,null,i.createElement("br",null),i.createElement(GS,{device:e,onVerifyDevice:a,isCurrentDevice:!0}))))},UA=({devices:e,currentDeviceId:t,goToFilteredList:n})=>{const s=Object.values(e),o=et(s,[Ye.Unverified]).filter(e=>e.device_id!==t).length,r=et(s,[Ye.Inactive]).length;if(!(o|r))return null;return i.createElement(ao.P,{heading:(0,l._t)("settings|sessions|security_recommendations"),description:(0,l._t)("settings|sessions|security_recommendations_description")},!!o&&i.createElement(HS,{variation:Ye.Unverified,heading:(0,l._t)("settings|sessions|unverified_sessions"),description:i.createElement(i.Fragment,null,(0,l._t)("settings|sessions|unverified_sessions_list_description"),i.createElement(KS,{variation:Ye.Unverified}))},i.createElement(le.A,{kind:"link_inline",onClick:()=>n(Ye.Unverified)},(0,l._t)("action|view_all")+` (${o})`)),!!r&&i.createElement(i.Fragment,null,!!o&&i.createElement("div",{className:"mx_SecurityRecommendations_spacing"}),i.createElement(HS,{variation:Ye.Inactive,heading:(0,l._t)("settings|sessions|inactive_sessions"),description:i.createElement(i.Fragment,null,(0,l._t)("settings|sessions|inactive_sessions_list_description",{inactiveAgeDays:90}),i.createElement(KS,{variation:Ye.Inactive}))},i.createElement(le.A,{kind:"link_inline",onClick:()=>n(Ye.Inactive)},(0,l._t)("action|view_all")+` (${r})`))))},VA=(e,t)=>async n=>e.deleteMultipleDevices(t,null!=n?n:void 0);var BA=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/qr-code.js");const jA=({onShowQr:e,versions:t,oidcClientConfig:n,isCrossSigningReady:s})=>{const r=function(e,t,n,i){var s,r;const a=!(null==i||null===(s=i.unstable_features)||void 0===s||!s["org.matrix.msc4108"]);return!!(null==n?void 0:n.grant_types_supported.includes(o.DEVICE_CODE_SCOPE))&&a&&!(null===(r=e.getCrypto())||void 0===r||!r.exportSecretsBundle)&&t}((0,de.nH)(),!!s,n,t);return i.createElement(ao.P,{heading:(0,l._t)("settings|sessions|sign_in_with_qr")},i.createElement("div",{className:"mx_LoginWithQRSection"},i.createElement("p",{className:"mx_SettingsTab_subsectionText"},(0,l._t)("settings|sessions|sign_in_with_qr_description")),i.createElement(le.A,{onClick:e,kind:"primary",disabled:!r},i.createElement(BA.A,{height:20,width:20}),(0,l._t)("settings|sessions|sign_in_with_qr_button")),!r&&i.createElement(Al.E,{size:"sm"},(0,l._t)("settings|sessions|sign_in_with_qr_unsupported"))))};var WA=n("./src/components/views/auth/LoginWithQR-types.ts");const HA=({otherSessionsCount:e,disabled:t,signOutAllOtherSessions:n})=>{const s=(0,se.Bo)([n?i.createElement(Aa.R$,{key:"sign-out-all-others",label:(0,l._t)("settings|sessions|sign_out_n_sessions",{count:e}),onClick:n,isDestructive:!0}):null]);return i.createElement(bw.r,{heading:(0,l._t)("settings|sessions|other_sessions_heading")},!!s.length&&i.createElement(OA,{disabled:t,title:(0,l._t)("common|options"),options:s}))};function zA(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}const KA=(0,i.lazy)(()=>Promise.all([n.e(3380),n.e(8901)]).then(n.bind(n,"./src/components/views/auth/LoginWithQR.tsx"))),GA=(e,t,n)=>{const[r,a]=(0,i.useState)([]);return{onSignOutCurrentDevice:()=>{R.Ay.createDialog(ul,{},void 0,!1,!0)},onSignOutOtherDevices:async r=>{if(!r.length)return;if(!await(async e=>{const{finished:t}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("action|sign_out"),description:i.createElement("div",null,i.createElement("p",null,(0,l._t)("settings|sessions|sign_out_confirm_description",{count:e}))),cancelButton:(0,l._t)("action|cancel"),button:(0,l._t)("action|sign_out")}),[n]=await t;return!!n})(r.length))return;let c=!1;try{if(a(e=>[...e,...r]),n){const[e]=r,t=$S(n,e);window.open(t,"_blank")}else{const t=Promise.withResolvers();await(async(e,t,n)=>{if(t.length)try{await VA(e,t)(null),await n(!0)}catch(s){var i;if(!(s instanceof o.MatrixError&&401===s.httpStatus&&null!==(i=s.data)&&void 0!==i&&i.flows))throw s;const r=t.length,a={[fe.av.PHASE_PREAUTH]:{title:(0,l._t)("auth|uia|sso_title"),body:(0,l._t)("settings|sessions|confirm_sign_out_sso",{count:r}),continueText:(0,l._t)("auth|sso"),continueKind:"primary"},[fe.av.PHASE_POSTAUTH]:{title:(0,l._t)("settings|sessions|confirm_sign_out",{count:r}),body:(0,l._t)("settings|sessions|confirm_sign_out_body",{count:r}),continueText:(0,l._t)("settings|sessions|confirm_sign_out_continue",{count:r}),continueKind:"danger"}},{finished:c}=R.Ay.createDialog(Ee.A,{title:(0,l._t)("common|authentication"),matrixClient:e,authData:s.data,makeRequest:VA(e,t),aestheticsForStagePhases:{[fe.av.LOGIN_TYPE]:a,[fe.av.UNSTABLE_LOGIN_TYPE]:a}});c.then(([e])=>n(e))}})(e,r,async e=>{t.resolve(!!e)}),c=await t.promise}}catch(e){s.vF.error("Error deleting sessions",e)}finally{c&&await t(),a(e=>e.filter(e=>!r.includes(e)))}},signingOutDeviceIds:r}},JA=({showMsc4108QrCode:e})=>{var t;const{devices:n,dehydratedDeviceId:o,pushers:r,localNotificationSettings:a,currentDeviceId:c,isLoadingDeviceList:d,requestDeviceVerification:m,refreshDevices:u,saveDeviceName:h,setPushNotifications:p,supportsMSC3881:v}=rw(),[_,f]=(0,i.useState)(),[E,y]=(0,i.useState)([]),[b,w]=(0,i.useState)([]),S=(0,i.useRef)(null),A=(0,i.useRef)(void 0),C=(0,i.useContext)(Do.A),x=C.client,k=(0,Bi.e)(async()=>(await C.oidcClientStore.readyPromise,C.oidcClientStore.accountManagementEndpoint),[C.oidcClientStore]),I=!!k,T=null==x?void 0:x.getUserId(),P=T&&(null==x?void 0:x.getUser(T))||void 0,N=(0,Bi.e)(()=>x.getVersions(),[x]),M=(0,Bi.e)(async()=>{try{return await(null==x?void 0:x.getAuthMetadata())}catch(e){s.vF.error("Failed to discover OIDC metadata",e)}},[x]),D=(0,Bi.e)(async()=>{var e,t;return null!==(e=null===(t=x.getCrypto())||void 0===t?void 0:t.isCrossSigningReady())&&void 0!==e&&e},[x]),{[c]:O}=n,F=(0,g.A)(n,[c].map(zA));o&&null!==(t=F[o])&&void 0!==t&&t.isVerified&&delete F[o];const L=Object.keys(F).length,U=L>0,V=(0,i.useCallback)(e=>{if(!m)return;const t=m(e),{finished:n}=R.Ay.createDialog(ee,{verificationRequestPromise:t,member:P});n.then(async()=>{(await t).cancel(),await u()})},[m,u,P]),{onSignOutCurrentDevice:B,onSignOutOtherDevices:j,signingOutDeviceIds:W}=GA(x,async()=>{await u(),w([])},k);(0,i.useEffect)(()=>()=>{clearTimeout(A.current)},[A]),(0,i.useEffect)(()=>{w([])},[_,w]);const H=U&&!I?()=>{j(Object.keys(F))}:void 0,[z,K]=(0,i.useState)(e?WA.Kt.Show:null),G=(0,i.useCallback)(()=>{K(null)},[K]),J=(0,i.useCallback)(()=>{K(WA.Kt.Show)},[K]);return z?i.createElement(i.Suspense,{fallback:i.createElement(ce.A,null)},i.createElement(KA,{mode:z,onFinished:G,client:x})):i.createElement(oo.A,null,i.createElement(ro.X,null,i.createElement(jA,{onShowQr:J,versions:N,oidcClientConfig:M,isCrossSigningReady:D}),i.createElement(UA,{devices:n,goToFilteredList:e=>{f(e),clearTimeout(A.current),A.current=window.setTimeout(()=>{var e;return null===(e=S.current)||void 0===e?void 0:e.scrollIntoView({block:"start",inline:"nearest",behavior:"smooth"})})},currentDeviceId:c}),i.createElement(LA,{device:O,localNotificationSettings:a.get(c),setPushNotifications:p,isSigningOut:W.includes(c),isLoading:d,saveDeviceName:e=>h(c,e),onVerifyCurrentDevice:()=>{const{finished:e}=R.Ay.createDialog(Ie);e.then(u)},onSignOutCurrentDevice:B,signOutAllOtherSessions:H,otherSessionsCount:L,delegatedAuthAccountUrl:k}),U&&i.createElement(ao.P,{heading:i.createElement(HA,{otherSessionsCount:L,signOutAllOtherSessions:H,disabled:!!W.length}),description:(0,l._t)("settings|sessions|best_security_note"),stretchContent:!0},i.createElement(MA,{devices:F,pushers:r,localNotificationSettings:a,filter:_,expandedDeviceIds:E,signingOutDeviceIds:W,selectedDeviceIds:b,setSelectedDeviceIds:w,onFilterChange:f,onDeviceExpandToggle:e=>{E.includes(e)?y(E.filter(t=>t!==e)):y([...E,e])},onRequestDeviceVerification:m?V:void 0,onSignOutDevices:j,saveDeviceName:h,setPushNotifications:p,ref:S,supportsMSC3881:v,delegatedAuthAccountUrl:k}))))};var $A=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/computer.js"),qA=n("./src/components/views/settings/SettingsHeader.tsx");function YA({onChangeRecoveryKeyClick:e}){const t=(0,de.nH)(),n=(0,Bi.e)(async()=>Boolean(await t.secretStorage.getDefaultKeyId())?"good":"missing_recovery_key",[t],"loading"),s="missing_recovery_key"===n;let o;switch(n){case"loading":o=i.createElement(he.Z,{"aria-label":(0,l._t)("common|loading")});break;case"missing_recovery_key":o=i.createElement(Y.$,{size:"sm",kind:"primary",Icon:J.A,onClick:()=>e(!0)},(0,l._t)("settings|encryption|recovery|set_up_recovery"));break;case"good":o=i.createElement(Y.$,{size:"sm",kind:"secondary",Icon:J.A,onClick:()=>e(!1)},(0,l._t)("settings|encryption|recovery|change_recovery_key"))}return i.createElement(ro.X,{legacy:!1,heading:i.createElement(qA.r,{hasRecommendedTag:s,label:(0,l._t)("settings|encryption|recovery|title")}),subHeading:(0,l._t)("settings|encryption|recovery|description")},o)}var XA=n("./node_modules/@vector-im/compound-web/dist/components/Breadcrumb/Breadcrumb.js"),QA=n("./node_modules/@vector-im/compound-web/dist/components/Form/Controls/Password/Password.js"),ZA=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/copy.js"),eC=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/key-solid.js");function tC({userHasRecoveryKey:e,onFinish:t,onCancelClick:n}){const s=(0,de.nH)(),[o,r]=(0,i.useState)(e?"save_key_change_flow":"inform_user"),a=(0,Bi.e)(()=>s.getCrypto().createRecoveryKeyFromPassphrase(),[]);if(!a)return null;let c;switch(o){case"inform_user":c=i.createElement(nC,{onContinueClick:()=>r("save_key_setup_flow"),onCancelClick:n});break;case"save_key_setup_flow":case"save_key_change_flow":c=i.createElement(iC,{recoveryKey:a.encodedPrivateKey,onConfirmClick:()=>r(e=>"save_key_change_flow"===e?"confirm_key_change_flow":"confirm_key_setup_flow"),onCancelClick:n});break;case"confirm_key_setup_flow":case"confirm_key_change_flow":c=i.createElement(sC,{recoveryKey:a.encodedPrivateKey,onCancelClick:n,onSubmit:async()=>{const e=s.getCrypto();if(!e)return t();try{await(0,ie.J6)(async()=>{await e.bootstrapSecretStorage({setupNewSecretStorage:!0,createSecretStorageKey:async()=>a}),await(0,oe.p)(s,{createNewKey:!0})}),await s.setAccountData(ft,{enabled:!0}),t()}catch(e){(0,Fo.tx)("Failed to set up secret storage",e)}},submitButtonLabel:"confirm_key_setup_flow"===o?(0,l._t)("settings|encryption|recovery|set_up_recovery_confirm_button"):(0,l._t)("settings|encryption|recovery|change_recovery_confirm_button")})}const d=[(0,l._t)("settings|encryption|title"),e?(0,l._t)("settings|encryption|recovery|change_recovery_key"):(0,l._t)("settings|encryption|recovery|set_up_recovery")],m=function(e){switch(e){case"inform_user":return{title:(0,l._t)("settings|encryption|recovery|set_up_recovery"),description:(0,l._t)("settings|encryption|recovery|set_up_recovery_description",{changeRecoveryKeyButton:(0,l._t)("settings|encryption|recovery|change_recovery_key")})};case"save_key_setup_flow":return{title:(0,l._t)("settings|encryption|recovery|set_up_recovery_save_key_title"),description:(0,l._t)("settings|encryption|recovery|set_up_recovery_save_key_description")};case"save_key_change_flow":return{title:(0,l._t)("settings|encryption|recovery|change_recovery_key_title"),description:(0,l._t)("settings|encryption|recovery|change_recovery_key_description")};case"confirm_key_setup_flow":return{title:(0,l._t)("settings|encryption|recovery|set_up_recovery_confirm_title"),description:(0,l._t)("settings|encryption|recovery|set_up_recovery_confirm_description")};case"confirm_key_change_flow":return{title:(0,l._t)("settings|encryption|recovery|change_recovery_confirm_title"),description:(0,l._t)("settings|encryption|recovery|change_recovery_confirm_description")}}}(o);return i.createElement(i.Fragment,null,i.createElement(XA.Q,{backLabel:(0,l._t)("action|back"),onBackClick:n,pages:d,onPageClick:n}),i.createElement(_e.g,{Icon:eC.A,title:m.title,description:m.description,className:"mx_ChangeRecoveryKey"},c))}function nC({onContinueClick:e,onCancelClick:t}){return i.createElement(i.Fragment,null,i.createElement(Al.E,{as:"span",weight:"medium",className:"mx_InformationPanel_description"},(0,l._t)("settings|encryption|recovery|set_up_recovery_secondary_description")),i.createElement(be.D,null,i.createElement(Y.$,{onClick:e},(0,l._t)("action|continue")),i.createElement(Y.$,{kind:"tertiary",onClick:t},(0,l._t)("action|cancel"))))}function iC({recoveryKey:e,onConfirmClick:t,onCancelClick:n}){return i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_KeyPanel"},i.createElement(Al.E,{as:"span",weight:"medium"},(0,l._t)("settings|encryption|recovery|save_key_title")),i.createElement("div",null,i.createElement(Al.E,{as:"span",className:"mx_KeyPanel_key"},e),i.createElement(Al.E,{as:"span",size:"sm"},(0,l._t)("settings|encryption|recovery|save_key_description"))),i.createElement(Sl.K,{"aria-label":(0,l._t)("action|copy"),size:"28px",onClick:()=>(0,Si.nC)(e)},i.createElement(ZA.A,null))),i.createElement(be.D,null,i.createElement(Y.$,{onClick:t},(0,l._t)("action|continue")),i.createElement(Y.$,{kind:"tertiary",onClick:n},(0,l._t)("action|cancel"))))}function sC({onCancelClick:e,onSubmit:t,recoveryKey:n,submitButtonLabel:s}){const[o,r]=(0,i.useState)(),[a,c]=(0,i.useState)(!1),d=!1===o;return i.createElement(Em.b,{className:"mx_KeyForm",onSubmit:e=>{e.preventDefault(),a||(c(!0),t().finally(()=>{c(!1)}))},onChange:async e=>{e.preventDefault(),e.stopPropagation();const t=new FormData(e.currentTarget).get("recoveryKey");r(t.trim()===n)}},i.createElement(qu.D,{name:"recoveryKey",serverInvalid:d},i.createElement(Yu.J,null,(0,l._t)("settings|encryption|recovery|enter_recovery_key")),i.createElement(QA.T,{required:!0,title:(0,l._t)("settings|encryption|recovery|enter_recovery_key"),className:"mx_KeyForm_password mx_no_textinput"}),d&&i.createElement(Xu.Kw,null,(0,l._t)("settings|encryption|recovery|enter_key_error"))),i.createElement(be.D,null,i.createElement(Y.$,{disabled:!o||a},s),i.createElement(Y.$,{kind:"tertiary",onClick:e},(0,l._t)("action|cancel"))))}var oC=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/check-circle-solid.js");function rC({label:e,state:t,stateMessage:n}){return i.createElement("div",{className:"mx_SettingsSubheader"},e,i.createElement("span",{className:Lt()({mx_SettingsSubheader_success:"success"===t,mx_SettingsSubheader_error:"error"===t})},"success"===t?i.createElement(oC.A,{width:"20px",height:"20px"}):i.createElement(ve.A,{width:"20px",height:"20px"}),n))}var aC=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/share.js");function lC({onResetIdentityClick:e}){return i.createElement(ro.X,{heading:(0,l._t)("settings|encryption|advanced|title"),legacy:!1},i.createElement(cC,{onResetIdentityClick:e}),i.createElement(dC,null))}function cC({onResetIdentityClick:e}){const t=(0,de.nH)(),s=(0,Bi.e)(()=>t.getCrypto().getOwnDeviceKeys(),[t],null);return i.createElement("div",{className:"mx_EncryptionDetails"},i.createElement("div",{className:"mx_EncryptionDetails_session"},i.createElement("h3",{className:"mx_EncryptionDetails_session_title"},(0,l._t)("settings|encryption|advanced|details_title")),i.createElement("div",null,i.createElement("span",null,(0,l._t)("settings|encryption|advanced|session_id")),i.createElement("span",null,t.deviceId)),i.createElement("div",null,i.createElement("span",null,(0,l._t)("settings|encryption|advanced|session_key")),i.createElement("span",null,s?s.ed25519:i.createElement(he.Z,{"aria-label":(0,l._t)("common|loading")})))),i.createElement("div",{className:"mx_EncryptionDetails_buttons"},i.createElement(Y.$,{size:"sm",kind:"secondary",Icon:Qn.A,onClick:()=>R.Ay.createDialog((0,i.lazy)(()=>n.e(7692).then(n.bind(n,"./src/async-components/views/dialogs/security/ExportE2eKeysDialog.tsx"))),{matrixClient:t})},(0,l._t)("settings|encryption|advanced|export_keys")),i.createElement(Y.$,{size:"sm",kind:"secondary",Icon:aC.A,onClick:()=>R.Ay.createDialog((0,i.lazy)(()=>n.e(7211).then(n.bind(n,"./src/async-components/views/dialogs/security/ImportE2eKeysDialog.tsx"))),{matrixClient:t})},(0,l._t)("settings|encryption|advanced|import_keys"))),i.createElement(Y.$,{size:"sm",kind:"tertiary",destructive:!0,onClick:e},(0,l._t)("settings|encryption|advanced|reset_identity")))}function dC(){const e=(0,Vt.wL)(O.p.DEVICE,"blacklistUnverifiedDevices");return D.A.canSetValue("blacklistUnverifiedDevices",null,O.p.DEVICE)?i.createElement(Em.b,{className:"mx_OtherSettings",onChange:async e=>{const t="on"===new FormData(e.currentTarget).get("neverSendEncrypted");await D.A.setValue("blacklistUnverifiedDevices",null,O.p.DEVICE,t)}},i.createElement("h3",{className:"mx_OtherSettings_title"},(0,l._t)("settings|encryption|advanced|other_people_device_title")),i.createElement(Fb.I,{name:"neverSendEncrypted",control:i.createElement(Lb._,{name:"neverSendEncrypted",defaultChecked:e})},i.createElement(Yu.J,null,(0,l._t)("settings|encryption|advanced|other_people_device_label")),i.createElement(Xu.po,null,(0,l._t)("settings|encryption|advanced|other_people_device_description")))):null}function mC({onCancelClick:e,onReset:t,variant:n}){return i.createElement(i.Fragment,null,i.createElement(XA.Q,{backLabel:(0,l._t)("action|back"),onBackClick:e,pages:[(0,l._t)("settings|encryption|title"),(0,l._t)("settings|encryption|advanced|breadcrumb_page")],onPageClick:e}),i.createElement(Ae,{onReset:t,onCancelClick:e,variant:n}))}function uC({onForgotRecoveryKey:e,onFinish:t}){return i.createElement(ro.X,{legacy:!1,heading:(0,l._t)("settings|encryption|recovery|title"),subHeading:i.createElement(rC,{label:(0,l._t)("settings|encryption|recovery|description"),state:"error",stateMessage:(0,l._t)("settings|encryption|recovery|key_storage_warning")})},i.createElement("div",{className:"mx_RecoveryPanelOutOfSync"},i.createElement(Y.$,{size:"sm",kind:"secondary",onClick:e},(0,l._t)("settings|encryption|recovery|forgot_recovery_key")),i.createElement(Y.$,{size:"sm",kind:"primary",Icon:J.A,onClick:async()=>{await(0,ie.cb)(),t()}},(0,l._t)("settings|encryption|recovery|enter_recovery_key"))))}function hC(){const[e,t]=(0,i.useState)(!0),[n,o]=(0,i.useState)(void 0),r=(0,de.nH)(),a=(0,Fi.H8)(r,V.cr.KeyBackupStatus,async e=>{if(void 0!==e)return e;const n=r.getCrypto();if(!n)return void s.vF.error("Can't check key backup status: no crypto module available");const i=await n.getActiveSessionBackupVersion();return t(!1),null!==i},[r],void 0);return{isEnabled:null!=n?n:a,setEnabled:(0,i.useCallback)(async e=>{o(e);try{yt.sharedInstance().stop();const t=r.getCrypto();if(!t)return void s.vF.error("Can't change key backup status: no crypto module available");if(e){s.vF.getChild("[enable key storage]").info("User requested enabling key storage");let e=await t.checkKeyBackupAndEnable();e?(s.vF.info(`Existing key backup is present. version: ${e.backupInfo.version}`,e.trustInfo),e.trustInfo.trusted||e.trustInfo.matchesDecryptionKey?s.vF.info("Existing key backup can be used"):(s.vF.warn("Existing key backup cannot be used, creating new backup"),e=null)):s.vF.info("No existing key backup versions are present, creating new backup"),null===e&&(await t.resetKeyBackup(),await t.checkKeyBackupAndEnable()),await r.setAccountData(_t,{disabled:!1})}else s.vF.info("User requested disabling key backup"),await t.disableKeyStorage(),await r.setAccountData(_t,{disabled:!0})}finally{o(void 0),yt.sharedInstance().start(r)}},[o,r]),loading:e,busy:void 0!==n}}const pC=({onKeyStorageDisableClick:e})=>{const{isEnabled:t,setEnabled:n,loading:s,busy:o}=hC(),r=(0,i.useCallback)(t=>{t.currentTarget.checked?n(!0):e()},[n,e]);return s?i.createElement(he.Z,{"aria-label":(0,l._t)("common|loading")}):i.createElement(ro.X,{legacy:!1,heading:i.createElement(qA.r,{hasRecommendedTag:!1===t,label:(0,l._t)("settings|encryption|key_storage|title")}),subHeading:(0,l._t)("settings|encryption|key_storage|description",void 0,{a:e=>i.createElement("a",{href:c.Ay.get("help_encryption_url"),target:"_blank",rel:"noreferrer noopener"},e)})},i.createElement(Em.b,{className:"mx_KeyStoragePanel_toggleRow"},i.createElement(Fb.I,{name:"keyStorage",control:i.createElement(Lb._,{name:"keyStorage",checked:t,onChange:r})},i.createElement(Yu.J,null,(0,l._t)("settings|encryption|key_storage|allow_key_storage"))),o&&i.createElement(he.Z,null)))};function gC({onFinish:e}){const{setEnabled:t}=hC(),[n,s]=(0,i.useState)(!1),o=(0,i.useCallback)(async()=>{s(!0);try{await t(!1)}finally{s(!1)}e()},[t,e]);return i.createElement(i.Fragment,null,i.createElement(XA.Q,{backLabel:(0,l._t)("action|back"),onBackClick:e,pages:[(0,l._t)("settings|encryption|title"),(0,l._t)("settings|encryption|delete_key_storage|breadcrumb_page")],onPageClick:e}),i.createElement(_e.g,{Icon:ve.A,destructive:!0,title:(0,l._t)("settings|encryption|delete_key_storage|title")},i.createElement(Se,null,(0,l._t)("settings|encryption|delete_key_storage|description"),i.createElement(me.V,null,i.createElement(ue.k,{Icon:M_.A,destructive:!0},(0,l._t)("settings|encryption|delete_key_storage|list_first")),i.createElement(ue.k,{Icon:M_.A,destructive:!0},(0,l._t)("settings|encryption|delete_key_storage|list_second",{brand:c.Ay.get().brand})))),i.createElement(be.D,null,i.createElement(Y.$,{destructive:!0,onClick:o,disabled:n},(0,l._t)("settings|encryption|delete_key_storage|confirm")),i.createElement(Y.$,{kind:"tertiary",onClick:e},(0,l._t)("action|cancel")))))}function vC({initialState:e="loading"}){const[t,n]=(0,i.useState)(e),s=function(e,t){const n=(0,de.nH)(),s=(0,i.useCallback)(async()=>{const e=n.getCrypto(),i=await e.isCrossSigningReady(),s=(await e.getCrossSigningStatus()).privateKeysCachedLocally,o=s.masterKey&&s.selfSigningKey&&s.userSigningKey,r=null!==await e.getActiveSessionBackupVersion();t(i&&r&&o?"main":i?r?"secrets_not_cached":"key_storage_disabled":"set_up_encryption")},[n,t]);return(0,i.useEffect)(()=>{"loading"===e&&s()},[s,e]),(0,Fi.YK)(n,V.cr.KeyBackupStatus,()=>{s()}),s}(t,n);let o;switch(t){case"loading":o=i.createElement(he.Z,{"aria-label":(0,l._t)("common|loading")});break;case"set_up_encryption":o=i.createElement(fC,{onFinish:s});break;case"secrets_not_cached":o=i.createElement(uC,{onFinish:s,onForgotRecoveryKey:()=>n("reset_identity_forgot")});break;case"key_storage_disabled":case"main":o=i.createElement(i.Fragment,null,i.createElement(pC,{onKeyStorageDisableClick:()=>n("key_storage_delete")}),i.createElement(od.w,{kind:"section"}),"main"===t&&i.createElement(i.Fragment,null,i.createElement(YA,{onChangeRecoveryKeyClick:e=>n(e?"set_recovery_key":"change_recovery_key")}),i.createElement(od.w,{kind:"section"})),i.createElement(lC,{onResetIdentityClick:()=>n("reset_identity_compromised")}));break;case"change_recovery_key":case"set_recovery_key":o=i.createElement(tC,{userHasRecoveryKey:"change_recovery_key"===t,onCancelClick:()=>n("main"),onFinish:()=>n("main")});break;case"reset_identity_compromised":case"reset_identity_forgot":case"reset_identity_sync_failed":o=i.createElement(mC,{variant:_C(t),onCancelClick:s,onReset:s});break;case"key_storage_delete":o=i.createElement(gC,{onFinish:s})}return i.createElement(oo.A,{className:"mx_EncryptionUserSettingsTab"},o)}function _C(e){switch(e){case"reset_identity_compromised":return"compromised";case"reset_identity_sync_failed":return"sync_failed";default:return"forgot"}}function fC({onFinish:e}){return i.createElement(ro.X,{legacy:!1,heading:(0,l._t)("settings|encryption|device_not_verified_title"),subHeading:i.createElement(rC,{stateMessage:(0,l._t)("settings|encryption|device_not_verified_description"),state:"error"})},i.createElement(Y.$,{size:"sm",Icon:$A.A,onClick:()=>{const{finished:t}=R.Ay.createDialog(Ie);t.then(e)}},(0,l._t)("settings|encryption|device_not_verified_button")))}function EC(e){const t={strong:e=>i.createElement("span",{className:"mx_UserSettingsDialog_title_strong"},e)};switch(e){case Te.v.Account:return(0,l._t)("settings|account|dialog_title",void 0,t);case Te.v.SessionManager:return(0,l._t)("settings|sessions|dialog_title",void 0,t);case Te.v.Appearance:return(0,l._t)("settings|appearance|dialog_title",void 0,t);case Te.v.Notifications:return(0,l._t)("settings|notifications|dialog_title",void 0,t);case Te.v.Preferences:return(0,l._t)("settings|preferences|dialog_title",void 0,t);case Te.v.Keyboard:return(0,l._t)("settings|keyboard|dialog_title",void 0,t);case Te.v.Sidebar:return(0,l._t)("settings|sidebar|dialog_title",void 0,t);case Te.v.Voice:return(0,l._t)("settings|voip|dialog_title",void 0,t);case Te.v.Security:return(0,l._t)("settings|security|dialog_title",void 0,t);case Te.v.Encryption:return(0,l._t)("settings|encryption|dialog_title",void 0,t);case Te.v.Labs:return(0,l._t)("settings|labs|dialog_title",void 0,t);case Te.v.Mjolnir:return(0,l._t)("settings|labs_mjolnir|dialog_title",void 0,t);case Te.v.Help:return(0,l._t)("setting|help_about|dialog_title",void 0,t)}}function yC(e){const t=(0,Vt.ti)(gt.f.Voip),n=(0,Vt.ti)("feature_mjolnir"),[s,r]=(0,i.useState)(e.showMsc4108QrCode),[a,c]=(0,i.useState)(e.initialEncryptionState),d=(0,Fi.H8)(e.sdkContext.client,o.ClientEvent.AccountData,async t=>{if(void 0===t||"m.secret_storage.default_key"===t.getType()){const t=e.sdkContext.client;return!!t&&!await t.secretStorage.getDefaultKeyId()}return new Fi.E6},[],!1),m=()=>{const o=[];return o.push(new to.oz(Te.v.Account,(0,l.AO)("settings|account|title"),i.createElement(Am.A,null),i.createElement(Tb,{closeSettingsFn:e.onFinished}),"UserSettingsGeneral")),o.push(new to.oz(Te.v.SessionManager,(0,l.AO)("settings|sessions|title"),i.createElement($.A,null),i.createElement(JA,{showMsc4108QrCode:s}),void 0)),o.push(new to.oz(Te.v.Appearance,(0,l.AO)("common|appearance"),i.createElement(jg.A,null),i.createElement(Zb,null),"UserSettingsAppearance")),o.push(new to.oz(Te.v.Notifications,(0,l.AO)("notifications|enable_prompt_toast_title"),i.createElement(Vg.A,null),i.createElement(nS,null),"UserSettingsNotifications")),o.push(new to.oz(Te.v.Preferences,(0,l.AO)("common|preferences"),i.createElement(cc.A,null),i.createElement(hS,{closeSettingsFn:e.onFinished}),"UserSettingsPreferences")),o.push(new to.oz(Te.v.Keyboard,(0,l.AO)("settings|keyboard|title"),i.createElement(Iy.A,null),i.createElement(RS,null),"UserSettingsKeyboard")),o.push(new to.oz(Te.v.Sidebar,(0,l.AO)("settings|sidebar|title"),i.createElement(Ty.A,null),i.createElement(Ja,null),"UserSettingsSidebar")),t&&o.push(new to.oz(Te.v.Voice,(0,l.AO)("settings|voip|title"),i.createElement(Py.A,null),i.createElement(gS,null),"UserSettingsVoiceVideo")),o.push(new to.oz(Te.v.Security,(0,l.AO)("room_settings|security|title"),i.createElement(Ny.A,null),i.createElement(vw,{closeSettingsFn:e.onFinished}),"UserSettingsSecurityPrivacy")),o.push(new to.oz(Te.v.Encryption,(0,l.AO)("settings|encryption|title"),i.createElement(J.A,null),i.createElement(vC,{initialState:a}),"UserSettingsEncryption",d?"mx_SettingsDialog_tabLabelsAlert":void 0)),(Mb()||D.A.getFeatureSettingNames().some(e=>D.A.getBetaInfo(e)))&&o.push(new to.oz(Te.v.Labs,(0,l.AO)("common|labs"),i.createElement(My.A,null),i.createElement(Db,null),"UserSettingsLabs")),n&&o.push(new to.oz(Te.v.Mjolnir,(0,l.AO)("labs_mjolnir|title"),i.createElement(Dy.A,null),i.createElement(wS,null),"UserSettingMjolnir")),o.push(new to.oz(Te.v.Help,(0,l.AO)("setting|help_about|title"),i.createElement(yh.A,null),i.createElement(yS,null),"UserSettingsHelpAbout")),o},[u,h]=(0,to.yz)(m(),Te.v.Account,e.initialTabId),[p,g]=function(){const e=(0,i.useMemo)(()=>new Vy,[]),[t,n]=(0,i.useState)(e.getActiveToast()),s=(0,i.useCallback)(()=>{n(e.getActiveToast())},[n,e]);return(0,i.useEffect)(()=>{e.setCallback(s)},[e,s]),[t,e]}();return i.createElement(Do.A.Provider,{value:e.sdkContext},i.createElement(Uy.Provider,{value:g},i.createElement(Q.A,{className:"mx_UserSettingsDialog",hasCancel:!0,onFinished:e.onFinished,title:EC(u),titleClass:"mx_UserSettingsDialog_title"},i.createElement("div",{className:"mx_SettingsDialog_content"},i.createElement(to.Ay,{tabs:m(),activeTabId:u,screenName:"UserSettings",onChange:e=>{h(e),r(!1),c(void 0)},responsive:!0})),i.createElement("div",{className:"mx_SettingsDialog_toastContainer"},p&&i.createElement(ky.y,null,p)))))}var bC=n("./src/components/views/dialogs/CreateRoomDialog.tsx");class wC extends i.Component{render(){return i.createElement("div",null,i.createElement("h2",null,(0,l._t)("encryption|verification|complete_title")),i.createElement("p",null,(0,l._t)("encryption|verification|complete_description")),i.createElement("p",null,(0,l._t)("encryption|verification|explainer")),i.createElement(Nt.A,{onPrimaryButtonClick:this.props.onDone,primaryButton:(0,l._t)("encryption|verification|complete_action"),hasCancel:!1}))}}class SC extends i.Component{render(){return i.createElement("div",null,i.createElement("p",null,(0,l._t)("encryption|verification|other_party_cancelled")),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|ok"),hasCancel:!1,onPrimaryButtonClick:this.props.onDone}))}}var AC=n("./src/components/views/verification/VerificationShowSas.tsx");class CC extends i.Component{constructor(e){super(e),(0,w.A)(this,"showSasEvent",void 0),(0,w.A)(this,"onFinished",()=>{this.props.onFinished(3===this.state.phase)}),(0,w.A)(this,"onCancelClick",()=>{this.props.onFinished(3===this.state.phase)}),(0,w.A)(this,"onContinueClick",()=>{this.setState({phase:2}),this.props.verifier.verify().then(()=>{this.setState({phase:3})}).catch(e=>{s.vF.log("Verification failed",e)})}),(0,w.A)(this,"onVerifierShowSas",e=>{this.showSasEvent=e,this.setState({phase:1,sas:e.sas})}),(0,w.A)(this,"onVerifierCancel",()=>{this.setState({phase:4})}),(0,w.A)(this,"onSasMatchesClick",()=>{var e;null===(e=this.showSasEvent)||void 0===e||e.confirm(),this.setState({phase:2})}),(0,w.A)(this,"onVerifiedDoneClick",()=>{this.props.onFinished(!0)});let t=0;this.props.verifier.hasBeenCancelled&&(s.vF.log("Verifier was cancelled in the background."),t=4),this.showSasEvent=null,this.state={phase:t,sasVerified:!1,opponentProfile:null,opponentProfileError:null,sas:null}}componentDidMount(){this.props.verifier.on(V.Ji.ShowSas,this.onVerifierShowSas),this.props.verifier.on(V.Ji.Cancel,this.onVerifierCancel),this.fetchOpponentProfile()}componentWillUnmount(){4!==this.state.phase&&3!==this.state.phase&&this.props.verifier.cancel(new Error("User cancel")),this.props.verifier.removeListener(V.Ji.ShowSas,this.onVerifierShowSas)}async fetchOpponentProfile(){try{const e=await v.J.safeGet().getProfileInfo(this.props.verifier.userId);this.setState({opponentProfile:e})}catch(e){this.setState({opponentProfileError:e})}}renderPhaseStart(){const e=this.props.verifier.userId===v.J.safeGet().getUserId();let t;const n=this.state.opponentProfile;if(n){const e=n.avatar_url?(0,gi.mediaFromMxc)(n.avatar_url).getSquareThumbnailHttp(48):null;t=i.createElement("div",{className:"mx_IncomingSasDialog_opponentProfile"},i.createElement(vl.A,{name:n.displayname,idName:this.props.verifier.userId,url:e,size:"48px"}),i.createElement("h2",null,n.displayname))}else t=this.state.opponentProfileError?i.createElement("div",null,i.createElement(vl.A,{name:this.props.verifier.userId.slice(1),idName:this.props.verifier.userId,size:"48px"}),i.createElement("h2",null,this.props.verifier.userId)):i.createElement(ce.A,null);const s=[i.createElement("p",{key:"p1"},(0,l._t)("encryption|verification|incoming_sas_user_dialog_text_1")),i.createElement("p",{key:"p2"},(0,l._t)("encryption|verification|incoming_sas_user_dialog_text_2"))],o=[i.createElement("p",{key:"p1"},(0,l._t)("encryption|verification|incoming_sas_device_dialog_text_1")),i.createElement("p",{key:"p2"},(0,l._t)("encryption|verification|incoming_sas_device_dialog_text_2"))];return i.createElement("div",null,t,e?o:s,i.createElement(Nt.A,{primaryButton:(0,l._t)("action|continue"),hasCancel:!0,onPrimaryButtonClick:this.onContinueClick,onCancel:this.onCancelClick}))}renderPhaseShowSas(){return this.showSasEvent?i.createElement(AC.A,{sas:this.showSasEvent.sas,onCancel:this.onCancelClick,onDone:this.onSasMatchesClick,isSelf:this.props.verifier.userId===v.J.safeGet().getUserId(),inDialog:!0}):null}renderPhaseWaitForPartnerToConfirm(){return i.createElement("div",null,i.createElement(ce.A,null),i.createElement("p",null,(0,l._t)("encryption|verification|incoming_sas_dialog_waiting")))}renderPhaseVerified(){return i.createElement(wC,{onDone:this.onVerifiedDoneClick})}renderPhaseCancelled(){return i.createElement(SC,{onDone:this.onCancelClick})}render(){let e;switch(this.state.phase){case 0:e=this.renderPhaseStart();break;case 1:e=this.renderPhaseShowSas();break;case 2:e=this.renderPhaseWaitForPartnerToConfirm();break;case 3:e=this.renderPhaseVerified();break;case 4:e=this.renderPhaseCancelled()}return i.createElement(Q.A,{title:(0,l._t)("encryption|verification|incoming_sas_dialog_title"),onFinished:this.onFinished,fixedWidth:!1},e)}}var xC=n("./node_modules/@vector-im/compound-web/dist/components/Glass/Glass.js");class RC extends i.PureComponent{render(){return i.createElement("div",{className:"mx_CompleteSecurityBody"},this.props.children)}}const kC=()=>{var e;const t=c.Ay.getObject("branding"),n=null!==(e=null==t?void 0:t.get("auth_footer_links"))&&void 0!==e?e:[{text:"Blog",url:"https://element.io/blog"},{text:"Mastodon",url:"https://mastodon.matrix.org/@Element"},{text:"GitHub",url:"https://github.com/element-hq/element-web"}],s=[];for(const e of n)s.push(i.createElement("a",{href:e.url,key:e.text,target:"_blank",rel:"noreferrer noopener"},e.text));return i.createElement("footer",{className:"mx_AuthFooter",role:"contentinfo"},s,i.createElement("a",{href:"https://matrix.org",target:"_blank",rel:"noreferrer noopener"},(0,l._t)("powered_by_matrix")))};class IC extends i.PureComponent{static getWelcomeBackgroundUrl(){if(IC.welcomeBackgroundUrl)return IC.welcomeBackgroundUrl;const e=c.Ay.getObject("branding");IC.welcomeBackgroundUrl="themes/element/img/backgrounds/lake.jpg";const t=null==e?void 0:e.get("welcome_background_url");if(t)if(Array.isArray(t)){const e=Math.floor(Math.random()*t.length);IC.welcomeBackgroundUrl=t[e]}else IC.welcomeBackgroundUrl=t;return IC.welcomeBackgroundUrl}render(){const e={background:`center/cover fixed url(${IC.getWelcomeBackgroundUrl()})`},t={position:"absolute",top:0,right:0,bottom:0,left:0,filter:"blur(40px)",background:e.background},n={display:"flex",zIndex:1,borderRadius:"8px"};let s;!1!==this.props.addBlur&&(s=i.createElement("div",{className:"mx_AuthPage_modalBlur",style:t}),n.background="rgba(255, 255, 255, 0.59)");const o=Lt()({mx_AuthPage_modal:!0,mx_AuthPage_modal_withBlur:!1!==this.props.addBlur});return i.createElement("div",{className:"mx_AuthPage",style:e},i.createElement("div",{className:o,style:{position:"relative",background:"initial"}},s,i.createElement("div",{className:"mx_AuthPage_modalContent",style:n},this.props.children)),i.createElement(kC,null))}}(0,w.A)(IC,"welcomeBackgroundUrl",void 0);class TC extends i.Component{constructor(e){super(e),(0,w.A)(this,"onStoreUpdate",()=>{const e=ae.sharedInstance();this.setState({phase:e.phase})}),(0,w.A)(this,"onSkipClick",()=>{ae.sharedInstance().skip()});const t=ae.sharedInstance();t.start(),this.state={phase:t.phase}}componentDidMount(){ae.sharedInstance().on("update",this.onStoreUpdate)}componentWillUnmount(){const e=ae.sharedInstance();e.off("update",this.onStoreUpdate),e.stop()}render(){const{phase:e}=this.state;let t,n;if(e===re.Loading)return null;if(e===re.Intro);else if(e===re.Done)t=i.createElement("span",{className:"mx_CompleteSecurity_headerIcon mx_E2EIcon_verified"}),n=(0,l._t)("encryption|verification|after_new_login|device_verified");else if(e===re.ConfirmSkip)t=i.createElement("span",{className:"mx_CompleteSecurity_headerIcon mx_E2EIcon_warning"}),n=(0,l._t)("common|are_you_sure");else if(e===re.Busy)t=i.createElement("span",{className:"mx_CompleteSecurity_headerIcon mx_E2EIcon_warning"}),n=(0,l._t)("encryption|verification|after_new_login|verify_this_device");else if(e!==re.Finished)throw new Error(`Unknown phase ${e}`);let s;return c.Ay.get("force_verification")||e!==re.Intro||(s=i.createElement(le.A,{onClick:this.onSkipClick,className:"mx_CompleteSecurity_skip","aria-label":(0,l._t)("encryption|verification|after_new_login|skip_verification")})),i.createElement(IC,{addBlur:!1},i.createElement(xC.H,{className:"mx_Dialog_border"},i.createElement(RC,null,i.createElement("h1",{className:"mx_CompleteSecurity_header"},t,n,s),i.createElement("div",{className:"mx_CompleteSecurity_body"},i.createElement(ke,{onFinished:this.props.onFinished,allowLogout:!0})))))}}function PC(e){var t;(0,l.UK)()!==e&&(D.A.setValue("language",null,O.p.DEVICE,e),null===(t=a.A.get())||void 0===t||t.reload())}function NC({disabled:e}){return c.Ay.get("disable_login_language_selector")?i.createElement("div",null):i.createElement(iS,{className:"mx_AuthBody_language",onOptionChange:PC,value:(0,l.UK)(),disabled:e})}const MC=`<a href="https://matrix.org" target="_blank" rel="noreferrer noopener">\n <img width="79" height="34" alt="Matrix" style="padding-left: 1px;vertical-align: middle" src="${n("./res/img/matrix.svg").A}"/>\n</a>`;class DC extends i.PureComponent{render(){const e=c.Ay.getObject("embedded_pages");let t;e&&(t=e.get("welcome_url"));const n={"$riot:ssoUrl":"#/start_sso","$riot:casUrl":"#/start_cas",$matrixLogo:MC,"[matrix]":MC};if(!t){var s;const e=c.Ay.getObject("branding"),i=null!==(s=null==e?void 0:e.get("auth_header_logo_url"))&&void 0!==s?s:"themes/element/img/logos/element-logo.svg";n.$logoUrl=i,t="welcome.html"}return i.createElement(IC,null,i.createElement("div",{className:Lt()("mx_Welcome",{mx_WelcomePage_registrationDisabled:!D.A.getValue(gt.f.Registration)})},i.createElement(vE,{className:"mx_WelcomePage",url:t,replaceMap:n}),i.createElement(NC,null)))}}class OC{constructor(e,t){(0,w.A)(this,"client",void 0),(0,w.A)(this,"clientSecret",void 0),(0,w.A)(this,"password",""),(0,w.A)(this,"sessionId",""),(0,w.A)(this,"logoutDevices",!1),(0,w.A)(this,"sendAttempt",0),this.client=(0,o.createClient)({baseUrl:e,idBaseUrl:t}),this.clientSecret=this.client.generateClientSecret()}requestResetToken(e){return this.sendAttempt++,this.client.requestPasswordEmailToken(e,this.clientSecret,this.sendAttempt).then(e=>(this.sessionId=e.sid,e),function(e){throw"M_THREEPID_NOT_FOUND"===e.errcode?e.message=(0,l._t)("auth|reset_password_email_not_found_title"):e.httpStatus&&(e.message=e.message+` (Status ${e.httpStatus})`),e})}setLogoutDevices(e){this.logoutDevices=e}async setNewPassword(e){this.password=e,await this.checkEmailLinkClicked()}async checkEmailLinkClicked(){const e={sid:this.sessionId,client_secret:this.clientSecret};try{await this.client.setPassword({type:"m.login.email.identity",threepid_creds:e},this.password,this.logoutDevices)}catch(e){throw 401===e.httpStatus?e.message=(0,l._t)("settings|general|add_email_failed_verification"):404===e.httpStatus?e.message=(0,l._t)("auth|reset_password_email_not_associated"):e.httpStatus&&(e.message+=` (Status ${e.httpStatus})`),e}}}class FC extends i.PureComponent{render(){var e;const t=c.Ay.getObject("branding"),n=null!==(e=null==t?void 0:t.get("auth_header_logo_url"))&&void 0!==e?e:"themes/element/img/logos/element-logo.svg";return i.createElement("aside",{className:"mx_AuthHeaderLogo"},i.createElement("img",{src:n,alt:"Element"}))}}class LC extends i.Component{render(){return i.createElement("div",{className:"mx_AuthHeader"},i.createElement(FC,null),i.createElement(NC,{disabled:this.props.disableLanguageSelector}))}}function UC({flex:e,className:t,children:n}){return i.createElement("main",{className:Lt()("mx_AuthBody",t,{mx_AuthBody_flex:e})},n)}var VC=n("./src/components/structures/ErrorMessage.tsx");const BC=({email:e,errorText:t,homeserver:n,loading:s,onInputChanged:o,onLoginClick:r,onSubmitForm:a})=>{const c=s?i.createElement(ce.A,{w:16,h:16}):(0,l._t)("auth|forgot_password_send_email"),d=(0,i.useRef)(null);return i.createElement(i.Fragment,null,i.createElement(xd.A,{className:"mx_AuthBody_icon"}),i.createElement("h1",null,(0,l._t)("auth|enter_email_heading")),i.createElement("p",{className:"mx_AuthBody_text"},(0,l._t)("auth|enter_email_explainer",{homeserver:n},{b:e=>i.createElement("strong",null,e)})),i.createElement("form",{onSubmit:async e=>{var t,n,i;await(null===(t=d.current)||void 0===t?void 0:t.validate({allowEmpty:!1}))?a(e):(null===(n=d.current)||void 0===n||n.focus(),null===(i=d.current)||void 0===i||i.validate({allowEmpty:!1,focused:!0}))}},i.createElement("fieldset",{disabled:s},i.createElement("div",{className:"mx_AuthBody_fieldRow"},i.createElement(eb,{name:"reset_email",label:(0,l.AO)("common|email_address"),labelRequired:(0,l.AO)("auth|forgot_password_email_required"),labelInvalid:(0,l.AO)("auth|forgot_password_email_invalid"),value:e,autoFocus:!0,onChange:e=>o("email",e),fieldRef:d})),t&&i.createElement(VC.K,{message:t}),i.createElement("button",{type:"submit",className:"mx_Login_submit"},c),i.createElement("div",{className:"mx_AuthBody_button-container"},i.createElement(le.A,{className:"mx_AuthBody_sign-in-instead-button",element:"button",kind:"link",onClick:e=>{e.preventDefault(),r()}},(0,l._t)("auth|sign_in_instead"))))))};var jC=n("./res/img/element-icons/email-prompt.svg");const WC=(e,t)=>{const n=(0,i.useRef)(void 0),[s,o]=(0,i.useState)(e);return(0,i.useEffect)(()=>()=>{clearTimeout(n.current)}),{toggle:()=>{o(!e),n.current=window.setTimeout(()=>o(e),t)},value:s}},HC=({email:e,errorText:t,onReEnterEmailClick:n,onSubmitForm:s,onResendClick:o})=>{const{toggle:r,value:a}=WC(!1,2500);return i.createElement(i.Fragment,null,i.createElement(jC.I,{className:"mx_AuthBody_emailPromptIcon--shifted"}),i.createElement("h1",null,(0,l._t)("auth|uia|email_auth_header")),i.createElement("div",{className:"mx_AuthBody_text"},i.createElement("p",null,(0,l._t)("auth|check_email_explainer",{email:e},{b:e=>i.createElement("strong",null,e)})),i.createElement("div",{className:"mx_AuthBody_did-not-receive"},i.createElement("span",{className:"mx_VerifyEMailDialog_text-light"},(0,l._t)("auth|check_email_wrong_email_prompt")),i.createElement(le.A,{className:"mx_AuthBody_resend-button",kind:"link",onClick:n},(0,l._t)("auth|check_email_wrong_email_button")))),t&&i.createElement(VC.K,{message:t}),i.createElement("input",{onClick:s,type:"button",className:"mx_Login_submit",value:(0,l._t)("action|next")}),i.createElement("div",{className:"mx_AuthBody_did-not-receive"},i.createElement("span",{className:"mx_VerifyEMailDialog_text-light"},(0,l._t)("auth|check_email_resend_prompt")),i.createElement(zt.m,{description:(0,l._t)("auth|check_email_resend_tooltip"),placement:"top",open:a},i.createElement(le.A,{className:"mx_AuthBody_resend-button",kind:"link",onClick:async()=>{await o(),r()}},i.createElement(Pn.A,{className:"mx_Icon mx_Icon_16"}),(0,l._t)("action|resend")))))},zC=({email:e,errorText:t,onCloseClick:n,onReEnterEmailClick:s,onResendClick:o})=>{const{toggle:r,value:a}=WC(!1,2500);return i.createElement(i.Fragment,null,i.createElement(jC.I,{className:"mx_AuthBody_emailPromptIcon"}),i.createElement("h1",null,(0,l._t)("auth|verify_email_heading")),i.createElement("p",null,(0,l._t)("auth|verify_email_explainer",{email:e},{b:e=>i.createElement("strong",null,e)})),i.createElement("div",{className:"mx_AuthBody_did-not-receive"},i.createElement("span",{className:"mx_VerifyEMailDialog_text-light"},(0,l._t)("auth|check_email_resend_prompt")),i.createElement(zt.m,{description:(0,l._t)("auth|check_email_resend_tooltip"),placement:"top",open:a},i.createElement(le.A,{className:"mx_AuthBody_resend-button",kind:"link",onClick:async()=>{await o(),r()}},i.createElement(Pn.A,{className:"mx_Icon mx_Icon_16"}),(0,l._t)("action|resend"))),t&&i.createElement(VC.K,{message:t})),i.createElement("div",{className:"mx_AuthBody_did-not-receive"},i.createElement("span",{className:"mx_VerifyEMailDialog_text-light"},(0,l._t)("auth|check_email_wrong_email_prompt")),i.createElement(le.A,{className:"mx_AuthBody_resend-button",kind:"link",onClick:s},(0,l._t)("auth|check_email_wrong_email_button"))),i.createElement(le.A,{onClick:n,className:"mx_Dialog_cancelButton","aria-label":(0,l._t)("dialog_close_label")}))};var KC=function(e){return e[e.EnterEmail=1]="EnterEmail",e[e.SendingEmail=2]="SendingEmail",e[e.EmailSent=3]="EmailSent",e[e.PasswordInput=4]="PasswordInput",e[e.ResettingPassword=5]="ResettingPassword",e[e.Done=6]="Done",e}(KC||{});class GC extends i.Component{constructor(e){super(e),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"reset",void 0),(0,w.A)(this,"fieldPassword",null),(0,w.A)(this,"fieldPasswordConfirm",null),(0,w.A)(this,"sendVerificationMail",async()=>{try{return await this.reset.requestResetToken(this.state.email),!0}catch(e){this.handleError(e)}return!1}),(0,w.A)(this,"onSubmitForm",async e=>{if(e.preventDefault(),[KC.SendingEmail,KC.ResettingPassword].includes(this.state.phase))return;this.setState({errorText:""});if(await this.checkServerLiveliness(this.props.serverConfig))switch(this.state.phase){case KC.EnterEmail:this.onPhaseEmailInputSubmit();break;case KC.EmailSent:this.onPhaseEmailSentSubmit();break;case KC.PasswordInput:this.onPhasePasswordInputSubmit()}}),(0,w.A)(this,"onInputChanged",(e,t)=>{let n=t.currentTarget.value;"email"===e&&(n=n.trim()),this.setState({[e]:n})}),this.state={phase:KC.EnterEmail,email:"",password:"",password2:"",errorText:null,serverIsAlive:!0,serverDeadError:"",logoutDevices:!1},this.reset=new OC(this.props.serverConfig.hsUrl,this.props.serverConfig.isUrl)}componentDidUpdate(e){e.serverConfig.hsUrl===this.props.serverConfig.hsUrl&&e.serverConfig.isUrl===this.props.serverConfig.isUrl||this.checkServerLiveliness(this.props.serverConfig)}componentWillUnmount(){this.unmounted=!0}async checkServerLiveliness(e){try{if(await p.validateServerConfigWithStaticUrls(e.hsUrl,e.isUrl),this.unmounted)return!1;this.setState({serverIsAlive:!0})}catch(e){if(this.unmounted)return!1;const{serverIsAlive:t,serverDeadError:n}=p.authComponentStateForError(e,"forgot_password");return this.setState({serverIsAlive:t,errorText:n}),t}return!0}async onPhaseEmailInputSubmit(){this.phase=KC.SendingEmail,await this.sendVerificationMail()?this.phase=KC.EmailSent:this.phase=KC.EnterEmail}handleError(e){if(429===(null==e?void 0:e.httpStatus)){var t;const n=parseInt(null==e||null===(t=e.data)||void 0===t?void 0:t.retry_after_ms,10),i=isNaN(n)?(0,l._t)("auth|reset_password|rate_limit_error"):(0,l._t)("auth|reset_password|rate_limit_error_with_time",{timeout:(0,tt.Xo)(n/1e3)});return void this.setState({errorText:i})}"ConnectionError"!==(null==e?void 0:e.name)?this.setState({errorText:e.message}):this.setState({errorText:(0,l._t)("cannot_reach_homeserver")+": "+(0,l._t)("cannot_reach_homeserver_detail")})}async onPhaseEmailSentSubmit(){this.setState({phase:KC.PasswordInput})}set phase(e){this.setState({phase:e})}async verifyFieldsBeforeSubmit(){const e=[this.fieldPassword,this.fieldPasswordConfirm],t=[];for(const n of e){if(!n)continue;await n.validate({allowEmpty:!1})||t.push(n)}return 0===t.length||(t[0].focus(),t[0].validate({allowEmpty:!1,focused:!0}),!1)}async onPhasePasswordInputSubmit(){if(!await this.verifyFieldsBeforeSubmit())return;if(this.state.logoutDevices){if(!await this.renderConfirmLogoutDevicesDialog())return}this.phase=KC.ResettingPassword,this.reset.setLogoutDevices(this.state.logoutDevices);try{return await this.reset.setNewPassword(this.state.password),void this.setState({phase:KC.Done})}catch(e){if(401!==e.httpStatus)return void this.handleError(e)}const e=R.Ay.createDialog(zC,{email:this.state.email,errorText:this.state.errorText,onCloseClick:()=>{e.close(),this.setState({phase:KC.PasswordInput})},onReEnterEmailClick:()=>{e.close(),this.setState({phase:KC.EnterEmail})},onResendClick:this.sendVerificationMail},"mx_VerifyEMailDialog",!1,!1,{onBeforeClose:async e=>("backgroundClick"===e&&this.setState({phase:KC.PasswordInput}),!0)});for(;this.state.phase===KC.ResettingPassword;)try{await this.reset.setNewPassword(this.state.password),this.setState({phase:KC.Done}),e.close()}catch{await(0,Kr.yy)(2e3)}}renderEnterEmail(){return i.createElement(BC,{email:this.state.email,errorText:this.state.errorText,homeserver:this.props.serverConfig.hsName,loading:this.state.phase===KC.SendingEmail,onInputChanged:this.onInputChanged,onLoginClick:this.props.onLoginClick,onSubmitForm:this.onSubmitForm})}async renderConfirmLogoutDevicesDialog(){const{finished:e}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("common|warning"),description:i.createElement("div",null,i.createElement("p",null,(0,l._t)("auth|reset_password|other_devices_logout_warning_1")),i.createElement("p",null,(0,l._t)("auth|reset_password|other_devices_logout_warning_2"))),button:(0,l._t)("action|continue")}),[t]=await e;return!!t}renderCheckEmail(){return i.createElement(HC,{email:this.state.email,errorText:this.state.errorText,onReEnterEmailClick:()=>this.setState({phase:KC.EnterEmail}),onResendClick:this.sendVerificationMail,onSubmitForm:this.onSubmitForm})}renderSetPassword(){const e=this.state.phase===KC.ResettingPassword?i.createElement(ce.A,{w:16,h:16}):(0,l._t)("auth|reset_password_action");return i.createElement(i.Fragment,null,i.createElement(q.A,{className:"mx_AuthBody_lockIcon"}),i.createElement("h1",null,(0,l._t)("auth|reset_password_title")),i.createElement("form",{onSubmit:this.onSubmitForm},i.createElement("fieldset",{disabled:this.state.phase===KC.ResettingPassword},i.createElement("div",{className:"mx_AuthBody_fieldRow"},i.createElement($y.A,{name:"reset_password",type:"password",label:(0,l.AO)("auth|change_password_new_label"),value:this.state.password,minScore:3,fieldRef:e=>{this.fieldPassword=e},onChange:this.onInputChanged.bind(this,"password"),autoComplete:"new-password"}),i.createElement(sb.A,{name:"reset_password_confirm",label:(0,l.AO)("auth|reset_password|confirm_new_password"),labelRequired:(0,l.AO)("auth|reset_password|password_not_entered"),labelInvalid:(0,l.AO)("auth|reset_password|passwords_mismatch"),value:this.state.password2,password:this.state.password,fieldRef:e=>{this.fieldPasswordConfirm=e},onChange:this.onInputChanged.bind(this,"password2"),autoComplete:"new-password"})),i.createElement("div",{className:"mx_AuthBody_fieldRow"},i.createElement(no.A,{onChange:()=>this.setState({logoutDevices:!this.state.logoutDevices}),checked:this.state.logoutDevices},(0,l._t)("auth|reset_password|sign_out_other_devices"))),this.state.errorText&&i.createElement(VC.K,{message:this.state.errorText}),i.createElement("button",{type:"submit",className:"mx_Login_submit"},e))))}renderDone(){return i.createElement(i.Fragment,null,i.createElement(pe.A,{className:"mx_Icon mx_Icon_32 mx_Icon_accent"}),i.createElement("h1",null,(0,l._t)("auth|reset_password|reset_successful")),this.state.logoutDevices?i.createElement("p",null,(0,l._t)("auth|reset_password|devices_logout_success")):null,i.createElement("input",{className:"mx_Login_submit",type:"button",onClick:this.props.onComplete,value:(0,l._t)("auth|reset_password|return_to_login")}))}render(){let e;switch(this.state.phase){case KC.EnterEmail:case KC.SendingEmail:e=this.renderEnterEmail();break;case KC.EmailSent:e=this.renderCheckEmail();break;case KC.PasswordInput:case KC.ResettingPassword:e=this.renderSetPassword();break;case KC.Done:e=this.renderDone();break;default:return s.vF.warn(`unknown forgot password phase ${this.state.phase}`),void this.setState({phase:KC.EnterEmail})}return i.createElement(IC,null,i.createElement(LC,null),i.createElement(UC,{className:"mx_AuthBody_forgot-password"},e))}}class JC extends(ne()){constructor(...e){super(...e),(0,w.A)(this,"status",void 0),(0,w.A)(this,"client",void 0),(0,w.A)(this,"onFinished",void 0)}static sharedInstance(){return window.mxInitialCryptoStore||(window.mxInitialCryptoStore=new JC),window.mxInitialCryptoStore}getStatus(){return this.status}startInitialCryptoSetup(e,t){this.client=e,this.onFinished=t,this.doSetup().catch(()=>s.vF.error("Initial crypto setup failed"))}retry(){return void 0!==this.client&&(this.doSetup().catch(()=>s.vF.error("Initial crypto setup failed")),!0)}reset(){this.client=void 0}async doSetup(){if(void 0===this.client)throw new Error("No setup is in progress");const e=this.client.getCrypto();if(!e)throw new Error("No crypto module found!");this.status="in_progress",this.emit("update");try{var t;await async function(e){const t=e.getCrypto();if(!t)throw new Error("No crypto API found!");await t.bootstrapCrossSigning({authUploadDeviceSigningKeys:t=>ye(e,t)})}(this.client);null===await e.checkKeyBackupAndEnable()&&await e.resetKeyBackup(),this.reset(),this.status="complete",this.emit("update"),null===(t=this.onFinished)||void 0===t||t.call(this,!0)}catch(e){s.vF.error("Error bootstrapping cross-signing",e),this.status="error",this.emit("update")}}}const $C=({onFinished:e})=>{const t=(0,i.useCallback)(()=>{JC.sharedInstance().retry()},[]),n=(0,i.useCallback)(()=>{e(!1)},[e]);let s;return s="error"===(e=>{const[t,n]=(0,i.useState)(e.getStatus());return(0,i.useEffect)(()=>{const t=()=>{n(e.getStatus())};return e.on("update",t),()=>{e.off("update",t)}},[e]),t})(JC.sharedInstance())?i.createElement("div",null,i.createElement("p",null,(0,l._t)("encryption|unable_to_setup_keys_error")),i.createElement("div",{className:"mx_Dialog_buttons"},i.createElement(Nt.A,{primaryButton:(0,l._t)("action|retry"),onPrimaryButtonClick:t,onCancel:n}))):i.createElement("div",null,i.createElement(ce.A,null)),i.createElement(Q.A,{className:"mx_CreateCrossSigningDialog",onFinished:e,title:(0,l._t)("encryption|bootstrap_title"),hasCancel:!1,fixedWidth:!1},i.createElement("div",null,s))};class qC extends i.Component{render(){return i.createElement(IC,null,i.createElement(RC,null,i.createElement($C,{onFinished:this.props.onFinished})))}}const YC=["matrixClient","loginType","fragmentAfterLogin","idp","primary","mini","action","flow"],XC=e=>{let t,{matrixClient:s,loginType:r,fragmentAfterLogin:c,idp:d,primary:m,mini:u,action:h,flow:p}=e,v=(0,g.A)(e,YC);t=d?(0,l._t)("auth|continue_with_idp",{provider:d.name}):o.DELEGATED_OIDC_COMPATIBILITY.findIn(p)?(0,l._t)("action|continue"):(0,l._t)("auth|sign_in_with_sso");const _=()=>{var e,t;const n=(e=>{switch(e){case o.IdentityProviderBrand.Apple:return"Apple";case o.IdentityProviderBrand.Facebook:return"Facebook";case o.IdentityProviderBrand.Github:return"GitHub";case o.IdentityProviderBrand.Gitlab:return"GitLab";case o.IdentityProviderBrand.Google:return"Google";default:return"SSO"}})(null!==(e=null==d?void 0:d.brand)&&void 0!==e?e:"");j.Vo.instance.setAuthenticationType(n),null===(t=a.A.get())||void 0===t||t.startSingleSignOn(s,r,c,null==d?void 0:d.id,h)};let f,E;const y=null!=d&&d.brand?(e=>{switch(e){case o.IdentityProviderBrand.Apple:return n("./res/img/element-icons/brands/apple.svg").A;case o.IdentityProviderBrand.Facebook:return n("./res/img/element-icons/brands/facebook.svg").A;case o.IdentityProviderBrand.Github:return n("./res/img/element-icons/brands/github.svg").A;case o.IdentityProviderBrand.Gitlab:return n("./res/img/element-icons/brands/gitlab.svg").A;case o.IdentityProviderBrand.Google:return n("./res/img/element-icons/brands/google.svg").A;case o.IdentityProviderBrand.Twitter:return n("./res/img/element-icons/brands/twitter.svg").A;default:return null}})(d.brand):null;if(null!=d&&d.brand&&y){const e=d.brand.split(".").pop();E=`mx_SSOButton_brand_${e}`,f=i.createElement("img",{src:y,height:"24",width:"24",alt:e})}else if("string"==typeof(null==d?void 0:d.icon)&&d.icon.startsWith("mxc://")){var b;const e=null!==(b=(0,gi.mediaFromMxc)(d.icon,s).getSquareThumbnailHttp(24))&&void 0!==b?b:void 0;f=i.createElement("img",{src:e,height:"24",width:"24",alt:d.name})}const w=E?{[E]:E}:void 0,S=Lt()("mx_SSOButton",{mx_SSOButton_mini:u,mx_SSOButton_default:!d,mx_SSOButton_primary:m},w);return u?i.createElement(le.A,(0,Wt.A)({},v,{title:t,className:S,onClick:_}),f):i.createElement(le.A,(0,Wt.A)({},v,{className:S,onClick:_}),f,t)},QC=({matrixClient:e,flow:t,loginType:n,fragmentAfterLogin:s,primary:o,action:r,disabled:a})=>{const l=t.identity_providers||[];if(l.length<2)return i.createElement("div",{className:"mx_SSOButtons"},i.createElement(XC,{matrixClient:e,loginType:n,fragmentAfterLogin:s,idp:l[0],primary:o,action:r,flow:t,disabled:a}));const c=Math.ceil(l.length/6),d=Math.ceil(l.length/c);return i.createElement("div",{className:"mx_SSOButtons"},(0,Kt.chunk)(l,d).map(a=>i.createElement("div",{key:a[0].id,className:"mx_SSOButtons_row"},a.map(a=>i.createElement(XC,{key:a.id,matrixClient:e,loginType:n,fragmentAfterLogin:s,idp:a,mini:!0,primary:o,action:r,flow:t})))))};class ZC extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"defaultServer",void 0),(0,w.A)(this,"fieldRef",(0,i.createRef)()),(0,w.A)(this,"validatedConf",void 0),(0,w.A)(this,"onDefaultChosen",()=>{this.setState({defaultChosen:!0})}),(0,w.A)(this,"onOtherChosen",()=>{this.setState({defaultChosen:!1})}),(0,w.A)(this,"onHomeserverChange",e=>{this.setState({otherHomeserver:e.target.value})}),(0,w.A)(this,"validate",(0,Hm.A)({deriveData:async({value:e})=>{let t=(null!=e?e:"").trim();if(!t.includes("://"))try{const e=await o.AutoDiscovery.findClientConfig(t);return this.validatedConf=await p.buildValidatedConfigFromDiscovery(t,e),{}}catch(e){s.vF.error(`Attempted ${t} as a server_name but it failed`,e)}t.includes("://")||(t="https://"+t);try{return this.validatedConf=await p.validateServerConfigWithStaticUrls(t),{}}catch(e){s.vF.error(e);if(p.authComponentStateForError(e).serverErrorIsFatal){let t=(0,l._t)("auth|server_picker_failed_validate_homeserver");return e instanceof l.P7&&e.translatedMessage&&(t=e.translatedMessage),{error:t}}try{return this.validatedConf=await p.validateServerConfigWithStaticUrls(t,void 0,!0),{}}catch(e){return s.vF.error(e),{error:(0,l._t)("auth|server_picker_invalid_url")}}}},rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("auth|server_picker_required")},{key:"valid",test:async function({value:e},{error:t}){return!e||!t},invalid:function({error:e}){return null!=e?e:null}}]})),(0,w.A)(this,"onHomeserverValidate",e=>this.validate(e)),(0,w.A)(this,"onSubmit",async e=>{var t;if(e.preventDefault(),this.state.defaultChosen)return void this.props.onFinished(this.defaultServer);var n,i;if(!await(null===(t=this.fieldRef.current)||void 0===t?void 0:t.validate({allowEmpty:!1})))return null===(n=this.fieldRef.current)||void 0===n||n.focus(),void(null===(i=this.fieldRef.current)||void 0===i||i.validate({allowEmpty:!1,focused:!0}));this.props.onFinished(this.validatedConf)});const t=c.Ay.get();this.defaultServer=t.validated_server_config;const{serverConfig:n}=this.props;let r="";n.isDefault||(r=n.isNameResolvable&&n.hsName?n.hsName:n.hsUrl),this.state={defaultChosen:n.isDefault,otherHomeserver:r}}render(){let e;"matrix.org"===this.defaultServer.hsName&&(e=(0,l._t)("auth|server_picker_matrix.org"));let t=this.defaultServer.hsName;return this.defaultServer.hsNameIsDifferent&&(t=i.createElement(Mh.A,{className:"mx_Login_underlinedServerName",tooltip:this.defaultServer.hsUrl},this.defaultServer.hsName)),i.createElement(Q.A,{title:this.props.title||(0,l._t)("auth|server_picker_title"),className:"mx_ServerPickerDialog",contentId:"mx_ServerPickerDialog",onFinished:this.props.onFinished,fixedWidth:!1,hasCancel:!0},i.createElement("form",{className:"mx_Dialog_content",id:"mx_ServerPickerDialog",onSubmit:this.onSubmit},i.createElement("p",null,(0,l._t)("auth|server_picker_intro")," ",e),i.createElement($s.A,{name:"defaultChosen",value:"true",checked:this.state.defaultChosen,onChange:this.onDefaultChosen},t),i.createElement($s.A,{name:"defaultChosen",value:"false",className:"mx_ServerPickerDialog_otherHomeserverRadio",checked:!this.state.defaultChosen,onChange:this.onOtherChosen,childrenInLabel:!1,"aria-label":(0,l._t)("auth|server_picker_custom")},i.createElement(qs.A,{type:"text",className:"mx_ServerPickerDialog_otherHomeserver",label:(0,l._t)("auth|server_picker_custom"),onChange:this.onHomeserverChange,onFocus:this.onOtherChosen,ref:this.fieldRef,onValidate:this.onHomeserverValidate,value:this.state.otherHomeserver,validateOnChange:!1,validateOnFocus:!1,autoFocus:!0,id:"mx_homeserverInput"})),i.createElement("p",null,(0,l._t)("auth|server_picker_explainer")),i.createElement(le.A,{className:"mx_ServerPickerDialog_continue",kind:"primary",onClick:this.onSubmit},(0,l._t)("action|continue")),i.createElement("h2",null,(0,l._t)("action|learn_more")),i.createElement(Re.A,{href:"https://matrix.org/docs/matrix-concepts/elements-of-matrix/#homeserver",target:"_blank",rel:"noreferrer noopener"},(0,l._t)("auth|server_picker_learn_more"))))}}const ex=()=>{const e=c.Ay.get().brand;R.Ay.createDialog(ll.A,{title:(0,l._t)("auth|server_picker_title_default"),description:(0,l._t)("auth|server_picker_description",{brand:e}),button:(0,l._t)("action|dismiss"),hasCloseButton:!1,fixedWidth:!1},"mx_ServerPicker_helpDialog")},tx=({title:e,dialogTitle:t,serverConfig:n,onServerConfigChange:s,disabled:o})=>{const r=c.Ay.get("disable_custom_urls");let a;if(!r&&s){const e=()=>{((e,t,n)=>{const{finished:i}=R.Ay.createDialog(ZC,{title:e,serverConfig:t});i.then(([e])=>n(e))})(t,n,e=>{e&&s(e)})};a=i.createElement(le.A,{className:"mx_ServerPicker_change",kind:"link",onClick:e,disabled:o},(0,l._t)("action|edit"))}let d,m=n.isNameResolvable?n.hsName:n.hsUrl;return n.hsNameIsDifferent&&(m=i.createElement(Mh.A,{className:"mx_Login_underlinedServerName",tooltip:n.hsUrl},n.hsName)),"matrix.org"===n.hsName&&(d=i.createElement("span",{className:"mx_ServerPicker_desc"},(0,l._t)("auth|server_picker_description_matrix.org"))),i.createElement("div",{className:"mx_ServerPicker"},i.createElement("h2",null,e||(0,l._t)("common|homeserver")),r?null:i.createElement(le.A,{className:"mx_ServerPicker_help",onClick:ex,"aria-label":(0,l._t)("common|help")}),i.createElement("span",{className:"mx_ServerPicker_server",title:"string"==typeof m?m:void 0},m),a,d)};var nx=n("./src/components/structures/auth/header/AuthHeaderContext.tsx");function ix({title:e,icon:t,serverPicker:n,children:s}){var o,r,a;const l=(0,i.useContext)(nx.h);if(!l)return i.createElement(i.Fragment,null);const c=null!==(o=l.state[0])&&void 0!==o?o:null;return i.createElement(i.Fragment,null,null!==(r=null==c?void 0:c.icon)&&void 0!==r?r:t,i.createElement("h1",null,null!==(a=null==c?void 0:c.title)&&void 0!==a?a:e),s,!0!==(null==c?void 0:c.hideServerPicker)&&n)}var sx=n("./src/components/structures/auth/header/AuthHeaderProvider.tsx");function ox(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 rx=(...e)=>{D.A.getValue("debug_registration")&&s.vF.log.call(console,"Registration debuglog:",...e)};class ax extends i.Component{constructor(e){super(e),(0,w.A)(this,"loginLogic",void 0),(0,w.A)(this,"latestServerConfig",void 0),(0,w.A)(this,"unloadCallback",e=>{if(this.state.doingUIAuth)return e.preventDefault(),e.returnValue="",""}),(0,w.A)(this,"onFormSubmit",async e=>{this.setState({errorText:"",busy:!0,formVals:e,doingUIAuth:!0})}),(0,w.A)(this,"requestEmailToken",(e,t,n,i)=>{if(!this.state.matrixClient)throw new Error("Matrix client has not yet been loaded");return this.state.matrixClient.requestRegisterEmailToken(e,t,n)}),(0,w.A)(this,"onUIAuthFinished",async(e,t)=>{if(!this.state.matrixClient)throw new Error("Matrix client has not yet been loaded");if(rx("Registration: ui authentication finished: ",{success:e,response:t}),!e){var n;let e=t.message||t.toString();if(t instanceof o.MatrixError&&"M_RESOURCE_LIMIT_EXCEEDED"===t.errcode){const n=(0,Fo.AB)(t.data.limit_type,t.data.admin_contact,Fo.Ch),s=(0,Fo.AB)(t.data.limit_type,t.data.admin_contact,Fo.aZ);e=i.createElement("div",null,i.createElement("p",null,n),i.createElement("p",null,s))}else if(null!==(n=t.flows)&&void 0!==n&&n.some(e=>e.stages.includes(o.AuthType.Msisdn))){var r;(null!==(r=t.flows)&&void 0!==r?r:[]).some(e=>e.stages.includes(o.AuthType.Msisdn))||(e=(0,l._t)("auth|unsupported_auth_msisdn"))}else t instanceof o.MatrixError&&"M_USER_IN_USE"===t.errcode?e=(0,l._t)("auth|username_in_use"):t instanceof o.MatrixError&&"M_THREEPID_IN_USE"===t.errcode&&(e=(0,l._t)("auth|3pid_in_use"));return void this.setState({busy:!1,doingUIAuth:!1,errorText:e})}const a=t.user_id,c=t.access_token;if(!a||!c)throw new Error("Registration failed");v.J.setJustRegisteredUserId(a);const d={doingUIAuth:!1,registeredUsername:a,differentLoggedInUserId:void 0,completedNoSignin:!1,busy:!0},[m,u]=await mr();m&&!u&&m!==a&&(s.vF.log(`Found a session for ${m} but ${a} has just registered.`),d.differentLoggedInUserId=m);const h=Boolean(this.state.formVals.email),p=Boolean(c);if(rx("Registration: ui auth finished:",{hasEmail:h,hasAccessToken:p}),p&&!d.differentLoggedInUserId)if(this.props.mobileRegister){const e={user_id:a,home_server:this.state.matrixClient.getHomeserverUrl(),access_token:c,device_id:t.device_id},n=new CustomEvent("mobileregistrationresponse",{detail:e});window.dispatchEvent(n),d.busy=!1,d.completedNoSignin=!0}else await this.props.onLoggedIn({userId:a,deviceId:t.device_id,homeserverUrl:this.state.matrixClient.getHomeserverUrl(),identityServerUrl:this.state.matrixClient.getIdentityServerUrl(),accessToken:c}),this.setupPushers();else d.busy=!1,d.completedNoSignin=!0;this.setState(d)}),(0,w.A)(this,"onLoginClick",e=>{e.preventDefault(),e.stopPropagation(),this.props.onLoginClick()}),(0,w.A)(this,"onGoToFormClicked",e=>{e.preventDefault(),e.stopPropagation(),this.replaceClient(this.props.serverConfig),this.setState({busy:!1,doingUIAuth:!1})}),(0,w.A)(this,"makeRegisterRequest",e=>{if(!this.state.matrixClient)throw new Error("Matrix client has not yet been loaded");const t={username:this.state.formVals.username,password:this.state.formVals.password,initial_device_display_name:this.props.defaultDeviceDisplayName,auth:void 0,inhibit_login:void 0};return e&&(t.auth=e),rx("Registration: sending registration request:",e),this.state.matrixClient.registerRequest(t)}),(0,w.A)(this,"onLoginClickWithCheck",async e=>{e.preventDefault();const t=await dr({ignoreGuest:!0});return t||this.props.onLoginClick(),t}),this.state={busy:!1,errorText:null,formVals:{email:this.props.email},doingUIAuth:Boolean(this.props.sessionId),flows:null,completedNoSignin:!1,serverIsAlive:!0,serverErrorIsFatal:!1,serverDeadError:""};const{hsUrl:t,isUrl:n,delegatedAuthentication:r}=this.props.serverConfig;this.loginLogic=new I(t,n,null,{defaultDeviceDisplayName:"Element login check",delegatedAuthentication:r})}componentDidMount(){this.replaceClient(this.props.serverConfig),window.addEventListener("beforeunload",this.unloadCallback)}componentWillUnmount(){window.removeEventListener("beforeunload",this.unloadCallback)}componentDidUpdate(e){e.serverConfig.hsUrl===this.props.serverConfig.hsUrl&&e.serverConfig.isUrl===this.props.serverConfig.isUrl||this.replaceClient(this.props.serverConfig)}async replaceClient(e){this.latestServerConfig=e;const{hsUrl:t,isUrl:n}=e;this.setState({errorText:null,serverDeadError:null,serverErrorIsFatal:!1,busy:!0});try{if(await p.validateServerConfigWithStaticUrls(t,n),e!==this.latestServerConfig)return;this.setState({serverIsAlive:!0,serverErrorIsFatal:!1})}catch(t){if(e!==this.latestServerConfig)return;if(this.setState(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ox(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ox(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({busy:!1},p.authComponentStateForError(t,"register"))),this.state.serverErrorIsFatal)return}const i=(0,o.createClient)({baseUrl:t,idBaseUrl:n});let r,a;this.loginLogic.setHomeserverUrl(t),this.loginLogic.setIdentityServerUrl(n),this.loginLogic.setDelegatedAuthentication(e.delegatedAuthentication);try{const t=await this.loginLogic.getFlows(!0);if(e!==this.latestServerConfig)return;r=t.find(e=>"m.login.sso"===e.type||"m.login.cas"===e.type),a=t.find(e=>"oidcNativeFlow"===e.type)}catch(t){if(e!==this.latestServerConfig)return;s.vF.error("Failed to get login flows to check for SSO support",t)}if(await new Promise(e=>{this.setState(({flows:e})=>({matrixClient:i,ssoFlow:r,oidcNativeFlow:a,flows:a?[]:e,busy:!1}),e)}),!a)try{if(!this.state.doingUIAuth){if(await this.makeRegisterRequest(null),e!==this.latestServerConfig)return;s.vF.log("Expecting 401 from register request but got success!")}}catch(t){if(e!==this.latestServerConfig)return;t instanceof o.MatrixError&&401===t.httpStatus?this.setState({flows:t.data.flows}):t instanceof o.MatrixError&&(403===t.httpStatus||"M_FORBIDDEN"===t.errcode)?r?S.A.dispatch({action:"start_login"}):this.setState({serverErrorIsFatal:!0,errorText:(0,l._t)("auth|registration_disabled"),flows:[]}):(s.vF.log("Unable to query for supported registration methods.",t),this.setState({errorText:(0,l._t)("auth|failed_query_registration_methods"),flows:[]}))}}setupPushers(){if(!this.props.brand)return Promise.resolve();const e=v.J.safeGet();return e.getPushers().then(t=>{const n=t.pushers;for(let t=0;t<n.length;++t)if("email"===n[t].kind){const i=n[t];i.data={brand:this.props.brand},e.setPusher(i).then(()=>{s.vF.log("Set email branding to "+this.props.brand)},e=>{s.vF.error("Couldn't set email branding: "+e)})}},e=>{s.vF.error("Couldn't get pushers: "+e)})}getUIAuthInputs(){return{emailAddress:this.state.formVals.email,phoneCountry:this.state.formVals.phoneCountry,phoneNumber:this.state.formVals.phoneNumber}}renderRegisterComponent(){if(this.state.matrixClient&&this.state.doingUIAuth)return i.createElement(Gy.A,{matrixClient:this.state.matrixClient,makeRequest:this.makeRegisterRequest,onAuthFinished:this.onUIAuthFinished,inputs:this.getUIAuthInputs(),requestEmailToken:this.requestEmailToken,sessionId:this.props.sessionId,clientSecret:this.props.clientSecret,emailSid:this.props.idSid,poll:!0});if(!this.state.matrixClient&&!this.state.busy)return null;if(this.state.busy||!this.state.flows)return i.createElement("div",{className:"mx_AuthBody_spinner"},i.createElement(ce.A,null));if(this.state.matrixClient&&this.state.oidcNativeFlow)return i.createElement(le.A,{className:"mx_Login_fullWidthButton",kind:"primary",onClick:async()=>{await Bo(this.props.serverConfig.delegatedAuthentication,this.state.oidcNativeFlow.clientId,this.props.serverConfig.hsUrl,this.props.serverConfig.isUrl,!0)}},(0,l._t)("action|continue"));if(this.state.matrixClient&&this.state.flows.length){let e;if(!this.props.mobileRegister&&this.state.ssoFlow){let t;(this.state.ssoFlow.identity_providers||[]).length>1&&(t=i.createElement("h2",{className:"mx_AuthBody_centered"},(0,l._t)("auth|continue_with_sso",{ssoButtons:""}).trim())),e=i.createElement(i.Fragment,null,t,i.createElement(QC,{matrixClient:this.loginLogic.createTemporaryClient(),flow:this.state.ssoFlow,loginType:"m.login.sso"===this.state.ssoFlow.type?"sso":"cas",fragmentAfterLogin:this.props.fragmentAfterLogin,action:o.SSOAction.REGISTER}),i.createElement("h2",{className:"mx_AuthBody_centered"},(0,l._t)("auth|sso_or_username_password",{ssoButtons:"",usernamePassword:""}).trim()))}return i.createElement(i.Fragment,null,e,i.createElement(ub,{defaultUsername:this.state.formVals.username,defaultEmail:this.state.formVals.email,defaultPhoneCountry:this.state.formVals.phoneCountry,defaultPhoneNumber:this.state.formVals.phoneNumber,defaultPassword:this.state.formVals.password,onRegisterClick:this.onFormSubmit,flows:this.state.flows,serverConfig:this.props.serverConfig,canSubmit:!this.state.serverErrorIsFatal,matrixClient:this.state.matrixClient,mobileRegister:this.props.mobileRegister}))}return null}render(){let e;const t=this.state.errorText;let n;if(t&&(e=i.createElement("div",{className:"mx_Login_error"},t)),!this.state.serverIsAlive){const e=Lt()({mx_Login_error:!0,mx_Login_serverError:!0,mx_Login_serverErrorNonFatal:!this.state.serverErrorIsFatal});n=i.createElement("div",{className:e},this.state.serverDeadError)}const s=i.createElement("span",{className:"mx_AuthBody_changeFlow"},(0,l._t)("auth|sign_in_instead_prompt",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.onLoginClick},e)}));let o,r;if(this.state.doingUIAuth&&(o=i.createElement(le.A,{kind:"link",className:"mx_AuthBody_changeFlow",onClick:this.onGoToFormClicked},(0,l._t)("action|go_back"))),this.state.completedNoSignin){let e;e=this.props.mobileRegister?void 0:this.state.differentLoggedInUserId?i.createElement("div",null,i.createElement("p",null,(0,l._t)("auth|account_clash",{newAccountId:this.state.registeredUsername,loggedInUserId:this.state.differentLoggedInUserId})),i.createElement("p",null,i.createElement(le.A,{kind:"link_inline",onClick:async e=>{await this.onLoginClickWithCheck(e)&&S.A.dispatch({action:"view_welcome_page"})}},(0,l._t)("auth|account_clash_previous_account")))):i.createElement("h2",null,(0,l._t)("auth|log_in_new_account",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:async e=>{await this.onLoginClickWithCheck(e)&&S.A.dispatch({action:"view_home_page"})}},e)})),r=i.createElement("div",null,i.createElement("h1",null,(0,l._t)("auth|registration_successful")),e)}else r=this.props.mobileRegister?i.createElement(i.Fragment,null,i.createElement("h1",null,(0,l._t)("auth|mobile_create_account_title",{hsName:this.props.serverConfig.hsName})),e,n,this.renderRegisterComponent()):i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_Register_mainContent"},i.createElement(ix,{title:(0,l._t)("auth|create_account_title"),serverPicker:i.createElement(tx,{title:(0,l._t)("auth|server_picker_title_registration"),dialogTitle:(0,l._t)("auth|server_picker_dialog_title"),serverConfig:this.props.serverConfig,onServerConfigChange:this.state.doingUIAuth?void 0:this.props.onServerConfigChange})},e,n),this.renderRegisterComponent()),i.createElement("div",{className:"mx_Register_footerActions"},o,s));return this.props.mobileRegister?i.createElement("div",{className:"mx_MobileRegister_body"},r):i.createElement(IC,null,i.createElement(LC,null),i.createElement(sx.T,null,i.createElement(UC,{flex:!0},r)))}}let lx,cx,dx,mx;const ux=/^[0-9()\-\s]*$/;var hx=function(e){return e.Email="login_field_email",e.MatrixId="login_field_mxid",e.Phone="login_field_phone",e.Password="login_field_password",e}(hx||{});lx=hx.Email,cx=hx.Phone,dx=hx.MatrixId,mx=hx.Password;class px extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,lx,null),(0,w.A)(this,cx,null),(0,w.A)(this,dx,null),(0,w.A)(this,mx,null),(0,w.A)(this,"onForgotPasswordClick",e=>{var t,n;e.preventDefault(),e.stopPropagation(),null===(t=(n=this.props).onForgotPasswordClick)||void 0===t||t.call(n)}),(0,w.A)(this,"onSubmitForm",async e=>{e.preventDefault();if(await this.verifyFieldsBeforeSubmit())switch(this.state.loginType){case hx.Email:case hx.MatrixId:this.props.onSubmit(this.props.username,void 0,void 0,this.state.password);break;case hx.Phone:this.props.onSubmit(void 0,this.props.phoneCountry,this.props.phoneNumber,this.state.password)}}),(0,w.A)(this,"onUsernameChanged",e=>{var t,n;null===(t=(n=this.props).onUsernameChanged)||void 0===t||t.call(n,e.target.value)}),(0,w.A)(this,"onUsernameBlur",e=>{var t,n;null===(t=(n=this.props).onUsernameBlur)||void 0===t||t.call(n,e.target.value)}),(0,w.A)(this,"onLoginTypeChange",e=>{var t,n;const i=e.target.value;this.setState({loginType:i}),null===(t=(n=this.props).onUsernameChanged)||void 0===t||t.call(n,"")}),(0,w.A)(this,"onPhoneCountryChanged",e=>{var t,n;null===(t=(n=this.props).onPhoneCountryChanged)||void 0===t||t.call(n,e.iso2)}),(0,w.A)(this,"onPhoneNumberChanged",e=>{var t,n;null===(t=(n=this.props).onPhoneNumberChanged)||void 0===t||t.call(n,e.target.value)}),(0,w.A)(this,"onPasswordChanged",e=>{this.setState({password:e.target.value})}),(0,w.A)(this,"validateUsernameRules",(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("auth|username_field_required_invalid")}]})),(0,w.A)(this,"onUsernameValidate",async e=>{const t=await this.validateUsernameRules(e);return this.markFieldValid(hx.MatrixId,t.valid),t}),(0,w.A)(this,"onEmailValidate",e=>{this.markFieldValid(hx.Email,e.valid)}),(0,w.A)(this,"validatePhoneNumberRules",(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("auth|msisdn_field_required_invalid")},{key:"number",test:({value:e})=>!e||ux.test(e),invalid:()=>(0,l._t)("auth|msisdn_field_number_invalid")}]})),(0,w.A)(this,"onPhoneNumberValidate",async e=>{const t=await this.validatePhoneNumberRules(e);return this.markFieldValid(hx.Password,t.valid),t}),(0,w.A)(this,"validatePasswordRules",(0,Hm.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,l._t)("auth|password_field_label")}]})),(0,w.A)(this,"onPasswordValidate",async e=>{const t=await this.validatePasswordRules(e);return this.markFieldValid(hx.Password,t.valid),t}),this.state={fieldValid:{},loginType:hx.MatrixId,password:""}}async verifyFieldsBeforeSubmit(){const e=document.activeElement;e&&e.blur();const t=[this.state.loginType,hx.Password];for(const e of t){const t=this[e];t&&await t.validate({allowEmpty:!1})}if(await new Promise(e=>this.setState({},e)),this.allFieldsValid())return!0;const n=this.findFirstInvalidField(t);return!n||(n.focus(),n.validate({allowEmpty:!1,focused:!0}),!1)}allFieldsValid(){return Object.values(this.state.fieldValid).every(Boolean)}findFirstInvalidField(e){for(const t of e)if(!this.state.fieldValid[t]&&this[t])return this[t];return null}markFieldValid(e,t){const{fieldValid:n}=this.state;n[e]=t,this.setState({fieldValid:n})}renderLoginField(e,t){const n={error:!1};switch(e){case hx.Email:return n.error=this.props.loginIncorrect&&!this.props.username,i.createElement(eb,{id:"mx_LoginForm_email",className:Lt()(n),name:"username",autoComplete:"email",type:"email",key:"email_input",placeholder:"joe@example.com",value:this.props.username,onChange:this.onUsernameChanged,onBlur:this.onUsernameBlur,disabled:this.props.busy,autoFocus:t,onValidate:this.onEmailValidate,fieldRef:e=>{this[hx.Email]=e}});case hx.MatrixId:return n.error=this.props.loginIncorrect&&!this.props.username,i.createElement(qs.A,{id:"mx_LoginForm_username",className:Lt()(n),name:"username",autoComplete:"username",key:"username_input",type:"text",label:(0,l._t)("common|username"),placeholder:(0,l._t)("common|username"),value:this.props.username,onChange:this.onUsernameChanged,onBlur:this.onUsernameBlur,disabled:this.props.busy,autoFocus:t,onValidate:this.onUsernameValidate,ref:e=>{this[hx.MatrixId]=e}});case hx.Phone:{n.error=this.props.loginIncorrect&&!this.props.phoneNumber;const e=i.createElement(ib,{value:this.props.phoneCountry,isSmall:!0,showPrefix:!0,onOptionChange:this.onPhoneCountryChanged});return i.createElement(qs.A,{id:"mx_LoginForm_phone",className:Lt()(n),name:"phoneNumber",autoComplete:"tel-national",key:"phone_input",type:"text",label:(0,l._t)("auth|msisdn_field_label"),value:this.props.phoneNumber,prefixComponent:e,onChange:this.onPhoneNumberChanged,disabled:this.props.busy,autoFocus:t,onValidate:this.onPhoneNumberValidate,ref:e=>{this[hx.Password]=e}})}}}isLoginEmpty(){switch(this.state.loginType){case hx.Email:case hx.MatrixId:return!this.props.username;case hx.Phone:return!this.props.phoneCountry||!this.props.phoneNumber}}render(){let e;this.props.onForgotPasswordClick&&(e=i.createElement(le.A,{className:"mx_Login_forgot",disabled:this.props.busy,kind:"link",onClick:this.onForgotPasswordClick},(0,l._t)("auth|reset_password_button")));const t=Lt()({error:this.props.loginIncorrect&&!this.isLoginEmpty()}),n=!this.isLoginEmpty(),s=this.renderLoginField(this.state.loginType,!n);let o;return c.Ay.get().disable_3pid_login||(o=i.createElement("div",{className:"mx_Login_type_container"},i.createElement("label",{className:"mx_Login_type_label"},(0,l._t)("auth|identifier_label")),i.createElement(qs.A,{element:"select",value:this.state.loginType,onChange:this.onLoginTypeChange,disabled:this.props.busy},i.createElement("option",{key:hx.MatrixId,value:hx.MatrixId},(0,l._t)("common|username")),i.createElement("option",{key:hx.Email,value:hx.Email},(0,l._t)("common|email_address")),i.createElement("option",{key:hx.Password,value:hx.Password},(0,l._t)("auth|msisdn_field_label"))))),i.createElement("div",null,i.createElement("form",{onSubmit:this.onSubmitForm},o,s,i.createElement(qs.A,{id:"mx_LoginForm_password",className:t,autoComplete:"current-password",type:"password",name:"password",label:(0,l._t)("common|password"),value:this.state.password,onChange:this.onPasswordChanged,disabled:this.props.busy,autoFocus:n,onValidate:this.onPasswordValidate,ref:e=>{this[hx.Password]=e}}),e,!this.props.busy&&i.createElement("input",{className:"mx_Login_submit",type:"submit",value:(0,l._t)("action|sign_in"),disabled:this.props.disableSubmit})))}}function gx(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 vx(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gx(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gx(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}(0,w.A)(px,"defaultProps",{onUsernameChanged:function(){},onUsernameBlur:function(){},onPhoneCountryChanged:function(){},onPhoneNumberChanged:function(){},loginIncorrect:!1,disableSubmit:!1});class _x extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"loginLogic",void 0),(0,w.A)(this,"stepRendererMap",void 0),(0,w.A)(this,"isBusy",()=>!!this.state.busy||!!this.props.busy),(0,w.A)(this,"onPasswordLogin",async(e,t,n,i)=>{if(!this.state.serverIsAlive){this.setState({busy:!0});let e=!0;try{await p.validateServerConfigWithStaticUrls(this.props.serverConfig.hsUrl,this.props.serverConfig.isUrl),this.setState({serverIsAlive:!0,errorText:""})}catch(t){const n=p.authComponentStateForError(t);this.setState(vx({busy:!1,busyLoggingIn:!1},n)),e=!n.serverErrorIsFatal}if(!e)return}this.setState({busy:!0,busyLoggingIn:!0,errorText:null,loginIncorrect:!1}),this.loginLogic.loginViaPassword(e,t,n,i).then(e=>{this.setState({serverIsAlive:!0}),this.props.onLoggedIn(e)},t=>{if(this.unmounted)return;let n;n=400===t.httpStatus&&e&&e.indexOf("@")>0?(0,l._t)("auth|unsupported_auth_email"):(0,Fo.Y0)(t,this.props.serverConfig),this.setState({busy:!1,busyLoggingIn:!1,errorText:n,loginIncorrect:401===t.httpStatus||403===t.httpStatus})})}),(0,w.A)(this,"onUsernameChanged",e=>{this.setState({username:e})}),(0,w.A)(this,"onUsernameBlur",async e=>{const t="@"===e[0];if(this.setState({username:e,busy:t,errorText:null,canTryLogin:!0}),t){const t=e.split(":").slice(1).join(":");try{const e=await p.validateServerName(t);this.props.onServerConfigChange(e),this.setState({busy:!1})}catch(e){s.vF.error("Problem parsing URL or unhandled error doing .well-known discovery:",e);let t=(0,l._t)("auth|failed_homeserver_discovery");e instanceof l.P7&&e.translatedMessage&&(t=e.translatedMessage);let n=t,i={};p.isLivelinessError(e)&&(n=this.state.errorText,i=p.authComponentStateForError(e)),this.setState(vx({busy:!1,errorText:n},i))}}}),(0,w.A)(this,"onPhoneCountryChanged",e=>{this.setState({phoneCountry:e})}),(0,w.A)(this,"onPhoneNumberChanged",e=>{this.setState({phoneNumber:e})}),(0,w.A)(this,"onRegisterClick",e=>{e.preventDefault(),e.stopPropagation(),this.props.onRegisterClick()}),(0,w.A)(this,"onTryRegisterClick",e=>{var t,n;const i=null===(t=this.state.flows)||void 0===t?void 0:t.find(e=>"m.login.password"===e.type),s=null===(n=this.state.flows)||void 0===n?void 0:n.find(e=>"m.login.sso"===e.type||"m.login.cas"===e.type);if(s&&!i){var r;e.preventDefault(),e.stopPropagation();const t="m.login.sso"===s.type?"sso":"cas";null===(r=a.A.get())||void 0===r||r.startSingleSignOn(this.loginLogic.createTemporaryClient(),t,this.props.fragmentAfterLogin,void 0,o.SSOAction.REGISTER)}else this.onRegisterClick(e)}),(0,w.A)(this,"isSupportedFlow",e=>!!this.stepRendererMap[e.type]||(s.vF.log("Skipping flow",e,"due to unsupported login type",e.type),!1)),(0,w.A)(this,"renderPasswordStep",()=>i.createElement(px,{onSubmit:this.onPasswordLogin,username:this.state.username,phoneCountry:this.state.phoneCountry,phoneNumber:this.state.phoneNumber,onUsernameChanged:this.onUsernameChanged,onUsernameBlur:this.onUsernameBlur,onPhoneCountryChanged:this.onPhoneCountryChanged,onPhoneNumberChanged:this.onPhoneNumberChanged,onForgotPasswordClick:this.props.onForgotPasswordClick,loginIncorrect:this.state.loginIncorrect,serverConfig:this.props.serverConfig,disableSubmit:this.isBusy(),busy:this.props.isSyncing||this.state.busyLoggingIn})),(0,w.A)(this,"renderOidcNativeStep",()=>{const e=this.state.flows.find(e=>"oidcNativeFlow"===e.type);return i.createElement(le.A,{className:"mx_Login_fullWidthButton",kind:"primary",onClick:async()=>{await Bo(this.props.serverConfig.delegatedAuthentication,e.clientId,this.props.serverConfig.hsUrl,this.props.serverConfig.isUrl)}},(0,l._t)("action|continue"))}),(0,w.A)(this,"renderSsoStep",e=>{var t,n;const s=null===(t=this.state.flows)||void 0===t?void 0:t.find(t=>t.type==="m.login."+e);return i.createElement(QC,{matrixClient:this.loginLogic.createTemporaryClient(),flow:s,loginType:e,fragmentAfterLogin:this.props.fragmentAfterLogin,primary:!(null!==(n=this.state.flows)&&void 0!==n&&n.find(e=>"m.login.password"===e.type)),action:o.SSOAction.LOGIN,disabled:this.isBusy()})}),this.state={busy:!1,errorText:null,loginIncorrect:!1,canTryLogin:!0,username:e.defaultUsername?e.defaultUsername:"",phoneCountry:"",phoneNumber:"",serverIsAlive:!0,serverErrorIsFatal:!1,serverDeadError:""},this.stepRendererMap={"m.login.password":this.renderPasswordStep,"m.login.cas":()=>this.renderSsoStep("cas"),"m.login.sso":()=>this.renderSsoStep("sso"),oidcNativeFlow:()=>this.renderOidcNativeStep()}}componentDidMount(){this.unmounted=!1,this.initLoginLogic(this.props.serverConfig)}componentWillUnmount(){this.unmounted=!0}componentDidUpdate(e){e.serverConfig.hsUrl===this.props.serverConfig.hsUrl&&e.serverConfig.isUrl===this.props.serverConfig.isUrl&&e.serverConfig.delegatedAuthentication===this.props.serverConfig.delegatedAuthentication||this.initLoginLogic(this.props.serverConfig)}async checkServerLiveliness({hsUrl:e,isUrl:t}){try{const{warning:n}=await p.validateServerConfigWithStaticUrls(e,t);n?this.setState(vx(vx({},p.authComponentStateForError(n)),{},{errorText:""})):this.setState({serverIsAlive:!0,errorText:""})}catch(e){this.setState(vx({busy:!1},p.authComponentStateForError(e)))}}async initLoginLogic({hsUrl:e,isUrl:t}){let n=!1;this.props.serverConfig.isDefault&&e===this.props.serverConfig.hsUrl&&t===this.props.serverConfig.isUrl&&(n=!0);const i=n?this.props.fallbackHsUrl:null;this.setState({busy:!0,loginIncorrect:!1}),await this.checkServerLiveliness({hsUrl:e,isUrl:t});const s=new I(e,t,i,{defaultDeviceDisplayName:this.props.defaultDeviceDisplayName,delegatedAuthentication:this.props.serverConfig.delegatedAuthentication});this.loginLogic=s,s.getFlows().then(e=>{const t=e.filter(this.isSupportedFlow);this.setState({flows:t}),0===t.length&&this.setState({errorText:(0,l._t)("auth|unsupported_auth")})},e=>{this.setState({errorText:(0,Fo.Vp)(e,this.props.serverConfig),loginIncorrect:!1,canTryLogin:!1})}).finally(()=>{this.setState({busy:!1})})}renderLoginComponentForFlows(){if(!this.state.flows)return null;const e=(0,se.Bo)(["oidcNativeFlow","m.login.password","m.login.sso"].map(e=>{var t;return null===(t=this.state.flows)||void 0===t?void 0:t.find(t=>t.type===e)}));return i.createElement(i.Fragment,null,e.map(e=>{const t=this.stepRendererMap[e.type];return i.createElement(i.Fragment,{key:e.type},t())}))}render(){const e=this.isBusy()&&!this.state.busyLoggingIn?i.createElement("div",{className:"mx_Login_loader"},i.createElement(ce.A,null)):null,t=this.state.errorText;let n,s,o;if(t&&(n=i.createElement("div",{className:"mx_Login_error"},t)),!this.state.serverIsAlive){const e=Lt()({mx_Login_error:!0,mx_Login_serverError:!0,mx_Login_serverErrorNonFatal:!this.state.serverErrorIsFatal});s=i.createElement("div",{className:e},this.state.serverDeadError)}return this.props.isSyncing||this.state.busyLoggingIn?o=i.createElement("div",{className:"mx_AuthBody_paddedFooter"},i.createElement("div",{className:"mx_AuthBody_paddedFooter_title"},i.createElement(Ra.A,{w:20,h:20}),this.props.isSyncing?(0,l._t)("auth|syncing"):(0,l._t)("auth|signing_in")),this.props.isSyncing&&i.createElement("div",{className:"mx_AuthBody_paddedFooter_subtitle"},(0,l._t)("auth|sync_footer_subtitle"))):D.A.getValue(gt.f.Registration)&&(o=i.createElement("span",{className:"mx_AuthBody_changeFlow"},(0,l._t)("auth|create_account_prompt",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.onTryRegisterClick},e)}))),i.createElement(IC,null,i.createElement(LC,{disableLanguageSelector:this.props.isSyncing||this.state.busyLoggingIn}),i.createElement(UC,null,i.createElement("h1",null,(0,l._t)("action|sign_in"),e),n,s,i.createElement(tx,{serverConfig:this.props.serverConfig,onServerConfigChange:this.props.onServerConfigChange,disabled:this.isBusy()}),this.renderLoginComponentForFlows(),o))}}var fx=n("./src/utils/KeyVerificationStateObserver.ts");class Ex extends i.PureComponent{constructor(e){var t;super(e),(0,w.A)(this,"intervalHandle",void 0),(0,w.A)(this,"checkRequestIsPending",()=>{const{request:e}=this.props;(0,V.Dy)(e)||F.A.sharedInstance().dismissToast(this.props.toastKey)}),(0,w.A)(this,"cancel",()=>{F.A.sharedInstance().dismissToast(this.props.toastKey);try{this.props.request.cancel()}catch(e){s.vF.error("Error while cancelling verification request",e)}}),(0,w.A)(this,"accept",async()=>{F.A.sharedInstance().dismissToast(this.props.toastKey);const{request:e}=this.props,t=v.J.safeGet();try{if(e.roomId){var n;S.A.dispatch({action:H.r.ViewRoom,room_id:e.roomId,should_peek:!1,metricsTrigger:"VerificationRequest"});const i=null!==(n=t.getUser(e.otherUserId))&&void 0!==n?n:void 0;Rl.A.instance.setCards([{phase:kl.n.RoomSummary},{phase:kl.n.MemberInfo,state:{member:i}},{phase:kl.n.EncryptionPanel,state:{verificationRequest:e,member:i}}],void 0,e.roomId)}else{const{finished:t}=R.Ay.createDialog(ee,{verificationRequest:e},void 0,!1,!0);t.then(()=>e.cancel())}await e.accept()}catch(e){s.vF.error("Failed to accept verification request",e)}}),this.state={counter:Math.ceil((null!==(t=e.request.timeout)&&void 0!==t?t:0)/1e3)}}async componentDidMount(){const{request:e}=this.props;e.timeout&&e.timeout>0&&(this.intervalHandle=window.setInterval(()=>{let{counter:e}=this.state;e=Math.max(0,e-1),this.setState({counter:e})},1e3)),e.on(V.FM.Change,this.checkRequestIsPending),this.checkRequestIsPending();const t=e.otherDeviceId;if(e.isSelfVerification&&t){const e=v.J.safeGet(),n=await e.getDevice(t);this.setState({ip:n.last_seen_ip,device:await(0,vt.G)(e,e.getSafeUserId(),t)})}}componentWillUnmount(){clearInterval(this.intervalHandle);const{request:e}=this.props;e.off(V.FM.Change,this.checkRequestIsPending)}render(){const{request:e}=this.props;let t,n;if(e.isSelfVerification)this.state.device&&(t=this.state.device.displayName,n=(0,l._t)("encryption|verification|request_toast_detail",{deviceId:this.state.device.deviceId,ip:this.state.ip}));else{const n=v.J.safeGet(),i=e.otherUserId,s=e.roomId;if(t=s?(0,fx.M)(n,i,s):i,t===i){const e=n.getUser(i);e&&e.displayName&&(t=(0,l._t)("name_and_id",{name:e.displayName,userId:i}))}}const s=0===this.state.counter?(0,l._t)("action|ignore"):(0,l._t)("encryption|verification|request_toast_decline_counter",{counter:this.state.counter});return i.createElement(W.A,{description:t,detail:n,primaryLabel:e.isSelfVerification||!e.roomId?(0,l._t)("encryption|verification|request_toast_start_verification"):(0,l._t)("encryption|verification|request_toast_accept_user"),onPrimaryClick:this.accept,secondaryLabel:s,onSecondaryClick:this.cancel})}}let yx=function(e){return e.PAGE_CHANGE="mx_PageChange",e.LOGIN="mx_Login",e.REGISTER="mx_Register",e}({});class bx{constructor(){(0,w.A)(this,"START_PREFIX","start:"),(0,w.A)(this,"STOP_PREFIX","stop:"),(0,w.A)(this,"listeners",[]),(0,w.A)(this,"entries",[])}static get instance(){return bx._instance||(bx._instance=new bx),bx._instance}start(e,t){if(!this.supportsPerformanceApi())return;const n=this.buildKey(e,t);performance.getEntriesByName(this.START_PREFIX+n).length>0?s.vF.warn(`Recording already started for: ${e}`):performance.mark(this.START_PREFIX+n)}stop(e,t){if(!this.supportsPerformanceApi())return;const n=this.buildKey(e,t);if(0===performance.getEntriesByName(this.START_PREFIX+n).length)return void s.vF.warn(`No recording started for: ${e}`);performance.mark(this.STOP_PREFIX+n),performance.measure(n,this.START_PREFIX+n,this.STOP_PREFIX+n),this.clear(e,t);const i=performance.getEntriesByName(n).pop();return this.entries.push(i),this.listeners.forEach(e=>{this.shouldEmit(e,i)&&e.callback([i])}),i}clear(e,t){if(!this.supportsPerformanceApi())return;const n=this.buildKey(e,t);performance.clearMarks(this.START_PREFIX+n),performance.clearMarks(this.STOP_PREFIX+n)}getEntries({name:e,type:t}={}){return this.entries.filter(n=>{const i=!e||n.name===e,s=!t||n.entryType===t;return i&&s})}addPerformanceDataCallback(e,t=!1){if(this.listeners.push(e),t){const t=this.entries.filter(t=>this.shouldEmit(e,t));t.length>0&&e.callback(t)}}removePerformanceDataCallback(e){e?this.listeners.splice(this.listeners.findIndex(t=>t.callback===e),1):this.listeners=[]}supportsPerformanceApi(){return void 0!==performance&&void 0!==performance.mark}shouldEmit(e,t){return!e.entryNames||e.entryNames.includes(t.name)}buildKey(e,t){return`${e}${t?`:${t}`:""}`}}(0,w.A)(bx,"_instance",void 0),window.mxPerformanceMonitor=bx.instance,window.mxPerformanceEntryNames=yx;class wx extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"onConfirm",()=>{this.props.onFinished(!0)}),(0,w.A)(this,"onDecline",()=>{this.props.onFinished(!1)})}render(){return i.createElement(Q.A,{className:"mx_ConfirmWipeDeviceDialog",hasCancel:!0,onFinished:this.props.onFinished,title:(0,l._t)("auth|soft_logout|clear_data_title")},i.createElement("div",{className:"mx_ConfirmWipeDeviceDialog_content"},i.createElement("p",null,(0,l._t)("auth|soft_logout|clear_data_description"))),i.createElement(Nt.A,{primaryButton:(0,l._t)("auth|soft_logout|clear_data_button"),onPrimaryButtonClick:this.onConfirm,primaryButtonClass:"danger",cancelButton:(0,l._t)("action|cancel"),onCancel:this.onDecline}))}}var Sx=function(e){return e[e.Loading=0]="Loading",e[e.Password=1]="Password",e[e.CAS=2]="CAS",e[e.SSO=3]="SSO",e[e.PasswordWithSocialSignOn=4]="PasswordWithSocialSignOn",e[e.Unsupported=5]="Unsupported",e}(Sx||{});const Ax={"m.login.password":Sx.Password,"m.login.cas":Sx.CAS,"m.login.sso":Sx.SSO};class Cx extends i.Component{constructor(e){super(e),(0,w.A)(this,"onClearAll",()=>{const{finished:e}=R.Ay.createDialog(wx);e.then(([e])=>{e&&(s.vF.log("Clearing data from soft-logged-out session"),xr(this.context.oidcClientStore))})}),(0,w.A)(this,"onPasswordChange",e=>{this.setState({password:e.target.value})}),(0,w.A)(this,"onForgotPassword",()=>{S.A.dispatch({action:"start_password_recovery"})}),(0,w.A)(this,"onPasswordLogin",async e=>{var t;e.preventDefault(),e.stopPropagation(),this.setState({busy:!0});const n=v.J.safeGet(),i=n.getHomeserverUrl(),r=n.getIdentityServerUrl(),a={identifier:{type:"m.id.user",user:n.getUserId()},password:this.state.password,device_id:null!==(t=n.getDeviceId())&&void 0!==t?t:void 0};let c;try{c=await P(i,r,"m.login.password",a)}catch(e){let t=(0,l._t)("auth|failed_soft_logout_homeserver");return e instanceof o.MatrixError&&"M_FORBIDDEN"===e.errcode&&(401===e.httpStatus||403===e.httpStatus)&&(t=(0,l._t)("auth|incorrect_password")),void this.setState({busy:!1,errorText:t})}br(c).catch(e=>{s.vF.error(e),this.setState({busy:!1,errorText:(0,l._t)("auth|failed_soft_logout_auth")})})}),this.state={loginView:Sx.Loading,busy:!1,password:"",errorText:"",flows:[]}}componentDidMount(){kr()?this.initLogin():S.A.dispatch({action:"start_login"})}async initLogin(){const e=this.props.realQueryParams;if(null==e?void 0:e.loginToken){this.setState({loginView:Sx.Loading});if(await this.trySsoLogin())return}const t=v.J.safeGet(),n=(await t.loginFlows()).flows,i=n.map(e=>Ax[e.type]),s=i.includes(Sx.Password)&&i.includes(Sx.SSO),o=i.filter(e=>!!e)[0]||Sx.Unsupported,r=s?Sx.PasswordWithSocialSignOn:o;this.setState({flows:n,loginView:r})}async trySsoLogin(){var e;this.setState({busy:!0});const t=localStorage.getItem(wt.FL);if(!t)return s.vF.error("Homeserver URL unknown for SSO login callback"),this.setState({busy:!1,loginView:Sx.Unsupported}),!1;const n=localStorage.getItem(wt.U7)||v.J.safeGet().getIdentityServerUrl(),i={token:this.props.realQueryParams.loginToken,device_id:null!==(e=v.J.safeGet().getDeviceId())&&void 0!==e?e:void 0};let o;try{o=await P(t,n,"m.login.token",i)}catch(e){return s.vF.error(e),this.setState({busy:!1,loginView:Sx.Unsupported}),!1}return br(o).then(()=>(this.props.onTokenLoginCompleted&&this.props.onTokenLoginCompleted(),!0)).catch(e=>(s.vF.error(e),this.setState({busy:!1,loginView:Sx.Unsupported}),!1))}renderPasswordForm(e){let t;return this.state.errorText&&(t=i.createElement("span",{className:"mx_Login_error"},this.state.errorText)),i.createElement("form",{onSubmit:this.onPasswordLogin},e?i.createElement("p",null,e):null,t,i.createElement(qs.A,{type:"password",label:(0,l._t)("common|password"),onChange:this.onPasswordChange,value:this.state.password,disabled:this.state.busy}),i.createElement(le.A,{onClick:this.onPasswordLogin,kind:"primary",disabled:this.state.busy},(0,l._t)("action|sign_in")),i.createElement(le.A,{onClick:this.onForgotPassword,kind:"link"},(0,l._t)("auth|forgot_password_prompt")))}renderSsoForm(e){const t=this.state.loginView===Sx.CAS?"cas":"sso",n=this.state.flows.find(e=>e.type==="m.login."+t);return i.createElement("div",null,e?i.createElement("p",null,e):null,i.createElement(QC,{matrixClient:v.J.safeGet(),flow:n,loginType:t,fragmentAfterLogin:this.props.fragmentAfterLogin,primary:!this.state.flows.find(e=>"m.login.password"===e.type),action:o.SSOAction.LOGIN}))}renderSignInSection(){return this.state.loginView===Sx.Loading?i.createElement(ce.A,null):this.state.loginView===Sx.Password?this.renderPasswordForm((0,l._t)("auth|soft_logout_intro_password")):this.state.loginView===Sx.SSO||this.state.loginView===Sx.CAS?this.renderSsoForm((0,l._t)("auth|soft_logout_intro_sso")):this.state.loginView===Sx.PasswordWithSocialSignOn?i.createElement(i.Fragment,null,i.createElement("p",null,(0,l._t)("auth|soft_logout_intro_sso")),this.renderSsoForm(null),i.createElement("h2",{className:"mx_AuthBody_centered"},(0,l._t)("auth|sso_or_username_password",{ssoButtons:"",usernamePassword:""}).trim()),this.renderPasswordForm(null)):i.createElement("p",null,(0,l._t)("auth|soft_logout_intro_unsupported_auth"))}render(){return i.createElement(IC,null,i.createElement(LC,null),i.createElement(UC,null,i.createElement("h1",null,(0,l._t)("auth|soft_logout_heading")),i.createElement("h2",null,(0,l._t)("action|sign_in")),i.createElement("div",null,this.renderSignInSection()),i.createElement("h2",null,(0,l._t)("auth|soft_logout_subheading")),i.createElement("p",null,(0,l._t)("auth|soft_logout_warning")),i.createElement("div",null,i.createElement(le.A,{onClick:this.onClearAll,kind:"danger"},(0,l._t)("auth|soft_logout|clear_data_button")))))}}(0,w.A)(Cx,"contextType",Do.A);var xx=n("./src/Views.ts");function Rx(e,t,n){(0,i.useEffect)(()=>{let i=null;const s=()=>{i=null,t(...n)};if(!1!==e)return i=window.setTimeout(s,100),()=>{i&&clearTimeout(i)}},[e,t,n])}const kx=e=>{const t=(0,i.useRef)(null);return[(0,i.useCallback)(e=>{t.current=e},[]),(0,i.useCallback)((n,i)=>{t.current===n&&e(i)},[e])]},Ix="ALL_ROOMS",Tx="mx_last_room_directory_server",Px="mx_last_room_directory_instance";let Nx;const Mx="nsfw",Dx=e=>{var t,n;return!(null!==(t=e.name)&&void 0!==t&&t.toLocaleLowerCase().includes(Mx)||null!==(n=e.topic)&&void 0!==n&&n.toLocaleLowerCase().includes(Mx))},Ox=()=>{const[e,t]=(0,i.useState)([]),[n,s]=(0,i.useState)(void 0),[o,r]=(0,i.useState)(null),[a,l]=(0,i.useState)(!1),[d,m]=(0,i.useState)(!1),[u,h]=(0,i.useState)(),[p,g]=kx(t),_=(0,Vt.ti)("SpotlightSearch.showNsfwPublicRooms");const f=(0,i.useCallback)(async({limit:e=20,query:t,roomTypes:i})=>{const s={limit:e};(null==n?void 0:n.roomServer)!=v.J.safeGet().getDomain()&&(s.server=null==n?void 0:n.roomServer),(null==n?void 0:n.instanceId)===Ix?s.include_all_networks=!0:null!=n&&n.instanceId&&(s.third_party_instance_id=n.instanceId),(t||i)&&(s.filter={generic_search_term:t,room_types:i&&await v.J.safeGet().doesServerSupportUnstableFeature("org.matrix.msc3827.stable")?Array.from(i):void 0}),p(s),m(!0),h(void 0);try{const{chunk:e}=await v.J.safeGet().publicRooms(s);return g(s,_?e:e.filter(Dx)),!0}catch(e){return h(!(e instanceof Error)||e),console.error("Could not fetch public rooms for params",s,e),g(s,[]),!1}finally{m(!1)}},[n,p,g,_]);return(0,i.useEffect)(()=>{!async function(){if(v.J.get())if(Nx)r(Nx);else{const e=await v.J.safeGet().getThirdpartyProtocols();Nx=e,r(e)}else l(!0)}()},[]),(0,i.useEffect)(()=>{var e,t,n;if(null===o)return;const i=v.J.safeGet().getDomain(),r=localStorage.getItem(Tx),a=null!==(e=localStorage.getItem(Px))&&void 0!==e?e:void 0;let d,m=i;r&&(null!==(t=c.Ay.getObject("room_directory"))&&void 0!==t&&null!==(t=t.get("servers"))&&void 0!==t&&t.includes(r)||null!==(n=D.A.getValue("room_directory_servers"))&&void 0!==n&&n.includes(r))&&(m=r),m!==i||a!==Ix&&!Object.values(o).some(e=>{e.instances.some(e=>e.instance_id===a)})||(d=a),l(!0),s({roomServer:m,instanceId:d})},[o]),(0,i.useEffect)(()=>{n&&(localStorage.setItem(Tx,n.roomServer),n.instanceId?localStorage.setItem(Px,n.instanceId):localStorage.removeItem(Px))},[n]),{ready:a,loading:d,publicRooms:e,protocols:o,config:n,search:f,setConfig:function(e){if(!a)throw new Error("public room configuration not initialised yet");s(e)},error:u}};var Fx=n("./src/utils/SortMembers.ts"),Lx=n("./src/components/views/avatars/SearchResultAvatar.tsx"),Ux=n("./src/accessibility/context_menu/MenuItemRadio.tsx");function Vx({label:e,description:t,onClick:n,isSelected:s,adornment:o}){return i.createElement(Ux.s,{active:s,className:"mx_GenericDropdownMenu_Option mx_GenericDropdownMenu_Option--item",onClick:n},i.createElement("div",{className:"mx_GenericDropdownMenu_Option--label"},i.createElement("span",null,e),i.createElement("span",null,t)),o)}function Bx({label:e,description:t,adornment:n,children:s}){return i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_GenericDropdownMenu_Option mx_GenericDropdownMenu_Option--header"},i.createElement("div",{className:"mx_GenericDropdownMenu_Option--label"},i.createElement("span",null,e),i.createElement("span",null,t)),n),s)}function jx(e){return"options"in e}function Wx(e,t){return t?t(e):e}function Hx({value:e,onChange:t,options:n,selectedLabel:s,onOpen:o,onClose:r,toKey:a,className:l,AdditionalOptions:c}){const[d,m,u,h]=(0,bn.EF)(),p=Wx(e,a),g=n.flatMap(e=>jx(e)?[e,...e.options]:[e]).find(e=>Wx(e.key,a)===p);let v;v=n&&jx(n[0])?i.createElement(i.Fragment,null,n.map(e=>i.createElement(Bx,{key:Wx(e.key,a),label:e.label,description:e.description,adornment:e.adornment},e.options.map(e=>i.createElement(Vx,{key:Wx(e.key,a),label:e.label,description:e.description,onClick:n=>{t(e.key),h(),null==r||r(n)},adornment:e.adornment,isSelected:Wx(e.key,a)===p}))))):i.createElement(i.Fragment,null,n.map(e=>i.createElement(Vx,{key:Wx(e.key,a),label:e.label,description:e.description,onClick:n=>{t(e.key),h(),null==r||r(n)},adornment:e.adornment,isSelected:Wx(e.key,a)===p})));const _=d&&m.current?i.createElement(bn.Ay,(0,Wt.A)({onFinished:h,chevronFace:bn.t4.Top,wrapperClassName:Lt()("mx_GenericDropdownMenu_wrapper",l)},(0,bn.qv)(m.current.getBoundingClientRect())),v,c&&i.createElement(c,{menuDisplayed:d,openMenu:u,closeMenu:h})):null;return i.createElement(i.Fragment,null,i.createElement(bn.VJ,{className:"mx_GenericDropdownMenu_button",ref:m,isExpanded:d,onClick:e=>{u(),null==o||o(e)}},s(g)),_)}var zx=n("./src/components/views/dialogs/TextInputDialog.tsx");function Kx(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 Gx=(0,Hm.A)({deriveData:async({value:e})=>{try{return await v.J.safeGet().publicRooms({limit:1,server:null!=e?e:void 0}),{}}catch(e){return{error:e}}},rules:[{key:"required",test:async({value:e})=>!!e,invalid:()=>(0,l._t)("spotlight|public_rooms|network_dropdown_required_invalid")},{key:"available",final:!0,test:async(e,{error:t})=>!t,valid:()=>(0,l._t)("spotlight|public_rooms|network_dropdown_available_valid"),invalid:({error:e})=>e instanceof o.MatrixError&&"M_FORBIDDEN"===e.errcode?(0,l._t)("spotlight|public_rooms|network_dropdown_available_invalid_forbidden"):(0,l._t)("spotlight|public_rooms|network_dropdown_available_invalid")}],memoize:!0});function Jx(e,...t){for(const n of t)e.delete(n)}function $x(){var e,t;const[n,s]=function(e,t,n=null,s=!1){const[o,r]=(0,i.useState)(D.A.getValue(e,n,s)),a=(0,i.useCallback)(async i=>{r(i),D.A.setValue(e,n,t,i)},[t,n,e]);return(0,i.useEffect)(()=>{const t=D.A.watchSetting(e,n,()=>{r(D.A.getValue(e,n,s))});return()=>{D.A.unwatchSetting(t)}},[e,n,s]),[o,a]}("room_directory_servers",O.p.ACCOUNT),o=v.J.safeGet().getDomain(),r=new Set(null!==(e=null===(t=c.Ay.getObject("room_directory"))||void 0===t?void 0:t.get("servers"))&&void 0!==e?e:[]);Jx(r,o);const a=new Set(n);return Jx(a,o),Jx(a,...r),{allServers:[o,...Array.from(r).sort(),...Array.from(a).sort()],homeServer:o,userDefinedServers:Array.from(a).sort(),setUserDefinedServers:s}}const qx=({protocols:e,config:t,setConfig:n})=>{const{allServers:s,homeServer:o,userDefinedServers:r,setUserDefinedServers:a}=$x(),c=s.map(t=>function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Kx(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kx(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({key:{roomServer:t,instanceId:void 0},label:t,description:t===o?(0,l._t)("spotlight|public_rooms|network_dropdown_your_server_description"):null,options:[{key:{roomServer:t,instanceId:void 0},label:(0,l._t)("common|matrix")},...t===o&&e?Object.values(e).flatMap(e=>e.instances).map(e=>({key:{roomServer:t,instanceId:e.instance_id},label:e.desc})):[]]},r.includes(t)?{adornment:i.createElement(le.A,{className:"mx_NetworkDropdown_removeServer",title:(0,l._t)("spotlight|public_rooms|network_dropdown_remove_server_adornment",{roomServer:t}),onClick:()=>a((0,Kt.without)(r,t))})}:{})),d=(0,i.useCallback)(({closeMenu:e})=>i.createElement(i.Fragment,null,i.createElement("span",{className:"mx_GenericDropdownMenu_divider"}),i.createElement(Ux.s,{active:!1,className:"mx_GenericDropdownMenu_Option mx_GenericDropdownMenu_Option--item",onClick:async()=>{e();const{finished:t}=R.Ay.createDialog(zx.A,{title:(0,l._t)("spotlight|public_rooms|network_dropdown_add_dialog_title"),description:(0,l._t)("spotlight|public_rooms|network_dropdown_add_dialog_description"),button:(0,l._t)("action|add"),hasCancel:!1,placeholder:(0,l._t)("spotlight|public_rooms|network_dropdown_add_dialog_placeholder"),validator:Gx,fixedWidth:!1},"mx_NetworkDropdown_dialog"),[i,o]=await t;i&&(s.includes(o)||(a([...r,o]),n({roomServer:o})))}},i.createElement("div",{className:"mx_GenericDropdownMenu_Option--label"},i.createElement("span",{className:"mx_NetworkDropdown_addServer"},(0,l._t)("spotlight|public_rooms|network_dropdown_add_server_option"))))),[s,n,a,r]);return i.createElement(Hx,{className:"mx_NetworkDropdown_wrapper",value:t,toKey:e=>e?`${e.roomServer}-${e.instanceId}`:"null",options:c,onChange:e=>n(e),selectedLabel:e=>null!=e&&e.key?(0,l._t)("spotlight|public_rooms|network_dropdown_selected_label_instance",{server:e.key.roomServer,instance:e.key.instanceId?e.label:"Matrix"}):(0,l._t)("spotlight|public_rooms|network_dropdown_selected_label"),AdditionalOptions:d})},Yx=["children","endAdornment","className"],Xx=e=>{let{children:t,endAdornment:n,className:s}=e,o=(0,g.A)(e,Yx);const[r,a,l]=(0,qn.A9)();return i.createElement(le.A,(0,Wt.A)({},o,{className:Lt()(s,"mx_SpotlightDialog_option"),onFocus:r,ref:l,tabIndex:-1,"aria-selected":a,role:"option",element:"li"}),t,i.createElement("div",{className:"mx_SpotlightDialog_option--endAdornment"},i.createElement("kbd",{className:"mx_SpotlightDialog_enterPrompt","aria-hidden":!0},"↵"),n))};function Qx({room:e,labelId:t,descriptionId:n,detailsId:s}){var o,r,a;let c=e.name||(0,Ur.iW)(null!==(o=e.canonical_alias)&&void 0!==o?o:"",null!==(r=e.aliases)&&void 0!==r?r:[])||(0,l._t)("common|unnamed_room");c.length>80&&(c=`${c.substring(0,80)}...`);let d=e.topic||"";return d.length>800&&(d=`${d.substring(0,800)}...`),i.createElement("div",{className:"mx_SpotlightDialog_result_publicRoomDetails"},i.createElement("div",{className:"mx_SpotlightDialog_result_publicRoomHeader"},i.createElement("span",{id:t,className:"mx_SpotlightDialog_result_publicRoomName"},c),i.createElement("span",{id:n,className:"mx_SpotlightDialog_result_publicRoomAlias"},null!==(a=e.canonical_alias)&&void 0!==a?a:e.room_id)),i.createElement("div",{id:s,className:"mx_SpotlightDialog_result_publicRoomDescription"},i.createElement("span",{className:"mx_SpotlightDialog_result_publicRoomMemberCount"},(0,l._t)("spotlight_dialog|count_of_members",{count:e.num_joined_members})),d&&i.createElement(i.Fragment,null," · ",i.createElement("span",{className:"mx_SpotlightDialog_result_publicRoomTopic",dangerouslySetInnerHTML:{__html:(0,vi.kz)(d)}}))))}var Zx=n("./src/components/views/context_menus/RoomGeneralContextMenu.tsx"),eR=n("./src/components/views/context_menus/RoomNotificationContextMenu.tsx"),tR=n("./src/components/views/rooms/RoomTile.tsx");function nR({room:e}){const[t]=(0,vd.I)(e),[n,s]=(0,i.useState)(null),[o,r]=(0,i.useState)(null);let a,c;null!==n&&(a=e.isSpaceRoom()?i.createElement(xa,(0,Wt.A)({},(0,tR._)(n),{space:e,onFinished:()=>s(null)})):i.createElement(Zx.e,(0,Wt.A)({},(0,tR._)(n),{room:e,onFinished:()=>s(null)}))),null!==o&&(c=i.createElement(eR.f,(0,Wt.A)({},(0,tR._)(o),{room:e,onFinished:()=>r(null)})));const d=Lt()("mx_SpotlightDialog_option--notifications",{mx_RoomNotificationContextMenu_iconBell:t===gd.dC.AllMessages,mx_RoomNotificationContextMenu_iconBellDot:t===gd.dC.AllMessagesLoud,mx_RoomNotificationContextMenu_iconBellMentions:t===gd.dC.MentionsOnly,mx_RoomNotificationContextMenu_iconBellCrossed:t===gd.dC.Mute});return i.createElement(i.Fragment,null,(0,wa.g)(gt.C.RoomOptionsMenu)&&i.createElement(pi.o,{className:"mx_SpotlightDialog_option--menu",onClick:e=>{e.preventDefault(),e.stopPropagation();const t=e.target;s(t.getBoundingClientRect())},title:e.isSpaceRoom()?(0,l._t)("space|context_menu|options"):(0,l._t)("room|context_menu|title"),isExpanded:null!==n}),!e.isSpaceRoom()&&i.createElement(pi.o,{className:d,onClick:e=>{e.preventDefault(),e.stopPropagation();const t=e.target;r(t.getBoundingClientRect())},title:(0,l._t)("room_list|notification_options"),isExpanded:null!==o}),a,c)}const iR=["inputRef","className"],sR=e=>{let{inputRef:t,className:n}=e,s=(0,g.A)(e,iR);const[o,r,a]=(0,qn.A9)(t);return i.createElement(le.A,(0,Wt.A)({},s,{className:Lt()(n,"mx_SpotlightDialog_option"),onFocus:o,ref:a,tabIndex:-1,"aria-selected":r,role:"option"}))};var oR=n("./src/components/views/dialogs/spotlight/Filter.ts");const rR=50,aR="24px";function lR(e){var t;return!0===(null==e||null===(t=e.id)||void 0===t?void 0:t.startsWith("mx_SpotlightDialog_button_recentlyViewed_"))}function cR(e){const t=new Set;return e===oR.d.PublicRooms&&t.add(null),e===oR.d.PublicSpaces&&t.add(o.RoomType.Space),t}var dR=function(e){return e[e.People=0]="People",e[e.Rooms=1]="Rooms",e[e.Spaces=2]="Spaces",e[e.Suggestions=3]="Suggestions",e[e.PublicRoomsAndSpaces=4]="PublicRoomsAndSpaces",e}(dR||{});function mR(e){switch(e){case oR.d.People:return(0,l._t)("common|people");case oR.d.PublicRooms:return(0,l._t)("spotlight_dialog|public_rooms_label");case oR.d.PublicSpaces:return(0,l._t)("spotlight_dialog|public_spaces_label")}}const uR=e=>!(null==e||!e.room),hR=e=>!(null==e||!e.publicRoom),pR=e=>!(null==e||!e.member),gR=e=>{var t,n,i,s,o;return{publicRoom:e,section:dR.PublicRoomsAndSpaces,filter:[oR.d.PublicRooms,oR.d.PublicSpaces],query:(0,se.Bo)([e.room_id.toLowerCase(),null===(t=e.canonical_alias)||void 0===t?void 0:t.toLowerCase(),null===(n=e.name)||void 0===n?void 0:n.toLowerCase(),Fr()(null!==(i=null===(s=e.topic)||void 0===s?void 0:s.toLowerCase())&&void 0!==i?i:"",{allowedTags:[]}),...(null===(o=e.aliases)||void 0===o?void 0:o.map(e=>e.toLowerCase()))||[]])}},vR=e=>{const t=v.J.safeGet().getUserId();if(x.A.shared().getUserIdForRoomId(e.roomId)){const n=e.getMembers().filter(e=>e.userId!==t),i=[...n.map(e=>e.name.toLowerCase()),...n.map(e=>e.userId.toLowerCase())].filter(Boolean);return{room:e,section:dR.People,filter:[oR.d.People],query:i}}return e.isSpaceRoom()?{room:e,section:dR.Spaces,filter:[]}:{room:e,section:dR.Rooms,filter:[]}},_R=(e,t)=>({alreadyFiltered:t,member:e,section:dR.Suggestions,filter:[oR.d.People],query:[e.userId.toLowerCase(),e.name.toLowerCase()].filter(Boolean)}),fR=new Is.V7,ER=(e,t)=>t.hasMentions?(0,l._t)("a11y|n_unread_messages_mentions",{count:t.count}):t.hasUnreadCount?(0,l._t)("a11y|n_unread_messages",{count:t.count}):t.isUnread?(0,l._t)("a11y|unread_messages"):void 0,yR=e=>D.A.getValue("feature_ask_to_join")&&o.JoinRule.Knock===e,bR=({initialText:e="",initialFilter:t=null,onFinished:n})=>{var s;const r=(0,i.useRef)(null),a=(0,i.useRef)(null),c=v.J.safeGet(),d=(0,i.useContext)(qn.ui),[m,u]=(0,i.useState)(e),[h,p]=(()=>{const[e,t]=(0,i.useState)(()=>{const e=v.J.safeGet(),t=D.A.getValue("SpotlightSearch.recentSearches",null);return(0,se.Bo)(t.map(t=>e.getRoom(t)))});return[e,()=>{D.A.setValue("SpotlightSearch.recentSearches",null,O.p.ACCOUNT,[]),t([])}]})(),[g,_]=(0,i.useState)(t),f=(0,i.useCallback)(e=>{var t,n,i;_(e),null===(t=r.current)||void 0===t||t.focus(),null===(n=a.current)||void 0===n||null===(i=n.scrollTo)||void 0===i||i.call(n,{top:0})},[]),E=(0,i.useMemo)(()=>{const e=(0,Fx.nf)(c),t=(0,Fx._5)(c);return(0,Fx.j2)(e,t)},[c]),y=(0,Vt.ny)("feature_dynamic_room_predecessors"),b=(0,Gt.Ne)(c.getUserId()),[w,A]=(0,i.useState)(!1),C=(0,i.useMemo)(()=>m.trim(),[m]),[R,k]=(0,i.useState)(!0);(0,i.useEffect)(()=>{c.isVersionSupported("v1.4").then(e=>e||c.doesServerSupportUnstableFeature("org.matrix.msc3827.stable")).then(e=>{k(e)})},[c]);const{loading:I,publicRooms:T,protocols:P,config:N,setConfig:M,search:F,error:L}=Ox(),{loading:U,users:V,search:B}=(()=>{const[e,t]=(0,i.useState)([]),[n,s]=(0,i.useState)(!1),[o,r]=kx(t);return{ready:!0,loading:n,users:e,search:(0,i.useCallback)(async({limit:e=20,query:n})=>{const i={limit:e,term:n};if(o(i),null==n||!n.length)return t([]),!0;try{s(!0);const{results:e}=await v.J.safeGet().searchUserDirectory(i);return r(i,e.map(e=>new Tf.qv(e))),!0}catch(t){return console.error("Could not fetch user in user directory for params",{limit:e,term:n},t),r(i,[]),!1}finally{s(!1)}},[o,r])}})(),{loading:W,profile:z,search:K}=(()=>{const[e,t]=(0,i.useState)(null),[n,s]=(0,i.useState)(!1),[o,r]=kx(t);return{ready:!0,loading:n,profile:e,search:(0,i.useCallback)(async({query:e})=>{if(o(e),null==e||!e.length||!e.startsWith("@")||!e.includes(":"))return t(null),!0;s(!0);try{const t=await v.J.safeGet().getProfileInfo(e);return r(e,{user_id:e,avatar_url:t.avatar_url,display_name:t.displayname}),!0}catch(t){return console.error("Could not fetch profile info for params",{term:e},t),r(e,null),!1}finally{s(!1)}},[o,r])}})(),G=(0,i.useMemo)(()=>[{query:C,roomTypes:cR(g),limit:rR}],[C,g]);Rx(g===oR.d.PublicRooms||g===oR.d.PublicSpaces,F,G),Rx(g===oR.d.People,B,G),Rx(g===oR.d.People,K,G);const J=(0,i.useMemo)(()=>{const e=((e,t)=>e.getVisibleRooms(t).filter(e=>!(0,os.F)(e)&&(e.getMyMembership()===X.O.Join||e.getMyMembership()==X.O.Invite)))(c,y),t=e.map(vR),n=[],s=t.reduce((e,t)=>{const n=x.A.shared().getUserIdForRoomId(t.room.roomId);return n?(t.room.getJoinedMemberCount()>2||e.set(n,t),e):e},new Map);function o(e,t){for(const i of e){if(s.has(i.userId)){const e=s.get(i.userId);t&&pR(e)&&!e.alreadyFiltered&&(e.alreadyFiltered=!0);continue}const e=_R(i,t);s.set(i.userId,e),n.push(e)}}return o(((e,t,n=!0)=>Object.values(e.filter(e=>!n||!x.A.shared().getUserIdForRoomId(e.roomId)).reduce((e,t)=>{for(const n of t.getJoinedMembers())e[n.userId]=n;return e},{})).filter(e=>e.userId!==t.getUserId()))(e,c),!1),o(V,!0),z&&o([new Tf.qv(z)],!0),[...Ms.Ay.instance.enabledMetaSpaces.map(e=>({section:dR.Spaces,filter:[],avatar:i.createElement("div",{className:Lt()("mx_SpotlightDialog_metaspaceResult",`mx_SpotlightDialog_metaspaceResult_${e}`)}),name:(0,ya.Ff)(e,Ms.Ay.instance.allRoomsInHome),onClick(){Ms.Ay.instance.setActiveSpace(e)}})),...t,...n,...T.map(gR)].filter(e=>null===g||e.filter.includes(g))},[c,V,z,T,g,y]),$=(0,i.useMemo)(()=>{const e={[dR.People]:[],[dR.Rooms]:[],[dR.Spaces]:[],[dR.Suggestions]:[],[dR.PublicRoomsAndSpaces]:[]};if(C){const t=C.toLowerCase(),n=(0,Kr.S8)(C);J.forEach(i=>{if(uR(i)){const e=x.A.shared().getUserIdForRoomId(i.room.roomId);var s,o,r;if(!V.some(t=>t.userId===e))if(!(null!==(s=i.room.normalizedName)&&void 0!==s&&s.includes(n)||null!==(o=i.room.getCanonicalAlias())&&void 0!==o&&o.toLowerCase().includes(t)||null!==(r=i.query)&&void 0!==r&&r.some(e=>e.includes(t))))return}else if(pR(i)){var a;if(!(i.alreadyFiltered||null!==(a=i.query)&&void 0!==a&&a.some(e=>e.includes(t))))return}else if(hR(i)){var l;if(null===(l=i.query)||void 0===l||!l.some(e=>e.includes(t)))return}else{var c;if(!(i.name.toLowerCase().includes(t)||null!==(c=i.query)&&void 0!==c&&c.some(e=>e.includes(t))))return}e[i.section].push(i)})}else g===oR.d.PublicRooms||g===oR.d.PublicSpaces?J.forEach(t=>{hR(t)&&e[t.section].push(t)}):g===oR.d.People&&J.forEach(t=>{pR(t)&&e[t.section].push(t)});const t=c.getSafeUserId();for(const n of Object.values(e))n.sort((e,n)=>uR(e)||uR(n)?uR(n)&&uR(e)?fR.getLastTs(n.room,t)-fR.getLastTs(e.room,t):-1:pR(e)||pR(n)?pR(n)&&pR(e)?E(e.member,n.member):-1:0);return e},[C,g,c,J,V,E]);((e,t,n)=>{(0,i.useEffect)(()=>{if(!t)return;const i=window.setTimeout(()=>{j.Vo.instance.trackEvent({eventName:"WebSearch",viaSpotlight:n,numResults:e,queryLength:t})},1e3);return()=>{clearTimeout(i)}},[e,t,n])})((0,Kt.sum)(Object.values($).map(e=>e.length)),m.length,!0);const q=Ms.Ay.instance.activeSpaceRoom,[Y,Z]=((e,t)=>{var n;const[s,r]=(0,i.useState)([]),[a,l]=(0,i.useState)(),c=(0,i.useCallback)(()=>{l(e?new af.B(e,50):void 0)},[e]);return(0,i.useEffect)(c,[c]),(0,i.useEffect)(()=>{if(!e||!a)return;let t=!1;return(async()=>{for(;null!=a&&a.canLoadMore&&!t&&e===a.root;)await a.load(),a.canLoadMore&&a.load(),r(a.rooms)})(),()=>{t=!0}},[e,a]),[(0,i.useMemo)(()=>{const e=t.trim(),n=e.toLowerCase(),i=(0,Kr.S8)(e),r=v.J.safeGet();return null==s?void 0:s.filter(e=>{var t;return e.room_type!==o.RoomType.Space&&(null===(t=r.getRoom(e.room_id))||void 0===t?void 0:t.getMyMembership())!==X.O.Join&&((0,Kr.S8)(e.name||"").includes(i)||(e.canonical_alias||"").includes(n))})},[s,t]),null!==(n=null==a?void 0:a.loading)&&void 0!==n&&n]})(null!=q?q:void 0,m);(0,i.useEffect)(()=>{setTimeout(()=>{const e=d.state.nodes[0];var t;e&&(d.dispatch({type:qn.ZU.SetFocus,payload:{node:e}}),null==e||null===(t=e.scrollIntoView)||void 0===t||t.call(e,{block:"nearest"}))})},[$,g]);const ee=(e,t=!1,i=!1)=>{if(t){const t=new Set(D.A.getValue("SpotlightSearch.recentSearches",null).reverse());t.delete(e.roomId),t.add(e.roomId),D.A.setValue("SpotlightSearch.recentSearches",null,O.p.ACCOUNT,Array.from(t).reverse().slice(0,10))}S.A.dispatch({action:H.r.ViewRoom,metricsTrigger:"WebUnifiedSearch",metricsViaKeyboard:i,room_id:e.roomId,room_alias:e.roomAlias,auto_join:e.autoJoin&&!yR(e.joinRule),should_peek:e.shouldPeek,via_servers:e.viaServers}),yR(e.joinRule)&&S.A.dispatch({action:H.r.PromptAskToJoin}),n()};let te,ne;if((C||g!==oR.d.PublicRooms&&g!==oR.d.PublicSpaces)&&(te=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_otherSearches",role:"group","aria-labelledby":"mx_SpotlightDialog_section_otherSearches"},i.createElement("h4",{id:"mx_SpotlightDialog_section_otherSearches"},C?(0,l._t)("spotlight_dialog|heading_with_query",{query:m}):(0,l._t)("spotlight_dialog|heading_without_query")),i.createElement("div",null,g!==oR.d.PublicSpaces&&R&&i.createElement(Xx,{id:"mx_SpotlightDialog_button_explorePublicSpaces",className:"mx_SpotlightDialog_explorePublicSpaces",onClick:()=>f(oR.d.PublicSpaces)},mR(oR.d.PublicSpaces)),g!==oR.d.PublicRooms&&i.createElement(Xx,{id:"mx_SpotlightDialog_button_explorePublicRooms",className:"mx_SpotlightDialog_explorePublicRooms",onClick:()=>f(oR.d.PublicRooms)},mR(oR.d.PublicRooms)),g!==oR.d.People&&i.createElement(Xx,{id:"mx_SpotlightDialog_button_startChat",className:"mx_SpotlightDialog_startChat",onClick:()=>f(oR.d.People)},mR(oR.d.People)),null===g&&i.createElement(Xx,{id:"mx_SpotlightDialog_button_searchMessages",className:"mx_SpotlightDialog_searchMessages",onClick:()=>{S.A.dispatch({action:H.r.FocusMessageSearch,initialText:C}),n()}},(0,l._t)("spotlight_dialog|messages_label"))))),C||null!==g){const e=e=>{var t;if(uR(e)){const t=Va.n.instance.getRoomState(e.room),n=ER(e.room,t),s={"aria-label":n?`${e.room.name} ${n}`:e.room.name,"aria-describedby":`mx_SpotlightDialog_button_result_${e.room.roomId}_details`};return i.createElement(Xx,(0,Wt.A)({id:`mx_SpotlightDialog_button_result_${e.room.roomId}`,key:`${dR[e.section]}-${e.room.roomId}`,onClick:t=>{ee({roomId:e.room.roomId},!0,"click"!==(null==t?void 0:t.type))},endAdornment:i.createElement(nR,{room:e.room})},s),i.createElement(ks.A,{room:e.room,size:aR,tooltipProps:{tabIndex:-1}}),e.room.name,i.createElement(An.A,{notification:t}),i.createElement(Ls,{id:`mx_SpotlightDialog_button_result_${e.room.roomId}_details`,className:"mx_SpotlightDialog_result_details",room:e.room}))}if(pR(e))return i.createElement(Xx,{id:`mx_SpotlightDialog_button_result_${e.member.userId}`,key:`${dR[e.section]}-${e.member.userId}`,onClick:()=>{(0,Tf.UZ)(c,[e.member]),n()},"aria-label":e.member instanceof o.RoomMember?e.member.rawDisplayName:e.member.name,"aria-describedby":`mx_SpotlightDialog_button_result_${e.member.userId}_details`},i.createElement(Lx.N,{user:e.member,size:aR}),e.member instanceof o.RoomMember?e.member.rawDisplayName:e.member.name,i.createElement("div",{id:`mx_SpotlightDialog_button_result_${e.member.userId}_details`,className:"mx_SpotlightDialog_result_details"},e.member.userId));if(hR(e)){const t=c.getRoom(e.publicRoom.room_id),n=e.publicRoom.join_rule,s=(null==t?void 0:t.getMyMembership())===X.O.Join||e.publicRoom.world_readable&&!yR(n)||c.isGuest(),o=t=>{var i;t.stopPropagation();const{publicRoom:s}=e;ee({roomAlias:s.canonical_alias||(null===(i=s.aliases)||void 0===i?void 0:i[0]),roomId:s.room_id,autoJoin:!e.publicRoom.world_readable&&!c.isGuest(),shouldPeek:e.publicRoom.world_readable||c.isGuest(),viaServers:N?[N.roomServer]:void 0,joinRule:n},!0,"click"!==t.type)};let r;return r=s?(0,l._t)("action|view"):yR(n)?(0,l._t)("action|ask_to_join"):(0,l._t)("action|join"),i.createElement(Xx,{id:`mx_SpotlightDialog_button_result_${e.publicRoom.room_id}`,className:"mx_SpotlightDialog_result_multiline",key:`${dR[e.section]}-${e.publicRoom.room_id}`,onClick:o,endAdornment:i.createElement(le.A,{kind:s?"primary_outline":"primary",onClick:o,tabIndex:-1},r),"aria-labelledby":`mx_SpotlightDialog_button_result_${e.publicRoom.room_id}_name`,"aria-describedby":`mx_SpotlightDialog_button_result_${e.publicRoom.room_id}_alias`,"aria-details":`mx_SpotlightDialog_button_result_${e.publicRoom.room_id}_details`},i.createElement(En.A,{className:"mx_SearchResultAvatar",oobData:{roomId:e.publicRoom.room_id,name:e.publicRoom.name,avatarUrl:e.publicRoom.avatar_url,roomType:e.publicRoom.room_type},size:aR}),i.createElement(Qx,{room:e.publicRoom,labelId:`mx_SpotlightDialog_button_result_${e.publicRoom.room_id}_name`,descriptionId:`mx_SpotlightDialog_button_result_${e.publicRoom.room_id}_alias`,detailsId:`mx_SpotlightDialog_button_result_${e.publicRoom.room_id}_details`}))}return i.createElement(Xx,{id:`mx_SpotlightDialog_button_result_${e.name}`,key:`${dR[e.section]}-${e.name}`,onClick:null!==(t=e.onClick)&&void 0!==t?t:null},e.avatar,e.name,e.description)};let t,s,r,a,d,m,u,h,p;if($[dR.People].length&&(t=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_results",role:"group","aria-labelledby":"mx_SpotlightDialog_section_people"},i.createElement("h4",{id:"mx_SpotlightDialog_section_people"},(0,l._t)("invite|recents_section")),i.createElement("div",null,$[dR.People].slice(0,rR).map(e)))),$[dR.Suggestions].length&&g===oR.d.People&&(s=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_results",role:"group","aria-labelledby":"mx_SpotlightDialog_section_suggestions"},i.createElement("h4",{id:"mx_SpotlightDialog_section_suggestions"},(0,l._t)("common|suggestions")),i.createElement("div",null,$[dR.Suggestions].slice(0,rR).map(e)))),$[dR.Rooms].length&&(r=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_results",role:"group","aria-labelledby":"mx_SpotlightDialog_section_rooms"},i.createElement("h4",{id:"mx_SpotlightDialog_section_rooms"},(0,l._t)("common|rooms")),i.createElement("div",null,$[dR.Rooms].slice(0,rR).map(e)))),$[dR.Spaces].length&&(a=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_results",role:"group","aria-labelledby":"mx_SpotlightDialog_section_spaces"},i.createElement("h4",{id:"mx_SpotlightDialog_section_spaces"},(0,l._t)("spotlight_dialog|spaces_title")),i.createElement("div",null,$[dR.Spaces].slice(0,rR).map(e)))),g===oR.d.PublicRooms||g===oR.d.PublicSpaces){let t;t=L?i.createElement("div",{className:"mx_SpotlightDialog_otherSearches_messageSearchText"},g===oR.d.PublicRooms?(0,l._t)("spotlight_dialog|failed_querying_public_rooms"):(0,l._t)("spotlight_dialog|failed_querying_public_spaces")):$[dR.PublicRoomsAndSpaces].slice(0,rR).map(e),d=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_results",role:"group","aria-labelledby":"mx_SpotlightDialog_section_publicRooms"},i.createElement("div",{className:"mx_SpotlightDialog_sectionHeader"},i.createElement("h4",{id:"mx_SpotlightDialog_section_publicRooms"},(0,l._t)("common|suggestions")),i.createElement("div",{className:"mx_SpotlightDialog_options"},i.createElement(qx,{protocols:P,config:null!=N?N:null,setConfig:M}))),i.createElement("div",null,t))}Y.length&&q&&null===g&&(m=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_results",role:"group","aria-labelledby":"mx_SpotlightDialog_section_spaceRooms"},i.createElement("h4",{id:"mx_SpotlightDialog_section_spaceRooms"},(0,l._t)("spotlight_dialog|other_rooms_in_space",{spaceName:q.name})),i.createElement("div",null,Y.slice(0,rR).map(e=>i.createElement(Xx,{id:`mx_SpotlightDialog_button_result_${e.room_id}`,key:e.room_id,onClick:t=>{ee({roomId:e.room_id},!0,"click"!==(null==t?void 0:t.type))}},i.createElement(vl.A,{name:e.name,idName:e.room_id,url:e.avatar_url?(0,gi.mediaFromMxc)(e.avatar_url).getSquareThumbnailHttp(parseInt(aR,10)):null,size:aR}),e.name||e.canonical_alias,e.name&&e.canonical_alias&&i.createElement("div",{className:"mx_SpotlightDialog_result_details"},e.canonical_alias))),Z&&i.createElement(ce.A,null)))),!C.startsWith("#")||!C.includes(":")||(0,sa.K)(C)&&c.getRoom((0,sa.K)(C).roomId)||(u=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_otherSearches",role:"group"},i.createElement("div",null,i.createElement(Xx,{id:"mx_SpotlightDialog_button_joinRoomAlias",className:"mx_SpotlightDialog_joinRoomAlias",onClick:e=>{S.A.dispatch({action:H.r.ViewRoom,room_alias:C,auto_join:!0,metricsTrigger:"WebUnifiedSearch",metricsViaKeyboard:"click"!==(null==e?void 0:e.type)}),n()}},(0,l._t)("spotlight_dialog|join_button_text",{roomAddress:C}))))),g===oR.d.People?h=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_hiddenResults",role:"group"},i.createElement("h4",null,(0,l._t)("spotlight_dialog|result_may_be_hidden_privacy_warning")),i.createElement("div",{className:"mx_SpotlightDialog_otherSearches_messageSearchText"},(0,l._t)("spotlight_dialog|cant_find_person_helpful_hint")),i.createElement(sR,{id:"mx_SpotlightDialog_button_inviteLink",className:"mx_SpotlightDialog_inviteLink",onClick:()=>{A(!0),(0,Si.nC)(b)},onTooltipOpenChange:e=>{e||A(!1)},title:w?(0,l._t)("common|copied"):(0,l._t)("action|copy")},i.createElement("span",{className:"mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline"},(0,l._t)("spotlight_dialog|copy_link_text")))):!C||g!==oR.d.PublicRooms&&g!==oR.d.PublicSpaces||(h=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_hiddenResults",role:"group"},i.createElement("h4",null,(0,l._t)("spotlight_dialog|result_may_be_hidden_warning")),i.createElement("div",{className:"mx_SpotlightDialog_otherSearches_messageSearchText"},(0,l._t)("spotlight_dialog|cant_find_room_helpful_hint")),i.createElement(Xx,{id:"mx_SpotlightDialog_button_createNewRoom",className:"mx_SpotlightDialog_createRoom",onClick:()=>S.A.dispatch({action:H.r.CreateRoom,public:!0,defaultName:(0,Kt.capitalize)(C)})},i.createElement("span",{className:"mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline"},(0,l._t)("spotlight_dialog|create_new_room_button"))))),g===oR.d.People&&(p=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_otherSearches",role:"group","aria-labelledby":"mx_SpotlightDialog_section_groupChat"},i.createElement("h4",{id:"mx_SpotlightDialog_section_groupChat"},(0,l._t)("spotlight_dialog|group_chat_section_title")),i.createElement(Xx,{id:"mx_SpotlightDialog_button_startGroupChat",className:"mx_SpotlightDialog_startGroupChat",onClick:()=>(0,Lr.xZ)(C)},(0,l._t)("spotlight_dialog|start_group_chat_button")))),ne=i.createElement(i.Fragment,null,t,s,r,a,m,d,u,h,te,p)}else{let e;h.length&&(e=i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_recentSearches",role:"group",tabIndex:-1,"aria-labelledby":"mx_SpotlightDialog_section_recentSearches"},i.createElement("h4",null,i.createElement("span",{id:"mx_SpotlightDialog_section_recentSearches"},(0,l._t)("spotlight_dialog|recent_searches_section_title")),i.createElement(le.A,{kind:"link",onClick:p},(0,l._t)("action|clear"))),i.createElement("div",null,h.map(e=>{const t=Va.n.instance.getRoomState(e),n=ER(0,t),s={"aria-label":n?`${e.name} ${n}`:e.name,"aria-describedby":`mx_SpotlightDialog_button_recentSearch_${e.roomId}_details`};return i.createElement(Xx,(0,Wt.A)({id:`mx_SpotlightDialog_button_recentSearch_${e.roomId}`,key:e.roomId,onClick:t=>{ee({roomId:e.roomId},!0,"click"!==(null==t?void 0:t.type))},endAdornment:i.createElement(nR,{room:e})},s),i.createElement(ks.A,{room:e,size:aR,tooltipProps:{tabIndex:-1}}),e.name,i.createElement(An.A,{notification:t}),i.createElement(Ls,{id:`mx_SpotlightDialog_button_recentSearch_${e.roomId}_details`,className:"mx_SpotlightDialog_result_details",room:e}))})))),ne=i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_SpotlightDialog_section mx_SpotlightDialog_recentlyViewed",role:"group","aria-labelledby":"mx_SpotlightDialog_section_recentlyViewed"},i.createElement("h4",{id:"mx_SpotlightDialog_section_recentlyViewed"},(0,l._t)("spotlight_dialog|recently_viewed_section_title")),i.createElement("div",null,ql.Y.instance.rooms.filter(e=>e.roomId!==Do.M.instance.roomViewStore.getRoomId()).map(e=>i.createElement(sR,{id:`mx_SpotlightDialog_button_recentlyViewed_${e.roomId}`,title:e.name,key:e.roomId,onClick:t=>{ee({roomId:e.roomId},!1,"click"!==t.type)}},i.createElement(ks.A,{room:e,size:"32px",tooltipProps:{tabIndex:-1}}),e.name)))),e,te)}const ie=null===(s=d.state.activeNode)||void 0===s?void 0:s.id;return i.createElement(i.Fragment,null,i.createElement("div",{id:"mx_SpotlightDialog_keyboardPrompt"},(0,l._t)("spotlight_dialog|keyboard_scroll_hint",{},{arrows:()=>i.createElement(i.Fragment,null,i.createElement("kbd",null,"↓"),i.createElement("kbd",null,"↑"),null!==!g&&!m&&i.createElement("kbd",null,"←"),null!==!g&&!m&&i.createElement("kbd",null,"→"))})),i.createElement(Q.A,{className:"mx_SpotlightDialog",onFinished:n,hasCancel:!1,onKeyDown:e=>{if((0,Us.zM)().getNavigationAction(e)===si.bY.FilterRooms)e.stopPropagation(),e.preventDefault(),n();let t;const i=(0,Us.zM)().getAccessibilityAction(e);switch(i){case si.bY.Escape:e.stopPropagation(),e.preventDefault(),n();break;case si.bY.ArrowUp:case si.bY.ArrowDown:if(e.stopPropagation(),e.preventDefault(),d.state.activeNode&&d.state.nodes.length>0){let e=d.state.nodes;if(!m&&null!==!g){const t=lR(d.state.activeNode)?d.state.activeNode:e.find(lR);e=e.filter(e=>e===t||!lR(e))}const n=e.indexOf(d.state.activeNode);t=(0,qn.Ed)(e,n+(i===si.bY.ArrowUp?-1:1))}break;case si.bY.ArrowLeft:case si.bY.ArrowRight:if(!m&&null!==!g&&d.state.activeNode&&d.state.nodes.length>0&&lR(d.state.activeNode)){e.stopPropagation(),e.preventDefault();const n=d.state.nodes.filter(lR),s=n.indexOf(d.state.activeNode);t=(0,qn.Ed)(n,s+(i===si.bY.ArrowLeft?-1:1))}}var s;t&&(d.dispatch({type:qn.ZU.SetFocus,payload:{node:t}}),null===(s=t)||void 0===s||s.scrollIntoView({block:"nearest"}))},screenName:"UnifiedSearch","aria-label":(0,l._t)("spotlight_dialog|search_dialog")},i.createElement("div",{className:"mx_SpotlightDialog_searchBox mx_textinput"},null!==g&&i.createElement("div",{className:Lt()("mx_SpotlightDialog_filter",{mx_SpotlightDialog_filterPeople:g===oR.d.People,mx_SpotlightDialog_filterPublicRooms:g===oR.d.PublicRooms,mx_SpotlightDialog_filterPublicSpaces:g===oR.d.PublicSpaces})},i.createElement("span",null,mR(g)),i.createElement(le.A,{tabIndex:-1,title:(0,l._t)("spotlight_dialog|remove_filter",{filter:mR(g)}),className:"mx_SpotlightDialog_filter--close",onClick:()=>f(null)})),i.createElement("input",{ref:r,autoFocus:!0,type:"text",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:"false",placeholder:(0,l._t)("action|search"),value:m,onChange:e=>{const t=function(e){var t;const n=(0,Gt.$N)(e);return null!==(t=null==n?void 0:n.primaryEntityId)&&void 0!==t?t:e}(e.currentTarget.value);u(t)},onKeyDown:e=>{var t;switch((0,Us.zM)().getAccessibilityAction(e)){case si.bY.Backspace:m||null===g||(e.stopPropagation(),e.preventDefault(),f(null));break;case si.bY.Enter:e.stopPropagation(),e.preventDefault(),null===(t=d.state.activeNode)||void 0===t||t.click()}},"aria-owns":"mx_SpotlightDialog_content","aria-activedescendant":ie,"aria-label":(0,l._t)("action|search"),"aria-describedby":"mx_SpotlightDialog_keyboardPrompt"}),(I||U||W)&&i.createElement(ce.A,{w:24,h:24})),i.createElement("div",{ref:a,id:"mx_SpotlightDialog_content",role:"listbox","aria-activedescendant":ie,"aria-describedby":"mx_SpotlightDialog_keyboardPrompt"},ne)))},wR=e=>i.createElement(qn.Se,null,()=>i.createElement(bR,e));var SR=n("./src/utils/dm/findDMForUser.ts"),AR=n("./src/utils/crypto/shouldForceDisableEncryption.ts");const CR=["children","className"];function xR(e){let{children:t,className:n}=e,s=(0,g.A)(e,CR);const o=Lt()(n,"mx_SplashPage");return i.createElement("main",(0,Wt.A)({},s,{className:o}),t)}function RR(){const e=c.Ay.get().brand;return i.createElement(xR,{className:"mx_SessionLockStolenView"},i.createElement("h1",null,(0,l._t)("error_app_open_in_another_tab_title",{brand:e})),i.createElement("h2",null,(0,l._t)("error_app_open_in_another_tab",{brand:e})))}function kR(e){const t=c.Ay.get().brand;return i.createElement("div",{className:"mx_ConfirmSessionLockTheftView"},i.createElement("div",{className:"mx_ConfirmSessionLockTheftView_body"},i.createElement("p",null,(0,l._t)("error_app_opened_in_another_window",{brand:t,label:(0,l._t)("action|continue")})),i.createElement(le.A,{kind:"primary",onClick:e.onConfirm},(0,l._t)("action|continue"))))}function IR(e){const t=(0,Fi.DY)(e.matrixClient,V.cr.LegacyCryptoStoreMigrationProgress,(e,t)=>({progress:null!=e?e:-1,totalSteps:null!=t?t:-1}));let n,s;return e.syncError&&(n=i.createElement("div",{className:"mx_LoginSplashView_syncError"},(0,Fo.cQ)(e.syncError))),s=-1!==t.totalSteps?i.createElement("div",{className:"mx_LoginSplashView_migrationProgress"},i.createElement("p",null,(0,l._t)("migrating_crypto",{brand:c.Ay.get().brand})),i.createElement(Eg.A,{value:t.progress,max:t.totalSteps})):i.createElement(ce.A,null),i.createElement("div",{className:"mx_MatrixChat_splash"},n,s,i.createElement("div",{className:"mx_LoginSplashView_splashButtons"},i.createElement(le.A,{kind:"link_inline",onClick:e.onLogoutClick},(0,l._t)("action|logout"))))}const TR="mx_draft_cleanup",PR=2592e6;function NR(){if(function(){try{const e=localStorage.getItem(TR);if(!e)return!0;const t=Number.parseInt(e||"",10);return!Number.isInteger(t)||Date.now()>t+PR}catch{return!0}}()){s.vF.debug("Cleaning up editor drafts..."),function(){for(let e=0;e<localStorage.length;e++){const t=localStorage.key(e);if(!t)continue;let n;if(t.startsWith(cg.hE)&&(n=t.slice(cg.hE.length).split("_$")[0]),t.startsWith(hg)&&(n=t.slice(17).split("_$")[0]),!n)continue;v.J.safeGet().getRoom(n)||(s.vF.debug(`Removing draft for unknown room with key ${t}`),localStorage.removeItem(t))}}();try{localStorage.setItem(TR,String(Date.now()))}catch(e){s.vF.error("Failed to persist draft cleanup key",e)}}}let MR=function(e){return e.Text="text",e.Html="html",e.Markdown="md",e}({});var DR=n("./src/Linkify.tsx");function OR(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 FR(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?OR(Object(n),!0).forEach(function(t){(0,w.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):OR(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const LR=["register","mobile_register","login","forgot_password","start_sso","start_cas","welcome"],UR=[H.r.ViewUserSettings,H.r.CreateChat,H.r.CreateRoom];class VR extends i.PureComponent{constructor(e){if(super(e),(0,w.A)(this,"firstSyncComplete",!1),(0,w.A)(this,"firstSyncPromise",void 0),(0,w.A)(this,"screenAfterLogin",void 0),(0,w.A)(this,"tokenLogin",void 0),(0,w.A)(this,"focusNext",void 0),(0,w.A)(this,"subTitleStatus",void 0),(0,w.A)(this,"prevWindowWidth",void 0),(0,w.A)(this,"loggedInView",(0,i.createRef)()),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"themeWatcher",void 0),(0,w.A)(this,"fontWatcher",void 0),(0,w.A)(this,"stores",void 0),(0,w.A)(this,"loadSessionAbortController",new AbortController),(0,w.A)(this,"sessionLoadStarted",!1),(0,w.A)(this,"startInitSession",()=>{this.initSession().catch(e=>{s.vF.error("Error initialising Matrix session",e)})}),(0,w.A)(this,"onWindowResized",()=>{this.warnInConsole()}),(0,w.A)(this,"warnInConsole",(0,Kt.throttle)(()=>{const e="15px",t=(0,l._t)("console_wait"),i=(0,l._t)("console_scam_warning"),s=(0,l._t)("console_dev_note");n.g.mx_rage_logger.bypassRageshake("log",`%c${t}\n%c${i}\n%c${s}`,"font-size:50px; color:blue;",`font-size:${e}; color:red;`,`font-size:${e};`)},1e3)),(0,w.A)(this,"onAction",e=>{var t;if(this.state.view!==xx.A.LOCK_STOLEN){if(null!==(t=v.J.get())&&void 0!==t&&t.isGuest()&&UR.includes(e.action))return S.A.dispatch({action:H.r.DoAfterSyncPrepared,deferred_action:e}),void S.A.dispatch({action:"require_registration"});switch(e.action){case"MatrixActions.accountData":if("m.identity_server"===e.event_type){const t=e.event_content?e.event_content.base_url:null;t?(v.J.safeGet().setIdentityServerUrl(t),localStorage.removeItem("mx_is_access_token"),localStorage.setItem("mx_is_url",t)):(v.J.safeGet().setIdentityServerUrl(void 0),localStorage.removeItem("mx_is_access_token"),localStorage.removeItem("mx_is_url")),S.A.dispatch({action:"id_server_changed"})}break;case"logout":Rt.Ay.instance.hangupAllCalls(),Promise.all([...[...V_.e.instance.connectedCalls].map(e=>e.disconnect())]).finally(()=>xr(this.stores.oidcClientStore));break;case"require_registration":!async function(e={}){const t=R.Ay.createDialog(Tt.A,{hasCancelButton:!0,quitOnly:!0,title:D.A.getValue(gt.f.Registration)?(0,l._t)("auth|sign_in_or_register"):(0,l._t)("action|sign_in"),description:D.A.getValue(gt.f.Registration)?(0,l._t)("auth|sign_in_or_register_description"):(0,l._t)("auth|sign_in_description"),button:(0,l._t)("action|sign_in"),extraButtons:D.A.getValue(gt.f.Registration)?[i.createElement("button",{key:"register",onClick:()=>{t.close(),S.A.dispatch({action:"start_registration",screenAfterLogin:e.screen_after})}},(0,l._t)("auth|register_action"))]:[]});t.finished.then(([t])=>{t?S.A.dispatch({action:"start_login",screenAfterLogin:e.screen_after}):e.go_home_on_cancel?S.A.dispatch({action:H.r.ViewHomePage}):e.go_welcome_on_cancel&&S.A.dispatch({action:"view_welcome_page"})})}(e);break;case"start_mobile_registration":this.startRegistration(e.params||{},!0);break;case"start_registration":if(kr()){this.onSoftLogout();break}e.screenAfterLogin&&(this.screenAfterLogin=e.screenAfterLogin),this.startRegistration(e.params||{});break;case"start_login":if(kr()){this.onSoftLogout();break}e.screenAfterLogin&&(this.screenAfterLogin=e.screenAfterLogin),this.viewLogin();break;case"start_password_recovery":this.setStateForNewView({view:xx.A.FORGOT_PASSWORD}),this.notifyNewScreen("forgot_password");break;case"start_chat":(0,Gs.Ay)(v.J.safeGet(),{dmUserId:e.user_id});break;case"leave_room":this.leaveRoom(e.room_id);break;case"forget_room":this.forgetRoom(e.room_id);break;case"copy_room":this.copyRoom(e.room_id);break;case"view_user_info":this.viewUser(e.userId,e.subAction);break;case"MatrixActions.RoomState.events":{const t=e.event;t.getType()===o.EventType.RoomCanonicalAlias&&t.getRoomId()===this.state.currentRoomId&&this.viewRoom({action:H.r.ViewRoom,room_id:this.state.currentRoomId,metricsTrigger:void 0});break}case H.r.ViewRoom:{const t=this.viewRoom(e);e.deferred_action&&t.then(()=>{S.A.dispatch(e.deferred_action)});break}case H.r.ViewUserDeviceSettings:S.A.dispatch({action:H.r.ViewUserSettings,initialTabId:Te.v.SessionManager});break;case H.r.ViewUserSettings:{const t=e;R.Ay.createDialog(yC,FR(FR({},e.props),{},{initialTabId:t.initialTabId,sdkContext:this.stores}),void 0,!1,!0),this.viewSomethingBehindModal();break}case H.r.CreateRoom:this.createRoom(e.public,e.defaultName,e.type),this.viewSomethingBehindModal();break;case H.r.ViewRoomDirectory:R.Ay.createDialog(wR,{initialText:e.initialText,initialFilter:oR.d.PublicRooms},"mx_SpotlightDialog_wrapper",!1,!0),this.viewSomethingBehindModal();break;case"view_welcome_page":this.viewWelcome();break;case H.r.ViewHomePage:this.viewHome(e.justRegistered);break;case H.r.Share:this.viewShare(e.format,e.msg);break;case H.r.ViewStartChatOrReuse:this.chatCreateOrReuse(e.user_id);break;case H.r.CreateChat:(0,Lr.xZ)(e.initialText||""),this.viewSomethingBehindModal();break;case"view_invite":{const t=v.J.safeGet().getRoom(e.roomId);null!=t&&t.isSpaceRoom()?(0,Mo.Lo)(t):(0,Lr._7)(e.roomId);break}case"view_last_screen":this.showScreenAfterLogin();break;case"hide_left_panel":this.setState({collapseLhs:!0},()=>{this.stores.resizeNotifier.notifyLeftHandleResized()});break;case"show_left_panel":this.setState({collapseLhs:!1},()=>{this.stores.resizeNotifier.notifyLeftHandleResized()});break;case H.r.OpenDialPad:R.Ay.createDialog(Sy,{},"mx_Dialog_dialPadWrapper");break;case H.r.OnLoggedIn:this.stores.client=v.J.safeGet(),this.tokenLogin||kr()||this.state.view===xx.A.LOGIN||this.state.view===xx.A.REGISTER||this.state.view===xx.A.COMPLETE_SECURITY||this.state.view===xx.A.E2E_SETUP||this.onLoggedIn();break;case"on_client_not_viable":this.onSoftLogout();break;case H.r.OnLoggedOut:this.onLoggedOut();break;case"will_start_client":this.setState({ready:!1},()=>{this.onWillStartClient()});break;case"client_started":this.onClientStarted().catch(e=>{s.vF.error("Exception in onClientStarted",e)});break;case"send_event":this.onSendEvent(e.room_id,e.event);break;case"aria_hide_main_app":this.setState({hideToSRUsers:!0});break;case"aria_unhide_main_app":this.setState({hideToSRUsers:!1});break;case H.r.PseudonymousAnalyticsAccept:by(),D.A.setValue("pseudonymousAnalyticsOptIn",null,O.p.ACCOUNT,!0);break;case H.r.PseudonymousAnalyticsReject:by(),D.A.setValue("pseudonymousAnalyticsOptIn",null,O.p.ACCOUNT,!1);break;case H.r.ShowThread:{const{rootEvent:t,initialEvent:n,highlighted:i,scrollIntoView:s,push:o}=e,r={phase:kl.n.ThreadView,state:{threadHeadEvent:t,initialEvent:n,isInitialEventHighlighted:i,initialEventScrollIntoView:s}};null!=o&&o?Rl.A.instance.pushCard(r):Rl.A.instance.setCards([{phase:kl.n.ThreadPanel},r]),S.A.dispatch({action:H.r.FocusSendMessageComposer,context:gn.Ae.Thread});break}case H.r.OpenSpotlight:R.Ay.createDialog(wR,{initialText:e.initialText,initialFilter:e.initialFilter},"mx_SpotlightDialog_wrapper",!1,!0)}}}),(0,w.A)(this,"handleResize",()=>{const e=1e3,t=ba.A.instance.windowWidth;this.prevWindowWidth<e&&t>=e&&S.A.dispatch({action:"show_left_panel"}),this.prevWindowWidth>=e&&t<e&&S.A.dispatch({action:"hide_left_panel"}),this.prevWindowWidth=t,this.stores.resizeNotifier.notifyWindowResized()}),(0,w.A)(this,"onRegisterClick",()=>{this.showScreen("register")}),(0,w.A)(this,"onLoginClick",()=>{this.showScreen("login")}),(0,w.A)(this,"onForgotPasswordClick",()=>{this.showScreen("forgot_password")}),(0,w.A)(this,"onRegisterFlowComplete",e=>this.onUserCompletedLoginFlow(e)),(0,w.A)(this,"onUpdateStatusIndicator",(e,t)=>{const n=e.numUnreadStates;a.A.get()&&(a.A.get().setErrorStatus(t===o.SyncState.Error),a.A.get().setNotificationCount(n)),this.subTitleStatus="",t===o.SyncState.Error&&(this.subTitleStatus+=`[${(0,l._t)("common|offline")}] `),n>0?this.subTitleStatus+=`[${n}]`:e.level>=Na.S.Activity&&(this.subTitleStatus+="*"),this.setPageSubtitle()}),(0,w.A)(this,"onServerConfigChange",e=>{this.setState({serverConfig:e})}),(0,w.A)(this,"onUserCompletedLoginFlow",async e=>{await yr(e),await this.postLoginSetup(),bx.instance.stop(yx.LOGIN),bx.instance.stop(yx.REGISTER)}),(0,w.A)(this,"onCompleteSecurityE2eSetupFinished",async()=>{if(await this.shouldForceVerification()){var e;if(!await(null===(e=v.J.safeGet().getCrypto())||void 0===e?void 0:e.isCrossSigningReady()))return}await this.onShowPostLoginScreen().catch(e=>{s.vF.error("Exception showing post-login screen",e)})}),this.stores=Do.M.instance,this.stores.constructEagerStores(),this.state={view:xx.A.LOADING,collapseLhs:!1,currentRoomId:null,currentUserId:null,hideToSRUsers:!1,isMobileRegistration:!1,syncError:null,ready:!1},c.Ay.put(this.props.config),this.firstSyncComplete=!1,this.firstSyncPromise=Promise.withResolvers(),this.props.config.sync_timeline_limit&&(v.J.opts.initialSyncLimit=this.props.config.sync_timeline_limit),this.screenAfterLogin=this.props.initialScreenAfterLogin,this.screenAfterLogin){const e=this.screenAfterLogin.params||{};if(this.screenAfterLogin.screen.startsWith("room/")&&e.signurl&&e.email){const t=this.screenAfterLogin.screen.substring(5);xt.instance.storeInvite(t,e)}}this.prevWindowWidth=ba.A.instance.windowWidth||1e3,this.subTitleStatus=""}async initSession(){var e,t,n;const i=a.A.get();if(i&&!await i.getSessionLock(()=>this.onSessionLockStolen()))return;if(kr())return void dr({abortSignal:this.loadSessionAbortController.signal});const s=await ur(this.props.realQueryParams,this.props.defaultDeviceDisplayName,this.getFragmentAfterLogin());if((null!==(e=this.props.realQueryParams)&&void 0!==e&&e.loginToken||null!==(t=this.props.realQueryParams)&&void 0!==t&&t.code||null!==(n=this.props.realQueryParams)&&void 0!==n&&n.state)&&this.props.onTokenLoginCompleted(),s)return this.tokenLogin=!0,await Er({ignoreGuest:!0}),void await this.postLoginSetup();const o=this.screenAfterLogin?this.screenAfterLogin.screen:null;await this.loadSession()||null!==o&&LR.includes(o)&&this.showScreenAfterLogin()}async onSessionLockStolen(){await new Promise(e=>{this.setState({view:xx.A.LOCK_STOLEN},e)}),await async function(){ar=!0,Nr()}()}async postLoginSetup(){const e=v.J.safeGet(),t=Boolean(e.getCrypto());t||this.onLoggedIn();const n=[this.firstSyncPromise.promise];let i=!1;if(t&&n.push((async t=>{i=Boolean(await(null===(t=e.getCrypto())||void 0===t?void 0:t.userHasCrossSigningKeys()))})()),this.setState({pendingInitialSync:!0}),await Promise.all(n),t){if(i){0==_.r.instance.extensions.cryptoSetup.SHOW_ENCRYPTION_SETUP_UI?this.onLoggedIn():this.setStateForNewView({view:xx.A.COMPLETE_SECURITY})}else await e.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing")&&!await(async e=>{const t=(0,AR.I)(e),n=e.getCrypto();return!n||t&&!await(0,se.qM)(e.getRooms(),({roomId:e})=>n.isEncryptionEnabledInRoom(e))})(e)?(JC.sharedInstance().startInitialCryptoSetup(e,this.onCompleteSecurityE2eSetupFinished),this.setStateForNewView({view:xx.A.E2E_SETUP})):this.onLoggedIn();this.setState({pendingInitialSync:!1})}else this.setState({pendingInitialSync:!1})}setState(e,t){this.shouldTrackPageChange(this.state,FR(FR({},this.state),e))&&this.startPageChangeTimer(),super.setState(e,t)}componentDidMount(){if(ba.A.instance.on(ba.x.Resize,this.handleResize),this.stores.resizeNotifier.on("middlePanelResized",this.dispatchTimelineResize),Va.n.instance.on(Va.N,this.onUpdateStatusIndicator),this.dispatcherRef=S.A.register(this.onAction),this.themeWatcher=new na.A,this.fontWatcher=new ia.g,this.themeWatcher.start(),this.themeWatcher.on(na.S.Change,$a.Yl),this.fontWatcher.start(),(0,Ot.ig)(c.Ay.get("sentry")),window.addEventListener("resize",this.onWindowResized),!this.sessionLoadStarted){this.sessionLoadStarted=!0;const e=a.A.get();e&&!e.checkSessionLockFree()?setTimeout(()=>this.setState({view:xx.A.CONFIRM_LOCK_THEFT}),0):this.startInitSession()}}componentDidUpdate(e,t){if(this.shouldTrackPageChange(t,this.state)){const e=this.stopPageChangeTimer();null!=e&&ri.A.instance.trackPageChange(this.state.view,this.state.page_type,e)}"composer"===this.focusNext?(S.A.fire(H.r.FocusSendMessageComposer),this.focusNext=void 0):"threadsPanel"===this.focusNext&&S.A.fire(H.r.FocusThreadsPanel)}componentWillUnmount(){var e,t,n;Nr(),S.A.unregister(this.dispatcherRef),null===(e=this.themeWatcher)||void 0===e||e.off(na.S.Change,$a.Yl),null===(t=this.themeWatcher)||void 0===t||t.stop(),null===(n=this.fontWatcher)||void 0===n||n.stop(),ba.A.destroy(),this.stores.resizeNotifier.removeListener("middlePanelResized",this.dispatchTimelineResize),window.removeEventListener("resize",this.onWindowResized)}getFallbackHsUrl(){var e;if(null!==(e=this.getServerProperties().serverConfig)&&void 0!==e&&e.isDefault)return this.props.config.fallback_hs_url}getServerProperties(){return{serverConfig:this.state.serverConfig||c.Ay.get("validated_server_config")}}loadSession(){return Promise.resolve().then(()=>dr({fragmentQueryParams:this.props.startingFragmentQueryParams,enableGuest:this.props.enableGuest,guestHsUrl:this.getServerProperties().serverConfig.hsUrl,guestIsUrl:this.getServerProperties().serverConfig.isUrl,defaultDeviceDisplayName:this.props.defaultDeviceDisplayName,abortSignal:this.loadSessionAbortController.signal})).then(e=>(e||(xt.instance.pickBestInvite()&&D.A.getValue(gt.f.Registration)?S.A.dispatch({action:"start_registration"}):S.A.dispatch({action:"view_welcome_page"})),e))}startPageChangeTimer(){bx.instance.start(yx.PAGE_CHANGE)}stopPageChangeTimer(){const e=bx.instance;e.stop(yx.PAGE_CHANGE);const t=e.getEntries({name:yx.PAGE_CHANGE}).pop();return t?t.duration:null}shouldTrackPageChange(e,t){return e.currentRoomId!==t.currentRoomId||e.view!==t.view||e.page_type!==t.page_type}setStateForNewView(e){if(void 0===e.view)throw new Error("setStateForNewView with no view!");this.setState(FR({currentUserId:void 0,justRegistered:!1},e))}setPage(e){this.setState({page_type:e})}async startRegistration(e,t){var n;if(!D.A.getValue(gt.f.Registration)||t&&!D.A.getValue("Registration.mobileRegistrationHelper"))return void this.showScreen("welcome");const i={view:xx.A.REGISTER};if(t&&e.hs_url)try{const t=await p.validateServerConfigWithStaticUrls(e.hs_url);i.serverConfig=t}catch{s.vF.warn("Failed to load hs_url param:",e.hs_url)}else if(e.client_secret&&e.session_id&&e.hs_url&&e.is_url&&e.sid){i.serverConfig=await p.validateServerConfigWithStaticUrls(e.hs_url,e.is_url);const t=c.Ay.get("validated_server_config");t&&t.hsUrl===i.serverConfig.hsUrl&&(i.serverConfig.hsName=t.hsName,i.serverConfig.hsNameIsDifferent=t.hsNameIsDifferent,i.serverConfig.isDefault=t.isDefault,i.serverConfig.isNameResolvable=t.isNameResolvable),i.register_client_secret=e.client_secret,i.register_session_id=e.session_id,i.register_id_sid=e.sid}i.isMobileRegistration=t,this.setStateForNewView(i),ea.A.isLogin=!0,null===(n=this.themeWatcher)||void 0===n||n.recheck(),this.notifyNewScreen(t?"mobile_register":"register")}async viewRoom(e){var t,n;this.focusNext=null!==(t=e.focusNext)&&void 0!==t?t:"composer",e.room_alias?s.vF.log(`Switching to room alias ${e.room_alias} at event ${e.event_id}`):s.vF.log(`Switching to room id ${e.room_id} at event ${e.event_id}`),this.firstSyncComplete||await this.firstSyncPromise.promise;let i=e.room_alias||e.room_id;const o=v.J.safeGet().getRoom(e.room_id);if(o){var r;o.decryptAllEvents();const e=Ur.zQ(o);e&&(i=e,(0,sa.i)(e,o.roomId,(0,Gt.Ex)(o))),null===(r=localStorage)||void 0===r||r.setItem("mx_last_room_id",o.roomId)}let a="#"===i[0]&&e.room_id===this.state.currentRoomId;var l,c,d,m;((0,os.F)(this.state.currentRoomId)&&(a=!0),e.room_id===this.state.currentRoomId)&&(e.threepid_invite=null!==(l=e.threepid_invite)&&void 0!==l?l:this.state.threepidInvite,e.oob_data=null!==(c=e.oob_data)&&void 0!==c?c:this.state.roomOobData,e.forceTimeline=null!==(d=e.forceTimeline)&&void 0!==d?d:this.state.forceTimeline,e.justCreatedOpts=null!==(m=e.justCreatedOpts)&&void 0!==m?m:this.state.roomJustCreatedOpts);e.event_id&&e.highlighted&&(i+="/"+e.event_id),this.setState({view:xx.A.LOGGED_IN,currentRoomId:null!==(n=e.room_id)&&void 0!==n?n:null,page_type:Zr.A.RoomView,threepidInvite:e.threepid_invite,roomOobData:e.oob_data,forceTimeline:e.forceTimeline,ready:!0,roomJustCreatedOpts:e.justCreatedOpts},()=>{var e;ea.A.isLogin=!1,null===(e=this.themeWatcher)||void 0===e||e.recheck(),this.notifyNewScreen("room/"+i,a)})}viewSomethingBehindModal(){this.state.view===xx.A.LOGGED_IN?this.state.currentRoomId||this.state.currentUserId||this.viewHome():this.viewWelcome()}viewWelcome(){var e;if(function(e){const t=new Mr.Q(e).get("embedded_pages");return!!t&&!0===new Mr.Q(t).get("login_for_welcome")}(c.Ay.get()))return this.viewLogin();this.setStateForNewView({view:xx.A.WELCOME}),this.notifyNewScreen("welcome"),ea.A.isLogin=!0,null===(e=this.themeWatcher)||void 0===e||e.recheck()}viewLogin(e){var t;this.setStateForNewView(FR({view:xx.A.LOGIN},e)),this.notifyNewScreen("login"),ea.A.isLogin=!0,null===(t=this.themeWatcher)||void 0===t||t.recheck()}viewHome(e=!1){var t;this.setStateForNewView({view:xx.A.LOGGED_IN,justRegistered:e,currentRoomId:null}),this.setPage(Zr.A.HomePage),this.notifyNewScreen("home"),ea.A.isLogin=!1,null===(t=this.themeWatcher)||void 0===t||t.recheck()}viewUser(e,t){this.firstSyncPromise.promise.then(()=>{"chat"!==t?(this.notifyNewScreen("user/"+e),this.setState({currentUserId:e}),this.setPage(Zr.A.UserView)):this.chatCreateOrReuse(e)})}viewShare(e,t){this.firstSyncPromise.promise.then(()=>{let n;switch(this.notifyNewScreen("share"),e){case MR.Html:n={type:"m.room.message",content:{msgtype:o.MsgType.Text,body:(0,vi.hk)(t),format:"org.matrix.custom.html",formatted_body:Fr()(t,DR.h4)},origin_server_ts:Date.now()};break;case MR.Markdown:{const e=new Js.A(t).toHTML({externalLinks:!0});n={type:"m.room.message",content:{msgtype:o.MsgType.Text,body:t,format:"org.matrix.custom.html",formatted_body:e},origin_server_ts:Date.now()};break}default:n={type:"m.room.message",content:{msgtype:o.MsgType.Text,body:t},origin_server_ts:Date.now()}}const i=new o.MatrixEvent(n);S.A.dispatch({action:H.r.OpenForwardDialog,event:i,permalinkCreator:null})})}async createRoom(e=!1,t,n){const i=R.Ay.createDialog(bC.A,{type:n,defaultPublic:e,defaultName:t}),[s,o]=await i.finished;s&&(0,Gs.Ay)(v.J.safeGet(),o)}chatCreateOrReuse(e){if(v.J.safeGet().isGuest())return void S.A.dispatch({action:H.r.DoAfterSyncPrepared,deferred_action:{action:H.r.ViewStartChatOrReuse,user_id:e}});const t=v.J.safeGet(),n=(0,SR.D)(t,e);n?S.A.dispatch({action:H.r.ViewRoom,room_id:n.roomId,metricsTrigger:"MessageUser"}):S.A.dispatch({action:"start_chat",user_id:e})}leaveRoomWarnings(e){const t=v.J.safeGet().getRoom(e),n=null==t?void 0:t.isSpaceRoom(),s=[];if(1===(null==t?void 0:t.currentState.getJoinedMemberCount()))return s.push(i.createElement("strong",{className:"warning",key:"only_member_warning"}," ",(0,l._t)("leave_room_dialog|last_person_warning"))),s;const o=null==t?void 0:t.currentState.getStateEvents("m.room.join_rules","");if(o){"public"!==o.getContent().join_rule&&s.push(i.createElement("strong",{className:"warning",key:"non_public_warning"}," ",n?(0,l._t)("leave_room_dialog|space_rejoin_warning"):(0,l._t)("leave_room_dialog|room_rejoin_warning")))}if(v.J.get()&&t&&(0,hc.GR)(t)){const e=t.getJoinedMembers().map(e=>e.powerLevel),n=Math.max(...e)>=100?(0,l._t)("leave_room_dialog|room_leave_admin_warning"):(0,l._t)("leave_room_dialog|room_leave_mod_warning");s.push(i.createElement("strong",{className:"warning",key:"last_admin_warning"}," ",n))}return s}leaveRoom(e){var t,n;const s=v.J.safeGet(),o=s.getRoom(e),r=this.leaveRoomWarnings(e),a=null==o?void 0:o.isSpaceRoom(),{finished:c}=R.Ay.createDialog(Tt.A,{title:a?(0,l._t)("space|leave_dialog_action"):(0,l._t)("action|leave_room"),description:i.createElement("span",null,a?(0,l._t)("leave_room_dialog|leave_space_question",{spaceName:null!==(t=null==o?void 0:o.name)&&void 0!==t?t:(0,l._t)("common|unnamed_space")}):(0,l._t)("leave_room_dialog|leave_room_question",{roomName:null!==(n=null==o?void 0:o.name)&&void 0!==n?n:(0,l._t)("common|unnamed_room")}),r),button:(0,l._t)("action|leave"),danger:r.length>0});c.then(async([t])=>{t&&(await(0,po.U)(s,e),S.A.dispatch({action:H.r.AfterLeaveRoom,room_id:e}))})}forgetRoom(e){const t=v.J.safeGet().getRoom(e);v.J.safeGet().forget(e).then(()=>{this.state.currentRoomId===e&&S.A.dispatch({action:H.r.ViewHomePage}),t&&(Yl.Ay.instance.manualRoomUpdate(t,pa.w4.RoomRemoved),S.A.dispatch({action:H.r.AfterForgetRoom,room:t}))}).catch(e=>{var t;const n=e.errcode||(0,l.AO)("error|unknown_error_code");R.Ay.createDialog(It.A,{title:(0,l._t)("error_dialog|forget_room_failed",{errCode:n}),description:null!==(t=null==e?void 0:e.message)&&void 0!==t?t:(0,l._t)("invite|failed_generic")})})}async copyRoom(e){const t=(0,Gt.B4)(v.J.safeGet(),e);await(0,Si.nC)(t)||R.Ay.createDialog(It.A,{title:(0,l._t)("error_dialog|copy_room_link_failed|title"),description:(0,l._t)("error_dialog|copy_room_link_failed|description")})}async shouldForceVerification(){if(!c.Ay.get("force_verification"))return!1;if(!localStorage.getItem("must_verify_device"))return!1;const e=v.J.safeGet();if(e.isGuest())return!1;const t=e.getCrypto();return!await(null==t?void 0:t.isCrossSigningReady())}async onLoggedIn(){var e;ea.A.isLogin=!1,null===(e=this.themeWatcher)||void 0===e||e.recheck(),N.ng(),await this.onShowPostLoginScreen()}async onShowPostLoginScreen(){var e;if(this.setStateForNewView({view:xx.A.LOGGED_IN}),null!==(e=this.screenAfterLogin)&&void 0!==e&&e.screen)this.showScreen(this.screenAfterLogin.screen,this.screenAfterLogin.params),this.screenAfterLogin=void 0;else if(v.J.currentUserIsJustRegistered())if(v.J.setJustRegisteredUserId(null),xt.instance.pickBestInvite()){const e=xt.instance.pickBestInvite(),t=xt.instance.translateToWireFormat(e);this.showScreen(`room/${e.roomId}`,t)}else S.A.dispatch({action:H.r.ViewHomePage,justRegistered:!0});else await this.shouldForceVerification()||this.showScreenAfterLogin();c.Ay.get("mobile_guide_toast")&&(()=>{const e=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,t=/Android/.test(navigator.userAgent),n=c.Ay.get().brand;(e||t)&&(document.cookie.includes("element_mobile_redirect_to_guide=false")||F.A.sharedInstance().addOrReplaceToast({key:xy,title:(0,l._t)("mobile_guide|toast_title"),props:{description:(0,l._t)("mobile_guide|toast_description",{brand:n}),primaryLabel:(0,l._t)("mobile_guide|toast_accept"),onPrimaryClick:Ay,secondaryLabel:(0,l._t)("action|dismiss"),onSecondaryClick:Cy},component:W.A,priority:99}))})();const t=c.Ay.get("user_notice");if(t){const e="user_notice_"+t.title;t.show_once&&localStorage.getItem(e)||F.A.sharedInstance().addOrReplaceToast({key:e,title:t.title,props:{description:i.createElement(vi.XZ,null,t.description),primaryLabel:(0,l._t)("action|ok"),onPrimaryClick:()=>{F.A.sharedInstance().dismissToast(e),localStorage.setItem(e,"1")}},component:W.A,className:"mx_AnalyticsToast",priority:100})}}initPosthogAnalyticsToast(){null===D.A.getValue("pseudonymousAnalyticsOptIn")&&yy(),D.A.watchSetting("pseudonymousAnalyticsOptIn",null,(e,t,n,i,s)=>{null===s?yy():by()})}showScreenAfterLogin(){this.screenAfterLogin&&this.screenAfterLogin.screen?(this.showScreen(this.screenAfterLogin.screen,this.screenAfterLogin.params),this.screenAfterLogin=void 0):localStorage&&localStorage.getItem("mx_last_room_id")?this.viewLastRoom():v.J.safeGet().isGuest()?S.A.dispatch({action:"view_welcome_page"}):S.A.dispatch({action:H.r.ViewHomePage})}viewLastRoom(){var e;S.A.dispatch({action:H.r.ViewRoom,room_id:null!==(e=localStorage.getItem("mx_last_room_id"))&&void 0!==e?e:void 0,metricsTrigger:void 0})}onLoggedOut(){this.viewLogin({ready:!1,collapseLhs:!1,currentRoomId:null}),this.subTitleStatus="",this.setPageSubtitle(),this.stores.onLoggedOut()}onSoftLogout(){this.notifyNewScreen("soft_logout"),this.setStateForNewView({view:xx.A.SOFT_LOGOUT,ready:!1,collapseLhs:!1,currentRoomId:null}),this.subTitleStatus="",this.setPageSubtitle()}onWillStartClient(){if(this.firstSyncComplete)this.firstSyncPromise=Promise.withResolvers();else{const e=Promise.withResolvers();this.firstSyncPromise.resolve(e.promise),this.firstSyncPromise=e}this.firstSyncComplete=!1;const e=v.J.safeGet();e.setCanResetTimelineCallback(e=>(s.vF.log("Request to reset timeline in room ",e," viewing:",this.state.currentRoomId),e!==this.state.currentRoomId||(!this.loggedInView.current||this.loggedInView.current.canResetTimelineInRoom(e)))),e.on(o.ClientEvent.Sync,(e,t,n)=>{var i;e===o.SyncState.Error||e===o.SyncState.Reconnecting?this.setState({syncError:null!==(i=null==n?void 0:n.error)&&void 0!==i?i:null}):this.state.syncError&&this.setState({syncError:null});e!==o.SyncState.Syncing||t!==o.SyncState.Syncing?(s.vF.debug(`MatrixClient sync state => ${e}`),e===o.SyncState.Prepared&&(this.firstSyncComplete=!0,this.firstSyncPromise.resolve(),y.default.shouldShowPrompt()&&!v.J.userRegisteredWithinLastHours(24)&&(0,nf.P)(!1),S.A.fire(H.r.FocusSendMessageComposer))):NR()}),e.on(o.HttpApiEvent.SessionLoggedOut,e=>{var t;if(this.loadSessionAbortController.abort(e),this.loadSessionAbortController=new AbortController,!Cr){if(R.Ay.forceCloseAllModals(),401===e.httpStatus&&null!==(t=e.data)&&void 0!==t&&t.soft_logout)return s.vF.warn("Soft logout issued by server - avoiding data deletion"),void Rr();S.A.dispatch({action:"logout"},!0),R.Ay.createDialog(It.A,{title:(0,l._t)("auth|session_logged_out_title"),description:(0,l._t)("auth|session_logged_out_description")})}}),e.on(o.HttpApiEvent.NoConsent,function(t,n){const{finished:s}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("terms|tac_title"),description:i.createElement("div",null,i.createElement("p",null," ",(0,l._t)("terms|tac_description",{homeserverDomain:e.getDomain()}))),button:(0,l._t)("terms|tac_button"),cancelButton:(0,l._t)("action|dismiss")},void 0,!0);s.then(([e])=>{if(e){window.open(n,"_blank").opener=null}})}),Ti.instance.start(e).catch(e=>s.vF.error("Unable to start DecryptionFailureTracker",e)),e.on(o.ClientEvent.Room,t=>{if(e.getCrypto()){const e=D.A.getValueAt(O.p.ROOM_DEVICE,"blacklistUnverifiedDevices",t.roomId,!0);t.setBlacklistUnverifiedDevices(e)}}),e.on(V.cr.KeyBackupFailed,async t=>{var o;let r,a=null;if(Boolean(e.getCrypto()&&null!==await(null===(o=e.getCrypto())||void 0===o?void 0:o.getActiveSessionBackupVersion())))r=!0;else try{var l,c;a=null!==(l=await(null===(c=e.getCrypto())||void 0===c?void 0:c.getKeyBackupInfo()))&&void 0!==l?l:null,null!==a&&(r=!0)}catch(e){return void s.vF.error("Saw key backup error but failed to check backup version!",e)}r?R.Ay.createDialog((0,i.lazy)(()=>n.e(234).then(n.bind(n,"./src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx")))):R.Ay.createDialog((0,i.lazy)(()=>n.e(6762).then(n.bind(n,"./src/async-components/views/dialogs/security/RecoveryMethodRemovedDialog.tsx"))))}),e.on(V.cr.VerificationRequestReceived,e=>{e.verifier?R.Ay.createDialog(CC,{verifier:e.verifier},void 0,!1,!0):e.pending&&F.A.sharedInstance().addOrReplaceToast({key:"verifreq_"+e.transactionId,title:(0,l._t)("encryption|verification_requested_toast_title"),icon:"verification",props:{request:e},component:Ex,priority:90})})}async onClientStarted(){const e=v.J.safeGet(),t=await this.shouldForceVerification();[xx.A.COMPLETE_SECURITY,xx.A.E2E_SETUP].includes(this.state.view)||t&&this.setStateForNewView({view:xx.A.COMPLETE_SECURITY});const n=e.getCrypto();if(n){const e=D.A.getValueAt(O.p.DEVICE,"blacklistUnverifiedDevices");n.globalBlacklistUnverifiedDevices=e}j.Vo.instance.isEnabled()&&D.A.isLevelSupported(O.p.ACCOUNT)&&this.initPosthogAnalyticsToast(),this.setState({ready:!0})}showScreen(e,t){const n=v.J.get();if(!n||n.isGuest()||!LR.includes(e))if("register"===e)S.A.dispatch({action:"start_registration",params:t}),bx.instance.start(yx.REGISTER);else if("mobile_register"===e)S.A.dispatch({action:"start_mobile_registration",params:t});else if("login"===e)S.A.dispatch({action:"start_login",params:t}),bx.instance.start(yx.LOGIN);else if("forgot_password"===e)S.A.dispatch({action:"start_password_recovery",params:t});else if("soft_logout"===e)null!=n&&n.getUserId()&&!kr()?this.viewLastRoom():S.A.dispatch({action:"start_login",params:t});else if("new"===e)S.A.dispatch({action:H.r.CreateRoom});else if("dm"===e)S.A.dispatch({action:H.r.CreateChat});else if("share"===e)t&&void 0!==t.msg&&S.A.dispatch({action:H.r.Share,msg:t.msg,format:t.format}),this.state.currentRoomId||this.state.currentUserId||this.viewHome();else if("settings"===e)S.A.fire(H.r.ViewUserSettings);else if("welcome"===e)S.A.dispatch({action:"view_welcome_page"});else if("home"===e)S.A.dispatch({action:H.r.ViewHomePage});else if("directory"===e)S.A.fire(H.r.ViewRoomDirectory);else if("start_sso"===e||"start_cas"===e){var i;let t=v.J.get();if(!t){const{hsUrl:e,isUrl:n}=this.getServerProperties().serverConfig;t=(0,o.createClient)({baseUrl:e,idBaseUrl:n})}const n="start_sso"===e?"sso":"cas";null===(i=a.A.get())||void 0===i||i.startSingleSignOn(t,n,this.getFragmentAfterLogin())}else if(0===e.indexOf("room/")){var r,l,c;const n=e.substring(5),i=n.indexOf(":")+1;let s=n.length;n.substring(i).indexOf("/")>-1&&(s=i+n.substring(i).indexOf("/"));const o=n.substring(0,s);let a,d=n.substring(s+1);if(d||(d=void 0),null!=t&&t.signurl&&null!=t&&t.email&&(a=xt.instance.storeInvite(o,t)),!a){a=xt.instance.getInvites().find(e=>e.roomId===o)}let m=[];null!=t&&t.via&&(m="string"==typeof t.via?[t.via]:t.via);const u={action:H.r.ViewRoom,event_id:d,via_servers:m,highlighted:Boolean(d),threepid_invite:a,oob_data:{name:null===(r=a)||void 0===r?void 0:r.roomName,avatarUrl:null===(l=a)||void 0===l?void 0:l.roomAvatarUrl,inviterName:null===(c=a)||void 0===c?void 0:c.inviterName},room_alias:void 0,room_id:void 0,metricsTrigger:void 0};"#"===o[0]?u.room_alias=o:u.room_id=o,S.A.dispatch(u)}else if(0===e.indexOf("user/")){const n=e.substring(5);S.A.dispatch({action:"view_user_info",userId:n,subAction:null==t?void 0:t.action})}else s.vF.info(`Ignoring showScreen for '${e}'`);else S.A.dispatch({action:H.r.ViewHomePage})}notifyNewScreen(e,t=!1){this.props.onNewScreen&&this.props.onNewScreen(e,t),this.setPageSubtitle()}onLogoutClick(e){S.A.dispatch({action:"logout"}),e.stopPropagation(),e.preventDefault()}dispatchTimelineResize(){S.A.dispatch({action:"timeline_resize"})}onRegistered(e){return yr(e)}onSendEvent(e,t){const n=v.J.get();n&&n.sendEvent(e,t.getType(),t.getContent()).then(()=>{S.A.dispatch({action:"message_sent"})})}setPageSubtitle(e=""){if(this.state.currentRoomId){const t=v.J.get(),n=null==t?void 0:t.getRoom(this.state.currentRoomId);n&&(e=`${this.subTitleStatus} | ${n.name} ${e}`)}else e=`${this.subTitleStatus} ${e}`;const t=`${c.Ay.get().brand} ${e}`;document.title!==t&&(document.title=t)}getFragmentAfterLogin(){let e="";const t=this.props.initialScreenAfterLogin;return t&&!["welcome","login","register","start_sso","start_cas"].includes(t.screen)&&(e=`/${t.screen}`),e}render(){const e=this.getFragmentAfterLogin();let t;if(this.state.view===xx.A.LOADING)t=i.createElement("div",{className:"mx_MatrixChat_splash"},i.createElement(ce.A,null));else if(this.state.view===xx.A.CONFIRM_LOCK_THEFT)t=i.createElement(kR,{onConfirm:()=>{this.setState({view:xx.A.LOADING}),this.startInitSession()}});else if(this.state.view===xx.A.COMPLETE_SECURITY)t=i.createElement(TC,{onFinished:this.onCompleteSecurityE2eSetupFinished});else if(this.state.view===xx.A.E2E_SETUP)t=i.createElement(qC,{onFinished:this.onCompleteSecurityE2eSetupFinished});else if(this.state.view===xx.A.LOGGED_IN)t=this.state.ready&&this.state.page_type?i.createElement(dy,(0,Wt.A)({},this.props,this.state,{ref:this.loggedInView,matrixClient:v.J.safeGet(),onRegistered:this.onRegistered,currentRoomId:this.state.currentRoomId})):i.createElement(IR,{matrixClient:v.J.safeGet(),onLogoutClick:this.onLogoutClick,syncError:this.state.syncError});else if(this.state.view===xx.A.WELCOME)t=i.createElement(DC,null);else if(this.state.view===xx.A.REGISTER&&D.A.getValue(gt.f.Registration)){var n;const s=null===(n=xt.instance.pickBestInvite())||void 0===n?void 0:n.toEmail;t=i.createElement(ax,(0,Wt.A)({clientSecret:this.state.register_client_secret,sessionId:this.state.register_session_id,idSid:this.state.register_id_sid,email:s,brand:this.props.config.brand,onLoggedIn:this.onRegisterFlowComplete,onLoginClick:this.onLoginClick,onServerConfigChange:this.onServerConfigChange,defaultDeviceDisplayName:this.props.defaultDeviceDisplayName,fragmentAfterLogin:e,mobileRegister:this.state.isMobileRegistration},this.getServerProperties()))}else if(this.state.view===xx.A.FORGOT_PASSWORD&&D.A.getValue(gt.f.PasswordReset))t=i.createElement(GC,(0,Wt.A)({onComplete:this.onLoginClick,onLoginClick:this.onLoginClick},this.getServerProperties()));else if(this.state.view===xx.A.LOGIN){var o;const n=D.A.getValue(gt.f.PasswordReset);t=i.createElement(_x,(0,Wt.A)({isSyncing:this.state.pendingInitialSync,onLoggedIn:this.onUserCompletedLoginFlow,onRegisterClick:this.onRegisterClick,fallbackHsUrl:this.getFallbackHsUrl(),defaultDeviceDisplayName:this.props.defaultDeviceDisplayName,onForgotPasswordClick:n?this.onForgotPasswordClick:void 0,onServerConfigChange:this.onServerConfigChange,fragmentAfterLogin:e,defaultUsername:null===(o=this.props.startingFragmentQueryParams)||void 0===o?void 0:o.defaultUsername},this.getServerProperties()))}else if(this.state.view===xx.A.SOFT_LOGOUT)t=i.createElement(Cx,{realQueryParams:this.props.realQueryParams,onTokenLoginCompleted:this.props.onTokenLoginCompleted,fragmentAfterLogin:e});else{if(this.state.view!==xx.A.LOCK_STOLEN)return s.vF.error(`Unknown view ${this.state.view}`),null;t=i.createElement(RR,null)}return i.createElement(du.A,null,i.createElement(Do.A.Provider,{value:this.stores},i.createElement(Dr.B,null,t)))}}(0,w.A)(VR,"displayName","MatrixChat"),(0,w.A)(VR,"defaultProps",{realQueryParams:{},startingFragmentQueryParams:{},config:{},onTokenLoginCompleted:()=>{}});var BR=n("./src/vector/url_utils.ts");let jR=null;function WR(e){const t=(0,BR._)(e);return{screen:t.location.substring(1),params:t.params}}function HR(){decodeURIComponent(window.location.hash)!==jR&&function(e){if(!window.matrixChat)return;s.vF.log("Routing URL ",e.href);const t=WR(e);window.matrixChat.showScreen(t.screen,t.params)}(window.location)}function zR(e,t=!1){s.vF.log("newscreen "+e);const n="#/"+e;jR=n,e.startsWith("room/")&&window.location.hash.includes("/$")===n.includes("/$")&&window.location.hash.startsWith(n)&&(t=!0),t?window.location.replace(n):window.location.assign(n)}const KR="mx_screen_after_login";function GR(e){const t=WR(e);(t.screen||t.params)&&function(e){null!=e&&e.screen&&sessionStorage.setItem(KR,JSON.stringify(e))}(t);const n=function(){const e=sessionStorage.getItem(KR);return e?JSON.parse(e):void 0}();return n}function JR(){const e=new URL(window.location.href);e.searchParams.delete("no_universal_links"),e.searchParams.delete("loginToken"),e.searchParams.delete("state"),e.searchParams.delete("code"),s.vF.log(`Redirecting to ${e.href} to drop delegated authentication params from queryparams`),window.history.replaceState(null,"",e.href)}async function $R(e,t){var n;window.addEventListener("hashchange",HR);const d=a.A.get(),m=(0,BR.u)(window.location),u=window.location.protocol+"//"+window.location.host+window.location.pathname;s.vF.log("Vector starting at "+u),null==d||d.startUpdater();const h=await async function(){let e;try{s.vF.log("Verifying homeserver configuration");const t=c.Ay.get();let n=t.default_server_config;const i=t.default_server_name,r=t.default_hs_url,a=t.default_is_url,d=[n,i,r].filter(e=>!!e);if(r&&(n||i))throw new l.P7("error|invalid_configuration_mixed_server");if(d.length<1)throw new l.P7("error|invalid_configuration_no_server");let m;r&&(s.vF.log("Config uses a default_hs_url - constructing a default_server_config using this information"),s.vF.warn("DEPRECATED CONFIG OPTION: In the future, default_hs_url will not be accepted. Please use default_server_config instead."),n={"m.homeserver":{base_url:r}},a&&(n["m.identity_server"]={base_url:a})),!i&&n&&(s.vF.log("Config uses a default_server_config - validating object"),m=await o.AutoDiscovery.fromDiscoveryConfig(n)),i&&(s.vF.log("Config uses a default_server_name - doing .well-known lookup"),s.vF.warn("DEPRECATED CONFIG OPTION: In the future, default_server_name will not be accepted. Please use default_server_config instead."),m=await o.AutoDiscovery.findClientConfig(i),null===m["m.homeserver"].base_url&&n&&(s.vF.log("Finding base_url failed but a default_server_config was found - using it as a fallback"),m=await o.AutoDiscovery.fromDiscoveryConfig(n))),e=await p.buildValidatedConfigFromDiscovery(i,m,!0)}catch(t){const{hsUrl:n,isUrl:i,userId:o}=await _r();if(!n||!o)throw t;s.vF.error(t),s.vF.warn("A session was found - suppressing config error and using the session's homeserver"),s.vF.log("Using pre-existing hsUrl and isUrl: ",{hsUrl:n,isUrl:i}),e=await p.validateServerConfigWithStaticUrls(n,i,!0)}return e.isDefault=!0,s.vF.log("Using homeserver config:",e),s.vF.log("Updating SdkConfig with validated discovery information"),c.Ay.add({validated_server_config:e}),c.Ay.get()}(),g=new Mr.Q(h),[v]=await mr(),f=!!v,E=!!m.loginToken,y=(0,c.Hy)(h);let b=!0===y.immediate;const w="#/welcome"===window.location.hash||"#"===window.location.hash||""===window.location.hash,S="#/login"===window.location.hash;if(!b&&y.on_welcome_page&&w&&(b=!0),!b&&y.on_login_page&&S&&(b=!0),!f&&!E&&b){s.vF.log("Bypassing app load to redirect to SSO");const e=(0,o.createClient)({baseUrl:h.validated_server_config.hsUrl,idBaseUrl:h.validated_server_config.isUrl});return a.A.get().startSingleSignOn(e,"sso",`/${WR(window.location).screen}`),i.createElement(i.Fragment,null)}const A=null!==(n=g.get("default_device_display_name"))&&void 0!==n?n:null==d?void 0:d.getDefaultDeviceDisplayName(),C=GR(window.location),x={Wrapper:i.Fragment};return _.r.instance.invoke(r.m.Wrapper,x),i.createElement(x.Wrapper,null,i.createElement(i.StrictMode,null,i.createElement(VR,{ref:t,onNewScreen:zR,config:h,realQueryParams:m,startingFragmentQueryParams:e,enableGuest:!h.disable_guests,onTokenLoginCompleted:JR,initialScreenAfterLogin:C,defaultDeviceDisplayName:A})))}s.vF.log("Application is running in production mode"),window.matrixLogger=s.vF},"?d4c0":()=>{}}]);
|
||
//# sourceMappingURL=element-web-app.js.map |