thelounge
Version:
The self-hosted Web IRC client
1 lines • 300 kB
JavaScript
(()=>{var e={1039:(e,t,s)=>{var a={"./away.vue":8258,"./back.vue":2727,"./chghost.vue":7404,"./ctcp.vue":2097,"./ctcp_request.vue":1961,"./error.vue":1623,"./invite.vue":6543,"./join.vue":3330,"./kick.vue":7979,"./mode.vue":534,"./mode_channel.vue":935,"./monospace_block.vue":2432,"./nick.vue":580,"./part.vue":3473,"./quit.vue":8605,"./raw.vue":3690,"./topic.vue":1990,"./topic_set_by.vue":6385,"./whois.vue":7224};function n(e){var t=i(e);return s(t)}function i(e){if(!s.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}n.keys=function(){return Object.keys(a)},n.resolve=i,e.exports=n,n.id=1039},1256:(e,t,s)=>{var a={"./collapse.js":3664,"./expand.js":1203,"./index.js":4730,"./join.js":9759,"./search.js":5222};function n(e){var t=i(e);return s(t)}function i(e){if(!s.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}n.keys=function(){return Object.keys(a)},n.resolve=i,e.exports=n,n.id=1256},8477:(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var a=s(5987),n=s(5763);class i{static signout(){a.Z.clear(),n.Z.reload()}}},3664:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>i});var a=s(626),n=s(4894);const i={input:function(){const e=[];for(const t of n.Z.state.activeChannel.channel.messages){let s=!1;for(const e of t.previews)e.shown&&(e.shown=!1,s=!0);s&&e.push(t.id)}return e.length>0&&a.Z.emit("msg:preview:toggle",{target:n.Z.state.activeChannel.channel.id,messageIds:e,shown:!1}),!0}}},1203:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>i});var a=s(626),n=s(4894);const i={input:function(){const e=[];for(const t of n.Z.state.activeChannel.channel.messages){let s=!1;for(const e of t.previews)e.shown||(e.shown=!0,s=!0);s&&e.push(t.id)}return e.length>0&&a.Z.emit("msg:preview:toggle",{target:n.Z.state.activeChannel.channel.id,messageIds:e,shown:!0}),!0}}},4730:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>n});const a=s(1256),n=a.keys().reduce(((e,t)=>{const s=t.substring(2,t.length-3);return"index"===s||(e[s]=a(t).default),e}),{})},9759:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>o});var a=s(626),n=s(4894),i=s(5871);const o={input:function(e){if(e.length>0){let t=e[0];if(t.length>0){const s=n.Z.state.activeChannel.network.serverOptions.CHANTYPES,o=e[0].split(",");if(s&&s.length>0)for(let e=0;e<o.length;e++)s.includes(o[e][0])||(o[e]=s[0]+o[e]);t=o.join(",");const r=n.Z.getters.findChannelOnCurrentNetwork(t);if(!r)return a.Z.emit("input",{text:`/join ${t} ${e.length>1?e[1]:""}`,target:n.Z.state.activeChannel.channel.id}),!0;(0,i.qZ)(r)}}else if("channel"===n.Z.state.activeChannel.channel.type)return a.Z.emit("input",{target:n.Z.state.activeChannel.channel.id,text:`/join ${n.Z.state.activeChannel.channel.name}`}),!0}}},5222:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>i});var a=s(4894),n=s(5871);const i={input:function(e){return!!a.Z.state.settings.searchEnabled&&(n.Nd.push({name:"SearchResults",params:{id:a.Z.state.activeChannel.channel.id},query:{q:e.join(" ")}}),!0)}}},8773:e=>{"use strict";const t=new Set(["chghost","join","part","quit","nick","kick","mode"]);e.exports={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:[],condensedTypes:t,timeFormats:{msgDefault:"HH:mm",msgWithSeconds:"HH:mm:ss",msg12h:"hh:mm A",msg12hWithSeconds:"hh:mm:ss A"},mobileViewportPixels:768}},6083:(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});const a=new Map,n=new class{on(e,t){a.has(e)?a.get(e).push(t):a.set(e,[t])}off(e,t){a.has(e)&&a.set(e,a.get(e).filter((e=>e!==t)))}emit(e,...t){a.has(e)&&a.get(e).slice().map((e=>{e(...t)}))}}},8326:(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});const a=["Bytes","KiB","MiB","GiB","TiB","PiB"],n=e=>{const t=e>0?Math.floor(Math.log(e)/Math.log(1024)):0;return`${parseFloat((e/Math.pow(1024,t)).toFixed(1))} ${a[t]}`}},6577:e=>{"use strict";const t=/\x02|\x1D|\x1F|\x16|\x0F|\x11|\x1E|\x03(?:[0-9]{1,2}(?:,[0-9]{1,2})?)?|\x04(?:[0-9a-f]{6}(?:,[0-9a-f]{6})?)?/gi;e.exports=e=>e.replace(t,"").trim()},6153:(e,t,s)=>{"use strict";const a=s(8337);a.prototype.normalize=function(e){e.schema||(e.schema="http:",e.url="http://"+e.url,e.noschema=!0),"//"===e.schema&&(e.schema="http:",e.url="http:"+e.url,e.noschema=!0),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)};const n=a().tlds(s(4327)).tlds("onion",!0),i=["sftp","smb","file","irc","ircs","svn","git","steam","mumble","ts3server","svn+ssh","ssh","gopher","gemini"];for(const e of i)n.add(e+":","http:");function o(e){return{start:e.index,end:e.lastIndex,link:e.url}}e.exports={findLinks:function(e){const t=n.match(e);return t?t.map(o):[]},findLinksWithSchema:function(e){const t=n.match(e);return t?t.filter((e=>!e.noschema)).map(o):[]}}},9617:(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var a=s(7484),n=s.n(a);const i=e=>n()(e).format("D MMMM YYYY, HH:mm:ss")},5987:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a={set(e,t){try{window.localStorage.setItem(e,t)}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){}}}},5763:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a={reload(){window.location.reload()}}},5871:(e,t,s)=>{"use strict";s.d(t,{c4:()=>Je,Nd:()=>We,qZ:()=>Ke});var a=s(144),n=s(8345),i=s(5987),o=s(626);const r={name:"RevealPassword",data:()=>({isVisible:!1}),methods:{onClick(){this.isVisible=!this.isVisible}}};var l=s(1900);const c=(0,l.Z)(r,(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[e._t("default",null,{isVisible:e.isVisible}),s("span",{ref:"revealButton",class:["reveal-password tooltipped tooltipped-n tooltipped-no-delay",{"reveal-password-visible":e.isVisible}],attrs:{type:"button","aria-label":e.isVisible?"Hide password":"Show password"},on:{click:e.onClick}},[s("span",{attrs:{"aria-label":e.isVisible?"Hide password":"Show password"}})])],2)}),[],!1,null,null,null).exports,u={name:"SignIn",components:{RevealPassword:c},data:()=>({inFlight:!1,errorShown:!1}),mounted(){o.Z.on("auth:failed",this.onAuthFailed)},beforeDestroy(){o.Z.off("auth:failed",this.onAuthFailed)},methods:{onAuthFailed(){this.inFlight=!1,this.errorShown=!0},onSubmit(e){e.preventDefault(),this.inFlight=!0,this.errorShown=!1;const t={user:this.$refs.username.value,password:this.$refs.password.value};i.Z.set("user",t.user),o.Z.emit("auth:perform",t)},getStoredUser:()=>i.Z.get("user")}},d=(0,l.Z)(u,(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"window",attrs:{id:"sign-in",role:"tabpanel","aria-label":"Sign-in"}},[s("form",{staticClass:"container",attrs:{method:"post",action:""},on:{submit:e.onSubmit}},[s("img",{staticClass:"logo",attrs:{src:"img/logo-vertical-transparent-bg.svg",alt:"The Lounge",width:"256",height:"170"}}),s("img",{staticClass:"logo-inverted",attrs:{src:"img/logo-vertical-transparent-bg-inverted.svg",alt:"The Lounge",width:"256",height:"170"}}),s("label",{attrs:{for:"signin-username"}},[e._v("Username")]),s("input",{ref:"username",staticClass:"input",attrs:{id:"signin-username",type:"text",name:"username",autocapitalize:"none",autocorrect:"off",autocomplete:"username",required:"",autofocus:""},domProps:{value:e.getStoredUser()}}),s("div",{staticClass:"password-container"},[s("label",{attrs:{for:"signin-password"}},[e._v("Password")]),s("RevealPassword",{scopedSlots:e._u([{key:"default",fn:function(e){return[s("input",{ref:"password",staticClass:"input",attrs:{id:"signin-password",type:e.isVisible?"text":"password",name:"password",autocapitalize:"none",autocorrect:"off",autocomplete:"current-password",required:""}})]}}])})],1),e.errorShown?s("div",{staticClass:"error"},[e._v("Authentication failed.")]):e._e(),s("button",{staticClass:"btn",attrs:{disabled:e.inFlight,type:"submit"}},[e._v("Sign in")])])])}),[],!1,null,null,null).exports,h=(0,l.Z)({name:"SidebarToggle"},(function(){var e=this,t=e.$createElement;return(e._self._c||t)("button",{staticClass:"lt",attrs:{"aria-label":"Toggle channel list"},on:{click:function(t){return e.$store.commit("toggleSidebar")}}})}),[],!1,null,null,null).exports,p={name:"NetworkForm",components:{RevealPassword:c,SidebarToggle:h},props:{handleSubmit:Function,defaults:Object,disabled:Boolean},data(){return{config:this.$store.state.serverConfiguration,previousUsername:this.defaults.username,displayPasswordField:!1}},watch:{displayPasswordField(e){e&&this.$nextTick((()=>this.$refs.publicPassword.focus()))},"defaults.commands"(){this.$nextTick(this.resizeCommandsInput)},"defaults.tls"(e){const t=[6667,6697],s=e?0:1;this.defaults.port===t[s]&&(this.defaults.port=t[1-s])}},methods:{setSaslAuth(e){this.defaults.sasl=e},onNickChanged(e){this.$refs.usernameInput&&(this.$refs.usernameInput.value&&this.$refs.usernameInput.value!==this.previousUsername||(this.$refs.usernameInput.value=e.target.value),this.previousUsername=e.target.value)},onSubmit(e){const t=new FormData(e.target),s={};for(const e of t.entries())s[e[0]]=e[1];this.handleSubmit(s)},resizeCommandsInput(){this.$refs.commandsInput&&(this.$refs.commandsInput.style.height="",this.$refs.commandsInput.style.height=Math.ceil(this.$refs.commandsInput.scrollHeight+2)+"px")}}},m=(0,l.Z)(p,(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"window",attrs:{id:"connect",role:"tabpanel","aria-label":"Connect"}},[s("div",{staticClass:"header"},[s("SidebarToggle")],1),s("form",{staticClass:"container",attrs:{method:"post",action:""},on:{submit:function(t){return t.preventDefault(),e.onSubmit(t)}}},[s("h1",{staticClass:"title"},[e.defaults.uuid?[s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.uuid,expression:"defaults.uuid"}],attrs:{type:"hidden",name:"uuid"},domProps:{value:e.defaults.uuid},on:{input:function(t){t.target.composing||e.$set(e.defaults,"uuid",t.target.value)}}}),e._v("\n\t\t\t\t\tEdit "+e._s(e.defaults.name)+"\n\t\t\t\t")]:[e._v("\n\t\t\t\t\tConnect\n\t\t\t\t\t"),e.config.lockNetwork&&e.$store.state.serverConfiguration.public?[e._v("\n\t\t\t\t\t\tto "+e._s(e.defaults.name)+"\n\t\t\t\t\t")]:e._e()]],2),e.config.lockNetwork?e.config.lockNetwork&&!e.$store.state.serverConfiguration.public?[s("h2",[e._v("Network settings")]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:name"}},[e._v("Name")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.name,expression:"defaults.name"}],staticClass:"input",attrs:{id:"connect:name",name:"name",maxlength:"100"},domProps:{value:e.defaults.name},on:{input:function(t){t.target.composing||e.$set(e.defaults,"name",t.target.value)}}})]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:password"}},[e._v("Password")]),s("RevealPassword",{staticClass:"input-wrap password-container",scopedSlots:e._u([{key:"default",fn:function(t){return["checkbox"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:"checkbox"},domProps:{checked:Array.isArray(e.defaults.password)?e._i(e.defaults.password,null)>-1:e.defaults.password},on:{change:function(t){var s=e.defaults.password,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"password",s.concat([null])):i>-1&&e.$set(e.defaults,"password",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"password",n)}}}):"radio"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:"radio"},domProps:{checked:e._q(e.defaults.password,null)},on:{change:function(t){return e.$set(e.defaults,"password",null)}}}):s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:t.isVisible?"text":"password"},domProps:{value:e.defaults.password},on:{input:function(t){t.target.composing||e.$set(e.defaults,"password",t.target.value)}}})]}}])})],1)]:e._e():[s("h2",[e._v("Network settings")]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:name"}},[e._v("Name")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.name,expression:"defaults.name"}],staticClass:"input",attrs:{id:"connect:name",name:"name",maxlength:"100"},domProps:{value:e.defaults.name},on:{input:function(t){t.target.composing||e.$set(e.defaults,"name",t.target.value)}}})]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:host"}},[e._v("Server")]),s("div",{staticClass:"input-wrap"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.host,expression:"defaults.host"}],staticClass:"input",attrs:{id:"connect:host",name:"host","aria-label":"Server address",maxlength:"255",required:""},domProps:{value:e.defaults.host},on:{input:function(t){t.target.composing||e.$set(e.defaults,"host",t.target.value)}}}),s("span",{attrs:{id:"connect:portseparator"}},[e._v(":")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.port,expression:"defaults.port"}],staticClass:"input",attrs:{id:"connect:port",type:"number",min:"1",max:"65535",name:"port","aria-label":"Server port"},domProps:{value:e.defaults.port},on:{input:function(t){t.target.composing||e.$set(e.defaults,"port",t.target.value)}}})])]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:password"}},[e._v("Password")]),s("RevealPassword",{staticClass:"input-wrap password-container",scopedSlots:e._u([{key:"default",fn:function(t){return["checkbox"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:"checkbox"},domProps:{checked:Array.isArray(e.defaults.password)?e._i(e.defaults.password,null)>-1:e.defaults.password},on:{change:function(t){var s=e.defaults.password,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"password",s.concat([null])):i>-1&&e.$set(e.defaults,"password",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"password",n)}}}):"radio"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:"radio"},domProps:{checked:e._q(e.defaults.password,null)},on:{change:function(t){return e.$set(e.defaults,"password",null)}}}):s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:t.isVisible?"text":"password"},domProps:{value:e.defaults.password},on:{input:function(t){t.target.composing||e.$set(e.defaults,"password",t.target.value)}}})]}}],null,!1,2649577346)})],1),s("div",{staticClass:"connect-row"},[s("label"),s("div",{staticClass:"input-wrap"},[s("label",{staticClass:"tls"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.tls,expression:"defaults.tls"}],attrs:{type:"checkbox",name:"tls",disabled:e.defaults.hasSTSPolicy},domProps:{checked:Array.isArray(e.defaults.tls)?e._i(e.defaults.tls,null)>-1:e.defaults.tls},on:{change:function(t){var s=e.defaults.tls,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"tls",s.concat([null])):i>-1&&e.$set(e.defaults,"tls",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"tls",n)}}}),e._v("\n\t\t\t\t\t\t\tUse secure connection (TLS)\n\t\t\t\t\t\t\t"),e.defaults.hasSTSPolicy?s("span",{staticClass:"tooltipped tooltipped-n tooltipped-no-delay",attrs:{"aria-label":"This network has a strict transport security policy, you will be unable to disable TLS"}},[e._v("🔒 STS")]):e._e()]),s("label",{staticClass:"tls"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.rejectUnauthorized,expression:"defaults.rejectUnauthorized"}],attrs:{type:"checkbox",name:"rejectUnauthorized"},domProps:{checked:Array.isArray(e.defaults.rejectUnauthorized)?e._i(e.defaults.rejectUnauthorized,null)>-1:e.defaults.rejectUnauthorized},on:{change:function(t){var s=e.defaults.rejectUnauthorized,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"rejectUnauthorized",s.concat([null])):i>-1&&e.$set(e.defaults,"rejectUnauthorized",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"rejectUnauthorized",n)}}}),e._v("\n\t\t\t\t\t\t\tOnly allow trusted certificates\n\t\t\t\t\t\t")])])]),s("h2",[e._v("Proxy Settings")]),s("div",{staticClass:"connect-row"},[s("label"),s("div",{staticClass:"input-wrap"},[s("label",{attrs:{for:"connect:proxyEnabled"}},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.proxyEnabled,expression:"defaults.proxyEnabled"}],attrs:{id:"connect:proxyEnabled",type:"checkbox",name:"proxyEnabled"},domProps:{checked:Array.isArray(e.defaults.proxyEnabled)?e._i(e.defaults.proxyEnabled,null)>-1:e.defaults.proxyEnabled},on:{change:function(t){var s=e.defaults.proxyEnabled,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"proxyEnabled",s.concat([null])):i>-1&&e.$set(e.defaults,"proxyEnabled",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"proxyEnabled",n)}}}),e._v("\n\t\t\t\t\t\t\tEnable Proxy\n\t\t\t\t\t\t")])])]),e.defaults.proxyEnabled?[s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:proxyHost"}},[e._v("SOCKS Address")]),s("div",{staticClass:"input-wrap"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.proxyHost,expression:"defaults.proxyHost"}],staticClass:"input",attrs:{id:"connect:proxyHost",name:"proxyHost","aria-label":"Proxy host",maxlength:"255"},domProps:{value:e.defaults.proxyHost},on:{input:function(t){t.target.composing||e.$set(e.defaults,"proxyHost",t.target.value)}}}),s("span",{attrs:{id:"connect:proxyPortSeparator"}},[e._v(":")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.proxyPort,expression:"defaults.proxyPort"}],staticClass:"input",attrs:{id:"connect:proxyPort",type:"number",min:"1",max:"65535",name:"proxyPort","aria-label":"SOCKS port"},domProps:{value:e.defaults.proxyPort},on:{input:function(t){t.target.composing||e.$set(e.defaults,"proxyPort",t.target.value)}}})])]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:proxyUsername"}},[e._v("Proxy username")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.proxyUsername,expression:"defaults.proxyUsername"}],ref:"proxyUsernameInput",staticClass:"input username",attrs:{id:"connect:proxyUsername",name:"proxyUsername",maxlength:"100",placeholder:"Proxy username"},domProps:{value:e.defaults.proxyUsername},on:{input:function(t){t.target.composing||e.$set(e.defaults,"proxyUsername",t.target.value)}}})]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:proxyPassword"}},[e._v("Proxy password")]),s("RevealPassword",{staticClass:"input-wrap password-container",scopedSlots:e._u([{key:"default",fn:function(t){return["checkbox"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.proxyPassword,expression:"defaults.proxyPassword"}],ref:"proxyPassword",staticClass:"input",attrs:{id:"connect:proxyPassword",placeholder:"Proxy password",name:"proxyPassword",maxlength:"300",type:"checkbox"},domProps:{checked:Array.isArray(e.defaults.proxyPassword)?e._i(e.defaults.proxyPassword,null)>-1:e.defaults.proxyPassword},on:{change:function(t){var s=e.defaults.proxyPassword,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"proxyPassword",s.concat([null])):i>-1&&e.$set(e.defaults,"proxyPassword",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"proxyPassword",n)}}}):"radio"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.proxyPassword,expression:"defaults.proxyPassword"}],ref:"proxyPassword",staticClass:"input",attrs:{id:"connect:proxyPassword",placeholder:"Proxy password",name:"proxyPassword",maxlength:"300",type:"radio"},domProps:{checked:e._q(e.defaults.proxyPassword,null)},on:{change:function(t){return e.$set(e.defaults,"proxyPassword",null)}}}):s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.proxyPassword,expression:"defaults.proxyPassword"}],ref:"proxyPassword",staticClass:"input",attrs:{id:"connect:proxyPassword",placeholder:"Proxy password",name:"proxyPassword",maxlength:"300",type:t.isVisible?"text":"password"},domProps:{value:e.defaults.proxyPassword},on:{input:function(t){t.target.composing||e.$set(e.defaults,"proxyPassword",t.target.value)}}})]}}],null,!1,795539612)})],1)]:e._e()],s("h2",[e._v("User preferences")]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:nick"}},[e._v("Nick")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.nick,expression:"defaults.nick"}],staticClass:"input nick",attrs:{id:"connect:nick",name:"nick",pattern:"[^\\s:!@]+",maxlength:"100",required:""},domProps:{value:e.defaults.nick},on:{input:[function(t){t.target.composing||e.$set(e.defaults,"nick",t.target.value)},e.onNickChanged]}})]),e.config.useHexIp?e._e():[s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:username"}},[e._v("Username")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.username,expression:"defaults.username"}],ref:"usernameInput",staticClass:"input username",attrs:{id:"connect:username",name:"username",maxlength:"100"},domProps:{value:e.defaults.username},on:{input:function(t){t.target.composing||e.$set(e.defaults,"username",t.target.value)}}})])],s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:realname"}},[e._v("Real name")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.realname,expression:"defaults.realname"}],staticClass:"input",attrs:{id:"connect:realname",name:"realname",maxlength:"300"},domProps:{value:e.defaults.realname},on:{input:function(t){t.target.composing||e.$set(e.defaults,"realname",t.target.value)}}})]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:leaveMessage"}},[e._v("Leave message")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.leaveMessage,expression:"defaults.leaveMessage"}],staticClass:"input",attrs:{id:"connect:leaveMessage",autocomplete:"off",name:"leaveMessage",placeholder:"The Lounge - https://thelounge.chat"},domProps:{value:e.defaults.leaveMessage},on:{input:function(t){t.target.composing||e.$set(e.defaults,"leaveMessage",t.target.value)}}})]),e.defaults.uuid&&!e.$store.state.serverConfiguration.public?[s("div",{staticClass:"connect-row"},[e._m(0),s("textarea",{ref:"commandsInput",staticClass:"input",attrs:{id:"connect:commands",autocomplete:"off",name:"commands"},domProps:{value:e.defaults.commands?e.defaults.commands.join("\n"):""},on:{input:e.resizeCommandsInput}})])]:e.defaults.uuid?e._e():[s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:channels"}},[e._v("Channels")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.join,expression:"defaults.join"}],staticClass:"input",attrs:{id:"connect:channels",name:"join"},domProps:{value:e.defaults.join},on:{input:function(t){t.target.composing||e.$set(e.defaults,"join",t.target.value)}}})])],e.$store.state.serverConfiguration.public?[e.config.lockNetwork?[s("div",{staticClass:"connect-row"},[s("label"),s("div",{staticClass:"input-wrap"},[s("label",{staticClass:"tls"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.displayPasswordField,expression:"displayPasswordField"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.displayPasswordField)?e._i(e.displayPasswordField,null)>-1:e.displayPasswordField},on:{change:function(t){var s=e.displayPasswordField,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&(e.displayPasswordField=s.concat([null])):i>-1&&(e.displayPasswordField=s.slice(0,i).concat(s.slice(i+1)))}else e.displayPasswordField=n}}}),e._v("\n\t\t\t\t\t\t\t\tI have a password\n\t\t\t\t\t\t\t")])])]),e.displayPasswordField?s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:password"}},[e._v("Password")]),s("RevealPassword",{staticClass:"input-wrap password-container",scopedSlots:e._u([{key:"default",fn:function(t){return["checkbox"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],ref:"publicPassword",staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:"checkbox"},domProps:{checked:Array.isArray(e.defaults.password)?e._i(e.defaults.password,null)>-1:e.defaults.password},on:{change:function(t){var s=e.defaults.password,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"password",s.concat([null])):i>-1&&e.$set(e.defaults,"password",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"password",n)}}}):"radio"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],ref:"publicPassword",staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:"radio"},domProps:{checked:e._q(e.defaults.password,null)},on:{change:function(t){return e.$set(e.defaults,"password",null)}}}):s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.password,expression:"defaults.password"}],ref:"publicPassword",staticClass:"input",attrs:{id:"connect:password",placeholder:"Server password (optional)",name:"password",maxlength:"300",type:t.isVisible?"text":"password"},domProps:{value:e.defaults.password},on:{input:function(t){t.target.composing||e.$set(e.defaults,"password",t.target.value)}}})]}}],null,!1,3690454971)})],1):e._e()]:e._e()]:[s("h2",{attrs:{id:"label-auth"}},[e._v("Authentication")]),s("div",{staticClass:"connect-row connect-auth",attrs:{role:"group","aria-labelledby":"label-auth"}},[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"radio",name:"sasl",value:""},domProps:{checked:!e.defaults.sasl},on:{change:function(t){return e.setSaslAuth("")}}}),e._v("\n\t\t\t\t\t\tNo authentication\n\t\t\t\t\t")]),s("label",{staticClass:"opt"},[s("input",{attrs:{type:"radio",name:"sasl",value:"plain"},domProps:{checked:"plain"===e.defaults.sasl},on:{change:function(t){return e.setSaslAuth("plain")}}}),e._v("\n\t\t\t\t\t\tUsername + password (SASL PLAIN)\n\t\t\t\t\t")]),!e.$store.state.serverConfiguration.public&&e.defaults.tls?s("label",{staticClass:"opt"},[s("input",{attrs:{type:"radio",name:"sasl",value:"external"},domProps:{checked:"external"===e.defaults.sasl},on:{change:function(t){return e.setSaslAuth("external")}}}),e._v("\n\t\t\t\t\t\tClient certificate (SASL EXTERNAL)\n\t\t\t\t\t")]):e._e()]),"plain"===e.defaults.sasl?[s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:username"}},[e._v("Account")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.saslAccount,expression:"defaults.saslAccount"}],staticClass:"input",attrs:{id:"connect:saslAccount",name:"saslAccount",maxlength:"100",required:""},domProps:{value:e.defaults.saslAccount},on:{input:function(t){t.target.composing||e.$set(e.defaults,"saslAccount",t.target.value)}}})]),s("div",{staticClass:"connect-row"},[s("label",{attrs:{for:"connect:password"}},[e._v("Password")]),s("RevealPassword",{staticClass:"input-wrap password-container",scopedSlots:e._u([{key:"default",fn:function(t){return["checkbox"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.saslPassword,expression:"defaults.saslPassword"}],staticClass:"input",attrs:{id:"connect:saslPassword",name:"saslPassword",maxlength:"300",required:"",type:"checkbox"},domProps:{checked:Array.isArray(e.defaults.saslPassword)?e._i(e.defaults.saslPassword,null)>-1:e.defaults.saslPassword},on:{change:function(t){var s=e.defaults.saslPassword,a=t.target,n=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(e.defaults,"saslPassword",s.concat([null])):i>-1&&e.$set(e.defaults,"saslPassword",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(e.defaults,"saslPassword",n)}}}):"radio"==(t.isVisible?"text":"password")?s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.saslPassword,expression:"defaults.saslPassword"}],staticClass:"input",attrs:{id:"connect:saslPassword",name:"saslPassword",maxlength:"300",required:"",type:"radio"},domProps:{checked:e._q(e.defaults.saslPassword,null)},on:{change:function(t){return e.$set(e.defaults,"saslPassword",null)}}}):s("input",{directives:[{name:"model",rawName:"v-model",value:e.defaults.saslPassword,expression:"defaults.saslPassword"}],staticClass:"input",attrs:{id:"connect:saslPassword",name:"saslPassword",maxlength:"300",required:"",type:t.isVisible?"text":"password"},domProps:{value:e.defaults.saslPassword},on:{input:function(t){t.target.composing||e.$set(e.defaults,"saslPassword",t.target.value)}}})]}}],null,!1,3144405648)})],1)]:"external"===e.defaults.sasl?s("div",{staticClass:"connect-sasl-external"},[s("p",[e._v("The Lounge automatically generates and manages the client certificate.")]),s("p",[e._v("\n\t\t\t\t\t\tOn the IRC server, you will need to tell the services to attach the\n\t\t\t\t\t\tcertificate fingerprint (certfp) to your account, for example:\n\t\t\t\t\t")]),e._m(1)]):e._e()],s("div",[s("button",{staticClass:"btn",attrs:{type:"submit",disabled:!!e.disabled}},[e.defaults.uuid?[e._v("Save network")]:[e._v("Connect")]],2)])],2)])}),[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("label",{attrs:{for:"connect:commands"}},[e._v("\n\t\t\t\t\t\tCommands\n\t\t\t\t\t\t"),s("span",{staticClass:"tooltipped tooltipped-ne tooltipped-no-delay",attrs:{"aria-label":"One /command per line.\nEach command will be executed in\nthe server tab on new connection"}},[s("button",{staticClass:"extra-help"})])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("pre",[s("code",[e._v("/msg NickServ CERT ADD")])])}],!1,null,null,null).exports,g={name:"Connect",components:{NetworkForm:m},props:{queryParams:Object},data(){return{disabled:!1,defaults:Object.assign({},this.$store.state.serverConfiguration.defaults,this.parseOverrideParams(this.queryParams))}},methods:{handleSubmit(e){this.disabled=!0,o.Z.emit("network:new",e)},parseOverrideParams(e){const t={};for(let s of Object.keys(e)){let a=e[s];if(Array.isArray(a)&&(a=a[0]),"channels"===s&&(s="join"),Object.prototype.hasOwnProperty.call(this.$store.state.serverConfiguration.defaults,s)&&(!this.$store.state.serverConfiguration.lockNetwork||!["name","host","port","tls","rejectUnauthorized"].includes(s)))switch("join"===s&&(a=a.split(",").map((e=>e.match(/^[#&!+]/)?e:`#${e}`)).join(", ")),typeof this.$store.state.serverConfiguration.defaults[s]){case"boolean":t[s]="0"!==a&&"false"!==a&&!!a;break;case"number":t[s]=Number(a);break;case"string":t[s]=String(a)}}return t}}},f=(0,l.Z)(g,(function(){var e=this,t=e.$createElement;return(e._self._c||t)("NetworkForm",{attrs:{"handle-submit":e.handleSubmit,defaults:e.defaults,disabled:e.disabled}})}),[],!1,null,null,null).exports;var _=s(1615),v=s(9617),w=s(8477);const b={name:"Session",props:{session:Object},computed:{lastUse(){return(0,v.Z)(this.session.lastUse)}},methods:{signOut(){this.session.current?(o.Z.emit("sign-out"),w.Z.signout()):o.Z.emit("sign-out",this.session.token)}}},k=(0,l.Z)(b,(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"session-item"},[s("div",{staticClass:"session-item-info"},[s("strong",[e._v(e._s(e.session.agent))]),s("a",{attrs:{href:"https://ipinfo.io/"+e.session.ip,target:"_blank",rel:"noopener"}},[e._v(e._s(e.session.ip))]),e.session.active>1?s("p",{staticClass:"session-usage"},[e._v("\n\t\t\tActive in "+e._s(e.session.active)+" browsers\n\t\t")]):e.session.current||e.session.active?e._e():s("p",{staticClass:"session-usage"},[e._v("\n\t\t\tLast used on "),s("time",[e._v(e._s(e.lastUse))])])]),s("div",{staticClass:"session-item-btn"},[s("button",{staticClass:"btn",on:{click:function(t){return t.preventDefault(),e.signOut(t)}}},[e.session.current?[e._v("Sign out")]:[e._v("Revoke")]],2)])])}),[],!1,null,null,null).exports;let y=null;window.addEventListener("beforeinstallprompt",(e=>{e.preventDefault(),y=e}));const C={name:"Settings",components:{RevealPassword:c,Session:k,SidebarToggle:h},data:()=>({canRegisterProtocol:!1,passwordChangeStatus:null,passwordErrors:{missing_fields:"Please enter a new password",password_mismatch:"Both new password fields must match",password_incorrect:"The current password field does not match your account password",update_failed:"Failed to update your password"},isIOS:navigator.platform.match(/(iPhone|iPod|iPad)/i)||!1}),computed:{hasInstallPromptEvent:()=>null!==y,currentSession(){return this.$store.state.sessions.find((e=>e.current))},activeSessions(){return this.$store.state.sessions.filter((e=>!e.current&&e.active>0))},otherSessions(){return this.$store.state.sessions.filter((e=>!e.current&&!e.active))}},mounted(){o.Z.emit("sessions:get"),this.canRegisterProtocol=window.navigator.registerProtocolHandler&&!this.$store.state.serverConfiguration.lockNetwork},methods:{onChange(e){const t=e.target.name;if(["old_password","new_password","verify_password"].includes(t))return;let s;s="checkbox"===e.target.type?e.target.checked:e.target.value,this.$store.dispatch("settings/update",{name:t,value:s,sync:!0})},changePassword(){const e=new FormData(this.$refs.settingsForm),t={old_password:e.get("old_password"),new_password:e.get("new_password"),verify_password:e.get("verify_password")};t.old_password&&t.new_password&&t.verify_password?t.new_password===t.verify_password?(o.Z.once("change-password",(e=>{this.passwordChangeStatus=e})),o.Z.emit("change-password",t)):this.passwordChangeStatus={success:!1,error:"password_mismatch"}:this.passwordChangeStatus={success:!1,error:"missing_fields"}},onForceSyncClick(){this.$store.dispatch("settings/syncAll",!0),this.$store.dispatch("settings/update",{name:"syncSettings",value:!0,sync:!0})},registerProtocol(){const e=document.location.origin+document.location.pathname+"?uri=%s";window.navigator.registerProtocolHandler("irc",e,"The Lounge"),window.navigator.registerProtocolHandler("ircs",e,"The Lounge")},nativeInstallPrompt(){y.prompt(),y=null},playNotification(){const e=new Audio;e.src="audio/pop.wav",e.play()},onPushButtonClick(){_.Z.togglePushSubscription()}}},x=(0,l.Z)(C,(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"window",attrs:{id:"settings",role:"tabpanel","aria-label":"Settings"}},[s("div",{staticClass:"header"},[s("SidebarToggle")],1),s("form",{ref:"settingsForm",staticClass:"container",attrs:{autocomplete:"off"},on:{change:e.onChange,submit:function(e){e.preventDefault()}}},[s("h1",{staticClass:"title"},[e._v("Settings")]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"advanced"},domProps:{checked:e.$store.state.settings.advanced}}),e._v("\n\t\t\t\t\tAdvanced settings\n\t\t\t\t")])]),e.canRegisterProtocol||e.hasInstallPromptEvent?s("div",[s("h2",[e._v("Native app")]),e.hasInstallPromptEvent?s("button",{staticClass:"btn",attrs:{type:"button"},on:{click:function(t){return t.preventDefault(),e.nativeInstallPrompt(t)}}},[e._v("\n\t\t\t\t\tAdd The Lounge to Home screen\n\t\t\t\t")]):e._e(),e.canRegisterProtocol?s("button",{staticClass:"btn",attrs:{type:"button"},on:{click:function(t){return t.preventDefault(),e.registerProtocol(t)}}},[e._v("\n\t\t\t\t\tOpen irc:// URLs with The Lounge\n\t\t\t\t")]):e._e()]):e._e(),!e.$store.state.serverConfiguration.public&&e.$store.state.settings.advanced?s("div",[s("h2",[e._v("Settings synchronisation")]),s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"syncSettings"},domProps:{checked:e.$store.state.settings.syncSettings}}),e._v("\n\t\t\t\t\tSynchronize settings with other clients\n\t\t\t\t")]),e.$store.state.settings.syncSettings?e._e():[e.$store.state.serverHasSettings?s("div",{staticClass:"settings-sync-panel"},[e._m(0),s("p",[e._v("\n\t\t\t\t\t\t\tUse the button below to enable synchronization, and override any\n\t\t\t\t\t\t\tsettings already synced to the server.\n\t\t\t\t\t\t")]),s("button",{staticClass:"btn btn-small",attrs:{type:"button"},on:{click:e.onForceSyncClick}},[e._v("\n\t\t\t\t\t\t\tSync settings and enable\n\t\t\t\t\t\t")])]):s("div",{staticClass:"settings-sync-panel"},[e._m(1)])]],2):e._e(),s("h2",[e._v("Messages")]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"motd"},domProps:{checked:e.$store.state.settings.motd}}),e._v("\n\t\t\t\t\tShow "),s("abbr",{attrs:{title:"Message Of The Day"}},[e._v("MOTD")])])]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"showSeconds"},domProps:{checked:e.$store.state.settings.showSeconds}}),e._v("\n\t\t\t\t\tInclude seconds in timestamp\n\t\t\t\t")])]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"use12hClock"},domProps:{checked:e.$store.state.settings.use12hClock}}),e._v("\n\t\t\t\t\tUse 12-hour timestamps\n\t\t\t\t")])]),!e.$store.state.serverConfiguration.public&&e.$store.state.settings.advanced?s("div",[s("h2",[e._v("Automatic away message")]),s("label",{staticClass:"opt"},[s("label",{staticClass:"sr-only",attrs:{for:"awayMessage"}},[e._v("Automatic away message")]),s("input",{staticClass:"input",attrs:{id:"awayMessage",type:"text",name:"awayMessage",placeholder:"Away message if The Lounge is not open"},domProps:{value:e.$store.state.settings.awayMessage}})])]):e._e(),e._m(2),s("div",{attrs:{role:"group","aria-labelledby":"label-status-messages"}},[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"radio",name:"statusMessages",value:"shown"},domProps:{checked:"shown"===e.$store.state.settings.statusMessages}}),e._v("\n\t\t\t\t\tShow all status messages individually\n\t\t\t\t")]),s("label",{staticClass:"opt"},[s("input",{attrs:{type:"radio",name:"statusMessages",value:"condensed"},domProps:{checked:"condensed"===e.$store.state.settings.statusMessages}}),e._v("\n\t\t\t\t\tCondense status messages together\n\t\t\t\t")]),s("label",{staticClass:"opt"},[s("input",{attrs:{type:"radio",name:"statusMessages",value:"hidden"},domProps:{checked:"hidden"===e.$store.state.settings.statusMessages}}),e._v("\n\t\t\t\t\tHide all status messages\n\t\t\t\t")])]),s("h2",[e._v("Visual Aids")]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"coloredNicks"},domProps:{checked:e.$store.state.settings.coloredNicks}}),e._v("\n\t\t\t\t\tEnable colored nicknames\n\t\t\t\t")]),s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"autocomplete"},domProps:{checked:e.$store.state.settings.autocomplete}}),e._v("\n\t\t\t\t\tEnable autocomplete\n\t\t\t\t")])]),e.$store.state.settings.advanced?s("div",[s("label",{staticClass:"opt"},[e._m(3),s("input",{staticClass:"input",attrs:{id:"nickPostfix",type:"text",name:"nickPostfix",placeholder:"Nick autocomplete postfix (e.g. ', ')"},domProps:{value:e.$store.state.settings.nickPostfix}})])]):e._e(),s("h2",[e._v("Theme")]),s("div",[s("label",{staticClass:"sr-only",attrs:{for:"theme-select"}},[e._v("Theme")]),s("select",{staticClass:"input",attrs:{id:"theme-select",name:"theme"},domProps:{value:e.$store.state.settings.theme}},e._l(e.$store.state.serverConfiguration.themes,(function(t){return s("option",{key:t.name,domProps:{value:t.name}},[e._v("\n\t\t\t\t\t\t"+e._s(t.displayName)+"\n\t\t\t\t\t")])})),0)]),e.$store.state.serverConfiguration.prefetch?[s("h2",[e._v("Link previews")]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"media"},domProps:{checked:e.$store.state.settings.media}}),e._v("\n\t\t\t\t\t\tAuto-expand media\n\t\t\t\t\t")])]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"links"},domProps:{checked:e.$store.state.settings.links}}),e._v("\n\t\t\t\t\t\tAuto-expand websites\n\t\t\t\t\t")])])]:e._e(),e.$store.state.settings.advanced&&e.$store.state.serverConfiguration.fileUpload?s("div",[s("h2",[e._v("File uploads")]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"uploadCanvas"},domProps:{checked:e.$store.state.settings.uploadCanvas}}),e._v("\n\t\t\t\t\t\tAttempt to remove metadata from images before uploading\n\t\t\t\t\t\t"),e._m(4)])])]):e._e(),e.$store.state.serverConfiguration.public?e._e():[s("h2",[e._v("Push Notifications")]),s("div",[s("button",{staticClass:"btn",attrs:{id:"pushNotifications",type:"button",disabled:"supported"!==e.$store.state.pushNotificationState&&"subscribed"!==e.$store.state.pushNotificationState},on:{click:e.onPushButtonClick}},["subscribed"===e.$store.state.pushNotificationState?[e._v("\n\t\t\t\t\t\t\tUnsubscribe from push notifications\n\t\t\t\t\t\t")]:"loading"===e.$store.state.pushNotificationState?[e._v("\n\t\t\t\t\t\t\tLoading…\n\t\t\t\t\t\t")]:[e._v(" Subscribe to push notifications ")]],2),"nohttps"===e.$store.state.pushNotificationState?s("div",{staticClass:"error"},[s("strong",[e._v("Warning")]),e._v(": Push notifications are only supported over HTTPS\n\t\t\t\t\t\tconnections.\n\t\t\t\t\t")]):e._e(),"unsupported"===e.$store.state.pushNotificationState?s("div",{staticClass:"error"},[s("strong",[e._v("Warning")]),e._v(":\n\t\t\t\t\t\t"),s("span",[e._v("Push notifications are not supported by your browser.")]),e.isIOS?s("div",{staticClass:"apple-push-unsupported"},[e._v("\n\t\t\t\t\t\t\tSafari does\n\t\t\t\t\t\t\t"),s("a",{attrs:{href:"https://bugs.webkit.org/show_bug.cgi?id=182566",target:"_blank",rel:"noopener"}},[e._v("not support the web push notification specification")]),e._v(", and because all browsers on iOS use Safari under the hood, The Lounge\n\t\t\t\t\t\t\tis unable to provide push notifications on iOS devices.\n\t\t\t\t\t\t")]):e._e()]):e._e()])],s("h2",[e._v("Browser Notifications")]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{id:"desktopNotifications",disabled:"nohttps"===e.$store.state.desktopNotificationState,type:"checkbox",name:"desktopNotifications"},domProps:{checked:e.$store.state.settings.desktopNotifications}}),e._v("\n\t\t\t\t\tEnable browser notifications"),s("br"),"unsupported"===e.$store.state.desktopNotificationState?s("div",{staticClass:"error"},[s("strong",[e._v("Warning")]),e._v(": Notifications are not supported by your browser.\n\t\t\t\t\t")]):e._e(),"nohttps"===e.$store.state.desktopNotificationState?s("div",{staticClass:"error",attrs:{id:"warnBlockedDesktopNotifications"}},[s("strong",[e._v("Warning")]),e._v(": Notifications are only supported over HTTPS\n\t\t\t\t\t\tconnections.\n\t\t\t\t\t")]):e._e(),"blocked"===e.$store.state.desktopNotificationState?s("div",{staticClass:"error",attrs:{id:"warnBlockedDesktopNotifications"}},[s("strong",[e._v("Warning")]),e._v(": Notifications are blocked by your browser.\n\t\t\t\t\t")]):e._e()])]),s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"notification"},domProps:{checked:e.$store.state.settings.notification}}),e._v("\n\t\t\t\t\tEnable notification sound\n\t\t\t\t")])]),s("div",[s("div",{staticClass:"opt"},[s("button",{attrs:{id:"play"},on:{click:function(t){return t.preventDefault(),e.playNotification(t)}}},[e._v("Play sound")])])]),e.$store.state.settings.advanced?s("div",[s("label",{staticClass:"opt"},[s("input",{attrs:{type:"checkbox",name:"notifyAllMessages"},domProps:{checked:e.$store.state.settings.notifyAllMessages}}),e._v("\n\t\t\t\t\tEnable notification for all messages\n\t\t\t\t")])]):e._e(),!e.$store.state.serverConfiguration.public&&e.$store.state.settings.advanced?s("div",[s("label",{staticClass:"opt"},[e._m(5),s("input",{staticClass:"input",attrs:{id:"highlights",type:"text",name:"highlights",autocomplete:"off",placeholder:"Comma-separated, e.g.: word, some more words, anotherword"},domProps:{value:e.$store.state.settings.highlights}})])]):e._e(),!e.$store.state.serverConfiguration.public&&e.$store.state.settings.advanced?s("div",[s("label",{staticClass:"opt"},[e._m(6),s("input",{staticClass:"input",attrs:{id:"highlightExceptions",type:"text",name:"highlightExceptions",autocomplete:"off",placeholder:"Comma-separated, e.g.: word, some more words, anotherword"},domProps:{value:e.$store.state.settings.highlightExceptions}})])]):e._e(),e.$store.state.serverConfiguration.public||e.$store.state.serverConfiguration.ldapEnabled?e._e():s("div",{attrs:{id:"change-password",role:"group","aria-labelledby":"label-change-password"}},[s("h2",{attrs:{id:"label-change-password"}},[e._v("Change password")]),s("div",{staticClass:"password-container"},[s("label",{staticClass:"sr-only",attrs:{for:"current-password"}},[e._v(" Enter current password ")]),s("RevealPassword",{scopedSlots:e._u([{key:"default",fn:function(e){return[s("input",{staticClass:"input",attrs:{id:"current-password",autocomplete:"current-password",type:e.isVisible?"text":"password",name:"old_password",placeholder:"Enter current password"}})]}}],null,!1,3685841584)})],1),s("div",{staticClass:"password-container"},[s("label",{staticClass:"sr-only",attrs:{for:"new-password"}},[e._v(" Enter desired new password ")]),s("RevealPassword",{scopedSlots:e._u([{key:"default",fn:function(e){return[s("input",{staticClass:"input",attrs:{id:"new-password",type:e.isVisible?"text":"password",name:"new_password",autocomplete:"new-password",placeholder:"Enter desired new password"}})]}}],null,!1,2370278294)})],1),s("div",{staticClass:"password-container"},[s("label",{staticClass:"sr-only",attrs:{for:"new-password-verify"}},[e._v(" Repeat new password ")]),s("RevealPassword",{scopedSlots:e._u([{key:"default",fn:function(e){return[s("input",{staticClass:"input",attrs:{id:"new-password-verify",type:e.isVisible?"text":"password",name:"verify_password",autocomplete:"new-password",placeholder:"Repeat new password"}})]}}],null,!1,1162600176)})],1),e.passwordChangeStatus&&e.passwordChangeStatus.success?s("div",{staticClass:"feedback success"},[e._v("\n\t\t\t\t\tSuccessfully updated your password\n\t\t\t\t")]):e.passwordChangeStatus&&e.passwordChangeStatus.error?s("div",{staticClass:"feedback error"},[e._v("\n\t\t\t\t\t"+e._s(e.passwordErrors[e.passwordChangeStatus.error])+"\n\t\t\t\t")]):e._e(),s("div",[s("button",{staticClass:"btn",attrs:{type:"submit"},on:{click:function(t){return t.preventDefault(),e.changePassword(t)}}},[e._v("\n\t\t\t\t\t\tChange password\n\t\t\t\t\t")])])]),e.$store.state.settings.advanced?s("div",[s("h2",[e._v("Custom Stylesheet")]),s("label",{staticClass:"sr-only",attrs:{for:"user-specified-css-input"}},[e._v("\n\t\t\t\t\tCustom stylesheet. You can override any style with CSS here.\n\t\t\t\t")]),s("textarea",{staticClass:"input",attrs:{id:"user-specified-css-input",name:"userStyles",placeholder:"/* You can override any style with CSS here */"},domProps:{value:e.$store.state.settings.userStyles}})]):e._e(),e.$store.state.serverConfiguration.public?e._e():s("div",{staticClass:"session-list",attrs:{role:"group"}},[s("h2",[e._v("Sessions")]),s("h3",[e._v("Current session")]),e.currentSession?s("Session",{attrs:{session:e.currentSession}}):e._e(),e.activeSessions.length>0?[s("h3",[e._v("Active sessions")]),e._l(e.activeSessions,(function(e){return s("Session",{key:e.token,attrs:{session:e}})}))]:e._e(),s("h3",[e._v("Other sessions")]),0===e.$store.state.sessions.length?s("p",[e._v("Loading…")]):0===e.otherSessions.length?s("p",[s("em",[e._v("You are not currently logged in to any other device.")])]):e._l(e.otherSessions,(function(e){return s("Session",{key:e.token,attrs:{session:e}})}))],2)],2)])}),[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("p",[s("strong",[e._v("Warning:")]),e._v(" Checking this box will override the settings\n\t\t\t\t\t\t\tof this client with those stored on the server.\n\t\t\t\t\t\t")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("p",[s("strong",[e._v("Warning:")]),e._v(" No settings have been synced before. Enabling\n\t\t\t\t\t\t\tthis will sync all settings of this client as the base for other\n\t\t\t\t\t\t\tclients.\n\t\t\t\t\t\t")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h2",{attrs:{id:"label-status-messages"}},[e._v("\n\t\t\t\tStatus messages\n\t\t\t\t"),s("span",{staticClass:"tooltipped tooltipped-n tooltipped-no-delay",attrs:{"aria-label":"Joins, parts, quits, kicks, nick changes, and mode changes"}},[s("button",{staticClass:"extra-help"})])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("label",{staticClass:"opt",attrs:{for:"nickPostfix"}},[e._v("\n\t\t\t\t\t\tNick autocomplete postfix\n\t\t\t\t\t\t"),s("span",{staticClass:"tooltipped tooltipped-n tooltipped-no-delay",attrs:{"aria-label":"Nick autocomplete postfix (for example a comma)"}},[s("button",{staticClass:"extra-help"})])])},function(){var e=this.$createElement,t=this._self