diff --git a/css/main.css b/css/main.css index 8d4b9f33..c286a88f 100644 --- a/css/main.css +++ b/css/main.css @@ -134,6 +134,42 @@ } +.bd-server-card { + position: relative; + border-width: 1px; + border-style: solid; + border-radius: 5px; + background: rgba(32,34,37,.6); + border-color: #202225; + margin-bottom: 8px; +} + +.bd-server-header, +.bd-server-footer { + display: flex; + color: #b9bbbe; +} + +.bd-server-header { + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.bd-server-card .bd-button { + margin-top: 4px; +} + +.bd-button.bd-button-success { + background-color: #3ac15c; +} + +.bd-button.bd-button-success:hover { + background-color: rgb(52,174,83); +} + +.bd-button.bd-button-success:active { + background-color: rgb(46,154,74); +} diff --git a/js/main.js b/js/main.js index 0c7c219f..c8e1bcd4 100644 --- a/js/main.js +++ b/js/main.js @@ -227,7 +227,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ui */ \"./src/ui/ui.js\");\n\n\n\nconst LayerStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"pushLayer\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PublicServers extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"PublicServers\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"publicServers\";\n }\n\n enabled() {\n const wrapper = modules__WEBPACK_IMPORTED_MODULE_1__[\"BDV2\"].guildClasses.wrapper.split(\" \")[0];\n const guilds = $(`.${wrapper} .scroller-2FKFPG >:first-child`);\n guilds.after(this.button);\n }\n\n disabled() {\n $(\"#bd-pub-li\").remove();\n }\n\n openPublicServers() {\n LayerStack.pushLayer(() => modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].React.createElement(ui__WEBPACK_IMPORTED_MODULE_2__[\"PublicServersMenu\"], {\n close: LayerStack.popLayer\n }));\n }\n\n get button() {\n const btn = $(\"
\", {\n \"class\": modules__WEBPACK_IMPORTED_MODULE_1__[\"BDV2\"].guildClasses.listItem,\n \"id\": \"bd-pub-li\"\n }).append($(\"
\", {\n \"class\": \"wrapper-25eVIn \" + modules__WEBPACK_IMPORTED_MODULE_1__[\"BDV2\"].guildClasses.circleButtonMask,\n \"text\": \"public\",\n \"id\": \"bd-pub-button\",\n \"click\": () => {\n this.openPublicServers();\n }\n }));\n return btn;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL3B1YmxpY3NlcnZlcnMuanM/MWY2NSJdLCJuYW1lcyI6WyJMYXllclN0YWNrIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiUHVibGljU2VydmVycyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJ3cmFwcGVyIiwiQkRWMiIsImd1aWxkQ2xhc3NlcyIsInNwbGl0IiwiZ3VpbGRzIiwiJCIsImFmdGVyIiwiYnV0dG9uIiwiZGlzYWJsZWQiLCJyZW1vdmUiLCJvcGVuUHVibGljU2VydmVycyIsInB1c2hMYXllciIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiUHVibGljU2VydmVyc01lbnUiLCJjbG9zZSIsInBvcExheWVyIiwiYnRuIiwibGlzdEl0ZW0iLCJhcHBlbmQiLCJjaXJjbGVCdXR0b25NYXNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFVBQVUsR0FBR0Msc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixXQUExQixDQUFuQjtBQUVlLG1FQUFJLE1BQU1DLGFBQU4sU0FBNEJDLHdEQUE1QixDQUFvQztBQUNuRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBQ3BDLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sU0FBUDtBQUFrQjs7QUFDbEMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUVsQ0MsU0FBTyxHQUFHO0FBQ04sVUFBTUMsT0FBTyxHQUFHQyw0Q0FBSSxDQUFDQyxZQUFMLENBQWtCRixPQUFsQixDQUEwQkcsS0FBMUIsQ0FBZ0MsR0FBaEMsRUFBcUMsQ0FBckMsQ0FBaEI7QUFDQSxVQUFNQyxNQUFNLEdBQUdDLENBQUMsQ0FBRSxJQUFHTCxPQUFRLGlDQUFiLENBQWhCO0FBQ0FJLFVBQU0sQ0FBQ0UsS0FBUCxDQUFhLEtBQUtDLE1BQWxCO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQSCxLQUFDLENBQUMsWUFBRCxDQUFELENBQWdCSSxNQUFoQjtBQUNIOztBQUVEQyxtQkFBaUIsR0FBRztBQUNoQm5CLGNBQVUsQ0FBQ29CLFNBQVgsQ0FBcUIsTUFBTUMsc0RBQWMsQ0FBQ0MsS0FBZixDQUFxQkMsYUFBckIsQ0FBbUNDLG9EQUFuQyxFQUFzRDtBQUFDQyxXQUFLLEVBQUV6QixVQUFVLENBQUMwQjtBQUFuQixLQUF0RCxDQUEzQjtBQUNIOztBQUVELE1BQUlWLE1BQUosR0FBYTtBQUNULFVBQU1XLEdBQUcsR0FBR2IsQ0FBQyxDQUFDLFFBQUQsRUFBVztBQUNwQixlQUFTSiw0Q0FBSSxDQUFDQyxZQUFMLENBQWtCaUIsUUFEUDtBQUVwQixZQUFNO0FBRmMsS0FBWCxDQUFELENBR1RDLE1BSFMsQ0FHRmYsQ0FBQyxDQUFDLFFBQUQsRUFBVztBQUNsQixlQUFTLG9CQUFvQkosNENBQUksQ0FBQ0MsWUFBTCxDQUFrQm1CLGdCQUQ3QjtBQUVsQixjQUFRLFFBRlU7QUFHbEIsWUFBTSxlQUhZO0FBSWxCLGVBQVMsTUFBTTtBQUFFLGFBQUtYLGlCQUFMO0FBQTJCO0FBSjFCLEtBQVgsQ0FIQyxDQUFaO0FBVUEsV0FBT1EsR0FBUDtBQUNIOztBQS9Ca0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9wdWJsaWNzZXJ2ZXJzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge0JEVjIsIERpc2NvcmRNb2R1bGVzLCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IHtQdWJsaWNTZXJ2ZXJzTWVudX0gZnJvbSBcInVpXCI7XHJcblxyXG5jb25zdCBMYXllclN0YWNrID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hMYXllclwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJQdWJsaWNTZXJ2ZXJzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwicHVibGljU2VydmVyc1wiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSBCRFYyLmd1aWxkQ2xhc3Nlcy53cmFwcGVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICBjb25zdCBndWlsZHMgPSAkKGAuJHt3cmFwcGVyfSAuc2Nyb2xsZXItMkZLRlBHID46Zmlyc3QtY2hpbGRgKTtcclxuICAgICAgICBndWlsZHMuYWZ0ZXIodGhpcy5idXR0b24pO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgICQoXCIjYmQtcHViLWxpXCIpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5QdWJsaWNTZXJ2ZXJzKCkge1xyXG4gICAgICAgIExheWVyU3RhY2sucHVzaExheWVyKCgpID0+IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoUHVibGljU2VydmVyc01lbnUsIHtjbG9zZTogTGF5ZXJTdGFjay5wb3BMYXllcn0pKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnV0dG9uKCkge1xyXG4gICAgICAgIGNvbnN0IGJ0biA9ICQoXCI8ZGl2Lz5cIiwge1xyXG4gICAgICAgICAgICBcImNsYXNzXCI6IEJEVjIuZ3VpbGRDbGFzc2VzLmxpc3RJdGVtLFxyXG4gICAgICAgICAgICBcImlkXCI6IFwiYmQtcHViLWxpXCJcclxuICAgICAgICB9KS5hcHBlbmQoJChcIjxkaXYvPlwiLCB7XHJcbiAgICAgICAgICAgIFwiY2xhc3NcIjogXCJ3cmFwcGVyLTI1ZVZJbiBcIiArIEJEVjIuZ3VpbGRDbGFzc2VzLmNpcmNsZUJ1dHRvbk1hc2ssXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBcInB1YmxpY1wiLFxyXG4gICAgICAgICAgICBcImlkXCI6IFwiYmQtcHViLWJ1dHRvblwiLFxyXG4gICAgICAgICAgICBcImNsaWNrXCI6ICgpID0+IHsgdGhpcy5vcGVuUHVibGljU2VydmVycygpOyB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gYnRuO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/publicservers.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _publicservers_connection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./publicservers/connection */ \"./src/builtins/publicservers/connection.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ui */ \"./src/ui/ui.js\");\n\n\n\n\nconst LayerStack = modules__WEBPACK_IMPORTED_MODULE_2__[\"WebpackModules\"].getByProps(\"pushLayer\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PublicServers extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"PublicServers\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"publicServers\";\n }\n\n enabled() {\n const wrapper = modules__WEBPACK_IMPORTED_MODULE_2__[\"BDV2\"].guildClasses.wrapper.split(\" \")[0];\n const guilds = $(`.${wrapper} .scroller-2FKFPG >:first-child`);\n guilds.after(this.button);\n }\n\n disabled() {\n $(\"#bd-pub-li\").remove();\n }\n\n openPublicServers() {\n LayerStack.pushLayer(() => modules__WEBPACK_IMPORTED_MODULE_2__[\"DiscordModules\"].React.createElement(ui__WEBPACK_IMPORTED_MODULE_3__[\"PublicServersMenu\"], {\n close: LayerStack.popLayer,\n connection: _publicservers_connection__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }));\n }\n\n get button() {\n const btn = $(\"
\", {\n \"class\": modules__WEBPACK_IMPORTED_MODULE_2__[\"BDV2\"].guildClasses.listItem,\n \"id\": \"bd-pub-li\"\n }).append($(\"
\", {\n \"class\": \"wrapper-25eVIn \" + modules__WEBPACK_IMPORTED_MODULE_2__[\"BDV2\"].guildClasses.circleButtonMask,\n \"text\": \"public\",\n \"id\": \"bd-pub-button\",\n \"click\": () => {\n this.openPublicServers();\n }\n }));\n return btn;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL3B1YmxpY3NlcnZlcnMuanM/MWY2NSJdLCJuYW1lcyI6WyJMYXllclN0YWNrIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiUHVibGljU2VydmVycyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJ3cmFwcGVyIiwiQkRWMiIsImd1aWxkQ2xhc3NlcyIsInNwbGl0IiwiZ3VpbGRzIiwiJCIsImFmdGVyIiwiYnV0dG9uIiwiZGlzYWJsZWQiLCJyZW1vdmUiLCJvcGVuUHVibGljU2VydmVycyIsInB1c2hMYXllciIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiUHVibGljU2VydmVyc01lbnUiLCJjbG9zZSIsInBvcExheWVyIiwiY29ubmVjdGlvbiIsIlBTQ29ubmVjdGlvbiIsImJ0biIsImxpc3RJdGVtIiwiYXBwZW5kIiwiY2lyY2xlQnV0dG9uTWFzayJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLFdBQTFCLENBQW5CO0FBRWUsbUVBQUksTUFBTUMsYUFBTixTQUE0QkMsd0RBQTVCLENBQW9DO0FBQ25ELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFDcEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBRWxDQyxTQUFPLEdBQUc7QUFDTixVQUFNQyxPQUFPLEdBQUdDLDRDQUFJLENBQUNDLFlBQUwsQ0FBa0JGLE9BQWxCLENBQTBCRyxLQUExQixDQUFnQyxHQUFoQyxFQUFxQyxDQUFyQyxDQUFoQjtBQUNBLFVBQU1DLE1BQU0sR0FBR0MsQ0FBQyxDQUFFLElBQUdMLE9BQVEsaUNBQWIsQ0FBaEI7QUFDQUksVUFBTSxDQUFDRSxLQUFQLENBQWEsS0FBS0MsTUFBbEI7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1BILEtBQUMsQ0FBQyxZQUFELENBQUQsQ0FBZ0JJLE1BQWhCO0FBQ0g7O0FBRURDLG1CQUFpQixHQUFHO0FBQ2hCbkIsY0FBVSxDQUFDb0IsU0FBWCxDQUFxQixNQUFNQyxzREFBYyxDQUFDQyxLQUFmLENBQXFCQyxhQUFyQixDQUFtQ0Msb0RBQW5DLEVBQXNEO0FBQUNDLFdBQUssRUFBRXpCLFVBQVUsQ0FBQzBCLFFBQW5CO0FBQTZCQyxnQkFBVSxFQUFFQyxpRUFBWUE7QUFBckQsS0FBdEQsQ0FBM0I7QUFDSDs7QUFFRCxNQUFJWixNQUFKLEdBQWE7QUFDVCxVQUFNYSxHQUFHLEdBQUdmLENBQUMsQ0FBQyxRQUFELEVBQVc7QUFDcEIsZUFBU0osNENBQUksQ0FBQ0MsWUFBTCxDQUFrQm1CLFFBRFA7QUFFcEIsWUFBTTtBQUZjLEtBQVgsQ0FBRCxDQUdUQyxNQUhTLENBR0ZqQixDQUFDLENBQUMsUUFBRCxFQUFXO0FBQ2xCLGVBQVMsb0JBQW9CSiw0Q0FBSSxDQUFDQyxZQUFMLENBQWtCcUIsZ0JBRDdCO0FBRWxCLGNBQVEsUUFGVTtBQUdsQixZQUFNLGVBSFk7QUFJbEIsZUFBUyxNQUFNO0FBQUUsYUFBS2IsaUJBQUw7QUFBMkI7QUFKMUIsS0FBWCxDQUhDLENBQVo7QUFVQSxXQUFPVSxHQUFQO0FBQ0g7O0FBL0JrRCxDQUF4QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL3B1YmxpY3NlcnZlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCBQU0Nvbm5lY3Rpb24gZnJvbSBcIi4vcHVibGljc2VydmVycy9jb25uZWN0aW9uXCI7XHJcbmltcG9ydCB7QkRWMiwgRGlzY29yZE1vZHVsZXMsIFdlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQge1B1YmxpY1NlcnZlcnNNZW51fSBmcm9tIFwidWlcIjtcclxuXHJcbmNvbnN0IExheWVyU3RhY2sgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicHVzaExheWVyXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFB1YmxpY1NlcnZlcnMgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlB1YmxpY1NlcnZlcnNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJwdWJsaWNTZXJ2ZXJzXCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IEJEVjIuZ3VpbGRDbGFzc2VzLndyYXBwZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IGd1aWxkcyA9ICQoYC4ke3dyYXBwZXJ9IC5zY3JvbGxlci0yRktGUEcgPjpmaXJzdC1jaGlsZGApO1xyXG4gICAgICAgIGd1aWxkcy5hZnRlcih0aGlzLmJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgJChcIiNiZC1wdWItbGlcIikucmVtb3ZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblB1YmxpY1NlcnZlcnMoKSB7XHJcbiAgICAgICAgTGF5ZXJTdGFjay5wdXNoTGF5ZXIoKCkgPT4gRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChQdWJsaWNTZXJ2ZXJzTWVudSwge2Nsb3NlOiBMYXllclN0YWNrLnBvcExheWVyLCBjb25uZWN0aW9uOiBQU0Nvbm5lY3Rpb259KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJ1dHRvbigpIHtcclxuICAgICAgICBjb25zdCBidG4gPSAkKFwiPGRpdi8+XCIsIHtcclxuICAgICAgICAgICAgXCJjbGFzc1wiOiBCRFYyLmd1aWxkQ2xhc3Nlcy5saXN0SXRlbSxcclxuICAgICAgICAgICAgXCJpZFwiOiBcImJkLXB1Yi1saVwiXHJcbiAgICAgICAgfSkuYXBwZW5kKCQoXCI8ZGl2Lz5cIiwge1xyXG4gICAgICAgICAgICBcImNsYXNzXCI6IFwid3JhcHBlci0yNWVWSW4gXCIgKyBCRFYyLmd1aWxkQ2xhc3Nlcy5jaXJjbGVCdXR0b25NYXNrLFxyXG4gICAgICAgICAgICBcInRleHRcIjogXCJwdWJsaWNcIixcclxuICAgICAgICAgICAgXCJpZFwiOiBcImJkLXB1Yi1idXR0b25cIixcclxuICAgICAgICAgICAgXCJjbGlja1wiOiAoKSA9PiB7IHRoaXMub3BlblB1YmxpY1NlcnZlcnMoKTsgfVxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGJ0bjtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/publicservers.js\n"); + +/***/ }), + +/***/ "./src/builtins/publicservers/connection.js": +/*!**************************************************!*\ + !*** ./src/builtins/publicservers/connection.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServersConnection; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst SortedGuildStore = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getSortedGuilds\");\nconst AvatarDefaults = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\nconst InviteActions = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"acceptInvite\");\n\nconst BrowserWindow = __webpack_require__(/*! electron */ \"electron\").remote.BrowserWindow;\n\nclass PublicServersConnection {\n static get endPoint() {\n return \"https://search.discordservers.com\";\n }\n\n static get joinEndPoint() {\n return \"https://j.discordservers.com\";\n }\n\n static get connectEndPoint() {\n return \"https://auth.discordservers.com/info\";\n }\n\n static getDefaultAvatar() {\n return AvatarDefaults.DEFAULT_AVATARS[Math.floor(Math.random() * 5)];\n }\n\n static hasJoined(id) {\n return SortedGuildStore.guildPositions.includes(id);\n }\n\n static search({\n term = \"\",\n category = \"\",\n from = 0\n } = {}) {\n return new Promise(resolve => {\n const queries = [];\n if (category) queries.push(`category=${category.replace(/ /g, \"%20\")}`);\n if (term) queries.push(`term=${term.replace(/ /g, \"%20\")}`);\n if (from) queries.push(`from=${from}`);\n const query = `?${queries.join(\"&\")}`;\n $.ajax({\n method: \"GET\",\n url: `${this.endPoint}${query}`,\n success: data => {\n const next = data.size + data.from;\n resolve({\n servers: data.results,\n size: data.size,\n from: data.from,\n total: data.total,\n next: next >= data.total ? null : next\n });\n },\n error: () => resolve(null)\n });\n });\n }\n\n static join(id, native = false) {\n return new Promise(resolve => {\n if (native) return InviteActions.acceptInvite(id), resolve(true);\n $.ajax({\n method: \"GET\",\n url: `${this.joinEndPoint}/${id}`,\n headers: {\n \"Accept\": \"application/json;\",\n \"Content-Type\": \"application/json;\",\n \"x-discord-token\": this._accessToken\n },\n crossDomain: true,\n xhrFields: {\n withCredentials: true\n },\n success: () => resolve(true),\n error: () => resolve(false)\n });\n });\n }\n\n static checkConnection() {\n return new Promise(resolve => {\n try {\n $.ajax({\n method: \"GET\",\n url: this.connectEndPoint,\n headers: {\n \"Accept\": \"application/json;\",\n \"Content-Type\": \"application/json;\"\n },\n crossDomain: true,\n xhrFields: {\n withCredentials: true\n },\n success: data => {\n this._accessToken = data.access_token;\n resolve(data);\n },\n error: () => resolve(false)\n });\n } catch (error) {\n resolve(false);\n }\n });\n }\n\n static connect() {\n return new Promise(resolve => {\n const joinWindow = new BrowserWindow(this.windowOptions);\n const url = `https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;\n joinWindow.webContents.on(\"did-navigate\", (event, navUrl) => {\n if (navUrl != this.connectEndPoint) return;\n joinWindow.close();\n resolve();\n });\n joinWindow.loadURL(url);\n });\n }\n\n static get windowOptions() {\n return {\n width: 380,\n height: 450,\n backgroundColor: \"#282b30\",\n show: true,\n resizable: true,\n maximizable: false,\n minimizable: false,\n alwaysOnTop: true,\n frame: false,\n center: true,\n webPreferences: {\n nodeIntegration: false\n }\n };\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL3B1YmxpY3NlcnZlcnMvY29ubmVjdGlvbi5qcz9iNzM4Il0sIm5hbWVzIjpbIlNvcnRlZEd1aWxkU3RvcmUiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJBdmF0YXJEZWZhdWx0cyIsIkludml0ZUFjdGlvbnMiLCJCcm93c2VyV2luZG93IiwicmVxdWlyZSIsInJlbW90ZSIsIlB1YmxpY1NlcnZlcnNDb25uZWN0aW9uIiwiZW5kUG9pbnQiLCJqb2luRW5kUG9pbnQiLCJjb25uZWN0RW5kUG9pbnQiLCJnZXREZWZhdWx0QXZhdGFyIiwiREVGQVVMVF9BVkFUQVJTIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiaGFzSm9pbmVkIiwiaWQiLCJndWlsZFBvc2l0aW9ucyIsImluY2x1ZGVzIiwic2VhcmNoIiwidGVybSIsImNhdGVnb3J5IiwiZnJvbSIsIlByb21pc2UiLCJyZXNvbHZlIiwicXVlcmllcyIsInB1c2giLCJyZXBsYWNlIiwicXVlcnkiLCJqb2luIiwiJCIsImFqYXgiLCJtZXRob2QiLCJ1cmwiLCJzdWNjZXNzIiwiZGF0YSIsIm5leHQiLCJzaXplIiwic2VydmVycyIsInJlc3VsdHMiLCJ0b3RhbCIsImVycm9yIiwibmF0aXZlIiwiYWNjZXB0SW52aXRlIiwiaGVhZGVycyIsIl9hY2Nlc3NUb2tlbiIsImNyb3NzRG9tYWluIiwieGhyRmllbGRzIiwid2l0aENyZWRlbnRpYWxzIiwiY2hlY2tDb25uZWN0aW9uIiwiYWNjZXNzX3Rva2VuIiwiY29ubmVjdCIsImpvaW5XaW5kb3ciLCJ3aW5kb3dPcHRpb25zIiwid2ViQ29udGVudHMiLCJvbiIsImV2ZW50IiwibmF2VXJsIiwiY2xvc2UiLCJsb2FkVVJMIiwid2lkdGgiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzaG93IiwicmVzaXphYmxlIiwibWF4aW1pemFibGUiLCJtaW5pbWl6YWJsZSIsImFsd2F5c09uVG9wIiwiZnJh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ZmpCLFNBQVA7QUFpQkgsT0FsQkQsQ0FtQkEsT0FBT2lCLEtBQVAsRUFBYztBQUNWakIsZUFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osS0F2Qk0sQ0FBUDtBQXdCSDs7QUFFRCxTQUFPMkIsT0FBUCxHQUFpQjtBQUNiLFdBQU8sSUFBSTVCLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzFCLFlBQU00QixVQUFVLEdBQUcsSUFBSWpELGFBQUosQ0FBa0IsS0FBS2tELGFBQXZCLENBQW5CO0FBQ0EsWUFBTXBCLEdBQUcsR0FBSSwwRUFBeUUsS0FBS3hCLGVBQWdCLEVBQTNHO0FBQ0EyQyxnQkFBVSxDQUFDRSxXQUFYLENBQXVCQyxFQUF2QixDQUEwQixjQUExQixFQUEwQyxDQUFDQyxLQUFELEVBQVFDLE1BQVIsS0FBbUI7QUFDekQsWUFBSUEsTUFBTSxJQUFJLEtBQUtoRCxlQUFuQixFQUFvQztBQUNwQzJDLGtCQUFVLENBQUNNLEtBQVg7QUFDQWxDLGVBQU87QUFDVixPQUpEO0FBS0E0QixnQkFBVSxDQUFDTyxPQUFYLENBQW1CMUIsR0FBbkI7QUFDSCxLQVRNLENBQVA7QUFVSDs7QUFFRCxhQUFXb0IsYUFBWCxHQUEyQjtBQUN2QixXQUFPO0FBQ0hPLFdBQUssRUFBRSxHQURKO0FBRUhDLFlBQU0sRUFBRSxHQUZMO0FBR0hDLHFCQUFlLEVBQUUsU0FIZDtBQUlIQyxVQUFJLEVBQUUsSUFKSDtBQUtIQyxlQUFTLEVBQUUsSUFMUjtBQU1IQyxpQkFBVyxFQUFFLEtBTlY7QUFPSEMsaUJBQVcsRUFBRSxLQVBWO0FBUUhDLGlCQUFXLEVBQUUsSUFSVjtBQVNIQyxXQUFLLEVBQUUsS0FUSjtBQVVIQyxZQUFNLEVBQUUsSUFWTDtBQVdIQyxvQkFBYyxFQUFFO0FBQ1pDLHVCQUFlLEVBQUU7QUFETDtBQVhiLEtBQVA7QUFlSDs7QUFwSHdDIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL3B1YmxpY3NlcnZlcnMvY29ubmVjdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBTb3J0ZWRHdWlsZFN0b3JlID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFNvcnRlZEd1aWxkc1wiKTtcclxuY29uc3QgQXZhdGFyRGVmYXVsdHMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0VXNlckF2YXRhclVSTFwiLCBcIkRFRkFVTFRfQVZBVEFSU1wiKTtcclxuY29uc3QgSW52aXRlQWN0aW9ucyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJhY2NlcHRJbnZpdGVcIik7XHJcblxyXG5jb25zdCBCcm93c2VyV2luZG93ID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5Ccm93c2VyV2luZG93O1xyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1YmxpY1NlcnZlcnNDb25uZWN0aW9uIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0IGVuZFBvaW50KCkge3JldHVybiBcImh0dHBzOi8vc2VhcmNoLmRpc2NvcmRzZXJ2ZXJzLmNvbVwiO31cclxuICAgIHN0YXRpYyBnZXQgam9pbkVuZFBvaW50KCkge3JldHVybiBcImh0dHBzOi8vai5kaXNjb3Jkc2VydmVycy5jb21cIjt9XHJcbiAgICBzdGF0aWMgZ2V0IGNvbm5lY3RFbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL2F1dGguZGlzY29yZHNlcnZlcnMuY29tL2luZm9cIjt9XHJcblxyXG4gICAgc3RhdGljIGdldERlZmF1bHRBdmF0YXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIEF2YXRhckRlZmF1bHRzLkRFRkFVTFRfQVZBVEFSU1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA1KV07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGhhc0pvaW5lZChpZCkge1xyXG4gICAgICAgIHJldHVybiBTb3J0ZWRHdWlsZFN0b3JlLmd1aWxkUG9zaXRpb25zLmluY2x1ZGVzKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2VhcmNoKHt0ZXJtID0gXCJcIiwgY2F0ZWdvcnkgPSBcIlwiLCBmcm9tID0gMH0gPSB7fSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcmllcyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoY2F0ZWdvcnkpIHF1ZXJpZXMucHVzaChgY2F0ZWdvcnk9JHtjYXRlZ29yeS5yZXBsYWNlKC8gL2csIFwiJTIwXCIpfWApO1xyXG4gICAgICAgICAgICBpZiAodGVybSkgcXVlcmllcy5wdXNoKGB0ZXJtPSR7dGVybS5yZXBsYWNlKC8gL2csIFwiJTIwXCIpfWApO1xyXG4gICAgICAgICAgICBpZiAoZnJvbSkgcXVlcmllcy5wdXNoKGBmcm9tPSR7ZnJvbX1gKTtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBgPyR7cXVlcmllcy5qb2luKFwiJlwiKX1gO1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmVuZFBvaW50fSR7cXVlcnl9YCxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBkYXRhLnNpemUgKyBkYXRhLmZyb207XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnM6IGRhdGEucmVzdWx0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogZGF0YS5zaXplLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBkYXRhLmZyb20sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBuZXh0ID49IGRhdGEudG90YWwgPyBudWxsIDogbmV4dFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiByZXNvbHZlKG51bGwpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgaWYgKG5hdGl2ZSkgcmV0dXJuIEludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlKGlkKSwgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIHVybDogYCR7dGhpcy5qb2luRW5kUG9pbnR9LyR7aWR9YCxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb247XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO1wiICxcclxuICAgICAgICAgICAgICAgICAgICBcIngtZGlzY29yZC10b2tlblwiOiB0aGlzLl9hY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNyb3NzRG9tYWluOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4gcmVzb2x2ZSh0cnVlKSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiByZXNvbHZlKGZhbHNlKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5jb25uZWN0RW5kUG9pbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb247XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NEb21haW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gZGF0YS5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4gcmVzb2x2ZShmYWxzZSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29ubmVjdCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5XaW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyh0aGlzLndpbmRvd09wdGlvbnMpO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9jb25uZWN0P3Njb3Blcz1ndWlsZHMuam9pbiZwcmV2aW91c1VybD0ke3RoaXMuY29ubmVjdEVuZFBvaW50fWA7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cud2ViQ29udGVudHMub24oXCJkaWQtbmF2aWdhdGVcIiwgKGV2ZW50LCBuYXZVcmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuYXZVcmwgIT0gdGhpcy5jb25uZWN0RW5kUG9pbnQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGpvaW5XaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cubG9hZFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgd2luZG93T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3aWR0aDogMzgwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ1MCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyODJiMzBcIixcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1pbmltaXphYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgYWx3YXlzT25Ub3A6IHRydWUsXHJcbiAgICAgICAgICAgIGZyYW1lOiBmYWxzZSxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICB3ZWJQcmVmZXJlbmNlczoge1xyXG4gICAgICAgICAgICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/publicservers/connection.js\n"); /***/ }), @@ -431,7 +443,7 @@ eval("__webpack_require__.r(__webpack_exports__);\nconst EventEmitter = __webpac /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogTypes\", function() { return LogTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Logger; });\n/**\r\n * Simple logger for the lib and plugins.\r\n *\r\n * @module Logger\r\n * @version 0.1.0\r\n */\n\n/* eslint-disable no-console */\n\n/**\r\n * List of logging types.\r\n */\nconst LogTypes = {\n /** Alias for error */\n err: \"error\",\n error: \"error\",\n\n /** Alias for debug */\n dbg: \"debug\",\n debug: \"debug\",\n log: \"log\",\n warn: \"warn\",\n info: \"info\"\n};\nclass Logger {\n /**\r\n * Logs an error using a collapsed error group with stacktrace.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Message or error to have logged.\r\n * @param {Error} error - Error object to log with the message.\r\n */\n static stacktrace(module, message, error) {\n console.error(`%c[${module}]%c ${message}\\n\\n%c`, \"color: #3a71c1; font-weight: 700;\", \"color: red; font-weight: 700;\", \"color: red;\", error);\n }\n /**\r\n * Logs using error formatting. For logging an actual error object consider {@link module:Logger.stacktrace}\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Messages to have logged.\r\n */\n\n\n static err(module, ...message) {\n Logger._log(module, message, \"error\");\n }\n /**\r\n * Logs a warning message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static warn(module, ...message) {\n Logger._log(module, message, \"warn\");\n }\n /**\r\n * Logs an informational message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static info(module, ...message) {\n Logger._log(module, message, \"info\");\n }\n /**\r\n * Logs used for debugging purposes.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static debug(module, ...message) {\n Logger._log(module, message, \"debug\");\n }\n /**\r\n * Logs used for basic loggin.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static log(module, ...message) {\n Logger._log(module, message);\n }\n /**\r\n * Logs strings using different console levels and a module label.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {any|Array} message - Messages to have logged.\r\n * @param {module:Logger.LogTypes} type - Type of log to use in console.\r\n */\n\n\n static _log(module, message, type = \"log\") {\n type = Logger.parseType(type);\n if (!Array.isArray(message)) message = [message];\n console[type](`%c[BandagedBD]%c %c[${module}]%c`, \"color: #3E82E5; font-weight: 700;\", \"color: #3a71c1;\", \"\", ...message);\n }\n\n static parseType(type) {\n return LogTypes.hasOwnProperty(type) ? LogTypes[type] : \"log\";\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbG9nZ2VyLmpzPzk5OGUiXSwibmFtZXMiOlsiTG9nVHlwZXMiLCJlcnIiLCJlcnJvciIsImRiZyIsImRlYnVnIiwibG9nIiwid2FybiIsImluZm8iLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwibW9kdWxlIiwibWVzc2FnZSIsImNvbnNvbGUiLCJfbG9nIiwidHlwZSIsInBhcnNlVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImhhc093blByb3BlcnR5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7OztBQU9BOztBQUVBOzs7QUFHTyxNQUFNQSxRQUFRLEdBQUc7QUFDcEI7QUFDQUMsS0FBRyxFQUFFLE9BRmU7QUFHcEJDLE9BQUssRUFBRSxPQUhhOztBQUlwQjtBQUNBQyxLQUFHLEVBQUUsT0FMZTtBQU1wQkMsT0FBSyxFQUFFLE9BTmE7QUFPcEJDLEtBQUcsRUFBRSxLQVBlO0FBUXBCQyxNQUFJLEVBQUUsTUFSYztBQVNwQkMsTUFBSSxFQUFFO0FBVGMsQ0FBakI7QUFZUSxNQUFNQyxNQUFOLENBQWE7QUFFeEI7Ozs7Ozs7QUFPQSxTQUFPQyxVQUFQLENBQWtCQyxNQUFsQixFQUEwQkMsT0FBMUIsRUFBbUNULEtBQW5DLEVBQTBDO0FBQzVDVSxXQUFPLENBQUNWLEtBQVIsQ0FBZSxNQUFLUSxNQUFPLE9BQU1DLE9BQVEsUUFBekMsRUFBa0QsbUNBQWxELEVBQXVGLCtCQUF2RixFQUF3SCxhQUF4SCxFQUF1SVQsS0FBdkk7QUFDRztBQUVEOzs7Ozs7OztBQU1BLFNBQU9ELEdBQVAsQ0FBV1MsTUFBWCxFQUFtQixHQUFHQyxPQUF0QixFQUErQjtBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFekU7Ozs7Ozs7O0FBTUEsU0FBT0wsSUFBUCxDQUFZSSxNQUFaLEVBQW9CLEdBQUdDLE9BQXZCLEVBQWdDO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QixNQUE3QjtBQUF1QztBQUV6RTs7Ozs7Ozs7QUFNQSxTQUFPSixJQUFQLENBQVlHLE1BQVosRUFBb0IsR0FBR0MsT0FBdkIsRUFBZ0M7QUFBRUgsVUFBTSxDQUFDSyxJQUFQLENBQVlILE1BQVosRUFBb0JDLE9BQXBCLEVBQTZCLE1BQTdCO0FBQXVDO0FBRXpFOzs7Ozs7OztBQU1BLFNBQU9QLEtBQVAsQ0FBYU0sTUFBYixFQUFxQixHQUFHQyxPQUF4QixFQUFpQztBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFM0U7Ozs7Ozs7O0FBTUEsU0FBT04sR0FBUCxDQUFXSyxNQUFYLEVBQW1CLEdBQUdDLE9BQXRCLEVBQStCO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQjtBQUErQjtBQUVoRTs7Ozs7Ozs7O0FBT0EsU0FBT0UsSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QkcsSUFBSSxHQUFHLEtBQXBDLEVBQTJDO0FBQ3ZDQSxRQUFJLEdBQUdOLE1BQU0sQ0FBQ08sU0FBUCxDQUFpQkQsSUFBakIsQ0FBUDtBQUNBLFFBQUksQ0FBQ0UsS0FBSyxDQUFDQyxPQUFOLENBQWNOLE9BQWQsQ0FBTCxFQUE2QkEsT0FBTyxHQUFHLENBQUNBLE9BQUQsQ0FBVjtBQUM3QkMsV0FBTyxDQUFDRSxJQUFELENBQVAsQ0FBZSx1QkFBc0JKLE1BQU8sS0FBNUMsRUFBa0QsbUNBQWxELEVBQXVGLGlCQUF2RixFQUEwRyxFQUExRyxFQUE4RyxHQUFHQyxPQUFqSDtBQUNIOztBQUVELFNBQU9JLFNBQVAsQ0FBaUJELElBQWpCLEVBQXVCO0FBQ25CLFdBQU9kLFFBQVEsQ0FBQ2tCLGNBQVQsQ0FBd0JKLElBQXhCLElBQWdDZCxRQUFRLENBQUNjLElBQUQsQ0FBeEMsR0FBaUQsS0FBeEQ7QUFDSDs7QUFwRXVCIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvbG9nZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNpbXBsZSBsb2dnZXIgZm9yIHRoZSBsaWIgYW5kIHBsdWdpbnMuXHJcbiAqXHJcbiAqIEBtb2R1bGUgTG9nZ2VyXHJcbiAqIEB2ZXJzaW9uIDAuMS4wXHJcbiAqL1xyXG5cclxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xyXG5cclxuLyoqXHJcbiAqIExpc3Qgb2YgbG9nZ2luZyB0eXBlcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBMb2dUeXBlcyA9IHtcclxuICAgIC8qKiBBbGlhcyBmb3IgZXJyb3IgKi9cclxuICAgIGVycjogXCJlcnJvclwiLFxyXG4gICAgZXJyb3I6IFwiZXJyb3JcIixcclxuICAgIC8qKiBBbGlhcyBmb3IgZGVidWcgKi9cclxuICAgIGRiZzogXCJkZWJ1Z1wiLFxyXG4gICAgZGVidWc6IFwiZGVidWdcIixcclxuICAgIGxvZzogXCJsb2dcIixcclxuICAgIHdhcm46IFwid2FyblwiLFxyXG4gICAgaW5mbzogXCJpbmZvXCJcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGFuIGVycm9yIHVzaW5nIGEgY29sbGFwc2VkIGVycm9yIGdyb3VwIHdpdGggc3RhY2t0cmFjZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlIC0gTmFtZSBvZiB0aGUgY2FsbGluZyBtb2R1bGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIE1lc3NhZ2Ugb3IgZXJyb3IgdG8gaGF2ZSBsb2dnZWQuXHJcblx0ICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciBvYmplY3QgdG8gbG9nIHdpdGggdGhlIG1lc3NhZ2UuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzdGFja3RyYWNlKG1vZHVsZSwgbWVzc2FnZSwgZXJyb3IpIHtcclxuXHRcdGNvbnNvbGUuZXJyb3IoYCVjWyR7bW9kdWxlfV0lYyAke21lc3NhZ2V9XFxuXFxuJWNgLCBcImNvbG9yOiAjM2E3MWMxOyBmb250LXdlaWdodDogNzAwO1wiLCBcImNvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiA3MDA7XCIsIFwiY29sb3I6IHJlZDtcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyB1c2luZyBlcnJvciBmb3JtYXR0aW5nLiBGb3IgbG9nZ2luZyBhbiBhY3R1YWwgZXJyb3Igb2JqZWN0IGNvbnNpZGVyIHtAbGluayBtb2R1bGU6TG9nZ2VyLnN0YWNrdHJhY2V9XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGVycihtb2R1bGUsIC4uLm1lc3NhZ2UpIHsgTG9nZ2VyLl9sb2cobW9kdWxlLCBtZXNzYWdlLCBcImVycm9yXCIpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBOYW1lIG9mIHRoZSBjYWxsaW5nIG1vZHVsZS5cclxuICAgICAqIEBwYXJhbSB7Li4uYW55fSBtZXNzYWdlIC0gTWVzc2FnZXMgdG8gaGF2ZSBsb2dnZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB3YXJuKG1vZHVsZSwgLi4ubWVzc2FnZSkgeyBMb2dnZXIuX2xvZyhtb2R1bGUsIG1lc3NhZ2UsIFwid2FyblwiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBhbiBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHsuLi5hbnl9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGluZm8obW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSwgXCJpbmZvXCIpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlIC0gTmFtZSBvZiB0aGUgY2FsbGluZyBtb2R1bGUuXHJcbiAgICAgKiBAcGFyYW0gey4uLmFueX0gbWVzc2FnZSAtIE1lc3NhZ2VzIHRvIGhhdmUgbG9nZ2VkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZGVidWcobW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSwgXCJkZWJ1Z1wiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyB1c2VkIGZvciBiYXNpYyBsb2dnaW4uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHsuLi5hbnl9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGxvZyhtb2R1bGUsIC4uLm1lc3NhZ2UpIHsgTG9nZ2VyLl9sb2cobW9kdWxlLCBtZXNzYWdlKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBzdHJpbmdzIHVzaW5nIGRpZmZlcmVudCBjb25zb2xlIGxldmVscyBhbmQgYSBtb2R1bGUgbGFiZWwuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHthbnl8QXJyYXk8YW55Pn0gbWVzc2FnZSAtIE1lc3NhZ2VzIHRvIGhhdmUgbG9nZ2VkLlxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6TG9nZ2VyLkxvZ1R5cGVzfSB0eXBlIC0gVHlwZSBvZiBsb2cgdG8gdXNlIGluIGNvbnNvbGUuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBfbG9nKG1vZHVsZSwgbWVzc2FnZSwgdHlwZSA9IFwibG9nXCIpIHtcclxuICAgICAgICB0eXBlID0gTG9nZ2VyLnBhcnNlVHlwZSh0eXBlKTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZSkpIG1lc3NhZ2UgPSBbbWVzc2FnZV07XHJcbiAgICAgICAgY29uc29sZVt0eXBlXShgJWNbQmFuZGFnZWRCRF0lYyAlY1ske21vZHVsZX1dJWNgLCBcImNvbG9yOiAjM0U4MkU1OyBmb250LXdlaWdodDogNzAwO1wiLCBcImNvbG9yOiAjM2E3MWMxO1wiLCBcIlwiLCAuLi5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcGFyc2VUeXBlKHR5cGUpIHtcclxuICAgICAgICByZXR1cm4gTG9nVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkgPyBMb2dUeXBlc1t0eXBlXSA6IFwibG9nXCI7XHJcbiAgICB9XHJcblxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/logger.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogTypes\", function() { return LogTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Logger; });\n/**\r\n * Simple logger for the lib and plugins.\r\n *\r\n * @module Logger\r\n * @version 0.1.0\r\n */\n\n/* eslint-disable no-console */\n\n/**\r\n * List of logging types.\r\n */\nconst LogTypes = {\n /** Alias for error */\n err: \"error\",\n error: \"error\",\n\n /** Alias for debug */\n dbg: \"debug\",\n debug: \"debug\",\n log: \"log\",\n warn: \"warn\",\n info: \"info\"\n};\nclass Logger {\n /**\r\n * Logs an error using a collapsed error group with stacktrace.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Message or error to have logged.\r\n * @param {Error} error - Error object to log with the message.\r\n */\n static stacktrace(module, message, error) {\n console.error(`%c[${module}]%c ${message}\\n\\n%c`, \"color: #3a71c1; font-weight: 700;\", \"color: red; font-weight: 700;\", \"color: red;\", error);\n }\n /**\r\n * Logs using error formatting. For logging an actual error object consider {@link module:Logger.stacktrace}\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Messages to have logged.\r\n */\n\n\n static err(module, ...message) {\n Logger._log(module, message, \"error\");\n }\n /**\r\n * Logs a warning message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static warn(module, ...message) {\n Logger._log(module, message, \"warn\");\n }\n /**\r\n * Logs an informational message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static info(module, ...message) {\n Logger._log(module, message, \"info\");\n }\n /**\r\n * Logs used for debugging purposes.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static debug(module, ...message) {\n Logger._log(module, message, \"debug\");\n }\n /**\r\n * Logs used for basic loggin.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static log(module, ...message) {\n Logger._log(module, message);\n }\n /**\r\n * Logs strings using different console levels and a module label.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {any|Array} message - Messages to have logged.\r\n * @param {module:Logger.LogTypes} type - Type of log to use in console.\r\n */\n\n\n static _log(module, message, type = \"log\") {\n type = Logger.parseType(type);\n if (!Array.isArray(message)) message = [message];\n console[type](`%c[BandagedBD]%c [${module}]%c`, \"color: #3E82E5; font-weight: 700;\", \"color: #3a71c1;\", \"\", ...message); //console.log(`%c[BandagedBD]%c [${moduleName}]%c ${message}`, \"color: #3a71c1; font-weight: 700;\", \"color: #3a71c1;\", \"\");\n }\n\n static parseType(type) {\n return LogTypes.hasOwnProperty(type) ? LogTypes[type] : \"log\";\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbG9nZ2VyLmpzPzk5OGUiXSwibmFtZXMiOlsiTG9nVHlwZXMiLCJlcnIiLCJlcnJvciIsImRiZyIsImRlYnVnIiwibG9nIiwid2FybiIsImluZm8iLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwibW9kdWxlIiwibWVzc2FnZSIsImNvbnNvbGUiLCJfbG9nIiwidHlwZSIsInBhcnNlVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImhhc093blByb3BlcnR5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7OztBQU9BOztBQUVBOzs7QUFHTyxNQUFNQSxRQUFRLEdBQUc7QUFDcEI7QUFDQUMsS0FBRyxFQUFFLE9BRmU7QUFHcEJDLE9BQUssRUFBRSxPQUhhOztBQUlwQjtBQUNBQyxLQUFHLEVBQUUsT0FMZTtBQU1wQkMsT0FBSyxFQUFFLE9BTmE7QUFPcEJDLEtBQUcsRUFBRSxLQVBlO0FBUXBCQyxNQUFJLEVBQUUsTUFSYztBQVNwQkMsTUFBSSxFQUFFO0FBVGMsQ0FBakI7QUFZUSxNQUFNQyxNQUFOLENBQWE7QUFFeEI7Ozs7Ozs7QUFPQSxTQUFPQyxVQUFQLENBQWtCQyxNQUFsQixFQUEwQkMsT0FBMUIsRUFBbUNULEtBQW5DLEVBQTBDO0FBQzVDVSxXQUFPLENBQUNWLEtBQVIsQ0FBZSxNQUFLUSxNQUFPLE9BQU1DLE9BQVEsUUFBekMsRUFBa0QsbUNBQWxELEVBQXVGLCtCQUF2RixFQUF3SCxhQUF4SCxFQUF1SVQsS0FBdkk7QUFDRztBQUVEOzs7Ozs7OztBQU1BLFNBQU9ELEdBQVAsQ0FBV1MsTUFBWCxFQUFtQixHQUFHQyxPQUF0QixFQUErQjtBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFekU7Ozs7Ozs7O0FBTUEsU0FBT0wsSUFBUCxDQUFZSSxNQUFaLEVBQW9CLEdBQUdDLE9BQXZCLEVBQWdDO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QixNQUE3QjtBQUF1QztBQUV6RTs7Ozs7Ozs7QUFNQSxTQUFPSixJQUFQLENBQVlHLE1BQVosRUFBb0IsR0FBR0MsT0FBdkIsRUFBZ0M7QUFBRUgsVUFBTSxDQUFDSyxJQUFQLENBQVlILE1BQVosRUFBb0JDLE9BQXBCLEVBQTZCLE1BQTdCO0FBQXVDO0FBRXpFOzs7Ozs7OztBQU1BLFNBQU9QLEtBQVAsQ0FBYU0sTUFBYixFQUFxQixHQUFHQyxPQUF4QixFQUFpQztBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFM0U7Ozs7Ozs7O0FBTUEsU0FBT04sR0FBUCxDQUFXSyxNQUFYLEVBQW1CLEdBQUdDLE9BQXRCLEVBQStCO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQjtBQUErQjtBQUVoRTs7Ozs7Ozs7O0FBT0EsU0FBT0UsSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QkcsSUFBSSxHQUFHLEtBQXBDLEVBQTJDO0FBQ3ZDQSxRQUFJLEdBQUdOLE1BQU0sQ0FBQ08sU0FBUCxDQUFpQkQsSUFBakIsQ0FBUDtBQUNBLFFBQUksQ0FBQ0UsS0FBSyxDQUFDQyxPQUFOLENBQWNOLE9BQWQsQ0FBTCxFQUE2QkEsT0FBTyxHQUFHLENBQUNBLE9BQUQsQ0FBVjtBQUM3QkMsV0FBTyxDQUFDRSxJQUFELENBQVAsQ0FBZSxxQkFBb0JKLE1BQU8sS0FBMUMsRUFBZ0QsbUNBQWhELEVBQXFGLGlCQUFyRixFQUF3RyxFQUF4RyxFQUE0RyxHQUFHQyxPQUEvRyxFQUh1QyxDQUl2QztBQUNIOztBQUVELFNBQU9JLFNBQVAsQ0FBaUJELElBQWpCLEVBQXVCO0FBQ25CLFdBQU9kLFFBQVEsQ0FBQ2tCLGNBQVQsQ0FBd0JKLElBQXhCLElBQWdDZCxRQUFRLENBQUNjLElBQUQsQ0FBeEMsR0FBaUQsS0FBeEQ7QUFDSDs7QUFyRXVCIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvbG9nZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNpbXBsZSBsb2dnZXIgZm9yIHRoZSBsaWIgYW5kIHBsdWdpbnMuXHJcbiAqXHJcbiAqIEBtb2R1bGUgTG9nZ2VyXHJcbiAqIEB2ZXJzaW9uIDAuMS4wXHJcbiAqL1xyXG5cclxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xyXG5cclxuLyoqXHJcbiAqIExpc3Qgb2YgbG9nZ2luZyB0eXBlcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBMb2dUeXBlcyA9IHtcclxuICAgIC8qKiBBbGlhcyBmb3IgZXJyb3IgKi9cclxuICAgIGVycjogXCJlcnJvclwiLFxyXG4gICAgZXJyb3I6IFwiZXJyb3JcIixcclxuICAgIC8qKiBBbGlhcyBmb3IgZGVidWcgKi9cclxuICAgIGRiZzogXCJkZWJ1Z1wiLFxyXG4gICAgZGVidWc6IFwiZGVidWdcIixcclxuICAgIGxvZzogXCJsb2dcIixcclxuICAgIHdhcm46IFwid2FyblwiLFxyXG4gICAgaW5mbzogXCJpbmZvXCJcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGFuIGVycm9yIHVzaW5nIGEgY29sbGFwc2VkIGVycm9yIGdyb3VwIHdpdGggc3RhY2t0cmFjZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlIC0gTmFtZSBvZiB0aGUgY2FsbGluZyBtb2R1bGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIE1lc3NhZ2Ugb3IgZXJyb3IgdG8gaGF2ZSBsb2dnZWQuXHJcblx0ICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciBvYmplY3QgdG8gbG9nIHdpdGggdGhlIG1lc3NhZ2UuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzdGFja3RyYWNlKG1vZHVsZSwgbWVzc2FnZSwgZXJyb3IpIHtcclxuXHRcdGNvbnNvbGUuZXJyb3IoYCVjWyR7bW9kdWxlfV0lYyAke21lc3NhZ2V9XFxuXFxuJWNgLCBcImNvbG9yOiAjM2E3MWMxOyBmb250LXdlaWdodDogNzAwO1wiLCBcImNvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiA3MDA7XCIsIFwiY29sb3I6IHJlZDtcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyB1c2luZyBlcnJvciBmb3JtYXR0aW5nLiBGb3IgbG9nZ2luZyBhbiBhY3R1YWwgZXJyb3Igb2JqZWN0IGNvbnNpZGVyIHtAbGluayBtb2R1bGU6TG9nZ2VyLnN0YWNrdHJhY2V9XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGVycihtb2R1bGUsIC4uLm1lc3NhZ2UpIHsgTG9nZ2VyLl9sb2cobW9kdWxlLCBtZXNzYWdlLCBcImVycm9yXCIpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBOYW1lIG9mIHRoZSBjYWxsaW5nIG1vZHVsZS5cclxuICAgICAqIEBwYXJhbSB7Li4uYW55fSBtZXNzYWdlIC0gTWVzc2FnZXMgdG8gaGF2ZSBsb2dnZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB3YXJuKG1vZHVsZSwgLi4ubWVzc2FnZSkgeyBMb2dnZXIuX2xvZyhtb2R1bGUsIG1lc3NhZ2UsIFwid2FyblwiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBhbiBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHsuLi5hbnl9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGluZm8obW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSwgXCJpbmZvXCIpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlIC0gTmFtZSBvZiB0aGUgY2FsbGluZyBtb2R1bGUuXHJcbiAgICAgKiBAcGFyYW0gey4uLmFueX0gbWVzc2FnZSAtIE1lc3NhZ2VzIHRvIGhhdmUgbG9nZ2VkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZGVidWcobW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSwgXCJkZWJ1Z1wiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyB1c2VkIGZvciBiYXNpYyBsb2dnaW4uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHsuLi5hbnl9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGxvZyhtb2R1bGUsIC4uLm1lc3NhZ2UpIHsgTG9nZ2VyLl9sb2cobW9kdWxlLCBtZXNzYWdlKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBzdHJpbmdzIHVzaW5nIGRpZmZlcmVudCBjb25zb2xlIGxldmVscyBhbmQgYSBtb2R1bGUgbGFiZWwuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHthbnl8QXJyYXk8YW55Pn0gbWVzc2FnZSAtIE1lc3NhZ2VzIHRvIGhhdmUgbG9nZ2VkLlxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6TG9nZ2VyLkxvZ1R5cGVzfSB0eXBlIC0gVHlwZSBvZiBsb2cgdG8gdXNlIGluIGNvbnNvbGUuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBfbG9nKG1vZHVsZSwgbWVzc2FnZSwgdHlwZSA9IFwibG9nXCIpIHtcclxuICAgICAgICB0eXBlID0gTG9nZ2VyLnBhcnNlVHlwZSh0eXBlKTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZSkpIG1lc3NhZ2UgPSBbbWVzc2FnZV07XHJcbiAgICAgICAgY29uc29sZVt0eXBlXShgJWNbQmFuZGFnZWRCRF0lYyBbJHttb2R1bGV9XSVjYCwgXCJjb2xvcjogIzNFODJFNTsgZm9udC13ZWlnaHQ6IDcwMDtcIiwgXCJjb2xvcjogIzNhNzFjMTtcIiwgXCJcIiwgLi4ubWVzc2FnZSk7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhgJWNbQmFuZGFnZWRCRF0lYyBbJHttb2R1bGVOYW1lfV0lYyAke21lc3NhZ2V9YCwgXCJjb2xvcjogIzNhNzFjMTsgZm9udC13ZWlnaHQ6IDcwMDtcIiwgXCJjb2xvcjogIzNhNzFjMTtcIiwgXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhcnNlVHlwZSh0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIExvZ1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpID8gTG9nVHlwZXNbdHlwZV0gOiBcImxvZ1wiO1xyXG4gICAgfVxyXG5cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/logger.js\n"); /***/ }), @@ -759,27 +771,15 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), -/***/ "./src/ui/publicservers/card.js": -/*!**************************************!*\ - !*** ./src/ui/publicservers/card.js ***! - \**************************************/ +/***/ "./src/ui/publicservers/card.jsx": +/*!***************************************!*\ + !*** ./src/ui/publicservers/card.jsx ***! + \***************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./manager */ \"./src/ui/publicservers/manager.js\");\n\n\nclass ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = _manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDefaultAvatar();\n this.state = {\n imageError: false,\n joined: _manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hasJoined(this.props.server.identifier)\n };\n }\n\n render() {\n const {\n server\n } = this.props;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", // cardPrimary-1Hv-to\n {\n className: `card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n ref: \"img\",\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError.bind(this)\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"flexChild-faoVW3 bd-server-content\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name\"\n }, server.name), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count\"\n }, server.members, \" Members\")), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"scroller-2FKFPG scroller bd-server-description\"\n }, server.description))), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"flexChild-faoVW3 bd-server-tags\",\n style: {\n flex: \"1 1 auto\"\n }\n }, server.categories.join(\", \")), this.state.joined && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY\",\n style: {\n minHeight: \"12px\",\n marginTop: \"4px\",\n backgroundColor: \"#3ac15c\"\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"ui-button-contents\"\n }, typeof this.state.joined == \"string\" ? \"Joining...\" : \"Joined\")), server.error && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug\",\n style: {\n minHeight: \"12px\",\n marginTop: \"4px\",\n backgroundColor: \"#c13a3a\"\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"ui-button-contents\"\n }, \"Error\")), !server.error && !this.state.joined && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN\",\n style: {\n minHeight: \"12px\",\n marginTop: \"4px\"\n },\n onClick: () => {\n this.join();\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"ui-button-contents\"\n }, \"Join\")))) // )\n );\n }\n\n handleError() {\n this.props.server.iconUrl = _manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDefaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await _manager__WEBPACK_IMPORTED_MODULE_1__[\"default\"].join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvY2FyZC5qcz9mMjgxIl0sIm5hbWVzIjpbIlNlcnZlckNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXJ2ZXIiLCJpY29uVXJsIiwiTWFuYWdlciIsImdldERlZmF1bHRBdmF0YXIiLCJzdGF0ZSIsImltYWdlRXJyb3IiLCJqb2luZWQiLCJoYXNKb2luZWQiLCJpZGVudGlmaWVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInBpbm5lZCIsInJlZiIsInNyYyIsIm9uRXJyb3IiLCJoYW5kbGVFcnJvciIsImJpbmQiLCJuYW1lIiwibWVtYmVycyIsImRlc2NyaXB0aW9uIiwic3R5bGUiLCJmbGV4IiwiY2F0ZWdvcmllcyIsImpvaW4iLCJ0eXBlIiwibWluSGVpZ2h0IiwibWFyZ2luVG9wIiwiYmFja2dyb3VuZENvbG9yIiwiZXJyb3IiLCJvbkNsaWNrIiwic2V0U3RhdGUiLCJkaWRKb2luIiwibmF0aXZlam9pbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMsNkNBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFFBQUksQ0FBQyxLQUFLQSxLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQXZCLEVBQWdDLEtBQUtGLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQkMsT0FBbEIsR0FBNEJDLGdEQUFPLENBQUNDLGdCQUFSLEVBQTVCO0FBQ2hDLFNBQUtDLEtBQUwsR0FBYTtBQUNUQyxnQkFBVSxFQUFFLEtBREg7QUFFVEMsWUFBTSxFQUFFSixnREFBTyxDQUFDSyxTQUFSLENBQWtCLEtBQUtSLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQlEsVUFBcEM7QUFGQyxLQUFiO0FBSUg7O0FBRURDLFFB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QUhZLENBakJwQixFQTBCSSxDQUFDWCxNQUFNLENBQUM2QixLQUFSLElBQWlCLENBQUMsS0FBS3pCLEtBQUwsQ0FBV0UsTUFBN0IsSUFBdUNWLDZDQUFLLENBQUNjLGFBQU4sQ0FDbkMsUUFEbUMsRUFFbkM7QUFBQ2UsVUFBSSxFQUFFLFFBQVA7QUFBaUJkLGVBQVMsRUFBRSx3RkFBNUI7QUFBc0hVLFdBQUssRUFBRTtBQUFDSyxpQkFBUyxFQUFFLE1BQVo7QUFBb0JDLGlCQUFTLEVBQUU7QUFBL0IsT0FBN0g7QUFBb0tHLGFBQU8sRUFBRSxNQUFNO0FBQUMsYUFBS04sSUFBTDtBQUFhO0FBQWpNLEtBRm1DLEVBR25DNUIsNkNBQUssQ0FBQ2MsYUFBTixDQUNJLEtBREosRUFFSTtBQUFDQyxlQUFTLEVBQUU7QUFBWixLQUZKLEVBR0ksTUFISixDQUhtQyxDQTFCM0MsQ0EvQkosQ0FKRCxDQXdFSDtBQXhFRyxLQUFQO0FBMEVIOztBQUVESyxhQUFXLEdBQUc7QUFDVixTQUFLakIsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUFsQixHQUE0QkMsZ0RBQU8sQ0FBQ0MsZ0JBQVIsRUFBNUI7QUFDQSxTQUFLNEIsUUFBTCxDQUFjO0FBQUMxQixnQkFBVSxFQUFFO0FBQWIsS0FBZDtBQUNIOztBQUVELFFBQU1tQixJQUFOLEdBQWE7QUFDVCxTQUFLTyxRQUFMLENBQWM7QUFBQ3pCLFlBQU0sRUFBRTtBQUFULEtBQWQ7QUFDQSxVQUFNMEIsT0FBTyxHQUFHLE1BQU05QixnREFBTyxDQUFDc0IsSUFBUixDQUFhLEtBQUt6QixLQUFMLENBQVdDLE1BQVgsQ0FBa0JRLFVBQS9CLEVBQTJDLEtBQUtULEtBQUwsQ0FBV0MsTUFBWCxDQUFrQmlDLFVBQTdELENBQXRCO0FBQ0EsU0FBS0YsUUFBTCxDQUFjO0FBQUN6QixZQUFNLEVBQUUwQjtBQUFULEtBQWQ7QUFDSDs7QUFqR21EIiwiZmlsZSI6Ii4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvY2FyZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBNYW5hZ2VyIGZyb20gXCIuL21hbmFnZXJcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcnZlckNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsKSB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gTWFuYWdlci5nZXREZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgaW1hZ2VFcnJvcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGpvaW5lZDogTWFuYWdlci5oYXNKb2luZWQodGhpcy5wcm9wcy5zZXJ2ZXIuaWRlbnRpZmllcilcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7c2VydmVyfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgIFwiZGl2XCIsIC8vIGNhcmRQcmltYXJ5LTFIdi10b1xyXG4gICAgICAgICAgICB7Y2xhc3NOYW1lOiBgY2FyZC0zUWpfWXggY2FyZFByaW1hcnktMUh2LXRvIG1hcmdpbkJvdHRvbTgtQXRaT2RUIGJkLXNlcnZlci1jYXJkJHtzZXJ2ZXIucGlubmVkID8gXCIgYmQtc2VydmVyLWNhcmQtcGlubmVkXCIgOiBcIlwifWB9LFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7cmVmOiBcImltZ1wiLCBjbGFzc05hbWU6IFwiYmQtc2VydmVyLWltYWdlXCIsIHNyYzogc2VydmVyLmljb25VcmwsIG9uRXJyb3I6IHRoaXMuaGFuZGxlRXJyb3IuYmluZCh0aGlzKX0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwiZmxleENoaWxkLWZhb1ZXMyBiZC1zZXJ2ZXItY29udGVudFwifSxcclxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImZsZXgtMXhNUWc1IGZsZXgtMU8xR0tZIGhvcml6b250YWwtMWFlOWNpIGhvcml6b250YWwtMkVFRW5ZIGRpcmVjdGlvblJvdy0zdjN0Zkcgbm9XcmFwLTNqeW52NiBiZC1zZXJ2ZXItaGVhZGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoNVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJoNS0xOF8xbmQgZGVmYXVsdENvbG9yLTFfYWpYMCBtYXJnaW4tcmVzZXQgYmQtc2VydmVyLW5hbWVcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoNVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJoNS0xOF8xbmQgZGVmYXVsdENvbG9yLTFfYWpYMCBtYXJnaW4tcmVzZXQgYmQtc2VydmVyLW1lbWJlci1jb3VudFwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5tZW1iZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgTWVtYmVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwiZmxleC0xeE1RZzUgZmxleC0xTzFHS1kgaG9yaXpvbnRhbC0xYWU5Y2kgaG9yaXpvbnRhbC0yRUVFblkgZGlyZWN0aW9uUm93LTN2M3RmRyBub1dyYXAtM2p5bnY2XCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwic2Nyb2xsZXJXcmFwLTJsSkVrZCBzY3JvbGxlclRoZW1lZC0yb2VudXMgdGhlbWVHaG9zdEhhaXJsaW5lLURCRC0yZCBzY3JvbGxlckZhZGUtMUlqdzV5IGJkLXNlcnZlci1kZXNjcmlwdGlvbi1jb250YWluZXJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJzY3JvbGxlci0yRktGUEcgc2Nyb2xsZXIgYmQtc2VydmVyLWRlc2NyaXB0aW9uXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJmbGV4LTF4TVFnNSBmbGV4LTFPMUdLWSBob3Jpem9udGFsLTFhZTljaSBob3Jpem9udGFsLTJFRUVuWSBkaXJlY3Rpb25Sb3ctM3YzdGZHIG5vV3JhcC0zanludjYgYmQtc2VydmVyLWZvb3RlclwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImZsZXhDaGlsZC1mYW9WVzMgYmQtc2VydmVyLXRhZ3NcIiwgc3R5bGU6IHtmbGV4OiBcIjEgMSBhdXRvXCJ9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5jYXRlZ29yaWVzLmpvaW4oXCIsIFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmpvaW5lZCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJ1dHRvbi0zOGFTY3IgbG9va0ZpbGxlZC0xR3gwMFAgY29sb3JCcmFuZC0zcFhyOTEgc2l6ZU1pbi0xbUpkMXggZ3Jvdy1xNzdPTk4gY29sb3JHcmVlbi0yOWlBS1lcIiwgc3R5bGU6IHttaW5IZWlnaHQ6IFwiMTJweFwiLCBtYXJnaW5Ub3A6IFwiNHB4XCIsIGJhY2tncm91bmRDb2xvcjogXCIjM2FjMTVjXCJ9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLWJ1dHRvbi1jb250ZW50c1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YodGhpcy5zdGF0ZS5qb2luZWQpID09IFwic3RyaW5nXCIgPyBcIkpvaW5pbmcuLi5cIiA6IFwiSm9pbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLmVycm9yICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3R5cGU6IFwiYnV0dG9uXCIsIGNsYXNzTmFtZTogXCJiZC1idXR0b24gYnV0dG9uLTM4YVNjciBsb29rRmlsbGVkLTFHeDAwUCBjb2xvckJyYW5kLTNwWHI5MSBzaXplTWluLTFtSmQxeCBncm93LXE3N09OTiBkaXNhYmxlZC05YUYydWdcIiwgc3R5bGU6IHttaW5IZWlnaHQ6IFwiMTJweFwiLCBtYXJnaW5Ub3A6IFwiNHB4XCIsIGJhY2tncm91bmRDb2xvcjogXCIjYzEzYTNhXCJ9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLWJ1dHRvbi1jb250ZW50c1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlcnZlci5lcnJvciAmJiAhdGhpcy5zdGF0ZS5qb2luZWQgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBidXR0b24tMzhhU2NyIGxvb2tGaWxsZWQtMUd4MDBQIGNvbG9yQnJhbmQtM3BYcjkxIHNpemVNaW4tMW1KZDF4IGdyb3ctcTc3T05OXCIsIHN0eWxlOiB7bWluSGVpZ2h0OiBcIjEycHhcIiwgbWFyZ2luVG9wOiBcIjRweFwifSwgb25DbGljazogKCkgPT4ge3RoaXMuam9pbigpO319LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktYnV0dG9uLWNvbnRlbnRzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiSm9pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC8vIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUVycm9yKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMuc2VydmVyLmljb25VcmwgPSBNYW5hZ2VyLmdldERlZmF1bHRBdmF0YXIoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZUVycm9yOiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgam9pbigpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtqb2luZWQ6IFwiam9pbmluZ1wifSk7XHJcbiAgICAgICAgY29uc3QgZGlkSm9pbiA9IGF3YWl0IE1hbmFnZXIuam9pbih0aGlzLnByb3BzLnNlcnZlci5pZGVudGlmaWVyLCB0aGlzLnByb3BzLnNlcnZlci5uYXRpdmVqb2luKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtqb2luZWQ6IGRpZEpvaW59KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.js\n"); - -/***/ }), - -/***/ "./src/ui/publicservers/manager.js": -/*!*****************************************!*\ - !*** ./src/ui/publicservers/manager.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServersConnection; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst SortedGuildStore = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getSortedGuilds\");\nconst AvatarDefaults = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\nconst InviteActions = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"acceptInvite\");\n\nconst BrowserWindow = __webpack_require__(/*! electron */ \"electron\").remote.BrowserWindow;\n\nclass PublicServersConnection {\n static get endPoint() {\n return \"https://search.discordservers.com\";\n }\n\n static get joinEndPoint() {\n return \"https://j.discordservers.com\";\n }\n\n static get connectEndPoint() {\n return \"https://auth.discordservers.com/info\";\n }\n\n static getDefaultAvatar() {\n return AvatarDefaults.DEFAULT_AVATARS[Math.floor(Math.random() * 5)];\n }\n\n static hasJoined(id) {\n return SortedGuildStore.guildPositions.includes(id);\n }\n\n static search({\n term = \"\",\n category = \"\",\n from = 0\n } = {}) {\n return new Promise(resolve => {\n const queries = [];\n if (category) queries.push(`category=${category.replace(/ /g, \"%20\")}`);\n if (term) queries.push(`term=${term.replace(/ /g, \"%20\")}`);\n if (from) queries.push(`from=${from}`);\n const query = `?${queries.join(\"&\")}`;\n $.ajax({\n method: \"GET\",\n url: `${this.endPoint}${query}`,\n success: data => {\n const next = data.size + data.from;\n resolve({\n servers: data.results,\n size: data.size,\n from: data.from,\n total: data.total,\n next: next >= data.total ? null : next\n });\n },\n error: () => resolve(null)\n });\n });\n }\n\n static join(id, native = false) {\n return new Promise(resolve => {\n if (native) return InviteActions.acceptInvite(id), resolve(true);\n $.ajax({\n method: \"GET\",\n url: `${this.joinEndPoint}/${id}`,\n headers: {\n \"Accept\": \"application/json;\",\n \"Content-Type\": \"application/json;\",\n \"x-discord-token\": this._accessToken\n },\n crossDomain: true,\n xhrFields: {\n withCredentials: true\n },\n success: () => resolve(true),\n error: () => resolve(false)\n });\n });\n }\n\n static checkConnection() {\n return new Promise(resolve => {\n try {\n $.ajax({\n method: \"GET\",\n url: this.connectEndPoint,\n headers: {\n \"Accept\": \"application/json;\",\n \"Content-Type\": \"application/json;\"\n },\n crossDomain: true,\n xhrFields: {\n withCredentials: true\n },\n success: data => {\n this._accessToken = data.access_token;\n resolve(data);\n },\n error: () => resolve(false)\n });\n } catch (error) {\n resolve(false);\n }\n });\n }\n\n static connect() {\n return new Promise(resolve => {\n const joinWindow = new BrowserWindow(this.windowOptions);\n const url = `https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;\n joinWindow.webContents.on(\"did-navigate\", (event, navUrl) => {\n if (navUrl != this.connectEndPoint) return;\n joinWindow.close();\n resolve();\n });\n joinWindow.loadURL(url);\n });\n }\n\n static get windowOptions() {\n return {\n width: 500,\n height: 550,\n backgroundColor: \"#282b30\",\n show: true,\n resizable: true,\n maximizable: false,\n minimizable: false,\n alwaysOnTop: true,\n frame: false,\n center: true,\n webPreferences: {\n nodeIntegration: false\n }\n };\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWFuYWdlci5qcz81Nzc0Il0sIm5hbWVzIjpbIlNvcnRlZEd1aWxkU3RvcmUiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJBdmF0YXJEZWZhdWx0cyIsIkludml0ZUFjdGlvbnMiLCJCcm93c2VyV2luZG93IiwicmVxdWlyZSIsInJlbW90ZSIsIlB1YmxpY1NlcnZlcnNDb25uZWN0aW9uIiwiZW5kUG9pbnQiLCJqb2luRW5kUG9pbnQiLCJjb25uZWN0RW5kUG9pbnQiLCJnZXREZWZhdWx0QXZhdGFyIiwiREVGQVVMVF9BVkFUQVJTIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiaGFzSm9pbmVkIiwiaWQiLCJndWlsZFBvc2l0aW9ucyIsImluY2x1ZGVzIiwic2VhcmNoIiwidGVybSIsImNhdGVnb3J5IiwiZnJvbSIsIlByb21pc2UiLCJyZXNvbHZlIiwicXVlcmllcyIsInB1c2giLCJyZXBsYWNlIiwicXVlcnkiLCJqb2luIiwiJCIsImFqYXgiLCJtZXRob2QiLCJ1cmwiLCJzdWNjZXNzIiwiZGF0YSIsIm5leHQiLCJzaXplIiwic2VydmVycyIsInJlc3VsdHMiLCJ0b3RhbCIsImVycm9yIiwibmF0aXZlIiwiYWNjZXB0SW52aXRlIiwiaGVhZGVycyIsIl9hY2Nlc3NUb2tlbiIsImNyb3NzRG9tYWluIiwieGhyRmllbGRzIiwid2l0aENyZWRlbnRpYWxzIiwiY2hlY2tDb25uZWN0aW9uIiwiYWNjZXNzX3Rva2VuIiwiY29ubmVjdCIsImpvaW5XaW5kb3ciLCJ3aW5kb3dPcHRpb25zIiwid2ViQ29udGVudHMiLCJvbiIsImV2ZW50IiwibmF2VXJsIiwiY2xvc2UiLCJsb2FkVVJMIiwid2lkdGgiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzaG93IiwicmVzaXphYmxlIiwibWF4aW1pemFibGUiLCJtaW5pbWl6YWJsZSIsImFsd2F5c09uVG9wIiwiZnJhbWUiLCJjZW50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QUFpQkgsT0FsQkQsQ0FtQkEsT0FBT2lCLEtBQVAsRUFBYztBQUNWakIsZUFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osS0F2Qk0sQ0FBUDtBQXdCSDs7QUFFRCxTQUFPMkIsT0FBUCxHQUFpQjtBQUNiLFdBQU8sSUFBSTVCLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzFCLFlBQU00QixVQUFVLEdBQUcsSUFBSWpELGFBQUosQ0FBa0IsS0FBS2tELGFBQXZCLENBQW5CO0FBQ0EsWUFBTXBCLEdBQUcsR0FBSSwwRUFBeUUsS0FBS3hCLGVBQWdCLEVBQTNHO0FBQ0EyQyxnQkFBVSxDQUFDRSxXQUFYLENBQXVCQyxFQUF2QixDQUEwQixjQUExQixFQUEwQyxDQUFDQyxLQUFELEVBQVFDLE1BQVIsS0FBbUI7QUFDekQsWUFBSUEsTUFBTSxJQUFJLEtBQUtoRCxlQUFuQixFQUFvQztBQUNwQzJDLGtCQUFVLENBQUNNLEtBQVg7QUFDQWxDLGVBQU87QUFDVixPQUpEO0FBS0E0QixnQkFBVSxDQUFDTyxPQUFYLENBQW1CMUIsR0FBbkI7QUFDSCxLQVRNLENBQVA7QUFVSDs7QUFFRCxhQUFXb0IsYUFBWCxHQUEyQjtBQUN2QixXQUFPO0FBQ0hPLFdBQUssRUFBRSxHQURKO0FBRUhDLFlBQU0sRUFBRSxHQUZMO0FBR0hDLHFCQUFlLEVBQUUsU0FIZDtBQUlIQyxVQUFJLEVBQUUsSUFKSDtBQUtIQyxlQUFTLEVBQUUsSUFMUjtBQU1IQyxpQkFBVyxFQUFFLEtBTlY7QUFPSEMsaUJBQVcsRUFBRSxLQVBWO0FBUUhDLGlCQUFXLEVBQUUsSUFSVjtBQVNIQyxXQUFLLEVBQUUsS0FUSjtBQVVIQyxZQUFNLEVBQUUsSUFWTDtBQVdIQyxvQkFBYyxFQUFFO0FBQ1pDLHVCQUFlLEVBQUU7QUFETDtBQVhiLEtBQVA7QUFlSDs7QUFwSHdDIiwiZmlsZSI6Ii4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBTb3J0ZWRHdWlsZFN0b3JlID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFNvcnRlZEd1aWxkc1wiKTtcclxuY29uc3QgQXZhdGFyRGVmYXVsdHMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0VXNlckF2YXRhclVSTFwiLCBcIkRFRkFVTFRfQVZBVEFSU1wiKTtcclxuY29uc3QgSW52aXRlQWN0aW9ucyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJhY2NlcHRJbnZpdGVcIik7XHJcblxyXG5jb25zdCBCcm93c2VyV2luZG93ID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5Ccm93c2VyV2luZG93O1xyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1YmxpY1NlcnZlcnNDb25uZWN0aW9uIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0IGVuZFBvaW50KCkge3JldHVybiBcImh0dHBzOi8vc2VhcmNoLmRpc2NvcmRzZXJ2ZXJzLmNvbVwiO31cclxuICAgIHN0YXRpYyBnZXQgam9pbkVuZFBvaW50KCkge3JldHVybiBcImh0dHBzOi8vai5kaXNjb3Jkc2VydmVycy5jb21cIjt9XHJcbiAgICBzdGF0aWMgZ2V0IGNvbm5lY3RFbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL2F1dGguZGlzY29yZHNlcnZlcnMuY29tL2luZm9cIjt9XHJcblxyXG4gICAgc3RhdGljIGdldERlZmF1bHRBdmF0YXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIEF2YXRhckRlZmF1bHRzLkRFRkFVTFRfQVZBVEFSU1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA1KV07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGhhc0pvaW5lZChpZCkge1xyXG4gICAgICAgIHJldHVybiBTb3J0ZWRHdWlsZFN0b3JlLmd1aWxkUG9zaXRpb25zLmluY2x1ZGVzKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2VhcmNoKHt0ZXJtID0gXCJcIiwgY2F0ZWdvcnkgPSBcIlwiLCBmcm9tID0gMH0gPSB7fSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcmllcyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoY2F0ZWdvcnkpIHF1ZXJpZXMucHVzaChgY2F0ZWdvcnk9JHtjYXRlZ29yeS5yZXBsYWNlKC8gL2csIFwiJTIwXCIpfWApO1xyXG4gICAgICAgICAgICBpZiAodGVybSkgcXVlcmllcy5wdXNoKGB0ZXJtPSR7dGVybS5yZXBsYWNlKC8gL2csIFwiJTIwXCIpfWApO1xyXG4gICAgICAgICAgICBpZiAoZnJvbSkgcXVlcmllcy5wdXNoKGBmcm9tPSR7ZnJvbX1gKTtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBgPyR7cXVlcmllcy5qb2luKFwiJlwiKX1gO1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmVuZFBvaW50fSR7cXVlcnl9YCxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBkYXRhLnNpemUgKyBkYXRhLmZyb207XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnM6IGRhdGEucmVzdWx0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogZGF0YS5zaXplLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBkYXRhLmZyb20sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBuZXh0ID49IGRhdGEudG90YWwgPyBudWxsIDogbmV4dFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiByZXNvbHZlKG51bGwpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgaWYgKG5hdGl2ZSkgcmV0dXJuIEludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlKGlkKSwgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIHVybDogYCR7dGhpcy5qb2luRW5kUG9pbnR9LyR7aWR9YCxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb247XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO1wiICxcclxuICAgICAgICAgICAgICAgICAgICBcIngtZGlzY29yZC10b2tlblwiOiB0aGlzLl9hY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNyb3NzRG9tYWluOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4gcmVzb2x2ZSh0cnVlKSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiByZXNvbHZlKGZhbHNlKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5jb25uZWN0RW5kUG9pbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb247XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NEb21haW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gZGF0YS5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4gcmVzb2x2ZShmYWxzZSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29ubmVjdCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5XaW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyh0aGlzLndpbmRvd09wdGlvbnMpO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9jb25uZWN0P3Njb3Blcz1ndWlsZHMuam9pbiZwcmV2aW91c1VybD0ke3RoaXMuY29ubmVjdEVuZFBvaW50fWA7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cud2ViQ29udGVudHMub24oXCJkaWQtbmF2aWdhdGVcIiwgKGV2ZW50LCBuYXZVcmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuYXZVcmwgIT0gdGhpcy5jb25uZWN0RW5kUG9pbnQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGpvaW5XaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cubG9hZFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgd2luZG93T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3aWR0aDogNTAwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDU1MCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyODJiMzBcIixcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1pbmltaXphYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgYWx3YXlzT25Ub3A6IHRydWUsXHJcbiAgICAgICAgICAgIGZyYW1lOiBmYWxzZSxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICB3ZWJQcmVmZXJlbmNlczoge1xyXG4gICAgICAgICAgICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/publicservers/manager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar();\n this.state = {\n imageError: false,\n joined: this.props.joined\n };\n this.join = this.join.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n render() {\n const {\n server\n } = this.props;\n const buttonText = typeof this.state.joined == \"string\" ? \"Joining...\" : this.state.joined ? \"Joined\" : \"Join\";\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: buttonClass,\n onClick: this.join\n }, buttonText))));\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.defaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n if (this.state.joined) return;\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvY2FyZC5qc3g/NzYwMiJdLCJuYW1lcyI6WyJTZXJ2ZXJDYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2VydmVyIiwiaWNvblVybCIsImRlZmF1bHRBdmF0YXIiLCJzdGF0ZSIsImltYWdlRXJyb3IiLCJqb2luZWQiLCJqb2luIiwiYmluZCIsImhhbmRsZUVycm9yIiwicmVuZGVyIiwiYnV0dG9uVGV4dCIsImJ1dHRvbkNsYXNzIiwicGlubmVkIiwibmFtZSIsIm1lbWJlcnMiLCJkZXNjcmlwdGlvbiIsImNhdGVnb3JpZXMiLCJzZXRTdGF0ZSIsImRpZEpvaW4iLCJpZGVudGlmaWVyIiwibmF0aXZlam9pbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyw2Q0FBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsUUFBSSxDQUFDLEtBQUtBLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQkMsT0FBdkIsRUFBZ0MsS0FBS0YsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUFsQixHQUE0QixLQUFLRixLQUFMLENBQVdHLGFBQVgsRUFBNUI7QUFDaEMsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGdCQUFVLEVBQUUsS0FESDtBQUVUQyxZQUFNLEVBQUUsS0FBS04sS0FBTCxDQUFXTTtBQUZWLEtBQWI7QUFJQSxTQUFLQyxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVQyxJQUFWLENBQWUsSUFBZixDQUFaO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixLQUFLQSxXQUFMLENBQWlCRCxJQUFqQixDQUFzQixJQUF0QixDQUFuQjtBQUNIOztBQUVERSxRQUFNLEdBQUc7QUFDTCxVQUFNO0FBQUNUO0FBQUQsUUFBVyxLQUFLRCxLQUF0QjtBQUNBLFVBQU1XLFVBQVUsR0FBRyxPQUFPLEtBQUtQLEtBQUwsQ0FBV0UsTUFBbEIsSUFBNkIsUUFBN0IsR0FBd0MsWUFBeEMsR0FBdUQsS0FBS0YsS0FBTCxDQUFXRSxNQUFYLEdBQW9CLFFBQXBCLEdBQStCLE1BQXpHO0FBQ0EsVUFBTU0sV0FBVyxHQUFJLFlBQVcsS0FBS1IsS0FBTCxDQUFXRSxNQUFYLElBQXFCLElBQXJCLEdBQTRCLG9CQUE1QixHQUFtRCxFQUFHLEVBQXRGO0FBQ0EsV0FBTztBQUFLLGVBQVMsRUFBRyxpQkFBZ0JMLE1BQU0sQ0FBQ1ksTUFBUCxHQUFnQix3QkFBaEIsR0FBMkMsRUFBRztBQUEvRSxPQUNDO0FBQUssZUFBUyxFQUFDLGlCQUFmO0FBQWlDLFNBQUcsRUFBRVosTUFBTSxDQUFDQyxPQUE3QztBQUFzRCxhQUFPLEVBQUUsS0FBS087QUFBcEUsTUFERCxPQUVDO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FDSTtBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0k7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUFnQ1IsTUFBTSxDQUFDYSxJQUF2QyxDQURKLEVBRUk7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUF3Q2IsTUFBTSxDQUFDYyxPQUEvQyxhQUZKLENBREosRUFLSTtBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFvRGQsTUFBTSxDQUFDZSxXQUEzRCxDQURKLENBTEosRUFRSTtBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFpQ2YsTUFBTSxDQUFDZ0IsVUFBUCxDQUFrQlYsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBakMsQ0FESixFQUVJO0FBQVEsVUFBSSxFQUFDLFFBQWI7QUFBc0IsZUFBUyxFQUFFSyxXQUFqQztBQUE4QyxhQUFPLEVBQUUsS0FBS0w7QUFBNUQsT0FBbUVJLFVBQW5FLENBRkosQ0FSSixDQUZELENBQVA7QUFnQkg7O0FBRURGLGFBQVcsR0FBRztBQUNWLFNBQUtULEtBQUwsQ0FBV0MsTUFBWCxDQUFrQkMsT0FBbEIsR0FBNEIsS0FBS0YsS0FBTCxDQUFXRyxhQUFYLEVBQTVCO0FBQ0EsU0FBS2UsUUFBTCxDQUFjO0FBQUNiLGdCQUFVLEVBQUU7QUFBYixLQUFkO0FBQ0g7O0FBRUQsUUFBTUUsSUFBTixHQUFhO0FBQ1QsUUFBSSxLQUFLSCxLQUFMLENBQVdFLE1BQWYsRUFBdUI7QUFDdkIsU0FBS1ksUUFBTCxDQUFjO0FBQUNaLFlBQU0sRUFBRTtBQUFULEtBQWQ7QUFDQSxVQUFNYSxPQUFPLEdBQUcsTUFBTSxLQUFLbkIsS0FBTCxDQUFXTyxJQUFYLENBQWdCLEtBQUtQLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQm1CLFVBQWxDLEVBQThDLEtBQUtwQixLQUFMLENBQVdDLE1BQVgsQ0FBa0JvQixVQUFoRSxDQUF0QjtBQUNBLFNBQUtILFFBQUwsQ0FBYztBQUFDWixZQUFNLEVBQUVhO0FBQVQsS0FBZDtBQUNIOztBQTVDbUQiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9jYXJkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXJ2ZXJDYXJkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCkgdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCA9IHRoaXMucHJvcHMuZGVmYXVsdEF2YXRhcigpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIGltYWdlRXJyb3I6IGZhbHNlLFxyXG4gICAgICAgICAgICBqb2luZWQ6IHRoaXMucHJvcHMuam9pbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmpvaW4gPSB0aGlzLmpvaW4uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yID0gdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7c2VydmVyfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uVGV4dCA9IHR5cGVvZih0aGlzLnN0YXRlLmpvaW5lZCkgPT0gXCJzdHJpbmdcIiA/IFwiSm9pbmluZy4uLlwiIDogdGhpcy5zdGF0ZS5qb2luZWQgPyBcIkpvaW5lZFwiIDogXCJKb2luXCI7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uQ2xhc3MgPSBgYmQtYnV0dG9uJHt0aGlzLnN0YXRlLmpvaW5lZCA9PSB0cnVlID8gXCIgYmQtYnV0dG9uLXN1Y2Nlc3NcIiA6IFwiXCJ9YDtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2BiZC1zZXJ2ZXItY2FyZCR7c2VydmVyLnBpbm5lZCA/IFwiIGJkLXNlcnZlci1jYXJkLXBpbm5lZFwiIDogXCJcIn1gfT5cclxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWltYWdlXCIgc3JjPXtzZXJ2ZXIuaWNvblVybH0gb25FcnJvcj17dGhpcy5oYW5kbGVFcnJvcn0gLz4sXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlcnZlci1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItbmFtZVwiPntzZXJ2ZXIubmFtZX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3NOYW1lPVwiYmQtc2VydmVyLW1lbWJlci1jb3VudFwiPntzZXJ2ZXIubWVtYmVyc30gTWVtYmVyczwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2Nyb2xsZXItd3JhcCBiZC1zZXJ2ZXItZGVzY3JpcHRpb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2Nyb2xsZXIgYmQtc2VydmVyLWRlc2NyaXB0aW9uXCI+e3NlcnZlci5kZXNjcmlwdGlvbn08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlcnZlci1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItdGFnc1wiPntzZXJ2ZXIuY2F0ZWdvcmllcy5qb2luKFwiLCBcIil9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT17YnV0dG9uQ2xhc3N9IG9uQ2xpY2s9e3RoaXMuam9pbn0+e2J1dHRvblRleHR9PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUVycm9yKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMuc2VydmVyLmljb25VcmwgPSB0aGlzLnByb3BzLmRlZmF1bHRBdmF0YXIoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZUVycm9yOiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgam9pbigpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5qb2luZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtqb2luZWQ6IFwiam9pbmluZ1wifSk7XHJcbiAgICAgICAgY29uc3QgZGlkSm9pbiA9IGF3YWl0IHRoaXMucHJvcHMuam9pbih0aGlzLnByb3BzLnNlcnZlci5pZGVudGlmaWVyLCB0aGlzLnByb3BzLnNlcnZlci5uYXRpdmVqb2luKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtqb2luZWQ6IGRpZEpvaW59KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n"); /***/ }), @@ -791,7 +791,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.js\");\n/* harmony import */ var _manager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./manager */ \"./src/ui/publicservers/manager.js\");\n\n\n\n\nconst SettingsView = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await _manager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await _manager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await _manager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n get searchBox() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onKeyDown: this.searchKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: \"Search...\",\n value: this.state.query,\n maxLength: \"50\"\n });\n }\n\n get title() {\n if (!this.state.user) return \"Not connected to DiscordServers.com!\";\n if (this.state.loading) return \"Loading...\";\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = `Showing ${start}-${end} of ${total} results in ${this.state.category}`;\n if (this.state.query) title += ` for ${this.state.query}`;\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: \"Connect\",\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server\n });\n });\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? \"Loading\" : \"Load More\");\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, `Connected as: `, `${user.username}#${user.discriminator}`), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, \"Reconnect\"));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: \"Search\"\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: \"Categories\"\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"Discordservers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWVudS5qcz85YWNkIl0sIm5hbWVzIjpbIlNldHRpbmdzVmlldyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlB1YmxpY1NlcnZlcnMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNhdGVnb3J5QnV0dG9ucyIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsImNhdGVnb3J5IiwicXVlcnkiLCJsb2FkaW5nIiwidXNlciIsInJlc3VsdHMiLCJzZXJ2ZXJzIiwic2l6ZSIsImZyb20iLCJ0b3RhbCIsIm5leHQiLCJjaGFuZ2VDYXRlZ29yeSIsImJpbmQiLCJzZWFyY2hLZXlEb3duIiwiY29ubmVjdCIsImxvYWROZXh0UGFnZSIsImNvbXBvbmVudERpZE1vdW50IiwiY2hlY2tDb25uZWN0aW9uIiwidXNlckRhdGEiLCJNYW5hZ2VyIiwic2V0U3RhdGUiLCJzZWFyY2giLCJlIiwid2hpY2giLCJ0YXJnZXQiLCJ2YWx1ZSIsInRlcm0iLCJpZCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2VhcmNoQm94IiwiY3JlYXRlRWxlbWVudCIsIm9uS2V5RG93biIsInR5cGUiLCJjbGFzc05hbWUiLCJwbGFjZWhvbGRlciIsIm1heExlbmd0aCIsInRpdGxlIiwic3RhcnQiLCJlbmQiLCJjb250ZW50IiwiY29ubmVjdEJ1dHRvbiIsIm9uQ2xpY2siLCJwaW5uZWQiLCJiZFNlcnZlciIsIm1hcCIsInNlcnZlciIsIlNlcnZlckNhcmQiLCJrZXkiLCJpZGVudGlmaWVyIiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJidXR0b24iLCJuZXh0QnV0dG9uIiwibGVuZ3RoIiwiY29ubmVjdGlvbiIsInVzZXJuYW1lIiwiZGlzY3JpbWluYXRvciIsIm5hbWUiLCJvbmxpbmUiLCJtZW1iZXJzIiwiY2F0ZWdvcmllcyIsImRlc2NyaXB0aW9uIiwiaWNvblVybCIsIm5hdGl2ZWpvaW4iLCJpbnZpdGVfY29kZSIsInJlbmRlciIsInNlY3Rpb24iLCJsYWJlbCIsImVsZW1lbnQiLCJvbkNsb3NlIiwiY2xvc2UiLCJvblNldFNlY3Rpb24iLCJzZWN0aW9ucyIsImhyZWYiLCJ0aGVtZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxZQUFZLEdBQUdDLHNEQUFjLENBQUNDLGdCQUFmLENBQWdDLGNBQWhDLENBQXJCO0FBRWUsTUFBTUMsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFFdkQsTUFBSUMsZUFBSixHQUFzQjtBQUNsQixXQUFPLENBQUMsS0FBRCxFQUFRLFdBQVIsRUFBcUIsV0FBckIsRUFBa0MsZ0JBQWxDLEVBQW9ELFlBQXBELEVBQWtFLFdBQWxFLEVBQStFLGdCQUEvRSxFQUFpRyxlQUFqRyxFQUFrSCxrQkFBbEgsRUFBc0ksT0FBdEksRUFBK0ksV0FBL0ksRUFBNEosVUFBNUosRUFBd0ssYUFBeEssRUFBdUwsT0FBdkwsQ0FBUDtBQUNIOztBQUVEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsY0FBUSxFQUFFLEtBREQ7QUFFVEMsV0FBSyxFQUFFLEVBRkU7QUFHVEMsYUFBTyxFQUFFLElBSEE7QUFJVEMsVUFBSSxFQUFFLElBSkc7QUFLVEMsYUFBTyxFQUFFO0FBQ0xDLGVBQU8sRUFBRSxFQURKO0FBRUxDLFlBQUksRUFBRSxDQUZEO0FBR0xDLFlBQUksRUFBRSxDQUhEO0FBSUxDLGFBQUssRUFBRSxDQUpGO0FBS0xDLFlBQUksRUFBRTtBQUxEO0FBTEEsS0FBYjtBQWNBLFNBQUtDLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQkMsSUFBcEIsQ0FBeUIsSUFBekIsQ0FBdEI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLEtBQUtBLGFBQUwsQ0FBbUJELElBQW5CLENBQXdCLElBQXhCLENBQXJCO0FBQ0EsU0FBS0Us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OlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuLi9zZXR0aW5ncy90aXRsZVwiO1xyXG5pbXBvcnQgU2VydmVyQ2FyZCBmcm9tIFwiLi9jYXJkXCI7XHJcbmltcG9ydCBNYW5hZ2VyIGZyb20gXCIuL21hbmFnZXJcIjtcclxuXHJcbmNvbnN0IFNldHRpbmdzVmlldyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJTZXR0aW5nc1ZpZXdcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBnZXQgY2F0ZWdvcnlCdXR0b25zKCkge1xyXG4gICAgICAgIHJldHVybiBbXCJBbGxcIiwgXCJGUFMgR2FtZXNcIiwgXCJNTU8gR2FtZXNcIiwgXCJTdHJhdGVneSBHYW1lc1wiLCBcIk1PQkEgR2FtZXNcIiwgXCJSUEcgR2FtZXNcIiwgXCJUYWJsZXRvcCBHYW1lc1wiLCBcIlNhbmRib3ggR2FtZXNcIiwgXCJTaW11bGF0aW9uIEdhbWVzXCIsIFwiTXVzaWNcIiwgXCJDb21tdW5pdHlcIiwgXCJMYW5ndWFnZVwiLCBcIlByb2dyYW1taW5nXCIsIFwiT3RoZXJcIl07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IFwiQWxsXCIsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiBcIlwiLFxyXG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICByZXN1bHRzOiB7XHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJzOiBbXSxcclxuICAgICAgICAgICAgICAgIHNpemU6IDAsXHJcbiAgICAgICAgICAgICAgICBmcm9tOiAwLFxyXG4gICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICBuZXh0OiBudWxsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNoYW5nZUNhdGVnb3J5ID0gdGhpcy5jaGFuZ2VDYXRlZ29yeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5RG93biA9IHRoaXMuc2VhcmNoS2V5RG93bi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdCA9IHRoaXMuY29ubmVjdC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlID0gdGhpcy5sb2FkTmV4dFBhZ2UuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IGF3YWl0IE1hbmFnZXIuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgaWYgKCF1c2VyRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7bG9hZGluZzogdHJ1ZSwgdXNlcjogbnVsbH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHt1c2VyOiB1c2VyRGF0YX0pO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY29ubmVjdCgpIHtcclxuICAgICAgICBhd2FpdCBNYW5hZ2VyLmNvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaEtleURvd24oZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcgfHwgZS53aGljaCAhPT0gMTMpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNlYXJjaChlLnRhcmdldC52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoKHRlcm0gPSBcIlwiLCBmcm9tID0gMCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiB0ZXJtLCBsb2FkaW5nOiB0cnVlfSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IE1hbmFnZXIuc2VhcmNoKHt0ZXJtLCBjYXRlZ29yeTogdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiID8gXCJcIiA6IHRoaXMuc3RhdGUuY2F0ZWdvcnksIGZyb219KTtcclxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoe3Jlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiBmYWxzZSwgcmVzdWx0c30pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoYW5nZUNhdGVnb3J5KGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGhpcy5zZXRTdGF0ZSh7Y2F0ZWdvcnk6IGlkfSwgcmVzb2x2ZSkpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZE5leHRQYWdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNlYXJjaCh0aGlzLnN0YXRlLnF1ZXJ5LCB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlYXJjaEJveCgpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtvbktleURvd246IHRoaXMuc2VhcmNoS2V5RG93biwgdHlwZTogXCJ0ZXh0XCIsIGNsYXNzTmFtZTogXCJiZC1zZWFyY2hcIiwgcGxhY2Vob2xkZXI6IFwiU2VhcmNoLi4uXCIsIHZhbHVlOiB0aGlzLnN0YXRlLnF1ZXJ5LCBtYXhMZW5ndGg6IFwiNTBcIn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0aXRsZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUudXNlcikgcmV0dXJuIFwiTm90IGNvbm5lY3RlZCB0byBEaXNjb3JkU2VydmVycy5jb20hXCI7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuIFwiTG9hZGluZy4uLlwiO1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGF0ZS5yZXN1bHRzLmZyb20gKyAxO1xyXG4gICAgICAgIGNvbnN0IHRvdGFsID0gdGhpcy5zdGF0ZS5yZXN1bHRzLnRvdGFsO1xyXG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5zdGF0ZS5yZXN1bHRzLm5leHQgOiB0b3RhbDtcclxuICAgICAgICBsZXQgdGl0bGUgPSBgU2hvd2luZyAke3N0YXJ0fS0ke2VuZH0gb2YgJHt0b3RhbH0gcmVzdWx0cyBpbiAke3RoaXMuc3RhdGUuY2F0ZWdvcnl9YDtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkgdGl0bGUgKz0gYCBmb3IgJHt0aGlzLnN0YXRlLnF1ZXJ5fWA7XHJcbiAgICAgICAgcmV0dXJuIHRpdGxlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3RCdXR0b24gPSB0aGlzLnN0YXRlLnVzZXIgPyBudWxsIDoge3RpdGxlOiBcIkNvbm5lY3RcIiwgb25DbGljazogdGhpcy5jb25uZWN0fTtcclxuICAgICAgICBjb25zdCBwaW5uZWQgPSB0aGlzLnN0YXRlLmNhdGVnb3J5ID09IFwiQWxsXCIgfHwgIXRoaXMuc3RhdGUudXNlciA/IHRoaXMuYmRTZXJ2ZXIgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNlcnZlcnMgPSB0aGlzLnN0YXRlLnJlc3VsdHMuc2VydmVycy5tYXAoKHNlcnZlcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXJ2ZXJDYXJkLCB7a2V5OiBzZXJ2ZXIuaWRlbnRpZmllciwgc2VydmVyOiBzZXJ2ZXJ9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMudGl0bGUsIGJ1dHRvbjogY29ubmVjdEJ1dHRvbn0pLFxyXG4gICAgICAgICAgICBwaW5uZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcnMsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5uZXh0QnV0dG9uIDogbnVsbCxcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuZXh0QnV0dG9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1uZXh0XCIsIG9uQ2xpY2s6IHRoaXMubG9hZE5leHRQYWdlfSwgdGhpcy5zdGF0ZS5sb2FkaW5nID8gXCJMb2FkaW5nXCIgOiBcIkxvYWQgTW9yZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB7dXNlcn0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGlmICghdXNlcikgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0pO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtpZDogXCJiZC1jb25uZWN0aW9uXCJ9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmQtZm9vdG5vdGVcIn0sIGBDb25uZWN0ZWQgYXM6IGAsIGAke3VzZXIudXNlcm5hbWV9IyR7dXNlci5kaXNjcmltaW5hdG9yfWApLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1yZWNvbm5lY3RcIiwgb25DbGljazogdGhpcy5jb25uZWN0fSwgXCJSZWNvbm5lY3RcIilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBiZFNlcnZlcigpIHtcclxuICAgICAgICBjb25zdCBzZXJ2ZXIgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyRGlzY29yZFwiLFxyXG4gICAgICAgICAgICBvbmxpbmU6IFwiNzUwMCtcIixcclxuICAgICAgICAgICAgbWVtYmVyczogXCIyMDAwMCtcIixcclxuICAgICAgICAgICAgY2F0ZWdvcmllczogW1wiY29tbXVuaXR5XCIsIFwicHJvZ3JhbW1pbmdcIiwgXCJzdXBwb3J0XCJdLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPZmZpY2lhbCBCZXR0ZXJEaXNjb3JkIHNlcnZlciBmb3IgcGx1Z2lucywgdGhlbWVzLCBzdXBwb3J0LCBldGNcIixcclxuICAgICAgICAgICAgaWRlbnRpZmllcjogXCI4NjAwNDc0NDk2NjkxNDA0OFwiLFxyXG4gICAgICAgICAgICBpY29uVXJsOiBcImh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2ljb25zLzg2MDA0NzQ0OTY2OTE0MDQ4LzI5MmU3ZjZiZmZmMmI3MWRmZDEzZTUwOGE4NTlhZWRkLndlYnBcIixcclxuICAgICAgICAgICAgbmF0aXZlam9pbjogdHJ1ZSxcclxuICAgICAgICAgICAgaW52aXRlX2NvZGU6IFwiMFRtZm81WmJPUkNScWJBZFwiLFxyXG4gICAgICAgICAgICBwaW5uZWQ6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNlcnZlckNhcmQsIHtzZXJ2ZXI6IHNlcnZlciwgcGlubmVkOiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNhdGVnb3J5QnV0dG9ucy5tYXAobmFtZSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgc2VjdGlvbjogbmFtZSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogKCkgPT4gdGhpcy5jb250ZW50XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc1ZpZXcsIHtcclxuICAgICAgICAgICAgb25DbG9zZTogdGhpcy5wcm9wcy5jbG9zZSxcclxuICAgICAgICAgICAgb25TZXRTZWN0aW9uOiB0aGlzLmNoYW5nZUNhdGVnb3J5LFxyXG4gICAgICAgICAgICBzZWN0aW9uOiB0aGlzLnN0YXRlLmNhdGVnb3J5LFxyXG4gICAgICAgICAgICBzZWN0aW9uczogW1xyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBcIlNlYXJjaFwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLnNlYXJjaEJveH0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJIRUFERVJcIiwgbGFiZWw6IFwiQ2F0ZWdvcmllc1wifSxcclxuICAgICAgICAgICAgICAgIC4uLmNhdGVnb3JpZXMsXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJESVZJREVSXCJ9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCB7aHJlZjogXCJodHRwczovL2Rpc2NvcmRzZXJ2ZXJzLmNvbVwiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LCBcIkRpc2NvcmRzZXJ2ZXJzLmNvbVwiKX0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJESVZJREVSXCJ9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiQ1VTVE9NXCIsIGVsZW1lbnQ6ICgpID0+IHRoaXMuY29ubmVjdGlvbn1cclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgdGhlbWU6IFwiZGFya1wiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.jsx\");\n\n\n\nconst SettingsView = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await this.props.connection.checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await this.props.connection.connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await this.props.connection.search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n async join(id, native = false) {\n return await this.props.connection.join(id, native);\n }\n\n get searchBox() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onKeyDown: this.searchKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: \"Search...\",\n maxLength: \"50\"\n });\n }\n\n get title() {\n if (!this.state.user) return \"Not connected to DiscordServers.com!\";\n if (this.state.loading) return \"Loading...\";\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = `Showing ${start}-${end} of ${total} results in ${this.state.category}`;\n if (this.state.query) title += ` for ${this.state.query}`;\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: \"Connect\",\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n joined: this.props.connection.hasJoined(server.identifier),\n defaultAvatar: this.props.connection.getDefaultAvatar\n });\n });\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? \"Loading\" : \"Load More\");\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, `Connected as: `, `${user.username}#${user.discriminator}`), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, \"Reconnect\"));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n joined: this.props.connection.hasJoined(server.identifier),\n defaultAvatar: this.props.connection.getDefaultAvatar\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: \"Search\"\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: \"Categories\"\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"Discordservers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWVudS5qcz85YWNkIl0sIm5hbWVzIjpbIlNldHRpbmdzVmlldyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlB1YmxpY1NlcnZlcnMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNhdGVnb3J5QnV0dG9ucyIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsImNhdGVnb3J5IiwicXVlcnkiLCJsb2FkaW5nIiwidXNlciIsInJlc3VsdHMiLCJzZXJ2ZXJzIiwic2l6ZSIsImZyb20iLCJ0b3RhbCIsIm5leHQiLCJjaGFuZ2VDYXRlZ29yeSIsImJpbmQiLCJzZWFyY2hLZXlEb3duIiwiY29ubmVjdCIsImxvYWROZXh0UGFnZSIsImNvbXBvbmVudERpZE1vdW50IiwiY2hlY2tDb25uZWN0aW9uIiwidXNlckRhdGEiLCJjb25uZWN0aW9uIiwic2V0U3RhdGUiLCJzZWFyY2giLCJlIiwid2hpY2giLCJ0YXJnZXQiLCJ2YWx1ZSIsInRlcm0iLCJpZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiam9pbiIsIm5hdGl2ZSIsInNlYXJjaEJveCIsImNyZWF0ZUVsZW1lbnQiLCJvbktleURvd24iLCJ0eXBlIiwiY2xhc3NOYW1lIiwicGxhY2Vob2xkZXIiLCJtYXhMZW5ndGgiLCJ0aXRsZSIsInN0YXJ0IiwiZW5kIiwiY29udGVudCIsImNvbm5lY3RCdXR0b24iLCJvbkNsaWNrIiwicGlubmVkIiwiYmRTZXJ2ZXIiLCJtYXAiLCJzZXJ2ZXIiLCJTZXJ2ZXJDYXJkIiwia2V5IiwiaWRlbnRpZmllciIsImpvaW5lZCIsImhhc0pvaW5lZCIsImRlZmF1bHRBdmF0YXIiLCJnZXREZWZhdWx0QXZhdGFyIiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJidXR0b24iLCJuZXh0QnV0dG9uIiwibGVuZ3RoIiwidXNlcm5hbWUiLCJkaXNjcmltaW5hdG9yIiwibmFtZSIsIm9ubGluZSIsIm1lbWJlcnMiLCJjYXRlZ29yaWVzIiwiZGVzY3JpcHRpb24iLCJpY29uVXJsIiwibmF0aXZlam9pbiIsImludml0ZV9jb2RlIiwicmVuZGVyIiwic2VjdGlvbiIsImxhYmVsIiwiZWxlbWVudCIsIm9uQ2xvc2UiLCJjbG9zZSIsIm9uU2V0U2VjdGlvbiIsInNlY3Rpb25zIiwiaHJlZiIsInRoZW1lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxjQUFoQyxDQUFyQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBRXZELE1BQUlDLGVBQUosR0FBc0I7QUFDbEIsV0FBTyxDQUFDLEtBQUQsRUFBUSxXQUFSLEVBQXFCLFdBQXJCLEVBQWtDLGdCQUFsQyxFQUFvRCxZQUFwRCxFQUFrRSxXQUFsRSxFQUErRSxnQkFBL0UsRUFBaUcsZUFBakcsRUFBa0gsa0JBQWxILEVBQXNJLE9BQXRJLEVBQStJLFdBQS9JLEVBQTRKLFVBQTVKLEVBQXdLLGFBQXhLLEVBQXVMLE9BQXZMLENBQVA7QUFDSDs7QUFFREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGNBQVEsRUFBRSxLQUREO0FBRVRDLFdBQUssRUFBRSxFQUZFO0FBR1RDLGFBQU8sRUFBRSxJQUhBO0FBSVRDLFVBQUksRUFBRSxJQUpHO0FBS1RDLGFBQU8sRUFBRTtBQUNMQyxlQUFPLEVBQUUsRUFESjtBQUVMQyxZQUFJLEVBQUUsQ0FGRDtBQUdMQyxZQUFJLEVBQUUsQ0FIRDtBQUlMQyxhQUFLLEVBQUUsQ0FKRjtBQUtMQyxZQUFJLEVBQUU7QUFMRDtBQUxBLEtBQWI7QUFjQSxTQUFLQyxjQUFMLEdBQXNCLEtBQUtBLGNBQUwsQ0FBb0JDLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQixL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QUUsTUFBTSxLQUFLMUM7QUFBeEMsT0FGTSxFQUdOO0FBQUN3QyxlQUFPLEVBQUUsUUFBVjtBQUFvQkMsYUFBSyxFQUFFO0FBQTNCLE9BSE0sRUFJTixHQUFHUCxVQUpHLEVBS047QUFBQ00sZUFBTyxFQUFFO0FBQVYsT0FMTSxFQU1OO0FBQUNBLGVBQU8sRUFBRSxRQUFWO0FBQW9CQyxhQUFLLEVBQUU5RSw2Q0FBSyxDQUFDc0MsYUFBTixDQUFvQixHQUFwQixFQUF5QjtBQUFDOEMsY0FBSSxFQUFFLDRCQUFQO0FBQXFDdkQsZ0JBQU0sRUFBRTtBQUE3QyxTQUF6QixFQUFpRixvQkFBakY7QUFBM0IsT0FOTSxFQU9OO0FBQUNnRCxlQUFPLEVBQUU7QUFBVixPQVBNLEVBUU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JFLGVBQU8sRUFBRSxNQUFNLEtBQUt2RDtBQUF4QyxPQVJNLENBSjJCO0FBY3JDNkQsV0FBSyxFQUFFO0FBZDhCLEtBQWxDLENBQVA7QUFnQkg7O0FBaktzRCIsImZpbGUiOiIuL3NyYy91aS9wdWJsaWNzZXJ2ZXJzL21lbnUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4uL3NldHRpbmdzL3RpdGxlXCI7XHJcbmltcG9ydCBTZXJ2ZXJDYXJkIGZyb20gXCIuL2NhcmRcIjtcclxuXHJcbmNvbnN0IFNldHRpbmdzVmlldyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJTZXR0aW5nc1ZpZXdcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBnZXQgY2F0ZWdvcnlCdXR0b25zKCkge1xyXG4gICAgICAgIHJldHVybiBbXCJBbGxcIiwgXCJGUFMgR2FtZXNcIiwgXCJNTU8gR2FtZXNcIiwgXCJTdHJhdGVneSBHYW1lc1wiLCBcIk1PQkEgR2FtZXNcIiwgXCJSUEcgR2FtZXNcIiwgXCJUYWJsZXRvcCBHYW1lc1wiLCBcIlNhbmRib3ggR2FtZXNcIiwgXCJTaW11bGF0aW9uIEdhbWVzXCIsIFwiTXVzaWNcIiwgXCJDb21tdW5pdHlcIiwgXCJMYW5ndWFnZVwiLCBcIlByb2dyYW1taW5nXCIsIFwiT3RoZXJcIl07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IFwiQWxsXCIsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiBcIlwiLFxyXG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICByZXN1bHRzOiB7XHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJzOiBbXSxcclxuICAgICAgICAgICAgICAgIHNpemU6IDAsXHJcbiAgICAgICAgICAgICAgICBmcm9tOiAwLFxyXG4gICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICBuZXh0OiBudWxsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNoYW5nZUNhdGVnb3J5ID0gdGhpcy5jaGFuZ2VDYXRlZ29yeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5RG93biA9IHRoaXMuc2VhcmNoS2V5RG93bi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdCA9IHRoaXMuY29ubmVjdC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlID0gdGhpcy5sb2FkTmV4dFBhZ2UuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IGF3YWl0IHRoaXMucHJvcHMuY29ubmVjdGlvbi5jaGVja0Nvbm5lY3Rpb24oKTtcclxuICAgICAgICBpZiAoIXVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiB0cnVlLCB1c2VyOiBudWxsfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3VzZXI6IHVzZXJEYXRhfSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvcHMuY29ubmVjdGlvbi5jb25uZWN0KCk7XHJcbiAgICAgICAgdGhpcy5jaGVja0Nvbm5lY3Rpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWFyY2hLZXlEb3duKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nIHx8IGUud2hpY2ggIT09IDEzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZWFyY2goZS50YXJnZXQudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNlYXJjaCh0ZXJtID0gXCJcIiwgZnJvbSA9IDApIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtxdWVyeTogdGVybSwgbG9hZGluZzogdHJ1ZX0pO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLnByb3BzLmNvbm5lY3Rpb24uc2VhcmNoKHt0ZXJtLCBjYXRlZ29yeTogdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiID8gXCJcIiA6IHRoaXMuc3RhdGUuY2F0ZWdvcnksIGZyb219KTtcclxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoe3Jlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiBmYWxzZSwgcmVzdWx0c30pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoYW5nZUNhdGVnb3J5KGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGhpcy5zZXRTdGF0ZSh7Y2F0ZWdvcnk6IGlkfSwgcmVzb2x2ZSkpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZE5leHRQYWdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNlYXJjaCh0aGlzLnN0YXRlLnF1ZXJ5LCB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgam9pbihpZCwgbmF0aXZlID0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9wcy5jb25uZWN0aW9uLmpvaW4oaWQsIG5hdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlYXJjaEJveCgpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtvbktleURvd246IHRoaXMuc2VhcmNoS2V5RG93biwgdHlwZTogXCJ0ZXh0XCIsIGNsYXNzTmFtZTogXCJiZC1zZWFyY2hcIiwgcGxhY2Vob2xkZXI6IFwiU2VhcmNoLi4uXCIsIG1heExlbmd0aDogXCI1MFwifSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRpdGxlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS51c2VyKSByZXR1cm4gXCJOb3QgY29ubmVjdGVkIHRvIERpc2NvcmRTZXJ2ZXJzLmNvbSFcIjtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm4gXCJMb2FkaW5nLi4uXCI7XHJcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXRlLnJlc3VsdHMuZnJvbSArIDE7XHJcbiAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLnN0YXRlLnJlc3VsdHMudG90YWw7XHJcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5zdGF0ZS5yZXN1bHRzLm5leHQgPyB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA6IHRvdGFsO1xyXG4gICAgICAgIGxldCB0aXRsZSA9IGBTaG93aW5nICR7c3RhcnR9LSR7ZW5kfSBvZiAke3RvdGFsfSByZXN1bHRzIGluICR7dGhpcy5zdGF0ZS5jYXRlZ29yeX1gO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnF1ZXJ5KSB0aXRsZSArPSBgIGZvciAke3RoaXMuc3RhdGUucXVlcnl9YDtcclxuICAgICAgICByZXR1cm4gdGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbnRlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgY29ubmVjdEJ1dHRvbiA9IHRoaXMuc3RhdGUudXNlciA/IG51bGwgOiB7dGl0bGU6IFwiQ29ubmVjdFwiLCBvbkNsaWNrOiB0aGlzLmNvbm5lY3R9O1xyXG4gICAgICAgIGNvbnN0IHBpbm5lZCA9IHRoaXMuc3RhdGUuY2F0ZWdvcnkgPT0gXCJBbGxcIiB8fCAhdGhpcy5zdGF0ZS51c2VyID8gdGhpcy5iZFNlcnZlciA6IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc2VydmVycyA9IHRoaXMuc3RhdGUucmVzdWx0cy5zZXJ2ZXJzLm1hcCgoc2VydmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNlcnZlckNhcmQsIHtrZXk6IHNlcnZlci5pZGVudGlmaWVyLCBzZXJ2ZXI6IHNlcnZlciwgam9pbmVkOiB0aGlzLnByb3BzLmNvbm5lY3Rpb24uaGFzSm9pbmVkKHNlcnZlci5pZGVudGlmaWVyKSwgZGVmYXVsdEF2YXRhcjogdGhpcy5wcm9wcy5jb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMudGl0bGUsIGJ1dHRvbjogY29ubmVjdEJ1dHRvbn0pLFxyXG4gICAgICAgICAgICBwaW5uZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcnMsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5uZXh0QnV0dG9uIDogbnVsbCxcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuZXh0QnV0dG9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1uZXh0XCIsIG9uQ2xpY2s6IHRoaXMubG9hZE5leHRQYWdlfSwgdGhpcy5zdGF0ZS5sb2FkaW5nID8gXCJMb2FkaW5nXCIgOiBcIkxvYWQgTW9yZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB7dXNlcn0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGlmICghdXNlcikgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0pO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtpZDogXCJiZC1jb25uZWN0aW9uXCJ9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmQtZm9vdG5vdGVcIn0sIGBDb25uZWN0ZWQgYXM6IGAsIGAke3VzZXIudXNlcm5hbWV9IyR7dXNlci5kaXNjcmltaW5hdG9yfWApLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1yZWNvbm5lY3RcIiwgb25DbGljazogdGhpcy5jb25uZWN0fSwgXCJSZWNvbm5lY3RcIilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBiZFNlcnZlcigpIHtcclxuICAgICAgICBjb25zdCBzZXJ2ZXIgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyRGlzY29yZFwiLFxyXG4gICAgICAgICAgICBvbmxpbmU6IFwiNzUwMCtcIixcclxuICAgICAgICAgICAgbWVtYmVyczogXCIyMDAwMCtcIixcclxuICAgICAgICAgICAgY2F0ZWdvcmllczogW1wiY29tbXVuaXR5XCIsIFwicHJvZ3JhbW1pbmdcIiwgXCJzdXBwb3J0XCJdLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPZmZpY2lhbCBCZXR0ZXJEaXNjb3JkIHNlcnZlciBmb3IgcGx1Z2lucywgdGhlbWVzLCBzdXBwb3J0LCBldGNcIixcclxuICAgICAgICAgICAgaWRlbnRpZmllcjogXCI4NjAwNDc0NDk2NjkxNDA0OFwiLFxyXG4gICAgICAgICAgICBpY29uVXJsOiBcImh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2ljb25zLzg2MDA0NzQ0OTY2OTE0MDQ4LzI5MmU3ZjZiZmZmMmI3MWRmZDEzZTUwOGE4NTlhZWRkLndlYnBcIixcclxuICAgICAgICAgICAgbmF0aXZlam9pbjogdHJ1ZSxcclxuICAgICAgICAgICAgaW52aXRlX2NvZGU6IFwiMFRtZm81WmJPUkNScWJBZFwiLFxyXG4gICAgICAgICAgICBwaW5uZWQ6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNlcnZlckNhcmQsIHtzZXJ2ZXI6IHNlcnZlciwgcGlubmVkOiB0cnVlLCBqb2luZWQ6IHRoaXMucHJvcHMuY29ubmVjdGlvbi5oYXNKb2luZWQoc2VydmVyLmlkZW50aWZpZXIpLCBkZWZhdWx0QXZhdGFyOiB0aGlzLnByb3BzLmNvbm5lY3Rpb24uZ2V0RGVmYXVsdEF2YXRhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5jYXRlZ29yeUJ1dHRvbnMubWFwKG5hbWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb246IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGVudFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NWaWV3LCB7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IHRoaXMucHJvcHMuY2xvc2UsXHJcbiAgICAgICAgICAgIG9uU2V0U2VjdGlvbjogdGhpcy5jaGFuZ2VDYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zdGF0ZS5jYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogXCJTZWFyY2hcIn0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5zZWFyY2hCb3h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBcIkNhdGVnb3JpZXNcIn0sXHJcbiAgICAgICAgICAgICAgICAuLi5jYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9kaXNjb3Jkc2VydmVycy5jb21cIiwgdGFyZ2V0OiBcIl9ibGFua1wifSwgXCJEaXNjb3Jkc2VydmVycy5jb21cIil9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbm5lY3Rpb259XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImRhcmtcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); /***/ }), @@ -839,7 +839,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PluginCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n// import {SettingsCookie, PluginCookie, Plugins} from \"data\";\n\n\n\nclass PluginCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onChange = this.onChange.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.state = {\n checked: this.props.enabled,\n //PluginManager.isEnabled(this.props.content.id),\n settingsOpen: false\n };\n this.hasSettings = typeof this.props.content.plugin.getSettingsPanel === \"function\";\n this.settingsPanel = \"\";\n this.panelRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.reload = this.reload.bind(this); // this.onReload = this.onReload.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.content = this.props.reload(this.props.content.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (this.state.settingsOpen) {\n if (this.settingsPanel instanceof Node) {\n this.panelRef.current.appendChild(this.settingsPanel);\n } // if (!SettingsCookie[\"fork-ps-3\"]) return;\n\n\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const panel = $(this.panelRef.current);\n const container = panel.parents(\".scroller-2FKFPG\");\n if (!isHidden(container[0], panel[0])) return;\n container.animate({\n scrollTop: panel.offset().top - container.offset().top + container.scrollTop() - 30\n }, 300);\n }\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n render() {\n const {\n content\n } = this.props;\n const name = this.getString(content.name);\n const author = this.getString(content.author);\n const description = this.getString(content.description);\n const version = this.getString(content.version);\n const website = content.website;\n const source = content.source;\n\n if (this.state.settingsOpen) {\n try {\n this.settingsPanel = content.plugin.getSettingsPanel();\n } catch (err) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Plugin Settings\", \"Unable to get settings panel for \" + content.name + \".\", err);\n }\n\n const props = {\n id: `plugin-settings-${name}`,\n className: \"plugin-settings\",\n ref: this.panelRef\n };\n if (typeof this.settingsPanel == \"string\") props.dangerouslySetInnerHTML = this.settingsPanel;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"li\", {\n className: \"settings-open ui-switch-item\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n style: {\n \"float\": \"right\",\n \"cursor\": \"pointer\"\n },\n onClick: () => {\n this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, this.settingsPanel instanceof modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component ? this.settingsPanel : null));\n }\n\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"li\", {\n \"data-name\": name,\n \"data-version\": version,\n \"className\": \"settings-closed ui-switch-item\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-header-title\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-name\"\n }, name), \" v\", modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-version\"\n }, version), \" by \", modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-author\"\n }, author)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-controls\"\n }, !modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"content\", \"autoReload\") && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\",\n onClick: this.reload\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"ui-switch-wrapper ui-flex-child\",\n style: {\n flex: \"0 0 auto\"\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n checked: this.state.checked,\n onChange: this.onChange,\n className: \"ui-switch-checkbox\",\n type: \"checkbox\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: this.state.checked ? \"ui-switch checked\" : \"ui-switch\"\n })))), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-description-wrap scroller-wrap fade\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-description scroller\"\n }, description)), (website || source || this.hasSettings) && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-footer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-links\"\n }, website && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bda-link bda-link-website\",\n href: website,\n target: \"_blank\"\n }, \"Website\"), website && source && \" | \", source && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bda-link bda-link-source\",\n href: source,\n target: \"_blank\"\n }, \"Source\")), this.hasSettings && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-plugin-settings\",\n disabled: !this.state.checked\n }, \"Settings\")));\n }\n\n onChange() {\n this.setState({\n checked: !this.state.checked\n }); // PluginManager.togglePlugin(this.props.content.id);\n\n this.props.onChange && this.props.onChange(this.props.content.id);\n }\n\n showSettings() {\n if (!this.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3BsdWdpbmNhcmQuanM/NzczZCJdLCJuYW1lcyI6WyJQbHVnaW5DYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwib25DaGFuZ2UiLCJiaW5kIiwic2hvd1NldHRpbmdzIiwic3RhdGUiLCJjaGVja2VkIiwiZW5hYmxlZCIsInNldHRpbmdzT3BlbiIsImhhc1NldHRpbmdzIiwiY29udGVudCIsInBsdWdpbiIsImdldFNldHRpbmdzUGFuZWwiLCJzZXR0aW5nc1BhbmVsIiwicGFuZWxSZWYiLCJjcmVhdGVSZWYiLCJyZWxvYWQiLCJpZCIsImZvcmNlVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiTm9kZSIsImN1cnJlbnQiLCJhcHBlbmRDaGlsZCIsImlzSGlkZGVuIiwiY29udGFpbmVyIiwiZWxlbWVudCIsImNUb3AiLCJzY3JvbGxUb3AiLCJjQm90dG9tIiwiY2xpZW50SGVpZ2h0IiwiZVRvcCIsIm9mZnNldFRvcCIsImVCb3R0b20iLCJwYW5lbCIsIiQiLCJwYXJlbnRzIiwiYW5pbWF0ZSIsIm9mZnNldCIsInRvcCIsImdldFN0cmluZyIsInZhbHVlIiwidG9TdHJpbmciLCJyZW5kZXIiLCJuYW1lIiwiYXV0aG9yIiwiZGVzY3JpcHRpb24iLCJ2ZXJzaW9uIiwid2Vic2l0ZSIsInNvdXJjZSIsImVyciIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJjbGFzc05hbWUiLCJyZWYiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIm9uQ2xpY2siLCJpbm5lckhUTUwiLCJzZXRTdGF0ZSIsIkNsb3NlQnV0dG9uIiwiU2V0dGluZ3MiLCJnZXQiLCJSZWxvYWRJY29uIiwiZmxleCIsInR5cGUiLCJocmVmIiwidGFyZ2V0IiwiZGlzYWJsZWQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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QUFDdkIsU0FBS2tELFFBQUwsQ0FBYztBQUFDbkQsa0JBQVksRUFBRTtBQUFmLEtBQWQ7QUFDSDs7QUExSG1EIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL3BsdWdpbmNhcmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQge1NldHRpbmdzQ29va2llLCBQbHVnaW5Db29raWUsIFBsdWdpbnN9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCB7UmVhY3QsIExvZ2dlciwgU2V0dGluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBDbG9zZUJ1dHRvbiBmcm9tIFwiLi4vaWNvbnMvY2xvc2VcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ2FyZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNob3dTZXR0aW5ncyA9IHRoaXMuc2hvd1NldHRpbmdzLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY2hlY2tlZDogdGhpcy5wcm9wcy5lbmFibGVkLC8vUGx1Z2luTWFuYWdlci5pc0VuYWJsZWQodGhpcy5wcm9wcy5jb250ZW50LmlkKSxcclxuICAgICAgICAgICAgc2V0dGluZ3NPcGVuOiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5oYXNTZXR0aW5ncyA9IHR5cGVvZiB0aGlzLnByb3BzLmNvbnRlbnQucGx1Z2luLmdldFNldHRpbmdzUGFuZWwgPT09IFwiZnVuY3Rpb25cIjtcclxuICAgICAgICB0aGlzLnNldHRpbmdzUGFuZWwgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMucGFuZWxSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWxvYWQgPSB0aGlzLnJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIC8vIHRoaXMub25SZWxvYWQgPSB0aGlzLm9uUmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5yZWxvYWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnQgPSB0aGlzLnByb3BzLnJlbG9hZCh0aGlzLnByb3BzLmNvbnRlbnQuaWQpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2V0dGluZ3NPcGVuKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1BhbmVsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gaWYgKCFTZXR0aW5nc0Nvb2tpZVtcImZvcmstcHMtM1wiXSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBpc0hpZGRlbiA9IChjb250YWluZXIsIGVsZW1lbnQpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNCb3R0b20gPSBjVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlVG9wID0gZWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlQm90dG9tID0gZVRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiAgKGVUb3AgPCBjVG9wIHx8IGVCb3R0b20gPiBjQm90dG9tKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBhbmVsID0gJCh0aGlzLnBhbmVsUmVmLmN1cnJlbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBwYW5lbC5wYXJlbnRzKFwiLnNjcm9sbGVyLTJGS0ZQR1wiKTtcclxuICAgICAgICAgICAgaWYgKCFpc0hpZGRlbihjb250YWluZXJbMF0sIHBhbmVsWzBdKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb250YWluZXIuYW5pbWF0ZSh7XHJcbiAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IHBhbmVsLm9mZnNldCgpLnRvcCAtIGNvbnRhaW5lci5vZmZzZXQoKS50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wKCkgLSAzMFxyXG4gICAgICAgICAgICB9LCAzMDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHJpbmcodmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtjb250ZW50fSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0U3RyaW5nKGNvbnRlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRTdHJpbmcoY29udGVudC5hdXRob3IpO1xyXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5nZXRTdHJpbmcoY29udGVudC5kZXNjcmlwdGlvbik7XHJcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0U3RyaW5nKGNvbnRlbnQudmVyc2lvbik7XHJcbiAgICAgICAgY29uc3Qgd2Vic2l0ZSA9IGNvbnRlbnQud2Vic2l0ZTtcclxuICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZW50LnNvdXJjZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2V0dGluZ3NPcGVuKSB7XHJcbiAgICAgICAgICAgIHRyeSB7IHRoaXMuc2V0dGluZ3NQYW5lbCA9IGNvbnRlbnQucGx1Z2luLmdldFNldHRpbmdzUGFuZWwoKTsgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7IExvZ2dlci5zdGFja3RyYWNlKFwiUGx1Z2luIFNldHRpbmdzXCIsIFwiVW5hYmxlIHRvIGdldCBzZXR0aW5ncyBwYW5lbCBmb3IgXCIgKyBjb250ZW50Lm5hbWUgKyBcIi5cIiwgZXJyKTsgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB7aWQ6IGBwbHVnaW4tc2V0dGluZ3MtJHtuYW1lfWAsIGNsYXNzTmFtZTogXCJwbHVnaW4tc2V0dGluZ3NcIiwgcmVmOiB0aGlzLnBhbmVsUmVmfTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZih0aGlzLnNldHRpbmdzUGFuZWwpID09IFwic3RyaW5nXCIpIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0gdGhpcy5zZXR0aW5nc1BhbmVsO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7Y2xhc3NOYW1lOiBcInNldHRpbmdzLW9wZW4gdWktc3dpdGNoLWl0ZW1cIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7c3R5bGU6IHtcImZsb2F0XCI6IFwicmlnaHRcIiwgXCJjdXJzb3JcIjogXCJwb2ludGVyXCJ9LCBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3NldHRpbmdzT3BlbjogZmFsc2V9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDbG9zZUJ1dHRvbiwgbnVsbClcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHByb3BzLCB0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBSZWFjdC5Db21wb25lbnQgPyB0aGlzLnNldHRpbmdzUGFuZWwgOiBudWxsKSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcImRhdGEtbmFtZVwiOiBuYW1lLCBcImRhdGEtdmVyc2lvblwiOiB2ZXJzaW9uLCBcImNsYXNzTmFtZVwiOiBcInNldHRpbmdzLWNsb3NlZCB1aS1zd2l0Y2gtaXRlbVwifSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1oZWFkZXJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZGEtaGVhZGVyLXRpdGxlXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkYS1uYW1lXCJ9LCBuYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkYS12ZXJzaW9uXCJ9LCB2ZXJzaW9uKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYnkgXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmRhLWF1dGhvclwifSwgYXV0aG9yKVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1jb250cm9sc1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIVNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY29udGVudFwiLCBcImF1dG9SZWxvYWRcIikgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChSZWxvYWRJY29uLCB7Y2xhc3NOYW1lOiBcImJkLXJlbG9hZCBiZC1yZWxvYWQtY2FyZFwiLCBvbkNsaWNrOiB0aGlzLnJlbG9hZH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiwge2NsYXNzTmFtZTogXCJ1aS1zd2l0Y2gtd3JhcHBlciB1aS1mbGV4LWNoaWxkXCIsIHN0eWxlOiB7ZmxleDogXCIwIDAgYXV0b1wifX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge2NoZWNrZWQ6IHRoaXMuc3RhdGUuY2hlY2tlZCwgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UsIGNsYXNzTmFtZTogXCJ1aS1zd2l0Y2gtY2hlY2tib3hcIiwgdHlwZTogXCJjaGVja2JveFwifSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IHRoaXMuc3RhdGUuY2hlY2tlZCA/IFwidWktc3dpdGNoIGNoZWNrZWRcIiA6IFwidWktc3dpdGNoXCJ9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmRhLWRlc2NyaXB0aW9uLXdyYXAgc2Nyb2xsZXItd3JhcCBmYWRlXCJ9LFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1kZXNjcmlwdGlvbiBzY3JvbGxlclwifSwgZGVzY3JpcHRpb24pXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICh3ZWJzaXRlIHx8IHNvdXJjZSB8fCB0aGlzLmhhc1NldHRpbmdzKSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmRhLWZvb3RlclwifSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmRhLWxpbmtzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIHdlYnNpdGUgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2NsYXNzTmFtZTogXCJiZGEtbGluayBiZGEtbGluay13ZWJzaXRlXCIsIGhyZWY6IHdlYnNpdGUsIHRhcmdldDogXCJfYmxhbmtcIn0sIFwiV2Vic2l0ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlICYmIHNvdXJjZSAmJiBcIiB8IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCB7Y2xhc3NOYW1lOiBcImJkYS1saW5rIGJkYS1saW5rLXNvdXJjZVwiLCBocmVmOiBzb3VyY2UsIHRhcmdldDogXCJfYmxhbmtcIn0sIFwiU291cmNlXCIpXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNTZXR0aW5ncyAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHtvbkNsaWNrOiB0aGlzLnNob3dTZXR0aW5ncywgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tcGx1Z2luLXNldHRpbmdzXCIsIGRpc2FibGVkOiAhdGhpcy5zdGF0ZS5jaGVja2VkfSwgXCJTZXR0aW5nc1wiKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkOiAhdGhpcy5zdGF0ZS5jaGVja2VkfSk7XHJcbiAgICAgICAgLy8gUGx1Z2luTWFuYWdlci50b2dnbGVQbHVnaW4odGhpcy5wcm9wcy5jb250ZW50LmlkKTtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlICYmIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5jb250ZW50LmlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc1NldHRpbmdzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2V0dGluZ3NPcGVuOiB0cnVlfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/plugincard.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PluginCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n// import {SettingsCookie, PluginCookie, Plugins} from \"data\";\n\n\n\nclass PluginCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onChange = this.onChange.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.state = {\n checked: this.props.enabled,\n //PluginManager.isEnabled(this.props.content.id),\n settingsOpen: false\n };\n this.hasSettings = typeof this.props.content.plugin.getSettingsPanel === \"function\";\n this.settingsPanel = \"\";\n this.panelRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.reload = this.reload.bind(this); // this.onReload = this.onReload.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.content = this.props.reload(this.props.content.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (this.state.settingsOpen) {\n if (this.settingsPanel instanceof Node) {\n this.panelRef.current.appendChild(this.settingsPanel);\n } // if (!SettingsCookie[\"fork-ps-3\"]) return;\n\n\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const panel = $(this.panelRef.current);\n const container = panel.parents(\".scroller-2FKFPG\");\n if (!isHidden(container[0], panel[0])) return;\n container.animate({\n scrollTop: panel.offset().top - container.offset().top + container.scrollTop() - 30\n }, 300);\n }\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n render() {\n const {\n content\n } = this.props;\n const name = this.getString(content.name);\n const author = this.getString(content.author);\n const description = this.getString(content.description);\n const version = this.getString(content.version);\n const website = content.website;\n const source = content.source;\n\n if (this.state.settingsOpen) {\n try {\n this.settingsPanel = content.plugin.getSettingsPanel();\n } catch (err) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Plugin Settings\", \"Unable to get settings panel for \" + content.name + \".\", err);\n }\n\n const props = {\n id: `plugin-settings-${name}`,\n className: \"plugin-settings\",\n ref: this.panelRef\n };\n if (typeof this.settingsPanel == \"string\") props.dangerouslySetInnerHTML = this.settingsPanel;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"li\", {\n className: \"settings-open ui-switch-item\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n style: {\n \"float\": \"right\",\n \"cursor\": \"pointer\"\n },\n onClick: () => {\n this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, this.settingsPanel instanceof modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component ? this.settingsPanel : null));\n }\n\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"li\", {\n \"data-name\": name,\n \"data-version\": version,\n \"className\": \"settings-closed ui-switch-item\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-header-title\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-name\"\n }, name), \" v\", modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-version\"\n }, version), \" by \", modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-author\"\n }, author)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-controls\"\n }, !modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"content\", \"autoReload\") && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\",\n onClick: this.reload\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"ui-switch-wrapper ui-flex-child\",\n style: {\n flex: \"0 0 auto\"\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n checked: this.state.checked,\n onChange: this.onChange,\n className: \"ui-switch-checkbox\",\n type: \"checkbox\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: this.state.checked ? \"ui-switch checked\" : \"ui-switch\"\n })))), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-description-wrap scroller-wrap fade\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-description scroller\"\n }, description)), (website || source || this.hasSettings) && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bda-footer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bda-links\"\n }, website && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bda-link bda-link-website\",\n href: website,\n target: \"_blank\"\n }, \"Website\"), website && source && \" | \", source && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bda-link bda-link-source\",\n href: source,\n target: \"_blank\"\n }, \"Source\")), this.hasSettings && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-plugin-settings\",\n disabled: !this.state.checked\n }, \"Settings\")));\n }\n\n onChange() {\n this.setState({\n checked: !this.state.checked\n });\n this.props.onChange && this.props.onChange(this.props.content.id);\n }\n\n showSettings() {\n if (!this.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3BsdWdpbmNhcmQuanM/NzczZCJdLCJuYW1lcyI6WyJQbHVnaW5DYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwib25DaGFuZ2UiLCJiaW5kIiwic2hvd1NldHRpbmdzIiwic3RhdGUiLCJjaGVja2VkIiwiZW5hYmxlZCIsInNldHRpbmdzT3BlbiIsImhhc1NldHRpbmdzIiwiY29udGVudCIsInBsdWdpbiIsImdldFNldHRpbmdzUGFuZWwiLCJzZXR0aW5nc1BhbmVsIiwicGFuZWxSZWYiLCJjcmVhdGVSZWYiLCJyZWxvYWQiLCJpZCIsImZvcmNlVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiTm9kZSIsImN1cnJlbnQiLCJhcHBlbmRDaGlsZCIsImlzSGlkZGVuIiwiY29udGFpbmVyIiwiZWxlbWVudCIsImNUb3AiLCJzY3JvbGxUb3AiLCJjQm90dG9tIiwiY2xpZW50SGVpZ2h0IiwiZVRvcCIsIm9mZnNldFRvcCIsImVCb3R0b20iLCJwYW5lbCIsIiQiLCJwYXJlbnRzIiwiYW5pbWF0ZSIsIm9mZnNldCIsInRvcCIsImdldFN0cmluZyIsInZhbHVlIiwidG9TdHJpbmciLCJyZW5kZXIiLCJuYW1lIiwiYXV0aG9yIiwiZGVzY3JpcHRpb24iLCJ2ZXJzaW9uIiwid2Vic2l0ZSIsInNvdXJjZSIsImVyciIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJjbGFzc05hbWUiLCJyZWYiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIm9uQ2xpY2siLCJpbm5lckhUTUwiLCJzZXRTdGF0ZSIsIkNsb3NlQnV0dG9uIiwiU2V0dGluZ3MiLCJnZXQiLCJSZWxvYWRJY29uIiwiZmxleCIsInR5cGUiLCJocmVmIiwidGFyZ2V0IiwiZGlzYWJsZWQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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RCxRQUFMLENBQWM7QUFBQ25ELGtCQUFZLEVBQUU7QUFBZixLQUFkO0FBQ0g7O0FBekhtRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9wbHVnaW5jYXJkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHtTZXR0aW5nc0Nvb2tpZSwgUGx1Z2luQ29va2llLCBQbHVnaW5zfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1JlYWN0LCBMb2dnZXIsIFNldHRpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSBcIi4uL2ljb25zL2Nsb3NlXCI7XHJcbmltcG9ydCBSZWxvYWRJY29uIGZyb20gXCIuLi9pY29ucy9yZWxvYWRcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsdWdpbkNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93U2V0dGluZ3MgPSB0aGlzLnNob3dTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIGNoZWNrZWQ6IHRoaXMucHJvcHMuZW5hYmxlZCwvL1BsdWdpbk1hbmFnZXIuaXNFbmFibGVkKHRoaXMucHJvcHMuY29udGVudC5pZCksXHJcbiAgICAgICAgICAgIHNldHRpbmdzT3BlbjogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuaGFzU2V0dGluZ3MgPSB0eXBlb2YgdGhpcy5wcm9wcy5jb250ZW50LnBsdWdpbi5nZXRTZXR0aW5nc1BhbmVsID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1BhbmVsID0gXCJcIjtcclxuICAgICAgICB0aGlzLnBhbmVsUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVsb2FkID0gdGhpcy5yZWxvYWQuYmluZCh0aGlzKTtcclxuICAgICAgICAvLyB0aGlzLm9uUmVsb2FkID0gdGhpcy5vblJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMucmVsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50ID0gdGhpcy5wcm9wcy5yZWxvYWQodGhpcy5wcm9wcy5jb250ZW50LmlkKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNldHRpbmdzT3Blbikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsIGluc3RhbmNlb2YgTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lbFJlZi5jdXJyZW50LmFwcGVuZENoaWxkKHRoaXMuc2V0dGluZ3NQYW5lbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGlmICghU2V0dGluZ3NDb29raWVbXCJmb3JrLXBzLTNcIl0pIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW4gPSAoY29udGFpbmVyLCBlbGVtZW50KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgY1RvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjQm90dG9tID0gY1RvcCArIGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZVRvcCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZUJvdHRvbSA9IGVUb3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIChlVG9wIDwgY1RvcCB8fCBlQm90dG9tID4gY0JvdHRvbSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwYW5lbCA9ICQodGhpcy5wYW5lbFJlZi5jdXJyZW50KTtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFuZWwucGFyZW50cyhcIi5zY3JvbGxlci0yRktGUEdcIik7XHJcbiAgICAgICAgICAgIGlmICghaXNIaWRkZW4oY29udGFpbmVyWzBdLCBwYW5lbFswXSkpIHJldHVybjtcclxuICAgICAgICAgICAgY29udGFpbmVyLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiBwYW5lbC5vZmZzZXQoKS50b3AgLSBjb250YWluZXIub2Zmc2V0KCkudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCgpIC0gMzBcclxuICAgICAgICAgICAgfSwgMzAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RyaW5nKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7Y29udGVudH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhjb250ZW50Lm5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGF1dGhvciA9IHRoaXMuZ2V0U3RyaW5nKGNvbnRlbnQuYXV0aG9yKTtcclxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZ2V0U3RyaW5nKGNvbnRlbnQuZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFN0cmluZyhjb250ZW50LnZlcnNpb24pO1xyXG4gICAgICAgIGNvbnN0IHdlYnNpdGUgPSBjb250ZW50LndlYnNpdGU7XHJcbiAgICAgICAgY29uc3Qgc291cmNlID0gY29udGVudC5zb3VyY2U7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNldHRpbmdzT3Blbikge1xyXG4gICAgICAgICAgICB0cnkgeyB0aGlzLnNldHRpbmdzUGFuZWwgPSBjb250ZW50LnBsdWdpbi5nZXRTZXR0aW5nc1BhbmVsKCk7IH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZShcIlBsdWdpbiBTZXR0aW5nc1wiLCBcIlVuYWJsZSB0byBnZXQgc2V0dGluZ3MgcGFuZWwgZm9yIFwiICsgY29udGVudC5uYW1lICsgXCIuXCIsIGVycik7IH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0ge2lkOiBgcGx1Z2luLXNldHRpbmdzLSR7bmFtZX1gLCBjbGFzc05hbWU6IFwicGx1Z2luLXNldHRpbmdzXCIsIHJlZjogdGhpcy5wYW5lbFJlZn07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YodGhpcy5zZXR0aW5nc1BhbmVsKSA9PSBcInN0cmluZ1wiKSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHRoaXMuc2V0dGluZ3NQYW5lbDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwge2NsYXNzTmFtZTogXCJzZXR0aW5ncy1vcGVuIHVpLXN3aXRjaC1pdGVtXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge3N0eWxlOiB7XCJmbG9hdFwiOiBcInJpZ2h0XCIsIFwiY3Vyc29yXCI6IFwicG9pbnRlclwifSwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbFJlZi5jdXJyZW50LmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IGZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19LFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xvc2VCdXR0b24sIG51bGwpXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBwcm9wcywgdGhpcy5zZXR0aW5nc1BhbmVsIGluc3RhbmNlb2YgUmVhY3QuQ29tcG9uZW50ID8gdGhpcy5zZXR0aW5nc1BhbmVsIDogbnVsbCksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XCJkYXRhLW5hbWVcIjogbmFtZSwgXCJkYXRhLXZlcnNpb25cIjogdmVyc2lvbiwgXCJjbGFzc05hbWVcIjogXCJzZXR0aW5ncy1jbG9zZWQgdWktc3dpdGNoLWl0ZW1cIn0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZGEtaGVhZGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmRhLWhlYWRlci10aXRsZVwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZGEtbmFtZVwifSwgbmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIHZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZGEtdmVyc2lvblwifSwgdmVyc2lvbiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIGJ5IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkYS1hdXRob3JcIn0sIGF1dGhvcilcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZGEtY29udHJvbHNcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImNvbnRlbnRcIiwgXCJhdXRvUmVsb2FkXCIpICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVsb2FkSWNvbiwge2NsYXNzTmFtZTogXCJiZC1yZWxvYWQgYmQtcmVsb2FkLWNhcmRcIiwgb25DbGljazogdGhpcy5yZWxvYWR9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIHtjbGFzc05hbWU6IFwidWktc3dpdGNoLXdyYXBwZXIgdWktZmxleC1jaGlsZFwiLCBzdHlsZToge2ZsZXg6IFwiMCAwIGF1dG9cIn19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtjaGVja2VkOiB0aGlzLnN0YXRlLmNoZWNrZWQsIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLCBjbGFzc05hbWU6IFwidWktc3dpdGNoLWNoZWNrYm94XCIsIHR5cGU6IFwiY2hlY2tib3hcIn0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiB0aGlzLnN0YXRlLmNoZWNrZWQgPyBcInVpLXN3aXRjaCBjaGVja2VkXCIgOiBcInVpLXN3aXRjaFwifSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1kZXNjcmlwdGlvbi13cmFwIHNjcm9sbGVyLXdyYXAgZmFkZVwifSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZGEtZGVzY3JpcHRpb24gc2Nyb2xsZXJcIn0sIGRlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAod2Vic2l0ZSB8fCBzb3VyY2UgfHwgdGhpcy5oYXNTZXR0aW5ncykgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1mb290ZXJcIn0sXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkYS1saW5rc1wifSxcclxuICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHtjbGFzc05hbWU6IFwiYmRhLWxpbmsgYmRhLWxpbmstd2Vic2l0ZVwiLCBocmVmOiB3ZWJzaXRlLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LCBcIldlYnNpdGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZSAmJiBzb3VyY2UgJiYgXCIgfCBcIixcclxuICAgICAgICAgICAgICAgICAgICBzb3VyY2UgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2NsYXNzTmFtZTogXCJiZGEtbGluayBiZGEtbGluay1zb3VyY2VcIiwgaHJlZjogc291cmNlLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LCBcIlNvdXJjZVwiKVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzU2V0dGluZ3MgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7b25DbGljazogdGhpcy5zaG93U2V0dGluZ3MsIGNsYXNzTmFtZTogXCJiZC1idXR0b24gYmQtYnV0dG9uLXBsdWdpbi1zZXR0aW5nc1wiLCBkaXNhYmxlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0sIFwiU2V0dGluZ3NcIilcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0pO1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UgJiYgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLmNvbnRlbnQuaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzU2V0dGluZ3MpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IHRydWV9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/plugincard.js\n"); /***/ }), @@ -851,7 +851,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return V2_SettingsPanel; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _contentlist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contentlist */ \"./src/ui/settings/contentlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n\n\n\n\n\nclass V2_SettingsPanel {\n static buildSettingsPanel(title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(title, config, onChange, button);\n }\n\n static getSettingsPanel(title, groups, onChange, button = null) {\n return [modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object.assign({}, section, {\n onChange\n }));\n })];\n }\n\n static getContentPanel(title, contentList, contentState, options = {}) {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_contentlist__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, {\n title: title,\n contentList: contentList,\n contentState: contentState\n }, options));\n }\n\n static get attribution() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n style: {\n fontSize: \"12px\",\n fontWeight: \"600\",\n color: \"#72767d\",\n padding: \"2px 10px\"\n }\n }, `BBD v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} by `, modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"a\", {\n href: \"https://github.com/rauenzi/\",\n target: \"_blank\"\n }, \"Zerebos\"));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3NldHRpbmdzLmpzPzgwYWIiXSwibmFtZXMiOlsiVjJfU2V0dGluZ3NQYW5lbCIsImJ1aWxkU2V0dGluZ3NQYW5lbCIsInRpdGxlIiwiY29uZmlnIiwic3RhdGUiLCJvbkNoYW5nZSIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJpZCIsImdldFNldHRpbmdzUGFuZWwiLCJncm91cHMiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJTZXR0aW5nc1RpdGxlIiwidGV4dCIsIm1hcCIsIlNldHRpbmdzR3JvdXAiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXRDb250ZW50UGFuZWwiLCJjb250ZW50TGlzdCIsImNvbnRlbnRTdGF0ZSIsIm9wdGlvbnMiLCJDb250ZW50TGlzdCIsImF0dHJpYnV0aW9uIiwic3R5bGUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsInBhZGRpbmciLCJDb25maWciLCJiYmRWZXJzaW9uIiwiaHJlZiIsInRhcmdldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRWUsTUFBTUEsZ0JBQU4sQ0FBdUI7QUFFbEMsU0FBT0Msa0JBQVAsQ0FBMEJDLEtBQTFCLEVBQWlDQyxNQUFqQyxFQUF5Q0MsS0FBekMsRUFBZ0RDLFFBQWhELEVBQTBEQyxNQUFNLEdBQUcsSUFBbkUsRUFBeUU7QUFDckVILFVBQU0sQ0FBQ0ksT0FBUCxDQUFlQyxPQUFPLElBQUk7QUFDdEJBLGFBQU8sQ0FBQ0MsUUFBUixDQUFpQkYsT0FBakIsQ0FBeUJHLElBQUksSUFBSUEsSUFBSSxDQUFDQyxLQUFMLEdBQWFQLEtBQUssQ0FBQ0ksT0FBTyxDQUFDSSxFQUFULENBQUwsQ0FBa0JGLElBQUksQ0FBQ0UsRUFBdkIsQ0FBOUM7QUFDSCxLQUZEO0FBR0EsV0FBTyxLQUFLQyxnQkFBTCxDQUFzQlgsS0FBdEIsRUFBNkJDLE1BQTdCLEVBQXFDRSxRQUFyQyxFQUErQ0MsTUFBL0MsQ0FBUDtBQUNIOztBQUVELFNBQU9PLGdCQUFQLENBQXdCWCxLQUF4QixFQUErQlksTUFBL0IsRUFBdUNULFFBQXZDLEVBQWlEQyxNQUFNLEdBQUcsSUFBMUQsRUFBZ0U7QUFDNUQsV0FBTyxDQUFDUyw2Q0FBSyxDQUFDQyxhQUFOLENBQW9CQyw4Q0FBcEIsRUFBbUM7QUFBQ0MsVUFBSSxFQUFFaEIsS0FBUDtBQUFjSSxZQUFNLEVBQUVBO0FBQXRCLEtBQW5DLENBQUQsRUFBb0VRLE1BQU0sQ0FBQ0ssR0FBUCxDQUFXWCxPQUFPLElBQUk7QUFDN0YsYUFBT08sNkNBQUssQ0FBQ0MsYUFBTixDQUFvQkksdURBQXBCLEVBQW1DQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCZCxPQUFsQixFQUEyQjtBQUFDSDtBQUFELE9BQTNCLENBQW5DLENBQVA7QUFDSCxLQUYwRSxDQUFwRSxDQUFQO0FBR0g7O0FBRUQsU0FBT2tCLGVBQVAsQ0FBdUJyQixLQUF2QixFQUE4QnNCLFdBQTlCLEVBQTJDQyxZQUEzQyxFQUF5REMsT0FBTyxHQUFHLEVBQW5FLEVBQXVFO0FBQ25FLFdBQU9YLDZDQUFLLENBQUNDLGFBQU4sQ0FBb0JXLG9EQUFwQixFQUFpQ04sTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQjtBQUN0RHBCLFdBQUssRUFBRUEsS0FEK0M7QUFFdERzQixpQkFBVyxFQUFFQSxXQUZ5QztBQUd0REMsa0JBQVksRUFBRUE7QUFId0MsS0FBbEIsRUFJckNDLE9BSnFDLENBQWpDLENBQVA7QUFLSDs7QUFFRCxhQUFXRSxXQUFYLEdBQXlCO0FBQ3JCLFdBQU9iLDZDQUFLLENBQUNDLGFBQU4sQ0FDSCxLQURHLEVBRUg7QUFBQ2EsV0FBSyxFQUFFO0FBQUNDLGdCQUFRLEVBQUUsTUFBWDtBQUFtQkMsa0JBQVUsRUFBRSxLQUEvQjtBQUFzQ0MsYUFBSyxFQUFFLFNBQTdDO0FBQXdEQyxlQUFPLEVBQUU7QUFBakU7QUFBUixLQUZHLEVBR0YsUUFBT0MsMkNBQU0sQ0FBQ0MsVUFBVyxNQUh2QixFQUlIcEIsNkNBQUssQ0FBQ0MsYUFBTixDQUNJLEdBREosRUFFSTtBQUFDb0IsVUFBSSxFQUFFLDZCQUFQO0FBQXNDQyxZQUFNLEVBQUU7QUFBOUMsS0FGSixFQUdJLFNBSEosQ0FKRyxDQUFQO0FBVUg7O0FBbENpQyIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9zZXR0aW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IENvbnRlbnRMaXN0IGZyb20gXCIuL2NvbnRlbnRsaXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuLi9zZXR0aW5ncy9ncm91cFwiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi90aXRsZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJfU2V0dGluZ3NQYW5lbCB7XHJcblxyXG4gICAgc3RhdGljIGJ1aWxkU2V0dGluZ3NQYW5lbCh0aXRsZSwgY29uZmlnLCBzdGF0ZSwgb25DaGFuZ2UsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICBjb25maWcuZm9yRWFjaChzZWN0aW9uID0+IHtcclxuICAgICAgICAgICAgc2VjdGlvbi5zZXR0aW5ncy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS52YWx1ZSA9IHN0YXRlW3NlY3Rpb24uaWRdW2l0ZW0uaWRdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZXR0aW5nc1BhbmVsKHRpdGxlLCBjb25maWcsIG9uQ2hhbmdlLCBidXR0b24pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRTZXR0aW5nc1BhbmVsKHRpdGxlLCBncm91cHMsIG9uQ2hhbmdlLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFtSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aXRsZSwgYnV0dG9uOiBidXR0b259KSwgZ3JvdXBzLm1hcChzZWN0aW9uID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NHcm91cCwgT2JqZWN0LmFzc2lnbih7fSwgc2VjdGlvbiwge29uQ2hhbmdlfSkpO1xyXG4gICAgICAgIH0pXTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0Q29udGVudFBhbmVsKHRpdGxlLCBjb250ZW50TGlzdCwgY29udGVudFN0YXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZW50TGlzdCwgT2JqZWN0LmFzc2lnbih7fSwge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIGNvbnRlbnRMaXN0OiBjb250ZW50TGlzdCxcclxuICAgICAgICAgICAgY29udGVudFN0YXRlOiBjb250ZW50U3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldCBhdHRyaWJ1dGlvbigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAge3N0eWxlOiB7Zm9udFNpemU6IFwiMTJweFwiLCBmb250V2VpZ2h0OiBcIjYwMFwiLCBjb2xvcjogXCIjNzI3NjdkXCIsIHBhZGRpbmc6IFwiMnB4IDEwcHhcIn19LFxyXG4gICAgICAgICAgICBgQkJEIHYke0NvbmZpZy5iYmRWZXJzaW9ufSBieSBgLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJhXCIsXHJcbiAgICAgICAgICAgICAgICB7aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9cIiwgdGFyZ2V0OiBcIl9ibGFua1wifSxcclxuICAgICAgICAgICAgICAgIFwiWmVyZWJvc1wiXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/settings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return V2_SettingsPanel; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _contentlist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contentlist */ \"./src/ui/settings/contentlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n\n\n\n\n\nclass V2_SettingsPanel {\n static buildSettingsPanel(title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(title, config, onChange, button);\n }\n\n static getSettingsPanel(title, groups, onChange, button = null) {\n return [modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object.assign({}, section, {\n onChange\n }));\n })];\n }\n\n static getContentPanel(title, contentList, contentState, options = {}) {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_contentlist__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, {\n title: title,\n contentList: contentList,\n contentState: contentState\n }, options));\n }\n\n static get attribution() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-version\",\n style: {\n fontSize: \"12px\",\n fontWeight: \"600\",\n color: \"#72767d\",\n padding: \"2px 10px\"\n }\n }, `BBD v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} by `, modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"a\", {\n href: \"https://github.com/rauenzi/\",\n target: \"_blank\"\n }, \"Zerebos\"));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3NldHRpbmdzLmpzPzgwYWIiXSwibmFtZXMiOlsiVjJfU2V0dGluZ3NQYW5lbCIsImJ1aWxkU2V0dGluZ3NQYW5lbCIsInRpdGxlIiwiY29uZmlnIiwic3RhdGUiLCJvbkNoYW5nZSIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJpZCIsImdldFNldHRpbmdzUGFuZWwiLCJncm91cHMiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJTZXR0aW5nc1RpdGxlIiwidGV4dCIsIm1hcCIsIlNldHRpbmdzR3JvdXAiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXRDb250ZW50UGFuZWwiLCJjb250ZW50TGlzdCIsImNvbnRlbnRTdGF0ZSIsIm9wdGlvbnMiLCJDb250ZW50TGlzdCIsImF0dHJpYnV0aW9uIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsInBhZGRpbmciLCJDb25maWciLCJiYmRWZXJzaW9uIiwiaHJlZiIsInRhcmdldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRWUsTUFBTUEsZ0JBQU4sQ0FBdUI7QUFFbEMsU0FBT0Msa0JBQVAsQ0FBMEJDLEtBQTFCLEVBQWlDQyxNQUFqQyxFQUF5Q0MsS0FBekMsRUFBZ0RDLFFBQWhELEVBQTBEQyxNQUFNLEdBQUcsSUFBbkUsRUFBeUU7QUFDckVILFVBQU0sQ0FBQ0ksT0FBUCxDQUFlQyxPQUFPLElBQUk7QUFDdEJBLGFBQU8sQ0FBQ0MsUUFBUixDQUFpQkYsT0FBakIsQ0FBeUJHLElBQUksSUFBSUEsSUFBSSxDQUFDQyxLQUFMLEdBQWFQLEtBQUssQ0FBQ0ksT0FBTyxDQUFDSSxFQUFULENBQUwsQ0FBa0JGLElBQUksQ0FBQ0UsRUFBdkIsQ0FBOUM7QUFDSCxLQUZEO0FBR0EsV0FBTyxLQUFLQyxnQkFBTCxDQUFzQlgsS0FBdEIsRUFBNkJDLE1BQTdCLEVBQXFDRSxRQUFyQyxFQUErQ0MsTUFBL0MsQ0FBUDtBQUNIOztBQUVELFNBQU9PLGdCQUFQLENBQXdCWCxLQUF4QixFQUErQlksTUFBL0IsRUFBdUNULFFBQXZDLEVBQWlEQyxNQUFNLEdBQUcsSUFBMUQsRUFBZ0U7QUFDNUQsV0FBTyxDQUFDUyw2Q0FBSyxDQUFDQyxhQUFOLENBQW9CQyw4Q0FBcEIsRUFBbUM7QUFBQ0MsVUFBSSxFQUFFaEIsS0FBUDtBQUFjSSxZQUFNLEVBQUVBO0FBQXRCLEtBQW5DLENBQUQsRUFBb0VRLE1BQU0sQ0FBQ0ssR0FBUCxDQUFXWCxPQUFPLElBQUk7QUFDN0YsYUFBT08sNkNBQUssQ0FBQ0MsYUFBTixDQUFvQkksdURBQXBCLEVBQW1DQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCZCxPQUFsQixFQUEyQjtBQUFDSDtBQUFELE9BQTNCLENBQW5DLENBQVA7QUFDSCxLQUYwRSxDQUFwRSxDQUFQO0FBR0g7O0FBRUQsU0FBT2tCLGVBQVAsQ0FBdUJyQixLQUF2QixFQUE4QnNCLFdBQTlCLEVBQTJDQyxZQUEzQyxFQUF5REMsT0FBTyxHQUFHLEVBQW5FLEVBQXVFO0FBQ25FLFdBQU9YLDZDQUFLLENBQUNDLGFBQU4sQ0FBb0JXLG9EQUFwQixFQUFpQ04sTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQjtBQUN0RHBCLFdBQUssRUFBRUEsS0FEK0M7QUFFdERzQixpQkFBVyxFQUFFQSxXQUZ5QztBQUd0REMsa0JBQVksRUFBRUE7QUFId0MsS0FBbEIsRUFJckNDLE9BSnFDLENBQWpDLENBQVA7QUFLSDs7QUFFRCxhQUFXRSxXQUFYLEdBQXlCO0FBQ3JCLFdBQU9iLDZDQUFLLENBQUNDLGFBQU4sQ0FBb0IsS0FBcEIsRUFBMkI7QUFBQ2EsZUFBUyxFQUFFLFlBQVo7QUFBMEJDLFdBQUssRUFBRTtBQUFDQyxnQkFBUSxFQUFFLE1BQVg7QUFBbUJDLGtCQUFVLEVBQUUsS0FBL0I7QUFBc0NDLGFBQUssRUFBRSxTQUE3QztBQUF3REMsZUFBTyxFQUFFO0FBQWpFO0FBQWpDLEtBQTNCLEVBQ0YsUUFBT0MsMkNBQU0sQ0FBQ0MsVUFBVyxNQUR2QixFQUVIckIsNkNBQUssQ0FBQ0MsYUFBTixDQUFvQixHQUFwQixFQUF5QjtBQUFDcUIsVUFBSSxFQUFFLDZCQUFQO0FBQXNDQyxZQUFNLEVBQUU7QUFBOUMsS0FBekIsRUFBa0YsU0FBbEYsQ0FGRyxDQUFQO0FBSUg7O0FBNUJpQyIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9zZXR0aW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IENvbnRlbnRMaXN0IGZyb20gXCIuL2NvbnRlbnRsaXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuLi9zZXR0aW5ncy9ncm91cFwiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi90aXRsZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJfU2V0dGluZ3NQYW5lbCB7XHJcblxyXG4gICAgc3RhdGljIGJ1aWxkU2V0dGluZ3NQYW5lbCh0aXRsZSwgY29uZmlnLCBzdGF0ZSwgb25DaGFuZ2UsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICBjb25maWcuZm9yRWFjaChzZWN0aW9uID0+IHtcclxuICAgICAgICAgICAgc2VjdGlvbi5zZXR0aW5ncy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS52YWx1ZSA9IHN0YXRlW3NlY3Rpb24uaWRdW2l0ZW0uaWRdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZXR0aW5nc1BhbmVsKHRpdGxlLCBjb25maWcsIG9uQ2hhbmdlLCBidXR0b24pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRTZXR0aW5nc1BhbmVsKHRpdGxlLCBncm91cHMsIG9uQ2hhbmdlLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFtSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aXRsZSwgYnV0dG9uOiBidXR0b259KSwgZ3JvdXBzLm1hcChzZWN0aW9uID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NHcm91cCwgT2JqZWN0LmFzc2lnbih7fSwgc2VjdGlvbiwge29uQ2hhbmdlfSkpO1xyXG4gICAgICAgIH0pXTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0Q29udGVudFBhbmVsKHRpdGxlLCBjb250ZW50TGlzdCwgY29udGVudFN0YXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZW50TGlzdCwgT2JqZWN0LmFzc2lnbih7fSwge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIGNvbnRlbnRMaXN0OiBjb250ZW50TGlzdCxcclxuICAgICAgICAgICAgY29udGVudFN0YXRlOiBjb250ZW50U3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldCBhdHRyaWJ1dGlvbigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkLXZlcnNpb25cIiwgc3R5bGU6IHtmb250U2l6ZTogXCIxMnB4XCIsIGZvbnRXZWlnaHQ6IFwiNjAwXCIsIGNvbG9yOiBcIiM3Mjc2N2RcIiwgcGFkZGluZzogXCIycHggMTBweFwifX0sXHJcbiAgICAgICAgICAgIGBCQkQgdiR7Q29uZmlnLmJiZFZlcnNpb259IGJ5IGAsXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHtocmVmOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL1wiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LCBcIlplcmVib3NcIilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/settings.js\n"); /***/ }), diff --git a/js/main.min.js b/js/main.min.js index c3ee8df1..1ee0cd4f 100644 --- a/js/main.min.js +++ b/js/main.min.js @@ -1 +1 @@ -var Core=function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}return s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=6)}([function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("request")},function(e,t,s){"use strict";s.r(t);var n={};s.r(n),s.d(n,"VoiceMode",function(){return De}),s.d(n,"ClassNormalizer",function(){return Be}),s.d(n,"DeveloperMode",function(){return Ne}),s.d(n,"PublicServers",function(){return je}),s.d(n,"DarkMode",function(){return Le}),s.d(n,"MinimalMode",function(){return Fe}),s.d(n,"TwentyFourHour",function(){return Oe}),s.d(n,"ColoredText",function(){return $e}),s.d(n,"VoiceDisconnect",function(){return ze}),s.d(n,"EmoteMenu",function(){return Ge}),s.d(n,"EmoteAutocaps",function(){return Je}),s.d(n,"EmoteModule",function(){return We}),s.d(n,"WindowPrefs",function(){return Ke}),s.d(n,"CustomCSS",function(){return Ct});var i={local:!1,localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"0.2.17"},r={TwitchGlobal:{url:"https://twitchemotes.com/api_cache/v3/global.json",backup:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_twitch_global.json",variable:"TwitchGlobal",getEmoteURL:e=>`https://static-cdn.jtvnw.net/emoticons/v1/${e.id}/1.0`,getOldData:(e,t)=>({id:e.match(/\/([0-9]+)\//)[1],code:t,emoticon_set:0,description:null})},TwitchSubscriber:{url:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_twitch_subscriber.json",variable:"TwitchSubscriber",getEmoteURL:e=>`https://static-cdn.jtvnw.net/emoticons/v1/${e}/1.0`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},FrankerFaceZ:{url:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_ffz.json",variable:"FrankerFaceZ",getEmoteURL:e=>`https://cdn.frankerfacez.com/emoticon/${e}/1`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},BTTV:{url:"https://api.betterttv.net/emotes",variable:"BTTV",parser:e=>{const t={};for(let s=0,n=e.emotes.length;s`${e}`,getOldData:e=>e},BTTV2:{url:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_bttv.json",variable:"BTTV2",oldVariable:"emotesBTTV2",getEmoteURL:e=>`https://cdn.betterttv.net/emote/${e}/1x`,getOldData:e=>e.match(/emote\/(.+)\//)[1]}},o=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",name:"Download Emotes",note:"Download emotes once a week to stay up to date",value:!0},{type:"switch",id:"emoteMenu",name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu",value:!0},{type:"switch",id:"hideEmojiMenu",name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"autoCaps",name:"Emote Autocapitalization",note:"Autocapitalize emote commands",value:!1},{type:"switch",id:"showNames",name:"Show Names",note:"Show emote names on hover",value:!0},{type:"switch",id:"modifiers",name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)",value:!0},{type:"switch",id:"animateOnHover",name:"Animate On Hover",note:"Only animate the emote modifiers on hover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitch",name:"Twitch",note:"Show Twitch global & subscriber emotes",value:!0},{type:"switch",id:"ffz",name:"FrankerFaceZ",note:"Show emotes from FFZ",value:!0},{type:"switch",id:"bttv",name:"BetterTTV",note:"Show emotes from BTTV",value:!0}]}],a=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"emotes",name:"Emote System",note:"Enables BD's emote system",value:!0},{type:"switch",id:"publicServers",name:"Public Servers",note:"Display public servers button",value:!0},{type:"switch",id:"voiceDisconnect",name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord",value:!1},{type:"switch",id:"twentyFourHour",name:"24 Hour Timestamps",note:"Hides channels when in minimal mode",value:!1},{type:"switch",id:"classNormalizer",name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)",value:!0},{type:"switch",id:"showToasts",name:"Show Toasts",note:"Shows a small notification for important information",value:!0}]},{type:"category",id:"appearance",name:"Appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",name:"Voice Mode",note:"Hides everything that isn't voice chat",value:!1},{type:"switch",id:"minimalMode",name:"Minimal Mode",note:"Hide elements and reduce the size of elements",value:!1},{type:"switch",id:"hideChannels",name:"Hide Channels",note:"Hides channels when in minimal mode",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",name:"Dark Mode",note:"Make certain elements dark by default",value:!0},{type:"switch",id:"coloredText",name:"Colored Text",note:"Make text colour the same as role color",value:!1}]},{type:"category",id:"content",name:"Content Manager",collapsible:!0,settings:[{type:"switch",id:"contentErrors",name:"Show Content Errors",note:"Shows a modal with plugin/theme errors",value:!0},{type:"switch",id:"autoScroll",name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)",value:!0},{type:"switch",id:"autoReload",name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes",value:!0}]},{type:"category",id:"developer",name:"Developer Settings",collapsible:!0,shown:!1,settings:[{type:"switch",id:"developerMode",name:"Developer Mode",note:"Allows activating debugger when pressing F8",value:!1},{type:"switch",id:"copySelector",name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active',value:!1,enableWith:"developerMode"}]},{type:"category",id:"window",name:"Window Preferences",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)",value:!1},{type:"switch",id:"frame",name:"Window Frame",note:"Adds the native os window frame to the main window",value:!1,hidden:!0}]},{type:"category",id:"customcss",name:"Custom CSS",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",name:"Custom CSS",note:"Enables the Custom CSS tab",value:!0},{type:"switch",id:"liveUpdate",name:"Live Update",note:"Updates the css as you type",value:!1},{type:"switch",id:"startDetached",name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window",value:!1,disableWith:"nativeOpen"},{type:"switch",id:"nativeOpen",name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor",value:!1,disableWith:"startDetached"}]}];const l={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c %c[${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return l.hasOwnProperty(e)?l[e]:"log"}}class d{static getTextArea(){return $(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static monkeyPatch(e,t,s){const{before:n,after:i,instead:r,once:o=!1,silent:a=!1,force:l=!1}=s,c=s.displayName||e.displayName||e.name||e.constructor.displayName||e.constructor.name;if(a||console.log("patch",t,"of",c),!e[t]){if(!l)return console.error(t,"does not exist for",c);e[t]=function(){}}const h=e[t],u=()=>{a||console.log("unpatch",t,"of",c),e[t]=h};return e[t]=function(){const s={thisObject:this,methodArguments:arguments,cancelPatch:u,originalMethod:h,callOriginalMethod:()=>s.returnValue=s.originalMethod.apply(s.thisObject,s.methodArguments)};if(r){const n=d.suppressErrors(r,"`instead` callback of "+e[t].displayName)(s);void 0!==n&&(s.returnValue=n)}else n&&d.suppressErrors(n,"`before` callback of "+e[t].displayName)(s),s.callOriginalMethod(),i&&d.suppressErrors(i,"`after` callback of "+e[t].displayName)(s);return o&&u(),s.returnValue},e[t].__monkeyPatched=!0,e[t].__originalMethod||(e[t].__originalMethod=h),e[t].displayName="patched "+(e[t].displayName||t),u}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=o.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static formatString(e,t){for(const s in t){let n=t[s];Array.isArray(n)&&(n=JSON.stringify(n)),"object"==typeof n&&null!==n&&(n=n.toString()),e=e.replace(new RegExp(`{{${s}}}`,"g"),n)}return e}static findInTree(e,t,{walkable:s=null,ignore:n=[]}={}){if("string"==typeof t){if(e.hasOwnProperty(t))return e[t]}else if(t(e))return e;if("object"!=typeof e||null==e)return;let i=void 0;if(e instanceof Array){for(const r of e)if(void 0!==(i=this.findInTree(r,t,{walkable:s,ignore:n})))return i}else{const r=null==s?Object.keys(e):s;for(const o of r)if(e.hasOwnProperty(o)&&!n.includes(o)&&void 0!==(i=this.findInTree(e[o],t,{walkable:s,ignore:n})))return i}return i}static getNestedProp(e,t){return t.split(/\s?\.\s?/).reduce(function(e,t){return e&&e[t]},e)}static findInRenderTree(e,t,{walkable:s=["props","children","child","sibling"],ignore:n=[]}={}){return this.findInTree(e,t,{walkable:s,ignore:n})}static findInReactTree(e,t){return this.findInTree(e,t,{walkable:["props","children","return","stateNode"]})}static getReactInstance(e){return e.__reactInternalInstance$?e.__reactInternalInstance$:e[Object.keys(e).find(e=>e.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,r=i?s:t;function o(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(r.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&o(a)&&n(e))return e}return null}}var h=d.memoizeObject({get React(){return p.getByProps("createElement","cloneElement")},get ReactDOM(){return p.getByProps("render","findDOMNode")},get Flux(){return p.getByProps("connectStores")},get Events(){return p.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return p.getByProps("getGuild")},get SortedGuildStore(){return p.getByProps("getSortedGuilds")},get SelectedGuildStore(){return p.getByProps("getLastSelectedGuildId")},get GuildSync(){return p.getByProps("getSyncedGuilds")},get GuildInfo(){return p.getByProps("getAcronym")},get GuildChannelsStore(){return p.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return p.getByProps("getMember")},get MemberCountStore(){return p.getByProps("getMemberCounts")},get GuildEmojiStore(){return p.getByProps("getEmojis")},get GuildActions(){return p.getByProps("markGuildAsRead")},get GuildPermissions(){return p.getByProps("getGuildPermissions")},get ChannelStore(){return p.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return p.getByProps("getLastSelectedChannelId")},get ChannelActions(){return p.getByProps("selectChannel")},get PrivateChannelActions(){return p.getByProps("openPrivateChannel")},get ChannelSelector(){return p.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return p.getByProps("getToken")},get UserSettingsStore(){return p.getByProps("guildPositions")},get AccountManager(){return p.getByProps("register","login")},get UserSettingsUpdater(){return p.getByProps("updateRemoteSettings")},get OnlineWatcher(){return p.getByProps("isOnline")},get CurrentUserIdle(){return p.getByProps("getIdleTime")},get RelationshipStore(){return p.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return p.getByProps("addRelationship")},get MentionStore(){return p.getByProps("getMentions")},get UserStore(){return p.getByProps("getCurrentUser")},get UserStatusStore(){return p.getByProps("getStatus","getState")},get UserTypingStore(){return p.getByProps("isTyping")},get UserActivityStore(){return p.getByProps("getActivity")},get UserNameResolver(){return p.getByProps("getName")},get UserNoteStore(){return p.getByProps("getNote")},get UserNoteActions(){return p.getByProps("updateNote")},get EmojiInfo(){return p.getByProps("isEmojiDisabled")},get EmojiUtils(){return p.getByProps("getGuildEmoji")},get EmojiStore(){return p.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return p.getByProps("getInvites")},get InviteResolver(){return p.getByProps("findInvite")},get InviteActions(){return p.getByProps("acceptInvite")},get DiscordConstants(){return p.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return p.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return p.getByProps("getHighestRole")},get ColorConverter(){return p.getByProps("hex2int")},get ColorShader(){return p.getByProps("darken")},get TinyColor(){return p.getByPrototypes("toRgb")},get ClassResolver(){return p.getByProps("getClass")},get ButtonData(){return p.getByProps("ButtonSizes")},get IconNames(){return p.getByProps("IconNames")},get NavigationUtils(){return p.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return p.getByProps("getMessages")},get MessageActions(){return p.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return p.getByProps("enqueue")},get MessageParser(){return p.getByProps("createMessage","parse","unparse")},get hljs(){return p.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return p.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return p.getByProps("getExperimentOverrides")},get ExperimentsManager(){return p.getByProps("isDeveloper")},get CurrentExperiment(){return p.getByProps("getExperimentId")},get ImageResolver(){return p.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return p.getByProps("getSizedImageSrc")},get AvatarDefaults(){return p.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return p.getByProps("isFocused","windowSize")},get TagInfo(){return p.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return p.getByProps("canUseDOM")},get LocaleManager(){return p.getByProps("setLocale")},get Moment(){return p.getByProps("parseZone")},get LocationManager(){return p.getByProps("createLocation")},get Timestamps(){return p.getByProps("fromTimestamp")},get TimeFormatter(){return p.getByProps("dateFormat")},get Strings(){return p.getByProps("Messages").Messages},get StringFormats(){return p.getByProps("a","z")},get StringUtils(){return p.getByProps("toASCII")},get URLParser(){return p.getByProps("Url","parse")},get ExtraURLs(){return p.getByProps("getArticleURL")},get DNDActions(){return p.getByProps("beginDrag")},get DNDSources(){return p.getByProps("addTarget")},get DNDObjects(){return p.getByProps("DragSource")},get MediaDeviceInfo(){return p.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return p.getByProps("getOutputVolume")},get MediaEngineInfo(){return p.getByProps("MediaEngineFeatures")},get VoiceInfo(){return p.getByProps("EchoCancellation")},get VideoStream(){return p.getByProps("getVideoStream")},get SoundModule(){return p.getByProps("playSound")},get ElectronModule(){return p.getByProps("setBadge")},get Dispatcher(){return p.getByProps("dirtyDispatch")},get PathUtils(){return p.getByProps("hasBasename")},get NotificationModule(){return p.getByProps("showNotification")},get RouterModule(){return p.getByProps("Router")},get APIModule(){return p.getByProps("getAPIBaseURL")},get AnalyticEvents(){return p.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return p.getByRegex(/"binary"/)},get Buffers(){return p.getByProps("Buffer","kMaxLength")},get DeviceStore(){return p.getByProps("getDevices")},get SoftwareInfo(){return p.getByProps("os")},get CurrentContext(){return p.getByProps("setTagsContext")}});class u{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}class p{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const r=s[i],{exports:o}=r;let a=null;if(o&&(o.__esModule&&o.default&&e(o.default)&&(a=o.default),e(o)&&(a=o),a)){if(t)return a;n.push(a)}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getModuleByName(e,t){if(h.hasOwnProperty(e))return h[e];if(!t)return;const s=this.getModule(t,!0);return s?h[e]=s:void 0}static getByDisplayName(e){return this.getModule(u.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(u.byCode(e),t)}static getByPrototypes(...e){return this.getModule(u.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(u.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(u.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(u.byProperties(e),!1)}static getByString(...e){return this.getModule(u.byString(...e),!0)}static getAllByString(...e){return this.getModule(u.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}const m=s(0),g=s(2),f=DiscordNative.globals.releaseChannel;var b=new class{constructor(){this.data={misc:{}},this.pluginData={}}initialize(){m.existsSync(this.baseFolder)||m.mkdirSync(this.baseFolder),m.existsSync(this.dataFolder)||m.mkdirSync(this.dataFolder),m.existsSync(this.BDFile)||m.writeFileSync(this.BDFile,JSON.stringify(this.data.misc,null,4)),m.existsSync(this.customCSS)||m.writeFileSync(this.customCSS,"");const e=m.readdirSync(this.dataFolder).filter(e=>!m.statSync(g.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(g.resolve(this.dataFolder,t))}get customCSS(){return this._customCSS||(this._customCSS=g.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=g.resolve(i.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=g.resolve(this.baseFolder,`${f}`))}get BDFile(){return this._BDFile||(this._BDFile=g.resolve(i.dataPath,"data",`${f}.json`))}getPluginFile(e){return g.resolve(i.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e?g.resolve(this.dataFolder,`${e}.json`):g.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,m.writeFileSync(g.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,m.writeFileSync(g.resolve(this.dataFolder,`${e}.json`),JSON.stringify(t,null,4))}loadCustomCSS(){return m.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return m.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:m.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(m.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,m.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],m.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};class y{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static initialize(){this.createElement("bd-head",{target:document.head}),this.createElement("bd-body",{target:document.body}),this.createElement("bd-scripts",{target:this.bdHead}),this.createElement("bd-styles",{target:this.bdHead}),this.createElement("bd-themes",{target:this.bdHead}),this.createElement("style",{id:"customcss",target:this.bdHead})}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,r=document.createElement(e);return s&&(r.className=s),n&&(r.id=n),i&&this.getElement(i).append(r),r}static removeStyle(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement(`#${e}`,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static removeTheme(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement(`#${e}`,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement(`#${e}`,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}const v=s(4);var w=new class extends v{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}},C=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.registerCollection("settings","Settings",a)}initialize(){b.initialize(),this.loadSettings(),this.patchSections()}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setup()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:r=1}=s,o={id:e,order:r,label:t,section:t};i&&(o.clickListener=i),n&&(o.element=n instanceof h.React.Component?()=>h.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(o)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setup(){for(let e=0;e!this.state[e.collection][e.category][e.setting]})}if(s.disableWith){const e=this.getPath(s.disableWith.split("."),t.id,n.id);if(s.hasOwnProperty("disabled"))continue;Object.defineProperty(s,"disabled",{get:()=>this.state[e.collection][e.category][e.setting]})}}}}}}async patchSections(){d.monkeyPatch(p.getByDisplayName("FluxContainer(GuildSettings)").prototype,"render",{after:e=>{e.thisObject._reactInternalFiber.return.return.return.return.return.return.memoizedProps.id="guild-settings"}});const e=await this.getUserSettings();d.monkeyPatch(e.prototype,"render",{after:e=>{e.thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}}),d.monkeyPatch(e.prototype,"generateSections",{after:e=>{let t=e.returnValue.findIndex(e=>"linux"==e.section.toLowerCase())+1;const s=s=>{e.returnValue.splice(t,0,s),t++};s({section:"DIVIDER"}),s({section:"HEADER",label:"BandagedBD"});for(const e of this.collections)e.disabled||s({section:e.name,label:e.name,element:()=>ce.buildSettingsPanel(e.name,e.settings,this.state[e.id],this.onSettingChange.bind(this,e.id),e.button?e.button:null)});for(const t of this.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=s=>t.clickListener(e.thisObject,s,e.returnValue)),s(t);s({section:"CUSTOM",element:()=>ce.attribution})}}),this.forceUpdate()}forceUpdate(){const e=p.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector(`.${e}`);d.getReactInstance(t).return.return.return.return.return.return.stateNode.forceUpdate()}getUserSettings(){return new Promise(e=>{const t=d.monkeyPatch(p.getByProps("getUserSettingsSections").default.prototype,"render",{after:s=>{e(s.returnValue.type),s.thisObject.forceUpdate(),t()}})})}saveSettings(){b.setData("settings",this.state)}loadSettings(){const e=b.getData("settings");if(!e)return this.saveSettings();for(const t in this.state){e[t]||Object.assign(e,{[t]:this.state[t]});for(const s in this.state[t]){e[t][s]||Object.assign(e[t],{[s]:this.state[t][s]});for(const n in this.state[t][s])null!=e[t][s][n]&&(this.state[t][s][n]=e[t][s][n])}}this.saveSettings()}onSettingChange(e,t,s,n){const i=this.collections.length+this.panels.length;this.state[e][t][s]=n,w.dispatch("setting-updated",e,t,s,n);const r=this.collections.length+this.panels.length;this.saveSettings(),i!=r&&setTimeout(this.forceUpdate.bind(this),50)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,r,o,a)=>{i===e&&r===t&&o===s&&n(a)};return w.on("setting-updated",i),()=>{w.off("setting-updated",i)}}};class S extends Error{constructor(e,t,s,n){super(s),this.name=e,this.file=t,this.error=n}}class E extends Error{constructor(e){super(e),this.name="MetaError"}}const P=s(2),x=s(0),k=s(3).Module;k.globalPaths.push(P.resolve(s(1).remote.app.getAppPath(),"node_modules"));const D=/[^\S\r\n]*?\n[^\S\r\n]*?\*[^\S\r\n]?/,M=/^\\@/,B=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class N{get name(){return""}get moduleExtension(){return""}get extension(){return""}get contentFolder(){return""}get prefix(){return"content"}get collection(){return"settings"}get category(){return"content"}get id(){return"autoReload"}emit(e,...t){return w.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.contentList=[],this.state={},this.originalRequire=k._extensions[this.moduleExtension],k._extensions[this.moduleExtension]=this.getContentRequire(),C.on(this.collection,this.category,this.id,e=>{e?this.watchContent():this.unwatchContent()})}initializeContent(){}getContentModification(e,t){return t}startContent(){}stopContent(){}loadState(){const e=b.getData(`${this.prefix}s`);e&&Object.assign(this.state,e)}saveState(){b.setData(`${this.prefix}s`,this.state)}watchContent(){if(this.watcher)return c.error(this.name,"Already watching content.");c.log(this.name,"Starting to watch content."),this.watcher=x.watch(this.contentFolder,{persistent:!1},async(e,t)=>{if(!e||!t||!t.endsWith(this.extension))return;await new Promise(e=>setTimeout(e,50));try{x.statSync(P.resolve(this.contentFolder,t))}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadContent(t,!0)}if(!x.statSync(P.resolve(this.contentFolder,t)).isFile())return;const s=x.statSync(P.resolve(this.contentFolder,t));s&&s.mtime&&s.mtime.getTime()&&"number"==typeof s.mtime.getTime()&&this.timeCache[t]!=s.mtime.getTime()&&(this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadContent(t,!0),"change"==e&&this.reloadContent(t,!0))})}unwatchContent(){if(!this.watcher)return c.error(this.name,"Was not watching content.");this.watcher.close(),delete this.watcher,c.log(this.name,"No longer watching content.")}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new E("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=d.testJSON(s);if(!n)throw new E("META could not be parsed.");if(!n.name)throw new E("META missing name data.");return n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(D))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(M,"@");return s[n]=i.trim(),delete s[""],s}getContentRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=P.resolve(e.contentFolder,P.basename(n));if(!x.existsSync(i)||n!==x.realpathSync(i))return Reflect.apply(t,this,arguments);let r=x.readFileSync(n,"utf8");r=B(r);const o=e.extractMeta(r);o.id=o.name,o.filename=P.basename(n),r=e.getContentModification(s,r,o),s._compile(r,n)}}loadContent(e,t=!1){if(void 0===e)return;try{require(P.resolve(this.contentFolder,e))}catch(n){return new S(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(P.resolve(this.contentFolder,e));if(this.contentList.find(e=>e.id==s.id))return new S(s.name,e,`There is already a plugin with name ${s.name}`);const n=this.initializeContent(s);return n||(this.contentList.push(s),t&&we.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startContent(s):this.state[s.id]=!1)}unloadContent(e,t=!0,s=!1){const n="string"==typeof e?this.contentList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopContent(n):this.disableContent(n)),delete require.cache[require.resolve(P.resolve(this.contentFolder,n.filename))],this.contentList.splice(this.contentList.indexOf(n),1),this.emit("unloaded",n.id),t&&we.success(`${n.name} was unloaded.`),!0)}reloadContent(e,t=!0){const s="string"==typeof e?this.contentList.find(t=>t.id==e||t.filename==e):e,n=this.unloadContent(s,t,!0);return n?this.loadContent(s.filename,t):n}isLoaded(e){return!!this.contentList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.contentList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}enableContent(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startContent(t),this.saveState()))}disableContent(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopContent(t),this.saveState())}toggleContent(e){this.state[e]?this.disableContent(e):this.enableContent(e)}loadNewContent(){const e=x.readdirSync(this.contentFolder),t=this.contentList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.contentList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&x.statSync(P.resolve(this.contentFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewContent();for(const t of e.added)this.loadContent(t);for(const t of e.removed)this.unloadContent(t)}loadAllContent(){this.loadState();const e=[],t=x.readdirSync(this.contentFolder);for(const s of t){if(!x.statSync(P.resolve(this.contentFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadContent(s,!1);t instanceof S&&e.push(t)}return this.saveState(),C.get(this.collection,this.category,this.id)&&this.watchContent(),e}}const T=s(2),j=s(1).remote;var L=new class extends N{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get contentFolder(){return T.resolve(i.dataPath,"plugins")}get prefix(){return"plugin"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;tt.id==e||t.filename==e):e}loadAllPlugins(){const e=this.loadAllContent();return this.setupFunctions(),C.registerPanel("plugins","Plugins",{element:()=>ce.getContentPanel("Plugins",this.contentList,this.state,{folder:this.contentFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this)})}),e}initializeContent(e){if(!e.type)return new S(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new S(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new S(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getContentModification(e,t,s){return e._compile(t,e.filename),d.isEmpty(e.exports)?t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`:(s.type=e.exports,e.exports=s,"")}startContent(e){return this.startPlugin(e)}stopContent(e){return this.stopPlugin(e)}startPlugin(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start(),this.emit("started",t.id),we.show(`${t.name} v${t.version} has started.`)}catch(e){return this.state[t.id]=!1,we.error(`${t.name} v${t.version} could not be started.`),c.stacktrace(this.name,t.name+" could not be started.",e),new S(t.name,t.filename,"start() could not be fired.",{message:e.message,stack:e.stack})}}stopPlugin(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop(),this.emit("stopped",t.id),we.show(`${t.name} v${t.version} has stopped.`)}catch(e){return this.state[t.id]=!1,we.error(`${t.name} v${t.version} could not be stopped.`),c.stacktrace(this.name,t.name+" could not be stopped.",e),new S(t.name,t.filename,"stop() could not be fired.",{message:e.message,stack:e.stack})}}setupFunctions(){j.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;ece.getContentPanel("Themes",this.contentList,this.state,{folder:this.contentFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this)})}),this.loadAllContent()}enableTheme(e){return this.enableContent(e)}disableTheme(e){return this.disableContent(e)}toggleTheme(e){return this.toggleContent(e)}unloadTheme(e){return this.unloadContent(e)}loadTheme(e){const t=this.loadContent(e);t&&Ce.showContentErrors({themes:[t]})}reloadTheme(e){const t=this.reloadContent(e);t&&Ce.showContentErrors({themes:[t]})}getContentModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startContent(e){return this.addTheme(e)}stopContent(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&y.injectTheme(t.id,t.css)}removeTheme(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&y.removeTheme(t.id)}};class A{static get patches(){return this._patches||(this._patches=[])}static getPatchesByCaller(e){if(!e)return[];const t=[];for(const s of this.patches)for(const n of s.children)n.caller===e&&t.push(n);return t}static unpatchAll(e){"string"==typeof e&&(e=this.getPatchesByCaller(e));for(const t of e)t.unpatch()}static resolveModule(e){return e instanceof Function||e instanceof Object&&!(e instanceof Array)?e:"string"==typeof e?h[e]:e instanceof Array?p.findByUniqueProperties(e):null}static makeOverride(e){return function(){let t=void 0;if(!e.children||!e.children.length)return e.originalFunction.apply(this,arguments);for(const t of e.children.filter(e=>"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const n=s.callback(this,arguments,t);void 0!==n&&(t=n)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:r="after",forcePatch:o=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&o&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,c=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);c.proxyFunction||this.rePatch(c);const d={caller:e,type:r,id:c.counter,callback:n,unpatch:()=>{if(c.children.splice(c.children.findIndex(e=>e.id===d.id&&e.type===r),1),c.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return c.children.push(d),c.counter++,d.unpatch}}const z=h.React,I=(h.ReactDOM,"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7"),R="bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8";class _ extends z.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?R:I,t=this.props.className?`${e} ${this.props.className}`:e;return z.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&z.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class U extends z.Component{render(){return z.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},z.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},z.createElement("path",{d:"M0 0h12v12H0"}),z.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class q extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),z.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class V extends z.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this),this.showSettings=this.showSettings.bind(this),this.state={checked:this.props.enabled,settingsOpen:!1},this.hasSettings="function"==typeof this.props.content.plugin.getSettingsPanel,this.settingsPanel="",this.panelRef=z.createRef(),this.reload=this.reload.bind(this)}reload(){this.props.reload&&(this.props.content=this.props.reload(this.props.content.id),this.forceUpdate())}componentDidUpdate(){if(this.state.settingsOpen){this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel);const e=(e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,r=i+t.clientHeight;return in},t=$(this.panelRef.current),s=t.parents(".scroller-2FKFPG");if(!e(s[0],t[0]))return;s.animate({scrollTop:t.offset().top-s.offset().top+s.scrollTop()-30},300)}}getString(e){return"string"==typeof e?e:e.toString()}render(){const{content:e}=this.props,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version),r=e.website,o=e.source;if(this.state.settingsOpen){try{this.settingsPanel=e.plugin.getSettingsPanel()}catch(t){c.stacktrace("Plugin Settings","Unable to get settings panel for "+e.name+".",t)}const s={id:`plugin-settings-${t}`,className:"plugin-settings",ref:this.panelRef};return"string"==typeof this.settingsPanel&&(s.dangerouslySetInnerHTML=this.settingsPanel),z.createElement("li",{className:"settings-open ui-switch-item"},z.createElement("div",{style:{float:"right",cursor:"pointer"},onClick:()=>{this.panelRef.current.innerHTML="",this.setState({settingsOpen:!1})}},z.createElement(U,null)),z.createElement("div",s,this.settingsPanel instanceof z.Component?this.settingsPanel:null))}return z.createElement("li",{"data-name":t,"data-version":i,className:"settings-closed ui-switch-item"},z.createElement("div",{className:"bda-header"},z.createElement("span",{className:"bda-header-title"},z.createElement("span",{className:"bda-name"},t)," v",z.createElement("span",{className:"bda-version"},i)," by ",z.createElement("span",{className:"bda-author"},s)),z.createElement("div",{className:"bda-controls"},!C.get("settings","content","autoReload")&&z.createElement(q,{className:"bd-reload bd-reload-card",onClick:this.reload}),z.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},z.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),z.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),z.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},z.createElement("div",{className:"bda-description scroller"},n)),(r||o||this.hasSettings)&&z.createElement("div",{className:"bda-footer"},z.createElement("span",{className:"bda-links"},r&&z.createElement("a",{className:"bda-link bda-link-website",href:r,target:"_blank"},"Website"),r&&o&&" | ",o&&z.createElement("a",{className:"bda-link bda-link-source",href:o,target:"_blank"},"Source")),this.hasSettings&&z.createElement("button",{onClick:this.showSettings,className:"bd-button bd-button-plugin-settings",disabled:!this.state.checked},"Settings")))}onChange(){this.setState({checked:!this.state.checked}),this.props.onChange&&this.props.onChange(this.props.content.id)}showSettings(){this.hasSettings&&this.setState({settingsOpen:!0})}}class W extends z.Component{constructor(e){super(e),this.state={checked:this.props.enabled,reloads:0},this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this)}reload(){this.props.reload&&(this.props.content=this.props.reload(this.props.content.id),this.forceUpdate())}render(){const{content:e}=this.props,t=e.name,s=e.description,n=e.version,i=e.author,r=e.website,o=e.source;return z.createElement("li",{"data-name":t,"data-version":n,className:"settings-closed ui-switch-item"},z.createElement("div",{className:"bda-header"},z.createElement("span",{className:"bda-header-title"},z.createElement("span",{className:"bda-name"},t)," v",z.createElement("span",{className:"bda-version"},n)," by ",z.createElement("span",{className:"bda-author"},i)),z.createElement("div",{className:"bda-controls"},!C.get("settings","content","autoReload")&&z.createElement(q,{className:"bd-reload bd-reload-card",onClick:this.reload}),z.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},z.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),z.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),z.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},z.createElement("div",{className:"bda-description scroller"},s)),(r||o)&&z.createElement("div",{className:"bda-footer"},z.createElement("span",{className:"bda-links"},r&&z.createElement("a",{className:"bda-link",href:r,target:"_blank"},"Website"),r&&o&&" | ",o&&z.createElement("a",{className:"bda-link",href:o,target:"_blank"},"Source"))))}onChange(){this.setState({checked:!this.state.checked}),this.props.onChange&&this.props.onChange(this.props.content.id)}}class H extends z.Component{reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}render(){const{title:e,folder:t,contentList:n,contentState:i,onChange:r,reload:o}=this.props,a=!C.get("settings","content","autoReload"),l=t?{title:`Open ${e} Folder`,onClick:()=>{s(1).shell.openItem(t)}}:null;return[z.createElement(_,{key:"title",text:e,button:l,otherChildren:a&&z.createElement(q,{className:"bd-reload",onClick:this.reload.bind(this)})}),z.createElement("ul",{key:"ContentList",className:"bda-slist"},n.sort((e,t)=>e.name.toLowerCase().localeCompare(t.name.toLowerCase())).map(e=>{const t=e.type?V:W;return z.createElement(t,{showReloadIcon:a,key:e.id,enabled:i[e.id],content:e,onChange:r,reload:o})}))]}}class G extends z.Component{render(){return z.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}const J="flex-1xMQg5 flex-1O1GKY vertical-V37hAW flex-1O1GKY directionColumn-35P_nr justifyStart-2NDFzi alignStretch-DpGPf3 noWrap-3jynv6 switchItem-2hKKKK",Y="flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2NDFzi alignStart-H-X2h- noWrap-3jynv6",Z="flexChild-faoVW3",K="titleDefault-a8-ZSr title-31JmR4 da-titleDefault da-title",X="flexChild-faoVW3 da-flexChild switchDisabled-3HsXAJ switch-3wwwcV da-switchDisabled da-switch valueUnchecked-2lU_20 value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",Q="flexChild-faoVW3 da-flexChild switchDisabled-3HsXAJ switch-3wwwcV da-switchDisabled da-switch valueChecked-m-4IJZ value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",ee="flexChild-faoVW3 da-flexChild switchEnabled-V2WDBB switch-3wwwcV da-switchEnabled da-switch valueUnchecked-2lU_20 value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",te="flexChild-faoVW3 da-flexChild switchEnabled-V2WDBB switch-3wwwcV da-switchEnabled da-switch valueChecked-m-4IJZ value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",se="checkboxEnabled-CtinEn checkbox-2tyjJg",ne="checkboxDisabled-1MA81A checkbox-2tyjJg",ie="description-3_Ncsb formText-3fs7AJ note-1V3kyJ modeDefault-3a2Ph1 primary-jw0I4K",re="divider-3573oO dividerDefault-3rvLe-";class oe extends z.Component{constructor(e){super(e),this.state={checked:this.props.checked}}onChange(){this.props.disabled||(this.props.onChange(this.props.id,!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?this.state.checked?Q:X:this.state.checked?te:ee;return z.createElement("div",{className:J,style:{flex:"1 1 auto"}},z.createElement("div",{className:Y,style:{flex:"1 1 auto"}},z.createElement("div",{className:Z,style:{flex:"1 1 auto"}},z.createElement("label",{htmlFor:this.props.id,className:K},this.props.name||this.props.data.text)),z.createElement("div",{className:e,tabIndex:"0",style:{flex:"0 0 auto"}},z.createElement("input",{id:this.props.id,className:this.props.disabled?ne:se,type:"checkbox",tabIndex:"-1",checked:this.state.checked,onChange:e=>this.onChange(e)}))),z.createElement("div",{className:ie,style:{flex:"1 1 auto"}},this.props.note||this.props.data.info),z.createElement("div",{className:re}))}}const ae="bd-settings-group";class le extends z.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=z.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>e.style.setProperty("height",""),t))}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t=this.props.collapsible?`collapsible ${this.state.collapsed&&"collapsed"}`:"",s=`${ae} ${t}`;return z.createElement("div",{className:s},z.createElement(_,{text:this.props.name,collapsible:this.props.collapsible,onClick:()=>this.toggleCollapse(),button:this.props.button,isGroup:!0}),z.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>z.createElement(oe,{disabled:e.disabled,id:e.id,key:e.id,name:e.name,note:e.note,checked:e.value,onChange:this.onChange}))),this.props.showDivider&&z.createElement(G,null))}}class ce{static buildSettingsPanel(e,t,s,n,i=null){return t.forEach(e=>{e.settings.forEach(t=>t.value=s[e.id][t.id])}),this.getSettingsPanel(e,t,n,i)}static getSettingsPanel(e,t,s,n=null){return[z.createElement(_,{text:e,button:n}),t.map(e=>z.createElement(le,Object.assign({},e,{onChange:s})))]}static getContentPanel(e,t,s,n={}){return z.createElement(H,Object.assign({},{title:e,contentList:t,contentState:s},n))}static get attribution(){return z.createElement("div",{style:{fontSize:"12px",fontWeight:"600",color:"#72767d",padding:"2px 10px"}},`BBD v${i.bbdVersion} by `,z.createElement("a",{href:"https://github.com/rauenzi/",target:"_blank"},"Zerebos"))}}const de=p.getByProps("getSortedGuilds"),he=p.getByProps("getUserAvatarURL","DEFAULT_AVATARS"),ue=p.getByProps("acceptInvite"),pe=s(1).remote.BrowserWindow;class me{static get endPoint(){return"https://search.discordservers.com"}static get joinEndPoint(){return"https://j.discordservers.com"}static get connectEndPoint(){return"https://auth.discordservers.com/info"}static getDefaultAvatar(){return he.DEFAULT_AVATARS[Math.floor(5*Math.random())]}static hasJoined(e){return de.guildPositions.includes(e)}static search({term:e="",category:t="",from:s=0}={}){return new Promise(n=>{const i=[];t&&i.push(`category=${t.replace(/ /g,"%20")}`),e&&i.push(`term=${e.replace(/ /g,"%20")}`),s&&i.push(`from=${s}`);const r=`?${i.join("&")}`;$.ajax({method:"GET",url:`${this.endPoint}${r}`,success:e=>{const t=e.size+e.from;n({servers:e.results,size:e.size,from:e.from,total:e.total,next:t>=e.total?null:t})},error:()=>n(null)})})}static join(e,t=!1){return new Promise(s=>{if(t)return ue.acceptInvite(e),s(!0);$.ajax({method:"GET",url:`${this.joinEndPoint}/${e}`,headers:{Accept:"application/json;","Content-Type":"application/json;","x-discord-token":this._accessToken},crossDomain:!0,xhrFields:{withCredentials:!0},success:()=>s(!0),error:()=>s(!1)})})}static checkConnection(){return new Promise(e=>{try{$.ajax({method:"GET",url:this.connectEndPoint,headers:{Accept:"application/json;","Content-Type":"application/json;"},crossDomain:!0,xhrFields:{withCredentials:!0},success:t=>{this._accessToken=t.access_token,e(t)},error:()=>e(!1)})}catch(t){e(!1)}})}static connect(){return new Promise(e=>{const t=new pe(this.windowOptions),s=`https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:500,height:550,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}class ge extends z.Component{constructor(e){super(e),this.props.server.iconUrl||(this.props.server.iconUrl=me.getDefaultAvatar()),this.state={imageError:!1,joined:me.hasJoined(this.props.server.identifier)}}render(){const{server:e}=this.props;return z.createElement("div",{className:`card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${e.pinned?" bd-server-card-pinned":""}`},z.createElement("img",{ref:"img",className:"bd-server-image",src:e.iconUrl,onError:this.handleError.bind(this)}),z.createElement("div",{className:"flexChild-faoVW3 bd-server-content"},z.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},z.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},e.name),z.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},e.members," Members")),z.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},z.createElement("div",{className:"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},z.createElement("div",{className:"scroller-2FKFPG scroller bd-server-description"},e.description))),z.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},z.createElement("div",{className:"flexChild-faoVW3 bd-server-tags",style:{flex:"1 1 auto"}},e.categories.join(", ")),this.state.joined&&z.createElement("button",{type:"button",className:"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#3ac15c"}},z.createElement("div",{className:"ui-button-contents"},"string"==typeof this.state.joined?"Joining...":"Joined")),e.error&&z.createElement("button",{type:"button",className:"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#c13a3a"}},z.createElement("div",{className:"ui-button-contents"},"Error")),!e.error&&!this.state.joined&&z.createElement("button",{type:"button",className:"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",style:{minHeight:"12px",marginTop:"4px"},onClick:()=>{this.join()}},z.createElement("div",{className:"ui-button-contents"},"Join")))))}handleError(){this.props.server.iconUrl=me.getDefaultAvatar(),this.setState({imageError:!0})}async join(){this.setState({joined:"joining"});const e=await me.join(this.props.server.identifier,this.props.server.nativejoin);this.setState({joined:e})}}const fe=p.getByDisplayName("SettingsView");class be extends z.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await me.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await me.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await me.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}get searchBox(){return z.createElement("input",{onKeyDown:this.searchKeyDown,type:"text",className:"bd-search",placeholder:"Search...",value:this.state.query,maxLength:"50"})}get title(){if(!this.state.user)return"Not connected to DiscordServers.com!";if(this.state.loading)return"Loading...";const e=this.state.results.from+1,t=this.state.results.total;let s=`Showing ${e}-${this.state.results.next?this.state.results.next:t} of ${t} results in ${this.state.category}`;return this.state.query&&(s+=` for ${this.state.query}`),s}get content(){const e=this.state.user?null:{title:"Connect",onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>z.createElement(ge,{key:e.identifier,server:e}));return[z.createElement(_,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&z.createElement(_,{text:this.title})]}get nextButton(){return z.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?"Loading":"Load More")}get connection(){const{user:e}=this.state;return e?z.createElement("div",{id:"bd-connection"},z.createElement("div",{className:"bd-footnote"},"Connected as: ",`${e.username}#${e.discriminator}`),z.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},"Reconnect")):z.createElement("div",{id:"bd-connection"})}get bdServer(){return z.createElement(ge,{server:{name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0},pinned:!0})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return z.createElement(fe,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:"Search"},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:"Categories"},...e,{section:"DIVIDER"},{section:"HEADER",label:z.createElement("a",{href:"https://discordservers.com",target:"_blank"},"Discordservers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const ye=p.getByProps("channels").channels.split(" ")[0],ve=p.getByProps("membersWrap").membersWrap.split(" ")[0];class we{static get shouldShowToasts(){return C.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:r=!1}=t;if(!this.shouldShowToasts&&!r)return;this.ensureContainer();const o=document.createElement("div");o.classList.add("bd-toast"),s&&o.classList.add("toast-"+s),s&&n&&o.classList.add("icon"),o.innerText=e,document.querySelector(".bd-toasts").appendChild(o),setTimeout(()=>{o.classList.add("closing"),setTimeout(()=>{o.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${ye} + div`),t=e.querySelector(`.${ve}`),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,r=i?i-e.getBoundingClientRect().left:e.offsetWidth,o=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",r+"px"),a.style.setProperty("bottom",o+"px"),document.querySelector("#app-mount").appendChild(a)}}class Ce{static get shouldShowContentErrors(){return C.get("settings","content","contentErrors")}static get ModalStack(){return p.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return p.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return p.getByProps("Sizes","Weights")}static get ConfirmationModal(){return p.getModule(e=>e.defaultProps&&e.key&&"confirm-modal"==e.key())}static default(e,t){const s=$(`
\n
\n \n
`);s.find(".footer button").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.find(".bd-backdrop").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.appendTo("#app-mount")}static alert(e,t){if(this.ModalStack&&this.AlertModal)return this.default(e,t);this.ModalStack.push(function(s){return z.createElement(this.AlertModal,Object.assign({title:e,body:t},s))})}static showConfirmationModal(e,t,s={}){const n=this.TextElement,i=this.ConfirmationModal,r=this.ModalStack;if(!this.ModalStack||!this.ConfirmationModal||!this.TextElement)return this.alert(e,t);const{onConfirm:o,onCancel:a,confirmText:l,cancelText:c,danger:d=!1}=s;"string"==typeof t?t=n.default({color:n.Colors.PRIMARY,children:[t]}):Array.isArray(t)&&(t=n.default({color:n.Colors.PRIMARY,children:t})),t=[t];const h=()=>{};r.push(function(s){return z.createElement(i,Object.assign({header:e,children:t,red:d,confirmText:l||"Okay",cancelText:c||"Cancel",onConfirm:o||h,onCancel:a||h},s))})}static showContentErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowContentErrors)return;if(!e.length&&!t.length)return;const s=$('
\n
\n \n
'),n=function(e){const t=$('
');for(const s of e){const e=$(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.find("a").on("click",e=>{e.preventDefault(),c.stacktrace("ContentError",`Error details for ${s.name?s.name:s.file}.`,s.error)})}return t},i=[n(e),n(t)];s.find(".tab-bar-item").on("click",e=>{e.preventDefault(),s.find(".tab-bar-item").removeClass("selected"),$(e.target).addClass("selected"),s.find(".scroller").empty().append(i[$(e.target).index()])}),s.find(".footer button").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.find(".bd-backdrop").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.appendTo("#app-mount"),e.length?s.find(".tab-bar-item")[0].click():s.find(".tab-bar-item")[1].click()}}const Se={get React(){return h.React},get ReactDOM(){return h.ReactDOM},get WindowConfigFile(){if(this._windowConfigFile)return this._windowConfigFile;const e=s(1).remote.app,t=s(2),n=e.getAppPath(),i=e.getPath("userData"),r=t.resolve(i,e.getVersion(),"modules","discord_desktop_core","injector","config.json"),o=t.resolve(n,"..","app","config.json"),a=s(0),l=a.existsSync(o)?o:a.existsSync(r)?r:null;return this._windowConfigFile=l||null},getAllWindowPreferences:function(){return this.WindowConfigFile?require(this.WindowConfigFile):{}},getWindowPreference:function(e){if(this.WindowConfigFile)return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){if(!this.WindowConfigFile)return;const n=s(0),i=this.getAllWindowPreferences();i[e]=t,delete s.c[this.WindowConfigFile],n.writeFileSync(this.WindowConfigFile,JSON.stringify(i,null,4))},injectCSS:function(e,t){y.injectStyle(e,t)},clearCSS:function(e){y.removeStyle(e)},linkJS:function(e,t){return y.injectScript(e,t)},unlinkJS:function(e){y.removeScript(e)},alert:function(e,t){Ce.alert(e,t)},showConfirmationModal:function(e,t,s={}){return Ce.showConfirmationModal(e,t,s)},showToast:function(e,t={}){we.show(e,t)},findModule:function(e){return p.getModule(e)},findAllModules:function(e){return p.getModule(e,!1)},findModuleByProps:function(...e){return p.getByProps(...e)},findModuleByPrototypes:function(...e){return p.getByPrototypes(...e)},findModuleByDisplayName:function(e){return p.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),d.getReactInstance(e)},loadData:function(e,t){return b.getPluginData(e,t)}};Se.getData=Se.loadData,Se.saveData=function(e,t,s){return b.setPluginData(e,t,s)},Se.setData=Se.saveData,Se.deleteData=function(e,t){return b.deletePluginData(e,t)},Se.monkeyPatch=function(e,t,s){return d.monkeyPatch(e,t,s)},Se.onRemoved=function(e,t){return d.onRemoved(e,t)},Se.suppressErrors=function(e,t){return d.suppressErrors(e,t)},Se.testJSON=function(e){return d.testJSON(e)},Se.getBDData=function(e){return b.getBDData(e)},Se.setBDData=function(e,t){return b.setBDData(e,t)};var Ee=Se;class Pe extends z.Component{render(){return z.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},z.createElement("metadata",null),z.createElement("defs",null,z.createElement("filter",{id:"shadow1"},z.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),z.createElement("filter",{id:"shadow2"},z.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),z.createElement("filter",{id:"shadow3"},z.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),z.createElement("g",null,z.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),z.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),z.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}var xe=new class{constructor(){this.editorDetached=!1}initialize(){Ee.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),Ee.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),Ee.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),Ee.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")()}get messageClasses(){return p.getByProps("message","containerCozy")}get guildClasses(){const e=p.getByProps("wrapper","unreadMentionsBar"),t=p.getByProps("guildsError","selected"),s=p.getByProps("blobContainer");return Object.assign({},e,t,s)}get MessageContentComponent(){return p.getModule(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"))}get TimeFormatter(){return p.getByProps("dateFormat")}get TooltipWrapper(){return p.getByDisplayName("TooltipDeprecated")}get NativeModule(){return p.getByProps("setBadge")}get Tooltips(){return p.getModule(e=>e.hide&&e.show&&!e.search&&!e.submit&&!e.search&&!e.activateRagingDemon&&!e.dismiss)}get KeyGenerator(){return p.getModule(e=>e.toString&&/"binary"/.test(e.toString()))}patchSocial(){if(this.socialPatch)return;const e=Ee.findModule(e=>"TabBar"==e.displayName),t=Ee.findModule(e=>"Anchor"==e.displayName);e&&t&&(this.socialPatch=Ee.monkeyPatch(e.prototype,"render",{after:e=>{const s=e.returnValue.props.children;if(!s||!s.length)return;if("Separator"!==s[s.length-2].type.displayName)return;if(!s[s.length-1].type.toString().includes("socialLinks"))return;const n=s[s.length-1].type;s[s.length-1].type=function(){const e=n(...arguments);return e.props.children.push(Ee.React.createElement(t,{className:"bd-social-link",href:"https://github.com/rauenzi/BetterDiscordApp",rel:"author",title:"BandagedBD",target:"_blank"},Ee.React.createElement(Pe,{size:"16px",className:"bd-social-logo"}))),e}}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=this.guildClasses.listItem.split(" ")[0],t=this.guildClasses.blobContainer.split(" ")[0],s=Ee.getInternalInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=Ee.monkeyPatch(s.prototype,"render",{after:e=>{const t=e.returnValue,s=e.thisObject.props;return t.props.className+=" bd-guild",s.unread&&(t.props.className+=" bd-unread"),s.selected&&(t.props.className+=" bd-selected"),s.audio&&(t.props.className+=" bd-audio"),s.video&&(t.props.className+=" bd-video"),s.badge&&(t.props.className+=" bd-badge"),s.animatable&&(t.props.className+=" bd-animatable"),t}}))}patchGuildPills(){if(this.guildPillPatch)return;const e=Ee.findModule(e=>e.default&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=Ee.monkeyPatch(e,"default",{after:e=>{const t=e.methodArguments[0];return t.unread&&(e.returnValue.props.className+=" bd-unread"),t.selected&&(e.returnValue.props.className+=" bd-selected"),t.hovered&&(e.returnValue.props.className+=" bd-hovered"),e.returnValue}}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=Ee.findModuleByDisplayName("Guilds"),t=Ee.findModuleByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=Ee.monkeyPatch(e.prototype,"render",{after:e=>{e.returnValue.props.children[1].props.children[3].type=s}})}};class ke{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){C.get(this.collection,this.category,this.id)&&await this.enable(),w.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())})}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),C.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),C.get(e,t,s)}async enable(){this.log("Enabled"),await this.enabled()}async disable(){this.log("Disabled"),await this.disabled()}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}after(e,t,s){return A.after(this.name,e,t,s)}unpatchAll(){return A.unpatchAll(this.name)}}var De=new class extends ke{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const Me=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var Be=new class extends ke{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(p.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(p.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!Me.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(Me)[1];if(!i)continue;const r=i.split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${r}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const r=n.split(" ");for(const t of r)t.startsWith(`${e}-`)||(i+=` ${t}`);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add(`da-${n}`)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;ee.call(this,t))}}},Ne=new class extends ke{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.enableSelectors=this.enableSelectors.bind(this),this.disableSelectors=this.disableSelectors.bind(this)}enabled(){$(window).on("keydown.bdDevmode",e=>{119!==e.which&&118!=e.which||this.log("Debugger Activated")}),this.selectorMode&&this.enableSelectors(),this.selectorCancel=this.registerSetting(this.selectorModeID,this.enableSelectors,this.disableSelectors)}disabled(){$(window).off("keydown.bdDevmode"),this.selectorMode&&this.disableSelectors(),this.selectorCancel&&this.selectorCancel()}enableSelectors(){$(document).on("contextmenu.bdDevmode",e=>{this.lastSelector=this.getSelector(e.toElement);setImmediate(()=>{let t=$(".contextMenu-HLZMGh");t.length<=0&&((t=$('
')).addClass($(".app, .app-2rEoOp").hasClass("theme-dark")?"theme-dark":"theme-light"),t.appendTo(".app, .app-2rEoOp"),t.css("top",e.clientY),t.css("left",e.clientX),$(document).on("click.bdDevModeCtx",()=>{t.remove(),$(document).off(".bdDevModeCtx")}),$(document).on("contextmenu.bdDevModeCtx",()=>{t.remove(),$(document).off(".bdDevModeCtx")}),$(document).on("keyup.bdDevModeCtx",e=>{27===e.keyCode&&(t.remove(),$(document).off(".bdDevModeCtx"))}));const s=$("
",{class:"itemGroup-1tL0uz"}),n=$("
",{class:"item-1Yvehc",click:()=>{h.ElectronModule.copy(this.lastSelector),t.hide()}}).append($("",{text:"Copy Selector"}));s.append(n),t.append(s),t.hasClass("undefined")&&t.css("top","-="+s.outerHeight())}),e.stopPropagation()})}disableSelectors(){$(document).off("contextmenu.bdDevmode"),$(document).off("contextmenu.bdDevModeCtx")}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}getSelector(e){if(e.id)return`#${e.id}`;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?`.${Array.from(e.classList).join(".")}`:`.${Array.from(e.parentElement.classList).join(".")}`}};const Te=p.getByProps("pushLayer");var je=new class extends ke{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=xe.guildClasses.wrapper.split(" ")[0];$(`.${e} .scroller-2FKFPG >:first-child`).after(this.button)}disabled(){$("#bd-pub-li").remove()}openPublicServers(){Te.pushLayer(()=>h.React.createElement(be,{close:Te.popLayer}))}get button(){return $("
",{class:xe.guildClasses.listItem,id:"bd-pub-li"}).append($("
",{class:"wrapper-25eVIn "+xe.guildClasses.circleButtonMask,text:"public",id:"bd-pub-button",click:()=>{this.openPublicServers()}}))}},Le=new class extends ke{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bda-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bda-dark")}},Fe=new class extends ke{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},Oe=new class extends ke{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(h.TimeFormatter,"calendarFormat",t),this.after(h.TimeFormatter,"dateFormat",t)}};const Ae=p.getModule(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"));var $e=new class extends ke{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(Ae.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},ze=new class extends ke{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){h.ChannelActions.selectVoiceChannel(null,null)}};class Ie extends z.Component{constructor(e){super(e);const t=!!(Ge&&Ge.favoriteEmotes&&Ge.favoriteEmotes[this.label]);this.state={shouldAnimate:!this.animateOnHover,isFavorite:t},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this)}get animateOnHover(){return C.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?` emote${this.props.modifier}`:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0}),!this.state.isFavorite&&Ge.favoriteEmotes[this.label]?this.setState({isFavorite:!0}):this.state.isFavorite&&!Ge.favoriteEmotes[this.label]&&this.setState({isFavorite:!1})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}render(){return z.createElement(xe.TooltipWrapper,{color:"black",position:"top",text:this.label,delay:750},z.createElement("div",{className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},z.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),z.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:"Favorite!",type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation(),this.state.isFavorite?(delete Ge.favoriteEmotes[this.label],Ge.updateFavorites()):Ge.favorite(this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}})))}}const Re={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}},_e={TwitchGlobal:"twitch",TwitchSubscriber:"twitch",BTTV:"bttv",FrankerFaceZ:"ffz",BTTV2:"bttv"},Ue=[],qe=["twitch","bttv","ffz"],Ve=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var We=new class extends ke{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(_e).filter(e=>this.isCategoryEnabled(_e[e]))}isCategoryEnabled(e){return super.get("emotes","categories",e)}get(e){return super.get("emotes","general",e)}get MessageContentComponent(){return p.getModule(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"))}get Emotes(){return Re}get TwitchGlobal(){return Re.TwitchGlobal}get TwitchSubscriber(){return Re.TwitchSubscriber}get BTTV(){return Re.BTTV}get FrankerFaceZ(){return Re.FrankerFaceZ}get BTTV2(){return Re.BTTV2}get blacklist(){return Ue}getCategory(e){return Re[e]}initialize(){super.initialize()}async enabled(){C.registerCollection("emotes","Emotes",o,{title:"Clear Emote Cache",onClick:()=>{this.clearEmoteData(),this.loadEmoteData(r)}})}disabled(){C.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}emptyEmotes(){for(const e in Re)Object.assign(Re,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.after(this.MessageContentComponent.prototype,"render",(e,t,s)=>{this.after(s.props,"children",(e,t,s)=>{if(0==this.categories.length)return;const n=s.props.children[1];if(!n.props.children)return;const i=n.props.children[1];if(i&&i.length){for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of i)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}})}))}async loadEmoteData(e){this.emotesLoaded=!1;const t=s(0),n=i.dataPath+"emote_data.json";if(t.existsSync(n)&&this.isCacheValid()){we.show("Loading emotes from cache.",{type:"info"}),this.log("Loading emotes from local cache.");const s=await new Promise(e=>{t.readFile(n,"utf8",(t,s)=>{this.log("Emotes loaded from cache."),t&&(s={}),e(s)})}),i=d.testJSON(s);let r=!!i;r&&Object.assign(Re,i);for(const t in e)r=Object.keys(Re[e[t].variable]).length>0;if(r)return we.show("Emotes successfully loaded.",{type:"success"}),this.emotesLoaded=!0,void w.dispatch("emotes-loaded");this.log("Cache was corrupt, downloading..."),t.unlinkSync(n)}if(C.get(this.category,"general","download")){we.show("Downloading emotes in the background do not reload.",{type:"info"});for(const t in e){await new Promise(e=>setTimeout(e,1e3));const s=await this.downloadEmotes(e[t]);Re[e[t].variable]=s}we.show("All emotes successfully downloaded.",{type:"success"});try{t.writeFileSync(n,JSON.stringify(Re),"utf8")}catch(e){this.stacktrace("Could not save emote data.",e)}this.emotesLoaded=!0,w.dispatch("emotes-loaded")}}downloadEmotes(e){const t=s(5),n={url:e.url,timeout:e.timeout?e.timeout:5e3,json:!0};return this.log(`Downloading: ${e.variable} (${e.url})`),new Promise((s,i)=>{t(n,(t,n,r)=>{if(t)return this.stacktrace("Could not download "+e.variable,t),e.backup?(e.url=e.backup,e.backup=null,e.backupParser&&(e.parser=e.backupParser),s(this.downloadEmotes(e))):i({});"function"==typeof e.parser&&(r=e.parser(r));for(const t in r)t.length<4||Ue.includes(t)?delete r[t]:r[t]=e.getEmoteURL(r[t]);s(r),this.log("Downloaded: "+e.variable)})})}getBlacklist(){return new Promise(e=>{$.getJSON("https://rauenzi.github.io/BetterDiscordApp/data/emotefilter.json",function(t){e(Ue.push(...t.blacklist))})})}isCacheValid(){const e=b.getBDData("emoteCacheDays")||b.setBDData("emoteCacheDays",7)||7,t=new Date(b.getBDData("emoteCacheDate")||null),s=new Date;return!(Math.round(Math.abs((s.getTime()-t.getTime())/864e5))>e)||(b.setBDData("emoteCacheDate",s.toJSON()),!1)}clearEmoteData(){const e=s(0),t=i.dataPath+"emote_data.json";e.existsSync(t)&&e.unlinkSync(t),b.setBDData("emoteCacheDate",(new Date).toJSON());for(const e in Re)Object.assign(Re,{[e]:{}})}};const He=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,r=$(`
\n ${e}\n
`)[0];return n&&r.addEventListener("contextmenu",n),r.addEventListener("click",i),r};var Ge=new class extends ke{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bda-qem-emojis",this.favoriteEmotes={},this.qmeHeader=$('
\n \n \n
')[0];for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=$('
\n
\n
\n
\n\n
\n
\n
\n
')[0],this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=$('
\n
\n
\n
\n\n
\n
\n
\n
')[0],this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}initialize(){super.initialize();const e=b.getBDData("bdfavemotes");""!==e&&null!==e&&(this.favoriteEmotes=JSON.parse(window.atob(e))),this.updateFavorites()}async enabled(){this.log("Starting to observe"),this.observer.observe(document.getElementById("app-mount"),{childList:!0,subtree:!0}),this.hideEmojiCancel=this.registerSetting(this.hideEmojisID,this.enableHideEmojis,this.disableHideEmojis),this.hideEmojis&&this.enableHideEmojis(),We.emotesLoaded&&this.updateTwitchEmotes(),w.on("emotes-loaded",this.updateTwitchEmotes)}disabled(){w.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){$(".emojiPicker-3m1S-j").addClass("bda-qme-hidden")}disableHideEmojis(){$(".emojiPicker-3m1S-j").removeClass("bda-qme-hidden")}insertEmote(e){const t=d.getTextArea();d.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bda-qem-favourite-container").offset().top,left:e.pageX-$("#bda-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),delete this.favoriteEmotes[$(t).attr("title")],this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))})}switchMenu(e){let t="string"==typeof e?e:$(e.target).attr("id");"bda-qem-emojis"==t&&this.hideEmojis&&(t="bda-qem-favourite");const s=$("#bda-qem-twitch"),n=$("#bda-qem-favourite"),i=$("#bda-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bda-qem-favourite-container").hide(),$("#bda-qem-twitch-container").hide(),t){case"bda-qem-twitch":s.addClass("active"),$("#bda-qem-twitch-container").show();break;case"bda-qem-favourite":n.addClass("active"),$("#bda-qem-favourite-container").show();break;case"bda-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("popout-3sVMXz")||t.classList.contains("popoutLeft-30WmrD")||!t.getElementsByClassName("emojiPicker-3m1S-j").length)return;const s=$(t);this.hideEmojis?s.addClass("bda-qme-hidden"):s.removeClass("bda-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}favorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.updateFavorites()}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in We.getCategory("TwitchGlobal")){if(!We.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=We.getCategory("TwitchGlobal")[e],s=He(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in this.favoriteEmotes){const t=this.favoriteEmotes[e],s=He(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}b.setBDData("bdfavemotes",window.btoa(JSON.stringify(this.favoriteEmotes)))}},Je=new class extends ke{get name(){return"EmoteAutocapitalize"}get collection(){return"emotes"}get category(){return"general"}get id(){return"autoCaps"}enabled(){$("body").off(".bdac"),$("body").on("keyup.bdac change.bdac paste.bdac",$(".channelTextArea-1LDbYG textarea:first"),()=>{const e=$(".channelTextArea-1LDbYG textarea:first").val();if(null==e)return;const t=e.split(" ").pop();if(t.length>3){if("danSgame"==t)return;const s=this.capitalize(t.toLowerCase());null!=s&&d.insertText(d.getTextArea()[0],e.replace(t,s))}})}disabled(){$("body").off(".bdac")}capitalize(e){const t=We.getCategory("TwitchGlobal");for(const s in t)if(t.hasOwnProperty(s)&&e==(s+"").toLowerCase())return s}};const Ye=s(0),Ze=s(2);var Ke=new class extends ke{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}get WindowConfigFile(){if(this._windowConfigFile)return this._windowConfigFile;const e=s(1).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=Ze.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector","config.json"),r=Ze.resolve(t,"..","app","config.json"),o=Ye.existsSync(r)?r:Ye.existsSync(i)?i:null;return this._windowConfigFile=o||null}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor",null)}disabled(){this.setWindowPreference("transparent",!1),this.setWindowPreference("backgroundColor","#2f3136")}getAllWindowPreferences(){return this.WindowConfigFile?require(this.WindowConfigFile):{}}getWindowPreference(e){if(this.WindowConfigFile)return this.getAllWindowPreferences()[e]}setWindowPreference(e,t){if(!this.WindowConfigFile)return;const n=this.getAllWindowPreferences();n[e]=t,delete s.c[this.WindowConfigFile],Ye.writeFileSync(this.WindowConfigFile,JSON.stringify(n,null,4))}};class Xe extends z.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return z.createElement("div",{className:"checkbox-item"},z.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),z.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},z.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},z.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),z.createElement("span",null)),z.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function Qe(){return(Qe=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==nt.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme(`ace/theme/${t}`),this.editor.session.setMode(`ace/mode/${this.props.language}`),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return z.createElement(Xe,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return z.createElement(et,{color:"black",position:"top",text:e.tooltip},t=>z.createElement("button",Qe({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return z.createElement("div",{id:"bd-editor-panel",className:this.props.theme},z.createElement("div",{id:"bd-editor-controls"},z.createElement("div",{className:"controls-section controls-left"},e),z.createElement("div",{className:"controls-section controls-right"},t)),z.createElement("div",{className:"editor-wrapper"},z.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class it extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),z.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class rt extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),z.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class ot extends z.Component{render(){const e=this.props.size||"20px";return z.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},z.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),z.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class at extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),z.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class lt extends z.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:z.createElement(q,{size:"18px"}),tooltip:"Update",onClick:this.updateCss},{label:z.createElement(it,{size:"18px"}),tooltip:"Save",onClick:this.saveCss},{label:z.createElement(rt,{size:"18px"}),tooltip:"Open in System Editor",onClick:this.openNative},{label:z.createElement(ot,{size:"18px"}),tooltip:"Editor Settings",onClick:"showSettings"},{label:"Live Update",type:"checkbox",onChange:this.toggleLiveUpdate,checked:C.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:z.createElement(at,{size:"18px"}),tooltip:"Detach Editor",onClick:this.openDetached,side:"right"})}componentDidMount(){w.on("customcss-updated",this.updateEditor)}componentWillUnmount(){w.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return z.createElement(nt,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){C.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}class ct{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class dt extends z.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.titlebar=z.createRef(),this.window=z.createRef(),this.close=this.close.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.style.width,this.currentHeight=this.window.current.style.height}onDragStop(){if(document.removeEventListener("mousemove",this.onDrag,!0),this.props.onResize){const e=this.window.current.style.width,t=this.window.current.style.height;e==this.currentWidth&&t==this.currentHeight||this.props.onResize(),this.currentWidth=e,this.currentHeight=t}}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;t.style.position="fixed",t.style.top=e.clientY-this.offY+"px",t.style.left=e.clientX-this.offX+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?ct.height/2-this.props.height/2:this.props.top,t=this.props.center?ct.width/2-this.props.width/2:this.props.left,s=`floating-window${` ${this.props.className}`||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return z.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},z.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},z.createElement("span",{className:"title"},this.props.title),z.createElement("div",{className:"floating-window-buttons"},z.createElement("div",{className:"button close-button",onClick:this.close},z.createElement(U,null)))),z.createElement("div",{className:"floating-window-content"},this.props.children))}async close(){let e=!0;("function"==typeof this.props.confirmClose?this.props.confirmClose():this.props.confirmClose)&&(this.setState({modalOpen:!0}),e=await this.confirmClose(),this.setState({modalOpen:!1})),this.props.close&&e&&this.props.close()}confirmClose(){return new Promise(e=>{Ce.showConfirmationModal("Are You Sure?",this.props.confirmationText,{danger:!0,confirmText:"Close",onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ht(){return(ht=Object.assign||function(e){for(var t=1;tz.createElement(dt,ht({},e,{close:this.close.bind(this,e.id)}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}},{ref:ut}),mt=d.findInReactTree(d.getReactInstance(document.querySelector(".app-19_DXt")),e=>e&&e.type&&e.type.displayName&&"App"==e.type.displayName);A.after("FloatingContainer",mt.type.prototype,"render",(e,t,s)=>{d.findInRenderTree(s,e=>e&&e[5]&&e[5].type&&"LayerContainer"==e[5].type.displayName,{walkable:["children","props"]}).push(pt)}),mt.stateNode.forceUpdate();var gt=ut.current;const ft=s(0),bt=s(1),yt=p.getByProps("updateAccount"),vt=p.getByProps("dirtyDispatch"),wt=p.getByProps("ActionTypes").ActionTypes;var Ct=new class extends ke{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return C.get(this.collection,this.category,"startDetached")}get nativeOpen(){return C.get(this.collection,this.category,"nativeOpen")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||y.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),C.registerPanel(this.id,this.name,{order:2,element:()=>[z.createElement(_,{text:"Custom CSS Editor"}),z.createElement(lt,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{this.isDetached||(this.nativeOpen?this.openNative():this.startDetached?this.openDetached():e._reactInternalFiber.child.memoizedProps.children.props.onSetSection(this.name),this.setSection=e._reactInternalFiber.child.memoizedProps.children.props.onSetSection)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){C.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=ft.watch(b.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{ft.statSync(b.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=ft.statSync(b.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=b.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),w.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){C.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=b.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,y.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),b.saveCustomCSS(this.savedCss)}openNative(){bt.shell.openExternal(`file://${b.customCSS}`)}openDetached(e){const t=z.createRef(),s=z.createElement(lt,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});gt.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:"Custom CSS Editor",id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes."}),this.isDetached=!0,yt.close(),vt.dirtyDispatch({type:wt.LAYER_POP})}};function St(){}St.prototype.setConfig=function(e){Object.assign(i,e)},St.prototype.init=async function(){if(i.version
Please download the latest version from GitHub");const e=i.updater?i.updater.LatestVersion:i.latestVersion;e>i.version&&Ce.alert("Update Available",`\n An update for BandagedBD is available (${e})! Please Reinstall!

\n Download Installer\n `),c.log("Startup","Initializing Settings"),C.initialize(),c.log("Startup","Initializing EmoteModule"),y.initialize(),await this.checkForGuilds(),xe.initialize(),c.log("Startup","Updating Settings");for(const e in n)n[e].initialize();c.log("Startup","Loading Plugins");const t=L.loadAllPlugins();c.log("Startup","Loading Themes");const s=O.loadAllThemes();c.log("Startup","Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),c.log("Startup","Initializing Main Observer"),this.initObserver(),c.log("Startup","Collecting Startup Errors"),Ce.showContentErrors({plugins:t,themes:s})},St.prototype.checkForGuilds=function(){return new Promise(e=>{const t=function(){"complete"!=document.readyState&&setTimeout(t,100);const s=xe.guildClasses.wrapper.split(" ")[0],n=xe.guildClasses.listItem.split(" ")[0],r=xe.guildClasses.blobContainer.split(" ")[0];if(document.querySelectorAll(`.${s} .${n} .${r}`).length>0)return e(i.deferLoaded=!0);setTimeout(t,100)};t()})},St.prototype.initObserver=function(){new MutationObserver(e=>{for(let t=0,s=e.length;t`https://static-cdn.jtvnw.net/emoticons/v1/${e.id}/1.0`,getOldData:(e,t)=>({id:e.match(/\/([0-9]+)\//)[1],code:t,emoticon_set:0,description:null})},TwitchSubscriber:{url:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_twitch_subscriber.json",variable:"TwitchSubscriber",getEmoteURL:e=>`https://static-cdn.jtvnw.net/emoticons/v1/${e}/1.0`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},FrankerFaceZ:{url:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_ffz.json",variable:"FrankerFaceZ",getEmoteURL:e=>`https://cdn.frankerfacez.com/emoticon/${e}/1`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},BTTV:{url:"https://api.betterttv.net/emotes",variable:"BTTV",parser:e=>{const t={};for(let s=0,n=e.emotes.length;s`${e}`,getOldData:e=>e},BTTV2:{url:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_bttv.json",variable:"BTTV2",oldVariable:"emotesBTTV2",getEmoteURL:e=>`https://cdn.betterttv.net/emote/${e}/1x`,getOldData:e=>e.match(/emote\/(.+)\//)[1]}},o=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",name:"Download Emotes",note:"Download emotes once a week to stay up to date",value:!0},{type:"switch",id:"emoteMenu",name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu",value:!0},{type:"switch",id:"hideEmojiMenu",name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"autoCaps",name:"Emote Autocapitalization",note:"Autocapitalize emote commands",value:!1},{type:"switch",id:"showNames",name:"Show Names",note:"Show emote names on hover",value:!0},{type:"switch",id:"modifiers",name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)",value:!0},{type:"switch",id:"animateOnHover",name:"Animate On Hover",note:"Only animate the emote modifiers on hover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitch",name:"Twitch",note:"Show Twitch global & subscriber emotes",value:!0},{type:"switch",id:"ffz",name:"FrankerFaceZ",note:"Show emotes from FFZ",value:!0},{type:"switch",id:"bttv",name:"BetterTTV",note:"Show emotes from BTTV",value:!0}]}],a=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"emotes",name:"Emote System",note:"Enables BD's emote system",value:!0},{type:"switch",id:"publicServers",name:"Public Servers",note:"Display public servers button",value:!0},{type:"switch",id:"voiceDisconnect",name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord",value:!1},{type:"switch",id:"twentyFourHour",name:"24 Hour Timestamps",note:"Hides channels when in minimal mode",value:!1},{type:"switch",id:"classNormalizer",name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)",value:!0},{type:"switch",id:"showToasts",name:"Show Toasts",note:"Shows a small notification for important information",value:!0}]},{type:"category",id:"appearance",name:"Appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",name:"Voice Mode",note:"Hides everything that isn't voice chat",value:!1},{type:"switch",id:"minimalMode",name:"Minimal Mode",note:"Hide elements and reduce the size of elements",value:!1},{type:"switch",id:"hideChannels",name:"Hide Channels",note:"Hides channels when in minimal mode",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",name:"Dark Mode",note:"Make certain elements dark by default",value:!0},{type:"switch",id:"coloredText",name:"Colored Text",note:"Make text colour the same as role color",value:!1}]},{type:"category",id:"content",name:"Content Manager",collapsible:!0,settings:[{type:"switch",id:"contentErrors",name:"Show Content Errors",note:"Shows a modal with plugin/theme errors",value:!0},{type:"switch",id:"autoScroll",name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)",value:!0},{type:"switch",id:"autoReload",name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes",value:!0}]},{type:"category",id:"developer",name:"Developer Settings",collapsible:!0,shown:!1,settings:[{type:"switch",id:"developerMode",name:"Developer Mode",note:"Allows activating debugger when pressing F8",value:!1},{type:"switch",id:"copySelector",name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active',value:!1,enableWith:"developerMode"}]},{type:"category",id:"window",name:"Window Preferences",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)",value:!1},{type:"switch",id:"frame",name:"Window Frame",note:"Adds the native os window frame to the main window",value:!1,hidden:!0}]},{type:"category",id:"customcss",name:"Custom CSS",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",name:"Custom CSS",note:"Enables the Custom CSS tab",value:!0},{type:"switch",id:"liveUpdate",name:"Live Update",note:"Updates the css as you type",value:!1},{type:"switch",id:"startDetached",name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window",value:!1,disableWith:"nativeOpen"},{type:"switch",id:"nativeOpen",name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor",value:!1,disableWith:"startDetached"}]}];const l={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c %c[${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return l.hasOwnProperty(e)?l[e]:"log"}}class d{static getTextArea(){return $(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static monkeyPatch(e,t,s){const{before:n,after:i,instead:r,once:o=!1,silent:a=!1,force:l=!1}=s,c=s.displayName||e.displayName||e.name||e.constructor.displayName||e.constructor.name;if(a||console.log("patch",t,"of",c),!e[t]){if(!l)return console.error(t,"does not exist for",c);e[t]=function(){}}const h=e[t],u=()=>{a||console.log("unpatch",t,"of",c),e[t]=h};return e[t]=function(){const s={thisObject:this,methodArguments:arguments,cancelPatch:u,originalMethod:h,callOriginalMethod:()=>s.returnValue=s.originalMethod.apply(s.thisObject,s.methodArguments)};if(r){const n=d.suppressErrors(r,"`instead` callback of "+e[t].displayName)(s);void 0!==n&&(s.returnValue=n)}else n&&d.suppressErrors(n,"`before` callback of "+e[t].displayName)(s),s.callOriginalMethod(),i&&d.suppressErrors(i,"`after` callback of "+e[t].displayName)(s);return o&&u(),s.returnValue},e[t].__monkeyPatched=!0,e[t].__originalMethod||(e[t].__originalMethod=h),e[t].displayName="patched "+(e[t].displayName||t),u}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=o.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static formatString(e,t){for(const s in t){let n=t[s];Array.isArray(n)&&(n=JSON.stringify(n)),"object"==typeof n&&null!==n&&(n=n.toString()),e=e.replace(new RegExp(`{{${s}}}`,"g"),n)}return e}static findInTree(e,t,{walkable:s=null,ignore:n=[]}={}){if("string"==typeof t){if(e.hasOwnProperty(t))return e[t]}else if(t(e))return e;if("object"!=typeof e||null==e)return;let i=void 0;if(e instanceof Array){for(const r of e)if(void 0!==(i=this.findInTree(r,t,{walkable:s,ignore:n})))return i}else{const r=null==s?Object.keys(e):s;for(const o of r)if(e.hasOwnProperty(o)&&!n.includes(o)&&void 0!==(i=this.findInTree(e[o],t,{walkable:s,ignore:n})))return i}return i}static getNestedProp(e,t){return t.split(/\s?\.\s?/).reduce(function(e,t){return e&&e[t]},e)}static findInRenderTree(e,t,{walkable:s=["props","children","child","sibling"],ignore:n=[]}={}){return this.findInTree(e,t,{walkable:s,ignore:n})}static findInReactTree(e,t){return this.findInTree(e,t,{walkable:["props","children","return","stateNode"]})}static getReactInstance(e){return e.__reactInternalInstance$?e.__reactInternalInstance$:e[Object.keys(e).find(e=>e.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,r=i?s:t;function o(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(r.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&o(a)&&n(e))return e}return null}}var h=d.memoizeObject({get React(){return p.getByProps("createElement","cloneElement")},get ReactDOM(){return p.getByProps("render","findDOMNode")},get Flux(){return p.getByProps("connectStores")},get Events(){return p.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return p.getByProps("getGuild")},get SortedGuildStore(){return p.getByProps("getSortedGuilds")},get SelectedGuildStore(){return p.getByProps("getLastSelectedGuildId")},get GuildSync(){return p.getByProps("getSyncedGuilds")},get GuildInfo(){return p.getByProps("getAcronym")},get GuildChannelsStore(){return p.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return p.getByProps("getMember")},get MemberCountStore(){return p.getByProps("getMemberCounts")},get GuildEmojiStore(){return p.getByProps("getEmojis")},get GuildActions(){return p.getByProps("markGuildAsRead")},get GuildPermissions(){return p.getByProps("getGuildPermissions")},get ChannelStore(){return p.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return p.getByProps("getLastSelectedChannelId")},get ChannelActions(){return p.getByProps("selectChannel")},get PrivateChannelActions(){return p.getByProps("openPrivateChannel")},get ChannelSelector(){return p.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return p.getByProps("getToken")},get UserSettingsStore(){return p.getByProps("guildPositions")},get AccountManager(){return p.getByProps("register","login")},get UserSettingsUpdater(){return p.getByProps("updateRemoteSettings")},get OnlineWatcher(){return p.getByProps("isOnline")},get CurrentUserIdle(){return p.getByProps("getIdleTime")},get RelationshipStore(){return p.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return p.getByProps("addRelationship")},get MentionStore(){return p.getByProps("getMentions")},get UserStore(){return p.getByProps("getCurrentUser")},get UserStatusStore(){return p.getByProps("getStatus","getState")},get UserTypingStore(){return p.getByProps("isTyping")},get UserActivityStore(){return p.getByProps("getActivity")},get UserNameResolver(){return p.getByProps("getName")},get UserNoteStore(){return p.getByProps("getNote")},get UserNoteActions(){return p.getByProps("updateNote")},get EmojiInfo(){return p.getByProps("isEmojiDisabled")},get EmojiUtils(){return p.getByProps("getGuildEmoji")},get EmojiStore(){return p.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return p.getByProps("getInvites")},get InviteResolver(){return p.getByProps("findInvite")},get InviteActions(){return p.getByProps("acceptInvite")},get DiscordConstants(){return p.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return p.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return p.getByProps("getHighestRole")},get ColorConverter(){return p.getByProps("hex2int")},get ColorShader(){return p.getByProps("darken")},get TinyColor(){return p.getByPrototypes("toRgb")},get ClassResolver(){return p.getByProps("getClass")},get ButtonData(){return p.getByProps("ButtonSizes")},get IconNames(){return p.getByProps("IconNames")},get NavigationUtils(){return p.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return p.getByProps("getMessages")},get MessageActions(){return p.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return p.getByProps("enqueue")},get MessageParser(){return p.getByProps("createMessage","parse","unparse")},get hljs(){return p.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return p.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return p.getByProps("getExperimentOverrides")},get ExperimentsManager(){return p.getByProps("isDeveloper")},get CurrentExperiment(){return p.getByProps("getExperimentId")},get ImageResolver(){return p.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return p.getByProps("getSizedImageSrc")},get AvatarDefaults(){return p.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return p.getByProps("isFocused","windowSize")},get TagInfo(){return p.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return p.getByProps("canUseDOM")},get LocaleManager(){return p.getByProps("setLocale")},get Moment(){return p.getByProps("parseZone")},get LocationManager(){return p.getByProps("createLocation")},get Timestamps(){return p.getByProps("fromTimestamp")},get TimeFormatter(){return p.getByProps("dateFormat")},get Strings(){return p.getByProps("Messages").Messages},get StringFormats(){return p.getByProps("a","z")},get StringUtils(){return p.getByProps("toASCII")},get URLParser(){return p.getByProps("Url","parse")},get ExtraURLs(){return p.getByProps("getArticleURL")},get DNDActions(){return p.getByProps("beginDrag")},get DNDSources(){return p.getByProps("addTarget")},get DNDObjects(){return p.getByProps("DragSource")},get MediaDeviceInfo(){return p.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return p.getByProps("getOutputVolume")},get MediaEngineInfo(){return p.getByProps("MediaEngineFeatures")},get VoiceInfo(){return p.getByProps("EchoCancellation")},get VideoStream(){return p.getByProps("getVideoStream")},get SoundModule(){return p.getByProps("playSound")},get ElectronModule(){return p.getByProps("setBadge")},get Dispatcher(){return p.getByProps("dirtyDispatch")},get PathUtils(){return p.getByProps("hasBasename")},get NotificationModule(){return p.getByProps("showNotification")},get RouterModule(){return p.getByProps("Router")},get APIModule(){return p.getByProps("getAPIBaseURL")},get AnalyticEvents(){return p.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return p.getByRegex(/"binary"/)},get Buffers(){return p.getByProps("Buffer","kMaxLength")},get DeviceStore(){return p.getByProps("getDevices")},get SoftwareInfo(){return p.getByProps("os")},get CurrentContext(){return p.getByProps("setTagsContext")}});class u{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}class p{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const r=s[i],{exports:o}=r;let a=null;if(o&&(o.__esModule&&o.default&&e(o.default)&&(a=o.default),e(o)&&(a=o),a)){if(t)return a;n.push(a)}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getModuleByName(e,t){if(h.hasOwnProperty(e))return h[e];if(!t)return;const s=this.getModule(t,!0);return s?h[e]=s:void 0}static getByDisplayName(e){return this.getModule(u.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(u.byCode(e),t)}static getByPrototypes(...e){return this.getModule(u.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(u.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(u.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(u.byProperties(e),!1)}static getByString(...e){return this.getModule(u.byString(...e),!0)}static getAllByString(...e){return this.getModule(u.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}const m=s(0),g=s(2),f=DiscordNative.globals.releaseChannel;var b=new class{constructor(){this.data={misc:{}},this.pluginData={}}initialize(){m.existsSync(this.baseFolder)||m.mkdirSync(this.baseFolder),m.existsSync(this.dataFolder)||m.mkdirSync(this.dataFolder),m.existsSync(this.BDFile)||m.writeFileSync(this.BDFile,JSON.stringify(this.data.misc,null,4)),m.existsSync(this.customCSS)||m.writeFileSync(this.customCSS,"");const e=m.readdirSync(this.dataFolder).filter(e=>!m.statSync(g.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(g.resolve(this.dataFolder,t))}get customCSS(){return this._customCSS||(this._customCSS=g.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=g.resolve(i.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=g.resolve(this.baseFolder,`${f}`))}get BDFile(){return this._BDFile||(this._BDFile=g.resolve(i.dataPath,"data",`${f}.json`))}getPluginFile(e){return g.resolve(i.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e?g.resolve(this.dataFolder,`${e}.json`):g.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,m.writeFileSync(g.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,m.writeFileSync(g.resolve(this.dataFolder,`${e}.json`),JSON.stringify(t,null,4))}loadCustomCSS(){return m.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return m.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:m.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(m.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,m.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],m.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};class y{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static initialize(){this.createElement("bd-head",{target:document.head}),this.createElement("bd-body",{target:document.body}),this.createElement("bd-scripts",{target:this.bdHead}),this.createElement("bd-styles",{target:this.bdHead}),this.createElement("bd-themes",{target:this.bdHead}),this.createElement("style",{id:"customcss",target:this.bdHead})}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,r=document.createElement(e);return s&&(r.className=s),n&&(r.id=n),i&&this.getElement(i).append(r),r}static removeStyle(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement(`#${e}`,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static removeTheme(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement(`#${e}`,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement(`#${e}`,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}const v=s(4);var w=new class extends v{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}},C=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.registerCollection("settings","Settings",a)}initialize(){b.initialize(),this.loadSettings(),this.patchSections()}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setup()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:r=1}=s,o={id:e,order:r,label:t,section:t};i&&(o.clickListener=i),n&&(o.element=n instanceof h.React.Component?()=>h.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(o)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setup(){for(let e=0;e!this.state[e.collection][e.category][e.setting]})}if(s.disableWith){const e=this.getPath(s.disableWith.split("."),t.id,n.id);if(s.hasOwnProperty("disabled"))continue;Object.defineProperty(s,"disabled",{get:()=>this.state[e.collection][e.category][e.setting]})}}}}}}async patchSections(){d.monkeyPatch(p.getByDisplayName("FluxContainer(GuildSettings)").prototype,"render",{after:e=>{e.thisObject._reactInternalFiber.return.return.return.return.return.return.memoizedProps.id="guild-settings"}});const e=await this.getUserSettings();d.monkeyPatch(e.prototype,"render",{after:e=>{e.thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}}),d.monkeyPatch(e.prototype,"generateSections",{after:e=>{let t=e.returnValue.findIndex(e=>"linux"==e.section.toLowerCase())+1;const s=s=>{e.returnValue.splice(t,0,s),t++};s({section:"DIVIDER"}),s({section:"HEADER",label:"BandagedBD"});for(const e of this.collections)e.disabled||s({section:e.name,label:e.name,element:()=>ce.buildSettingsPanel(e.name,e.settings,this.state[e.id],this.onSettingChange.bind(this,e.id),e.button?e.button:null)});for(const t of this.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=s=>t.clickListener(e.thisObject,s,e.returnValue)),s(t);s({section:"CUSTOM",element:()=>ce.attribution})}}),this.forceUpdate()}forceUpdate(){const e=p.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector(`.${e}`);d.getReactInstance(t).return.return.return.return.return.return.stateNode.forceUpdate()}getUserSettings(){return new Promise(e=>{const t=d.monkeyPatch(p.getByProps("getUserSettingsSections").default.prototype,"render",{after:s=>{e(s.returnValue.type),s.thisObject.forceUpdate(),t()}})})}saveSettings(){b.setData("settings",this.state)}loadSettings(){const e=b.getData("settings");if(!e)return this.saveSettings();for(const t in this.state){e[t]||Object.assign(e,{[t]:this.state[t]});for(const s in this.state[t]){e[t][s]||Object.assign(e[t],{[s]:this.state[t][s]});for(const n in this.state[t][s])null!=e[t][s][n]&&(this.state[t][s][n]=e[t][s][n])}}this.saveSettings()}onSettingChange(e,t,s,n){const i=this.collections.length+this.panels.length;this.state[e][t][s]=n,w.dispatch("setting-updated",e,t,s,n);const r=this.collections.length+this.panels.length;this.saveSettings(),i!=r&&setTimeout(this.forceUpdate.bind(this),50)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,r,o,a)=>{i===e&&r===t&&o===s&&n(a)};return w.on("setting-updated",i),()=>{w.off("setting-updated",i)}}};class S extends Error{constructor(e,t,s,n){super(s),this.name=e,this.file=t,this.error=n}}class E extends Error{constructor(e){super(e),this.name="MetaError"}}const P=s(2),x=s(0),k=s(3).Module;k.globalPaths.push(P.resolve(s(1).remote.app.getAppPath(),"node_modules"));const D=/[^\S\r\n]*?\n[^\S\r\n]*?\*[^\S\r\n]?/,M=/^\\@/,B=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class N{get name(){return""}get moduleExtension(){return""}get extension(){return""}get contentFolder(){return""}get prefix(){return"content"}get collection(){return"settings"}get category(){return"content"}get id(){return"autoReload"}emit(e,...t){return w.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.contentList=[],this.state={},this.originalRequire=k._extensions[this.moduleExtension],k._extensions[this.moduleExtension]=this.getContentRequire(),C.on(this.collection,this.category,this.id,e=>{e?this.watchContent():this.unwatchContent()})}initializeContent(){}getContentModification(e,t){return t}startContent(){}stopContent(){}loadState(){const e=b.getData(`${this.prefix}s`);e&&Object.assign(this.state,e)}saveState(){b.setData(`${this.prefix}s`,this.state)}watchContent(){if(this.watcher)return c.error(this.name,"Already watching content.");c.log(this.name,"Starting to watch content."),this.watcher=x.watch(this.contentFolder,{persistent:!1},async(e,t)=>{if(!e||!t||!t.endsWith(this.extension))return;await new Promise(e=>setTimeout(e,50));try{x.statSync(P.resolve(this.contentFolder,t))}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadContent(t,!0)}if(!x.statSync(P.resolve(this.contentFolder,t)).isFile())return;const s=x.statSync(P.resolve(this.contentFolder,t));s&&s.mtime&&s.mtime.getTime()&&"number"==typeof s.mtime.getTime()&&this.timeCache[t]!=s.mtime.getTime()&&(this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadContent(t,!0),"change"==e&&this.reloadContent(t,!0))})}unwatchContent(){if(!this.watcher)return c.error(this.name,"Was not watching content.");this.watcher.close(),delete this.watcher,c.log(this.name,"No longer watching content.")}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new E("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=d.testJSON(s);if(!n)throw new E("META could not be parsed.");if(!n.name)throw new E("META missing name data.");return n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(D))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(M,"@");return s[n]=i.trim(),delete s[""],s}getContentRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=P.resolve(e.contentFolder,P.basename(n));if(!x.existsSync(i)||n!==x.realpathSync(i))return Reflect.apply(t,this,arguments);let r=x.readFileSync(n,"utf8");r=B(r);const o=e.extractMeta(r);o.id=o.name,o.filename=P.basename(n),r=e.getContentModification(s,r,o),s._compile(r,n)}}loadContent(e,t=!1){if(void 0===e)return;try{require(P.resolve(this.contentFolder,e))}catch(n){return new S(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(P.resolve(this.contentFolder,e));if(this.contentList.find(e=>e.id==s.id))return new S(s.name,e,`There is already a plugin with name ${s.name}`);const n=this.initializeContent(s);return n||(this.contentList.push(s),t&&we.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startContent(s):this.state[s.id]=!1)}unloadContent(e,t=!0,s=!1){const n="string"==typeof e?this.contentList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopContent(n):this.disableContent(n)),delete require.cache[require.resolve(P.resolve(this.contentFolder,n.filename))],this.contentList.splice(this.contentList.indexOf(n),1),this.emit("unloaded",n.id),t&&we.success(`${n.name} was unloaded.`),!0)}reloadContent(e,t=!0){const s="string"==typeof e?this.contentList.find(t=>t.id==e||t.filename==e):e,n=this.unloadContent(s,t,!0);return n?this.loadContent(s.filename,t):n}isLoaded(e){return!!this.contentList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.contentList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}enableContent(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startContent(t),this.saveState()))}disableContent(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopContent(t),this.saveState())}toggleContent(e){this.state[e]?this.disableContent(e):this.enableContent(e)}loadNewContent(){const e=x.readdirSync(this.contentFolder),t=this.contentList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.contentList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&x.statSync(P.resolve(this.contentFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewContent();for(const t of e.added)this.loadContent(t);for(const t of e.removed)this.unloadContent(t)}loadAllContent(){this.loadState();const e=[],t=x.readdirSync(this.contentFolder);for(const s of t){if(!x.statSync(P.resolve(this.contentFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadContent(s,!1);t instanceof S&&e.push(t)}return this.saveState(),C.get(this.collection,this.category,this.id)&&this.watchContent(),e}}const T=s(2),j=s(1).remote;var L=new class extends N{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get contentFolder(){return T.resolve(i.dataPath,"plugins")}get prefix(){return"plugin"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;tt.id==e||t.filename==e):e}loadAllPlugins(){const e=this.loadAllContent();return this.setupFunctions(),C.registerPanel("plugins","Plugins",{element:()=>ce.getContentPanel("Plugins",this.contentList,this.state,{folder:this.contentFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this)})}),e}initializeContent(e){if(!e.type)return new S(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new S(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new S(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getContentModification(e,t,s){return e._compile(t,e.filename),d.isEmpty(e.exports)?t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`:(s.type=e.exports,e.exports=s,"")}startContent(e){return this.startPlugin(e)}stopContent(e){return this.stopPlugin(e)}startPlugin(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start(),this.emit("started",t.id),we.show(`${t.name} v${t.version} has started.`)}catch(e){return this.state[t.id]=!1,we.error(`${t.name} v${t.version} could not be started.`),c.stacktrace(this.name,t.name+" could not be started.",e),new S(t.name,t.filename,"start() could not be fired.",{message:e.message,stack:e.stack})}}stopPlugin(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop(),this.emit("stopped",t.id),we.show(`${t.name} v${t.version} has stopped.`)}catch(e){return this.state[t.id]=!1,we.error(`${t.name} v${t.version} could not be stopped.`),c.stacktrace(this.name,t.name+" could not be stopped.",e),new S(t.name,t.filename,"stop() could not be fired.",{message:e.message,stack:e.stack})}}setupFunctions(){j.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;ece.getContentPanel("Themes",this.contentList,this.state,{folder:this.contentFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this)})}),this.loadAllContent()}enableTheme(e){return this.enableContent(e)}disableTheme(e){return this.disableContent(e)}toggleTheme(e){return this.toggleContent(e)}unloadTheme(e){return this.unloadContent(e)}loadTheme(e){const t=this.loadContent(e);t&&Ce.showContentErrors({themes:[t]})}reloadTheme(e){const t=this.reloadContent(e);t&&Ce.showContentErrors({themes:[t]})}getContentModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startContent(e){return this.addTheme(e)}stopContent(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&y.injectTheme(t.id,t.css)}removeTheme(e){const t="string"==typeof e?this.contentList.find(t=>t.id==e):e;t&&y.removeTheme(t.id)}};class A{static get patches(){return this._patches||(this._patches=[])}static getPatchesByCaller(e){if(!e)return[];const t=[];for(const s of this.patches)for(const n of s.children)n.caller===e&&t.push(n);return t}static unpatchAll(e){"string"==typeof e&&(e=this.getPatchesByCaller(e));for(const t of e)t.unpatch()}static resolveModule(e){return e instanceof Function||e instanceof Object&&!(e instanceof Array)?e:"string"==typeof e?h[e]:e instanceof Array?p.findByUniqueProperties(e):null}static makeOverride(e){return function(){let t=void 0;if(!e.children||!e.children.length)return e.originalFunction.apply(this,arguments);for(const t of e.children.filter(e=>"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const n=s.callback(this,arguments,t);void 0!==n&&(t=n)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:r="after",forcePatch:o=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&o&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,c=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);c.proxyFunction||this.rePatch(c);const d={caller:e,type:r,id:c.counter,callback:n,unpatch:()=>{if(c.children.splice(c.children.findIndex(e=>e.id===d.id&&e.type===r),1),c.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return c.children.push(d),c.counter++,d.unpatch}}const z=h.React,I=(h.ReactDOM,"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7"),R="bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8";class _ extends z.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?R:I,t=this.props.className?`${e} ${this.props.className}`:e;return z.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&z.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class U extends z.Component{render(){return z.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},z.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},z.createElement("path",{d:"M0 0h12v12H0"}),z.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class q extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),z.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class V extends z.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this),this.showSettings=this.showSettings.bind(this),this.state={checked:this.props.enabled,settingsOpen:!1},this.hasSettings="function"==typeof this.props.content.plugin.getSettingsPanel,this.settingsPanel="",this.panelRef=z.createRef(),this.reload=this.reload.bind(this)}reload(){this.props.reload&&(this.props.content=this.props.reload(this.props.content.id),this.forceUpdate())}componentDidUpdate(){if(this.state.settingsOpen){this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel);const e=(e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,r=i+t.clientHeight;return in},t=$(this.panelRef.current),s=t.parents(".scroller-2FKFPG");if(!e(s[0],t[0]))return;s.animate({scrollTop:t.offset().top-s.offset().top+s.scrollTop()-30},300)}}getString(e){return"string"==typeof e?e:e.toString()}render(){const{content:e}=this.props,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version),r=e.website,o=e.source;if(this.state.settingsOpen){try{this.settingsPanel=e.plugin.getSettingsPanel()}catch(t){c.stacktrace("Plugin Settings","Unable to get settings panel for "+e.name+".",t)}const s={id:`plugin-settings-${t}`,className:"plugin-settings",ref:this.panelRef};return"string"==typeof this.settingsPanel&&(s.dangerouslySetInnerHTML=this.settingsPanel),z.createElement("li",{className:"settings-open ui-switch-item"},z.createElement("div",{style:{float:"right",cursor:"pointer"},onClick:()=>{this.panelRef.current.innerHTML="",this.setState({settingsOpen:!1})}},z.createElement(U,null)),z.createElement("div",s,this.settingsPanel instanceof z.Component?this.settingsPanel:null))}return z.createElement("li",{"data-name":t,"data-version":i,className:"settings-closed ui-switch-item"},z.createElement("div",{className:"bda-header"},z.createElement("span",{className:"bda-header-title"},z.createElement("span",{className:"bda-name"},t)," v",z.createElement("span",{className:"bda-version"},i)," by ",z.createElement("span",{className:"bda-author"},s)),z.createElement("div",{className:"bda-controls"},!C.get("settings","content","autoReload")&&z.createElement(q,{className:"bd-reload bd-reload-card",onClick:this.reload}),z.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},z.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),z.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),z.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},z.createElement("div",{className:"bda-description scroller"},n)),(r||o||this.hasSettings)&&z.createElement("div",{className:"bda-footer"},z.createElement("span",{className:"bda-links"},r&&z.createElement("a",{className:"bda-link bda-link-website",href:r,target:"_blank"},"Website"),r&&o&&" | ",o&&z.createElement("a",{className:"bda-link bda-link-source",href:o,target:"_blank"},"Source")),this.hasSettings&&z.createElement("button",{onClick:this.showSettings,className:"bd-button bd-button-plugin-settings",disabled:!this.state.checked},"Settings")))}onChange(){this.setState({checked:!this.state.checked}),this.props.onChange&&this.props.onChange(this.props.content.id)}showSettings(){this.hasSettings&&this.setState({settingsOpen:!0})}}class W extends z.Component{constructor(e){super(e),this.state={checked:this.props.enabled,reloads:0},this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this)}reload(){this.props.reload&&(this.props.content=this.props.reload(this.props.content.id),this.forceUpdate())}render(){const{content:e}=this.props,t=e.name,s=e.description,n=e.version,i=e.author,r=e.website,o=e.source;return z.createElement("li",{"data-name":t,"data-version":n,className:"settings-closed ui-switch-item"},z.createElement("div",{className:"bda-header"},z.createElement("span",{className:"bda-header-title"},z.createElement("span",{className:"bda-name"},t)," v",z.createElement("span",{className:"bda-version"},n)," by ",z.createElement("span",{className:"bda-author"},i)),z.createElement("div",{className:"bda-controls"},!C.get("settings","content","autoReload")&&z.createElement(q,{className:"bd-reload bd-reload-card",onClick:this.reload}),z.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},z.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),z.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),z.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},z.createElement("div",{className:"bda-description scroller"},s)),(r||o)&&z.createElement("div",{className:"bda-footer"},z.createElement("span",{className:"bda-links"},r&&z.createElement("a",{className:"bda-link",href:r,target:"_blank"},"Website"),r&&o&&" | ",o&&z.createElement("a",{className:"bda-link",href:o,target:"_blank"},"Source"))))}onChange(){this.setState({checked:!this.state.checked}),this.props.onChange&&this.props.onChange(this.props.content.id)}}class H extends z.Component{reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}render(){const{title:e,folder:t,contentList:n,contentState:i,onChange:r,reload:o}=this.props,a=!C.get("settings","content","autoReload"),l=t?{title:`Open ${e} Folder`,onClick:()=>{s(1).shell.openItem(t)}}:null;return[z.createElement(_,{key:"title",text:e,button:l,otherChildren:a&&z.createElement(q,{className:"bd-reload",onClick:this.reload.bind(this)})}),z.createElement("ul",{key:"ContentList",className:"bda-slist"},n.sort((e,t)=>e.name.toLowerCase().localeCompare(t.name.toLowerCase())).map(e=>{const t=e.type?V:W;return z.createElement(t,{showReloadIcon:a,key:e.id,enabled:i[e.id],content:e,onChange:r,reload:o})}))]}}class G extends z.Component{render(){return z.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}const J="flex-1xMQg5 flex-1O1GKY vertical-V37hAW flex-1O1GKY directionColumn-35P_nr justifyStart-2NDFzi alignStretch-DpGPf3 noWrap-3jynv6 switchItem-2hKKKK",Y="flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2NDFzi alignStart-H-X2h- noWrap-3jynv6",Z="flexChild-faoVW3",K="titleDefault-a8-ZSr title-31JmR4 da-titleDefault da-title",X="flexChild-faoVW3 da-flexChild switchDisabled-3HsXAJ switch-3wwwcV da-switchDisabled da-switch valueUnchecked-2lU_20 value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",Q="flexChild-faoVW3 da-flexChild switchDisabled-3HsXAJ switch-3wwwcV da-switchDisabled da-switch valueChecked-m-4IJZ value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",ee="flexChild-faoVW3 da-flexChild switchEnabled-V2WDBB switch-3wwwcV da-switchEnabled da-switch valueUnchecked-2lU_20 value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",te="flexChild-faoVW3 da-flexChild switchEnabled-V2WDBB switch-3wwwcV da-switchEnabled da-switch valueChecked-m-4IJZ value-2hFrkk sizeDefault-2YlOZr size-3rFEHg themeDefault-24hCdX",se="checkboxEnabled-CtinEn checkbox-2tyjJg",ne="checkboxDisabled-1MA81A checkbox-2tyjJg",ie="description-3_Ncsb formText-3fs7AJ note-1V3kyJ modeDefault-3a2Ph1 primary-jw0I4K",re="divider-3573oO dividerDefault-3rvLe-";class oe extends z.Component{constructor(e){super(e),this.state={checked:this.props.checked}}onChange(){this.props.disabled||(this.props.onChange(this.props.id,!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?this.state.checked?Q:X:this.state.checked?te:ee;return z.createElement("div",{className:J,style:{flex:"1 1 auto"}},z.createElement("div",{className:Y,style:{flex:"1 1 auto"}},z.createElement("div",{className:Z,style:{flex:"1 1 auto"}},z.createElement("label",{htmlFor:this.props.id,className:K},this.props.name||this.props.data.text)),z.createElement("div",{className:e,tabIndex:"0",style:{flex:"0 0 auto"}},z.createElement("input",{id:this.props.id,className:this.props.disabled?ne:se,type:"checkbox",tabIndex:"-1",checked:this.state.checked,onChange:e=>this.onChange(e)}))),z.createElement("div",{className:ie,style:{flex:"1 1 auto"}},this.props.note||this.props.data.info),z.createElement("div",{className:re}))}}const ae="bd-settings-group";class le extends z.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=z.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>e.style.setProperty("height",""),t))}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t=this.props.collapsible?`collapsible ${this.state.collapsed&&"collapsed"}`:"",s=`${ae} ${t}`;return z.createElement("div",{className:s},z.createElement(_,{text:this.props.name,collapsible:this.props.collapsible,onClick:()=>this.toggleCollapse(),button:this.props.button,isGroup:!0}),z.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>z.createElement(oe,{disabled:e.disabled,id:e.id,key:e.id,name:e.name,note:e.note,checked:e.value,onChange:this.onChange}))),this.props.showDivider&&z.createElement(G,null))}}class ce{static buildSettingsPanel(e,t,s,n,i=null){return t.forEach(e=>{e.settings.forEach(t=>t.value=s[e.id][t.id])}),this.getSettingsPanel(e,t,n,i)}static getSettingsPanel(e,t,s,n=null){return[z.createElement(_,{text:e,button:n}),t.map(e=>z.createElement(le,Object.assign({},e,{onChange:s})))]}static getContentPanel(e,t,s,n={}){return z.createElement(H,Object.assign({},{title:e,contentList:t,contentState:s},n))}static get attribution(){return z.createElement("div",{style:{fontSize:"12px",fontWeight:"600",color:"#72767d",padding:"2px 10px"}},`BBD v${i.bbdVersion} by `,z.createElement("a",{href:"https://github.com/rauenzi/",target:"_blank"},"Zerebos"))}}class de extends z.Component{constructor(e){super(e),this.props.server.iconUrl||(this.props.server.iconUrl=this.props.defaultAvatar()),this.state={imageError:!1,joined:this.props.joined}}render(){const{server:e}=this.props;return z.createElement("div",{className:`card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${e.pinned?" bd-server-card-pinned":""}`},z.createElement("img",{ref:"img",className:"bd-server-image",src:e.iconUrl,onError:this.handleError.bind(this)}),z.createElement("div",{className:"flexChild-faoVW3 bd-server-content"},z.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},z.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},e.name),z.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},e.members," Members")),z.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},z.createElement("div",{className:"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},z.createElement("div",{className:"scroller-2FKFPG scroller bd-server-description"},e.description))),z.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},z.createElement("div",{className:"flexChild-faoVW3 bd-server-tags",style:{flex:"1 1 auto"}},e.categories.join(", ")),this.state.joined&&z.createElement("button",{type:"button",className:"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#3ac15c"}},z.createElement("div",{className:"ui-button-contents"},"string"==typeof this.state.joined?"Joining...":"Joined")),e.error&&z.createElement("button",{type:"button",className:"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#c13a3a"}},z.createElement("div",{className:"ui-button-contents"},"Error")),!e.error&&!this.state.joined&&z.createElement("button",{type:"button",className:"bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",style:{minHeight:"12px",marginTop:"4px"},onClick:()=>{this.join()}},z.createElement("div",{className:"ui-button-contents"},"Join")))))}handleError(){this.props.server.iconUrl=this.props.defaultAvatar(),this.setState({imageError:!0})}async join(){this.setState({joined:"joining"});const e=await this.props.join(this.props.server.identifier,this.props.server.nativejoin);this.setState({joined:e})}}const he=p.getByProps("getSortedGuilds"),ue=p.getByProps("getUserAvatarURL","DEFAULT_AVATARS"),pe=p.getByProps("acceptInvite"),me=s(1).remote.BrowserWindow;class ge{static get endPoint(){return"https://search.discordservers.com"}static get joinEndPoint(){return"https://j.discordservers.com"}static get connectEndPoint(){return"https://auth.discordservers.com/info"}static getDefaultAvatar(){return ue.DEFAULT_AVATARS[Math.floor(5*Math.random())]}static hasJoined(e){return he.guildPositions.includes(e)}static search({term:e="",category:t="",from:s=0}={}){return new Promise(n=>{const i=[];t&&i.push(`category=${t.replace(/ /g,"%20")}`),e&&i.push(`term=${e.replace(/ /g,"%20")}`),s&&i.push(`from=${s}`);const r=`?${i.join("&")}`;$.ajax({method:"GET",url:`${this.endPoint}${r}`,success:e=>{const t=e.size+e.from;n({servers:e.results,size:e.size,from:e.from,total:e.total,next:t>=e.total?null:t})},error:()=>n(null)})})}static join(e,t=!1){return new Promise(s=>{if(t)return pe.acceptInvite(e),s(!0);$.ajax({method:"GET",url:`${this.joinEndPoint}/${e}`,headers:{Accept:"application/json;","Content-Type":"application/json;","x-discord-token":this._accessToken},crossDomain:!0,xhrFields:{withCredentials:!0},success:()=>s(!0),error:()=>s(!1)})})}static checkConnection(){return new Promise(e=>{try{$.ajax({method:"GET",url:this.connectEndPoint,headers:{Accept:"application/json;","Content-Type":"application/json;"},crossDomain:!0,xhrFields:{withCredentials:!0},success:t=>{this._accessToken=t.access_token,e(t)},error:()=>e(!1)})}catch(t){e(!1)}})}static connect(){return new Promise(e=>{const t=new me(this.windowOptions),s=`https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:500,height:550,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}const fe=p.getByDisplayName("SettingsView");class be extends z.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await ge.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await ge.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await ge.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}async join(e,t=!1){return await ge.join(e,t)}get searchBox(){return z.createElement("input",{onKeyDown:this.searchKeyDown,type:"text",className:"bd-search",placeholder:"Search...",value:this.state.query,maxLength:"50"})}get title(){if(!this.state.user)return"Not connected to DiscordServers.com!";if(this.state.loading)return"Loading...";const e=this.state.results.from+1,t=this.state.results.total;let s=`Showing ${e}-${this.state.results.next?this.state.results.next:t} of ${t} results in ${this.state.category}`;return this.state.query&&(s+=` for ${this.state.query}`),s}get content(){const e=this.state.user?null:{title:"Connect",onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>z.createElement(de,{key:e.identifier,server:e,joined:ge.hasJoined(e.identifier),defaultAvatar:ge.getDefaultAvatar}));return[z.createElement(_,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&z.createElement(_,{text:this.title})]}get nextButton(){return z.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?"Loading":"Load More")}get connection(){const{user:e}=this.state;return e?z.createElement("div",{id:"bd-connection"},z.createElement("div",{className:"bd-footnote"},"Connected as: ",`${e.username}#${e.discriminator}`),z.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},"Reconnect")):z.createElement("div",{id:"bd-connection"})}get bdServer(){const e={name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0};return z.createElement(de,{server:e,pinned:!0,joined:ge.hasJoined(e.identifier),defaultAvatar:ge.getDefaultAvatar})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return z.createElement(fe,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:"Search"},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:"Categories"},...e,{section:"DIVIDER"},{section:"HEADER",label:z.createElement("a",{href:"https://discordservers.com",target:"_blank"},"Discordservers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const ye=p.getByProps("channels").channels.split(" ")[0],ve=p.getByProps("membersWrap").membersWrap.split(" ")[0];class we{static get shouldShowToasts(){return C.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:r=!1}=t;if(!this.shouldShowToasts&&!r)return;this.ensureContainer();const o=document.createElement("div");o.classList.add("bd-toast"),s&&o.classList.add("toast-"+s),s&&n&&o.classList.add("icon"),o.innerText=e,document.querySelector(".bd-toasts").appendChild(o),setTimeout(()=>{o.classList.add("closing"),setTimeout(()=>{o.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${ye} + div`),t=e.querySelector(`.${ve}`),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,r=i?i-e.getBoundingClientRect().left:e.offsetWidth,o=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",r+"px"),a.style.setProperty("bottom",o+"px"),document.querySelector("#app-mount").appendChild(a)}}class Ce{static get shouldShowContentErrors(){return C.get("settings","content","contentErrors")}static get ModalStack(){return p.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return p.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return p.getByProps("Sizes","Weights")}static get ConfirmationModal(){return p.getModule(e=>e.defaultProps&&e.key&&"confirm-modal"==e.key())}static default(e,t){const s=$(`
\n
\n \n
`);s.find(".footer button").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.find(".bd-backdrop").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.appendTo("#app-mount")}static alert(e,t){if(this.ModalStack&&this.AlertModal)return this.default(e,t);this.ModalStack.push(function(s){return z.createElement(this.AlertModal,Object.assign({title:e,body:t},s))})}static showConfirmationModal(e,t,s={}){const n=this.TextElement,i=this.ConfirmationModal,r=this.ModalStack;if(!this.ModalStack||!this.ConfirmationModal||!this.TextElement)return this.alert(e,t);const{onConfirm:o,onCancel:a,confirmText:l,cancelText:c,danger:d=!1}=s;"string"==typeof t?t=n.default({color:n.Colors.PRIMARY,children:[t]}):Array.isArray(t)&&(t=n.default({color:n.Colors.PRIMARY,children:t})),t=[t];const h=()=>{};r.push(function(s){return z.createElement(i,Object.assign({header:e,children:t,red:d,confirmText:l||"Okay",cancelText:c||"Cancel",onConfirm:o||h,onCancel:a||h},s))})}static showContentErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowContentErrors)return;if(!e.length&&!t.length)return;const s=$('
\n
\n \n
'),n=function(e){const t=$('
');for(const s of e){const e=$(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.find("a").on("click",e=>{e.preventDefault(),c.stacktrace("ContentError",`Error details for ${s.name?s.name:s.file}.`,s.error)})}return t},i=[n(e),n(t)];s.find(".tab-bar-item").on("click",e=>{e.preventDefault(),s.find(".tab-bar-item").removeClass("selected"),$(e.target).addClass("selected"),s.find(".scroller").empty().append(i[$(e.target).index()])}),s.find(".footer button").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.find(".bd-backdrop").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.appendTo("#app-mount"),e.length?s.find(".tab-bar-item")[0].click():s.find(".tab-bar-item")[1].click()}}const Se={get React(){return h.React},get ReactDOM(){return h.ReactDOM},get WindowConfigFile(){if(this._windowConfigFile)return this._windowConfigFile;const e=s(1).remote.app,t=s(2),n=e.getAppPath(),i=e.getPath("userData"),r=t.resolve(i,e.getVersion(),"modules","discord_desktop_core","injector","config.json"),o=t.resolve(n,"..","app","config.json"),a=s(0),l=a.existsSync(o)?o:a.existsSync(r)?r:null;return this._windowConfigFile=l||null},getAllWindowPreferences:function(){return this.WindowConfigFile?require(this.WindowConfigFile):{}},getWindowPreference:function(e){if(this.WindowConfigFile)return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){if(!this.WindowConfigFile)return;const n=s(0),i=this.getAllWindowPreferences();i[e]=t,delete s.c[this.WindowConfigFile],n.writeFileSync(this.WindowConfigFile,JSON.stringify(i,null,4))},injectCSS:function(e,t){y.injectStyle(e,t)},clearCSS:function(e){y.removeStyle(e)},linkJS:function(e,t){return y.injectScript(e,t)},unlinkJS:function(e){y.removeScript(e)},alert:function(e,t){Ce.alert(e,t)},showConfirmationModal:function(e,t,s={}){return Ce.showConfirmationModal(e,t,s)},showToast:function(e,t={}){we.show(e,t)},findModule:function(e){return p.getModule(e)},findAllModules:function(e){return p.getModule(e,!1)},findModuleByProps:function(...e){return p.getByProps(...e)},findModuleByPrototypes:function(...e){return p.getByPrototypes(...e)},findModuleByDisplayName:function(e){return p.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),d.getReactInstance(e)},loadData:function(e,t){return b.getPluginData(e,t)}};Se.getData=Se.loadData,Se.saveData=function(e,t,s){return b.setPluginData(e,t,s)},Se.setData=Se.saveData,Se.deleteData=function(e,t){return b.deletePluginData(e,t)},Se.monkeyPatch=function(e,t,s){return d.monkeyPatch(e,t,s)},Se.onRemoved=function(e,t){return d.onRemoved(e,t)},Se.suppressErrors=function(e,t){return d.suppressErrors(e,t)},Se.testJSON=function(e){return d.testJSON(e)},Se.getBDData=function(e){return b.getBDData(e)},Se.setBDData=function(e,t){return b.setBDData(e,t)};var Ee=Se;class Pe extends z.Component{render(){return z.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},z.createElement("metadata",null),z.createElement("defs",null,z.createElement("filter",{id:"shadow1"},z.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),z.createElement("filter",{id:"shadow2"},z.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),z.createElement("filter",{id:"shadow3"},z.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),z.createElement("g",null,z.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),z.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),z.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}var xe=new class{constructor(){this.editorDetached=!1}initialize(){Ee.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),Ee.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),Ee.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),Ee.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")()}get messageClasses(){return p.getByProps("message","containerCozy")}get guildClasses(){const e=p.getByProps("wrapper","unreadMentionsBar"),t=p.getByProps("guildsError","selected"),s=p.getByProps("blobContainer");return Object.assign({},e,t,s)}get MessageContentComponent(){return p.getModule(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"))}get TimeFormatter(){return p.getByProps("dateFormat")}get TooltipWrapper(){return p.getByDisplayName("TooltipDeprecated")}get NativeModule(){return p.getByProps("setBadge")}get Tooltips(){return p.getModule(e=>e.hide&&e.show&&!e.search&&!e.submit&&!e.search&&!e.activateRagingDemon&&!e.dismiss)}get KeyGenerator(){return p.getModule(e=>e.toString&&/"binary"/.test(e.toString()))}patchSocial(){if(this.socialPatch)return;const e=Ee.findModule(e=>"TabBar"==e.displayName),t=Ee.findModule(e=>"Anchor"==e.displayName);e&&t&&(this.socialPatch=Ee.monkeyPatch(e.prototype,"render",{after:e=>{const s=e.returnValue.props.children;if(!s||!s.length)return;if("Separator"!==s[s.length-2].type.displayName)return;if(!s[s.length-1].type.toString().includes("socialLinks"))return;const n=s[s.length-1].type;s[s.length-1].type=function(){const e=n(...arguments);return e.props.children.push(Ee.React.createElement(t,{className:"bd-social-link",href:"https://github.com/rauenzi/BetterDiscordApp",rel:"author",title:"BandagedBD",target:"_blank"},Ee.React.createElement(Pe,{size:"16px",className:"bd-social-logo"}))),e}}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=this.guildClasses.listItem.split(" ")[0],t=this.guildClasses.blobContainer.split(" ")[0],s=Ee.getInternalInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=Ee.monkeyPatch(s.prototype,"render",{after:e=>{const t=e.returnValue,s=e.thisObject.props;return t.props.className+=" bd-guild",s.unread&&(t.props.className+=" bd-unread"),s.selected&&(t.props.className+=" bd-selected"),s.audio&&(t.props.className+=" bd-audio"),s.video&&(t.props.className+=" bd-video"),s.badge&&(t.props.className+=" bd-badge"),s.animatable&&(t.props.className+=" bd-animatable"),t}}))}patchGuildPills(){if(this.guildPillPatch)return;const e=Ee.findModule(e=>e.default&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=Ee.monkeyPatch(e,"default",{after:e=>{const t=e.methodArguments[0];return t.unread&&(e.returnValue.props.className+=" bd-unread"),t.selected&&(e.returnValue.props.className+=" bd-selected"),t.hovered&&(e.returnValue.props.className+=" bd-hovered"),e.returnValue}}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=Ee.findModuleByDisplayName("Guilds"),t=Ee.findModuleByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=Ee.monkeyPatch(e.prototype,"render",{after:e=>{e.returnValue.props.children[1].props.children[3].type=s}})}};class ke{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){C.get(this.collection,this.category,this.id)&&await this.enable(),w.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())})}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),C.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),C.get(e,t,s)}async enable(){this.log("Enabled"),await this.enabled()}async disable(){this.log("Disabled"),await this.disabled()}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}after(e,t,s){return A.after(this.name,e,t,s)}unpatchAll(){return A.unpatchAll(this.name)}}var De=new class extends ke{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const Me=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var Be=new class extends ke{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(p.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(p.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!Me.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(Me)[1];if(!i)continue;const r=i.split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${r}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const r=n.split(" ");for(const t of r)t.startsWith(`${e}-`)||(i+=` ${t}`);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add(`da-${n}`)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;ee.call(this,t))}}},Ne=new class extends ke{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.enableSelectors=this.enableSelectors.bind(this),this.disableSelectors=this.disableSelectors.bind(this)}enabled(){$(window).on("keydown.bdDevmode",e=>{119!==e.which&&118!=e.which||this.log("Debugger Activated")}),this.selectorMode&&this.enableSelectors(),this.selectorCancel=this.registerSetting(this.selectorModeID,this.enableSelectors,this.disableSelectors)}disabled(){$(window).off("keydown.bdDevmode"),this.selectorMode&&this.disableSelectors(),this.selectorCancel&&this.selectorCancel()}enableSelectors(){$(document).on("contextmenu.bdDevmode",e=>{this.lastSelector=this.getSelector(e.toElement);setImmediate(()=>{let t=$(".contextMenu-HLZMGh");t.length<=0&&((t=$('
')).addClass($(".app, .app-2rEoOp").hasClass("theme-dark")?"theme-dark":"theme-light"),t.appendTo(".app, .app-2rEoOp"),t.css("top",e.clientY),t.css("left",e.clientX),$(document).on("click.bdDevModeCtx",()=>{t.remove(),$(document).off(".bdDevModeCtx")}),$(document).on("contextmenu.bdDevModeCtx",()=>{t.remove(),$(document).off(".bdDevModeCtx")}),$(document).on("keyup.bdDevModeCtx",e=>{27===e.keyCode&&(t.remove(),$(document).off(".bdDevModeCtx"))}));const s=$("
",{class:"itemGroup-1tL0uz"}),n=$("
",{class:"item-1Yvehc",click:()=>{h.ElectronModule.copy(this.lastSelector),t.hide()}}).append($("",{text:"Copy Selector"}));s.append(n),t.append(s),t.hasClass("undefined")&&t.css("top","-="+s.outerHeight())}),e.stopPropagation()})}disableSelectors(){$(document).off("contextmenu.bdDevmode"),$(document).off("contextmenu.bdDevModeCtx")}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}getSelector(e){if(e.id)return`#${e.id}`;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?`.${Array.from(e.classList).join(".")}`:`.${Array.from(e.parentElement.classList).join(".")}`}};const Te=p.getByProps("pushLayer");var je=new class extends ke{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=xe.guildClasses.wrapper.split(" ")[0];$(`.${e} .scroller-2FKFPG >:first-child`).after(this.button)}disabled(){$("#bd-pub-li").remove()}openPublicServers(){Te.pushLayer(()=>h.React.createElement(be,{close:Te.popLayer}))}get button(){return $("
",{class:xe.guildClasses.listItem,id:"bd-pub-li"}).append($("
",{class:"wrapper-25eVIn "+xe.guildClasses.circleButtonMask,text:"public",id:"bd-pub-button",click:()=>{this.openPublicServers()}}))}},Le=new class extends ke{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bda-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bda-dark")}},Fe=new class extends ke{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},Oe=new class extends ke{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(h.TimeFormatter,"calendarFormat",t),this.after(h.TimeFormatter,"dateFormat",t)}};const Ae=p.getModule(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"));var $e=new class extends ke{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(Ae.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},ze=new class extends ke{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){h.ChannelActions.selectVoiceChannel(null,null)}};class Ie extends z.Component{constructor(e){super(e);const t=!!(Ge&&Ge.favoriteEmotes&&Ge.favoriteEmotes[this.label]);this.state={shouldAnimate:!this.animateOnHover,isFavorite:t},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this)}get animateOnHover(){return C.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?` emote${this.props.modifier}`:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0}),!this.state.isFavorite&&Ge.favoriteEmotes[this.label]?this.setState({isFavorite:!0}):this.state.isFavorite&&!Ge.favoriteEmotes[this.label]&&this.setState({isFavorite:!1})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}render(){return z.createElement(xe.TooltipWrapper,{color:"black",position:"top",text:this.label,delay:750},z.createElement("div",{className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},z.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),z.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:"Favorite!",type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation(),this.state.isFavorite?(delete Ge.favoriteEmotes[this.label],Ge.updateFavorites()):Ge.favorite(this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}})))}}const Re={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}},_e={TwitchGlobal:"twitch",TwitchSubscriber:"twitch",BTTV:"bttv",FrankerFaceZ:"ffz",BTTV2:"bttv"},Ue=[],qe=["twitch","bttv","ffz"],Ve=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var We=new class extends ke{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(_e).filter(e=>this.isCategoryEnabled(_e[e]))}isCategoryEnabled(e){return super.get("emotes","categories",e)}get(e){return super.get("emotes","general",e)}get MessageContentComponent(){return p.getModule(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"))}get Emotes(){return Re}get TwitchGlobal(){return Re.TwitchGlobal}get TwitchSubscriber(){return Re.TwitchSubscriber}get BTTV(){return Re.BTTV}get FrankerFaceZ(){return Re.FrankerFaceZ}get BTTV2(){return Re.BTTV2}get blacklist(){return Ue}getCategory(e){return Re[e]}initialize(){super.initialize()}async enabled(){C.registerCollection("emotes","Emotes",o,{title:"Clear Emote Cache",onClick:()=>{this.clearEmoteData(),this.loadEmoteData(r)}})}disabled(){C.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}emptyEmotes(){for(const e in Re)Object.assign(Re,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.after(this.MessageContentComponent.prototype,"render",(e,t,s)=>{this.after(s.props,"children",(e,t,s)=>{if(0==this.categories.length)return;const n=s.props.children[1];if(!n.props.children)return;const i=n.props.children[1];if(i&&i.length){for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of i)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}})}))}async loadEmoteData(e){this.emotesLoaded=!1;const t=s(0),n=i.dataPath+"emote_data.json";if(t.existsSync(n)&&this.isCacheValid()){we.show("Loading emotes from cache.",{type:"info"}),this.log("Loading emotes from local cache.");const s=await new Promise(e=>{t.readFile(n,"utf8",(t,s)=>{this.log("Emotes loaded from cache."),t&&(s={}),e(s)})}),i=d.testJSON(s);let r=!!i;r&&Object.assign(Re,i);for(const t in e)r=Object.keys(Re[e[t].variable]).length>0;if(r)return we.show("Emotes successfully loaded.",{type:"success"}),this.emotesLoaded=!0,void w.dispatch("emotes-loaded");this.log("Cache was corrupt, downloading..."),t.unlinkSync(n)}if(C.get(this.category,"general","download")){we.show("Downloading emotes in the background do not reload.",{type:"info"});for(const t in e){await new Promise(e=>setTimeout(e,1e3));const s=await this.downloadEmotes(e[t]);Re[e[t].variable]=s}we.show("All emotes successfully downloaded.",{type:"success"});try{t.writeFileSync(n,JSON.stringify(Re),"utf8")}catch(e){this.stacktrace("Could not save emote data.",e)}this.emotesLoaded=!0,w.dispatch("emotes-loaded")}}downloadEmotes(e){const t=s(5),n={url:e.url,timeout:e.timeout?e.timeout:5e3,json:!0};return this.log(`Downloading: ${e.variable} (${e.url})`),new Promise((s,i)=>{t(n,(t,n,r)=>{if(t)return this.stacktrace("Could not download "+e.variable,t),e.backup?(e.url=e.backup,e.backup=null,e.backupParser&&(e.parser=e.backupParser),s(this.downloadEmotes(e))):i({});"function"==typeof e.parser&&(r=e.parser(r));for(const t in r)t.length<4||Ue.includes(t)?delete r[t]:r[t]=e.getEmoteURL(r[t]);s(r),this.log("Downloaded: "+e.variable)})})}getBlacklist(){return new Promise(e=>{$.getJSON("https://rauenzi.github.io/BetterDiscordApp/data/emotefilter.json",function(t){e(Ue.push(...t.blacklist))})})}isCacheValid(){const e=b.getBDData("emoteCacheDays")||b.setBDData("emoteCacheDays",7)||7,t=new Date(b.getBDData("emoteCacheDate")||null),s=new Date;return!(Math.round(Math.abs((s.getTime()-t.getTime())/864e5))>e)||(b.setBDData("emoteCacheDate",s.toJSON()),!1)}clearEmoteData(){const e=s(0),t=i.dataPath+"emote_data.json";e.existsSync(t)&&e.unlinkSync(t),b.setBDData("emoteCacheDate",(new Date).toJSON());for(const e in Re)Object.assign(Re,{[e]:{}})}};const He=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,r=$(`
\n ${e}\n
`)[0];return n&&r.addEventListener("contextmenu",n),r.addEventListener("click",i),r};var Ge=new class extends ke{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bda-qem-emojis",this.favoriteEmotes={},this.qmeHeader=$('
\n \n \n
')[0];for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=$('
\n
\n
\n
\n\n
\n
\n
\n
')[0],this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=$('
\n
\n
\n
\n\n
\n
\n
\n
')[0],this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}initialize(){super.initialize();const e=b.getBDData("bdfavemotes");""!==e&&null!==e&&(this.favoriteEmotes=JSON.parse(window.atob(e))),this.updateFavorites()}async enabled(){this.log("Starting to observe"),this.observer.observe(document.getElementById("app-mount"),{childList:!0,subtree:!0}),this.hideEmojiCancel=this.registerSetting(this.hideEmojisID,this.enableHideEmojis,this.disableHideEmojis),this.hideEmojis&&this.enableHideEmojis(),We.emotesLoaded&&this.updateTwitchEmotes(),w.on("emotes-loaded",this.updateTwitchEmotes)}disabled(){w.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){$(".emojiPicker-3m1S-j").addClass("bda-qme-hidden")}disableHideEmojis(){$(".emojiPicker-3m1S-j").removeClass("bda-qme-hidden")}insertEmote(e){const t=d.getTextArea();d.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bda-qem-favourite-container").offset().top,left:e.pageX-$("#bda-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),delete this.favoriteEmotes[$(t).attr("title")],this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))})}switchMenu(e){let t="string"==typeof e?e:$(e.target).attr("id");"bda-qem-emojis"==t&&this.hideEmojis&&(t="bda-qem-favourite");const s=$("#bda-qem-twitch"),n=$("#bda-qem-favourite"),i=$("#bda-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bda-qem-favourite-container").hide(),$("#bda-qem-twitch-container").hide(),t){case"bda-qem-twitch":s.addClass("active"),$("#bda-qem-twitch-container").show();break;case"bda-qem-favourite":n.addClass("active"),$("#bda-qem-favourite-container").show();break;case"bda-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("popout-3sVMXz")||t.classList.contains("popoutLeft-30WmrD")||!t.getElementsByClassName("emojiPicker-3m1S-j").length)return;const s=$(t);this.hideEmojis?s.addClass("bda-qme-hidden"):s.removeClass("bda-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}favorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.updateFavorites()}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in We.getCategory("TwitchGlobal")){if(!We.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=We.getCategory("TwitchGlobal")[e],s=He(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in this.favoriteEmotes){const t=this.favoriteEmotes[e],s=He(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}b.setBDData("bdfavemotes",window.btoa(JSON.stringify(this.favoriteEmotes)))}},Je=new class extends ke{get name(){return"EmoteAutocapitalize"}get collection(){return"emotes"}get category(){return"general"}get id(){return"autoCaps"}enabled(){$("body").off(".bdac"),$("body").on("keyup.bdac change.bdac paste.bdac",$(".channelTextArea-1LDbYG textarea:first"),()=>{const e=$(".channelTextArea-1LDbYG textarea:first").val();if(null==e)return;const t=e.split(" ").pop();if(t.length>3){if("danSgame"==t)return;const s=this.capitalize(t.toLowerCase());null!=s&&d.insertText(d.getTextArea()[0],e.replace(t,s))}})}disabled(){$("body").off(".bdac")}capitalize(e){const t=We.getCategory("TwitchGlobal");for(const s in t)if(t.hasOwnProperty(s)&&e==(s+"").toLowerCase())return s}};const Ye=s(0),Ze=s(2);var Ke=new class extends ke{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}get WindowConfigFile(){if(this._windowConfigFile)return this._windowConfigFile;const e=s(1).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=Ze.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector","config.json"),r=Ze.resolve(t,"..","app","config.json"),o=Ye.existsSync(r)?r:Ye.existsSync(i)?i:null;return this._windowConfigFile=o||null}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor",null)}disabled(){this.setWindowPreference("transparent",!1),this.setWindowPreference("backgroundColor","#2f3136")}getAllWindowPreferences(){return this.WindowConfigFile?require(this.WindowConfigFile):{}}getWindowPreference(e){if(this.WindowConfigFile)return this.getAllWindowPreferences()[e]}setWindowPreference(e,t){if(!this.WindowConfigFile)return;const n=this.getAllWindowPreferences();n[e]=t,delete s.c[this.WindowConfigFile],Ye.writeFileSync(this.WindowConfigFile,JSON.stringify(n,null,4))}};class Xe extends z.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return z.createElement("div",{className:"checkbox-item"},z.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),z.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},z.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},z.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),z.createElement("span",null)),z.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function Qe(){return(Qe=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==nt.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme(`ace/theme/${t}`),this.editor.session.setMode(`ace/mode/${this.props.language}`),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return z.createElement(Xe,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return z.createElement(et,{color:"black",position:"top",text:e.tooltip},t=>z.createElement("button",Qe({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return z.createElement("div",{id:"bd-editor-panel",className:this.props.theme},z.createElement("div",{id:"bd-editor-controls"},z.createElement("div",{className:"controls-section controls-left"},e),z.createElement("div",{className:"controls-section controls-right"},t)),z.createElement("div",{className:"editor-wrapper"},z.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class it extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),z.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class rt extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),z.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class ot extends z.Component{render(){const e=this.props.size||"20px";return z.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},z.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),z.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class at extends z.Component{render(){const e=this.props.size||"24px";return z.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},z.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),z.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class lt extends z.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:z.createElement(q,{size:"18px"}),tooltip:"Update",onClick:this.updateCss},{label:z.createElement(it,{size:"18px"}),tooltip:"Save",onClick:this.saveCss},{label:z.createElement(rt,{size:"18px"}),tooltip:"Open in System Editor",onClick:this.openNative},{label:z.createElement(ot,{size:"18px"}),tooltip:"Editor Settings",onClick:"showSettings"},{label:"Live Update",type:"checkbox",onChange:this.toggleLiveUpdate,checked:C.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:z.createElement(at,{size:"18px"}),tooltip:"Detach Editor",onClick:this.openDetached,side:"right"})}componentDidMount(){w.on("customcss-updated",this.updateEditor)}componentWillUnmount(){w.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return z.createElement(nt,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){C.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}class ct{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class dt extends z.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.titlebar=z.createRef(),this.window=z.createRef(),this.close=this.close.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.style.width,this.currentHeight=this.window.current.style.height}onDragStop(){if(document.removeEventListener("mousemove",this.onDrag,!0),this.props.onResize){const e=this.window.current.style.width,t=this.window.current.style.height;e==this.currentWidth&&t==this.currentHeight||this.props.onResize(),this.currentWidth=e,this.currentHeight=t}}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;t.style.position="fixed",t.style.top=e.clientY-this.offY+"px",t.style.left=e.clientX-this.offX+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?ct.height/2-this.props.height/2:this.props.top,t=this.props.center?ct.width/2-this.props.width/2:this.props.left,s=`floating-window${` ${this.props.className}`||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return z.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},z.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},z.createElement("span",{className:"title"},this.props.title),z.createElement("div",{className:"floating-window-buttons"},z.createElement("div",{className:"button close-button",onClick:this.close},z.createElement(U,null)))),z.createElement("div",{className:"floating-window-content"},this.props.children))}async close(){let e=!0;("function"==typeof this.props.confirmClose?this.props.confirmClose():this.props.confirmClose)&&(this.setState({modalOpen:!0}),e=await this.confirmClose(),this.setState({modalOpen:!1})),this.props.close&&e&&this.props.close()}confirmClose(){return new Promise(e=>{Ce.showConfirmationModal("Are You Sure?",this.props.confirmationText,{danger:!0,confirmText:"Close",onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ht(){return(ht=Object.assign||function(e){for(var t=1;tz.createElement(dt,ht({},e,{close:this.close.bind(this,e.id)}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}},{ref:ut}),mt=d.findInReactTree(d.getReactInstance(document.querySelector(".app-19_DXt")),e=>e&&e.type&&e.type.displayName&&"App"==e.type.displayName);A.after("FloatingContainer",mt.type.prototype,"render",(e,t,s)=>{d.findInRenderTree(s,e=>e&&e[5]&&e[5].type&&"LayerContainer"==e[5].type.displayName,{walkable:["children","props"]}).push(pt)}),mt.stateNode.forceUpdate();var gt=ut.current;const ft=s(0),bt=s(1),yt=p.getByProps("updateAccount"),vt=p.getByProps("dirtyDispatch"),wt=p.getByProps("ActionTypes").ActionTypes;var Ct=new class extends ke{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return C.get(this.collection,this.category,"startDetached")}get nativeOpen(){return C.get(this.collection,this.category,"nativeOpen")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||y.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),C.registerPanel(this.id,this.name,{order:2,element:()=>[z.createElement(_,{text:"Custom CSS Editor"}),z.createElement(lt,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{this.isDetached||(this.nativeOpen?this.openNative():this.startDetached?this.openDetached():e._reactInternalFiber.child.memoizedProps.children.props.onSetSection(this.name),this.setSection=e._reactInternalFiber.child.memoizedProps.children.props.onSetSection)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){C.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=ft.watch(b.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{ft.statSync(b.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=ft.statSync(b.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=b.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),w.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){C.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=b.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,y.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),b.saveCustomCSS(this.savedCss)}openNative(){bt.shell.openExternal(`file://${b.customCSS}`)}openDetached(e){const t=z.createRef(),s=z.createElement(lt,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});gt.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:"Custom CSS Editor",id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes."}),this.isDetached=!0,yt.close(),vt.dirtyDispatch({type:wt.LAYER_POP})}};function St(){}St.prototype.setConfig=function(e){Object.assign(i,e)},St.prototype.init=async function(){if(i.version
Please download the latest version from GitHub");const e=i.updater?i.updater.LatestVersion:i.latestVersion;e>i.version&&Ce.alert("Update Available",`\n An update for BandagedBD is available (${e})! Please Reinstall!

\n Download Installer\n `),c.log("Startup","Initializing Settings"),C.initialize(),c.log("Startup","Initializing EmoteModule"),y.initialize(),await this.checkForGuilds(),xe.initialize(),c.log("Startup","Updating Settings");for(const e in n)n[e].initialize();c.log("Startup","Loading Plugins");const t=L.loadAllPlugins();c.log("Startup","Loading Themes");const s=O.loadAllThemes();c.log("Startup","Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),c.log("Startup","Initializing Main Observer"),this.initObserver(),c.log("Startup","Collecting Startup Errors"),Ce.showContentErrors({plugins:t,themes:s})},St.prototype.checkForGuilds=function(){return new Promise(e=>{const t=function(){"complete"!=document.readyState&&setTimeout(t,100);const s=xe.guildClasses.wrapper.split(" ")[0],n=xe.guildClasses.listItem.split(" ")[0],r=xe.guildClasses.blobContainer.split(" ")[0];if(document.querySelectorAll(`.${s} .${n} .${r}`).length>0)return e(i.deferLoaded=!0);setTimeout(t,100)};t()})},St.prototype.initObserver=function(){new MutationObserver(e=>{for(let t=0,s=e.length;t DiscordModules.React.createElement(PublicServersMenu, {close: LayerStack.popLayer})); + LayerStack.pushLayer(() => DiscordModules.React.createElement(PublicServersMenu, {close: LayerStack.popLayer, connection: PSConnection})); } get button() { diff --git a/src/ui/publicservers/manager.js b/src/builtins/publicservers/connection.js similarity index 98% rename from src/ui/publicservers/manager.js rename to src/builtins/publicservers/connection.js index bc8f5d9d..bdb84e79 100644 --- a/src/ui/publicservers/manager.js +++ b/src/builtins/publicservers/connection.js @@ -109,8 +109,8 @@ export default class PublicServersConnection { static get windowOptions() { return { - width: 500, - height: 550, + width: 380, + height: 450, backgroundColor: "#282b30", show: true, resizable: true, diff --git a/src/modules/logger.js b/src/modules/logger.js index 6b17da2b..f2c99a9f 100644 --- a/src/modules/logger.js +++ b/src/modules/logger.js @@ -85,7 +85,8 @@ export default class Logger { static _log(module, message, type = "log") { type = Logger.parseType(type); if (!Array.isArray(message)) message = [message]; - console[type](`%c[BandagedBD]%c %c[${module}]%c`, "color: #3E82E5; font-weight: 700;", "color: #3a71c1;", "", ...message); + console[type](`%c[BandagedBD]%c [${module}]%c`, "color: #3E82E5; font-weight: 700;", "color: #3a71c1;", "", ...message); + //console.log(`%c[BandagedBD]%c [${moduleName}]%c ${message}`, "color: #3a71c1; font-weight: 700;", "color: #3a71c1;", ""); } static parseType(type) { diff --git a/src/ui/publicservers/card.js b/src/ui/publicservers/card.js deleted file mode 100644 index 4a41c0ae..00000000 --- a/src/ui/publicservers/card.js +++ /dev/null @@ -1,102 +0,0 @@ -import {React} from "modules"; -import Manager from "./manager"; - -export default class ServerCard extends React.Component { - constructor(props) { - super(props); - if (!this.props.server.iconUrl) this.props.server.iconUrl = Manager.getDefaultAvatar(); - this.state = { - imageError: false, - joined: Manager.hasJoined(this.props.server.identifier) - }; - } - - render() { - const {server} = this.props; - return React.createElement( - "div", // cardPrimary-1Hv-to - {className: `card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${server.pinned ? " bd-server-card-pinned" : ""}`}, - React.createElement("img", {ref: "img", className: "bd-server-image", src: server.iconUrl, onError: this.handleError.bind(this)}), - React.createElement( - "div", - {className: "flexChild-faoVW3 bd-server-content"}, - React.createElement( - "div", - {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"}, - React.createElement( - "h5", - {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"}, - server.name - ), - React.createElement( - "h5", - {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"}, - server.members, - " Members" - ) - ), - React.createElement( - "div", - {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"}, - React.createElement( - "div", - {className: "scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"}, - React.createElement( - "div", - {className: "scroller-2FKFPG scroller bd-server-description"}, - server.description - ) - ) - ), - React.createElement( - "div", - {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"}, - React.createElement( - "div", - {className: "flexChild-faoVW3 bd-server-tags", style: {flex: "1 1 auto"}}, - server.categories.join(", ") - ), - this.state.joined && React.createElement( - "button", - {type: "button", className: "bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#3ac15c"}}, - React.createElement( - "div", - {className: "ui-button-contents"}, - typeof(this.state.joined) == "string" ? "Joining..." : "Joined" - ) - ), - server.error && React.createElement( - "button", - {type: "button", className: "bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#c13a3a"}}, - React.createElement( - "div", - {className: "ui-button-contents"}, - "Error" - ) - ), - !server.error && !this.state.joined && React.createElement( - "button", - {type: "button", className: "bd-button button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN", style: {minHeight: "12px", marginTop: "4px"}, onClick: () => {this.join();}}, - React.createElement( - "div", - {className: "ui-button-contents"}, - "Join" - ) - ) - ) - ) - // ) - ); - } - - handleError() { - this.props.server.iconUrl = Manager.getDefaultAvatar(); - this.setState({imageError: true}); - } - - async join() { - this.setState({joined: "joining"}); - const didJoin = await Manager.join(this.props.server.identifier, this.props.server.nativejoin); - this.setState({joined: didJoin}); - } -} \ No newline at end of file diff --git a/src/ui/publicservers/card.jsx b/src/ui/publicservers/card.jsx new file mode 100644 index 00000000..49743ae2 --- /dev/null +++ b/src/ui/publicservers/card.jsx @@ -0,0 +1,48 @@ +import {React} from "modules"; + +export default class ServerCard extends React.Component { + constructor(props) { + super(props); + if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar(); + this.state = { + imageError: false, + joined: this.props.joined + }; + this.join = this.join.bind(this); + this.handleError = this.handleError.bind(this); + } + + render() { + const {server} = this.props; + const buttonText = typeof(this.state.joined) == "string" ? "Joining..." : this.state.joined ? "Joined" : "Join"; + const buttonClass = `bd-button${this.state.joined == true ? " bd-button-success" : ""}`; + return
+ , +
+
+
{server.name}
+
{server.members} Members
+
+
+
{server.description}
+
+
+
{server.categories.join(", ")}
+ +
+
+
; + } + + handleError() { + this.props.server.iconUrl = this.props.defaultAvatar(); + this.setState({imageError: true}); + } + + async join() { + if (this.state.joined) return; + this.setState({joined: "joining"}); + const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin); + this.setState({joined: didJoin}); + } +} \ No newline at end of file diff --git a/src/ui/publicservers/menu.js b/src/ui/publicservers/menu.js index 44ca8380..b025ca3e 100644 --- a/src/ui/publicservers/menu.js +++ b/src/ui/publicservers/menu.js @@ -1,7 +1,6 @@ import {React, WebpackModules} from "modules"; import SettingsTitle from "../settings/title"; import ServerCard from "./card"; -import Manager from "./manager"; const SettingsView = WebpackModules.getByDisplayName("SettingsView"); @@ -38,7 +37,7 @@ export default class PublicServers extends React.Component { } async checkConnection() { - const userData = await Manager.checkConnection(); + const userData = await this.props.connection.checkConnection(); if (!userData) { return this.setState({loading: true, user: null}); } @@ -47,7 +46,7 @@ export default class PublicServers extends React.Component { } async connect() { - await Manager.connect(); + await this.props.connection.connect(); this.checkConnection(); } @@ -58,7 +57,7 @@ export default class PublicServers extends React.Component { async search(term = "", from = 0) { this.setState({query: term, loading: true}); - const results = await Manager.search({term, category: this.state.category == "All" ? "" : this.state.category, from}); + const results = await this.props.connection.search({term, category: this.state.category == "All" ? "" : this.state.category, from}); if (!results) { return this.setState({results: { servers: [], @@ -82,8 +81,12 @@ export default class PublicServers extends React.Component { this.search(this.state.query, this.state.results.next); } + async join(id, native = false) { + return await this.props.connection.join(id, native); + } + get searchBox() { - return React.createElement("input", {onKeyDown: this.searchKeyDown, type: "text", className: "bd-search", placeholder: "Search...", value: this.state.query, maxLength: "50"}); + return React.createElement("input", {onKeyDown: this.searchKeyDown, type: "text", className: "bd-search", placeholder: "Search...", maxLength: "50"}); } get title() { @@ -101,7 +104,7 @@ export default class PublicServers extends React.Component { const connectButton = this.state.user ? null : {title: "Connect", onClick: this.connect}; const pinned = this.state.category == "All" || !this.state.user ? this.bdServer : null; const servers = this.state.results.servers.map((server) => { - return React.createElement(ServerCard, {key: server.identifier, server: server}); + return React.createElement(ServerCard, {key: server.identifier, server: server, joined: this.props.connection.hasJoined(server.identifier), defaultAvatar: this.props.connection.getDefaultAvatar}); }); return [React.createElement(SettingsTitle, {text: this.title, button: connectButton}), pinned, @@ -136,7 +139,7 @@ export default class PublicServers extends React.Component { invite_code: "0Tmfo5ZbORCRqbAd", pinned: true }; - return React.createElement(ServerCard, {server: server, pinned: true}); + return React.createElement(ServerCard, {server: server, pinned: true, joined: this.props.connection.hasJoined(server.identifier), defaultAvatar: this.props.connection.getDefaultAvatar}); } render() { diff --git a/src/ui/publicservers/menussv.js b/src/ui/publicservers/menussv.js deleted file mode 100644 index 9f83bf74..00000000 --- a/src/ui/publicservers/menussv.js +++ /dev/null @@ -1,427 +0,0 @@ -import {React, WebpackModules} from "modules"; -import SettingsTitle from "../settings/title"; -import ServerCard from "./card"; - -const AvatarDefaults = WebpackModules.getByProps("getUserAvatarURL", "DEFAULT_AVATARS"); -const InviteActions = WebpackModules.getByProps("acceptInvite"); -const SortedGuildStore = WebpackModules.getByProps("getSortedGuilds"); -//SettingsView -//onClose pop layer -//onSetSection dispatch user settings modal set section section subsection -//section selected one -//sections [] -//theme dark - - -const StandardSidebarView = WebpackModules.getByDisplayName("StandardSidebarView"); -//WebpackModules.getByDisplayName("StandardSidebarView") -//sidebar = WebpackModules.getByDisplayName("TabBar") -// children [] -// sidebar.Header -// sidebar.Item -// sidebar.Separator -// onItemSelect -// selectedItem -//section = "All" -//theme = "dark" -//content = this.content -//closeAction = pop probably - - -export default class PublicServers extends React.Component { - - constructor(props) { - super(props); - this.state = { - selectedCategory: "All", - title: "Loading...", - loading: true, - servers: [], - next: null, - connection: { - state: 0, - user: null - } - }; - this.close = this.close.bind(this); - this.changeCategory = this.changeCategory.bind(this); - this.search = this.search.bind(this); - this.searchKeyDown = this.searchKeyDown.bind(this); - this.checkConnection = this.checkConnection.bind(this); - this.join = this.join.bind(this); - this.connect = this.connect.bind(this); - } - - componentDidMount() { - this.checkConnection(); - } - - close() { - this.props.close(); - } - - search(query, clear) { - $.ajax({ - method: "GET", - url: `${this.endPoint}${query}${query ? "&schema=new" : "?schema=new"}`, - success: data => { - let servers = data.results.reduce((arr, server) => { - server.joined = false; - arr.push(server); - // arr.push(); - return arr; - }, []); - - if (!clear) { - servers = this.state.servers.concat(servers); - } - else { - //servers.unshift(this.bdServer); - } - - console.log(data); - - let end = data.size + data.from; - data.next = `?from=${end}`; - if (this.state.term) data.next += `&term=${this.state.term}`; - if (this.state.selectedCategory) data.next += `&category=${this.state.selectedCategory}`; - if (end >= data.total) { - end = data.total; - data.next = null; - } - - let title = `Showing 1-${end} of ${data.total} results in ${this.state.selectedCategory}`; - if (this.state.term) title += ` for ${this.state.term}`; - - this.setState({ - loading: false, - title: title, - servers: servers, - next: data.next - }); - - if (clear) { - //console.log(this); - // this.refs.sbv.refs.contentScroller.scrollTop = 0; - } - }, - error: () => { - this.setState({ - loading: false, - title: "Failed to load servers. Check console for details" - }); - } - }); - } - - join(serverCard) { - if (serverCard.props.pinned) return InviteActions.acceptInvite(serverCard.props.invite_code); - $.ajax({ - method: "GET", - url: `${this.joinEndPoint}/${serverCard.props.server.identifier}`, - headers: { - "Accept": "application/json;", - "Content-Type": "application/json;" , - "x-discord-token": this.state.connection.user.accessToken - }, - crossDomain: true, - xhrFields: { - withCredentials: true - }, - success: () => { - serverCard.setState({joined: true}); - } - }); - } - - connect() { - const options = this.windowOptions; - options.x = Math.round(window.screenX + window.innerWidth / 2 - options.width / 2); - options.y = Math.round(window.screenY + window.innerHeight / 2 - options.height / 2); - - this.joinWindow = new (window.require("electron").remote.BrowserWindow)(options); - const url = "https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=https://auth.discordservers.com/info"; - this.joinWindow.webContents.on("did-navigate", (event, navUrl) => { - if (navUrl != "https://auth.discordservers.com/info") return; - this.joinWindow.close(); - this.checkConnection(); - }); - this.joinWindow.loadURL(url); - } - - get windowOptions() { - return { - width: 500, - height: 550, - backgroundColor: "#282b30", - show: true, - resizable: false, - maximizable: false, - minimizable: false, - alwaysOnTop: true, - frame: false, - center: false, - webPreferences: { - nodeIntegration: false - } - }; - } - - get bdServer() { - const server = { - name: "BetterDiscord", - online: "7500+", - members: "20000+", - categories: ["community", "programming", "support"], - description: "Official BetterDiscord server for support etc", - identifier: "86004744966914048", - iconUrl: "https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp", - nativejoin: true, - invite_code: "0Tmfo5ZbORCRqbAd", - pinned: true - }; - const guildList = SortedGuildStore.guildPositions; - const defaultList = AvatarDefaults.DEFAULT_AVATARS; - return React.createElement(ServerCard, {server: server, pinned: true, join: this.join, guildList: guildList, fallback: defaultList[Math.floor(Math.random() * 5)]}); - } - - get endPoint() { - return "https://search.discordservers.com"; - } - - get joinEndPoint() { - return "https://j.discordservers.com"; - } - - get connectEndPoint() { - return "https://join.discordservers.com/connect"; - } - - checkConnection() { - try { - $.ajax({ - method: "GET", - url: `https://auth.discordservers.com/info`, - headers: { - "Accept": "application/json;", - "Content-Type": "application/json;" - }, - crossDomain: true, - xhrFields: { - withCredentials: true - }, - success: data => { - // Utils.log("PublicServer", "Got data: " + JSON.stringify(data)); - this.setState({ - selectedCategory: "All", - connection: { - state: 2, - user: data - } - }); - this.search("", true); - - }, - error: () => { - this.setState({ - title: "Not connected to discordservers.com!", - loading: true, - selectedCategory: "All", - connection: { - state: 1, - user: null - } - }); - } - }); - } - catch (error) { - this.setState({ - title: "Not connected to discordservers.com!", - loading: true, - selectedCategory: "All", - connection: { - state: 1, - user: null - } - }); - } - } - -//WebpackModules.getByDisplayName("StandardSidebarView") -//sidebar = WebpackModules.getByDisplayName("TabBar") -// children [] -// sidebar.Header -// sidebar.Item -// sidebar.Separator -// onItemSelect -// selectedItem -//section = "All" -//theme = "dark" -//content = this.content -//closeAction = pop probably - render() { - return React.createElement(StandardSidebarView, { - closeAction: this.close, - section: this.state.selectedCategory, - content: this.content, - sidebar: this.sidebar, - theme: "dark" - }); - } - - get sidebar() { - const TabBar = WebpackModules.getByDisplayName("TabBar"); - const categories = this.categoryButtons.map(name => - React.createElement(TabBar.Item, {id: name}, name) - ); - return React.createElement(TabBar, {onItemSelect: (category) => this.changeCategory(category), selectedItem: this.state.selectedCategory}, - React.createElement(TabBar.Header, null, "Search"), - this.searchInput, - React.createElement(TabBar.Header, null, "Categories"), - categories, - React.createElement(TabBar.Separator), - React.createElement(TabBar.Header, null, React.createElement("a", {href: "https://discordservers.com", target: "_blank"}, "Discordservers.com")), - React.createElement(TabBar.Separator), - this.connection - ); - } - - get searchInput() { - return React.createElement( - "div", - {className: "ui-form-item"}, - React.createElement( - "div", - {className: "ui-text-input flex-vertical", style: {width: "172px", marginLeft: "10px"}}, - React.createElement("input", {onKeyDown: this.searchKeyDown, onChange: () => {}, type: "text", className: "input default", placeholder: "Search...", maxLength: "50"}) - ) - ); - } - - searchKeyDown(e) { - if (this.state.loading || e.which !== 13) return; - this.setState({ - loading: true, - title: "Loading...", - term: e.target.value - }); - let query = `?term=${e.target.value}`; - if (this.state.selectedCategory !== "All") { - query += `&category=${this.state.selectedCategory}`; - } - this.search(query, true); - } - - get categoryButtons() { - return ["All", "FPS Games", "MMO Games", "Strategy Games", "MOBA Games", "RPG Games", "Tabletop Games", "Sandbox Games", "Simulation Games", "Music", "Community", "Language", "Programming", "Other"]; - } - - changeCategory(id) { - if (this.state.loading) return; - // this.refs.searchinput.value = ""; - this.setState({ - loading: true, - selectedCategory: id, - title: "Loading...", - term: null - }); - if (id === "All") { - this.search("", true); - return; - } - this.search(`?category=${this.state.selectedCategory.replace(" ", "%20")}`, true); - } - - get content() { - const guildList = SortedGuildStore.guildPositions; - const defaultList = AvatarDefaults.DEFAULT_AVATARS; - if (this.state.connection.state === 1) return this.notConnected; - return [React.createElement(SettingsTitle, {text: this.state.title}), - this.state.selectedCategory == "All" && this.bdServer, - this.state.servers.map((server) => { - return React.createElement(ServerCard, {key: server.identifier, server: server, join: this.join, guildList: guildList, fallback: defaultList[Math.floor(Math.random() * 5)]}); - }), - this.state.next && React.createElement( - "button", - {type: "button", onClick: () => { - if (this.state.loading) return;this.setState({loading: true}); this.search(this.state.next, false); - }, className: "ui-button filled brand small grow", style: {width: "100%", marginTop: "10px", marginBottom: "10px"}}, - React.createElement( - "div", - {className: "ui-button-contents"}, - this.state.loading ? "Loading" : "Load More" - ) - ), - this.state.servers.length > 0 && React.createElement(SettingsTitle, {text: this.state.title})]; - } - - get notConnected() { - //return React.createElement(SettingsTitle, { text: this.state.title }); - return [React.createElement( - "h2", - {className: "ui-form-title h2 margin-reset margin-bottom-20"}, - "Not connected to discordservers.com!", - React.createElement( - "button", - { - onClick: this.connect, - type: "button", - className: "ui-button filled brand small grow", - style: { - display: "inline-block", - minHeight: "18px", - marginLeft: "10px", - lineHeight: "14px" - } - }, - React.createElement( - "div", - {className: "ui-button-contents"}, - "Connect" - ) - ) - ), this.bdServer]; - } - - get footer() { - return React.createElement( - "div", - {className: "ui-tab-bar-header"}, - React.createElement( - "a", - {href: "https://discordservers.com", target: "_blank"}, - "Discordservers.com" - ) - ); - } - - get connection() { - const {connection} = this.state; - if (connection.state !== 2) return React.createElement("span", null); - - return React.createElement( - "span", - null, - React.createElement( - "span", - {style: {color: "#b9bbbe", fontSize: "10px", marginLeft: "10px"}}, - "Connected as: ", - `${connection.user.username}#${connection.user.discriminator}` - ), - React.createElement( - "div", - {style: {padding: "5px 10px 0 10px"}}, - React.createElement( - "button", - {style: {width: "100%", minHeight: "20px"}, type: "button", className: "ui-button filled brand small grow"}, - React.createElement( - "div", - {className: "ui-button-contents", onClick: this.connect}, - "Reconnect" - ) - ) - ) - ); -} -} diff --git a/src/ui/settings/plugincard.js b/src/ui/settings/plugincard.js index 7818582c..7d8174e8 100644 --- a/src/ui/settings/plugincard.js +++ b/src/ui/settings/plugincard.js @@ -118,7 +118,6 @@ export default class PluginCard extends React.Component { onChange() { this.setState({checked: !this.state.checked}); - // PluginManager.togglePlugin(this.props.content.id); this.props.onChange && this.props.onChange(this.props.content.id); } diff --git a/src/ui/settings/settings.js b/src/ui/settings/settings.js index 6c389074..3548f06d 100644 --- a/src/ui/settings/settings.js +++ b/src/ui/settings/settings.js @@ -29,15 +29,9 @@ export default class V2_SettingsPanel { } static get attribution() { - return React.createElement( - "div", - {style: {fontSize: "12px", fontWeight: "600", color: "#72767d", padding: "2px 10px"}}, + return React.createElement("div", {className: "bd-version", style: {fontSize: "12px", fontWeight: "600", color: "#72767d", padding: "2px 10px"}}, `BBD v${Config.bbdVersion} by `, - React.createElement( - "a", - {href: "https://github.com/rauenzi/", target: "_blank"}, - "Zerebos" - ) + React.createElement("a", {href: "https://github.com/rauenzi/", target: "_blank"}, "Zerebos") ); } } \ No newline at end of file