twiedenbein-thelounge
Version:
The self-hosted Web IRC client
1 lines β’ 311 kB
JavaScript
(()=>{var e,n={1191:(e,n,a)=>{var t={"./away.vue":5247,"./back.vue":9186,"./chghost.vue":649,"./ctcp.vue":4307,"./ctcp_request.vue":4526,"./error.vue":7705,"./invite.vue":2394,"./join.vue":4521,"./kick.vue":5110,"./mode.vue":4288,"./mode_channel.vue":1900,"./mode_user.vue":1243,"./monospace_block.vue":2027,"./nick.vue":6141,"./part.vue":1927,"./quit.vue":8082,"./raw.vue":839,"./topic.vue":9152,"./topic_set_by.vue":443,"./whois.vue":6010};function s(e){var n=o(e);return a(n)}function o(e){if(!a.o(t,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return t[e]}s.keys=function(){return Object.keys(t)},s.resolve=o,e.exports=s,s.id=1191},2806:(e,n,a)=>{"use strict";a.d(n,{A:()=>s});const t=new Map,s=new class{on(e,n){t.has(e)?t.get(e).push(n):t.set(e,[n])}off(e,n){t.has(e)&&t.set(e,t.get(e).filter((e=>e!==n)))}emit(e,...n){t.has(e)&&t.get(e).slice().map((e=>{e(...n)}))}}},3388:(e,n,a)=>{"use strict";a.d(n,{A:()=>s});const t=["Bytes","KiB","MiB","GiB","TiB","PiB"],s=e=>{const n=e>0?Math.floor(Math.log(e)/Math.log(1024)):0;return`${parseFloat((e/Math.pow(1024,n)).toFixed(1))} ${t[n]}`}},7321:(e,n,a)=>{"use strict";a.d(n,{A:()=>o});var t=a(4353),s=a.n(t);const o=e=>s()(e).format("D MMMM YYYY, HH:mm:ss")},9808:(e,n,a)=>{"use strict";a.d(n,{A:()=>t});const t={set(e,n){try{window.localStorage.setItem(e,n)}catch(e){}},get(e){try{return window.localStorage.getItem(e)}catch(e){return null}},remove(e){try{window.localStorage.removeItem(e)}catch(e){}},clear(){try{window.localStorage.clear()}catch(e){}}}},381:(e,n,a)=>{"use strict";a.d(n,{A:()=>t});const t=(0,a(9820).Ay)({transports:JSON.parse(document.body.dataset.transports||"['polling', 'websocket']"),path:window.location.pathname+"socket.io/",autoConnect:!1,reconnection:!document.body.classList.contains("public")})},211:(e,n,a)=>{"use strict";a.d(n,{Eb:()=>f,M_:()=>b,Pj:()=>w});var t=a(2124),s=a(9808),o=a(381);const i={apply(){},default:null,sync:null},r={syncSettings:{default:!0,sync:"never",apply(e,n,a=!1){n&&!a&&o.A.emit("setting:get")}},advanced:{default:!1},autocomplete:{default:!0},nickPostfix:{default:""},coloredNicks:{default:!0},desktopNotifications:{default:!1,sync:"never",apply(e,n){e.commit("refreshDesktopNotificationState",null,{root:!0}),"Notification"in window&&n&&"granted"!==Notification.permission&&Notification.requestPermission((()=>e.commit("refreshDesktopNotificationState",null,{root:!0}))).catch((e=>{console.error(e)}))}},highlights:{default:"",sync:"always"},highlightExceptions:{default:"",sync:"always"},awayMessage:{default:"",sync:"always"},links:{default:!0},motd:{default:!0},notification:{default:!0,sync:"never"},notifyAllMessages:{default:!1},showSeconds:{default:!1},use12hClock:{default:!1},statusMessages:{default:"condensed"},theme:{default:document.getElementById("theme")?.dataset.serverTheme,apply(e,n){const a=document.getElementById("theme"),t=`themes/${n}.css`;if(!(a instanceof HTMLLinkElement))throw new Error("theme element is not a link");const s=a.attributes.getNamedItem("href");if(!s)throw new Error("theme is missing href attribute");if(s.value===t)return;if(s.value=t,!e.state.serverConfiguration)return;const o=e.state.serverConfiguration?.themes.filter((e=>e.name===n))[0],i=document.querySelector('meta[name="theme-color"]');if(!(i instanceof HTMLMetaElement))throw new Error("theme meta element is not a meta element");if(i){const e=o.themeColor||i.content;i.content=e}}},media:{default:!0},uploadCanvas:{default:!0},userStyles:{default:"",apply(e,n){if(!/[?&]nocss/.test(window.location.search)){const e=document.getElementById("user-specified-css");e&&(e.innerHTML=n)}}},searchEnabled:{default:!1}},l=function(e){const n={};for(const a in e)n[a]={...i,...e[a]};return n}(r);function c(){const e={};for(const n in l)e[n]=l[n].default;return e}function u(){let e={};try{e=JSON.parse(s.A.get("settings")||"{}")}catch(e){s.A.remove("settings")}return e?(null!==e.highlights&&"object"==typeof e.highlights&&(e.highlights=e.highlights.join(", ")),e):{}}function d(e,n){const a={...e};for(const t in e)void 0!==n[t]&&typeof e[t]==typeof n[t]&&(a[t]=n[t]);return a}const p=document.title;var h;function m(){return"Notification"in window?Notification.permission===h.Granted?h.Granted:window.isSecureContext?h.Blocked:h.NoHttps:h.Unsupported}!function(e){e.Unsupported="unsupported",e.Blocked="blocked",e.NoHttps="nohttps",e.Granted="granted"}(h||(h={}));const g={findChannelOnCurrentNetwork:e=>n=>(n=n.toLowerCase(),e.activeChannel?.network.channels.find((e=>e.name.toLowerCase()===n))),findChannelOnNetwork:e=>(n,a)=>{for(const t of e.networks)if(t.uuid===n)for(const e of t.channels)if(e.name===a)return{network:t,channel:e};return null},findChannel:e=>n=>{for(const a of e.networks)for(const e of a.channels)if(e.id===n)return{network:a,channel:e};return null},findNetwork:e=>n=>{for(const a of e.networks)if(a.uuid===n)return a;return null},highlightCount(e){let n=0;for(const a of e.networks)for(const e of a.channels)e.muted||(n+=e.highlight);return n},title:(e,n)=>(n.highlightCount?`(${n.highlightCount.toString()}) `:"")+(e.activeChannel?`${e.activeChannel.channel.name} β `:"")+p},k={state:()=>({appLoaded:!1,activeChannel:void 0,currentUserVisibleError:null,desktopNotificationState:m(),isAutoCompleting:!1,isConnected:!1,networks:[],mentions:[],hasServiceWorker:!1,pushNotificationState:"unsupported",serverConfiguration:null,sessions:[],sidebarOpen:!1,sidebarDragging:!1,userlistOpen:"false"!==s.A.get("thelounge.state.userlist"),versionData:null,versionStatus:"loading",versionDataExpired:!1,serverHasSettings:!1,messageSearchResults:null,messageSearchPendingQuery:null,searchEnabled:!1}),mutations:{appLoaded(e){e.appLoaded=!0},activeChannel(e,n){e.activeChannel=n},currentUserVisibleError(e,n){e.currentUserVisibleError=n},refreshDesktopNotificationState(e){e.desktopNotificationState=m()},isAutoCompleting(e,n){e.isAutoCompleting=n},isConnected(e,n){e.isConnected=n},networks(e,n){e.networks=n},mentions(e,n){e.mentions=n},removeNetwork(e,n){e.networks.splice(e.networks.findIndex((e=>e.uuid===n)),1)},sortNetworks(e,n){e.networks.sort(n)},hasServiceWorker(e){e.hasServiceWorker=!0},pushNotificationState(e,n){e.pushNotificationState=n},serverConfiguration(e,n){e.serverConfiguration=n},sessions(e,n){e.sessions=n},sidebarOpen(e,n){e.sidebarOpen=n},sidebarDragging(e,n){e.sidebarDragging=n},toggleSidebar(e){e.sidebarOpen=!e.sidebarOpen},toggleUserlist(e){e.userlistOpen=!e.userlistOpen},userlistOpen(e,n){e.userlistOpen=n},versionData(e,n){e.versionData=n},versionStatus(e,n){e.versionStatus=n},versionDataExpired(e,n){e.versionDataExpired=n},serverHasSettings(e,n){e.serverHasSettings=n},messageSearchPendingQuery(e,n){e.messageSearchPendingQuery=n},messageSearchResults(e,n){e.messageSearchResults=n},addMessageSearchResults(e,n){if(e.messageSearchResults||(e.messageSearchResults={results:[]}),!n)return;const a=[...n.results,...e.messageSearchResults.results];e.messageSearchResults={results:a}}},actions:{partChannel({commit:e,state:n},a){e("mentions",n.mentions.filter((e=>!(e.chanId===a.channel.id))))}},getters:g},f=Symbol(),b=(0,t.y$)(k),v=function(e){return{namespaced:!0,state:d(c(),u()),mutations:{set(e,{name:n,value:a}){e[n]=a}},actions:{syncAll({state:n},a=!1){if(!1!==n.syncSettings||!1!==a){e.commit("serverHasSettings",!0);for(const e in n)"never"===l[e].sync&&"always"!==l[e].sync||o.A.emit("setting:set",{name:e,value:n[e]})}},applyAll({state:n}){for(const a in l)l[a].apply(e,n[a],!0)},update({state:n,commit:a},{name:t,value:i,sync:r=!1}){if(n[t]===i)return;const c=l[t];c&&(!1!==r||!1!==n.syncSettings&&"never"!==c.sync)&&(a("set",{name:t,value:i}),s.A.set("settings",JSON.stringify(n)),c.apply(e,i),r&&(n.syncSettings&&"never"!==c.sync||"always"===c.sync)&&o.A.emit("setting:set",{name:t,value:i}))}}}}(b);function w(){return(0,t.Pj)(f)}b.registerModule("settings",v)},3517:(e,n,a)=>{"use strict";const t={colorCodeMap:[["00","White"],["01","Black"],["02","Blue"],["03","Green"],["04","Red"],["05","Brown"],["06","Magenta"],["07","Orange"],["08","Yellow"],["09","Light Green"],["10","Cyan"],["11","Light Cyan"],["12","Light Blue"],["13","Pink"],["14","Grey"],["15","Light Grey"]],commands:[],timeFormats:{msgDefault:"HH:mm",msgWithSeconds:"HH:mm:ss",msg12h:"hh:mm A",msg12hWithSeconds:"hh:mm:ss A"},mobileViewportPixels:768};var s=a(7657),o=a(211),i=a(6931),r=a(33);const l=(0,i.Lk)("div",{id:"upload-overlay"},null,-1);var c=a(2806),u=a(6411),d=a.n(u),p=a(7350),h=a.n(p),m=a(9808);const g=e=>("TEXTAREA"===e.target.tagName||"INPUT"===e.target.tagName)&&!!e.target.value,k={id:"sidebar",ref:"sidebar"},f={class:"scrollable-area"},b={class:"logo-container"},v=["src"],w=["src"],y={key:0,title:"The Lounge has been built in development mode",style:{backgroundColor:"#ff9e18",color:"#000",padding:"2px",borderRadius:"4px",fontSize:"12px"}},_={id:"footer"},C={class:"tooltipped tooltipped-n tooltipped-no-touch","aria-label":"Connect to network"},L=["aria-selected","onClick","onKeypress"],E={class:"tooltipped tooltipped-n tooltipped-no-touch","aria-label":"Settings"},x=["aria-selected","onClick","onKeypress"],M=["aria-label"],S=["aria-selected","onClick","onKeypress"];var A=a(6043),j=a(6166);const X={key:0,class:"empty",role:"navigation","aria-label":"Network and Channel list"},T={key:1,ref:"networklist",role:"navigation","aria-label":"Network and Channel list"},P={class:"jump-to-input"},W=["value"],I={key:0,class:"jump-to-results"},R={key:0},O=["onMouseenter"],N={key:1,class:"no-results"},F=["id"];var U=a(246);const q={delay:{type:Number,default:0,required:!1},delayOnTouchOnly:{type:Boolean,default:!1,required:!1},touchStartThreshold:{type:Number,default:10,required:!1},handle:{type:String,default:"",required:!1},draggable:{type:String,default:"",required:!1},ghostClass:{type:String,default:"",required:!1},dragClass:{type:String,default:"",required:!1},group:{type:String,default:"",required:!1},class:{type:String,default:"",required:!1},itemKey:{type:String,default:"",required:!0},list:{type:Array,default:[],required:!0},filter:{type:String,default:"",required:!1}},K=(0,i.pM)({name:"Draggable",props:q,emits:["change","choose","unchoose"],setup(e,{emit:n}){const a=(0,A.KR)(null),t=(0,A.KR)(null);return(0,i.wB)(a,(a=>{a&&(t.value=new U.Ay(a,{...e,onChoose(e){n("choose",e)},onUnchoose(e){n("unchoose",e)},onEnd(e){n("change",e)}}))})),(0,i.xo)((()=>{t.value&&(t.value.destroy(),a.value=null)})),{containerRef:a}}});var D=a(6262);const B=(0,D.A)(K,[["render",function(e,n,a,t,s,o){return(0,i.uX)(),(0,i.CE)("div",{ref:"containerRef",class:(0,r.C4)(e.$props.class)},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.list,((n,a)=>(0,i.RG)(e.$slots,"item",{key:n[e.itemKey],element:n,index:a}))),128))],2)}]]);var Q=a(4751),$=a.n(Q);const H=["aria-controls","aria-label","aria-expanded"],z=[(0,i.Lk)("span",{class:"collapse-network-icon"},null,-1)],V={key:1,class:"collapse-network"},J={class:"lobby-wrap"},Y=["title"],G={key:0,class:"not-secure-tooltip tooltipped tooltipped-w","aria-label":"Insecure connection"},Z=[(0,i.Lk)("span",{class:"not-secure-icon"},null,-1)],ee={key:1,class:"not-connected-tooltip tooltipped tooltipped-w","aria-label":"Disconnected"},ne=[(0,i.Lk)("span",{class:"not-connected-icon"},null,-1)],ae=["aria-label"],te=["aria-controls","aria-label"],se=(e,n)=>{const a=m.A.get("thelounge.networks.collapsed"),t=a?new Set(JSON.parse(a)):new Set;e.isCollapsed=n,n?t.add(e.uuid):t.delete(e.uuid),m.A.set("thelounge.networks.collapsed",JSON.stringify([...t]))},oe=e=>e<1e3?e.toString():(e/1e3).toFixed(2).slice(0,-1)+"k",ie=["aria-label","title","data-name","data-type","aria-controls","aria-selected"],re=(e,n)=>!(!e.isCollapsed||n.highlight||"lobby"===n.type||o.M_.state.activeChannel&&n===o.M_.state.activeChannel.channel),le={id:"sign-in",class:"window",role:"tabpanel","aria-label":"Sign-in"},ce=(0,i.Lk)("img",{src:"img/logo-vertical-transparent-bg.svg",class:"logo",alt:"The Lounge",width:"256",height:"170"},null,-1),ue=(0,i.Lk)("img",{src:"img/logo-vertical-transparent-bg-inverted.svg",class:"logo-inverted",alt:"The Lounge",width:"256",height:"170"},null,-1),de=(0,i.Lk)("label",{for:"signin-username"},"Username",-1),pe={class:"password-container"},he=(0,i.Lk)("label",{for:"signin-password"},"Password",-1),me=["type"],ge={key:0,class:"error"},ke=["disabled"];var fe=a(381);const be=["aria-label"],ve=["aria-label"],we=(0,i.pM)({name:"RevealPassword",setup(){const e=(0,A.KR)(!1);return{isVisible:e,onClick:()=>{e.value=!e.value}}}}),ye=(0,D.A)(we,[["render",function(e,n,a,t,s,o){return(0,i.uX)(),(0,i.CE)("div",null,[(0,i.RG)(e.$slots,"default",{isVisible:e.isVisible}),(0,i.Lk)("span",{ref:"revealButton",type:"button",class:(0,r.C4)(["reveal-password tooltipped tooltipped-n tooltipped-no-delay",{"reveal-password-visible":e.isVisible}]),"aria-label":e.isVisible?"Hide password":"Show password",onClick:n[0]||(n[0]=(...n)=>e.onClick&&e.onClick(...n))},[(0,i.Lk)("span",{"aria-label":e.isVisible?"Hide password":"Show password"},null,8,ve)],10,be)])}]]),_e=(0,i.pM)({name:"SignIn",components:{RevealPassword:ye},setup(){const e=(0,A.KR)(!1),n=(0,A.KR)(!1),a=(0,A.KR)(m.A.get("user")||""),t=(0,A.KR)(""),s=()=>{e.value=!1,n.value=!0};return(0,i.sV)((()=>{fe.A.on("auth:failed",s)})),(0,i.xo)((()=>{fe.A.off("auth:failed",s)})),{inFlight:e,errorShown:n,username:a,password:t,onSubmit:s=>{if(s.preventDefault(),!a.value||!t.value)return;e.value=!0,n.value=!1;const o={user:a.value,password:t.value};m.A.set("user",o.user),fe.A.emit("auth:perform",o)}}}}),Ce=(0,D.A)(_e,[["render",function(e,n,a,t,o,r){const l=(0,i.g2)("RevealPassword");return(0,i.uX)(),(0,i.CE)("div",le,[(0,i.Lk)("form",{class:"container",method:"post",action:"",onSubmit:n[2]||(n[2]=(...n)=>e.onSubmit&&e.onSubmit(...n))},[ce,ue,de,(0,i.bo)((0,i.Lk)("input",{id:"signin-username","onUpdate:modelValue":n[0]||(n[0]=n=>e.username=n),class:"input",type:"text",name:"username",autocapitalize:"none",autocorrect:"off",autocomplete:"username",required:"",autofocus:""},null,512),[[s.Jo,e.username]]),(0,i.Lk)("div",pe,[he,(0,i.bF)(l,null,{default:(0,i.k6)((a=>[(0,i.bo)((0,i.Lk)("input",{id:"signin-password","onUpdate:modelValue":n[1]||(n[1]=n=>e.password=n),type:a.isVisible?"text":"password",class:"input",autocapitalize:"none",autocorrect:"off",autocomplete:"current-password",required:""},null,8,me),[[s.hp,e.password]])])),_:1})]),e.errorShown?((0,i.uX)(),(0,i.CE)("div",ge,"Authentication failed.")):(0,i.Q3)("",!0),(0,i.Lk)("button",{disabled:e.inFlight,type:"submit",class:"btn"},"Sign in",8,ke)],32)])}]]),Le={id:"connect",class:"window",role:"tabpanel","aria-label":"Connect"},Ee={class:"header"},xe={class:"title"},Me=(0,i.eW)(" Connect "),Se=(0,i.Lk)("h2",null,"Network settings",-1),Ae={class:"connect-row"},je=(0,i.Lk)("label",{for:"connect:name"},"Name",-1),Xe={class:"connect-row"},Te=(0,i.Lk)("label",{for:"connect:host"},"Server",-1),Pe={class:"input-wrap"},We=(0,i.Lk)("span",{id:"connect:portseparator"},":",-1),Ie={class:"connect-row"},Re=(0,i.Lk)("label",{for:"connect:password"},"Password",-1),Oe=["type"],Ne={class:"connect-row"},Fe=(0,i.Lk)("label",null,null,-1),Ue={class:"input-wrap"},qe={class:"tls"},Ke=["disabled"],De=(0,i.eW)(" Use secure connection (TLS) "),Be={key:0,class:"tooltipped tooltipped-n tooltipped-no-delay","aria-label":"This network has a strict transport security policy, you will be unable to disable TLS"},Qe={class:"tls"},$e=(0,i.eW)(" Only allow trusted certificates "),He={class:"tls"},ze=(0,i.eW)(" Autorejoin when kicked "),Ve=(0,i.Lk)("h2",null,"Proxy Settings",-1),Je={class:"connect-row"},Ye=(0,i.Lk)("label",null,null,-1),Ge={class:"input-wrap"},Ze={for:"connect:proxyEnabled"},en=(0,i.eW)(" Enable Proxy "),nn={class:"connect-row"},an=(0,i.Lk)("label",{for:"connect:proxyHost"},"SOCKS Address",-1),tn={class:"input-wrap"},sn=(0,i.Lk)("span",{id:"connect:proxyPortSeparator"},":",-1),on={class:"connect-row"},rn=(0,i.Lk)("label",{for:"connect:proxyUsername"},"Proxy username",-1),ln={class:"connect-row"},cn=(0,i.Lk)("label",{for:"connect:proxyPassword"},"Proxy password",-1),un=["type"],dn=(0,i.Lk)("h2",null,"Network settings",-1),pn={class:"connect-row"},hn=(0,i.Lk)("label",{for:"connect:name"},"Name",-1),mn={class:"connect-row"},gn=(0,i.Lk)("label",{for:"connect:password"},"Password",-1),kn=["type"],fn=(0,i.Lk)("h2",null,"User preferences",-1),bn={class:"connect-row"},vn=(0,i.Lk)("label",{for:"connect:nick"},"Nick",-1),wn={key:2,class:"connect-row"},yn=(0,i.Lk)("label",{for:"connect:username"},"Username",-1),_n={class:"connect-row"},Cn=(0,i.Lk)("label",{for:"connect:realname"},"Real name",-1),Ln={class:"connect-row"},En=(0,i.Lk)("label",{for:"connect:leaveMessage"},"Leave message",-1),xn={key:3,class:"connect-row"},Mn=(0,i.Lk)("label",{for:"connect:commands"},[(0,i.eW)(" Commands "),(0,i.Lk)("span",{class:"tooltipped tooltipped-ne tooltipped-no-delay","aria-label":"One /command per line.\nEach command will be executed in\nthe server tab on new connection"},[(0,i.Lk)("button",{class:"extra-help"})])],-1),Sn=["value"],An={key:4,class:"connect-row"},jn=(0,i.Lk)("label",{for:"connect:channels"},"Channels",-1),Xn={class:"connect-row"},Tn=(0,i.Lk)("label",null,null,-1),Pn={class:"input-wrap"},Wn={class:"tls"},In=(0,i.eW)(" I have a password "),Rn={key:0,class:"connect-row"},On=(0,i.Lk)("label",{for:"connect:password"},"Password",-1),Nn=["type"],Fn=(0,i.Lk)("h2",{id:"label-auth"},"Authentication",-1),Un={class:"connect-row connect-auth",role:"group","aria-labelledby":"label-auth"},qn={class:"opt"},Kn=["checked"],Dn=(0,i.eW)(" No authentication "),Bn={class:"opt"},Qn=["checked"],$n=(0,i.eW)(" Username + password (SASL PLAIN) "),Hn={key:0,class:"opt"},zn=["checked"],Vn=(0,i.eW)(" Client certificate (SASL EXTERNAL) "),Jn={class:"connect-row"},Yn=(0,i.Lk)("label",{for:"connect:username"},"Account",-1),Gn={class:"connect-row"},Zn=(0,i.Lk)("label",{for:"connect:password"},"Password",-1),ea=["type"],na={key:1,class:"connect-sasl-external"},aa=[(0,i.Lk)("p",null,"The Lounge automatically generates and manages the client certificate.",-1),(0,i.Lk)("p",null," On the IRC server, you will need to tell the services to attach the certificate fingerprint (certfp) to your account, for example: ",-1),(0,i.Lk)("pre",null,[(0,i.Lk)("code",null,"/msg NickServ CERT ADD")],-1)],ta=["disabled"],sa=(0,i.eW)("Save network"),oa=(0,i.eW)("Connect"),ia=(0,i.pM)({name:"SidebarToggle",setup:()=>({store:(0,o.Pj)()})}),ra=(0,D.A)(ia,[["render",function(e,n,a,t,s,o){return(0,i.uX)(),(0,i.CE)("button",{class:"lt","aria-label":"Toggle channel list",onClick:n[0]||(n[0]=n=>e.store.commit("toggleSidebar"))})}]]),la=(0,i.pM)({name:"NetworkForm",components:{RevealPassword:ye,SidebarToggle:ra},props:{handleSubmit:{type:Function,required:!0},defaults:{type:Object,required:!0},disabled:Boolean},setup(e){const n=(0,o.Pj)(),a=(0,A.KR)(n.state.serverConfiguration),t=(0,A.KR)(e.defaults?.username),s=(0,A.KR)(!1),r=(0,A.KR)(null);(0,i.wB)(s,(e=>{e&&(0,i.dY)((()=>{r.value?.focus()}))}));const l=(0,A.KR)(null),c=()=>{l.value&&(l.value.style.height="",l.value.style.height=`${Math.ceil(l.value.scrollHeight+2)}px`)};(0,i.wB)((()=>e.defaults?.commands),(()=>{(0,i.dY)((()=>{c()}))})),(0,i.wB)((()=>e.defaults?.tls),(n=>{const a=[6667,6697],t=n?0:1;e.defaults?.port===a[t]&&(e.defaults.port=a[1-t])}));const u=(0,A.KR)(null);return{store:n,config:a,displayPasswordField:s,publicPassword:r,commandsInput:l,resizeCommandsInput:c,setSaslAuth:n=>{e.defaults&&(e.defaults.sasl=n)},usernameInput:u,onNickChanged:e=>{if(!u.value)return;const n=u.value;n.value&&n.value!==t.value||(n.value=e.target?.value),t.value=e.target?.value},onSubmit:n=>{const a=new FormData(n.target),t={};a.forEach(((e,n)=>{t[n]=e})),e.handleSubmit(t)}}}}),ca=(0,D.A)(la,[["render",function(e,n,a,t,o,l){const c=(0,i.g2)("SidebarToggle"),u=(0,i.g2)("RevealPassword");return(0,i.uX)(),(0,i.CE)("div",Le,[(0,i.Lk)("div",Ee,[(0,i.bF)(c)]),(0,i.Lk)("form",{class:"container",method:"post",action:"",onSubmit:n[29]||(n[29]=(0,s.D$)(((...n)=>e.onSubmit&&e.onSubmit(...n)),["prevent"]))},[(0,i.Lk)("h1",xe,[e.defaults.uuid?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":n[0]||(n[0]=n=>e.defaults.uuid=n),type:"hidden",name:"uuid"},null,512),[[s.Jo,e.defaults.uuid]]),(0,i.eW)(" Edit "+(0,r.v_)(e.defaults.name),1)],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[Me,e.config?.lockNetwork&&e.store?.state.serverConfiguration?.public?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.eW)(" to "+(0,r.v_)(e.defaults.name),1)],64)):(0,i.Q3)("",!0)],64))]),e.config?.lockNetwork?e.config.lockNetwork&&!e.store.state.serverConfiguration?.public?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[dn,(0,i.Lk)("div",pn,[hn,(0,i.bo)((0,i.Lk)("input",{id:"connect:name","onUpdate:modelValue":n[13]||(n[13]=n=>e.defaults.name=n),class:"input",name:"name",maxlength:"100"},null,512),[[s.Jo,e.defaults.name,void 0,{trim:!0}]])]),(0,i.Lk)("div",mn,[gn,(0,i.bF)(u,{class:"input-wrap password-container"},{default:(0,i.k6)((a=>[(0,i.bo)((0,i.Lk)("input",{id:"connect:password","onUpdate:modelValue":n[14]||(n[14]=n=>e.defaults.password=n),class:"input",type:a.isVisible?"text":"password",placeholder:"Server password (optional)",name:"password",maxlength:"300"},null,8,kn),[[s.hp,e.defaults.password]])])),_:1})])],64)):(0,i.Q3)("",!0):((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[Se,(0,i.Lk)("div",Ae,[je,(0,i.bo)((0,i.Lk)("input",{id:"connect:name","onUpdate:modelValue":n[1]||(n[1]=n=>e.defaults.name=n),class:"input",name:"name",maxlength:"100"},null,512),[[s.Jo,e.defaults.name,void 0,{trim:!0}]])]),(0,i.Lk)("div",Xe,[Te,(0,i.Lk)("div",Pe,[(0,i.bo)((0,i.Lk)("input",{id:"connect:host","onUpdate:modelValue":n[2]||(n[2]=n=>e.defaults.host=n),class:"input",name:"host","aria-label":"Server address",maxlength:"255",required:""},null,512),[[s.Jo,e.defaults.host,void 0,{trim:!0}]]),We,(0,i.bo)((0,i.Lk)("input",{id:"connect:port","onUpdate:modelValue":n[3]||(n[3]=n=>e.defaults.port=n),class:"input",type:"number",min:"1",max:"65535",name:"port","aria-label":"Server port"},null,512),[[s.Jo,e.defaults.port]])])]),(0,i.Lk)("div",Ie,[Re,(0,i.bF)(u,{class:"input-wrap password-container"},{default:(0,i.k6)((a=>[(0,i.bo)((0,i.Lk)("input",{id:"connect:password","onUpdate:modelValue":n[4]||(n[4]=n=>e.defaults.password=n),class:"input",type:a.isVisible?"text":"password",placeholder:"Server password (optional)",name:"password",maxlength:"300"},null,8,Oe),[[s.hp,e.defaults.password]])])),_:1})]),(0,i.Lk)("div",Ne,[Fe,(0,i.Lk)("div",Ue,[(0,i.Lk)("label",qe,[(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":n[5]||(n[5]=n=>e.defaults.tls=n),type:"checkbox",name:"tls",disabled:e.defaults.hasSTSPolicy},null,8,Ke),[[s.lH,e.defaults.tls]]),De,e.defaults.hasSTSPolicy?((0,i.uX)(),(0,i.CE)("span",Be,"π STS")):(0,i.Q3)("",!0)]),(0,i.Lk)("label",Qe,[(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":n[6]||(n[6]=n=>e.defaults.rejectUnauthorized=n),type:"checkbox",name:"rejectUnauthorized"},null,512),[[s.lH,e.defaults.rejectUnauthorized]]),$e]),(0,i.Lk)("label",He,[(0,i.bo)((0,i.Lk)("input",{id:"connect:autoRejoin","onUpdate:modelValue":n[7]||(n[7]=n=>e.defaults.autoRejoin=n),type:"checkbox",name:"autoRejoin"},null,512),[[s.lH,e.defaults.autoRejoin]]),ze])])]),Ve,(0,i.Lk)("div",Je,[Ye,(0,i.Lk)("div",Ge,[(0,i.Lk)("label",Ze,[(0,i.bo)((0,i.Lk)("input",{id:"connect:proxyEnabled","onUpdate:modelValue":n[8]||(n[8]=n=>e.defaults.proxyEnabled=n),type:"checkbox",name:"proxyEnabled"},null,512),[[s.lH,e.defaults.proxyEnabled]]),en])])]),e.defaults.proxyEnabled?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.Lk)("div",nn,[an,(0,i.Lk)("div",tn,[(0,i.bo)((0,i.Lk)("input",{id:"connect:proxyHost","onUpdate:modelValue":n[9]||(n[9]=n=>e.defaults.proxyHost=n),class:"input",name:"proxyHost","aria-label":"Proxy host",maxlength:"255"},null,512),[[s.Jo,e.defaults.proxyHost,void 0,{trim:!0}]]),sn,(0,i.bo)((0,i.Lk)("input",{id:"connect:proxyPort","onUpdate:modelValue":n[10]||(n[10]=n=>e.defaults.proxyPort=n),class:"input",type:"number",min:"1",max:"65535",name:"proxyPort","aria-label":"SOCKS port"},null,512),[[s.Jo,e.defaults.proxyPort]])])]),(0,i.Lk)("div",on,[rn,(0,i.bo)((0,i.Lk)("input",{id:"connect:proxyUsername",ref:"proxyUsernameInput","onUpdate:modelValue":n[11]||(n[11]=n=>e.defaults.proxyUsername=n),class:"input username",name:"proxyUsername",maxlength:"100",placeholder:"Proxy username"},null,512),[[s.Jo,e.defaults.proxyUsername,void 0,{trim:!0}]])]),(0,i.Lk)("div",ln,[cn,(0,i.bF)(u,{class:"input-wrap password-container"},{default:(0,i.k6)((a=>[(0,i.bo)((0,i.Lk)("input",{id:"connect:proxyPassword",ref:"proxyPassword","onUpdate:modelValue":n[12]||(n[12]=n=>e.defaults.proxyPassword=n),class:"input",type:a.isVisible?"text":"password",placeholder:"Proxy password",name:"proxyPassword",maxlength:"300"},null,8,un),[[s.hp,e.defaults.proxyPassword]])])),_:1})])],64)):(0,i.Q3)("",!0)],64)),fn,(0,i.Lk)("div",bn,[vn,(0,i.bo)((0,i.Lk)("input",{id:"connect:nick","onUpdate:modelValue":n[15]||(n[15]=n=>e.defaults.nick=n),class:"input nick",name:"nick",pattern:"[^\\s:!@]+",maxlength:"100",required:"",onInput:n[16]||(n[16]=(...n)=>e.onNickChanged&&e.onNickChanged(...n))},null,544),[[s.Jo,e.defaults.nick]])]),e.config?.useHexIp?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.CE)("div",wn,[yn,(0,i.bo)((0,i.Lk)("input",{id:"connect:username",ref:"usernameInput","onUpdate:modelValue":n[17]||(n[17]=n=>e.defaults.username=n),class:"input username",name:"username",maxlength:"100"},null,512),[[s.Jo,e.defaults.username,void 0,{trim:!0}]])])),(0,i.Lk)("div",_n,[Cn,(0,i.bo)((0,i.Lk)("input",{id:"connect:realname","onUpdate:modelValue":n[18]||(n[18]=n=>e.defaults.realname=n),class:"input",name:"realname",maxlength:"300"},null,512),[[s.Jo,e.defaults.realname,void 0,{trim:!0}]])]),(0,i.Lk)("div",Ln,[En,(0,i.bo)((0,i.Lk)("input",{id:"connect:leaveMessage","onUpdate:modelValue":n[19]||(n[19]=n=>e.defaults.leaveMessage=n),autocomplete:"off",class:"input",name:"leaveMessage",placeholder:"The Lounge - https://thelounge.chat"},null,512),[[s.Jo,e.defaults.leaveMessage,void 0,{trim:!0}]])]),e.defaults.uuid&&!e.store.state.serverConfiguration?.public?((0,i.uX)(),(0,i.CE)("div",xn,[Mn,(0,i.Lk)("textarea",{id:"connect:commands",ref:"commandsInput",autocomplete:"off",value:e.defaults.commands?e.defaults.commands.join("\n"):"",class:"input",name:"commands",onInput:n[20]||(n[20]=(...n)=>e.resizeCommandsInput&&e.resizeCommandsInput(...n))},null,40,Sn)])):e.defaults.uuid?(0,i.Q3)("",!0):((0,i.uX)(),(0,i.CE)("div",An,[jn,(0,i.bo)((0,i.Lk)("input",{id:"connect:channels","onUpdate:modelValue":n[21]||(n[21]=n=>e.defaults.join=n),class:"input",name:"join"},null,512),[[s.Jo,e.defaults.join,void 0,{trim:!0}]])])),e.store.state.serverConfiguration?.public?((0,i.uX)(),(0,i.CE)(i.FK,{key:5},[e.config?.lockNetwork?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.Lk)("div",Xn,[Tn,(0,i.Lk)("div",Pn,[(0,i.Lk)("label",Wn,[(0,i.bo)((0,i.Lk)("input",{"onUpdate:modelValue":n[22]||(n[22]=n=>e.displayPasswordField=n),type:"checkbox"},null,512),[[s.lH,e.displayPasswordField]]),In])])]),e.displayPasswordField?((0,i.uX)(),(0,i.CE)("div",Rn,[On,(0,i.bF)(u,{class:"input-wrap password-container"},{default:(0,i.k6)((a=>[(0,i.bo)((0,i.Lk)("input",{id:"connect:password",ref:"publicPassword","onUpdate:modelValue":n[23]||(n[23]=n=>e.defaults.password=n),class:"input",type:a.isVisible?"text":"password",placeholder:"Server password (optional)",name:"password",maxlength:"300"},null,8,Nn),[[s.hp,e.defaults.password]])])),_:1})])):(0,i.Q3)("",!0)],64)):(0,i.Q3)("",!0)],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:6},[Fn,(0,i.Lk)("div",Un,[(0,i.Lk)("label",qn,[(0,i.Lk)("input",{checked:!e.defaults.sasl,type:"radio",name:"sasl",value:"",onChange:n[24]||(n[24]=n=>e.setSaslAuth(""))},null,40,Kn),Dn]),(0,i.Lk)("label",Bn,[(0,i.Lk)("input",{checked:"plain"===e.defaults.sasl,type:"radio",name:"sasl",value:"plain",onChange:n[25]||(n[25]=n=>e.setSaslAuth("plain"))},null,40,Qn),$n]),!e.store.state.serverConfiguration?.public&&e.defaults.tls?((0,i.uX)(),(0,i.CE)("label",Hn,[(0,i.Lk)("input",{checked:"external"===e.defaults.sasl,type:"radio",name:"sasl",value:"external",onChange:n[26]||(n[26]=n=>e.setSaslAuth("external"))},null,40,zn),Vn])):(0,i.Q3)("",!0)]),"plain"===e.defaults.sasl?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.Lk)("div",Jn,[Yn,(0,i.bo)((0,i.Lk)("input",{id:"connect:saslAccount","onUpdate:modelValue":n[27]||(n[27]=n=>e.defaults.saslAccount=n),class:"input",name:"saslAccount",maxlength:"100",required:""},null,512),[[s.Jo,e.defaults.saslAccount,void 0,{trim:!0}]])]),(0,i.Lk)("div",Gn,[Zn,(0,i.bF)(u,{class:"input-wrap password-container"},{default:(0,i.k6)((a=>[(0,i.bo)((0,i.Lk)("input",{id:"connect:saslPassword","onUpdate:modelValue":n[28]||(n[28]=n=>e.defaults.saslPassword=n),class:"input",type:a.isVisible?"text":"password",name:"saslPassword",maxlength:"300",required:""},null,8,ea),[[s.hp,e.defaults.saslPassword]])])),_:1})])],64)):"external"===e.defaults.sasl?((0,i.uX)(),(0,i.CE)("div",na,aa)):(0,i.Q3)("",!0)],64)),(0,i.Lk)("div",null,[(0,i.Lk)("button",{type:"submit",class:"btn",disabled:!!e.disabled},[e.defaults.uuid?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[sa],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[oa],64))],8,ta)])],32)])}]]),ua=(0,i.pM)({name:"Connect",components:{NetworkForm:ca},props:{queryParams:Object},setup(e){const n=(0,o.Pj)(),a=(0,A.KR)(!1);return{defaults:(0,A.KR)(Object.assign({},n.state.serverConfiguration?.defaults,(e=>{if(!e)return{};const a={};for(let t of Object.keys(e)){let s=e[t];if(Array.isArray(s)&&(s=s[0]),"channels"===t&&(t="join"),Object.prototype.hasOwnProperty.call(n.state.serverConfiguration?.defaults,t)&&(!n.state.serverConfiguration?.lockNetwork||!["name","host","port","tls","rejectUnauthorized"].includes(t)))switch("join"===t&&(s=s.split(",").map((e=>e.match(/^[#&!+]/)?e:`#${e}`)).join(", ")),typeof n.state.serverConfiguration?.defaults[t]){case"boolean":a[t]="0"!==s&&"false"!==s&&!!s;break;case"number":a[t]=Number(s);break;case"string":a[t]=String(s)}}return a})(e.queryParams))),disabled:a,handleSubmit:e=>{a.value=!0,fe.A.emit("network:new",e)}}}}),da=(0,D.A)(ua,[["render",function(e,n,a,t,s,o){const r=(0,i.g2)("NetworkForm");return(0,i.uX)(),(0,i.Wv)(r,{"handle-submit":e.handleSubmit,defaults:e.defaults,disabled:e.disabled},null,8,["handle-submit","defaults","disabled"])}]]),pa={id:"settings",class:"window",role:"tabpanel","aria-label":"Settings"},ha={class:"header"},ma={class:"container"},ga={class:"settings-menu"},ka=(0,i.Lk)("h2",null,"Settings",-1),fa={role:"navigation","aria-label":"Settings tabs"},ba=["aria-label","aria-selected"],va=["onClick","onKeypress"],wa=(0,i.pM)({name:"SettingTabListItem",props:{name:{type:String,required:!0},className:{type:String,required:!0},to:{type:String,required:!0}},setup:()=>({route:(0,j.lq)()})}),ya=(0,D.A)(wa,[["render",function(e,n,a,t,o,l){const c=(0,i.g2)("router-link");return(0,i.uX)(),(0,i.CE)("li",{"aria-label":e.name,role:"tab","aria-selected":e.route.name===e.name,"aria-controls":"settings"},[(0,i.bF)(c,{to:"/settings/"+e.to,custom:""},{default:(0,i.k6)((({navigate:n,isExactActive:a})=>[(0,i.Lk)("button",{class:(0,r.C4)(["icon",e.className,{active:a}]),onClick:n,onKeypress:(0,s.jR)(n,["enter"])},(0,r.v_)(e.name),43,va)])),_:1},8,["to"])],8,ba)}]]),_a=ya,Ca=(0,i.pM)({name:"SettingsTabs",components:{SettingTabItem:_a}}),La=(0,D.A)(Ca,[["render",function(e,n,a,t,s,o){const r=(0,i.g2)("SettingTabItem");return(0,i.uX)(),(0,i.CE)("aside",ga,[ka,(0,i.Lk)("ul",fa,[(0,i.bF)(r,{name:"General","class-name":"general",to:""}),(0,i.bF)(r,{name:"Appearance","class-name":"appearance",to:"appearance"}),(0,i.bF)(r,{name:"Notifications","class-name":"notifications",to:"notifications"}),(0,i.bF)(r,{name:"Account","class-name":"account",to:"account"})])])}]]),Ea=La,xa=(0,i.pM)({name:"Settings",components:{SidebarToggle:ra,Navigation:Ea},setup(){const e=(0,o.Pj)();return{onChange:n=>{const a=n.target.name;if(["old_password","new_password","verify_password"].includes(a))return;let t;t="checkbox"===n.target.type?n.target.checked:n.target.value,e.dispatch("settings/update",{name:a,value:t,sync:!0})}}}}),Ma=(0,D.A)(xa,[["render",function(e,n,a,t,o,r){const l=(0,i.g2)("SidebarToggle"),c=(0,i.g2)("Navigation"),u=(0,i.g2)("router-view");return(0,i.uX)(),(0,i.CE)("div",pa,[(0,i.Lk)("div",ha,[(0,i.bF)(l)]),(0,i.bF)(c),(0,i.Lk)("div",ma,[(0,i.Lk)("form",{ref:"settingsForm",autocomplete:"off",onChange:n[0]||(n[0]=(...n)=>e.onChange&&e.onChange(...n)),onSubmit:n[1]||(n[1]=(0,s.D$)((()=>{}),["prevent"]))},[(0,i.bF)(u)],544)])])}]]),Sa=Ma,Aa={id:"help",class:"window",role:"tabpanel","aria-label":"Help"},ja={class:"header"},Xa={class:"container"},Ta=(0,i.Lk)("h1",{class:"title"},"Help",-1),Pa={class:"help-version-title"},Wa=(0,i.Lk)("span",null,"About The Lounge",-1),Ia=(0,i.eW)("release notes"),Ra=(0,i.eW)(") "),Oa={class:"about"},Na=(0,i.eW)(" The Lounge is running from source ("),Fa=["href"],Ua=(0,i.eW)("commit "),qa=(0,i.eW)("). "),Ka=(0,i.eW)(" Compare "),Da=["href"],Ba=(0,i.eW)("between "),Qa=(0,i.eW)(" and "),$a=(0,i.Lk)("code",null,"master",-1),Ha=(0,i.eW)(" to see what you are missing "),za=(0,i.eW)(" Compare "),Va=["href"],Ja=(0,i.eW)("between "),Ya=(0,i.eW)(" and "),Ga=(0,i.eW)(" to see your local changes "),Za=(0,i.Lk)("p",null,[(0,i.Lk)("a",{href:"https://thelounge.chat/",target:"_blank",rel:"noopener",class:"website-link"},"Website")],-1),et=(0,i.Lk)("p",null,[(0,i.Lk)("a",{href:"https://thelounge.chat/docs/",target:"_blank",rel:"noopener",class:"documentation-link"},"Documentation")],-1),nt=(0,i.Lk)("p",null,[(0,i.Lk)("a",{href:"https://github.com/thelounge/thelounge/issues/new",target:"_blank",rel:"noopener",class:"report-issue-link"},"Report an issueβ¦")],-1),at={key:0},tt={key:1,class:"help-item"},st=(0,i.Lk)("div",{class:"subject gesture"},"Single-Finger Swipe Left",-1),ot=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Hide sidebar.")],-1),it=[st,ot],rt={key:2,class:"help-item"},lt=(0,i.Lk)("div",{class:"subject gesture"},"Single-Finger Swipe Right",-1),ct=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Show sidebar.")],-1),ut=[lt,ct],dt={key:3,class:"help-item"},pt=(0,i.Lk)("div",{class:"subject gesture"},"Two-Finger Swipe Left",-1),ht=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the next window in the channel list.")],-1),mt=[pt,ht],gt={key:4,class:"help-item"},kt=(0,i.Lk)("div",{class:"subject gesture"},"Two-Finger Swipe Right",-1),ft=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the previous window in the channel list.")],-1),bt=[kt,ft],vt=(0,i.Lk)("h2",null,"Keyboard Shortcuts",-1),wt={class:"help-item"},yt={class:"subject"},_t={key:0},Ct=(0,i.Lk)("kbd",null,"Alt",-1),Lt=(0,i.eW)(),Et=(0,i.Lk)("kbd",null,"Shift",-1),xt=(0,i.eW)(),Mt=(0,i.Lk)("kbd",null,"β",-1),St=[Ct,Lt,Et,xt,Mt],At={key:1},jt=(0,i.Lk)("kbd",null,"β₯",-1),Xt=(0,i.eW)(),Tt=(0,i.Lk)("kbd",null,"β§",-1),Pt=(0,i.eW)(),Wt=(0,i.Lk)("kbd",null,"β",-1),It=[jt,Xt,Tt,Pt,Wt],Rt=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the next lobby in the channel list.")],-1),Ot={class:"help-item"},Nt={class:"subject"},Ft={key:0},Ut=(0,i.Lk)("kbd",null,"Alt",-1),qt=(0,i.eW)(),Kt=(0,i.Lk)("kbd",null,"Shift",-1),Dt=(0,i.eW)(),Bt=(0,i.Lk)("kbd",null,"β",-1),Qt=[Ut,qt,Kt,Dt,Bt],$t={key:1},Ht=(0,i.Lk)("kbd",null,"β₯",-1),zt=(0,i.eW)(),Vt=(0,i.Lk)("kbd",null,"β§",-1),Jt=(0,i.eW)(),Yt=(0,i.Lk)("kbd",null,"β",-1),Gt=[Ht,zt,Vt,Jt,Yt],Zt=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the previous lobby in the channel list.")],-1),es={class:"help-item"},ns={class:"subject"},as={key:0},ts=(0,i.Lk)("kbd",null,"Alt",-1),ss=(0,i.eW)(),os=(0,i.Lk)("kbd",null,"Shift",-1),is=(0,i.eW)(),rs=(0,i.Lk)("kbd",null,"β",-1),ls=[ts,ss,os,is,rs],cs={key:1},us=(0,i.Lk)("kbd",null,"β₯",-1),ds=(0,i.eW)(),ps=(0,i.Lk)("kbd",null,"β§",-1),hs=(0,i.eW)(),ms=(0,i.Lk)("kbd",null,"β",-1),gs=[us,ds,ps,hs,ms],ks=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Collapse current network.")],-1),fs={class:"help-item"},bs={class:"subject"},vs={key:0},ws=(0,i.Lk)("kbd",null,"Alt",-1),ys=(0,i.eW)(),_s=(0,i.Lk)("kbd",null,"Shift",-1),Cs=(0,i.eW)(),Ls=(0,i.Lk)("kbd",null,"β",-1),Es=[ws,ys,_s,Cs,Ls],xs={key:1},Ms=(0,i.Lk)("kbd",null,"β₯",-1),Ss=(0,i.eW)(),As=(0,i.Lk)("kbd",null,"β§",-1),js=(0,i.eW)(),Xs=(0,i.Lk)("kbd",null,"β",-1),Ts=[Ms,Ss,As,js,Xs],Ps=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Expand current network.")],-1),Ws={class:"help-item"},Is={class:"subject"},Rs={key:0},Os=(0,i.Lk)("kbd",null,"Alt",-1),Ns=(0,i.eW)(),Fs=(0,i.Lk)("kbd",null,"β",-1),Us=[Os,Ns,Fs],qs={key:1},Ks=(0,i.Lk)("kbd",null,"β₯",-1),Ds=(0,i.eW)(),Bs=(0,i.Lk)("kbd",null,"β",-1),Qs=[Ks,Ds,Bs],$s=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the next window in the channel list.")],-1),Hs={class:"help-item"},zs={class:"subject"},Vs={key:0},Js=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1)],Ys={key:1},Gs=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1)],Zs=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the previous window in the channel list.")],-1),eo={class:"help-item"},no={class:"subject"},ao={key:0},to=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1)],so={key:1},oo=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1)],io=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the next window with unread messages in the channel list.")],-1),ro={class:"help-item"},lo={class:"subject"},co={key:0},uo=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1)],po={key:1},ho=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"β",-1)],mo=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the previous window with unread messages in the channel list.")],-1),go={class:"help-item"},ko={class:"subject"},fo={key:0},bo=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"A",-1)],vo={key:1},wo=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"A",-1)],yo=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the first window with unread messages.")],-1),_o={class:"help-item"},Co={class:"subject"},Lo={key:0},Eo=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"S",-1)],xo={key:1},Mo=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"S",-1)],So=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Toggle sidebar.")],-1),Ao={class:"help-item"},jo={class:"subject"},Xo={key:0},To=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"U",-1)],Po={key:1},Wo=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"U",-1)],Io=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Toggle channel user list.")],-1),Ro={class:"help-item"},Oo={class:"subject"},No={key:0},Fo=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"J",-1)],Uo={key:1},qo=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"J",-1)],Ko=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Toggle jump to channel switcher.")],-1),Do={class:"help-item"},Bo={class:"subject"},Qo={key:0},$o=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"M",-1)],Ho={key:1},zo=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"M",-1)],Vo=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Toggle recent mentions popup.")],-1),Jo={class:"help-item"},Yo={class:"subject"},Go={key:0},Zo=[(0,i.Lk)("kbd",null,"Alt",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"/",-1)],ei={key:1},ni=[(0,i.Lk)("kbd",null,"β₯",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"/",-1)],ai=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,"Switch to the help menu.")],-1),ti=(0,i.Lk)("div",{class:"help-item"},[(0,i.Lk)("div",{class:"subject"},[(0,i.Lk)("span",null,[(0,i.Lk)("kbd",null,"Esc")])]),(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null," Close current contextual window (context menu, image viewer, topic edit, etc) and remove focus from input. ")])],-1),si=(0,i.Lk)("h2",null,"Formatting Shortcuts",-1),oi={class:"help-item"},ii={class:"subject"},ri={key:0},li=[(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"K",-1)],ci={key:1},ui=[(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"K",-1)],di=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,[(0,i.eW)(" Mark any text typed after this shortcut to be colored. After hitting this shortcut, enter an integer in the range "),(0,i.Lk)("code",null,"0β15"),(0,i.eW)(" to select the desired color, or use the autocompletion menu to choose a color name (see below). ")]),(0,i.Lk)("p",null,[(0,i.eW)(" Background color can be specified by putting a comma and another integer in the range "),(0,i.Lk)("code",null,"0β15"),(0,i.eW)(" after the foreground color number (autocompletion works too). ")]),(0,i.Lk)("p",null,[(0,i.eW)(" A color reference can be found "),(0,i.Lk)("a",{href:"https://modern.ircdocs.horse/formatting.html#colors",target:"_blank",rel:"noopener"},"here"),(0,i.eW)(". ")])],-1),pi={class:"help-item"},hi={class:"subject"},mi={key:0},gi=[(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"B",-1)],ki={key:1},fi=[(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"B",-1)],bi=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,[(0,i.eW)(" Mark all text typed after this shortcut as "),(0,i.Lk)("span",{class:"irc-bold"},"bold"),(0,i.eW)(". ")])],-1),vi={class:"help-item"},wi={class:"subject"},yi={key:0},_i=[(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"U",-1)],Ci={key:1},Li=[(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"U",-1)],Ei=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,[(0,i.eW)(" Mark all text typed after this shortcut as "),(0,i.Lk)("span",{class:"irc-underline"},"underlined"),(0,i.eW)(". ")])],-1),xi={class:"help-item"},Mi={class:"subject"},Si={key:0},Ai=[(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"I",-1)],ji={key:1},Xi=[(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"I",-1)],Ti=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,[(0,i.eW)(" Mark all text typed after this shortcut as "),(0,i.Lk)("span",{class:"irc-italic"},"italics"),(0,i.eW)(". ")])],-1),Pi={class:"help-item"},Wi={class:"subject"},Ii={key:0},Ri=[(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"S",-1)],Oi={key:1},Ni=[(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"S",-1)],Fi=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,[(0,i.eW)(" Mark all text typed after this shortcut as "),(0,i.Lk)("span",{class:"irc-strikethrough"},"struck through"),(0,i.eW)(". ")])],-1),Ui={class:"help-item"},qi={class:"subject"},Ki={key:0},Di=[(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"M",-1)],Bi={key:1},Qi=[(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"M",-1)],$i=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null,[(0,i.eW)(" Mark all text typed after this shortcut as "),(0,i.Lk)("span",{class:"irc-monospace"},"monospaced"),(0,i.eW)(". ")])],-1),Hi={class:"help-item"},zi={class:"subject"},Vi={key:0},Ji=[(0,i.Lk)("kbd",null,"Ctrl",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"O",-1)],Yi={key:1},Gi=[(0,i.Lk)("kbd",null,"β",-1),(0,i.eW)(),(0,i.Lk)("kbd",null,"O",-1)],Zi=(0,i.Lk)("div",{class:"description"},[(0,i.Lk)("p",null," Mark all text typed after this shortcut to be reset to its original formatting. ")],-1),er=(0,i.Fv)('<h2>Autocompletion</h2><p> To auto-complete nicknames, channels, commands, and emoji, type one of the characters below to open a suggestion list. Use the <kbd>β</kbd> and <kbd>β</kbd> keys to highlight an item, and insert it by pressing <kbd>Tab</kbd> or <kbd>Enter</kbd> (or by clicking the desired item). </p><p>Autocompletion can be disabled in settings.</p><div class="help-item"><div class="subject"><code>@</code></div><div class="description"><p>Nickname</p></div></div><div class="help-item"><div class="subject"><code>#</code></div><div class="description"><p>Channel</p></div></div><div class="help-item"><div class="subject"><code>/</code></div><div class="description"><p>Commands (see list of commands below)</p></div></div><div class="help-item"><div class="subject"><code>:</code></div><div class="description"><p> Emoji (note: requires two search characters, to avoid conflicting with common emoticons like <code>:)</code>) </p></div></div><h2>Commands</h2><div class="help-item"><div class="subject"><code>/away [message]</code></div><div class="description"><p>Mark yourself as away with an optional message.</p></div></div><div class="help-item"><div class="subject"><code>/back</code></div><div class="description"><p>Remove your away status (set with <code>/away</code>).</p></div></div><div class="help-item"><div class="subject"><code>/ban nick</code></div><div class="description"><p> Ban (<code>+b</code>) a user from the current channel. This can be a nickname or a hostmask. </p></div></div><div class="help-item"><div class="subject"><code>/banlist</code></div><div class="description"><p>Load the banlist for the current channel.</p></div></div><div class="help-item"><div class="subject"><code>/collapse</code></div><div class="description"><p> Collapse all previews in the current channel (opposite of <code>/expand</code>) </p></div></div><div class="help-item"><div class="subject"><code>/connect host [port]</code></div><div class="description"><p> Connect to a new IRC network. If <code>port</code> starts with a <code>+</code> sign, the connection will be made secure using TLS. </p><p>Alias: <code>/server</code></p></div></div><div class="help-item"><div class="subject"><code>/ctcp target cmd [args]</code></div><div class="description"><p> Send a <abbr title="Client-to-client protocol">CTCP</abbr> request. Read more about this on <a href="https://en.wikipedia.org/wiki/Client-to-client_protocol" target="_blank" rel="noopener">the dedicated Wikipedia article</a>. </p></div></div><div class="help-item"><div class="subject"><code>/deop nick [...nick]</code></div><div class="description"><p> Remove op (<code>-o</code>) from one or several users in the current channel. </p></div></div><div class="help-item"><div class="subject"><code>/devoice nick [...nick]</code></div><div class="description"><p> Remove voice (<code>-v</code>) from one or several users in the current channel. </p></div></div><div class="help-item"><div class="subject"><code>/disconnect [message]</code></div><div class="description"><p>Disconnect from the current network with an optionally-provided message.</p></div></div><div class="help-item"><div class="subject"><code>/expand</code></div><div class="description"><p> Expand all previews in the current channel (opposite of <code>/collapse</code>) </p></div></div><div class="help-item"><div class="subject"><code>/invite nick [channel]</code></div><div class="description"><p> Invite a user to the specified channel. If <code>channel</code> is omitted, user will be invited to the current channel. </p></div></div><div class="help-item"><div class="subject"><code>/ignore nick</code></div><div class="description"><p> Block any messages from the specified user on the current network. This can be a nickname or a hostmask. </p></div></div><div class="help-item"><div class="subject"><code>/ignorelist</code></div><div class="description"><p>Load the list of ignored users for the current network.</p></div></div><div class="help-item"><div class="subject"><code>/join channel [password]</code></div><div class="description"><p> Join a channel. Password is only needed in protected channels and can usually be omitted. </p></div></div><div class="help-item"><div class="subject"><code>/kick nick [reason]</code></div><div class="description"><p>Kick a user from the current channel.</p></div></div><div class="help-item"><div class="subject"><code>/kickban nick [reason]</code></div><div class="description"><p> Kick and ban (<code>+b</code>) a user from the current channel. Unlike <code>/ban</code>, only nicknames (and not host masks) can be used. </p></div></div><div class="help-item"><div class="subject"><code>/list</code></div><div class="description"><p>Retrieve a list of available channels on this network.</p></div></div><div class="help-item"><div class="subject"><code>/me message</code></div><div class="description"><p> Send an action message to the current channel. The Lounge will display it inline, as if the message was posted in the third person. </p></div></div><div class="help-item"><div class="subject"><code>/mode flags [args]</code></div><div class="description"><p> Set the given flags to the current channel if the active window is a channel, another user if the active window is a private message window, or yourself if the current window is a server window. </p></div></div><div class="help-item"><div class="subject"><code>/msg channel message</code></div><div class="description"><p>Send a message to the specified channel.</p></div></div><div class="help-item"><div class="subject"><code>/mute [...channel]</code></div><div class="description"><p> Prevent messages from generating any feedback for a channel. This turns off the highlight indicator, hides mentions and inhibits push notifications. Muting a network lobby mutes the entire network. Not specifying any channel target mutes the current channel. Revert with <code>/unmute</code>. </p></div></div><div class="help-item"><div class="subject"><code>/nick newnick</code></div><div class="description"><p>Change your nickname on the current network.</p></div></div><div class="help-item"><div class="subject"><code>/notice channel message</code></div><div class="description"><p>Sends a notice message to the specified channel.</p></div></div><div class="help-item"><div class="subject"><code>/op nick [...nick]</code></div><div class="description"><p>Give op (<code>+o</code>) to one or several users in the current channel.</p></div></div><div class="help-item"><div class="subject"><c