diff --git a/CHANGELOG.md b/CHANGELOG.md index beeef61..2854a58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# [0.3.0](https://github.com/socketio/socket.io-admin-ui/compare/0.2.0...0.3.0) (2022-05-03) + + +### Features + +* add navigation drawer for mobile devices ([#31](https://github.com/socketio/socket.io-admin-ui/issues/31)) ([62e1467](https://github.com/socketio/socket.io-admin-ui/commit/62e146709f1b4ceee86b6c9d414d0538b2991833)) +* add socket data in the UI ([#37](https://github.com/socketio/socket.io-admin-ui/issues/37)) ([3773fe4](https://github.com/socketio/socket.io-admin-ui/commit/3773fe4b1cbf2206708e1f21ce65f430a522527f)) +* add support for the msgpack parser ([4359536](https://github.com/socketio/socket.io-admin-ui/commit/4359536a4b9c09395c52ac7e983123f02043ac5c)) +* **ui:** improve Bengali (বাংলা) translation ([#27](https://github.com/socketio/socket.io-admin-ui/issues/27)) ([925c617](https://github.com/socketio/socket.io-admin-ui/commit/925c617af10996b7e31709d74afb340701104fc0)) + + + # [0.2.0](https://github.com/socketio/socket.io-admin-ui/compare/0.1.2...0.2.0) (2021-06-11) diff --git a/package.json b/package.json index 1f9e071..f5c1369 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@socket.io/admin-ui", - "version": "0.2.0", + "version": "0.3.0", "description": "Admin UI for Socket.IO", "files": [ "dist/", diff --git a/ui/dist/css/app.64cb6d3f.css b/ui/dist/css/app.4ba437f0.css similarity index 52% rename from ui/dist/css/app.64cb6d3f.css rename to ui/dist/css/app.4ba437f0.css index 9eb5ce9..7b92886 100644 --- a/ui/dist/css/app.64cb6d3f.css +++ b/ui/dist/css/app.4ba437f0.css @@ -1 +1 @@ -.chart[data-v-58987bf8],.chart[data-v-d6482f56]{max-width:160px;margin:20px}.select-room[data-v-d014ee1e],.selector[data-v-2c330798]{max-width:200px}.key-column[data-v-1a6e3452],.key-column[data-v-8d2424e4],.key-column[data-v-18284f59]{width:30%} \ No newline at end of file +.chart[data-v-58987bf8],.chart[data-v-d6482f56]{max-width:160px;margin:20px}.select-room[data-v-d014ee1e],.selector[data-v-2c330798]{max-width:200px}.key-column[data-v-8d2424e4],.key-column[data-v-41eb1dae],.key-column[data-v-18284f59]{width:30%} \ No newline at end of file diff --git a/ui/dist/index.html b/ui/dist/index.html index 67bc64b..6b9c39c 100644 --- a/ui/dist/index.html +++ b/ui/dist/index.html @@ -1 +1 @@ -Socket.IO Admin UI
\ No newline at end of file +Socket.IO Admin UI
\ No newline at end of file diff --git a/ui/dist/js/app.895ee6c7.js b/ui/dist/js/app.895ee6c7.js new file mode 100644 index 0000000..bd88be5 --- /dev/null +++ b/ui/dist/js/app.895ee6c7.js @@ -0,0 +1,2 @@ +(function(t){function e(e){for(var s,r,i=e[0],c=e[1],l=e[2],u=0,m=[];ue.meta.index?"v-slide-y-reverse-transition":"v-slide-y-transition":this.transitionName=t.meta.topLevel?"v-slide-x-transition":"v-slide-x-reverse-transition"}},methods:{tryConnect:function(t,e,n,s,a){var o=this;this.isConnecting=!0,Dt.socket&&(Dt.socket.disconnect(),Dt.socket.off("connect"),Dt.socket.off("connect_error"),Dt.socket.off("disconnect"));var r=Object(bt["a"])(t,{forceNew:!0,reconnection:!1,withCredentials:!0,transports:n?["websocket"]:["polling","websocket"],path:s,parser:"msgpack"===a?_t.a:null,auth:e});r.once("connect",(function(){o.showConnectionModal=!1,o.connectionError="",o.isConnecting=!1,r.io.reconnection(!0),o.$store.commit("connection/saveConfig",{serverUrl:t,wsOnly:n,path:s,parser:a}),Dt.socket=r,o.registerEventListeners(r)})),r.on("connect",(function(){o.$store.commit("connection/connect")})),r.on("connect_error",(function(t){(o.isConnecting||"invalid credentials"===t.message)&&(o.showConnectionModal=!0,o.connectionError=t.message),o.isConnecting=!1})),r.on("disconnect",(function(t){o.isConnecting&&(o.isConnecting=!1,o.connectionError=t),o.$store.commit("connection/disconnect")}))},registerEventListeners:function(t){var e=this;t.on("session",(function(t){e.$store.commit("connection/saveSessionId",t)})),t.on("config",(function(t){e.$store.commit("config/updateConfig",t)})),t.on("server_stats",(function(t){e.$store.commit("servers/onServerStats",t)})),t.on("all_sockets",(function(t){e.$store.commit("main/onAllSockets",t)})),t.on("socket_connected",(function(t){e.$store.commit("main/onSocketConnected",t)})),t.on("socket_updated",(function(t){e.$store.commit("main/onSocketUpdated",t)})),t.on("socket_disconnected",(function(t,n,s){e.$store.commit("main/onSocketDisconnected",{nsp:t,id:n,reason:s})})),t.on("room_joined",(function(t,n,s){e.$store.commit("main/onRoomJoined",{nsp:t,room:n,id:s})})),t.on("room_left",(function(t,n,s){e.$store.commit("main/onRoomLeft",{nsp:t,room:n,id:s})}))},onSubmit:function(t){this.tryConnect(t.serverUrl,{username:t.username,password:t.password},t.wsOnly,t.path,t.parser)}},created:function(){if(this.$vuetify.theme.dark=this.$store.state.config.darkTheme,this.serverUrl){var t=this.$store.state.connection.sessionId;this.tryConnect(this.serverUrl,{sessionId:t},this.wsOnly,this.path,this.parser)}else this.showConnectionModal=!0}},Rt=It,Nt=n("7496"),Pt=n("a523"),Et=n("f6c4"),Ut=Object(b["a"])(Rt,a,o,!1,null,null,null),Lt=Ut.exports;_()(Ut,{VApp:Nt["a"],VContainer:Pt["a"],VMain:Et["a"]});var Bt,Mt,At=n("8c4f"),qt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ClientsOverview")],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ServersOverview")],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("NamespacesOverview")],1)],1)],1)],1)},Ft=[],Ht=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",[n("v-card-title",{staticClass:"text-center"},[t._v(" "+t._s(t.$t("clients.title"))+" "),n("v-spacer"),n("v-btn",{attrs:{to:{name:"clients"},small:""}},[n("v-icon",[t._v("mdi-dots-horizontal")])],1)],1),n("v-card-text",[n("v-row",[n("Doughnut",{staticClass:"chart",attrs:{"chart-data":t.data}}),n("v-simple-table",{staticClass:"grow align-self-center",scopedSlots:t._u([{key:"default",fn:function(){return[n("tbody",[n("tr",[n("th",[t._v(t._s(t.$t("sockets.transport")))]),n("th",[t._v("#")])]),t._l(t.transports,(function(e){return n("tr",{key:e},[n("td",[n("Transport",{attrs:{transport:e}})],1),n("td",[n("div",[n("h2",[t._v(t._s(t.transportRepartition[e]||0))])]),n("div",[t._v(" "+t._s(t.percentage(t.transportRepartition[e]||0,t.clients.length))+" % ")])])])}))],2)]},proxy:!0}])})],1)],1)],1)},zt=[],Jt=(n("4de4"),n("d81d"),n("1fca")),Wt=Jt["b"].reactiveProp,Kt={extends:Jt["a"],mixins:[Wt],props:["options"],mounted:function(){this.renderChart(this.chartData,{legend:!1})}},Qt=Kt,Xt=Object(b["a"])(Qt,Bt,Mt,!1,null,null,null),Yt=Xt.exports,Zt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-chip",{attrs:{small:"",color:t.color,outlined:""}},[t._v(t._s(t.label))])},Gt=[],te={name:"Transport",props:{transport:String},computed:{label:function(){switch(this.transport){case"polling":return"HTTP long-polling";case"websocket":return"WebSocket";default:return this.transport}},color:function(){switch(this.transport){case"polling":return v["a"].orange.base;case"websocket":return v["a"].green.base;default:return v["a"].grey.base}}}},ee=te,ne=Object(b["a"])(ee,Zt,Gt,!1,null,null,null),se=ne.exports;_()(ne,{VChip:g["a"]});var ae=n("53ca"),oe=(n("a15b"),n("a434"),n("caad"),n("2532"),n("b680"),n("1c8f")),re=function(){var t="test";try{return localStorage.setItem(t,t),localStorage.removeItem(t),!0}catch(e){return!1}},ie=re();function ce(t){var e=Math.ceil(Math.max(t,0)),n=Math.floor(e/86400),s=Math.floor((e-86400*n)/3600),a=Math.floor((e-86400*n-3600*s)/60),o=Math.ceil(e)-86400*n-3600*s-60*a,r=[];return n>0&&r.push(n+"d"),(n>0||s>0)&&r.push(s+"h"),(n>0||s>0||a>0)&&r.push(a+"m"),r.push(o+"s"),r.join(" ")}function le(t,e){var n="object"===Object(ae["a"])(e)?Object(oe["a"])(t,e):t.indexOf(e);return-1===n?[]:t.splice(n,1)}function de(t,e){t.includes(e)||t.push(e)}function ue(t,e){return 0===e?0:(t/e*100).toFixed(1)}var me={name:"ClientsOverview",components:{Transport:se,Doughnut:Yt},data:function(){return{transports:["websocket","polling"]}},computed:Object(r["a"])(Object(r["a"])({},Object(l["d"])({clients:function(t){return t.main.clients},darkTheme:function(t){return t.config.darkTheme}})),{},{transportRepartition:function(){return this.clients.map((function(t){return t.sockets[0]})).filter((function(t){return!!t})).reduce((function(t,e){return t[e.transport]=t[e.transport]||0,t[e.transport]++,t}),{})},data:function(){return{labels:["WebSocket","HTTP long-polling"],datasets:[{backgroundColor:[v["a"].green.base,v["a"].orange.base],borderColor:this.darkTheme?"black":"white",data:[this.transportRepartition["websocket"],this.transportRepartition["polling"]]}]}}}),methods:{percentage:ue}},pe=me,ve=(n("1016"),n("0fd9")),fe=n("1f4f"),he=Object(b["a"])(pe,Ht,zt,!1,null,"58987bf8",null),be=he.exports;_()(he,{VBtn:I["a"],VCard:$t["a"],VCardText:Ot["a"],VCardTitle:Ot["b"],VIcon:lt["a"],VRow:ve["a"],VSimpleTable:fe["a"],VSpacer:N["a"]});var ke=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",[n("v-card-title",{staticClass:"text-center"},[t._v(" "+t._s(t.$t("servers.title"))+" "),n("v-spacer"),n("v-btn",{attrs:{to:{name:"servers"},small:""}},[n("v-icon",[t._v("mdi-dots-horizontal")])],1)],1),n("v-card-text",[n("v-row",[n("Doughnut",{staticClass:"chart",attrs:{"chart-data":t.data}}),n("v-simple-table",{staticClass:"grow align-self-center",scopedSlots:t._u([{key:"default",fn:function(){return[n("tbody",[n("tr",[n("th",[t._v(t._s(t.$t("status")))]),n("th",[t._v("#")])]),n("tr",[n("td",[n("ServerStatus",{attrs:{healthy:""}})],1),n("td",[n("div",[n("h2",[t._v(t._s(t.healthyServers))])]),n("div",[t._v(t._s(t.percentage(t.healthyServers,t.totalServers))+" %")])])]),n("tr",[n("td",[n("ServerStatus")],1),n("td",[n("div",[n("h2",[t._v(t._s(t.totalServers-t.healthyServers))])]),n("div",[t._v(" "+t._s(t.percentage(t.totalServers-t.healthyServers,t.totalServers))+" % ")])])])])]},proxy:!0}])})],1)],1)],1)},_e=[],ge=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Status",{attrs:{value:t.healthy,"ok-label":t.$t("servers.healthy"),"ko-label":t.$t("servers.unhealthy")}})},ye=[],Se={name:"ServerStatus",components:{Status:S},props:{healthy:Boolean}},Ce=Se,$e=Object(b["a"])(Ce,ge,ye,!1,null,null,null),Oe=$e.exports,xe={name:"ServersOverview",components:{ServerStatus:Oe,Doughnut:Yt},computed:Object(r["a"])(Object(r["a"])({},Object(l["d"])({healthyServers:function(t){return t.servers.servers.filter((function(t){return t.healthy})).length},totalServers:function(t){return t.servers.servers.length},darkTheme:function(t){return t.config.darkTheme}})),{},{data:function(){return{labels:[this.$t("servers.healthy"),this.$t("servers.unhealthy")],datasets:[{backgroundColor:[v["a"].green.base,v["a"].red.base],borderColor:this.darkTheme?"black":"white",data:[this.healthyServers,this.totalServers-this.healthyServers]}]}}}),methods:{percentage:ue}},je=xe,we=(n("db72"),Object(b["a"])(je,ke,_e,!1,null,"d6482f56",null)),Ve=we.exports;_()(we,{VBtn:I["a"],VCard:$t["a"],VCardText:Ot["a"],VCardTitle:Ot["b"],VIcon:lt["a"],VRow:ve["a"],VSimpleTable:fe["a"],VSpacer:N["a"]});var De=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",{staticClass:"text-center"},[t._v(" "+t._s(t.$t("namespaces"))+" "),n("v-spacer"),n("v-btn",{attrs:{to:{name:"sockets"},small:""}},[n("v-icon",[t._v("mdi-dots-horizontal")])],1)],1),n("v-simple-table",{scopedSlots:t._u([{key:"default",fn:function(){return[n("thead",[n("tr",[n("th",[t._v(t._s(t.$t("name")))]),n("th",[t._v(t._s(t.$t("rooms.sockets-count")))])])]),n("tbody",t._l(t.namespaces,(function(e){return n("tr",{key:e.name},[n("td",{staticClass:"key-column"},[n("code",[t._v(t._s(e.name))])]),n("td",[t._v(t._s(e.sockets.length))])])})),0)]},proxy:!0}])})],1)},Te=[],Ie=n("d66c"),Re={name:"NamespacesOverview",computed:Object(r["a"])({},Object(l["d"])({namespaces:function(t){return Object(Ie["a"])(t.main.namespaces,"name")}}))},Ne=Re,Pe=Object(b["a"])(Ne,De,Te,!1,null,"0de70938",null),Ee=Pe.exports;_()(Pe,{VBtn:I["a"],VCard:$t["a"],VCardTitle:Ot["b"],VIcon:lt["a"],VSimpleTable:fe["a"],VSpacer:N["a"]});var Ue={name:"Dashboard",components:{NamespacesOverview:Ee,ServersOverview:Ve,ClientsOverview:be},computed:{breadcrumbItems:function(){return[{text:this.$t("dashboard.title"),disabled:!0}]}}},Le=Ue,Be=n("2bc5"),Me=n("62ad"),Ae=Object(b["a"])(Le,qt,Ft,!1,null,null,null),qe=Ae.exports;_()(Ae,{VBreadcrumbs:Be["a"],VCol:Me["a"],VContainer:Pt["a"],VRow:ve["a"]});var Fe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-card-text",[n("NamespaceSelector")],1),n("v-data-table",{attrs:{headers:t.headers,items:t.sockets,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.transport",fn:function(t){var e=t.value;return[n("Transport",{attrs:{transport:e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.displayDetails")))])])]}}])})],1)],1)},He=[],ze=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-select",{staticClass:"selector",attrs:{value:t.selectedNamespace,items:t.namespaces,"item-text":"name","item-value":"name",label:t.$t("select-namespace"),"persistent-hint":"","return-object":""},on:{change:t.selectNamespace}})},Je=[],We={name:"NamespaceSelector",computed:Object(r["a"])({},Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},namespaces:function(t){return Object(Ie["a"])(t.main.namespaces,"name")}})),methods:Object(r["a"])({},Object(l["c"])("main",["selectNamespace"]))},Ke=We,Qe=(n("f712"),Object(b["a"])(Ke,ze,Je,!1,null,"2c330798",null)),Xe=Qe.exports;_()(Qe,{VSelect:H["a"]});var Ye={name:"Sockets",components:{Transport:se,NamespaceSelector:Xe},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])(Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("sockets.title"),disabled:!0}]},headers:function(){return[{text:"#",value:"id",align:"start"},{text:this.$t("sockets.address"),value:"handshake.address"},{text:this.$t("sockets.transport"),value:"transport"},{value:"actions",align:"end",sortable:!1}]}},Object(l["b"])("main",["sockets"])),Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnect:function(t){Dt.socket.emit("_disconnect",t.nsp,!1,t.id)},displayDetails:function(t){this.$router.push({name:"socket",params:{nsp:this.selectedNamespace.name,id:t.id}})}}},Ze=Ye,Ge=n("8fea"),tn=n("3a2f"),en=Object(b["a"])(Ze,Fe,He,!1,null,null,null),nn=en.exports;_()(en,{VBreadcrumbs:Be["a"],VBtn:I["a"],VCard:$t["a"],VCardText:Ot["a"],VDataTable:Ge["a"],VIcon:lt["a"],VTooltip:tn["a"]});var sn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),t.socket?n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("SocketDetails",{attrs:{socket:t.socket,client:t.client}})],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("InitialRequest",{attrs:{socket:t.socket}})],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("SocketRooms",{attrs:{socket:t.socket}})],1)],1)],1):t._e()],1)},an=[],on=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("rooms.title")))]),n("v-data-table",{attrs:{headers:t.headers,items:t.roomsAsObjects,dense:""},scopedSlots:t._u([{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketLeaveSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.leave(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.leave")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.displayDetails")))])])]}}])}),n("v-card-text",[n("form",{on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[n("v-combobox",{staticClass:"select-room d-inline-block mr-3",attrs:{"search-input":t.newRoom,label:t.$t("sockets.join-a-room"),items:t.availableRooms,"item-value":"name","item-text":"name",disabled:t.isReadonly,"return-object":!1},on:{"update:searchInput":function(e){t.newRoom=e},"update:search-input":function(e){t.newRoom=e}}}),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({attrs:{type:"submit",small:"",disabled:t.isReadonly}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-tag-plus-outline")])],1)]}}])},[n("span",[t._v(t._s(t.$t("sockets.join")))])])],1)])],1)},rn=[],cn=(n("fb6a"),n("1775")),ln={name:"SocketRooms",props:{socket:Object},data:function(){return{newRoom:""}},computed:Object(r["a"])(Object(r["a"])({headers:function(){return[{text:this.$t("id"),value:"name",align:"start"},{value:"actions",align:"end",sortable:!1}]},roomsAsObjects:function(){return this.socket.rooms.slice(0).sort().map((function(t){return{name:t}}))},availableRooms:function(){return Object(cn["a"])(this.findRoomsByNamespace(this.socket.nsp),this.roomsAsObjects,"name")}},Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},isReadonly:function(t){return t.config.readonly},isSocketLeaveSupported:function(t){return t.config.supportedFeatures.includes("LEAVE")},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),Object(l["b"])("main",["findRoomsByNamespace"])),methods:{emit:function(){},onSubmit:function(){Dt.socket.emit("join",this.socket.nsp,this.newRoom,this.socket.id),this.newRoom=""},leave:function(t){Dt.socket.emit("leave",this.socket.nsp,t.name,this.socket.id)},disconnect:function(){Dt.socket.emit("_disconnect",this.socket.nsp,!1,this.socket.id)},displayDetails:function(t){this.$router.push({name:"room",params:{nsp:this.socket.nsp,name:t.name}})}}},dn=ln,un=(n("633d"),n("2b5d")),mn=Object(b["a"])(dn,on,rn,!1,null,"d014ee1e",null),pn=mn.exports;_()(mn,{VBtn:I["a"],VCard:$t["a"],VCardText:Ot["a"],VCardTitle:Ot["b"],VCombobox:un["a"],VDataTable:Ge["a"],VIcon:lt["a"],VTooltip:tn["a"]});var vn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("details")))]),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.client")))])]),n("v-simple-table",{attrs:{dense:""}},[[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(" "+t._s(t.client.id)+" ")]),n("td",{attrs:{align:"right"}},[t.client.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.navigateToClient()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!1,898213143)},[n("span",[t._v(t._s(t.$t("clients.displayDetails")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("ConnectionStatus",{attrs:{connected:t.client.connected}})],1),n("td",{attrs:{align:"right"}},[t.isSocketDisconnectSupported&&t.client.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnectClient()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!1,1004975867)},[n("span",[t._v(t._s(t.$t("clients.disconnect")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.transport")))]),n("td",[n("Transport",{attrs:{transport:t.socket.transport}})],1),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.address")))]),n("td",[t._v(t._s(t.socket.handshake.address))]),n("td")])])]],2),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.socket")))])]),n("v-simple-table",{attrs:{dense:""},scopedSlots:t._u([{key:"default",fn:function(){return[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("namespace")))]),n("td",[n("code",[t._v(t._s(t.socket.nsp))])]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(t._s(t.socket.id))]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("data")))]),n("td",[n("pre",[n("code",[t._v(t._s(JSON.stringify(t.socket.data,null,2)))])])]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("ConnectionStatus",{attrs:{connected:t.socket.connected}})],1),n("td",{attrs:{align:"right"}},[t.isSocketDisconnectSupported&&t.socket.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnectSocket()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!1,2351110648)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.creation-date")))]),n("td",[t._v(t._s(t.creationDate))]),n("td")])])]},proxy:!0}])})],1)},fn=[],hn={name:"SocketDetails",components:{ConnectionStatus:x,Transport:se},props:{socket:Object,client:Object},computed:Object(r["a"])({creationDate:function(){return new Date(this.socket.handshake.issued).toISOString()}},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{navigateToClient:function(){this.$router.push({name:"client",params:{id:this.client.id}})},disconnectClient:function(){Dt.socket.emit("_disconnect",this.socket.nsp,!0,this.socket.id)},disconnectSocket:function(){Dt.socket.emit("_disconnect",this.socket.nsp,!1,this.socket.id)}}},bn=hn,kn=(n("59a4"),Object(b["a"])(bn,vn,fn,!1,null,"41eb1dae",null)),_n=kn.exports;_()(kn,{VBtn:I["a"],VCard:$t["a"],VCardText:Ot["a"],VCardTitle:Ot["b"],VIcon:lt["a"],VSimpleTable:fe["a"],VTooltip:tn["a"]});var gn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("sockets.initial-request")))]),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.headers")))])]),n("KeyValueTable",{attrs:{object:t.socket.handshake.headers}}),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.query-params")))])]),n("KeyValueTable",{attrs:{object:t.socket.handshake.query}})],1)},yn=[],Sn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-simple-table",{attrs:{dense:""},scopedSlots:t._u([{key:"default",fn:function(){return[n("thead",[n("tr",[n("th",[t._v(t._s(t.$t("name")))]),n("th",[t._v(t._s(t.$t("value")))])])]),n("tbody",t._l(t.items,(function(e){var s=e.key,a=e.value;return n("tr",{key:s},[n("td",{staticClass:"key-column"},[t._v(t._s(s))]),n("td",[t._v(t._s(a))])])})),0)]},proxy:!0}])})},Cn=[],$n=(n("b64b"),{name:"KeyValueTable",props:{object:Object},computed:{items:function(){var t=this,e=Object.keys(this.object);return e.sort().map((function(e){return{key:e,value:t.object[e]}}))}}}),On=$n,xn=(n("786c"),Object(b["a"])(On,Sn,Cn,!1,null,"18284f59",null)),jn=xn.exports;_()(xn,{VSimpleTable:fe["a"]});var wn={name:"InitialRequest",components:{KeyValueTable:jn},props:{socket:Object}},Vn=wn,Dn=Object(b["a"])(Vn,gn,yn,!1,null,null,null),Tn=Dn.exports;_()(Dn,{VCard:$t["a"],VCardText:Ot["a"],VCardTitle:Ot["b"]});var In={name:"Socket",components:{InitialRequest:Tn,SocketDetails:_n,SocketRooms:pn},data:function(){return{socket:null,client:null}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("sockets.title"),to:{name:"sockets"}},{text:this.$t("sockets.details"),disabled:!0}]}},Object(l["b"])("main",["findSocketById","findClientById"])),mounted:function(){this.socket=this.findSocketById(this.$route.params.nsp,this.$route.params.id),this.socket&&(this.client=this.findClientById(this.socket.clientId))}},Rn=In,Nn=Object(b["a"])(Rn,sn,an,!1,null,"14172ed0",null),Pn=Nn.exports;_()(Nn,{VBreadcrumbs:Be["a"],VCol:Me["a"],VContainer:Pt["a"],VRow:ve["a"]});var En=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-card-text",{staticClass:"d-flex"},[n("NamespaceSelector"),n("v-switch",{staticClass:"ml-3",attrs:{label:t.$t("rooms.show-private"),inset:"",dense:""},on:{change:t.onPrivateRoomsUpdate},model:{value:t.showPrivateRooms,callback:function(e){t.showPrivateRooms=e},expression:"showPrivateRooms"}})],1),n("v-data-table",{attrs:{headers:t.headers,items:t.filteredRooms,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.sockets",fn:function(e){var n=e.item;return[t._v(" "+t._s(n.sockets.length)+" ")]}},{key:"item.isPrivate",fn:function(t){var e=t.value;return[n("RoomType",{attrs:{"is-private":e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isMultiLeaveSupported&&!s.isPrivate?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.clear(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.clear")))])]):t._e(),t.isMultiDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.displayDetails")))])])]}}])})],1)],1)},Un=[],Ln=(n("5319"),n("ac1f"),function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Status",{attrs:{value:!t.isPrivate,"ok-label":t.$t("rooms.public"),"ko-label":t.$t("rooms.private")}})}),Bn=[],Mn={name:"RoomType",components:{Status:S},props:{isPrivate:Boolean}},An=Mn,qn=Object(b["a"])(An,Ln,Bn,!1,null,null,null),Fn=qn.exports,Hn={name:"Rooms",components:{RoomType:Fn,NamespaceSelector:Xe},data:function(){return{showPrivateRooms:!1,footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])(Object(r["a"])(Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("rooms.title"),disabled:!0}]},headers:function(){return[{text:this.$t("id"),value:"name",align:"start"},{text:this.$t("type"),value:"isPrivate"},{text:this.$t("rooms.sockets-count"),value:"sockets"},{value:"actions",align:"end",sortable:!1}]}},Object(l["b"])("main",["rooms"])),Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},isReadonly:function(t){return t.config.readonly},isMultiLeaveSupported:function(t){return t.config.supportedFeatures.includes("MLEAVE")},isMultiDisconnectSupported:function(t){return t.config.supportedFeatures.includes("MDISCONNECT")}})),{},{filteredRooms:function(){var t=this.showPrivateRooms?this.rooms:this.rooms.filter((function(t){return!t.isPrivate}));return Object(Ie["a"])(t,"name")}}),methods:{clear:function(t){Dt.socket.emit("leave",this.selectedNamespace.name,t.name)},disconnect:function(t){Dt.socket.emit("_disconnect",this.selectedNamespace.name,!1,t.name)},displayDetails:function(t){this.$router.push({name:"room",params:{nsp:this.selectedNamespace.name,name:t.name}})},onPrivateRoomsUpdate:function(t){var e=t?{p:1}:{};this.$router.replace({name:"rooms",query:e})}},mounted:function(){this.showPrivateRooms="1"===this.$route.query.p}},zn=Hn,Jn=Object(b["a"])(zn,En,Un,!1,null,null,null),Wn=Jn.exports;_()(Jn,{VBreadcrumbs:Be["a"],VBtn:I["a"],VCard:$t["a"],VCardText:Ot["a"],VDataTable:Ge["a"],VIcon:lt["a"],VSwitch:Y["a"],VTooltip:tn["a"]});var Kn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-data-table",{attrs:{headers:t.headers,items:t.clients,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.address",fn:function(e){var s=e.item;return[s.sockets.length?n("span",[t._v(t._s(s.sockets[0].handshake.address))]):t._e()]}},{key:"item.transport",fn:function(e){var s=e.item;return[s.sockets.length?n("Transport",{attrs:{transport:s.sockets[0].transport}}):t._e()]}},{key:"item.sockets",fn:function(e){var n=e.item;return[t._v(" "+t._s(n.sockets.length)+" ")]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("clients.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("clients.displayDetails")))])])]}}])})],1)],1)},Qn=[],Xn={name:"Clients",components:{Transport:se},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("clients.title"),disabled:!0}]},headers:function(){return[{text:"#",value:"id",align:"start"},{text:this.$t("sockets.address"),value:"address"},{text:this.$t("sockets.transport"),value:"transport"},{text:this.$t("clients.sockets-count"),value:"sockets"},{value:"actions",align:"end",sortable:!1}]}},Object(l["d"])({clients:function(t){return t.main.clients},isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnect:function(t){var e=t.sockets[0];e&&Dt.socket.emit("_disconnect",e.nsp,!0,e.id)},displayDetails:function(t){this.$router.push({name:"client",params:{id:t.id}})}}},Yn=Xn,Zn=Object(b["a"])(Yn,Kn,Qn,!1,null,null,null),Gn=Zn.exports;_()(Zn,{VBreadcrumbs:Be["a"],VBtn:I["a"],VCard:$t["a"],VDataTable:Ge["a"],VIcon:lt["a"],VTooltip:tn["a"]});var ts=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),t.client?n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ClientDetails",{attrs:{client:t.client,socket:t.socket}})],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[t.socket?n("InitialRequest",{attrs:{socket:t.socket}}):t._e()],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ClientSockets",{attrs:{sockets:t.client.sockets}})],1)],1)],1):t._e()],1)},es=[],ns=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("details")))]),n("v-simple-table",{attrs:{dense:""}},[[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(" "+t._s(t.client.id)+" ")]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("ConnectionStatus",{attrs:{connected:t.client.connected}})],1),n("td",{attrs:{align:"right"}},[t.isSocketDisconnectSupported&&t.client.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnectClient()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!1,1004975867)},[n("span",[t._v(t._s(t.$t("clients.disconnect")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.transport")))]),n("td",[n("Transport",{attrs:{transport:t.socket.transport}})],1),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.address")))]),n("td",[t._v(t._s(t.socket.handshake.address))]),n("td")])])]],2)],1)},ss=[],as={name:"ClientDetails",components:{ConnectionStatus:x,Transport:se},props:{client:Object,socket:Object},computed:Object(r["a"])({},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnectClient:function(){var t=this.client.sockets[0];t&&Dt.socket.emit("_disconnect",t.nsp,!0,t.id)}}},os=as,rs=(n("6602"),Object(b["a"])(os,ns,ss,!1,null,"8d2424e4",null)),is=rs.exports;_()(rs,{VBtn:I["a"],VCard:$t["a"],VCardTitle:Ot["b"],VIcon:lt["a"],VSimpleTable:fe["a"],VTooltip:tn["a"]});var cs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",[n("v-card-title",[t._v(t._s(t.$t("sockets.title")))]),n("v-data-table",{attrs:{headers:t.headers,items:t.sockets,dense:""},scopedSlots:t._u([{key:"item.nsp",fn:function(e){var s=e.value;return[n("code",[t._v(t._s(s))])]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.displayDetails")))])])]}}])})],1)},ls=[],ds={name:"ClientSockets",props:{sockets:Array},computed:Object(r["a"])({headers:function(){return[{text:"#",value:"id",align:"start"},{text:this.$t("namespace"),value:"nsp"},{value:"actions",align:"end",sortable:!1}]}},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnect:function(t){Dt.socket.emit("_disconnect",t.nsp,!1,t.id)},displayDetails:function(t){this.$router.push({name:"socket",params:{nsp:t.nsp,id:t.id}})}}},us=ds,ms=Object(b["a"])(us,cs,ls,!1,null,null,null),ps=ms.exports;_()(ms,{VBtn:I["a"],VCard:$t["a"],VCardTitle:Ot["b"],VDataTable:Ge["a"],VIcon:lt["a"],VTooltip:tn["a"]});var vs={name:"Client",components:{ClientSockets:ps,InitialRequest:Tn,ClientDetails:is},data:function(){return{socket:null,client:null}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("clients.title"),to:{name:"clients"},exact:!0},{text:this.$t("clients.details"),disabled:!0}]}},Object(l["b"])("main",["findClientById"])),mounted:function(){this.client=this.findClientById(this.$route.params.id),this.client&&(this.socket=this.client.sockets[0])}},fs=vs,hs=Object(b["a"])(fs,ts,es,!1,null,"3d554d12",null),bs=hs.exports;_()(hs,{VBreadcrumbs:Be["a"],VCol:Me["a"],VContainer:Pt["a"],VRow:ve["a"]});var ks=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-data-table",{attrs:{headers:t.headers,items:t.servers,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.uptime",fn:function(e){var n=e.value;return[t._v(" "+t._s(t.formatDuration(n))+" ")]}},{key:"item.lastPing",fn:function(e){var n=e.value;return[t._v(" "+t._s(t.delaySinceLastPing(n))+" ")]}},{key:"item.healthy",fn:function(t){var e=t.value;return[n("ServerStatus",{attrs:{healthy:e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[s.healthy?t._e():n("v-btn",{attrs:{small:""},on:{click:function(e){return t.removeServer(s)}}},[n("v-icon",[t._v("mdi-delete-outline")])],1)]}}])})],1)],1)},_s=[],gs={name:"Servers",components:{ServerStatus:Oe},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]},now:Date.now()}},created:function(){var t=this;this.interval=setInterval((function(){t.now=Date.now()}),1e3)},beforeDestroy:function(){clearInterval(this.interval)},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("servers.title"),disabled:!0}]},headers:function(){return[{text:this.$t("id"),value:"serverId"},{text:this.$t("servers.hostname"),value:"hostname"},{text:this.$t("servers.pid"),value:"pid"},{text:this.$t("servers.uptime"),value:"uptime"},{text:this.$t("servers.clients-count"),value:"clientsCount"},{text:this.$t("servers.last-ping"),value:"lastPing"},{text:this.$t("status"),value:"healthy"},{value:"actions",align:"end",sortable:!1}]}},Object(l["d"])({servers:function(t){return Object(Ie["a"])(t.servers.servers,"serverId")}})),methods:{formatDuration:ce,delaySinceLastPing:function(t){var e=this.now-t;return"".concat(ce(e/1e3)," ago")},removeServer:function(t){this.$store.commit("servers/removeServer",t.serverId)}}},ys=gs,Ss=Object(b["a"])(ys,ks,_s,!1,null,null,null),Cs=Ss.exports;_()(Ss,{VBreadcrumbs:Be["a"],VBtn:I["a"],VCard:$t["a"],VDataTable:Ge["a"],VIcon:lt["a"]});var $s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),t.room?n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"4"}},[n("RoomDetails",{attrs:{room:t.room,nsp:t.$route.params.nsp}})],1),n("v-col",{attrs:{sm:"12",md:"8"}},[n("RoomSockets",{attrs:{room:t.room}})],1)],1)],1):t._e()],1)},Os=[],xs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.room?n("v-card",[n("v-card-title",[t._v(t._s(t.$t("sockets.title")))]),n("v-data-table",{attrs:{headers:t.headers,items:t.room.sockets,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.transport",fn:function(t){var e=t.value;return[n("Transport",{attrs:{transport:e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketLeaveSupported&&!t.room.isPrivate?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.leave(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.leave")))])]):t._e(),t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.displayDetails")))])])]}}],null,!1,1092228050)})],1):t._e()},js=[],ws={name:"RoomSockets",components:{Transport:se},props:{room:Object},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])(Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("rooms.title"),to:{name:"rooms"}},{text:this.$t("rooms.details"),disabled:!0}]},headers:function(){return[{text:this.$t("id"),value:"id",align:"start"},{text:this.$t("sockets.address"),value:"handshake.address"},{text:this.$t("sockets.transport"),value:"transport"},{value:"actions",align:"end",sortable:!1}]}},Object(l["b"])("main",["findRoomByName"])),Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketLeaveSupported:function(t){return t.config.supportedFeatures.includes("LEAVE")},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{leave:function(t){Dt.socket.emit("leave",t.nsp,this.room.name,t.id)},disconnect:function(t){Dt.socket.emit("_disconnect",t.nsp,!1,t.id)},displayDetails:function(t){this.$router.push({name:"socket",params:{nsp:this.$route.params.nsp,id:t.id}})}}},Vs=ws,Ds=Object(b["a"])(Vs,xs,js,!1,null,null,null),Ts=Ds.exports;_()(Ds,{VBtn:I["a"],VCard:$t["a"],VCardTitle:Ot["b"],VDataTable:Ge["a"],VIcon:lt["a"],VTooltip:tn["a"]});var Is=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("details")))]),n("v-simple-table",{attrs:{dense:""}},[[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("namespace")))]),n("td",[n("code",[t._v(t._s(t.nsp))])]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(" "+t._s(t.room.name)+" ")]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("RoomStatus",{attrs:{active:t.room.active}})],1),n("td",{attrs:{align:"right"}},[t.isMultiLeaveSupported&&!t.room.isPrivate?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.clear()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!1,464351539)},[n("span",[t._v(t._s(t.$t("rooms.clear")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("type")))]),n("td",[n("RoomType",{attrs:{"is-private":t.room.isPrivate}})],1),n("td")])])]],2)],1)},Rs=[],Ns=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Status",{attrs:{value:t.active,"ok-label":t.$t("rooms.active"),"ko-label":t.$t("rooms.deleted")}})},Ps=[],Es={name:"RoomStatus",components:{Status:S},props:{active:Boolean}},Us=Es,Ls=Object(b["a"])(Us,Ns,Ps,!1,null,null,null),Bs=Ls.exports,Ms={name:"RoomDetails",components:{RoomType:Fn,RoomStatus:Bs},props:{room:Object,nsp:String},computed:Object(r["a"])({},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isMultiLeaveSupported:function(t){return t.config.supportedFeatures.includes("MLEAVE")}})),methods:{clear:function(){Dt.socket.emit("leave",this.nsp,this.room.name)}}},As=Ms,qs=Object(b["a"])(As,Is,Rs,!1,null,"7b3793ea",null),Fs=qs.exports;_()(qs,{VBtn:I["a"],VCard:$t["a"],VCardTitle:Ot["b"],VIcon:lt["a"],VSimpleTable:fe["a"],VTooltip:tn["a"]});var Hs={name:"Sockets",components:{RoomDetails:Fs,RoomSockets:Ts},data:function(){return{room:null}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("rooms.title"),to:{name:"rooms"}},{text:this.$t("rooms.details"),disabled:!0}]}},Object(l["b"])("main",["findRoomByName"])),mounted:function(){this.room=this.findRoomByName(this.$route.params.nsp,this.$route.params.name)}},zs=Hs,Js=Object(b["a"])(zs,$s,Os,!1,null,null,null),Ws=Js.exports;_()(Js,{VBreadcrumbs:Be["a"],VCol:Me["a"],VContainer:Pt["a"],VRow:ve["a"]}),s["a"].use(At["a"]);var Ks=[{path:"/",name:"dashboard",component:qe,meta:{topLevel:!0,index:0}},{path:"/sockets/",name:"sockets",component:nn,meta:{topLevel:!0,index:1}},{path:"/n/:nsp/sockets/:id",name:"socket",component:Pn,meta:{topLevel:!1}},{path:"/rooms/",name:"rooms",component:Wn,meta:{topLevel:!0,index:2}},{path:"/n/:nsp/rooms/:name",name:"room",component:Ws,meta:{topLevel:!1}},{path:"/clients/",name:"clients",component:Gn,meta:{topLevel:!0,index:3}},{path:"/clients/:id",name:"client",component:bs,meta:{topLevel:!1}},{path:"/servers/",name:"servers",component:Cs,meta:{topLevel:!0,index:4}}],Qs=new At["a"]({mode:"hash",base:"/",routes:Ks}),Xs=Qs,Ys=(n("159b"),n("d3b7"),n("ddb0"),n("466d"),n("a925"));function Zs(){var t=n("49f8"),e={};return t.keys().forEach((function(n){var s=n.match(/([A-Za-z0-9-_]+)\./i);if(s&&s.length>1){var a=s[1];e[a]=t(n)}})),e}s["a"].use(Ys["a"]);var Gs=new Ys["a"]({locale:"en",fallbackLocale:"en",messages:Zs()}),ta={namespaced:!0,state:{darkTheme:!1,readonly:!1,lang:"en",supportedFeatures:[],showNavigationDrawer:!1},mutations:{init:function(t){ie&&(t.darkTheme="true"===localStorage.getItem("dark_theme"),t.readonly="true"===localStorage.getItem("readonly"),t.lang=localStorage.getItem("lang")||"en")},selectTheme:function(t,e){t.darkTheme=e,ie&&localStorage.setItem("dark_theme",e)},selectLang:function(t,e){t.lang=e,ie&&localStorage.setItem("lang",e)},toggleReadonly:function(t){t.readonly=!t.readonly,ie&&localStorage.setItem("readonly",t.readonly)},updateConfig:function(t,e){t.supportedFeatures=e.supportedFeatures},toggleNavigationDrawer:function(t){t.showNavigationDrawer=!t.showNavigationDrawer}}},ea={namespaced:!0,state:{serverUrl:"",wsOnly:!1,path:"/socket.io",parser:"default",sessionId:"",connected:!1},mutations:{init:function(t){ie&&(t.serverUrl=localStorage.getItem("server_url"),t.wsOnly="true"===localStorage.getItem("ws_only"),t.sessionId=localStorage.getItem("session_id"),t.path=localStorage.getItem("path")||"/socket.io",t.parser=localStorage.getItem("parser")||"default")},saveConfig:function(t,e){var n=e.serverUrl,s=e.wsOnly,a=e.path,o=e.parser;t.serverUrl=n,t.wsOnly=s,t.path=a,t.parser=o,ie&&(localStorage.setItem("server_url",n),localStorage.setItem("ws_only",s),localStorage.setItem("path",a),localStorage.setItem("parser",o))},saveSessionId:function(t,e){t.sessionId=e,ie&&localStorage.setItem("session_id",e)},connect:function(t){t.connected=!0},disconnect:function(t){t.connected=!1}}},na=n("3835"),sa=n("0a94"),aa=n("a1a3"),oa=function(t,e){var n=Object(sa["a"])(t,{name:e});return n||(n={name:e,sockets:[],rooms:[]},t.push(n),n)},ra=function(t,e){var n=Object(sa["a"])(t.rooms,{name:e});return n||(n={name:e,active:!0,sockets:[]},t.rooms.push(n),n)},ia=function(t,e){var n=Object(sa["a"])(t,{id:e});return n||(n={id:e,connected:!0,sockets:[]},t.push(n),n)},ca=function(t,e){var n=oa(t.namespaces,e.nsp);e.connected=!0,Object(sa["a"])(n.sockets,{id:e.id})||n.sockets.push(e),e.rooms.forEach((function(t){var s=ra(n,t);s.isPrivate=t===e.id,Object(sa["a"])(s.sockets,{id:e.id})||s.sockets.push(e)}));var s=ia(t.clients,e.clientId);Object(sa["a"])(s.sockets,{id:e.id})||s.sockets.push(e)},la={namespaced:!0,state:{namespaces:[],clients:[],selectedNamespace:null},getters:{findSocketById:function(t){return function(e,n){var s=Object(sa["a"])(t.namespaces,{name:e});if(s)return Object(sa["a"])(s.sockets,{id:n})}},findClientById:function(t){return function(e){return Object(sa["a"])(t.clients,{id:e})}},findRoomByName:function(t){return function(e,n){var s=Object(sa["a"])(t.namespaces,{name:e});if(s)return Object(sa["a"])(s.rooms,{name:n})}},findRoomsByNamespace:function(t){return function(e){var n=Object(sa["a"])(t.namespaces,{name:e});return n?n.rooms:[]}},sockets:function(t){return t.selectedNamespace?t.selectedNamespace.sockets:[]},rooms:function(t){return t.selectedNamespace?t.selectedNamespace.rooms:[]}},mutations:{selectNamespace:function(t,e){t.selectedNamespace=e},onAllSockets:function(t,e){t.namespaces.forEach((function(t){t.sockets.splice(0),t.rooms.splice(0)})),t.clients.splice(0),e.forEach((function(e){return ca(t,e)})),t.selectedNamespace||(t.selectedNamespace=Object(sa["a"])(t.namespaces,{name:"/"})||t.namespaces[0])},onSocketConnected:function(t,e){ca(t,e)},onSocketUpdated:function(t,e){var n=oa(t.namespaces,e.nsp),s=Object(sa["a"])(n.sockets,{id:e.id});s&&Object(aa["a"])(s,e)},onSocketDisconnected:function(t,e){var n=e.nsp,s=e.id,a=oa(t.namespaces,n),o=le(a.sockets,{id:s}),r=Object(na["a"])(o,1),i=r[0];if(i){i.connected=!1;var c=ia(t.clients,i.clientId);le(c.sockets,{id:s}),0===c.sockets.length&&(c.connected=!1,le(t.clients,{id:i.clientId}))}},onRoomJoined:function(t,e){var n=e.nsp,s=e.room,a=e.id,o=oa(t.namespaces,n),r=Object(sa["a"])(o.sockets,{id:a});if(r){de(r.rooms,s);var i=ra(o,s);i.sockets.push(r)}},onRoomLeft:function(t,e){var n=e.nsp,s=e.room,a=e.id,o=oa(t.namespaces,n),r=Object(sa["a"])(o.sockets,{id:a});r&&le(r.rooms,s);var i=ra(o,s);le(i.sockets,{id:a}),0===i.sockets.length&&(i.active=!1,le(o.rooms,{name:s}))}}},da=1e4,ua={namespaced:!0,state:{servers:[]},mutations:{onServerStats:function(t,e){e.lastPing=Date.now();var n=Object(sa["a"])(t.servers,{serverId:e.serverId});n?Object(aa["a"])(n,e):(e.healthy=!0,t.servers.push(e))},removeServer:function(t,e){le(t.servers,{serverId:e})},updateState:function(t){t.servers.forEach((function(t){t.healthy=Date.now()-t.lastPing\n {{\n label\n }}\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Status.vue?vue&type=template&id=87034bbc&\"\nimport script from \"./Status.vue?vue&type=script&lang=js&\"\nexport * from \"./Status.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConnectionStatus.vue?vue&type=template&id=65b30979&\"\nimport script from \"./ConnectionStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./ConnectionStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppBar.vue?vue&type=template&id=5c4390aa&\"\nimport script from \"./AppBar.vue?vue&type=script&lang=js&\"\nexport * from \"./AppBar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VAppBarNavIcon,VBtn,VImg,VSpacer,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-navigation-drawer',{staticClass:\"elevation-3\",attrs:{\"app\":\"\",\"clipped\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-divider'),_c('div',{staticClass:\"pa-3 pt-10\"},[_c('LangSelector'),_c('ThemeSelector'),_c('ReadonlyToggle')],1)]},proxy:true}]),model:{value:(_vm.$store.state.config.showNavigationDrawer),callback:function ($$v) {_vm.$set(_vm.$store.state.config, \"showNavigationDrawer\", $$v)},expression:\"$store.state.config.showNavigationDrawer\"}},[_c('v-list',{attrs:{\"dense\":\"\",\"nav\":\"\"}},_vm._l((_vm.items),function(item){return _c('v-list-item',{key:item.title,attrs:{\"to\":item.to,\"exact\":item.exact}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"dense\":\"\",\"value\":_vm.lang,\"items\":_vm.languages,\"label\":_vm.$t('config.language')},on:{\"change\":_vm.onSelectLang}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LangSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LangSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LangSelector.vue?vue&type=template&id=a8a0388e&\"\nimport script from \"./LangSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./LangSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VSelect})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-switch',{attrs:{\"input-value\":_vm.darkTheme,\"label\":_vm.$t('config.dark-theme'),\"inset\":\"\",\"dense\":\"\"},on:{\"change\":_vm.onSelectTheme}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThemeSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThemeSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ThemeSelector.vue?vue&type=template&id=65fd31ec&\"\nimport script from \"./ThemeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ThemeSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\ninstallComponents(component, {VSwitch})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-switch',{attrs:{\"input-value\":_vm.readonly,\"label\":_vm.$t('config.readonly'),\"disabled\":_vm.disabled,\"inset\":\"\",\"dense\":\"\"},on:{\"change\":_vm.toggleReadonly}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadonlyToggle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadonlyToggle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReadonlyToggle.vue?vue&type=template&id=5b271066&\"\nimport script from \"./ReadonlyToggle.vue?vue&type=script&lang=js&\"\nexport * from \"./ReadonlyToggle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\ninstallComponents(component, {VSwitch})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationDrawer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationDrawer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NavigationDrawer.vue?vue&type=template&id=edd119b6&\"\nimport script from \"./NavigationDrawer.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationDrawer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\ninstallComponents(component, {VDivider,VIcon,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VNavigationDrawer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":_vm.isOpen,\"transition\":\"dialog-bottom-transition\",\"max-width\":\"300\",\"persistent\":\"\"}},[_c('v-card',[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"connection.title\")))]),_c('v-card-text',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.serverUrl'),\"placeholder\":\"https://example.com/admin\",\"required\":\"\"},model:{value:(_vm.serverUrl),callback:function ($$v) {_vm.serverUrl=$$v},expression:\"serverUrl\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.username')},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.password'),\"type\":\"password\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-switch',{attrs:{\"label\":_vm.$t('connection.websocket-only'),\"inset\":\"\",\"dense\":\"\"},model:{value:(_vm.wsOnly),callback:function ($$v) {_vm.wsOnly=$$v},expression:\"wsOnly\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.path')},model:{value:(_vm.path),callback:function ($$v) {_vm.path=$$v},expression:\"path\"}}),_c('v-select',{attrs:{\"label\":_vm.$t('connection.parser'),\"items\":_vm.parserOptions},model:{value:(_vm.parser),callback:function ($$v) {_vm.parser=$$v},expression:\"parser\"}}),_c('v-btn',{staticClass:\"primary\",attrs:{\"loading\":_vm.isConnecting,\"disabled\":_vm.isConnecting || !_vm.isValid,\"type\":\"submit\"}},[_vm._v(_vm._s(_vm.$t(\"connection.connect\")))]),(_vm.error)?_c('div',{staticClass:\"red--text mt-3\"},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e()],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConnectionModal.vue?vue&type=template&id=40aa397e&scoped=true&\"\nimport script from \"./ConnectionModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ConnectionModal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"40aa397e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VDialog,VSelect,VSwitch,VTextField})\n","export default {\n set socket(socket) {\n this._socket = socket;\n },\n\n get socket() {\n return this._socket;\n },\n};\n","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=b872094e&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VMain } from 'vuetify/lib/components/VMain';\ninstallComponents(component, {VApp,VContainer,VMain})\n","var render, staticRenderFns\nimport script from \"./Doughnut.vue?vue&type=script&lang=js&\"\nexport * from \"./Doughnut.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ClientsOverview')],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ServersOverview')],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('NamespacesOverview')],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"clients.title\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":{ name: 'clients' },\"small\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)],1),_c('v-card-text',[_c('v-row',[_c('Doughnut',{staticClass:\"chart\",attrs:{\"chart-data\":_vm.data}}),_c('v-simple-table',{staticClass:\"grow align-self-center\",scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('tbody',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"sockets.transport\")))]),_c('th',[_vm._v(\"#\")])]),_vm._l((_vm.transports),function(transport){return _c('tr',{key:transport},[_c('td',[_c('Transport',{attrs:{\"transport\":transport}})],1),_c('td',[_c('div',[_c('h2',[_vm._v(_vm._s(_vm.transportRepartition[transport] || 0))])]),_c('div',[_vm._v(\" \"+_vm._s(_vm.percentage( _vm.transportRepartition[transport] || 0, _vm.clients.length ))+\" % \")])])])})],2)]},proxy:true}])})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doughnut.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doughnut.vue?vue&type=script&lang=js&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-chip',{attrs:{\"small\":\"\",\"color\":_vm.color,\"outlined\":\"\"}},[_vm._v(_vm._s(_vm.label))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Transport.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Transport.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Transport.vue?vue&type=template&id=54f750af&\"\nimport script from \"./Transport.vue?vue&type=script&lang=js&\"\nexport * from \"./Transport.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","import { findIndex } from \"lodash-es\";\n\nconst testLocalStorage = () => {\n const test = \"test\";\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nexport const isLocalStorageAvailable = testLocalStorage();\n\nexport function formatDuration(duration) {\n const d = Math.ceil(Math.max(duration, 0));\n const days = Math.floor(d / 86400);\n const hours = Math.floor((d - days * 86400) / 3600);\n const minutes = Math.floor((d - days * 86400 - hours * 3600) / 60);\n const seconds = Math.ceil(d) - days * 86400 - hours * 3600 - minutes * 60;\n\n const output = [];\n if (days > 0) {\n output.push(days + \"d\");\n }\n if (days > 0 || hours > 0) {\n output.push(hours + \"h\");\n }\n if (days > 0 || hours > 0 || minutes > 0) {\n output.push(minutes + \"m\");\n }\n output.push(seconds + \"s\");\n return output.join(\" \");\n}\n\n/**\n * lodash remove() does not play well with Vue.js\n */\nexport function remove(array, predicate) {\n const index =\n typeof predicate === \"object\"\n ? findIndex(array, predicate)\n : array.indexOf(predicate);\n return index === -1 ? [] : array.splice(index, 1);\n}\n\nexport function pushUniq(array, elem) {\n if (!array.includes(elem)) {\n array.push(elem);\n }\n}\n\nexport function percentage(value, total) {\n return total === 0 ? 0 : ((value / total) * 100).toFixed(1);\n}\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientsOverview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientsOverview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClientsOverview.vue?vue&type=template&id=58987bf8&scoped=true&\"\nimport script from \"./ClientsOverview.vue?vue&type=script&lang=js&\"\nexport * from \"./ClientsOverview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClientsOverview.vue?vue&type=style&index=0&id=58987bf8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"58987bf8\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VIcon,VRow,VSimpleTable,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"servers.title\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":{ name: 'servers' },\"small\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)],1),_c('v-card-text',[_c('v-row',[_c('Doughnut',{staticClass:\"chart\",attrs:{\"chart-data\":_vm.data}}),_c('v-simple-table',{staticClass:\"grow align-self-center\",scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('tbody',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('th',[_vm._v(\"#\")])]),_c('tr',[_c('td',[_c('ServerStatus',{attrs:{\"healthy\":\"\"}})],1),_c('td',[_c('div',[_c('h2',[_vm._v(_vm._s(_vm.healthyServers))])]),_c('div',[_vm._v(_vm._s(_vm.percentage(_vm.healthyServers, _vm.totalServers))+\" %\")])])]),_c('tr',[_c('td',[_c('ServerStatus')],1),_c('td',[_c('div',[_c('h2',[_vm._v(_vm._s(_vm.totalServers - _vm.healthyServers))])]),_c('div',[_vm._v(\" \"+_vm._s(_vm.percentage(_vm.totalServers - _vm.healthyServers, _vm.totalServers))+\" % \")])])])])]},proxy:true}])})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Status',{attrs:{\"value\":_vm.healthy,\"ok-label\":_vm.$t('servers.healthy'),\"ko-label\":_vm.$t('servers.unhealthy')}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServerStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServerStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ServerStatus.vue?vue&type=template&id=76035ea6&\"\nimport script from \"./ServerStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./ServerStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServersOverview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServersOverview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ServersOverview.vue?vue&type=template&id=d6482f56&scoped=true&\"\nimport script from \"./ServersOverview.vue?vue&type=script&lang=js&\"\nexport * from \"./ServersOverview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ServersOverview.vue?vue&type=style&index=0&id=d6482f56&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d6482f56\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VIcon,VRow,VSimpleTable,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"namespaces\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":{ name: 'sockets' },\"small\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)],1),_c('v-simple-table',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"name\")))]),_c('th',[_vm._v(_vm._s(_vm.$t(\"rooms.sockets-count\")))])])]),_c('tbody',_vm._l((_vm.namespaces),function(namespace){return _c('tr',{key:namespace.name},[_c('td',{staticClass:\"key-column\"},[_c('code',[_vm._v(_vm._s(namespace.name))])]),_c('td',[_vm._v(_vm._s(namespace.sockets.length))])])}),0)]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespacesOverview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespacesOverview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NamespacesOverview.vue?vue&type=template&id=0de70938&scoped=true&\"\nimport script from \"./NamespacesOverview.vue?vue&type=script&lang=js&\"\nexport * from \"./NamespacesOverview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0de70938\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VIcon,VSimpleTable,VSpacer})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=2764d552&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-card-text',[_c('NamespaceSelector')],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.sockets,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.transport\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('Transport',{attrs:{\"transport\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.displayDetails\")))])])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{staticClass:\"selector\",attrs:{\"value\":_vm.selectedNamespace,\"items\":_vm.namespaces,\"item-text\":\"name\",\"item-value\":\"name\",\"label\":_vm.$t('select-namespace'),\"persistent-hint\":\"\",\"return-object\":\"\"},on:{\"change\":_vm.selectNamespace}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespaceSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespaceSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NamespaceSelector.vue?vue&type=template&id=2c330798&scoped=true&\"\nimport script from \"./NamespaceSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./NamespaceSelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NamespaceSelector.vue?vue&type=style&index=0&id=2c330798&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c330798\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VSelect})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sockets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sockets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sockets.vue?vue&type=template&id=23b04124&\"\nimport script from \"./Sockets.vue?vue&type=script&lang=js&\"\nexport * from \"./Sockets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VCardText,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),(_vm.socket)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('SocketDetails',{attrs:{\"socket\":_vm.socket,\"client\":_vm.client}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('InitialRequest',{attrs:{\"socket\":_vm.socket}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('SocketRooms',{attrs:{\"socket\":_vm.socket}})],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"rooms.title\")))]),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.roomsAsObjects,\"dense\":\"\"},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketLeaveSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.leave(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.leave\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.displayDetails\")))])])]}}])}),_c('v-card-text',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('v-combobox',{staticClass:\"select-room d-inline-block mr-3\",attrs:{\"search-input\":_vm.newRoom,\"label\":_vm.$t('sockets.join-a-room'),\"items\":_vm.availableRooms,\"item-value\":\"name\",\"item-text\":\"name\",\"disabled\":_vm.isReadonly,\"return-object\":false},on:{\"update:searchInput\":function($event){_vm.newRoom=$event},\"update:search-input\":function($event){_vm.newRoom=$event}}}),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"type\":\"submit\",\"small\":\"\",\"disabled\":_vm.isReadonly}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-plus-outline\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.join\")))])])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketRooms.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketRooms.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SocketRooms.vue?vue&type=template&id=d014ee1e&scoped=true&\"\nimport script from \"./SocketRooms.vue?vue&type=script&lang=js&\"\nexport * from \"./SocketRooms.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SocketRooms.vue?vue&type=style&index=0&id=d014ee1e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d014ee1e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VCombobox,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"details\")))]),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.client\")))])]),_c('v-simple-table',{attrs:{\"dense\":\"\"}},[[_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.client.id)+\" \")]),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.client.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.navigateToClient()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,false,898213143)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.displayDetails\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('ConnectionStatus',{attrs:{\"connected\":_vm.client.connected}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isSocketDisconnectSupported && _vm.client.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnectClient()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,false,1004975867)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.disconnect\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.transport\")))]),_c('td',[_c('Transport',{attrs:{\"transport\":_vm.socket.transport}})],1),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.address\")))]),_c('td',[_vm._v(_vm._s(_vm.socket.handshake.address))]),_c('td')])])]],2),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.socket\")))])]),_c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"namespace\")))]),_c('td',[_c('code',[_vm._v(_vm._s(_vm.socket.nsp))])]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(_vm._s(_vm.socket.id))]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"data\")))]),_c('td',[_c('pre',[_c('code',[_vm._v(_vm._s(JSON.stringify(_vm.socket.data, null, 2)))])])]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('ConnectionStatus',{attrs:{\"connected\":_vm.socket.connected}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isSocketDisconnectSupported && _vm.socket.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnectSocket()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,false,2351110648)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.creation-date\")))]),_c('td',[_vm._v(_vm._s(_vm.creationDate))]),_c('td')])])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SocketDetails.vue?vue&type=template&id=41eb1dae&scoped=true&\"\nimport script from \"./SocketDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./SocketDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SocketDetails.vue?vue&type=style&index=0&id=41eb1dae&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"41eb1dae\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VIcon,VSimpleTable,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"sockets.initial-request\")))]),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.headers\")))])]),_c('KeyValueTable',{attrs:{\"object\":_vm.socket.handshake.headers}}),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.query-params\")))])]),_c('KeyValueTable',{attrs:{\"object\":_vm.socket.handshake.query}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"name\")))]),_c('th',[_vm._v(_vm._s(_vm.$t(\"value\")))])])]),_c('tbody',_vm._l((_vm.items),function(ref){\nvar key = ref.key;\nvar value = ref.value;\nreturn _c('tr',{key:key},[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(key))]),_c('td',[_vm._v(_vm._s(value))])])}),0)]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValueTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValueTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./KeyValueTable.vue?vue&type=template&id=18284f59&scoped=true&\"\nimport script from \"./KeyValueTable.vue?vue&type=script&lang=js&\"\nexport * from \"./KeyValueTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./KeyValueTable.vue?vue&type=style&index=0&id=18284f59&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18284f59\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VSimpleTable})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InitialRequest.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InitialRequest.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InitialRequest.vue?vue&type=template&id=02abed88&\"\nimport script from \"./InitialRequest.vue?vue&type=script&lang=js&\"\nexport * from \"./InitialRequest.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard,VCardText,VCardTitle})\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Socket.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Socket.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Socket.vue?vue&type=template&id=14172ed0&scoped=true&\"\nimport script from \"./Socket.vue?vue&type=script&lang=js&\"\nexport * from \"./Socket.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"14172ed0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-card-text',{staticClass:\"d-flex\"},[_c('NamespaceSelector'),_c('v-switch',{staticClass:\"ml-3\",attrs:{\"label\":_vm.$t('rooms.show-private'),\"inset\":\"\",\"dense\":\"\"},on:{\"change\":_vm.onPrivateRoomsUpdate},model:{value:(_vm.showPrivateRooms),callback:function ($$v) {_vm.showPrivateRooms=$$v},expression:\"showPrivateRooms\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.filteredRooms,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.sockets\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.sockets.length)+\" \")]}},{key:\"item.isPrivate\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('RoomType',{attrs:{\"is-private\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isMultiLeaveSupported && !item.isPrivate)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.clear(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.clear\")))])]):_vm._e(),(_vm.isMultiDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.displayDetails\")))])])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Status',{attrs:{\"value\":!_vm.isPrivate,\"ok-label\":_vm.$t('rooms.public'),\"ko-label\":_vm.$t('rooms.private')}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomType.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomType.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomType.vue?vue&type=template&id=65e67f84&\"\nimport script from \"./RoomType.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomType.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rooms.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rooms.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Rooms.vue?vue&type=template&id=04cd8de4&\"\nimport script from \"./Rooms.vue?vue&type=script&lang=js&\"\nexport * from \"./Rooms.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VCardText,VDataTable,VIcon,VSwitch,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.clients,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.address\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.sockets.length)?_c('span',[_vm._v(_vm._s(item.sockets[0].handshake.address))]):_vm._e()]}},{key:\"item.transport\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.sockets.length)?_c('Transport',{attrs:{\"transport\":item.sockets[0].transport}}):_vm._e()]}},{key:\"item.sockets\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.sockets.length)+\" \")]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.displayDetails\")))])])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Clients.vue?vue&type=template&id=6a3ffff4&\"\nimport script from \"./Clients.vue?vue&type=script&lang=js&\"\nexport * from \"./Clients.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),(_vm.client)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ClientDetails',{attrs:{\"client\":_vm.client,\"socket\":_vm.socket}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[(_vm.socket)?_c('InitialRequest',{attrs:{\"socket\":_vm.socket}}):_vm._e()],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ClientSockets',{attrs:{\"sockets\":_vm.client.sockets}})],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"details\")))]),_c('v-simple-table',{attrs:{\"dense\":\"\"}},[[_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.client.id)+\" \")]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('ConnectionStatus',{attrs:{\"connected\":_vm.client.connected}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isSocketDisconnectSupported && _vm.client.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnectClient()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,false,1004975867)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.disconnect\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.transport\")))]),_c('td',[_c('Transport',{attrs:{\"transport\":_vm.socket.transport}})],1),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.address\")))]),_c('td',[_vm._v(_vm._s(_vm.socket.handshake.address))]),_c('td')])])]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClientDetails.vue?vue&type=template&id=8d2424e4&scoped=true&\"\nimport script from \"./ClientDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./ClientDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClientDetails.vue?vue&type=style&index=0&id=8d2424e4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8d2424e4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VIcon,VSimpleTable,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"sockets.title\")))]),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.sockets,\"dense\":\"\"},scopedSlots:_vm._u([{key:\"item.nsp\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('code',[_vm._v(_vm._s(value))])]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.displayDetails\")))])])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientSockets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientSockets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClientSockets.vue?vue&type=template&id=92f31530&\"\nimport script from \"./ClientSockets.vue?vue&type=script&lang=js&\"\nexport * from \"./ClientSockets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VDataTable,VIcon,VTooltip})\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Client.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Client.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Client.vue?vue&type=template&id=3d554d12&scoped=true&\"\nimport script from \"./Client.vue?vue&type=script&lang=js&\"\nexport * from \"./Client.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d554d12\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.servers,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.uptime\",fn:function(ref){\nvar value = ref.value;\nreturn [_vm._v(\" \"+_vm._s(_vm.formatDuration(value))+\" \")]}},{key:\"item.lastPing\",fn:function(ref){\nvar value = ref.value;\nreturn [_vm._v(\" \"+_vm._s(_vm.delaySinceLastPing(value))+\" \")]}},{key:\"item.healthy\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('ServerStatus',{attrs:{\"healthy\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(!item.healthy)?_c('v-btn',{attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.removeServer(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1):_vm._e()]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Servers.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Servers.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Servers.vue?vue&type=template&id=3241ef20&\"\nimport script from \"./Servers.vue?vue&type=script&lang=js&\"\nexport * from \"./Servers.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VDataTable,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),(_vm.room)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"4\"}},[_c('RoomDetails',{attrs:{\"room\":_vm.room,\"nsp\":_vm.$route.params.nsp}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"8\"}},[_c('RoomSockets',{attrs:{\"room\":_vm.room}})],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.room)?_c('v-card',[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"sockets.title\")))]),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.room.sockets,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.transport\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('Transport',{attrs:{\"transport\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketLeaveSupported && !_vm.room.isPrivate)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.leave(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.leave\")))])]):_vm._e(),(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.displayDetails\")))])])]}}],null,false,1092228050)})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomSockets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomSockets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomSockets.vue?vue&type=template&id=53b1a037&\"\nimport script from \"./RoomSockets.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomSockets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"details\")))]),_c('v-simple-table',{attrs:{\"dense\":\"\"}},[[_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"namespace\")))]),_c('td',[_c('code',[_vm._v(_vm._s(_vm.nsp))])]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.room.name)+\" \")]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('RoomStatus',{attrs:{\"active\":_vm.room.active}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isMultiLeaveSupported && !_vm.room.isPrivate)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.clear()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,false,464351539)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.clear\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"type\")))]),_c('td',[_c('RoomType',{attrs:{\"is-private\":_vm.room.isPrivate}})],1),_c('td')])])]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Status',{attrs:{\"value\":_vm.active,\"ok-label\":_vm.$t('rooms.active'),\"ko-label\":_vm.$t('rooms.deleted')}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomStatus.vue?vue&type=template&id=65459954&\"\nimport script from \"./RoomStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomDetails.vue?vue&type=template&id=7b3793ea&scoped=true&\"\nimport script from \"./RoomDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b3793ea\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VIcon,VSimpleTable,VTooltip})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Room.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Room.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Room.vue?vue&type=template&id=07f5be08&\"\nimport script from \"./Room.vue?vue&type=script&lang=js&\"\nexport * from \"./Room.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","import Vue from \"vue\";\nimport VueRouter from \"vue-router\";\nimport Dashboard from \"../views/Dashboard\";\nimport Sockets from \"../views/Sockets\";\nimport Socket from \"../views/Socket\";\nimport Rooms from \"../views/Rooms\";\nimport Clients from \"../views/Clients\";\nimport Client from \"../views/Client\";\nimport Servers from \"../views/Servers\";\nimport Room from \"../views/Room\";\n\nVue.use(VueRouter);\n\nconst routes = [\n {\n path: \"/\",\n name: \"dashboard\",\n component: Dashboard,\n meta: {\n topLevel: true,\n index: 0,\n },\n },\n {\n path: \"/sockets/\",\n name: \"sockets\",\n component: Sockets,\n meta: {\n topLevel: true,\n index: 1,\n },\n },\n {\n path: \"/n/:nsp/sockets/:id\",\n name: \"socket\",\n component: Socket,\n meta: {\n topLevel: false,\n },\n },\n {\n path: \"/rooms/\",\n name: \"rooms\",\n component: Rooms,\n meta: {\n topLevel: true,\n index: 2,\n },\n },\n {\n path: \"/n/:nsp/rooms/:name\",\n name: \"room\",\n component: Room,\n meta: {\n topLevel: false,\n },\n },\n {\n path: \"/clients/\",\n name: \"clients\",\n component: Clients,\n meta: {\n topLevel: true,\n index: 3,\n },\n },\n {\n path: \"/clients/:id\",\n name: \"client\",\n component: Client,\n meta: {\n topLevel: false,\n },\n },\n {\n path: \"/servers/\",\n name: \"servers\",\n component: Servers,\n meta: {\n topLevel: true,\n index: 4,\n },\n },\n];\n\nconst router = new VueRouter({\n mode: \"hash\",\n base: process.env.BASE_URL,\n routes,\n});\n\nexport default router;\n","import Vue from \"vue\";\nimport VueI18n from \"vue-i18n\";\n\nVue.use(VueI18n);\n\nfunction loadLocaleMessages() {\n const locales = require.context(\n \"./locales\",\n true,\n /[A-Za-z0-9-_,\\s]+\\.json$/i\n );\n const messages = {};\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n if (matched && matched.length > 1) {\n const locale = matched[1];\n messages[locale] = locales(key);\n }\n });\n return messages;\n}\n\nexport default new VueI18n({\n locale: process.env.VUE_APP_I18N_LOCALE || \"en\",\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || \"en\",\n messages: loadLocaleMessages(),\n});\n","import { isLocalStorageAvailable } from \"../../util\";\n\nexport default {\n namespaced: true,\n state: {\n darkTheme: false,\n readonly: false,\n lang: \"en\",\n supportedFeatures: [],\n showNavigationDrawer: false,\n },\n mutations: {\n init(state) {\n if (isLocalStorageAvailable) {\n state.darkTheme = localStorage.getItem(\"dark_theme\") === \"true\";\n state.readonly = localStorage.getItem(\"readonly\") === \"true\";\n state.lang = localStorage.getItem(\"lang\") || \"en\";\n }\n },\n selectTheme(state, darkTheme) {\n state.darkTheme = darkTheme;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"dark_theme\", darkTheme);\n }\n },\n selectLang(state, lang) {\n state.lang = lang;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"lang\", lang);\n }\n },\n toggleReadonly(state) {\n state.readonly = !state.readonly;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"readonly\", state.readonly);\n }\n },\n updateConfig(state, config) {\n state.supportedFeatures = config.supportedFeatures;\n },\n toggleNavigationDrawer(state) {\n state.showNavigationDrawer = !state.showNavigationDrawer;\n },\n },\n};\n","import { isLocalStorageAvailable } from \"../../util\";\n\nexport default {\n namespaced: true,\n state: {\n serverUrl: \"\",\n wsOnly: false,\n path: \"/socket.io\",\n parser: \"default\",\n sessionId: \"\",\n connected: false,\n },\n mutations: {\n init(state) {\n if (isLocalStorageAvailable) {\n state.serverUrl = localStorage.getItem(\"server_url\");\n state.wsOnly = localStorage.getItem(\"ws_only\") === \"true\";\n state.sessionId = localStorage.getItem(\"session_id\");\n state.path = localStorage.getItem(\"path\") || \"/socket.io\";\n state.parser = localStorage.getItem(\"parser\") || \"default\";\n }\n },\n saveConfig(state, { serverUrl, wsOnly, path, parser }) {\n state.serverUrl = serverUrl;\n state.wsOnly = wsOnly;\n state.path = path;\n state.parser = parser;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"server_url\", serverUrl);\n localStorage.setItem(\"ws_only\", wsOnly);\n localStorage.setItem(\"path\", path);\n localStorage.setItem(\"parser\", parser);\n }\n },\n saveSessionId(state, sessionId) {\n state.sessionId = sessionId;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"session_id\", sessionId);\n }\n },\n connect(state) {\n state.connected = true;\n },\n disconnect(state) {\n state.connected = false;\n },\n },\n};\n","import { find, merge } from \"lodash-es\";\nimport { pushUniq, remove } from \"../../util\";\n\nconst getOrCreateNamespace = (namespaces, name) => {\n let namespace = find(namespaces, { name });\n if (namespace) {\n return namespace;\n }\n namespace = {\n name,\n sockets: [],\n rooms: [],\n };\n namespaces.push(namespace);\n return namespace;\n};\n\nconst getOrCreateRoom = (namespace, name) => {\n let room = find(namespace.rooms, { name });\n if (room) {\n return room;\n }\n room = {\n name,\n active: true,\n sockets: [],\n };\n namespace.rooms.push(room);\n return room;\n};\n\nconst getOrCreateClient = (clients, id) => {\n let client = find(clients, { id });\n if (client) {\n return client;\n }\n client = {\n id,\n connected: true,\n sockets: [],\n };\n clients.push(client);\n return client;\n};\n\nconst addSocket = (state, socket) => {\n const namespace = getOrCreateNamespace(state.namespaces, socket.nsp);\n socket.connected = true;\n if (!find(namespace.sockets, { id: socket.id })) {\n namespace.sockets.push(socket);\n }\n\n socket.rooms.forEach((name) => {\n const room = getOrCreateRoom(namespace, name);\n room.isPrivate = name === socket.id;\n if (!find(room.sockets, { id: socket.id })) {\n room.sockets.push(socket);\n }\n });\n\n const client = getOrCreateClient(state.clients, socket.clientId);\n if (!find(client.sockets, { id: socket.id })) {\n client.sockets.push(socket);\n }\n};\n\nexport default {\n namespaced: true,\n state: {\n namespaces: [],\n clients: [],\n selectedNamespace: null,\n },\n getters: {\n findSocketById: (state) => (nsp, id) => {\n const namespace = find(state.namespaces, { name: nsp });\n if (namespace) {\n return find(namespace.sockets, { id });\n }\n },\n findClientById: (state) => (id) => {\n return find(state.clients, { id });\n },\n findRoomByName: (state) => (nsp, name) => {\n const namespace = find(state.namespaces, { name: nsp });\n if (namespace) {\n return find(namespace.rooms, { name });\n }\n },\n findRoomsByNamespace: (state) => (nsp) => {\n const namespace = find(state.namespaces, { name: nsp });\n return namespace ? namespace.rooms : [];\n },\n sockets: (state) => {\n return state.selectedNamespace ? state.selectedNamespace.sockets : [];\n },\n rooms: (state) => {\n return state.selectedNamespace ? state.selectedNamespace.rooms : [];\n },\n },\n mutations: {\n selectNamespace(state, namespace) {\n state.selectedNamespace = namespace;\n },\n onAllSockets(state, sockets) {\n state.namespaces.forEach((namespace) => {\n namespace.sockets.splice(0);\n namespace.rooms.splice(0);\n });\n state.clients.splice(0);\n sockets.forEach((socket) => addSocket(state, socket));\n if (!state.selectedNamespace) {\n state.selectedNamespace =\n find(state.namespaces, { name: \"/\" }) || state.namespaces[0];\n }\n },\n onSocketConnected(state, socket) {\n addSocket(state, socket);\n },\n onSocketUpdated(state, socket) {\n const namespace = getOrCreateNamespace(state.namespaces, socket.nsp);\n const existingSocket = find(namespace.sockets, { id: socket.id });\n if (existingSocket) {\n merge(existingSocket, socket);\n }\n },\n onSocketDisconnected(state, { nsp, id }) {\n const namespace = getOrCreateNamespace(state.namespaces, nsp);\n const [socket] = remove(namespace.sockets, { id });\n if (socket) {\n socket.connected = false;\n\n const client = getOrCreateClient(state.clients, socket.clientId);\n remove(client.sockets, { id });\n if (client.sockets.length === 0) {\n client.connected = false;\n remove(state.clients, { id: socket.clientId });\n }\n }\n },\n onRoomJoined(state, { nsp, room, id }) {\n const namespace = getOrCreateNamespace(state.namespaces, nsp);\n const socket = find(namespace.sockets, { id });\n if (socket) {\n pushUniq(socket.rooms, room);\n const _room = getOrCreateRoom(namespace, room);\n _room.sockets.push(socket);\n }\n },\n onRoomLeft(state, { nsp, room, id }) {\n const namespace = getOrCreateNamespace(state.namespaces, nsp);\n const socket = find(namespace.sockets, { id });\n if (socket) {\n remove(socket.rooms, room);\n }\n const _room = getOrCreateRoom(namespace, room);\n remove(_room.sockets, { id });\n if (_room.sockets.length === 0) {\n _room.active = false;\n remove(namespace.rooms, { name: room });\n }\n },\n },\n};\n","import { find, merge } from \"lodash-es\";\nimport { remove } from \"../../util\";\n\nconst HEALTHY_THRESHOLD = 10000;\n\nexport default {\n namespaced: true,\n state: {\n servers: [],\n },\n mutations: {\n onServerStats(state, stats) {\n stats.lastPing = Date.now();\n const server = find(state.servers, { serverId: stats.serverId });\n if (server) {\n merge(server, stats);\n } else {\n stats.healthy = true;\n state.servers.push(stats);\n }\n },\n removeServer(state, serverId) {\n remove(state.servers, { serverId });\n },\n updateState(state) {\n state.servers.forEach((server) => {\n server.healthy = Date.now() - server.lastPing < HEALTHY_THRESHOLD;\n });\n },\n },\n};\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport config from \"./modules/config\";\nimport connection from \"./modules/connection\";\nimport main from \"./modules/main\";\nimport servers from \"./modules/servers\";\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n modules: {\n config,\n connection,\n main,\n servers,\n },\n});\n","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib/framework\";\n\nVue.use(Vuetify);\n\nexport default new Vuetify({});\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport i18n from \"./i18n\";\nimport store from \"./store\";\nimport vuetify from \"./plugins/vuetify\";\n\nVue.config.productionTip = false;\n\nstore.commit(\"config/init\");\nstore.commit(\"connection/init\");\n\ni18n.locale = store.state.config.lang;\n\nsetInterval(() => {\n store.commit(\"servers/updateState\");\n}, 1000);\n\nnew Vue({\n router,\n i18n,\n store,\n vuetify,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketDetails.vue?vue&type=style&index=0&id=41eb1dae&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketRooms.vue?vue&type=style&index=0&id=d014ee1e&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDetails.vue?vue&type=style&index=0&id=8d2424e4&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValueTable.vue?vue&type=style&index=0&id=18284f59&scoped=true&lang=css&\"","if(typeof moment === 'undefined') {var e = new Error(\"Cannot find module 'moment'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = moment;","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServersOverview.vue?vue&type=style&index=0&id=d6482f56&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/logo-light.73342c25.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespaceSelector.vue?vue&type=style&index=0&id=2c330798&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/ui/dist/js/app.97c623ae.js b/ui/dist/js/app.97c623ae.js deleted file mode 100644 index 639f75b..0000000 --- a/ui/dist/js/app.97c623ae.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(t){function e(e){for(var s,r,i=e[0],c=e[1],l=e[2],u=0,m=[];ue.meta.index?"v-slide-y-reverse-transition":"v-slide-y-transition":this.transitionName=t.meta.topLevel?"v-slide-x-transition":"v-slide-x-reverse-transition"}},methods:{tryConnect:function(t,e,n,s){var a=this;this.isConnecting=!0,xt.socket&&(xt.socket.disconnect(),xt.socket.off("connect"),xt.socket.off("connect_error"),xt.socket.off("disconnect"));var o=Object(ht["io"])(t,{forceNew:!0,reconnection:!1,withCredentials:!0,transports:n?["websocket"]:["polling","websocket"],path:s,auth:e});o.once("connect",(function(){a.showConnectionModal=!1,a.connectionError="",a.isConnecting=!1,o.io.reconnection(!0),a.$store.commit("connection/saveConfig",{serverUrl:t,wsOnly:n,path:s}),xt.socket=o,a.registerEventListeners(o)})),o.on("connect",(function(){a.$store.commit("connection/connect")})),o.on("connect_error",(function(t){(a.isConnecting||"invalid credentials"===t.message)&&(a.showConnectionModal=!0,a.connectionError=t.message,a.isConnecting=!1)})),o.on("disconnect",(function(){a.$store.commit("connection/disconnect")}))},registerEventListeners:function(t){var e=this;t.on("session",(function(t){e.$store.commit("connection/saveSessionId",t)})),t.on("config",(function(t){e.$store.commit("config/updateConfig",t)})),t.on("server_stats",(function(t){e.$store.commit("servers/onServerStats",t)})),t.on("all_sockets",(function(t){e.$store.commit("main/onAllSockets",t)})),t.on("socket_connected",(function(t){e.$store.commit("main/onSocketConnected",t)})),t.on("socket_updated",(function(t){e.$store.commit("main/onSocketUpdated",t)})),t.on("socket_disconnected",(function(t,n,s){e.$store.commit("main/onSocketDisconnected",{nsp:t,id:n,reason:s})})),t.on("room_joined",(function(t,n,s){e.$store.commit("main/onRoomJoined",{nsp:t,room:n,id:s})})),t.on("room_left",(function(t,n,s){e.$store.commit("main/onRoomLeft",{nsp:t,room:n,id:s})}))},onSubmit:function(t){this.tryConnect(t.serverUrl,{username:t.username,password:t.password},t.wsOnly,t.path)}},created:function(){if(this.$vuetify.theme.dark=this.$store.state.config.darkTheme,this.serverUrl){var t=this.$store.state.connection.sessionId;this.tryConnect(this.serverUrl,{sessionId:t},this.wsOnly,this.path)}else this.showConnectionModal=!0}},Dt=wt,Tt=n("7496"),It=n("a523"),Rt=n("f6c4"),Nt=Object(b["a"])(Dt,a,o,!1,null,null,null),Et=Nt.exports;_()(Nt,{VApp:Tt["a"],VContainer:It["a"],VMain:Rt["a"]});var Pt,Lt,Ut=n("8c4f"),Bt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ClientsOverview")],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ServersOverview")],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("NamespacesOverview")],1)],1)],1)],1)},Mt=[],At=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",[n("v-card-title",{staticClass:"text-center"},[t._v(" "+t._s(t.$t("clients.title"))+" "),n("v-spacer"),n("v-btn",{attrs:{to:{name:"clients"},small:""}},[n("v-icon",[t._v("mdi-dots-horizontal")])],1)],1),n("v-card-text",[n("v-row",[n("Doughnut",{staticClass:"chart",attrs:{"chart-data":t.data}}),n("v-simple-table",{staticClass:"grow align-self-center",scopedSlots:t._u([{key:"default",fn:function(){return[n("tbody",[n("tr",[n("th",[t._v(t._s(t.$t("sockets.transport")))]),n("th",[t._v("#")])]),t._l(t.transports,(function(e){return n("tr",{key:e},[n("td",[n("Transport",{attrs:{transport:e}})],1),n("td",[n("div",[n("h2",[t._v(t._s(t.transportRepartition[e]||0))])]),n("div",[t._v(" "+t._s(t.percentage(t.transportRepartition[e]||0,t.clients.length))+" % ")])])])}))],2)]},proxy:!0}])})],1)],1)],1)},qt=[],Ft=(n("13d5"),n("4de4"),n("d81d"),n("1fca")),Ht=Ft["b"].reactiveProp,zt={extends:Ft["a"],mixins:[Ht],props:["options"],mounted:function(){this.renderChart(this.chartData,{legend:!1})}},Jt=zt,Wt=Object(b["a"])(Jt,Pt,Lt,!1,null,null,null),Kt=Wt.exports,Qt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-chip",{attrs:{small:"",color:t.color,outlined:""}},[t._v(t._s(t.label))])},Xt=[],Yt={name:"Transport",props:{transport:String},computed:{label:function(){switch(this.transport){case"polling":return"HTTP long-polling";case"websocket":return"WebSocket";default:return this.transport}},color:function(){switch(this.transport){case"polling":return v["a"].orange.base;case"websocket":return v["a"].green.base;default:return v["a"].grey.base}}}},Zt=Yt,Gt=Object(b["a"])(Zt,Qt,Xt,!1,null,null,null),te=Gt.exports;_()(Gt,{VChip:g["a"]});var ee=n("53ca"),ne=(n("a15b"),n("a434"),n("caad"),n("2532"),n("b680"),n("1c8f")),se=function(){var t="test";try{return localStorage.setItem(t,t),localStorage.removeItem(t),!0}catch(e){return!1}},ae=se();function oe(t){var e=Math.ceil(Math.max(t,0)),n=Math.floor(e/86400),s=Math.floor((e-86400*n)/3600),a=Math.floor((e-86400*n-3600*s)/60),o=Math.ceil(e)-86400*n-3600*s-60*a,r=[];return n>0&&r.push(n+"d"),(n>0||s>0)&&r.push(s+"h"),(n>0||s>0||a>0)&&r.push(a+"m"),r.push(o+"s"),r.join(" ")}function re(t,e){var n="object"===Object(ee["a"])(e)?Object(ne["a"])(t,e):t.indexOf(e);return-1===n?[]:t.splice(n,1)}function ie(t,e){t.includes(e)||t.push(e)}function ce(t,e){return 0===e?0:(t/e*100).toFixed(1)}var le={name:"ClientsOverview",components:{Transport:te,Doughnut:Kt},data:function(){return{transports:["websocket","polling"]}},computed:Object(r["a"])(Object(r["a"])({},Object(l["d"])({clients:function(t){return t.main.clients},darkTheme:function(t){return t.config.darkTheme}})),{},{transportRepartition:function(){return this.clients.map((function(t){return t.sockets[0]})).filter((function(t){return!!t})).reduce((function(t,e){return t[e.transport]=t[e.transport]||0,t[e.transport]++,t}),{})},data:function(){return{labels:["WebSocket","HTTP long-polling"],datasets:[{backgroundColor:[v["a"].green.base,v["a"].orange.base],borderColor:this.darkTheme?"black":"white",data:[this.transportRepartition["websocket"],this.transportRepartition["polling"]]}]}}}),methods:{percentage:ce}},de=le,ue=(n("1016"),n("0fd9")),me=n("1f4f"),pe=Object(b["a"])(de,At,qt,!1,null,"58987bf8",null),ve=pe.exports;_()(pe,{VBtn:T["a"],VCard:yt["a"],VCardText:St["a"],VCardTitle:St["b"],VIcon:ct["a"],VRow:ue["a"],VSimpleTable:me["a"],VSpacer:R["a"]});var fe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",[n("v-card-title",{staticClass:"text-center"},[t._v(" "+t._s(t.$t("servers.title"))+" "),n("v-spacer"),n("v-btn",{attrs:{to:{name:"servers"},small:""}},[n("v-icon",[t._v("mdi-dots-horizontal")])],1)],1),n("v-card-text",[n("v-row",[n("Doughnut",{staticClass:"chart",attrs:{"chart-data":t.data}}),n("v-simple-table",{staticClass:"grow align-self-center",scopedSlots:t._u([{key:"default",fn:function(){return[n("tbody",[n("tr",[n("th",[t._v(t._s(t.$t("status")))]),n("th",[t._v("#")])]),n("tr",[n("td",[n("ServerStatus",{attrs:{healthy:""}})],1),n("td",[n("div",[n("h2",[t._v(t._s(t.healthyServers))])]),n("div",[t._v(t._s(t.percentage(t.healthyServers,t.totalServers))+" %")])])]),n("tr",[n("td",[n("ServerStatus")],1),n("td",[n("div",[n("h2",[t._v(t._s(t.totalServers-t.healthyServers))])]),n("div",[t._v(" "+t._s(t.percentage(t.totalServers-t.healthyServers,t.totalServers))+" % ")])])])])]},proxy:!0}])})],1)],1)],1)},he=[],be=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Status",{attrs:{value:t.healthy,"ok-label":t.$t("servers.healthy"),"ko-label":t.$t("servers.unhealthy")}})},ke=[],_e={name:"ServerStatus",components:{Status:S},props:{healthy:Boolean}},ge=_e,ye=Object(b["a"])(ge,be,ke,!1,null,null,null),Se=ye.exports,Ce={name:"ServersOverview",components:{ServerStatus:Se,Doughnut:Kt},computed:Object(r["a"])(Object(r["a"])({},Object(l["d"])({healthyServers:function(t){return t.servers.servers.filter((function(t){return t.healthy})).length},totalServers:function(t){return t.servers.servers.length},darkTheme:function(t){return t.config.darkTheme}})),{},{data:function(){return{labels:[this.$t("servers.healthy"),this.$t("servers.unhealthy")],datasets:[{backgroundColor:[v["a"].green.base,v["a"].red.base],borderColor:this.darkTheme?"black":"white",data:[this.healthyServers,this.totalServers-this.healthyServers]}]}}}),methods:{percentage:ce}},Oe=Ce,$e=(n("db72"),Object(b["a"])(Oe,fe,he,!1,null,"d6482f56",null)),je=$e.exports;_()($e,{VBtn:T["a"],VCard:yt["a"],VCardText:St["a"],VCardTitle:St["b"],VIcon:ct["a"],VRow:ue["a"],VSimpleTable:me["a"],VSpacer:R["a"]});var xe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",{staticClass:"text-center"},[t._v(" "+t._s(t.$t("namespaces"))+" "),n("v-spacer"),n("v-btn",{attrs:{to:{name:"sockets"},small:""}},[n("v-icon",[t._v("mdi-dots-horizontal")])],1)],1),n("v-simple-table",{scopedSlots:t._u([{key:"default",fn:function(){return[n("thead",[n("tr",[n("th",[t._v(t._s(t.$t("name")))]),n("th",[t._v(t._s(t.$t("rooms.sockets-count")))])])]),n("tbody",t._l(t.namespaces,(function(e){return n("tr",{key:e.name},[n("td",{staticClass:"key-column"},[n("code",[t._v(t._s(e.name))])]),n("td",[t._v(t._s(e.sockets.length))])])})),0)]},proxy:!0}])})],1)},Ve=[],we=n("d66c"),De={name:"NamespacesOverview",computed:Object(r["a"])({},Object(l["d"])({namespaces:function(t){return Object(we["a"])(t.main.namespaces,"name")}}))},Te=De,Ie=Object(b["a"])(Te,xe,Ve,!1,null,"0de70938",null),Re=Ie.exports;_()(Ie,{VBtn:T["a"],VCard:yt["a"],VCardTitle:St["b"],VIcon:ct["a"],VSimpleTable:me["a"],VSpacer:R["a"]});var Ne={name:"Dashboard",components:{NamespacesOverview:Re,ServersOverview:je,ClientsOverview:ve},computed:{breadcrumbItems:function(){return[{text:this.$t("dashboard.title"),disabled:!0}]}}},Ee=Ne,Pe=n("2bc5"),Le=n("62ad"),Ue=Object(b["a"])(Ee,Bt,Mt,!1,null,null,null),Be=Ue.exports;_()(Ue,{VBreadcrumbs:Pe["a"],VCol:Le["a"],VContainer:It["a"],VRow:ue["a"]});var Me=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-card-text",[n("NamespaceSelector")],1),n("v-data-table",{attrs:{headers:t.headers,items:t.sockets,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.transport",fn:function(t){var e=t.value;return[n("Transport",{attrs:{transport:e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.displayDetails")))])])]}}])})],1)],1)},Ae=[],qe=(n("b0c0"),function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-select",{staticClass:"selector",attrs:{value:t.selectedNamespace,items:t.namespaces,"item-text":"name","item-value":"name",label:t.$t("select-namespace"),"persistent-hint":"","return-object":""},on:{change:t.selectNamespace}})}),Fe=[],He={name:"NamespaceSelector",computed:Object(r["a"])({},Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},namespaces:function(t){return Object(we["a"])(t.main.namespaces,"name")}})),methods:Object(r["a"])({},Object(l["c"])("main",["selectNamespace"]))},ze=He,Je=(n("f712"),Object(b["a"])(ze,qe,Fe,!1,null,"2c330798",null)),We=Je.exports;_()(Je,{VSelect:F["a"]});var Ke={name:"Sockets",components:{Transport:te,NamespaceSelector:We},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])(Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("sockets.title"),disabled:!0}]},headers:function(){return[{text:"#",value:"id",align:"start"},{text:this.$t("sockets.address"),value:"handshake.address"},{text:this.$t("sockets.transport"),value:"transport"},{value:"actions",align:"end",sortable:!1}]}},Object(l["b"])("main",["sockets"])),Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnect:function(t){xt.socket.emit("_disconnect",t.nsp,!1,t.id)},displayDetails:function(t){this.$router.push({name:"socket",params:{nsp:this.selectedNamespace.name,id:t.id}})}}},Qe=Ke,Xe=n("8fea"),Ye=n("3a2f"),Ze=Object(b["a"])(Qe,Me,Ae,!1,null,null,null),Ge=Ze.exports;_()(Ze,{VBreadcrumbs:Pe["a"],VBtn:T["a"],VCard:yt["a"],VCardText:St["a"],VDataTable:Xe["a"],VIcon:ct["a"],VTooltip:Ye["a"]});var tn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),t.socket?n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("SocketDetails",{attrs:{socket:t.socket,client:t.client}})],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("InitialRequest",{attrs:{socket:t.socket}})],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("SocketRooms",{attrs:{socket:t.socket}})],1)],1)],1):t._e()],1)},en=[],nn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("rooms.title")))]),n("v-data-table",{attrs:{headers:t.headers,items:t.roomsAsObjects,dense:""},scopedSlots:t._u([{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketLeaveSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.leave(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.leave")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.displayDetails")))])])]}}])}),n("v-card-text",[n("form",{on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[n("v-combobox",{staticClass:"select-room d-inline-block mr-3",attrs:{"search-input":t.newRoom,label:t.$t("sockets.join-a-room"),items:t.availableRooms,"item-value":"name","item-text":"name",disabled:t.isReadonly,"return-object":!1},on:{"update:searchInput":function(e){t.newRoom=e},"update:search-input":function(e){t.newRoom=e}}}),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({attrs:{type:"submit",small:"",disabled:t.isReadonly}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-tag-plus-outline")])],1)]}}])},[n("span",[t._v(t._s(t.$t("sockets.join")))])])],1)])],1)},sn=[],an=(n("fb6a"),n("1775")),on={name:"SocketRooms",props:{socket:Object},data:function(){return{newRoom:""}},computed:Object(r["a"])(Object(r["a"])({headers:function(){return[{text:this.$t("id"),value:"name",align:"start"},{value:"actions",align:"end",sortable:!1}]},roomsAsObjects:function(){return this.socket.rooms.slice(0).sort().map((function(t){return{name:t}}))},availableRooms:function(){return Object(an["a"])(this.findRoomsByNamespace(this.socket.nsp),this.roomsAsObjects,"name")}},Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},isReadonly:function(t){return t.config.readonly},isSocketLeaveSupported:function(t){return t.config.supportedFeatures.includes("LEAVE")},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),Object(l["b"])("main",["findRoomsByNamespace"])),methods:{emit:function(){},onSubmit:function(){xt.socket.emit("join",this.socket.nsp,this.newRoom,this.socket.id),this.newRoom=""},leave:function(t){xt.socket.emit("leave",this.socket.nsp,t.name,this.socket.id)},disconnect:function(){xt.socket.emit("_disconnect",this.socket.nsp,!1,this.socket.id)},displayDetails:function(t){this.$router.push({name:"room",params:{nsp:this.socket.nsp,name:t.name}})}}},rn=on,cn=(n("633d"),n("2b5d")),ln=Object(b["a"])(rn,nn,sn,!1,null,"d014ee1e",null),dn=ln.exports;_()(ln,{VBtn:T["a"],VCard:yt["a"],VCardText:St["a"],VCardTitle:St["b"],VCombobox:cn["a"],VDataTable:Xe["a"],VIcon:ct["a"],VTooltip:Ye["a"]});var un=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("details")))]),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.client")))])]),n("v-simple-table",{attrs:{dense:""}},[[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(" "+t._s(t.client.id)+" ")]),n("td",{attrs:{align:"right"}},[t.client.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.navigateToClient()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!1,898213143)},[n("span",[t._v(t._s(t.$t("clients.displayDetails")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("ConnectionStatus",{attrs:{connected:t.client.connected}})],1),n("td",{attrs:{align:"right"}},[t.isSocketDisconnectSupported&&t.client.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnectClient()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!1,1004975867)},[n("span",[t._v(t._s(t.$t("clients.disconnect")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.transport")))]),n("td",[n("Transport",{attrs:{transport:t.socket.transport}})],1),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.address")))]),n("td",[t._v(t._s(t.socket.handshake.address))]),n("td")])])]],2),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.socket")))])]),n("v-simple-table",{attrs:{dense:""},scopedSlots:t._u([{key:"default",fn:function(){return[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("namespace")))]),n("td",[n("code",[t._v(t._s(t.socket.nsp))])]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(t._s(t.socket.id))]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("ConnectionStatus",{attrs:{connected:t.socket.connected}})],1),n("td",{attrs:{align:"right"}},[t.isSocketDisconnectSupported&&t.socket.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnectSocket()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!1,2351110648)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.creation-date")))]),n("td",[t._v(t._s(t.creationDate))]),n("td")])])]},proxy:!0}])})],1)},mn=[],pn={name:"SocketDetails",components:{ConnectionStatus:j,Transport:te},props:{socket:Object,client:Object},computed:Object(r["a"])({creationDate:function(){return new Date(this.socket.handshake.issued).toISOString()}},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{navigateToClient:function(){this.$router.push({name:"client",params:{id:this.client.id}})},disconnectClient:function(){xt.socket.emit("_disconnect",this.socket.nsp,!0,this.socket.id)},disconnectSocket:function(){xt.socket.emit("_disconnect",this.socket.nsp,!1,this.socket.id)}}},vn=pn,fn=(n("9073"),Object(b["a"])(vn,un,mn,!1,null,"1a6e3452",null)),hn=fn.exports;_()(fn,{VBtn:T["a"],VCard:yt["a"],VCardText:St["a"],VCardTitle:St["b"],VIcon:ct["a"],VSimpleTable:me["a"],VTooltip:Ye["a"]});var bn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("sockets.initial-request")))]),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.headers")))])]),n("KeyValueTable",{attrs:{object:t.socket.handshake.headers}}),n("v-card-text",[n("h4",[t._v(t._s(t.$t("sockets.query-params")))])]),n("KeyValueTable",{attrs:{object:t.socket.handshake.query}})],1)},kn=[],_n=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-simple-table",{attrs:{dense:""},scopedSlots:t._u([{key:"default",fn:function(){return[n("thead",[n("tr",[n("th",[t._v(t._s(t.$t("name")))]),n("th",[t._v(t._s(t.$t("value")))])])]),n("tbody",t._l(t.items,(function(e){var s=e.key,a=e.value;return n("tr",{key:s},[n("td",{staticClass:"key-column"},[t._v(t._s(s))]),n("td",[t._v(t._s(a))])])})),0)]},proxy:!0}])})},gn=[],yn=(n("b64b"),{name:"KeyValueTable",props:{object:Object},computed:{items:function(){var t=this,e=Object.keys(this.object);return e.sort().map((function(e){return{key:e,value:t.object[e]}}))}}}),Sn=yn,Cn=(n("786c"),Object(b["a"])(Sn,_n,gn,!1,null,"18284f59",null)),On=Cn.exports;_()(Cn,{VSimpleTable:me["a"]});var $n={name:"InitialRequest",components:{KeyValueTable:On},props:{socket:Object}},jn=$n,xn=Object(b["a"])(jn,bn,kn,!1,null,null,null),Vn=xn.exports;_()(xn,{VCard:yt["a"],VCardText:St["a"],VCardTitle:St["b"]});var wn={name:"Socket",components:{InitialRequest:Vn,SocketDetails:hn,SocketRooms:dn},data:function(){return{socket:null,client:null}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("sockets.title"),to:{name:"sockets"}},{text:this.$t("sockets.details"),disabled:!0}]}},Object(l["b"])("main",["findSocketById","findClientById"])),mounted:function(){this.socket=this.findSocketById(this.$route.params.nsp,this.$route.params.id),this.socket&&(this.client=this.findClientById(this.socket.clientId))}},Dn=wn,Tn=Object(b["a"])(Dn,tn,en,!1,null,"14172ed0",null),In=Tn.exports;_()(Tn,{VBreadcrumbs:Pe["a"],VCol:Le["a"],VContainer:It["a"],VRow:ue["a"]});var Rn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-card-text",{staticClass:"d-flex"},[n("NamespaceSelector"),n("v-switch",{staticClass:"ml-3",attrs:{label:t.$t("rooms.show-private"),inset:"",dense:""},on:{change:t.onPrivateRoomsUpdate},model:{value:t.showPrivateRooms,callback:function(e){t.showPrivateRooms=e},expression:"showPrivateRooms"}})],1),n("v-data-table",{attrs:{headers:t.headers,items:t.filteredRooms,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.sockets",fn:function(e){var n=e.item;return[t._v(" "+t._s(n.sockets.length)+" ")]}},{key:"item.isPrivate",fn:function(t){var e=t.value;return[n("RoomType",{attrs:{"is-private":e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isMultiLeaveSupported&&!s.isPrivate?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.clear(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.clear")))])]):t._e(),t.isMultiDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.displayDetails")))])])]}}])})],1)],1)},Nn=[],En=(n("5319"),n("ac1f"),function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Status",{attrs:{value:!t.isPrivate,"ok-label":t.$t("rooms.public"),"ko-label":t.$t("rooms.private")}})}),Pn=[],Ln={name:"RoomType",components:{Status:S},props:{isPrivate:Boolean}},Un=Ln,Bn=Object(b["a"])(Un,En,Pn,!1,null,null,null),Mn=Bn.exports,An={name:"Rooms",components:{RoomType:Mn,NamespaceSelector:We},data:function(){return{showPrivateRooms:!1,footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])(Object(r["a"])(Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("rooms.title"),disabled:!0}]},headers:function(){return[{text:this.$t("id"),value:"name",align:"start"},{text:this.$t("type"),value:"isPrivate"},{text:this.$t("rooms.sockets-count"),value:"sockets"},{value:"actions",align:"end",sortable:!1}]}},Object(l["b"])("main",["rooms"])),Object(l["d"])({selectedNamespace:function(t){return t.main.selectedNamespace},isReadonly:function(t){return t.config.readonly},isMultiLeaveSupported:function(t){return t.config.supportedFeatures.includes("MLEAVE")},isMultiDisconnectSupported:function(t){return t.config.supportedFeatures.includes("MDISCONNECT")}})),{},{filteredRooms:function(){var t=this.showPrivateRooms?this.rooms:this.rooms.filter((function(t){return!t.isPrivate}));return Object(we["a"])(t,"name")}}),methods:{clear:function(t){xt.socket.emit("leave",this.selectedNamespace.name,t.name)},disconnect:function(t){xt.socket.emit("_disconnect",this.selectedNamespace.name,!1,t.name)},displayDetails:function(t){this.$router.push({name:"room",params:{nsp:this.selectedNamespace.name,name:t.name}})},onPrivateRoomsUpdate:function(t){var e=t?{p:1}:{};this.$router.replace({name:"rooms",query:e})}},mounted:function(){this.showPrivateRooms="1"===this.$route.query.p}},qn=An,Fn=Object(b["a"])(qn,Rn,Nn,!1,null,null,null),Hn=Fn.exports;_()(Fn,{VBreadcrumbs:Pe["a"],VBtn:T["a"],VCard:yt["a"],VCardText:St["a"],VDataTable:Xe["a"],VIcon:ct["a"],VSwitch:X["a"],VTooltip:Ye["a"]});var zn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-data-table",{attrs:{headers:t.headers,items:t.clients,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.address",fn:function(e){var s=e.item;return[s.sockets.length?n("span",[t._v(t._s(s.sockets[0].handshake.address))]):t._e()]}},{key:"item.transport",fn:function(e){var s=e.item;return[s.sockets.length?n("Transport",{attrs:{transport:s.sockets[0].transport}}):t._e()]}},{key:"item.sockets",fn:function(e){var n=e.item;return[t._v(" "+t._s(n.sockets.length)+" ")]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("clients.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("clients.displayDetails")))])])]}}])})],1)],1)},Jn=[],Wn={name:"Clients",components:{Transport:te},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("clients.title"),disabled:!0}]},headers:function(){return[{text:"#",value:"id",align:"start"},{text:this.$t("sockets.address"),value:"address"},{text:this.$t("sockets.transport"),value:"transport"},{text:this.$t("clients.sockets-count"),value:"sockets"},{value:"actions",align:"end",sortable:!1}]}},Object(l["d"])({clients:function(t){return t.main.clients},isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnect:function(t){var e=t.sockets[0];e&&xt.socket.emit("_disconnect",e.nsp,!0,e.id)},displayDetails:function(t){this.$router.push({name:"client",params:{id:t.id}})}}},Kn=Wn,Qn=Object(b["a"])(Kn,zn,Jn,!1,null,null,null),Xn=Qn.exports;_()(Qn,{VBreadcrumbs:Pe["a"],VBtn:T["a"],VCard:yt["a"],VDataTable:Xe["a"],VIcon:ct["a"],VTooltip:Ye["a"]});var Yn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),t.client?n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ClientDetails",{attrs:{client:t.client,socket:t.socket}})],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[t.socket?n("InitialRequest",{attrs:{socket:t.socket}}):t._e()],1),n("v-col",{attrs:{sm:"12",md:"6",lg:"4"}},[n("ClientSockets",{attrs:{sockets:t.client.sockets}})],1)],1)],1):t._e()],1)},Zn=[],Gn=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("details")))]),n("v-simple-table",{attrs:{dense:""}},[[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(" "+t._s(t.client.id)+" ")]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("ConnectionStatus",{attrs:{connected:t.client.connected}})],1),n("td",{attrs:{align:"right"}},[t.isSocketDisconnectSupported&&t.client.connected?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnectClient()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!1,1004975867)},[n("span",[t._v(t._s(t.$t("clients.disconnect")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.transport")))]),n("td",[n("Transport",{attrs:{transport:t.socket.transport}})],1),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("sockets.address")))]),n("td",[t._v(t._s(t.socket.handshake.address))]),n("td")])])]],2)],1)},ts=[],es={name:"ClientDetails",components:{ConnectionStatus:j,Transport:te},props:{client:Object,socket:Object},computed:Object(r["a"])({},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnectClient:function(){var t=this.client.sockets[0];t&&xt.socket.emit("_disconnect",t.nsp,!0,t.id)}}},ns=es,ss=(n("6602"),Object(b["a"])(ns,Gn,ts,!1,null,"8d2424e4",null)),as=ss.exports;_()(ss,{VBtn:T["a"],VCard:yt["a"],VCardTitle:St["b"],VIcon:ct["a"],VSimpleTable:me["a"],VTooltip:Ye["a"]});var os=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",[n("v-card-title",[t._v(t._s(t.$t("sockets.title")))]),n("v-data-table",{attrs:{headers:t.headers,items:t.sockets,dense:""},scopedSlots:t._u([{key:"item.nsp",fn:function(e){var s=e.value;return[n("code",[t._v(t._s(s))])]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.displayDetails")))])])]}}])})],1)},rs=[],is={name:"ClientSockets",props:{sockets:Array},computed:Object(r["a"])({headers:function(){return[{text:"#",value:"id",align:"start"},{text:this.$t("namespace"),value:"nsp"},{value:"actions",align:"end",sortable:!1}]}},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{disconnect:function(t){xt.socket.emit("_disconnect",t.nsp,!1,t.id)},displayDetails:function(t){this.$router.push({name:"socket",params:{nsp:t.nsp,id:t.id}})}}},cs=is,ls=Object(b["a"])(cs,os,rs,!1,null,null,null),ds=ls.exports;_()(ls,{VBtn:T["a"],VCard:yt["a"],VCardTitle:St["b"],VDataTable:Xe["a"],VIcon:ct["a"],VTooltip:Ye["a"]});var us={name:"Client",components:{ClientSockets:ds,InitialRequest:Vn,ClientDetails:as},data:function(){return{socket:null,client:null}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("clients.title"),to:{name:"clients"},exact:!0},{text:this.$t("clients.details"),disabled:!0}]}},Object(l["b"])("main",["findClientById"])),mounted:function(){this.client=this.findClientById(this.$route.params.id),this.client&&(this.socket=this.client.sockets[0])}},ms=us,ps=Object(b["a"])(ms,Yn,Zn,!1,null,"3d554d12",null),vs=ps.exports;_()(ps,{VBreadcrumbs:Pe["a"],VCol:Le["a"],VContainer:It["a"],VRow:ue["a"]});var fs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),n("v-card",[n("v-data-table",{attrs:{headers:t.headers,items:t.servers,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.uptime",fn:function(e){var n=e.value;return[t._v(" "+t._s(t.formatDuration(n))+" ")]}},{key:"item.lastPing",fn:function(e){var n=e.value;return[t._v(" "+t._s(t.delaySinceLastPing(n))+" ")]}},{key:"item.healthy",fn:function(t){var e=t.value;return[n("ServerStatus",{attrs:{healthy:e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[s.healthy?t._e():n("v-btn",{attrs:{small:""},on:{click:function(e){return t.removeServer(s)}}},[n("v-icon",[t._v("mdi-delete-outline")])],1)]}}])})],1)],1)},hs=[],bs={name:"Servers",components:{ServerStatus:Se},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]},now:Date.now()}},created:function(){var t=this;this.interval=setInterval((function(){t.now=Date.now()}),1e3)},beforeDestroy:function(){clearInterval(this.interval)},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("servers.title"),disabled:!0}]},headers:function(){return[{text:this.$t("id"),value:"serverId"},{text:this.$t("servers.hostname"),value:"hostname"},{text:this.$t("servers.pid"),value:"pid"},{text:this.$t("servers.uptime"),value:"uptime"},{text:this.$t("servers.clients-count"),value:"clientsCount"},{text:this.$t("servers.last-ping"),value:"lastPing"},{text:this.$t("status"),value:"healthy"},{value:"actions",align:"end",sortable:!1}]}},Object(l["d"])({servers:function(t){return Object(we["a"])(t.servers.servers,"serverId")}})),methods:{formatDuration:oe,delaySinceLastPing:function(t){var e=this.now-t;return"".concat(oe(e/1e3)," ago")},removeServer:function(t){this.$store.commit("servers/removeServer",t.serverId)}}},ks=bs,_s=Object(b["a"])(ks,fs,hs,!1,null,null,null),gs=_s.exports;_()(_s,{VBreadcrumbs:Pe["a"],VBtn:T["a"],VCard:yt["a"],VDataTable:Xe["a"],VIcon:ct["a"]});var ys=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-breadcrumbs",{attrs:{items:t.breadcrumbItems}}),t.room?n("v-container",{attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{sm:"12",md:"4"}},[n("RoomDetails",{attrs:{room:t.room,nsp:t.$route.params.nsp}})],1),n("v-col",{attrs:{sm:"12",md:"8"}},[n("RoomSockets",{attrs:{room:t.room}})],1)],1)],1):t._e()],1)},Ss=[],Cs=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.room?n("v-card",[n("v-card-title",[t._v(t._s(t.$t("sockets.title")))]),n("v-data-table",{attrs:{headers:t.headers,items:t.room.sockets,"footer-props":t.footerProps},scopedSlots:t._u([{key:"item.transport",fn:function(t){var e=t.value;return[n("Transport",{attrs:{transport:e}})]}},{key:"item.actions",fn:function(e){var s=e.item;return[t.isSocketLeaveSupported&&!t.room.isPrivate?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.leave(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("rooms.leave")))])]):t._e(),t.isSocketDisconnectSupported?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.disconnect(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-logout")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.disconnect")))])]):t._e(),n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var a=e.on,o=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{small:""},on:{click:function(e){return t.displayDetails(s)}}},"v-btn",o,!1),a),[n("v-icon",[t._v("mdi-dots-horizontal")])],1)]}}],null,!0)},[n("span",[t._v(t._s(t.$t("sockets.displayDetails")))])])]}}],null,!1,1092228050)})],1):t._e()},Os=[],$s={name:"RoomSockets",components:{Transport:te},props:{room:Object},data:function(){return{footerProps:{"items-per-page-options":[20,100,-1]}}},computed:Object(r["a"])(Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("rooms.title"),to:{name:"rooms"}},{text:this.$t("rooms.details"),disabled:!0}]},headers:function(){return[{text:this.$t("id"),value:"id",align:"start"},{text:this.$t("sockets.address"),value:"handshake.address"},{text:this.$t("sockets.transport"),value:"transport"},{value:"actions",align:"end",sortable:!1}]}},Object(l["b"])("main",["findRoomByName"])),Object(l["d"])({isReadonly:function(t){return t.config.readonly},isSocketLeaveSupported:function(t){return t.config.supportedFeatures.includes("LEAVE")},isSocketDisconnectSupported:function(t){return t.config.supportedFeatures.includes("DISCONNECT")}})),methods:{leave:function(t){xt.socket.emit("leave",t.nsp,this.room.name,t.id)},disconnect:function(t){xt.socket.emit("_disconnect",t.nsp,!1,t.id)},displayDetails:function(t){this.$router.push({name:"socket",params:{nsp:this.$route.params.nsp,id:t.id}})}}},js=$s,xs=Object(b["a"])(js,Cs,Os,!1,null,null,null),Vs=xs.exports;_()(xs,{VBtn:T["a"],VCard:yt["a"],VCardTitle:St["b"],VDataTable:Xe["a"],VIcon:ct["a"],VTooltip:Ye["a"]});var ws=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-card",{staticClass:"fill-height"},[n("v-card-title",[t._v(t._s(t.$t("details")))]),n("v-simple-table",{attrs:{dense:""}},[[n("tbody",[n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("namespace")))]),n("td",[n("code",[t._v(t._s(t.nsp))])]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("id")))]),n("td",[t._v(" "+t._s(t.room.name)+" ")]),n("td")]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("status")))]),n("td",[n("RoomStatus",{attrs:{active:t.room.active}})],1),n("td",{attrs:{align:"right"}},[t.isMultiLeaveSupported&&!t.room.isPrivate?n("v-tooltip",{attrs:{bottom:""},scopedSlots:t._u([{key:"activator",fn:function(e){var s=e.on,a=e.attrs;return[n("v-btn",t._g(t._b({staticClass:"ml-3",attrs:{disabled:t.isReadonly,small:""},on:{click:function(e){return t.clear()}}},"v-btn",a,!1),s),[n("v-icon",[t._v("mdi-tag-off-outline")])],1)]}}],null,!1,464351539)},[n("span",[t._v(t._s(t.$t("rooms.clear")))])]):t._e()],1)]),n("tr",[n("td",{staticClass:"key-column"},[t._v(t._s(t.$t("type")))]),n("td",[n("RoomType",{attrs:{"is-private":t.room.isPrivate}})],1),n("td")])])]],2)],1)},Ds=[],Ts=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Status",{attrs:{value:t.active,"ok-label":t.$t("rooms.active"),"ko-label":t.$t("rooms.deleted")}})},Is=[],Rs={name:"RoomStatus",components:{Status:S},props:{active:Boolean}},Ns=Rs,Es=Object(b["a"])(Ns,Ts,Is,!1,null,null,null),Ps=Es.exports,Ls={name:"RoomDetails",components:{RoomType:Mn,RoomStatus:Ps},props:{room:Object,nsp:String},computed:Object(r["a"])({},Object(l["d"])({isReadonly:function(t){return t.config.readonly},isMultiLeaveSupported:function(t){return t.config.supportedFeatures.includes("MLEAVE")}})),methods:{clear:function(){xt.socket.emit("leave",this.nsp,this.room.name)}}},Us=Ls,Bs=Object(b["a"])(Us,ws,Ds,!1,null,"7b3793ea",null),Ms=Bs.exports;_()(Bs,{VBtn:T["a"],VCard:yt["a"],VCardTitle:St["b"],VIcon:ct["a"],VSimpleTable:me["a"],VTooltip:Ye["a"]});var As={name:"Sockets",components:{RoomDetails:Ms,RoomSockets:Vs},data:function(){return{room:null}},computed:Object(r["a"])({breadcrumbItems:function(){return[{text:this.$t("rooms.title"),to:{name:"rooms"}},{text:this.$t("rooms.details"),disabled:!0}]}},Object(l["b"])("main",["findRoomByName"])),mounted:function(){this.room=this.findRoomByName(this.$route.params.nsp,this.$route.params.name)}},qs=As,Fs=Object(b["a"])(qs,ys,Ss,!1,null,null,null),Hs=Fs.exports;_()(Fs,{VBreadcrumbs:Pe["a"],VCol:Le["a"],VContainer:It["a"],VRow:ue["a"]}),s["a"].use(Ut["a"]);var zs=[{path:"/",name:"dashboard",component:Be,meta:{topLevel:!0,index:0}},{path:"/sockets/",name:"sockets",component:Ge,meta:{topLevel:!0,index:1}},{path:"/n/:nsp/sockets/:id",name:"socket",component:In,meta:{topLevel:!1}},{path:"/rooms/",name:"rooms",component:Hn,meta:{topLevel:!0,index:2}},{path:"/n/:nsp/rooms/:name",name:"room",component:Hs,meta:{topLevel:!1}},{path:"/clients/",name:"clients",component:Xn,meta:{topLevel:!0,index:3}},{path:"/clients/:id",name:"client",component:vs,meta:{topLevel:!1}},{path:"/servers/",name:"servers",component:gs,meta:{topLevel:!0,index:4}}],Js=new Ut["a"]({mode:"hash",base:"/",routes:zs}),Ws=Js,Ks=(n("159b"),n("d3b7"),n("ddb0"),n("466d"),n("a925"));function Qs(){var t=n("49f8"),e={};return t.keys().forEach((function(n){var s=n.match(/([A-Za-z0-9-_]+)\./i);if(s&&s.length>1){var a=s[1];e[a]=t(n)}})),e}s["a"].use(Ks["a"]);var Xs=new Ks["a"]({locale:"en",fallbackLocale:"en",messages:Qs()}),Ys={namespaced:!0,state:{darkTheme:!1,readonly:!1,lang:"en",supportedFeatures:[]},mutations:{init:function(t){ae&&(t.darkTheme="true"===localStorage.getItem("dark_theme"),t.readonly="true"===localStorage.getItem("readonly"),t.lang=localStorage.getItem("lang")||"en")},selectTheme:function(t,e){t.darkTheme=e,ae&&localStorage.setItem("dark_theme",e)},selectLang:function(t,e){t.lang=e,ae&&localStorage.setItem("lang",e)},toggleReadonly:function(t){t.readonly=!t.readonly,ae&&localStorage.setItem("readonly",t.readonly)},updateConfig:function(t,e){t.supportedFeatures=e.supportedFeatures}}},Zs={namespaced:!0,state:{serverUrl:"",wsOnly:!1,path:"/socket.io",sessionId:"",connected:!1},mutations:{init:function(t){ae&&(t.serverUrl=localStorage.getItem("server_url"),t.wsOnly="true"===localStorage.getItem("ws_only"),t.sessionId=localStorage.getItem("session_id"),t.path=localStorage.getItem("path")||"/socket.io")},saveConfig:function(t,e){var n=e.serverUrl,s=e.wsOnly,a=e.path;t.serverUrl=n,t.wsOnly=s,t.path=a,ae&&(localStorage.setItem("server_url",n),localStorage.setItem("ws_only",s),localStorage.setItem("path",a))},saveSessionId:function(t,e){t.sessionId=e,ae&&localStorage.setItem("session_id",e)},connect:function(t){t.connected=!0},disconnect:function(t){t.connected=!1}}},Gs=n("3835"),ta=n("0a94"),ea=n("a1a3"),na=function(t,e){var n=Object(ta["a"])(t,{name:e});return n||(n={name:e,sockets:[],rooms:[]},t.push(n),n)},sa=function(t,e){var n=Object(ta["a"])(t.rooms,{name:e});return n||(n={name:e,active:!0,sockets:[]},t.rooms.push(n),n)},aa=function(t,e){var n=Object(ta["a"])(t,{id:e});return n||(n={id:e,connected:!0,sockets:[]},t.push(n),n)},oa=function(t,e){var n=na(t.namespaces,e.nsp);e.connected=!0,Object(ta["a"])(n.sockets,{id:e.id})||n.sockets.push(e),e.rooms.forEach((function(t){var s=sa(n,t);s.isPrivate=t===e.id,Object(ta["a"])(s.sockets,{id:e.id})||s.sockets.push(e)}));var s=aa(t.clients,e.clientId);Object(ta["a"])(s.sockets,{id:e.id})||s.sockets.push(e)},ra={namespaced:!0,state:{namespaces:[],clients:[],selectedNamespace:null},getters:{findSocketById:function(t){return function(e,n){var s=Object(ta["a"])(t.namespaces,{name:e});if(s)return Object(ta["a"])(s.sockets,{id:n})}},findClientById:function(t){return function(e){return Object(ta["a"])(t.clients,{id:e})}},findRoomByName:function(t){return function(e,n){var s=Object(ta["a"])(t.namespaces,{name:e});if(s)return Object(ta["a"])(s.rooms,{name:n})}},findRoomsByNamespace:function(t){return function(e){var n=Object(ta["a"])(t.namespaces,{name:e});return n?n.rooms:[]}},sockets:function(t){return t.selectedNamespace?t.selectedNamespace.sockets:[]},rooms:function(t){return t.selectedNamespace?t.selectedNamespace.rooms:[]}},mutations:{selectNamespace:function(t,e){t.selectedNamespace=e},onAllSockets:function(t,e){t.namespaces.forEach((function(t){t.sockets.splice(0),t.rooms.splice(0)})),t.clients.splice(0),e.forEach((function(e){return oa(t,e)})),t.selectedNamespace||(t.selectedNamespace=Object(ta["a"])(t.namespaces,{name:"/"})||t.namespaces[0])},onSocketConnected:function(t,e){oa(t,e)},onSocketUpdated:function(t,e){var n=na(t.namespaces,e.nsp),s=Object(ta["a"])(n.sockets,{id:e.id});s&&Object(ea["a"])(s,e)},onSocketDisconnected:function(t,e){var n=e.nsp,s=e.id,a=na(t.namespaces,n),o=re(a.sockets,{id:s}),r=Object(Gs["a"])(o,1),i=r[0];if(i){i.connected=!1;var c=aa(t.clients,i.clientId);re(c.sockets,{id:s}),0===c.sockets.length&&(c.connected=!1,re(t.clients,{id:i.clientId}))}},onRoomJoined:function(t,e){var n=e.nsp,s=e.room,a=e.id,o=na(t.namespaces,n),r=Object(ta["a"])(o.sockets,{id:a});if(r){ie(r.rooms,s);var i=sa(o,s);i.sockets.push(r)}},onRoomLeft:function(t,e){var n=e.nsp,s=e.room,a=e.id,o=na(t.namespaces,n),r=Object(ta["a"])(o.sockets,{id:a});r&&re(r.rooms,s);var i=sa(o,s);re(i.sockets,{id:a}),0===i.sockets.length&&(i.active=!1,re(o.rooms,{name:s}))}}},ia=1e4,ca={namespaced:!0,state:{servers:[]},mutations:{onServerStats:function(t,e){e.lastPing=Date.now();var n=Object(ta["a"])(t.servers,{serverId:e.serverId});n?Object(ea["a"])(n,e):(e.healthy=!0,t.servers.push(e))},removeServer:function(t,e){re(t.servers,{serverId:e})},updateState:function(t){t.servers.forEach((function(t){t.healthy=Date.now()-t.lastPing\n {{\n label\n }}\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Status.vue?vue&type=template&id=87034bbc&\"\nimport script from \"./Status.vue?vue&type=script&lang=js&\"\nexport * from \"./Status.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConnectionStatus.vue?vue&type=template&id=65b30979&\"\nimport script from \"./ConnectionStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./ConnectionStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppBar.vue?vue&type=template&id=07946445&\"\nimport script from \"./AppBar.vue?vue&type=script&lang=js&\"\nexport * from \"./AppBar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VBtn,VImg,VSpacer,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-navigation-drawer',{staticClass:\"elevation-3\",attrs:{\"app\":\"\",\"clipped\":\"\",\"permanent\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-divider'),_c('div',{staticClass:\"pa-3 pt-10\"},[_c('LangSelector'),_c('ThemeSelector'),_c('ReadonlyToggle')],1)]},proxy:true}])},[_c('v-list',{attrs:{\"dense\":\"\",\"nav\":\"\"}},_vm._l((_vm.items),function(item){return _c('v-list-item',{key:item.title,attrs:{\"to\":item.to,\"exact\":item.exact}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"dense\":\"\",\"value\":_vm.lang,\"items\":_vm.languages,\"label\":_vm.$t('config.language')},on:{\"change\":_vm.onSelectLang}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LangSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LangSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LangSelector.vue?vue&type=template&id=a8a0388e&\"\nimport script from \"./LangSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./LangSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VSelect})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-switch',{attrs:{\"input-value\":_vm.darkTheme,\"label\":_vm.$t('config.dark-theme'),\"inset\":\"\",\"dense\":\"\"},on:{\"change\":_vm.onSelectTheme}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThemeSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThemeSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ThemeSelector.vue?vue&type=template&id=65fd31ec&\"\nimport script from \"./ThemeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ThemeSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\ninstallComponents(component, {VSwitch})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-switch',{attrs:{\"input-value\":_vm.readonly,\"label\":_vm.$t('config.readonly'),\"disabled\":_vm.disabled,\"inset\":\"\",\"dense\":\"\"},on:{\"change\":_vm.toggleReadonly}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadonlyToggle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadonlyToggle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReadonlyToggle.vue?vue&type=template&id=5b271066&\"\nimport script from \"./ReadonlyToggle.vue?vue&type=script&lang=js&\"\nexport * from \"./ReadonlyToggle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\ninstallComponents(component, {VSwitch})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationDrawer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationDrawer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NavigationDrawer.vue?vue&type=template&id=5de9075c&\"\nimport script from \"./NavigationDrawer.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationDrawer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\ninstallComponents(component, {VDivider,VIcon,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VNavigationDrawer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":_vm.isOpen,\"transition\":\"dialog-bottom-transition\",\"max-width\":\"300\",\"persistent\":\"\"}},[_c('v-card',[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"connection.title\")))]),_c('v-card-text',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.serverUrl'),\"placeholder\":\"https://example.com/admin\",\"required\":\"\"},model:{value:(_vm.serverUrl),callback:function ($$v) {_vm.serverUrl=$$v},expression:\"serverUrl\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.username')},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.password'),\"type\":\"password\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-switch',{attrs:{\"label\":_vm.$t('connection.websocket-only'),\"inset\":\"\",\"dense\":\"\"},model:{value:(_vm.wsOnly),callback:function ($$v) {_vm.wsOnly=$$v},expression:\"wsOnly\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('connection.path')},model:{value:(_vm.path),callback:function ($$v) {_vm.path=$$v},expression:\"path\"}}),_c('v-btn',{staticClass:\"primary\",attrs:{\"loading\":_vm.isConnecting,\"disabled\":_vm.isConnecting || !_vm.isValid,\"type\":\"submit\"}},[_vm._v(_vm._s(_vm.$t(\"connection.connect\")))]),(_vm.error)?_c('div',{staticClass:\"red--text mt-3\"},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e()],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConnectionModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConnectionModal.vue?vue&type=template&id=3499bb0d&scoped=true&\"\nimport script from \"./ConnectionModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ConnectionModal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3499bb0d\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VDialog,VSwitch,VTextField})\n","export default {\n set socket(socket) {\n this._socket = socket;\n },\n\n get socket() {\n return this._socket;\n },\n};\n","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7654b75d&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VMain } from 'vuetify/lib/components/VMain';\ninstallComponents(component, {VApp,VContainer,VMain})\n","var render, staticRenderFns\nimport script from \"./Doughnut.vue?vue&type=script&lang=js&\"\nexport * from \"./Doughnut.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ClientsOverview')],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ServersOverview')],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('NamespacesOverview')],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"clients.title\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":{ name: 'clients' },\"small\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)],1),_c('v-card-text',[_c('v-row',[_c('Doughnut',{staticClass:\"chart\",attrs:{\"chart-data\":_vm.data}}),_c('v-simple-table',{staticClass:\"grow align-self-center\",scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('tbody',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"sockets.transport\")))]),_c('th',[_vm._v(\"#\")])]),_vm._l((_vm.transports),function(transport){return _c('tr',{key:transport},[_c('td',[_c('Transport',{attrs:{\"transport\":transport}})],1),_c('td',[_c('div',[_c('h2',[_vm._v(_vm._s(_vm.transportRepartition[transport] || 0))])]),_c('div',[_vm._v(\" \"+_vm._s(_vm.percentage( _vm.transportRepartition[transport] || 0, _vm.clients.length ))+\" % \")])])])})],2)]},proxy:true}])})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doughnut.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Doughnut.vue?vue&type=script&lang=js&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-chip',{attrs:{\"small\":\"\",\"color\":_vm.color,\"outlined\":\"\"}},[_vm._v(_vm._s(_vm.label))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Transport.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Transport.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Transport.vue?vue&type=template&id=54f750af&\"\nimport script from \"./Transport.vue?vue&type=script&lang=js&\"\nexport * from \"./Transport.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","import { findIndex } from \"lodash-es\";\n\nconst testLocalStorage = () => {\n const test = \"test\";\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nexport const isLocalStorageAvailable = testLocalStorage();\n\nexport function formatDuration(duration) {\n const d = Math.ceil(Math.max(duration, 0));\n const days = Math.floor(d / 86400);\n const hours = Math.floor((d - days * 86400) / 3600);\n const minutes = Math.floor((d - days * 86400 - hours * 3600) / 60);\n const seconds = Math.ceil(d) - days * 86400 - hours * 3600 - minutes * 60;\n\n const output = [];\n if (days > 0) {\n output.push(days + \"d\");\n }\n if (days > 0 || hours > 0) {\n output.push(hours + \"h\");\n }\n if (days > 0 || hours > 0 || minutes > 0) {\n output.push(minutes + \"m\");\n }\n output.push(seconds + \"s\");\n return output.join(\" \");\n}\n\n/**\n * lodash remove() does not play well with Vue.js\n */\nexport function remove(array, predicate) {\n const index =\n typeof predicate === \"object\"\n ? findIndex(array, predicate)\n : array.indexOf(predicate);\n return index === -1 ? [] : array.splice(index, 1);\n}\n\nexport function pushUniq(array, elem) {\n if (!array.includes(elem)) {\n array.push(elem);\n }\n}\n\nexport function percentage(value, total) {\n return total === 0 ? 0 : ((value / total) * 100).toFixed(1);\n}\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientsOverview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientsOverview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClientsOverview.vue?vue&type=template&id=58987bf8&scoped=true&\"\nimport script from \"./ClientsOverview.vue?vue&type=script&lang=js&\"\nexport * from \"./ClientsOverview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClientsOverview.vue?vue&type=style&index=0&id=58987bf8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"58987bf8\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VIcon,VRow,VSimpleTable,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"servers.title\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":{ name: 'servers' },\"small\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)],1),_c('v-card-text',[_c('v-row',[_c('Doughnut',{staticClass:\"chart\",attrs:{\"chart-data\":_vm.data}}),_c('v-simple-table',{staticClass:\"grow align-self-center\",scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('tbody',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('th',[_vm._v(\"#\")])]),_c('tr',[_c('td',[_c('ServerStatus',{attrs:{\"healthy\":\"\"}})],1),_c('td',[_c('div',[_c('h2',[_vm._v(_vm._s(_vm.healthyServers))])]),_c('div',[_vm._v(_vm._s(_vm.percentage(_vm.healthyServers, _vm.totalServers))+\" %\")])])]),_c('tr',[_c('td',[_c('ServerStatus')],1),_c('td',[_c('div',[_c('h2',[_vm._v(_vm._s(_vm.totalServers - _vm.healthyServers))])]),_c('div',[_vm._v(\" \"+_vm._s(_vm.percentage(_vm.totalServers - _vm.healthyServers, _vm.totalServers))+\" % \")])])])])]},proxy:true}])})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Status',{attrs:{\"value\":_vm.healthy,\"ok-label\":_vm.$t('servers.healthy'),\"ko-label\":_vm.$t('servers.unhealthy')}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServerStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServerStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ServerStatus.vue?vue&type=template&id=76035ea6&\"\nimport script from \"./ServerStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./ServerStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServersOverview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServersOverview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ServersOverview.vue?vue&type=template&id=d6482f56&scoped=true&\"\nimport script from \"./ServersOverview.vue?vue&type=script&lang=js&\"\nexport * from \"./ServersOverview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ServersOverview.vue?vue&type=style&index=0&id=d6482f56&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d6482f56\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VIcon,VRow,VSimpleTable,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"namespaces\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":{ name: 'sockets' },\"small\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)],1),_c('v-simple-table',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"name\")))]),_c('th',[_vm._v(_vm._s(_vm.$t(\"rooms.sockets-count\")))])])]),_c('tbody',_vm._l((_vm.namespaces),function(namespace){return _c('tr',{key:namespace.name},[_c('td',{staticClass:\"key-column\"},[_c('code',[_vm._v(_vm._s(namespace.name))])]),_c('td',[_vm._v(_vm._s(namespace.sockets.length))])])}),0)]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespacesOverview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespacesOverview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NamespacesOverview.vue?vue&type=template&id=0de70938&scoped=true&\"\nimport script from \"./NamespacesOverview.vue?vue&type=script&lang=js&\"\nexport * from \"./NamespacesOverview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0de70938\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VIcon,VSimpleTable,VSpacer})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=2764d552&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-card-text',[_c('NamespaceSelector')],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.sockets,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.transport\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('Transport',{attrs:{\"transport\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.displayDetails\")))])])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{staticClass:\"selector\",attrs:{\"value\":_vm.selectedNamespace,\"items\":_vm.namespaces,\"item-text\":\"name\",\"item-value\":\"name\",\"label\":_vm.$t('select-namespace'),\"persistent-hint\":\"\",\"return-object\":\"\"},on:{\"change\":_vm.selectNamespace}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespaceSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespaceSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NamespaceSelector.vue?vue&type=template&id=2c330798&scoped=true&\"\nimport script from \"./NamespaceSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./NamespaceSelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NamespaceSelector.vue?vue&type=style&index=0&id=2c330798&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c330798\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VSelect})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sockets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sockets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sockets.vue?vue&type=template&id=23b04124&\"\nimport script from \"./Sockets.vue?vue&type=script&lang=js&\"\nexport * from \"./Sockets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VCardText,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),(_vm.socket)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('SocketDetails',{attrs:{\"socket\":_vm.socket,\"client\":_vm.client}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('InitialRequest',{attrs:{\"socket\":_vm.socket}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('SocketRooms',{attrs:{\"socket\":_vm.socket}})],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"rooms.title\")))]),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.roomsAsObjects,\"dense\":\"\"},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketLeaveSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.leave(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.leave\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.displayDetails\")))])])]}}])}),_c('v-card-text',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('v-combobox',{staticClass:\"select-room d-inline-block mr-3\",attrs:{\"search-input\":_vm.newRoom,\"label\":_vm.$t('sockets.join-a-room'),\"items\":_vm.availableRooms,\"item-value\":\"name\",\"item-text\":\"name\",\"disabled\":_vm.isReadonly,\"return-object\":false},on:{\"update:searchInput\":function($event){_vm.newRoom=$event},\"update:search-input\":function($event){_vm.newRoom=$event}}}),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"type\":\"submit\",\"small\":\"\",\"disabled\":_vm.isReadonly}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-plus-outline\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.join\")))])])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketRooms.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketRooms.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SocketRooms.vue?vue&type=template&id=d014ee1e&scoped=true&\"\nimport script from \"./SocketRooms.vue?vue&type=script&lang=js&\"\nexport * from \"./SocketRooms.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SocketRooms.vue?vue&type=style&index=0&id=d014ee1e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d014ee1e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VCombobox,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"details\")))]),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.client\")))])]),_c('v-simple-table',{attrs:{\"dense\":\"\"}},[[_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.client.id)+\" \")]),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.client.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.navigateToClient()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,false,898213143)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.displayDetails\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('ConnectionStatus',{attrs:{\"connected\":_vm.client.connected}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isSocketDisconnectSupported && _vm.client.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnectClient()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,false,1004975867)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.disconnect\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.transport\")))]),_c('td',[_c('Transport',{attrs:{\"transport\":_vm.socket.transport}})],1),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.address\")))]),_c('td',[_vm._v(_vm._s(_vm.socket.handshake.address))]),_c('td')])])]],2),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.socket\")))])]),_c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"namespace\")))]),_c('td',[_c('code',[_vm._v(_vm._s(_vm.socket.nsp))])]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(_vm._s(_vm.socket.id))]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('ConnectionStatus',{attrs:{\"connected\":_vm.socket.connected}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isSocketDisconnectSupported && _vm.socket.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnectSocket()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,false,2351110648)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.creation-date\")))]),_c('td',[_vm._v(_vm._s(_vm.creationDate))]),_c('td')])])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SocketDetails.vue?vue&type=template&id=1a6e3452&scoped=true&\"\nimport script from \"./SocketDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./SocketDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SocketDetails.vue?vue&type=style&index=0&id=1a6e3452&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a6e3452\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VIcon,VSimpleTable,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"sockets.initial-request\")))]),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.headers\")))])]),_c('KeyValueTable',{attrs:{\"object\":_vm.socket.handshake.headers}}),_c('v-card-text',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"sockets.query-params\")))])]),_c('KeyValueTable',{attrs:{\"object\":_vm.socket.handshake.query}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"name\")))]),_c('th',[_vm._v(_vm._s(_vm.$t(\"value\")))])])]),_c('tbody',_vm._l((_vm.items),function(ref){\nvar key = ref.key;\nvar value = ref.value;\nreturn _c('tr',{key:key},[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(key))]),_c('td',[_vm._v(_vm._s(value))])])}),0)]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValueTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValueTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./KeyValueTable.vue?vue&type=template&id=18284f59&scoped=true&\"\nimport script from \"./KeyValueTable.vue?vue&type=script&lang=js&\"\nexport * from \"./KeyValueTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./KeyValueTable.vue?vue&type=style&index=0&id=18284f59&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18284f59\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VSimpleTable})\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InitialRequest.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InitialRequest.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InitialRequest.vue?vue&type=template&id=02abed88&\"\nimport script from \"./InitialRequest.vue?vue&type=script&lang=js&\"\nexport * from \"./InitialRequest.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard,VCardText,VCardTitle})\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Socket.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Socket.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Socket.vue?vue&type=template&id=14172ed0&scoped=true&\"\nimport script from \"./Socket.vue?vue&type=script&lang=js&\"\nexport * from \"./Socket.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"14172ed0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-card-text',{staticClass:\"d-flex\"},[_c('NamespaceSelector'),_c('v-switch',{staticClass:\"ml-3\",attrs:{\"label\":_vm.$t('rooms.show-private'),\"inset\":\"\",\"dense\":\"\"},on:{\"change\":_vm.onPrivateRoomsUpdate},model:{value:(_vm.showPrivateRooms),callback:function ($$v) {_vm.showPrivateRooms=$$v},expression:\"showPrivateRooms\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.filteredRooms,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.sockets\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.sockets.length)+\" \")]}},{key:\"item.isPrivate\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('RoomType',{attrs:{\"is-private\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isMultiLeaveSupported && !item.isPrivate)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.clear(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.clear\")))])]):_vm._e(),(_vm.isMultiDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.displayDetails\")))])])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Status',{attrs:{\"value\":!_vm.isPrivate,\"ok-label\":_vm.$t('rooms.public'),\"ko-label\":_vm.$t('rooms.private')}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomType.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomType.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomType.vue?vue&type=template&id=65e67f84&\"\nimport script from \"./RoomType.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomType.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rooms.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rooms.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Rooms.vue?vue&type=template&id=04cd8de4&\"\nimport script from \"./Rooms.vue?vue&type=script&lang=js&\"\nexport * from \"./Rooms.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VCardText,VDataTable,VIcon,VSwitch,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.clients,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.address\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.sockets.length)?_c('span',[_vm._v(_vm._s(item.sockets[0].handshake.address))]):_vm._e()]}},{key:\"item.transport\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.sockets.length)?_c('Transport',{attrs:{\"transport\":item.sockets[0].transport}}):_vm._e()]}},{key:\"item.sockets\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.sockets.length)+\" \")]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.displayDetails\")))])])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Clients.vue?vue&type=template&id=6a3ffff4&\"\nimport script from \"./Clients.vue?vue&type=script&lang=js&\"\nexport * from \"./Clients.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),(_vm.client)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ClientDetails',{attrs:{\"client\":_vm.client,\"socket\":_vm.socket}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[(_vm.socket)?_c('InitialRequest',{attrs:{\"socket\":_vm.socket}}):_vm._e()],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('ClientSockets',{attrs:{\"sockets\":_vm.client.sockets}})],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"details\")))]),_c('v-simple-table',{attrs:{\"dense\":\"\"}},[[_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.client.id)+\" \")]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('ConnectionStatus',{attrs:{\"connected\":_vm.client.connected}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isSocketDisconnectSupported && _vm.client.connected)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnectClient()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,false,1004975867)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"clients.disconnect\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.transport\")))]),_c('td',[_c('Transport',{attrs:{\"transport\":_vm.socket.transport}})],1),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"sockets.address\")))]),_c('td',[_vm._v(_vm._s(_vm.socket.handshake.address))]),_c('td')])])]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClientDetails.vue?vue&type=template&id=8d2424e4&scoped=true&\"\nimport script from \"./ClientDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./ClientDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClientDetails.vue?vue&type=style&index=0&id=8d2424e4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8d2424e4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VIcon,VSimpleTable,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"sockets.title\")))]),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.sockets,\"dense\":\"\"},scopedSlots:_vm._u([{key:\"item.nsp\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('code',[_vm._v(_vm._s(value))])]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.displayDetails\")))])])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientSockets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientSockets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClientSockets.vue?vue&type=template&id=92f31530&\"\nimport script from \"./ClientSockets.vue?vue&type=script&lang=js&\"\nexport * from \"./ClientSockets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VDataTable,VIcon,VTooltip})\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Client.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Client.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Client.vue?vue&type=template&id=3d554d12&scoped=true&\"\nimport script from \"./Client.vue?vue&type=script&lang=js&\"\nexport * from \"./Client.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d554d12\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),_c('v-card',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.servers,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.uptime\",fn:function(ref){\nvar value = ref.value;\nreturn [_vm._v(\" \"+_vm._s(_vm.formatDuration(value))+\" \")]}},{key:\"item.lastPing\",fn:function(ref){\nvar value = ref.value;\nreturn [_vm._v(\" \"+_vm._s(_vm.delaySinceLastPing(value))+\" \")]}},{key:\"item.healthy\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('ServerStatus',{attrs:{\"healthy\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(!item.healthy)?_c('v-btn',{attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.removeServer(item)}}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1):_vm._e()]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Servers.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Servers.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Servers.vue?vue&type=template&id=3241ef20&\"\nimport script from \"./Servers.vue?vue&type=script&lang=js&\"\nexport * from \"./Servers.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBreadcrumbs,VBtn,VCard,VDataTable,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbItems}}),(_vm.room)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"4\"}},[_c('RoomDetails',{attrs:{\"room\":_vm.room,\"nsp\":_vm.$route.params.nsp}})],1),_c('v-col',{attrs:{\"sm\":\"12\",\"md\":\"8\"}},[_c('RoomSockets',{attrs:{\"room\":_vm.room}})],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.room)?_c('v-card',[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"sockets.title\")))]),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.room.sockets,\"footer-props\":_vm.footerProps},scopedSlots:_vm._u([{key:\"item.transport\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('Transport',{attrs:{\"transport\":value}})]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [(_vm.isSocketLeaveSupported && !_vm.room.isPrivate)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.leave(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.leave\")))])]):_vm._e(),(_vm.isSocketDisconnectSupported)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.disconnect(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-logout\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.disconnect\")))])]):_vm._e(),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.displayDetails(item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-horizontal\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"sockets.displayDetails\")))])])]}}],null,false,1092228050)})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomSockets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomSockets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomSockets.vue?vue&type=template&id=53b1a037&\"\nimport script from \"./RoomSockets.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomSockets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"fill-height\"},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t(\"details\")))]),_c('v-simple-table',{attrs:{\"dense\":\"\"}},[[_c('tbody',[_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"namespace\")))]),_c('td',[_c('code',[_vm._v(_vm._s(_vm.nsp))])]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"id\")))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.room.name)+\" \")]),_c('td')]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"status\")))]),_c('td',[_c('RoomStatus',{attrs:{\"active\":_vm.room.active}})],1),_c('td',{attrs:{\"align\":\"right\"}},[(_vm.isMultiLeaveSupported && !_vm.room.isPrivate)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",attrs:{\"disabled\":_vm.isReadonly,\"small\":\"\"},on:{\"click\":function($event){return _vm.clear()}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-tag-off-outline\")])],1)]}}],null,false,464351539)},[_c('span',[_vm._v(_vm._s(_vm.$t(\"rooms.clear\")))])]):_vm._e()],1)]),_c('tr',[_c('td',{staticClass:\"key-column\"},[_vm._v(_vm._s(_vm.$t(\"type\")))]),_c('td',[_c('RoomType',{attrs:{\"is-private\":_vm.room.isPrivate}})],1),_c('td')])])]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Status',{attrs:{\"value\":_vm.active,\"ok-label\":_vm.$t('rooms.active'),\"ko-label\":_vm.$t('rooms.deleted')}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomStatus.vue?vue&type=template&id=65459954&\"\nimport script from \"./RoomStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoomDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoomDetails.vue?vue&type=template&id=7b3793ea&scoped=true&\"\nimport script from \"./RoomDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./RoomDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b3793ea\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VIcon,VSimpleTable,VTooltip})\n","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Room.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Room.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Room.vue?vue&type=template&id=07f5be08&\"\nimport script from \"./Room.vue?vue&type=script&lang=js&\"\nexport * from \"./Room.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBreadcrumbs } from 'vuetify/lib/components/VBreadcrumbs';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBreadcrumbs,VCol,VContainer,VRow})\n","import Vue from \"vue\";\nimport VueRouter from \"vue-router\";\nimport Dashboard from \"../views/Dashboard\";\nimport Sockets from \"../views/Sockets\";\nimport Socket from \"../views/Socket\";\nimport Rooms from \"../views/Rooms\";\nimport Clients from \"../views/Clients\";\nimport Client from \"../views/Client\";\nimport Servers from \"../views/Servers\";\nimport Room from \"../views/Room\";\n\nVue.use(VueRouter);\n\nconst routes = [\n {\n path: \"/\",\n name: \"dashboard\",\n component: Dashboard,\n meta: {\n topLevel: true,\n index: 0,\n },\n },\n {\n path: \"/sockets/\",\n name: \"sockets\",\n component: Sockets,\n meta: {\n topLevel: true,\n index: 1,\n },\n },\n {\n path: \"/n/:nsp/sockets/:id\",\n name: \"socket\",\n component: Socket,\n meta: {\n topLevel: false,\n },\n },\n {\n path: \"/rooms/\",\n name: \"rooms\",\n component: Rooms,\n meta: {\n topLevel: true,\n index: 2,\n },\n },\n {\n path: \"/n/:nsp/rooms/:name\",\n name: \"room\",\n component: Room,\n meta: {\n topLevel: false,\n },\n },\n {\n path: \"/clients/\",\n name: \"clients\",\n component: Clients,\n meta: {\n topLevel: true,\n index: 3,\n },\n },\n {\n path: \"/clients/:id\",\n name: \"client\",\n component: Client,\n meta: {\n topLevel: false,\n },\n },\n {\n path: \"/servers/\",\n name: \"servers\",\n component: Servers,\n meta: {\n topLevel: true,\n index: 4,\n },\n },\n];\n\nconst router = new VueRouter({\n mode: \"hash\",\n base: process.env.BASE_URL,\n routes,\n});\n\nexport default router;\n","import Vue from \"vue\";\nimport VueI18n from \"vue-i18n\";\n\nVue.use(VueI18n);\n\nfunction loadLocaleMessages() {\n const locales = require.context(\n \"./locales\",\n true,\n /[A-Za-z0-9-_,\\s]+\\.json$/i\n );\n const messages = {};\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n if (matched && matched.length > 1) {\n const locale = matched[1];\n messages[locale] = locales(key);\n }\n });\n return messages;\n}\n\nexport default new VueI18n({\n locale: process.env.VUE_APP_I18N_LOCALE || \"en\",\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || \"en\",\n messages: loadLocaleMessages(),\n});\n","import { isLocalStorageAvailable } from \"../../util\";\n\nexport default {\n namespaced: true,\n state: {\n darkTheme: false,\n readonly: false,\n lang: \"en\",\n supportedFeatures: [],\n },\n mutations: {\n init(state) {\n if (isLocalStorageAvailable) {\n state.darkTheme = localStorage.getItem(\"dark_theme\") === \"true\";\n state.readonly = localStorage.getItem(\"readonly\") === \"true\";\n state.lang = localStorage.getItem(\"lang\") || \"en\";\n }\n },\n selectTheme(state, darkTheme) {\n state.darkTheme = darkTheme;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"dark_theme\", darkTheme);\n }\n },\n selectLang(state, lang) {\n state.lang = lang;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"lang\", lang);\n }\n },\n toggleReadonly(state) {\n state.readonly = !state.readonly;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"readonly\", state.readonly);\n }\n },\n updateConfig(state, config) {\n state.supportedFeatures = config.supportedFeatures;\n },\n },\n};\n","import { isLocalStorageAvailable } from \"../../util\";\n\nexport default {\n namespaced: true,\n state: {\n serverUrl: \"\",\n wsOnly: false,\n path: \"/socket.io\",\n sessionId: \"\",\n connected: false,\n },\n mutations: {\n init(state) {\n if (isLocalStorageAvailable) {\n state.serverUrl = localStorage.getItem(\"server_url\");\n state.wsOnly = localStorage.getItem(\"ws_only\") === \"true\";\n state.sessionId = localStorage.getItem(\"session_id\");\n state.path = localStorage.getItem(\"path\") || \"/socket.io\";\n }\n },\n saveConfig(state, { serverUrl, wsOnly, path }) {\n state.serverUrl = serverUrl;\n state.wsOnly = wsOnly;\n state.path = path;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"server_url\", serverUrl);\n localStorage.setItem(\"ws_only\", wsOnly);\n localStorage.setItem(\"path\", path);\n }\n },\n saveSessionId(state, sessionId) {\n state.sessionId = sessionId;\n if (isLocalStorageAvailable) {\n localStorage.setItem(\"session_id\", sessionId);\n }\n },\n connect(state) {\n state.connected = true;\n },\n disconnect(state) {\n state.connected = false;\n },\n },\n};\n","import { find, merge } from \"lodash-es\";\nimport { pushUniq, remove } from \"../../util\";\n\nconst getOrCreateNamespace = (namespaces, name) => {\n let namespace = find(namespaces, { name });\n if (namespace) {\n return namespace;\n }\n namespace = {\n name,\n sockets: [],\n rooms: [],\n };\n namespaces.push(namespace);\n return namespace;\n};\n\nconst getOrCreateRoom = (namespace, name) => {\n let room = find(namespace.rooms, { name });\n if (room) {\n return room;\n }\n room = {\n name,\n active: true,\n sockets: [],\n };\n namespace.rooms.push(room);\n return room;\n};\n\nconst getOrCreateClient = (clients, id) => {\n let client = find(clients, { id });\n if (client) {\n return client;\n }\n client = {\n id,\n connected: true,\n sockets: [],\n };\n clients.push(client);\n return client;\n};\n\nconst addSocket = (state, socket) => {\n const namespace = getOrCreateNamespace(state.namespaces, socket.nsp);\n socket.connected = true;\n if (!find(namespace.sockets, { id: socket.id })) {\n namespace.sockets.push(socket);\n }\n\n socket.rooms.forEach((name) => {\n const room = getOrCreateRoom(namespace, name);\n room.isPrivate = name === socket.id;\n if (!find(room.sockets, { id: socket.id })) {\n room.sockets.push(socket);\n }\n });\n\n const client = getOrCreateClient(state.clients, socket.clientId);\n if (!find(client.sockets, { id: socket.id })) {\n client.sockets.push(socket);\n }\n};\n\nexport default {\n namespaced: true,\n state: {\n namespaces: [],\n clients: [],\n selectedNamespace: null,\n },\n getters: {\n findSocketById: (state) => (nsp, id) => {\n const namespace = find(state.namespaces, { name: nsp });\n if (namespace) {\n return find(namespace.sockets, { id });\n }\n },\n findClientById: (state) => (id) => {\n return find(state.clients, { id });\n },\n findRoomByName: (state) => (nsp, name) => {\n const namespace = find(state.namespaces, { name: nsp });\n if (namespace) {\n return find(namespace.rooms, { name });\n }\n },\n findRoomsByNamespace: (state) => (nsp) => {\n const namespace = find(state.namespaces, { name: nsp });\n return namespace ? namespace.rooms : [];\n },\n sockets: (state) => {\n return state.selectedNamespace ? state.selectedNamespace.sockets : [];\n },\n rooms: (state) => {\n return state.selectedNamespace ? state.selectedNamespace.rooms : [];\n },\n },\n mutations: {\n selectNamespace(state, namespace) {\n state.selectedNamespace = namespace;\n },\n onAllSockets(state, sockets) {\n state.namespaces.forEach((namespace) => {\n namespace.sockets.splice(0);\n namespace.rooms.splice(0);\n });\n state.clients.splice(0);\n sockets.forEach((socket) => addSocket(state, socket));\n if (!state.selectedNamespace) {\n state.selectedNamespace =\n find(state.namespaces, { name: \"/\" }) || state.namespaces[0];\n }\n },\n onSocketConnected(state, socket) {\n addSocket(state, socket);\n },\n onSocketUpdated(state, socket) {\n const namespace = getOrCreateNamespace(state.namespaces, socket.nsp);\n const existingSocket = find(namespace.sockets, { id: socket.id });\n if (existingSocket) {\n merge(existingSocket, socket);\n }\n },\n onSocketDisconnected(state, { nsp, id }) {\n const namespace = getOrCreateNamespace(state.namespaces, nsp);\n const [socket] = remove(namespace.sockets, { id });\n if (socket) {\n socket.connected = false;\n\n const client = getOrCreateClient(state.clients, socket.clientId);\n remove(client.sockets, { id });\n if (client.sockets.length === 0) {\n client.connected = false;\n remove(state.clients, { id: socket.clientId });\n }\n }\n },\n onRoomJoined(state, { nsp, room, id }) {\n const namespace = getOrCreateNamespace(state.namespaces, nsp);\n const socket = find(namespace.sockets, { id });\n if (socket) {\n pushUniq(socket.rooms, room);\n const _room = getOrCreateRoom(namespace, room);\n _room.sockets.push(socket);\n }\n },\n onRoomLeft(state, { nsp, room, id }) {\n const namespace = getOrCreateNamespace(state.namespaces, nsp);\n const socket = find(namespace.sockets, { id });\n if (socket) {\n remove(socket.rooms, room);\n }\n const _room = getOrCreateRoom(namespace, room);\n remove(_room.sockets, { id });\n if (_room.sockets.length === 0) {\n _room.active = false;\n remove(namespace.rooms, { name: room });\n }\n },\n },\n};\n","import { find, merge } from \"lodash-es\";\nimport { remove } from \"../../util\";\n\nconst HEALTHY_THRESHOLD = 10000;\n\nexport default {\n namespaced: true,\n state: {\n servers: [],\n },\n mutations: {\n onServerStats(state, stats) {\n stats.lastPing = Date.now();\n const server = find(state.servers, { serverId: stats.serverId });\n if (server) {\n merge(server, stats);\n } else {\n stats.healthy = true;\n state.servers.push(stats);\n }\n },\n removeServer(state, serverId) {\n remove(state.servers, { serverId });\n },\n updateState(state) {\n state.servers.forEach((server) => {\n server.healthy = Date.now() - server.lastPing < HEALTHY_THRESHOLD;\n });\n },\n },\n};\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport config from \"./modules/config\";\nimport connection from \"./modules/connection\";\nimport main from \"./modules/main\";\nimport servers from \"./modules/servers\";\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n modules: {\n config,\n connection,\n main,\n servers,\n },\n});\n","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib/framework\";\n\nVue.use(Vuetify);\n\nexport default new Vuetify({});\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport i18n from \"./i18n\";\nimport store from \"./store\";\nimport vuetify from \"./plugins/vuetify\";\n\nVue.config.productionTip = false;\n\nstore.commit(\"config/init\");\nstore.commit(\"connection/init\");\n\ni18n.locale = store.state.config.lang;\n\nsetInterval(() => {\n store.commit(\"servers/updateState\");\n}, 1000);\n\nnew Vue({\n router,\n i18n,\n store,\n vuetify,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketRooms.vue?vue&type=style&index=0&id=d014ee1e&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClientDetails.vue?vue&type=style&index=0&id=8d2424e4&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValueTable.vue?vue&type=style&index=0&id=18284f59&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocketDetails.vue?vue&type=style&index=0&id=1a6e3452&scoped=true&lang=css&\"","if(typeof moment === 'undefined') {var e = new Error(\"Cannot find module 'moment'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = moment;","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServersOverview.vue?vue&type=style&index=0&id=d6482f56&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/logo-light.73342c25.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NamespaceSelector.vue?vue&type=style&index=0&id=2c330798&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/ui/dist/js/chunk-vendors.5dbfac0a.js b/ui/dist/js/chunk-vendors.5dbfac0a.js deleted file mode 100644 index b5f11a2..0000000 --- a/ui/dist/js/chunk-vendors.5dbfac0a.js +++ /dev/null @@ -1,30 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"00ee":function(t,e,n){var i=n("b622"),r=i("toStringTag"),a={};a[r]="z",t.exports="[object z]"===String(a)},"010c":function(t,e,n){"use strict";var i=n("e56b"),r=n("1147");function a(t){return Object(r["a"])(t)&&Object(i["a"])(t)}e["a"]=a},"01d3":function(t,e,n){const i=n("c9eb"),r=n("d941");t.exports=function(t){const e=t.xdomain,n=t.xscheme,a=t.enablesXDR;try{if("undefined"!==typeof XMLHttpRequest&&(!e||i))return new XMLHttpRequest}catch(o){}try{if("undefined"!==typeof XDomainRequest&&!n&&a)return new XDomainRequest}catch(o){}if(!e)try{return new(r[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(o){}}},"0299":function(t,e,n){"use strict";var i,r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),a=64,o={},s=0,c=0;function l(t){var e="";do{e=r[t%a]+e,t=Math.floor(t/a)}while(t>0);return e}function u(t){var e=0;for(c=0;c0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length,i=new Array(n>1?n-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"top center 0",n=arguments.length>2?arguments[2]:void 0;return{name:t,functional:!0,props:{group:{type:Boolean,default:!1},hideOnLeave:{type:Boolean,default:!1},leaveAbsolute:{type:Boolean,default:!1},mode:{type:String,default:n},origin:{type:String,default:e}},render:function(e,n){var a="transition".concat(n.props.group?"-group":""),o={props:{name:t,mode:n.props.mode},on:{beforeEnter:function(t){t.style.transformOrigin=n.props.origin,t.style.webkitTransformOrigin=n.props.origin}}};return n.props.leaveAbsolute&&(o.on.leave=r(o.on.leave,(function(t){return t.style.position="absolute"}))),n.props.hideOnLeave&&(o.on.leave=r(o.on.leave,(function(t){return t.style.display="none"}))),e(a,Object(i["a"])(n.data,o),n.children)}}}function o(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"in-out";return{name:t,functional:!0,props:{mode:{type:String,default:n}},render:function(n,r){return n("transition",Object(i["a"])(r.data,{props:{name:t},on:e}),r.children)}}}var s=n("ade3"),c=n("80d2"),l=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e?"width":"height",i="offset".concat(Object(c["D"])(n));return{beforeEnter:function(t){t._parent=t.parentNode,t._initialStyle=Object(s["a"])({transition:t.style.transition,overflow:t.style.overflow},n,t.style[n])},enter:function(e){var r=e._initialStyle;e.style.setProperty("transition","none","important"),e.style.overflow="hidden";var a="".concat(e[i],"px");e.style[n]="0",e.offsetHeight,e.style.transition=r.transition,t&&e._parent&&e._parent.classList.add(t),requestAnimationFrame((function(){e.style[n]=a}))},afterEnter:a,enterCancelled:a,leave:function(t){t._initialStyle=Object(s["a"])({transition:"",overflow:t.style.overflow},n,t.style[n]),t.style.overflow="hidden",t.style[n]="".concat(t[i],"px"),t.offsetHeight,requestAnimationFrame((function(){return t.style[n]="0"}))},afterLeave:r,leaveCancelled:r};function r(e){t&&e._parent&&e._parent.classList.remove(t),a(e)}function a(t){var e=t._initialStyle[n];t.style.overflow=t._initialStyle.overflow,null!=e&&(t.style[n]=e),delete t._initialStyle}},u=(a("carousel-transition"),a("carousel-reverse-transition"),a("tab-transition"),a("tab-reverse-transition"),a("menu-transition"),a("fab-transition","center center","out-in")),h=(a("dialog-transition"),a("dialog-bottom-transition"),a("dialog-top-transition"),a("fade-transition")),d=(a("scale-transition"),a("scroll-x-transition"),a("scroll-x-reverse-transition"),a("scroll-y-transition"),a("scroll-y-reverse-transition"),a("slide-x-transition")),f=a("slide-x-reverse-transition"),p=a("slide-y-transition"),v=a("slide-y-reverse-transition"),g=o("expand-transition",l()),m=o("expand-x-transition",l("",!0))},"07ac":function(t,e,n){var i=n("23e7"),r=n("6f53").values;i({target:"Object",stat:!0},{values:function(t){return r(t)}})},"0882":function(t,e,n){const i=n("19b7"),r=n("2a85"),a=n("4f2a"),o=n("0299"),{pick:s}=n("11ec"),{WebSocket:c,usingBrowserWebSocket:l,defaultBinaryType:u}=n("5f4e"),h=n("34eb")("engine.io-client:websocket"),d="undefined"!==typeof navigator&&"string"===typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class f extends i{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),e=this.opts.protocols,n=d?{}:s(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=l&&!d?e?new c(t,e):new c(t):new c(t,e,n)}catch(i){return this.emit("error",i)}this.ws.binaryType=this.socket.binaryType||u,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){const e=this;this.writable=!1;let n=t.length,i=0;const a=n;for(;i{this.doWrite(t,()=>{this.writable=!0,this.emit("drain")})})}uri(){let t=this.query||{};const e=this.opts.secure?"https":"http";let n="";!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=o()),this.supportsBinary||t.sid||(t.b64=1),t=r.encode(t),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(n=":"+this.opts.port),t.length&&(t="?"+t);const i=-1!==this.opts.hostname.indexOf(":");return e+"://"+(i?"["+this.opts.hostname+"]":this.opts.hostname)+n+this.opts.path+t}}t.exports=c},"09ee":function(t,e,n){"use strict";var i=n("26ee"),r=i["a"].Uint8Array;e["a"]=r},"0a5e":function(t,e,n){const i=n("0949"),r=n("d941"),a=/\n/g,o=/\\n/g;let s;class c extends i{constructor(t){super(t),this.query=this.query||{},s||(s=r.___eio=r.___eio||[]),this.index=s.length;const e=this;s.push((function(t){e.onData(t)})),this.query.j=this.index}get supportsBinary(){return!1}doClose(){this.script&&(this.script.onerror=()=>{},this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),super.doClose()}doPoll(){const t=this,e=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),e.async=!0,e.src=this.uri(),e.onerror=function(e){t.onError("jsonp poll error",e)};const n=document.getElementsByTagName("script")[0];n?n.parentNode.insertBefore(e,n):(document.head||document.body).appendChild(e),this.script=e;const i="undefined"!==typeof navigator&&/gecko/i.test(navigator.userAgent);i&&setTimeout((function(){const t=document.createElement("iframe");document.body.appendChild(t),document.body.removeChild(t)}),100)}doWrite(t,e){const n=this;let i;if(!this.form){const t=document.createElement("form"),e=document.createElement("textarea"),n=this.iframeId="eio_iframe_"+this.index;t.className="socketio",t.style.position="absolute",t.style.top="-1000px",t.style.left="-1000px",t.target=n,t.method="POST",t.setAttribute("accept-charset","utf-8"),e.name="d",t.appendChild(e),document.body.appendChild(t),this.form=t,this.area=e}function r(){s(),e()}function s(){if(n.iframe)try{n.form.removeChild(n.iframe)}catch(t){n.onError("jsonp polling iframe removal error",t)}try{const t='