UNPKG

twiedenbein-thelounge

Version:

The self-hosted Web IRC client

1 lines β€’ 311 kB
(()=>{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