pushdeer/self-hosted-push-server/public/js/app.97c623ae.js.map

1 line
242 KiB
Plaintext

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Dashboard/ClientsOverview.vue?5a61","webpack:///./src/assets/logo-dark.svg","webpack:///./src/locales sync [A-Za-z0-9-_,\\s]+\\.json$/","webpack:///./src/App.vue?2966","webpack:///./src/components/AppBar.vue?374b","webpack:///./src/components/ConnectionStatus.vue?ca2d","webpack:///./src/components/Status.vue?e5a5","webpack:///src/components/Status.vue","webpack:///./src/components/Status.vue?5cf2","webpack:///./src/components/Status.vue","webpack:///src/components/ConnectionStatus.vue","webpack:///./src/components/ConnectionStatus.vue?e903","webpack:///./src/components/ConnectionStatus.vue","webpack:///src/components/AppBar.vue","webpack:///./src/components/AppBar.vue?f6e4","webpack:///./src/components/AppBar.vue","webpack:///./src/components/NavigationDrawer.vue?d538","webpack:///./src/components/LangSelector.vue?5de4","webpack:///src/components/LangSelector.vue","webpack:///./src/components/LangSelector.vue?8048","webpack:///./src/components/LangSelector.vue","webpack:///./src/components/ThemeSelector.vue?0aa1","webpack:///src/components/ThemeSelector.vue","webpack:///./src/components/ThemeSelector.vue?902a","webpack:///./src/components/ThemeSelector.vue","webpack:///./src/components/ReadonlyToggle.vue?2958","webpack:///src/components/ReadonlyToggle.vue","webpack:///./src/components/ReadonlyToggle.vue?6422","webpack:///./src/components/ReadonlyToggle.vue","webpack:///src/components/NavigationDrawer.vue","webpack:///./src/components/NavigationDrawer.vue?b9ac","webpack:///./src/components/NavigationDrawer.vue","webpack:///./src/components/ConnectionModal.vue?975b","webpack:///src/components/ConnectionModal.vue","webpack:///./src/components/ConnectionModal.vue?0ecd","webpack:///./src/components/ConnectionModal.vue","webpack:///./src/SocketHolder.js","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/components/Dashboard/Doughnut.vue","webpack:///./src/views/Dashboard.vue?850b","webpack:///./src/components/Dashboard/ClientsOverview.vue?46f7","webpack:///src/components/Dashboard/Doughnut.vue","webpack:///./src/components/Dashboard/Doughnut.vue?27bb","webpack:///./src/components/Transport.vue?5ee0","webpack:///src/components/Transport.vue","webpack:///./src/components/Transport.vue?540f","webpack:///./src/components/Transport.vue","webpack:///./src/util.js","webpack:///src/components/Dashboard/ClientsOverview.vue","webpack:///./src/components/Dashboard/ClientsOverview.vue?c87f","webpack:///./src/components/Dashboard/ClientsOverview.vue?b178","webpack:///./src/components/Dashboard/ServersOverview.vue?cc5e","webpack:///./src/components/ServerStatus.vue?0eba","webpack:///src/components/ServerStatus.vue","webpack:///./src/components/ServerStatus.vue?bf53","webpack:///./src/components/ServerStatus.vue","webpack:///src/components/Dashboard/ServersOverview.vue","webpack:///./src/components/Dashboard/ServersOverview.vue?759e","webpack:///./src/components/Dashboard/ServersOverview.vue?8b43","webpack:///./src/components/Dashboard/NamespacesOverview.vue?ce9b","webpack:///src/components/Dashboard/NamespacesOverview.vue","webpack:///./src/components/Dashboard/NamespacesOverview.vue?4e49","webpack:///./src/components/Dashboard/NamespacesOverview.vue","webpack:///src/views/Dashboard.vue","webpack:///./src/views/Dashboard.vue?3f19","webpack:///./src/views/Dashboard.vue","webpack:///./src/views/Sockets.vue?83d1","webpack:///./src/components/NamespaceSelector.vue?937d","webpack:///src/components/NamespaceSelector.vue","webpack:///./src/components/NamespaceSelector.vue?0a12","webpack:///./src/components/NamespaceSelector.vue?4d4d","webpack:///src/views/Sockets.vue","webpack:///./src/views/Sockets.vue?e257","webpack:///./src/views/Sockets.vue","webpack:///./src/views/Socket.vue?ac6f","webpack:///./src/components/Socket/SocketRooms.vue?ddf1","webpack:///src/components/Socket/SocketRooms.vue","webpack:///./src/components/Socket/SocketRooms.vue?7b0b","webpack:///./src/components/Socket/SocketRooms.vue?4e25","webpack:///./src/components/Socket/SocketDetails.vue?81ce","webpack:///src/components/Socket/SocketDetails.vue","webpack:///./src/components/Socket/SocketDetails.vue?16a4","webpack:///./src/components/Socket/SocketDetails.vue?e4f2","webpack:///./src/components/Socket/InitialRequest.vue?d970","webpack:///./src/components/KeyValueTable.vue?e8bf","webpack:///src/components/KeyValueTable.vue","webpack:///./src/components/KeyValueTable.vue?5b4b","webpack:///./src/components/KeyValueTable.vue?d810","webpack:///src/components/Socket/InitialRequest.vue","webpack:///./src/components/Socket/InitialRequest.vue?5e36","webpack:///./src/components/Socket/InitialRequest.vue","webpack:///src/views/Socket.vue","webpack:///./src/views/Socket.vue?e9a0","webpack:///./src/views/Socket.vue","webpack:///./src/views/Rooms.vue?5900","webpack:///./src/components/Room/RoomType.vue?52a1","webpack:///src/components/Room/RoomType.vue","webpack:///./src/components/Room/RoomType.vue?5c62","webpack:///./src/components/Room/RoomType.vue","webpack:///src/views/Rooms.vue","webpack:///./src/views/Rooms.vue?9785","webpack:///./src/views/Rooms.vue","webpack:///./src/views/Clients.vue?d0f9","webpack:///src/views/Clients.vue","webpack:///./src/views/Clients.vue?e3fb","webpack:///./src/views/Clients.vue","webpack:///./src/views/Client.vue?d64b","webpack:///./src/components/Client/ClientDetails.vue?f5df","webpack:///src/components/Client/ClientDetails.vue","webpack:///./src/components/Client/ClientDetails.vue?13e7","webpack:///./src/components/Client/ClientDetails.vue?0e77","webpack:///./src/components/Client/ClientSockets.vue?80f8","webpack:///src/components/Client/ClientSockets.vue","webpack:///./src/components/Client/ClientSockets.vue?1e59","webpack:///./src/components/Client/ClientSockets.vue","webpack:///src/views/Client.vue","webpack:///./src/views/Client.vue?3cc3","webpack:///./src/views/Client.vue","webpack:///./src/views/Servers.vue?30dd","webpack:///src/views/Servers.vue","webpack:///./src/views/Servers.vue?e749","webpack:///./src/views/Servers.vue","webpack:///./src/views/Room.vue?0459","webpack:///./src/components/Room/RoomSockets.vue?ef86","webpack:///src/components/Room/RoomSockets.vue","webpack:///./src/components/Room/RoomSockets.vue?32a9","webpack:///./src/components/Room/RoomSockets.vue","webpack:///./src/components/Room/RoomDetails.vue?2811","webpack:///./src/components/Room/RoomStatus.vue?678d","webpack:///src/components/Room/RoomStatus.vue","webpack:///./src/components/Room/RoomStatus.vue?8e7b","webpack:///./src/components/Room/RoomStatus.vue","webpack:///src/components/Room/RoomDetails.vue","webpack:///./src/components/Room/RoomDetails.vue?d45c","webpack:///./src/components/Room/RoomDetails.vue","webpack:///src/views/Room.vue","webpack:///./src/views/Room.vue?4f58","webpack:///./src/views/Room.vue","webpack:///./src/router/index.js","webpack:///./src/i18n.js","webpack:///./src/store/modules/config.js","webpack:///./src/store/modules/connection.js","webpack:///./src/store/modules/main.js","webpack:///./src/store/modules/servers.js","webpack:///./src/store/index.js","webpack:///./src/plugins/vuetify.js","webpack:///./src/main.js","webpack:///./src/components/Socket/SocketRooms.vue?3ffa","webpack:///./src/components/Client/ClientDetails.vue?7194","webpack:///./src/components/KeyValueTable.vue?5de3","webpack:///./src/components/Socket/SocketDetails.vue?1672","webpack:///external \"moment\"","webpack:///./src/components/Dashboard/ServersOverview.vue?20ff","webpack:///./src/assets/logo-light.svg","webpack:///./src/components/NamespaceSelector.vue?cd5a"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","_vm","this","_h","$createElement","_c","_self","on","$event","showConnectionModal","class","backgroundColor","attrs","transitionName","tag","serverUrl","wsOnly","path","isConnecting","connectionError","onSubmit","staticRenderFns","logoSrc","staticClass","_v","linkToReleaseNotes","_s","version","$t","_e","connected","onUpdate","color","label","props","Boolean","koLabel","String","okLabel","computed","colors","component","VChip","components","methods","$emit","VAppBar","VBtn","VImg","VSpacer","VToolbarTitle","VToolbar","scopedSlots","_u","fn","proxy","_l","item","title","to","exact","icon","lang","languages","onSelectLang","$i18n","locale","selectLang","VSelect","darkTheme","onSelectTheme","$vuetify","theme","dark","selectTheme","VSwitch","readonly","disabled","toggleReadonly","items","VDivider","VIcon","VList","VListItem","VListItemContent","VListItemIcon","VListItemTitle","VNavigationDrawer","isOpen","preventDefault","model","callback","$$v","expression","username","password","isValid","errorMessage","initialServerUrl","initialWsOnly","initialPath","error","VCard","VCardText","VCardTitle","VDialog","VTextField","socket","_socket","ConnectionModal","NavigationDrawer","AppBar","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","watch","$route","meta","topLevel","from","tryConnect","SocketHolder","disconnect","off","forceNew","reconnection","withCredentials","transports","auth","once","io","registerEventListeners","nsp","reason","created","$store","state","config","VApp","VContainer","VMain","breadcrumbItems","transport","transportRepartition","percentage","clients","extends","mixins","reactiveProp","mounted","renderChart","chartData","legend","testLocalStorage","test","localStorage","setItem","removeItem","isLocalStorageAvailable","formatDuration","duration","Math","ceil","max","days","floor","hours","minutes","seconds","output","join","remove","array","predicate","index","findIndex","indexOf","pushUniq","elem","includes","total","toFixed","Transport","Doughnut","labels","datasets","VRow","VSimpleTable","healthyServers","totalServers","healthy","ServerStatus","namespace","sockets","VBreadcrumbs","VCol","headers","footerProps","ref","_g","_b","isReadonly","displayDetails","selectedNamespace","namespaces","selectNamespace","emit","$router","params","VDataTable","VTooltip","client","roomsAsObjects","leave","newRoom","availableRooms","rooms","room","VCombobox","navigateToClient","isSocketDisconnectSupported","disconnectClient","handshake","address","disconnectSocket","creationDate","Date","issued","toISOString","query","sort","findSocketById","findClientById","clientId","onPrivateRoomsUpdate","showPrivateRooms","filteredRooms","isMultiLeaveSupported","isPrivate","clear","replace","Array","servers","delaySinceLastPing","removeServer","now","interval","setInterval","beforeDestroy","clearInterval","commit","serverId","isSocketLeaveSupported","active","findRoomByName","Vue","use","VueRouter","routes","Dashboard","Sockets","Socket","Rooms","Room","Clients","Client","Servers","router","base","process","loadLocaleMessages","locales","require","messages","forEach","matched","match","VueI18n","fallbackLocale","namespaced","supportedFeatures","mutations","init","getItem","updateConfig","sessionId","saveConfig","saveSessionId","connect","getOrCreateNamespace","find","getOrCreateRoom","getOrCreateClient","addSocket","getters","findRoomsByNamespace","onAllSockets","onSocketConnected","onSocketUpdated","existingSocket","merge","onSocketDisconnected","onRoomJoined","_room","onRoomLeft","HEALTHY_THRESHOLD","onServerStats","stats","lastPing","server","updateState","Vuex","Store","connection","main","Vuetify","productionTip","store","i18n","vuetify","render","h","App","$mount","moment"],"mappings":"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","file":"js/app.97c623ae.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\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!./ClientsOverview.vue?vue&type=style&index=0&id=58987bf8&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/logo-dark.3727fec5.svg\";","var map = {\n\t\"./bn.json\": \"8782\",\n\t\"./en.json\": \"edd4\",\n\t\"./fr.json\": \"f693\",\n\t\"./ko.json\": \"dd11\",\n\t\"./pt-BR.json\": \"03bd\",\n\t\"./zh-CN.json\": \"423e\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"49f8\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('AppBar',{on:{\"update\":function($event){_vm.showConnectionModal = true}}}),_c('NavigationDrawer'),_c('v-main',{class:_vm.backgroundColor},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c(_vm.transitionName,{tag:\"component\",attrs:{\"hide-on-leave\":\"\"}},[_c('router-view')],1)],1)],1),_c('ConnectionModal',{attrs:{\"is-open\":_vm.showConnectionModal,\"initial-server-url\":_vm.serverUrl,\"initial-ws-only\":_vm.wsOnly,\"initial-path\":_vm.path,\"is-connecting\":_vm.isConnecting,\"error\":_vm.connectionError},on:{\"submit\":_vm.onSubmit}})],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-app-bar',{attrs:{\"app\":\"\",\"clipped-left\":\"\"}},[_c('v-img',{attrs:{\"src\":_vm.logoSrc,\"alt\":\"logo\",\"max-height\":\"40\",\"max-width\":\"40\"}}),_c('v-toolbar-title',{staticClass:\"ml-3\"},[_vm._v(\"Socket.IO Admin UI\")]),_c('v-btn',{staticClass:\"pa-0 ml-2 elevation-0\",attrs:{\"small\":\"\",\"href\":_vm.linkToReleaseNotes}},[_vm._v(_vm._s(_vm.version))]),_c('v-spacer'),_c('div',{staticClass:\"d-flex\"},[_c('div',[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t(\"connection.serverUrl\"))+_vm._s(_vm.$t(\"separator\"))),(_vm.serverUrl)?_c('code',[_vm._v(_vm._s(_vm.serverUrl))]):_vm._e()]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$t(\"status\"))+_vm._s(_vm.$t(\"separator\"))),_c('ConnectionStatus',{attrs:{\"connected\":_vm.connected}})],1)]),_c('v-btn',{staticClass:\"ml-3 align-self-center\",on:{\"click\":_vm.onUpdate}},[_vm._v(_vm._s(_vm.$t(\"update\")))])],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.connected,\"ok-label\":_vm.$t('connected'),\"ko-label\":_vm.$t('disconnected')}})}\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-chip',{staticClass:\"text-uppercase\",attrs:{\"small\":\"\",\"color\":_vm.color,\"outlined\":\"\"}},[_vm._v(_vm._s(_vm.label))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <v-chip small :color=\"color\" outlined class=\"text-uppercase\">{{\n label\n }}</v-chip>\n</template>\n\n<script>\nimport colors from \"vuetify/lib/util/colors\";\n\nexport default {\n name: \"Status\",\n\n props: {\n value: Boolean,\n koLabel: String,\n okLabel: String,\n },\n\n computed: {\n label() {\n return this.value ? this.okLabel : this.koLabel;\n },\n color() {\n return this.value ? colors.green.base : colors.red.base;\n },\n },\n};\n</script>\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","<template>\n <Status\n :value=\"connected\"\n :ok-label=\"$t('connected')\"\n :ko-label=\"$t('disconnected')\"\n />\n</template>\n\n<script>\nimport Status from \"./Status\";\n\nexport default {\n name: \"ConnectionStatus\",\n\n components: { Status },\n\n props: {\n connected: Boolean,\n },\n};\n</script>\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","<template>\n <v-app-bar app clipped-left>\n <v-img :src=\"logoSrc\" alt=\"logo\" max-height=\"40\" max-width=\"40\" />\n <v-toolbar-title class=\"ml-3\">Socket.IO Admin UI</v-toolbar-title>\n <v-btn small class=\"pa-0 ml-2 elevation-0\" :href=\"linkToReleaseNotes\">{{\n version\n }}</v-btn>\n\n <v-spacer />\n\n <div class=\"d-flex\">\n <div>\n <div>\n {{ $t(\"connection.serverUrl\") }}{{ $t(\"separator\")\n }}<code v-if=\"serverUrl\">{{ serverUrl }}</code>\n </div>\n <div>\n {{ $t(\"status\") }}{{ $t(\"separator\")\n }}<ConnectionStatus :connected=\"connected\" />\n </div>\n </div>\n\n <v-btn @click=\"onUpdate\" class=\"ml-3 align-self-center\">{{\n $t(\"update\")\n }}</v-btn>\n </div>\n </v-app-bar>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport ConnectionStatus from \"./ConnectionStatus\";\n\nconst version = process.env.VERSION;\n\nexport default {\n name: \"AppBar\",\n\n components: { ConnectionStatus },\n\n data() {\n return {\n version,\n };\n },\n\n computed: {\n ...mapState({\n logoSrc: (state) =>\n state.config.darkTheme\n ? require(\"../assets/logo-dark.svg\")\n : require(\"../assets/logo-light.svg\"),\n serverUrl: (state) => state.connection.serverUrl,\n connected: (state) => state.connection.connected,\n }),\n linkToReleaseNotes() {\n return (\n \"https://github.com/socketio/socket.io-admin-ui/releases/tag/\" + version\n );\n },\n },\n\n methods: {\n onUpdate() {\n this.$emit(\"update\");\n },\n },\n};\n</script>\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 }","<template>\n <v-select\n dense\n :value=\"lang\"\n :items=\"languages\"\n @change=\"onSelectLang\"\n :label=\"$t('config.language')\"\n />\n</template>\n\n<script>\nimport { mapMutations, mapState } from \"vuex\";\n\nexport default {\n name: \"LangSelector\",\n\n data() {\n return {\n languages: [\n {\n text: \"বাংলা\",\n value: \"bn\",\n },\n {\n text: \"English\",\n value: \"en\",\n },\n {\n text: \"Français\",\n value: \"fr\",\n },\n {\n text: \"Português (Brazil)\",\n value: \"pt-BR\",\n },\n {\n text: \"한국어\",\n value: \"ko\",\n },\n {\n text: \"简体中文\",\n value: \"zh-CN\",\n },\n ],\n };\n },\n\n computed: {\n ...mapState({\n lang: (state) => state.config.lang,\n }),\n },\n\n methods: {\n ...mapMutations(\"config\", [\"selectLang\"]),\n onSelectLang(lang) {\n this.$i18n.locale = lang;\n this.selectLang(lang);\n },\n },\n};\n</script>\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 }","<template>\n <v-switch\n :input-value=\"darkTheme\"\n @change=\"onSelectTheme\"\n :label=\"$t('config.dark-theme')\"\n inset\n dense\n />\n</template>\n\n<script>\nimport { mapMutations, mapState } from \"vuex\";\n\nexport default {\n name: \"ThemeSelector\",\n\n computed: {\n ...mapState({\n darkTheme: (state) => state.config.darkTheme,\n }),\n },\n\n methods: {\n ...mapMutations(\"config\", [\"selectTheme\"]),\n onSelectTheme(darkTheme) {\n this.$vuetify.theme.dark = darkTheme;\n this.selectTheme(darkTheme);\n },\n },\n};\n</script>\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 }","<template>\n <v-switch\n :input-value=\"readonly\"\n @change=\"toggleReadonly\"\n :label=\"$t('config.readonly')\"\n :disabled=\"disabled\"\n inset\n dense\n />\n</template>\n\n<script>\nimport { mapMutations, mapState } from \"vuex\";\n\nexport default {\n name: \"ReadonlyToggle\",\n\n computed: {\n ...mapState({\n readonly: (state) => state.config.readonly,\n disabled: (state) => state.config.supportedFeatures.length === 0,\n }),\n },\n\n methods: {\n ...mapMutations(\"config\", [\"toggleReadonly\"]),\n },\n};\n</script>\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","<template>\n <v-navigation-drawer app clipped permanent class=\"elevation-3\">\n <v-list dense nav>\n <v-list-item\n v-for=\"item in items\"\n :key=\"item.title\"\n :to=\"item.to\"\n :exact=\"item.exact\"\n >\n <v-list-item-icon>\n <v-icon>{{ item.icon }}</v-icon>\n </v-list-item-icon>\n\n <v-list-item-content>\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item-content>\n </v-list-item>\n </v-list>\n\n <template v-slot:append>\n <v-divider />\n\n <div class=\"pa-3 pt-10\">\n <LangSelector />\n <ThemeSelector />\n <ReadonlyToggle />\n </div>\n </template>\n </v-navigation-drawer>\n</template>\n\n<script>\nimport LangSelector from \"./LangSelector\";\nimport ThemeSelector from \"./ThemeSelector\";\nimport ReadonlyToggle from \"./ReadonlyToggle\";\nexport default {\n name: \"NavigationDrawer\",\n\n components: { ReadonlyToggle, ThemeSelector, LangSelector },\n\n computed: {\n items() {\n return [\n {\n title: this.$t(\"dashboard.title\"),\n icon: \"mdi-home-outline\",\n to: { name: \"dashboard\" },\n exact: true,\n },\n {\n title: this.$t(\"sockets.title\"),\n icon: \"mdi-ray-start-arrow\",\n to: { name: \"sockets\" },\n },\n {\n title: this.$t(\"rooms.title\"),\n icon: \"mdi-tag-outline\",\n to: { name: \"rooms\" },\n },\n {\n title: this.$t(\"clients.title\"),\n icon: \"mdi-account-circle-outline\",\n to: { name: \"clients\" },\n },\n {\n title: this.$t(\"servers.title\"),\n icon: \"mdi-server\",\n to: { name: \"servers\" },\n },\n ];\n },\n },\n};\n</script>\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 }","<template>\n <v-dialog\n :value=\"isOpen\"\n transition=\"dialog-bottom-transition\"\n max-width=\"300\"\n persistent\n >\n <v-card>\n <v-card-title>{{ $t(\"connection.title\") }}</v-card-title>\n <v-card-text>\n <form @submit.prevent=\"onSubmit\">\n <v-text-field\n v-model=\"serverUrl\"\n :label=\"$t('connection.serverUrl')\"\n placeholder=\"https://example.com/admin\"\n required\n ></v-text-field>\n <v-text-field\n v-model=\"username\"\n :label=\"$t('connection.username')\"\n ></v-text-field>\n <v-text-field\n v-model=\"password\"\n :label=\"$t('connection.password')\"\n type=\"password\"\n ></v-text-field>\n\n <v-switch\n v-model=\"wsOnly\"\n :label=\"$t('connection.websocket-only')\"\n inset\n dense\n />\n\n <v-text-field\n v-model=\"path\"\n :label=\"$t('connection.path')\"\n ></v-text-field>\n\n <v-btn\n :loading=\"isConnecting\"\n :disabled=\"isConnecting || !isValid\"\n type=\"submit\"\n class=\"primary\"\n >{{ $t(\"connection.connect\") }}</v-btn\n >\n <div v-if=\"error\" class=\"red--text mt-3\">\n {{ errorMessage }}\n </div>\n </form>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nexport default {\n name: \"ConnectionModal\",\n\n props: {\n isOpen: Boolean,\n isConnecting: Boolean,\n initialServerUrl: String,\n initialWsOnly: Boolean,\n initialPath: String,\n error: String,\n },\n\n data() {\n return {\n serverUrl: this.initialServerUrl,\n wsOnly: this.initialWsOnly,\n path: this.initialPath,\n username: \"\",\n password: \"\",\n };\n },\n\n computed: {\n isValid() {\n return this.serverUrl && this.serverUrl.length;\n },\n errorMessage() {\n return this.error === \"invalid credentials\"\n ? this.$t(\"connection.invalid-credentials\")\n : this.$t(\"connection.error\") + this.$t(\"separator\") + this.error;\n },\n },\n\n methods: {\n onSubmit() {\n this.$emit(\"submit\", {\n serverUrl: this.serverUrl,\n wsOnly: this.wsOnly,\n path: this.path,\n username: this.username,\n password: this.password,\n });\n },\n },\n};\n</script>\n\n<style scoped></style>\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","<template>\n <v-app>\n <AppBar @update=\"showConnectionModal = true\" />\n\n <NavigationDrawer />\n\n <v-main :class=\"backgroundColor\">\n <v-container fluid>\n <component :is=\"transitionName\" hide-on-leave>\n <router-view />\n </component>\n </v-container>\n </v-main>\n\n <ConnectionModal\n :is-open=\"showConnectionModal\"\n :initial-server-url=\"serverUrl\"\n :initial-ws-only=\"wsOnly\"\n :initial-path=\"path\"\n :is-connecting=\"isConnecting\"\n :error=\"connectionError\"\n @submit=\"onSubmit\"\n />\n </v-app>\n</template>\n\n<script>\nimport AppBar from \"./components/AppBar\";\nimport NavigationDrawer from \"./components/NavigationDrawer\";\nimport { io } from \"socket.io-client\";\nimport ConnectionModal from \"./components/ConnectionModal\";\nimport SocketHolder from \"./SocketHolder\";\nimport { mapState } from \"vuex\";\nimport {\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n} from \"vuetify/lib\";\n\nexport default {\n name: \"App\",\n\n components: {\n ConnectionModal,\n NavigationDrawer,\n AppBar,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n },\n\n data: () => ({\n showConnectionModal: false,\n isConnecting: false,\n connectionError: \"\",\n transitionName: \"v-slide-x-reverse-transition\",\n }),\n\n computed: {\n ...mapState({\n serverUrl: (state) => state.connection.serverUrl,\n wsOnly: (state) => state.connection.wsOnly,\n path: (state) => state.connection.path,\n backgroundColor: (state) =>\n state.config.darkTheme ? \"\" : \"grey lighten-5\",\n }),\n },\n\n watch: {\n $route(to, from) {\n if (to.meta.topLevel && from.meta.topLevel) {\n this.transitionName =\n to.meta.index > from.meta.index\n ? \"v-slide-y-reverse-transition\"\n : \"v-slide-y-transition\";\n } else {\n this.transitionName = to.meta.topLevel\n ? \"v-slide-x-transition\"\n : \"v-slide-x-reverse-transition\";\n }\n },\n },\n\n methods: {\n tryConnect(serverUrl, auth, wsOnly, path) {\n this.isConnecting = true;\n if (SocketHolder.socket) {\n SocketHolder.socket.disconnect();\n SocketHolder.socket.off(\"connect\");\n SocketHolder.socket.off(\"connect_error\");\n SocketHolder.socket.off(\"disconnect\");\n }\n const socket = io(serverUrl, {\n forceNew: true,\n reconnection: false,\n withCredentials: true, // needed for cookie-based sticky-sessions\n transports: wsOnly ? [\"websocket\"] : [\"polling\", \"websocket\"],\n path,\n auth,\n });\n socket.once(\"connect\", () => {\n this.showConnectionModal = false;\n this.connectionError = \"\";\n this.isConnecting = false;\n\n socket.io.reconnection(true);\n this.$store.commit(\"connection/saveConfig\", {\n serverUrl,\n wsOnly,\n path,\n });\n SocketHolder.socket = socket;\n this.registerEventListeners(socket);\n });\n socket.on(\"connect\", () => {\n this.$store.commit(\"connection/connect\");\n });\n socket.on(\"connect_error\", (err) => {\n if (this.isConnecting || err.message === \"invalid credentials\") {\n this.showConnectionModal = true;\n this.connectionError = err.message;\n this.isConnecting = false;\n }\n });\n socket.on(\"disconnect\", () => {\n this.$store.commit(\"connection/disconnect\");\n });\n },\n\n registerEventListeners(socket) {\n socket.on(\"session\", (sessionId) => {\n this.$store.commit(\"connection/saveSessionId\", sessionId);\n });\n socket.on(\"config\", (config) => {\n this.$store.commit(\"config/updateConfig\", config);\n });\n socket.on(\"server_stats\", (serverStats) => {\n this.$store.commit(\"servers/onServerStats\", serverStats);\n });\n socket.on(\"all_sockets\", (sockets) => {\n this.$store.commit(\"main/onAllSockets\", sockets);\n });\n socket.on(\"socket_connected\", (socket) => {\n this.$store.commit(\"main/onSocketConnected\", socket);\n });\n socket.on(\"socket_updated\", (socket) => {\n this.$store.commit(\"main/onSocketUpdated\", socket);\n });\n socket.on(\"socket_disconnected\", (nsp, id, reason) => {\n this.$store.commit(\"main/onSocketDisconnected\", {\n nsp,\n id,\n reason,\n });\n });\n socket.on(\"room_joined\", (nsp, room, id) => {\n this.$store.commit(\"main/onRoomJoined\", { nsp, room, id });\n });\n socket.on(\"room_left\", (nsp, room, id) => {\n this.$store.commit(\"main/onRoomLeft\", { nsp, room, id });\n });\n },\n\n onSubmit(form) {\n this.tryConnect(\n form.serverUrl,\n {\n username: form.username,\n password: form.password,\n },\n form.wsOnly,\n form.path\n );\n },\n },\n\n created() {\n this.$vuetify.theme.dark = this.$store.state.config.darkTheme;\n\n if (this.serverUrl) {\n const sessionId = this.$store.state.connection.sessionId;\n this.tryConnect(\n this.serverUrl,\n {\n sessionId,\n },\n this.wsOnly,\n this.path\n );\n } else {\n this.showConnectionModal = true;\n }\n },\n};\n</script>\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 }","<script>\nimport { Doughnut, mixins } from \"vue-chartjs\";\nconst { reactiveProp } = mixins;\n\nexport default {\n extends: Doughnut,\n mixins: [reactiveProp],\n props: [\"options\"],\n mounted() {\n this.renderChart(this.chartData, {\n legend: false,\n });\n },\n};\n</script>\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 }","<template>\n <v-chip small :color=\"color\" outlined>{{ label }}</v-chip>\n</template>\n\n<script>\nimport colors from \"vuetify/lib/util/colors\";\n\nexport default {\n name: \"Transport\",\n\n props: {\n transport: String,\n },\n\n computed: {\n label() {\n switch (this.transport) {\n case \"polling\":\n return \"HTTP long-polling\";\n case \"websocket\":\n return \"WebSocket\";\n default:\n return this.transport;\n }\n },\n color() {\n switch (this.transport) {\n case \"polling\":\n return colors.orange.base;\n case \"websocket\":\n return colors.green.base;\n default:\n return colors.grey.base;\n }\n },\n },\n};\n</script>\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","<template>\n <v-card>\n <v-card-title class=\"text-center\">\n {{ $t(\"clients.title\") }}\n <v-spacer />\n <v-btn :to=\"{ name: 'clients' }\" small>\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </v-card-title>\n\n <v-card-text>\n <v-row>\n <Doughnut :chart-data=\"data\" class=\"chart\" />\n\n <v-simple-table class=\"grow align-self-center\">\n <template v-slot:default>\n <tbody>\n <tr>\n <th>{{ $t(\"sockets.transport\") }}</th>\n <th>#</th>\n </tr>\n <tr v-for=\"transport in transports\" :key=\"transport\">\n <td><Transport :transport=\"transport\" /></td>\n <td>\n <div>\n <h2>{{ transportRepartition[transport] || 0 }}</h2>\n </div>\n <div>\n {{\n percentage(\n transportRepartition[transport] || 0,\n clients.length\n )\n }}\n %\n </div>\n </td>\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n </v-row>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport Doughnut from \"./Doughnut\";\nimport { mapState } from \"vuex\";\nimport colors from \"vuetify/lib/util/colors\";\nimport Transport from \"../Transport\";\nimport { percentage } from \"../../util\";\n\nexport default {\n name: \"ClientsOverview\",\n\n components: {\n Transport,\n Doughnut,\n },\n\n data() {\n return {\n transports: [\"websocket\", \"polling\"],\n };\n },\n\n computed: {\n ...mapState({\n clients: (state) => state.main.clients,\n darkTheme: (state) => state.config.darkTheme,\n }),\n transportRepartition() {\n return this.clients\n .map((client) => {\n return client.sockets[0];\n })\n .filter((socket) => !!socket)\n .reduce((acc, socket) => {\n acc[socket.transport] = acc[socket.transport] || 0;\n acc[socket.transport]++;\n return acc;\n }, {});\n },\n data() {\n return {\n labels: [\"WebSocket\", \"HTTP long-polling\"],\n datasets: [\n {\n backgroundColor: [colors.green.base, colors.orange.base],\n borderColor: this.darkTheme ? \"black\" : \"white\",\n data: [\n this.transportRepartition[\"websocket\"],\n this.transportRepartition[\"polling\"],\n ],\n },\n ],\n };\n },\n },\n\n methods: {\n percentage,\n },\n};\n</script>\n\n<style scoped>\n.chart {\n max-width: 160px;\n margin: 20px;\n}\n</style>\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 }","<template>\n <Status\n :value=\"healthy\"\n :ok-label=\"$t('servers.healthy')\"\n :ko-label=\"$t('servers.unhealthy')\"\n />\n</template>\n\n<script>\nimport Status from \"./Status\";\n\nexport default {\n name: \"ServerStatus\",\n\n components: { Status },\n\n props: {\n healthy: Boolean,\n },\n};\n</script>\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","<template>\n <v-card>\n <v-card-title class=\"text-center\">\n {{ $t(\"servers.title\") }}\n <v-spacer />\n <v-btn :to=\"{ name: 'servers' }\" small>\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </v-card-title>\n\n <v-card-text>\n <v-row>\n <Doughnut :chart-data=\"data\" class=\"chart\" />\n\n <v-simple-table class=\"grow align-self-center\">\n <template v-slot:default>\n <tbody>\n <tr>\n <th>{{ $t(\"status\") }}</th>\n <th>#</th>\n </tr>\n <tr>\n <td><ServerStatus healthy /></td>\n <td>\n <div>\n <h2>{{ healthyServers }}</h2>\n </div>\n <div>{{ percentage(healthyServers, totalServers) }} %</div>\n </td>\n </tr>\n <tr>\n <td><ServerStatus /></td>\n <td>\n <div>\n <h2>{{ totalServers - healthyServers }}</h2>\n </div>\n <div>\n {{\n percentage(totalServers - healthyServers, totalServers)\n }}\n %\n </div>\n </td>\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n </v-row>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport Doughnut from \"./Doughnut\";\nimport { mapState } from \"vuex\";\nimport colors from \"vuetify/lib/util/colors\";\nimport { percentage } from \"../../util\";\nimport ServerStatus from \"../ServerStatus\";\n\nexport default {\n name: \"ServersOverview\",\n\n components: {\n ServerStatus,\n Doughnut,\n },\n\n computed: {\n ...mapState({\n healthyServers: (state) =>\n state.servers.servers.filter((server) => server.healthy).length,\n totalServers: (state) => state.servers.servers.length,\n darkTheme: (state) => state.config.darkTheme,\n }),\n data() {\n return {\n labels: [this.$t(\"servers.healthy\"), this.$t(\"servers.unhealthy\")],\n datasets: [\n {\n backgroundColor: [colors.green.base, colors.red.base],\n borderColor: this.darkTheme ? \"black\" : \"white\",\n data: [\n this.healthyServers,\n this.totalServers - this.healthyServers,\n ],\n },\n ],\n };\n },\n },\n\n methods: {\n percentage,\n },\n};\n</script>\n\n<style scoped>\n.chart {\n max-width: 160px;\n margin: 20px;\n}\n</style>\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 }","<template>\n <v-card class=\"fill-height\">\n <v-card-title class=\"text-center\">\n {{ $t(\"namespaces\") }}\n <v-spacer />\n <v-btn :to=\"{ name: 'sockets' }\" small>\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </v-card-title>\n\n <v-simple-table>\n <template v-slot:default>\n <thead>\n <tr>\n <th>{{ $t(\"name\") }}</th>\n <th>{{ $t(\"rooms.sockets-count\") }}</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"namespace of namespaces\" :key=\"namespace.name\">\n <td class=\"key-column\">\n <code>{{ namespace.name }}</code>\n </td>\n <td>{{ namespace.sockets.length }}</td>\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n </v-card>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport { sortBy } from \"lodash-es\";\n\nexport default {\n name: \"NamespacesOverview\",\n\n computed: {\n ...mapState({\n namespaces: (state) => sortBy(state.main.namespaces, \"name\"),\n }),\n },\n};\n</script>\n\n<style scoped></style>\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","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-container fluid>\n <v-row>\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <ClientsOverview />\n </v-col>\n\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <ServersOverview />\n </v-col>\n\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <NamespacesOverview />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nimport ClientsOverview from \"../components/Dashboard/ClientsOverview\";\nimport ServersOverview from \"../components/Dashboard/ServersOverview\";\nimport NamespacesOverview from \"../components/Dashboard/NamespacesOverview\";\n\nexport default {\n name: \"Dashboard\",\n\n components: { NamespacesOverview, ServersOverview, ClientsOverview },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"dashboard.title\"),\n disabled: true,\n },\n ];\n },\n },\n};\n</script>\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 }","<template>\n <v-select\n :value=\"selectedNamespace\"\n :items=\"namespaces\"\n @change=\"selectNamespace\"\n item-text=\"name\"\n item-value=\"name\"\n :label=\"$t('select-namespace')\"\n persistent-hint\n return-object\n class=\"selector\"\n />\n</template>\n\n<script>\nimport { mapMutations, mapState } from \"vuex\";\nimport { sortBy } from \"lodash-es\";\n\nexport default {\n name: \"NamespaceSelector\",\n computed: {\n ...mapState({\n selectedNamespace: (state) => state.main.selectedNamespace,\n namespaces: (state) => sortBy(state.main.namespaces, \"name\"),\n }),\n },\n methods: {\n ...mapMutations(\"main\", [\"selectNamespace\"]),\n },\n};\n</script>\n\n<style scoped>\n.selector {\n max-width: 200px;\n}\n</style>\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","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-card>\n <v-card-text>\n <NamespaceSelector />\n </v-card-text>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"sockets\"\n :footer-props=\"footerProps\"\n >\n <template v-slot:item.transport=\"{ value }\">\n <Transport :transport=\"value\" />\n </template>\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip bottom v-if=\"isSocketDisconnectSupported\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnect(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.disconnect\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"displayDetails(item)\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.displayDetails\") }}</span>\n </v-tooltip>\n </template>\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\nimport NamespaceSelector from \"../components/NamespaceSelector\";\nimport SocketHolder from \"../SocketHolder\";\nimport Transport from \"../components/Transport\";\n\nexport default {\n name: \"Sockets\",\n components: { Transport, NamespaceSelector },\n data() {\n return {\n footerProps: {\n \"items-per-page-options\": [20, 100, -1],\n },\n };\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"sockets.title\"),\n disabled: true,\n },\n ];\n },\n headers() {\n return [\n {\n text: \"#\",\n value: \"id\",\n align: \"start\",\n },\n {\n text: this.$t(\"sockets.address\"),\n value: \"handshake.address\",\n },\n {\n text: this.$t(\"sockets.transport\"),\n value: \"transport\",\n },\n {\n value: \"actions\",\n align: \"end\",\n sortable: false,\n },\n ];\n },\n ...mapGetters(\"main\", [\"sockets\"]),\n ...mapState({\n selectedNamespace: (state) => state.main.selectedNamespace,\n isReadonly: (state) => state.config.readonly,\n isSocketDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"DISCONNECT\"),\n }),\n },\n\n methods: {\n disconnect(socket) {\n SocketHolder.socket.emit(\"_disconnect\", socket.nsp, false, socket.id);\n },\n displayDetails(socket) {\n this.$router.push({\n name: \"socket\",\n params: { nsp: this.selectedNamespace.name, id: socket.id },\n });\n },\n },\n};\n</script>\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 }","<template>\n <v-card class=\"fill-height\">\n <v-card-title>{{ $t(\"rooms.title\") }}</v-card-title>\n <v-data-table :headers=\"headers\" :items=\"roomsAsObjects\" dense>\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip bottom v-if=\"isSocketLeaveSupported\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"leave(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-tag-off-outline</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.leave\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"displayDetails(item)\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"rooms.displayDetails\") }}</span>\n </v-tooltip>\n </template>\n </v-data-table>\n\n <v-card-text>\n <form @submit.prevent=\"onSubmit\">\n <v-combobox\n :search-input.sync=\"newRoom\"\n :label=\"$t('sockets.join-a-room')\"\n :items=\"availableRooms\"\n item-value=\"name\"\n item-text=\"name\"\n class=\"select-room d-inline-block mr-3\"\n :disabled=\"isReadonly\"\n :return-object=\"false\"\n />\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n type=\"submit\"\n small\n :disabled=\"isReadonly\"\n >\n <v-icon>mdi-tag-plus-outline</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.join\") }}</span>\n </v-tooltip>\n </form>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\nimport SocketHolder from \"../../SocketHolder\";\nimport { differenceBy } from \"lodash-es\";\n\nexport default {\n name: \"SocketRooms\",\n\n props: {\n socket: Object,\n },\n\n data() {\n return {\n newRoom: \"\",\n };\n },\n\n computed: {\n headers() {\n return [\n {\n text: this.$t(\"id\"),\n value: \"name\",\n align: \"start\",\n },\n {\n value: \"actions\",\n align: \"end\",\n sortable: false,\n },\n ];\n },\n roomsAsObjects() {\n return this.socket.rooms\n .slice(0)\n .sort()\n .map((room) => ({\n name: room,\n }));\n },\n availableRooms() {\n return differenceBy(\n this.findRoomsByNamespace(this.socket.nsp),\n this.roomsAsObjects,\n \"name\"\n );\n },\n ...mapState({\n selectedNamespace: (state) => state.main.selectedNamespace,\n isReadonly: (state) => state.config.readonly,\n isSocketLeaveSupported: (state) =>\n state.config.supportedFeatures.includes(\"LEAVE\"),\n isSocketDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"DISCONNECT\"),\n }),\n ...mapGetters(\"main\", [\"findRoomsByNamespace\"]),\n },\n\n methods: {\n emit() {\n // TODO\n },\n onSubmit() {\n SocketHolder.socket.emit(\n \"join\",\n this.socket.nsp,\n this.newRoom,\n this.socket.id\n );\n this.newRoom = \"\";\n },\n leave(room) {\n SocketHolder.socket.emit(\n \"leave\",\n this.socket.nsp,\n room.name,\n this.socket.id\n );\n },\n disconnect() {\n SocketHolder.socket.emit(\n \"_disconnect\",\n this.socket.nsp,\n false,\n this.socket.id\n );\n },\n displayDetails(room) {\n this.$router.push({\n name: \"room\",\n params: { nsp: this.socket.nsp, name: room.name },\n });\n },\n },\n};\n</script>\n\n<style scoped>\n.select-room {\n max-width: 200px;\n}\n</style>\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 }","<template>\n <v-card class=\"fill-height\">\n <v-card-title>{{ $t(\"details\") }}</v-card-title>\n\n <v-card-text\n ><h4>{{ $t(\"sockets.client\") }}</h4></v-card-text\n >\n\n <v-simple-table dense>\n <template>\n <tbody>\n <tr>\n <td class=\"key-column\">{{ $t(\"id\") }}</td>\n <td>\n {{ client.id }}\n </td>\n <td align=\"right\">\n <v-tooltip bottom v-if=\"client.connected\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"navigateToClient()\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"clients.displayDetails\") }}</span>\n </v-tooltip>\n </td>\n </tr>\n <tr>\n <td class=\"key-column\">{{ $t(\"status\") }}</td>\n <td>\n <ConnectionStatus :connected=\"client.connected\" />\n </td>\n <td align=\"right\">\n <v-tooltip\n bottom\n v-if=\"isSocketDisconnectSupported && client.connected\"\n >\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnectClient()\"\n :disabled=\"isReadonly\"\n small\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"clients.disconnect\") }}</span>\n </v-tooltip>\n </td>\n </tr>\n <tr>\n <td class=\"key-column\">{{ $t(\"sockets.transport\") }}</td>\n <td><Transport :transport=\"socket.transport\" /></td>\n <td></td>\n </tr>\n <tr>\n <td class=\"key-column\">{{ $t(\"sockets.address\") }}</td>\n <td>{{ socket.handshake.address }}</td>\n <td></td>\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n\n <v-card-text\n ><h4>{{ $t(\"sockets.socket\") }}</h4></v-card-text\n >\n\n <v-simple-table dense>\n <template v-slot:default>\n <tbody>\n <tr>\n <td class=\"key-column\">{{ $t(\"namespace\") }}</td>\n <td>\n <code>{{ socket.nsp }}</code>\n </td>\n <td></td>\n </tr>\n\n <tr>\n <td class=\"key-column\">{{ $t(\"id\") }}</td>\n <td>{{ socket.id }}</td>\n <td></td>\n </tr>\n\n <tr>\n <td class=\"key-column\">{{ $t(\"status\") }}</td>\n <td>\n <ConnectionStatus :connected=\"socket.connected\" />\n </td>\n <td align=\"right\">\n <v-tooltip\n bottom\n v-if=\"isSocketDisconnectSupported && socket.connected\"\n >\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnectSocket()\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.disconnect\") }}</span>\n </v-tooltip>\n </td>\n </tr>\n\n <tr>\n <td class=\"key-column\">{{ $t(\"sockets.creation-date\") }}</td>\n <td>{{ creationDate }}</td>\n <td></td>\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n </v-card>\n</template>\n\n<script>\nimport Transport from \"../Transport\";\nimport ConnectionStatus from \"../ConnectionStatus\";\nimport { mapState } from \"vuex\";\nimport SocketHolder from \"../../SocketHolder\";\n\nexport default {\n name: \"SocketDetails\",\n\n components: { ConnectionStatus, Transport },\n\n props: {\n socket: Object,\n client: Object,\n },\n\n computed: {\n creationDate() {\n return new Date(this.socket.handshake.issued).toISOString();\n },\n ...mapState({\n isReadonly: (state) => state.config.readonly,\n isSocketDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"DISCONNECT\"),\n }),\n },\n\n methods: {\n navigateToClient() {\n this.$router.push({\n name: \"client\",\n params: {\n id: this.client.id,\n },\n });\n },\n disconnectClient() {\n SocketHolder.socket.emit(\n \"_disconnect\",\n this.socket.nsp,\n true,\n this.socket.id\n );\n },\n disconnectSocket() {\n SocketHolder.socket.emit(\n \"_disconnect\",\n this.socket.nsp,\n false,\n this.socket.id\n );\n },\n },\n};\n</script>\n\n<style scoped>\n.key-column {\n width: 30%;\n}\n</style>\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 }","<template>\n <v-simple-table dense>\n <template v-slot:default>\n <thead>\n <tr>\n <th>{{ $t(\"name\") }}</th>\n <th>{{ $t(\"value\") }}</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"{ key, value } of items\" :key=\"key\">\n <td class=\"key-column\">{{ key }}</td>\n <td>{{ value }}</td>\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n</template>\n\n<script>\nexport default {\n name: \"KeyValueTable\",\n\n props: {\n object: Object,\n },\n\n computed: {\n items() {\n const keys = Object.keys(this.object);\n return keys.sort().map((key) => ({\n key,\n value: this.object[key],\n }));\n },\n },\n};\n</script>\n\n<style scoped>\n.key-column {\n width: 30%;\n}\n</style>\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","<template>\n <v-card class=\"fill-height\">\n <v-card-title>{{ $t(\"sockets.initial-request\") }}</v-card-title>\n\n <v-card-text\n ><h4>{{ $t(\"sockets.headers\") }}</h4></v-card-text\n >\n\n <KeyValueTable :object=\"socket.handshake.headers\" />\n\n <v-card-text\n ><h4>{{ $t(\"sockets.query-params\") }}</h4></v-card-text\n >\n\n <KeyValueTable :object=\"socket.handshake.query\" />\n </v-card>\n</template>\n\n<script>\nimport KeyValueTable from \"../KeyValueTable\";\n\nexport default {\n name: \"InitialRequest\",\n\n components: { KeyValueTable },\n\n props: {\n socket: Object,\n },\n};\n</script>\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","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-container v-if=\"socket\" fluid>\n <v-row>\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <SocketDetails :socket=\"socket\" :client=\"client\" />\n </v-col>\n\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <InitialRequest :socket=\"socket\" />\n </v-col>\n\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <SocketRooms :socket=\"socket\" />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport SocketRooms from \"../components/Socket/SocketRooms\";\nimport SocketDetails from \"../components/Socket/SocketDetails\";\nimport InitialRequest from \"../components/Socket/InitialRequest\";\n\nexport default {\n name: \"Socket\",\n\n components: { InitialRequest, SocketDetails, SocketRooms },\n\n data() {\n return {\n socket: null,\n client: null,\n };\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"sockets.title\"),\n to: { name: \"sockets\" },\n },\n {\n text: this.$t(\"sockets.details\"),\n disabled: true,\n },\n ];\n },\n ...mapGetters(\"main\", [\"findSocketById\", \"findClientById\"]),\n },\n\n mounted() {\n this.socket = this.findSocketById(\n this.$route.params.nsp,\n this.$route.params.id\n );\n if (this.socket) {\n this.client = this.findClientById(this.socket.clientId);\n }\n },\n};\n</script>\n\n<style scoped></style>\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 }","<template>\n <Status\n :value=\"!isPrivate\"\n :ok-label=\"$t('rooms.public')\"\n :ko-label=\"$t('rooms.private')\"\n />\n</template>\n\n<script>\nimport Status from \"../Status\";\n\nexport default {\n name: \"RoomType\",\n\n components: { Status },\n\n props: {\n isPrivate: Boolean,\n },\n};\n</script>\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","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-card>\n <v-card-text class=\"d-flex\">\n <NamespaceSelector />\n\n <v-switch\n v-model=\"showPrivateRooms\"\n @change=\"onPrivateRoomsUpdate\"\n :label=\"$t('rooms.show-private')\"\n class=\"ml-3\"\n inset\n dense\n />\n </v-card-text>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"filteredRooms\"\n :footer-props=\"footerProps\"\n >\n <template v-slot:item.sockets=\"{ item }\">\n {{ item.sockets.length }}\n </template>\n\n <template v-slot:item.isPrivate=\"{ value }\">\n <RoomType :is-private=\"value\" />\n </template>\n\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip bottom v-if=\"isMultiLeaveSupported && !item.isPrivate\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"clear(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-tag-off-outline</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"rooms.clear\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom v-if=\"isMultiDisconnectSupported\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnect(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"rooms.disconnect\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"displayDetails(item)\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"rooms.displayDetails\") }}</span>\n </v-tooltip>\n </template>\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\nimport NamespaceSelector from \"../components/NamespaceSelector\";\nimport SocketHolder from \"../SocketHolder\";\nimport RoomType from \"../components/Room/RoomType\";\nimport { sortBy } from \"lodash-es\";\n\nexport default {\n name: \"Rooms\",\n\n components: { RoomType, NamespaceSelector },\n\n data() {\n return {\n showPrivateRooms: false,\n footerProps: {\n \"items-per-page-options\": [20, 100, -1],\n },\n };\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"rooms.title\"),\n disabled: true,\n },\n ];\n },\n headers() {\n return [\n {\n text: this.$t(\"id\"),\n value: \"name\",\n align: \"start\",\n },\n {\n text: this.$t(\"type\"),\n value: \"isPrivate\",\n },\n {\n text: this.$t(\"rooms.sockets-count\"),\n value: \"sockets\",\n },\n {\n value: \"actions\",\n align: \"end\",\n sortable: false,\n },\n ];\n },\n ...mapGetters(\"main\", [\"rooms\"]),\n ...mapState({\n selectedNamespace: (state) => state.main.selectedNamespace,\n isReadonly: (state) => state.config.readonly,\n isMultiLeaveSupported: (state) =>\n state.config.supportedFeatures.includes(\"MLEAVE\"),\n isMultiDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"MDISCONNECT\"),\n }),\n filteredRooms() {\n const filteredRooms = this.showPrivateRooms\n ? this.rooms\n : this.rooms.filter((room) => !room.isPrivate);\n return sortBy(filteredRooms, \"name\");\n },\n },\n\n methods: {\n clear(room) {\n SocketHolder.socket.emit(\"leave\", this.selectedNamespace.name, room.name);\n },\n disconnect(room) {\n SocketHolder.socket.emit(\n \"_disconnect\",\n this.selectedNamespace.name,\n false,\n room.name\n );\n },\n displayDetails(room) {\n this.$router.push({\n name: \"room\",\n params: { nsp: this.selectedNamespace.name, name: room.name },\n });\n },\n onPrivateRoomsUpdate(value) {\n const query = value ? { p: 1 } : {};\n this.$router.replace({\n name: \"rooms\",\n query,\n });\n },\n },\n\n mounted() {\n this.showPrivateRooms = this.$route.query.p === \"1\";\n },\n};\n</script>\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 }","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-card>\n <v-data-table\n :headers=\"headers\"\n :items=\"clients\"\n :footer-props=\"footerProps\"\n >\n <template v-slot:item.address=\"{ item }\">\n <span v-if=\"item.sockets.length\">{{\n item.sockets[0].handshake.address\n }}</span>\n </template>\n\n <template v-slot:item.transport=\"{ item }\">\n <Transport\n v-if=\"item.sockets.length\"\n :transport=\"item.sockets[0].transport\"\n />\n </template>\n\n <template v-slot:item.sockets=\"{ item }\">\n {{ item.sockets.length }}\n </template>\n\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip bottom v-if=\"isSocketDisconnectSupported\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnect(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"clients.disconnect\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"displayDetails(item)\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"clients.displayDetails\") }}</span>\n </v-tooltip>\n </template>\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport SocketHolder from \"../SocketHolder\";\nimport Transport from \"../components/Transport\";\n\nexport default {\n name: \"Clients\",\n\n components: { Transport },\n\n data() {\n return {\n footerProps: {\n \"items-per-page-options\": [20, 100, -1],\n },\n };\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"clients.title\"),\n disabled: true,\n },\n ];\n },\n headers() {\n return [\n {\n text: \"#\",\n value: \"id\",\n align: \"start\",\n },\n {\n text: this.$t(\"sockets.address\"),\n value: \"address\",\n },\n {\n text: this.$t(\"sockets.transport\"),\n value: \"transport\",\n },\n {\n text: this.$t(\"clients.sockets-count\"),\n value: \"sockets\",\n },\n {\n value: \"actions\",\n align: \"end\",\n sortable: false,\n },\n ];\n },\n ...mapState({\n clients: (state) => state.main.clients,\n isReadonly: (state) => state.config.readonly,\n isSocketDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"DISCONNECT\"),\n }),\n },\n\n methods: {\n disconnect(client) {\n const socket = client.sockets[0];\n if (socket) {\n SocketHolder.socket.emit(\"_disconnect\", socket.nsp, true, socket.id);\n }\n },\n displayDetails(client) {\n this.$router.push({ name: \"client\", params: { id: client.id } });\n },\n },\n};\n</script>\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 }","<template>\n <v-card class=\"fill-height\">\n <v-card-title>{{ $t(\"details\") }}</v-card-title>\n\n <v-simple-table dense>\n <template>\n <tbody>\n <tr>\n <td class=\"key-column\">{{ $t(\"id\") }}</td>\n <td>\n {{ client.id }}\n </td>\n <td></td>\n </tr>\n <tr>\n <td class=\"key-column\">{{ $t(\"status\") }}</td>\n <td>\n <ConnectionStatus :connected=\"client.connected\" />\n </td>\n <td align=\"right\">\n <v-tooltip\n bottom\n v-if=\"isSocketDisconnectSupported && client.connected\"\n >\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnectClient()\"\n :disabled=\"isReadonly\"\n small\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"clients.disconnect\") }}</span>\n </v-tooltip>\n </td>\n </tr>\n <tr>\n <td class=\"key-column\">{{ $t(\"sockets.transport\") }}</td>\n <td><Transport :transport=\"socket.transport\" /></td>\n <td></td>\n </tr>\n <tr>\n <td class=\"key-column\">{{ $t(\"sockets.address\") }}</td>\n <td>{{ socket.handshake.address }}</td>\n <td></td>\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n </v-card>\n</template>\n\n<script>\nimport Transport from \"../Transport\";\nimport ConnectionStatus from \"../ConnectionStatus\";\nimport { mapState } from \"vuex\";\nimport SocketHolder from \"../../SocketHolder\";\n\nexport default {\n name: \"ClientDetails\",\n\n components: { ConnectionStatus, Transport },\n\n props: {\n client: Object,\n socket: Object,\n },\n\n computed: {\n ...mapState({\n isReadonly: (state) => state.config.readonly,\n isSocketDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"DISCONNECT\"),\n }),\n },\n\n methods: {\n disconnectClient() {\n const socket = this.client.sockets[0];\n if (socket) {\n SocketHolder.socket.emit(\"_disconnect\", socket.nsp, true, socket.id);\n }\n },\n },\n};\n</script>\n\n<style scoped>\n.key-column {\n width: 30%;\n}\n</style>\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 }","<template>\n <v-card>\n <v-card-title>{{ $t(\"sockets.title\") }}</v-card-title>\n\n <v-data-table :headers=\"headers\" :items=\"sockets\" dense>\n <template v-slot:item.nsp=\"{ value }\">\n <code>{{ value }}</code>\n </template>\n\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip bottom v-if=\"isSocketDisconnectSupported\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnect(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.disconnect\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"displayDetails(item)\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.displayDetails\") }}</span>\n </v-tooltip>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport SocketHolder from \"../../SocketHolder\";\n\nexport default {\n name: \"ClientSockets\",\n\n props: {\n sockets: Array,\n },\n\n computed: {\n headers() {\n return [\n {\n text: \"#\",\n value: \"id\",\n align: \"start\",\n },\n {\n text: this.$t(\"namespace\"),\n value: \"nsp\",\n },\n {\n value: \"actions\",\n align: \"end\",\n sortable: false,\n },\n ];\n },\n ...mapState({\n isReadonly: (state) => state.config.readonly,\n isSocketDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"DISCONNECT\"),\n }),\n },\n\n methods: {\n disconnect(socket) {\n SocketHolder.socket.emit(\"_disconnect\", socket.nsp, false, socket.id);\n },\n displayDetails(socket) {\n this.$router.push({\n name: \"socket\",\n params: { nsp: socket.nsp, id: socket.id },\n });\n },\n },\n};\n</script>\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","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-container v-if=\"client\" fluid>\n <v-row>\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <ClientDetails :client=\"client\" :socket=\"socket\" />\n </v-col>\n\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <InitialRequest :socket=\"socket\" v-if=\"socket\" />\n </v-col>\n\n <v-col sm=\"12\" md=\"6\" lg=\"4\">\n <ClientSockets :sockets=\"client.sockets\" />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport ClientDetails from \"../components/Client/ClientDetails\";\nimport InitialRequest from \"../components/Socket/InitialRequest\";\nimport ClientSockets from \"../components/Client/ClientSockets\";\n\nexport default {\n name: \"Client\",\n\n components: { ClientSockets, InitialRequest, ClientDetails },\n\n data() {\n return {\n socket: null,\n client: null,\n };\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"clients.title\"),\n to: { name: \"clients\" },\n exact: true,\n },\n {\n text: this.$t(\"clients.details\"),\n disabled: true,\n },\n ];\n },\n ...mapGetters(\"main\", [\"findClientById\"]),\n },\n\n mounted() {\n this.client = this.findClientById(this.$route.params.id);\n if (this.client) {\n this.socket = this.client.sockets[0];\n }\n },\n};\n</script>\n\n<style scoped></style>\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 }","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-card>\n <v-data-table\n :headers=\"headers\"\n :items=\"servers\"\n :footer-props=\"footerProps\"\n >\n <template v-slot:item.uptime=\"{ value }\">\n {{ formatDuration(value) }}\n </template>\n\n <template v-slot:item.lastPing=\"{ value }\">\n {{ delaySinceLastPing(value) }}\n </template>\n\n <template v-slot:item.healthy=\"{ value }\">\n <ServerStatus :healthy=\"value\" />\n </template>\n\n <template v-slot:item.actions=\"{ item }\">\n <v-btn v-if=\"!item.healthy\" @click=\"removeServer(item)\" small>\n <v-icon>mdi-delete-outline</v-icon>\n </v-btn>\n </template>\n </v-data-table>\n </v-card>\n </div>\n</template>\n\n<script>\nimport { sortBy } from \"lodash-es\";\nimport { formatDuration } from \"../util\";\nimport { mapState } from \"vuex\";\nimport ServerStatus from \"../components/ServerStatus\";\n\nexport default {\n name: \"Servers\",\n\n components: { ServerStatus },\n\n data() {\n return {\n footerProps: {\n \"items-per-page-options\": [20, 100, -1],\n },\n now: Date.now(),\n };\n },\n\n created() {\n this.interval = setInterval(() => {\n this.now = Date.now();\n }, 1000);\n },\n\n beforeDestroy() {\n clearInterval(this.interval);\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"servers.title\"),\n disabled: true,\n },\n ];\n },\n headers() {\n return [\n {\n text: this.$t(\"id\"),\n value: \"serverId\",\n },\n {\n text: this.$t(\"servers.hostname\"),\n value: \"hostname\",\n },\n {\n text: this.$t(\"servers.pid\"),\n value: \"pid\",\n },\n {\n text: this.$t(\"servers.uptime\"),\n value: \"uptime\",\n },\n {\n text: this.$t(\"servers.clients-count\"),\n value: \"clientsCount\",\n },\n {\n text: this.$t(\"servers.last-ping\"),\n value: \"lastPing\",\n },\n {\n text: this.$t(\"status\"),\n value: \"healthy\",\n },\n {\n value: \"actions\",\n align: \"end\",\n sortable: false,\n },\n ];\n },\n ...mapState({\n servers: (state) => sortBy(state.servers.servers, \"serverId\"),\n }),\n },\n methods: {\n formatDuration,\n delaySinceLastPing(lastPing) {\n const delay = this.now - lastPing;\n return `${formatDuration(delay / 1000)} ago`;\n },\n removeServer(item) {\n this.$store.commit(\"servers/removeServer\", item.serverId);\n },\n },\n};\n</script>\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 }","<template>\n <v-card v-if=\"room\">\n <v-card-title>{{ $t(\"sockets.title\") }}</v-card-title>\n\n <v-data-table\n :headers=\"headers\"\n :items=\"room.sockets\"\n :footer-props=\"footerProps\"\n >\n <template v-slot:item.transport=\"{ value }\">\n <Transport :transport=\"value\" />\n </template>\n <template v-slot:item.actions=\"{ item }\">\n <v-tooltip bottom v-if=\"isSocketLeaveSupported && !room.isPrivate\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"leave(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-tag-off-outline</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"rooms.leave\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom v-if=\"isSocketDisconnectSupported\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"disconnect(item)\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-logout</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.disconnect\") }}</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"displayDetails(item)\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-dots-horizontal</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"sockets.displayDetails\") }}</span>\n </v-tooltip>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport Transport from \"../Transport\";\nimport { mapGetters, mapState } from \"vuex\";\nimport SocketHolder from \"../../SocketHolder\";\n\nexport default {\n name: \"RoomSockets\",\n\n components: { Transport },\n\n props: {\n room: Object,\n },\n\n data() {\n return {\n footerProps: {\n \"items-per-page-options\": [20, 100, -1],\n },\n };\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"rooms.title\"),\n to: { name: \"rooms\" },\n },\n {\n text: this.$t(\"rooms.details\"),\n disabled: true,\n },\n ];\n },\n headers() {\n return [\n {\n text: this.$t(\"id\"),\n value: \"id\",\n align: \"start\",\n },\n {\n text: this.$t(\"sockets.address\"),\n value: \"handshake.address\",\n },\n {\n text: this.$t(\"sockets.transport\"),\n value: \"transport\",\n },\n {\n value: \"actions\",\n align: \"end\",\n sortable: false,\n },\n ];\n },\n ...mapGetters(\"main\", [\"findRoomByName\"]),\n ...mapState({\n isReadonly: (state) => state.config.readonly,\n isSocketLeaveSupported: (state) =>\n state.config.supportedFeatures.includes(\"LEAVE\"),\n isSocketDisconnectSupported: (state) =>\n state.config.supportedFeatures.includes(\"DISCONNECT\"),\n }),\n },\n\n methods: {\n leave(socket) {\n SocketHolder.socket.emit(\"leave\", socket.nsp, this.room.name, socket.id);\n },\n disconnect(socket) {\n SocketHolder.socket.emit(\"_disconnect\", socket.nsp, false, socket.id);\n },\n displayDetails(socket) {\n this.$router.push({\n name: \"socket\",\n params: { nsp: this.$route.params.nsp, id: socket.id },\n });\n },\n },\n};\n</script>\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 }","<template>\n <Status\n :value=\"active\"\n :ok-label=\"$t('rooms.active')\"\n :ko-label=\"$t('rooms.deleted')\"\n />\n</template>\n\n<script>\nimport Status from \"../Status\";\n\nexport default {\n name: \"RoomStatus\",\n\n components: { Status },\n\n props: {\n active: Boolean,\n },\n};\n</script>\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","<template>\n <v-card class=\"fill-height\">\n <v-card-title>{{ $t(\"details\") }}</v-card-title>\n\n <v-simple-table dense>\n <template>\n <tbody>\n <tr>\n <td class=\"key-column\">{{ $t(\"namespace\") }}</td>\n <td>\n <code>{{ nsp }}</code>\n </td>\n <td />\n </tr>\n\n <tr>\n <td class=\"key-column\">{{ $t(\"id\") }}</td>\n <td>\n {{ room.name }}\n </td>\n <td></td>\n </tr>\n\n <tr>\n <td class=\"key-column\">{{ $t(\"status\") }}</td>\n <td>\n <RoomStatus :active=\"room.active\" />\n </td>\n <td align=\"right\">\n <v-tooltip bottom v-if=\"isMultiLeaveSupported && !room.isPrivate\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"clear()\"\n :disabled=\"isReadonly\"\n small\n class=\"ml-3\"\n >\n <v-icon>mdi-tag-off-outline</v-icon>\n </v-btn>\n </template>\n <span>{{ $t(\"rooms.clear\") }}</span>\n </v-tooltip>\n </td>\n </tr>\n\n <tr>\n <td class=\"key-column\">{{ $t(\"type\") }}</td>\n <td>\n <RoomType :is-private=\"room.isPrivate\" />\n </td>\n <td />\n </tr>\n </tbody>\n </template>\n </v-simple-table>\n </v-card>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport SocketHolder from \"../../SocketHolder\";\nimport RoomStatus from \"./RoomStatus\";\nimport RoomType from \"./RoomType\";\n\nexport default {\n name: \"RoomDetails\",\n components: { RoomType, RoomStatus },\n props: {\n room: Object,\n nsp: String,\n },\n\n computed: {\n ...mapState({\n isReadonly: (state) => state.config.readonly,\n isMultiLeaveSupported: (state) =>\n state.config.supportedFeatures.includes(\"MLEAVE\"),\n }),\n },\n\n methods: {\n clear() {\n SocketHolder.socket.emit(\"leave\", this.nsp, this.room.name);\n },\n },\n};\n</script>\n\n<style scoped></style>\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","<template>\n <div>\n <v-breadcrumbs :items=\"breadcrumbItems\" />\n\n <v-container v-if=\"room\" fluid>\n <v-row>\n <v-col sm=\"12\" md=\"4\">\n <RoomDetails :room=\"room\" :nsp=\"$route.params.nsp\" />\n </v-col>\n\n <v-col sm=\"12\" md=\"8\">\n <RoomSockets :room=\"room\" />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport RoomSockets from \"../components/Room/RoomSockets\";\nimport RoomDetails from \"../components/Room/RoomDetails\";\n\nexport default {\n name: \"Sockets\",\n\n components: { RoomDetails, RoomSockets },\n\n data() {\n return {\n room: null,\n };\n },\n\n computed: {\n breadcrumbItems() {\n return [\n {\n text: this.$t(\"rooms.title\"),\n to: { name: \"rooms\" },\n },\n {\n text: this.$t(\"rooms.details\"),\n disabled: true,\n },\n ];\n },\n ...mapGetters(\"main\", [\"findRoomByName\"]),\n },\n\n mounted() {\n this.room = this.findRoomByName(\n this.$route.params.nsp,\n this.$route.params.name\n );\n },\n};\n</script>\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":""}