diff --git a/.eslintrc b/.eslintrc
index 4425cb47..50b2a323 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,5 +1,5 @@
{
- "extends": "eslint:recommended",
+ "extends": ["eslint:recommended", "plugin:react/recommended"],
"env": {
"browser": true,
"node": true,
@@ -7,7 +7,10 @@
},
"parserOptions": {
"ecmaVersion": 8,
- "sourceType": "module"
+ "sourceType": "module",
+ "ecmaFeatures": {
+ "jsx": true
+ }
},
"rules": {
"semi": 2,
@@ -24,7 +27,9 @@
"quote-props": ["error", "consistent-as-needed", {"keywords": true}],
"object-curly-spacing": ["error", "never", { "objectsInObjects": false }],
"no-var": "error",
- "prefer-const": "error"
+ "prefer-const": "error",
+ "react/jsx-uses-react": "error",
+ "react/jsx-uses-vars": "error"
},
"globals": {
"webpackJsonp": false,
diff --git a/js/main.js b/js/main.js
index d095d65f..a57e7b52 100644
--- a/js/main.js
+++ b/js/main.js
@@ -97,23 +97,93 @@ var Core =
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = ({
- local: false,
- localServer: "//localhost:8080",
- minified: true,
- version: "0.3.0",
- branch: "master",
- repo: "rauenzi",
- minSupportedVersion: "0.3.0",
- bbdVersion: "0.2.17"
+ local: false,
+ localServer: "//localhost:8080",
+ minified: true,
+ version: "0.3.0",
+ branch: "master",
+ repo: "rauenzi",
+ minSupportedVersion: "0.3.0",
+ bbdVersion: "0.2.17"
});
/***/ }),
+/***/ "./src/data/cookies/plugincookie.js":
+/*!******************************************!*\
+ !*** ./src/data/cookies/plugincookie.js ***!
+ \******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = ({});
+
+/***/ }),
+
+/***/ "./src/data/cookies/settingscookie.js":
+/*!********************************************!*\
+ !*** ./src/data/cookies/settingscookie.js ***!
+ \********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = ({
+ "bda-gs-1": true,
+ "bda-gs-2": false,
+ "bda-gs-3": false,
+ "bda-gs-4": false,
+ "bda-gs-5": true,
+ "bda-gs-6": false,
+ "bda-gs-7": false,
+ "bda-gs-8": false,
+ "bda-es-0": true,
+ "bda-es-1": true,
+ "bda-es-2": true,
+ "bda-es-4": false,
+ "bda-es-6": true,
+ "bda-es-7": true,
+ "bda-gs-b": false,
+ "bda-es-8": true,
+ "bda-dc-0": false,
+ "bda-css-0": false,
+ "bda-css-1": false,
+ "bda-es-9": true,
+ "fork-dm-1": false,
+ "fork-ps-1": true,
+ "fork-ps-2": true,
+ "fork-ps-3": true,
+ "fork-ps-4": true,
+ "fork-ps-5": true,
+ "fork-es-2": false,
+ "fork-es-3": true,
+ "fork-wp-1": false,
+ "fork-wp-2": false
+});
+
+/***/ }),
+
+/***/ "./src/data/cookies/themecookie.js":
+/*!*****************************************!*\
+ !*** ./src/data/cookies/themecookie.js ***!
+ \*****************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony default export */ __webpack_exports__["default"] = ({});
+
+/***/ }),
+
/***/ "./src/data/data.js":
/*!**************************!*\
!*** ./src/data/data.js ***!
\**************************/
-/*! exports provided: SettingsInfo, SettingsCookie, Config, PluginCookie, ThemeCookie, Themes, Plugins, EmoteBlacklist */
+/*! exports provided: SettingsInfo, SettingsCookie, Config, PluginCookie, ThemeCookie, Themes, Plugins, Emotes, EmoteBlacklist */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -121,17 +191,17 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./settings */ "./src/data/settings.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SettingsInfo", function() { return _settings__WEBPACK_IMPORTED_MODULE_0__["default"]; });
-/* harmony import */ var _settingscookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settingscookie */ "./src/data/settingscookie.js");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SettingsCookie", function() { return _settingscookie__WEBPACK_IMPORTED_MODULE_1__["default"]; });
+/* harmony import */ var _cookies_settingscookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cookies/settingscookie */ "./src/data/cookies/settingscookie.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SettingsCookie", function() { return _cookies_settingscookie__WEBPACK_IMPORTED_MODULE_1__["default"]; });
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config */ "./src/data/config.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Config", function() { return _config__WEBPACK_IMPORTED_MODULE_2__["default"]; });
-/* harmony import */ var _plugincookie__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./plugincookie */ "./src/data/plugincookie.js");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PluginCookie", function() { return _plugincookie__WEBPACK_IMPORTED_MODULE_3__["default"]; });
+/* harmony import */ var _cookies_plugincookie__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cookies/plugincookie */ "./src/data/cookies/plugincookie.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PluginCookie", function() { return _cookies_plugincookie__WEBPACK_IMPORTED_MODULE_3__["default"]; });
-/* harmony import */ var _themecookie__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./themecookie */ "./src/data/themecookie.js");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ThemeCookie", function() { return _themecookie__WEBPACK_IMPORTED_MODULE_4__["default"]; });
+/* harmony import */ var _cookies_themecookie__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./cookies/themecookie */ "./src/data/cookies/themecookie.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ThemeCookie", function() { return _cookies_themecookie__WEBPACK_IMPORTED_MODULE_4__["default"]; });
/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./themes */ "./src/data/themes.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Themes", function() { return _themes__WEBPACK_IMPORTED_MODULE_5__["default"]; });
@@ -139,8 +209,11 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _plugins__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./plugins */ "./src/data/plugins.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Plugins", function() { return _plugins__WEBPACK_IMPORTED_MODULE_6__["default"]; });
-/* harmony import */ var _emoteblacklist__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./emoteblacklist */ "./src/data/emoteblacklist.js");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmoteBlacklist", function() { return _emoteblacklist__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+/* harmony import */ var _emotes_emotes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./emotes/emotes */ "./src/data/emotes/emotes.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Emotes", function() { return _emotes_emotes__WEBPACK_IMPORTED_MODULE_7__["default"]; });
+
+/* harmony import */ var _emotes_blacklist__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./emotes/blacklist */ "./src/data/emotes/blacklist.js");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmoteBlacklist", function() { return _emotes_blacklist__WEBPACK_IMPORTED_MODULE_8__["default"]; });
@@ -155,10 +228,10 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ "./src/data/emoteblacklist.js":
-/*!************************************!*\
- !*** ./src/data/emoteblacklist.js ***!
- \************************************/
+/***/ "./src/data/emotes/blacklist.js":
+/*!**************************************!*\
+ !*** ./src/data/emotes/blacklist.js ***!
+ \**************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -168,16 +241,22 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ "./src/data/plugincookie.js":
-/*!**********************************!*\
- !*** ./src/data/plugincookie.js ***!
- \**********************************/
+/***/ "./src/data/emotes/emotes.js":
+/*!***********************************!*\
+ !*** ./src/data/emotes/emotes.js ***!
+ \***********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony default export */ __webpack_exports__["default"] = ({});
+/* harmony default export */ __webpack_exports__["default"] = ({
+ TwitchGlobal: {},
+ TwitchSubscriber: {},
+ BTTV: {},
+ FrankerFaceZ: {},
+ BTTV2: {}
+});
/***/ }),
@@ -204,110 +283,251 @@ __webpack_require__.r(__webpack_exports__);
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = ({
- "Custom css live update": {id: "bda-css-0", info: "", implemented: true, hidden: true, cat: "core"},
- "Custom css auto udpate": {id: "bda-css-1", info: "", implemented: true, hidden: true, cat: "core"},
- "BetterDiscord Blue": {id: "bda-gs-b", info: "Replace Discord blue with BD Blue", implemented: false, hidden: false, cat: "core"},
+ "Custom css live update": {
+ id: "bda-css-0",
+ info: "",
+ implemented: true,
+ hidden: true,
+ cat: "core"
+ },
+ "Custom css auto udpate": {
+ id: "bda-css-1",
+ info: "",
+ implemented: true,
+ hidden: true,
+ cat: "core"
+ },
+ "BetterDiscord Blue": {
+ id: "bda-gs-b",
+ info: "Replace Discord blue with BD Blue",
+ implemented: false,
+ hidden: false,
+ cat: "core"
+ },
- /* Core */
- /* ====== */
- "Public Servers": {id: "bda-gs-1", info: "Display public servers button", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Minimal Mode": {id: "bda-gs-2", info: "Hide elements and reduce the size of elements.", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Voice Mode": {id: "bda-gs-4", info: "Only show voice chat", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Hide Channels": {id: "bda-gs-3", info: "Hide channels in minimal mode", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Dark Mode": {id: "bda-gs-5", info: "Make certain elements dark by default(wip)", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Voice Disconnect": {id: "bda-dc-0", info: "Disconnect from voice server when closing Discord", implemented: true, hidden: false, cat: "core", category: "modules"},
- "24 Hour Timestamps": {id: "bda-gs-6", info: "Replace 12hr timestamps with proper ones", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Coloured Text": {id: "bda-gs-7", info: "Make text colour the same as role colour", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Normalize Classes": {id: "fork-ps-4", info: "Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)", implemented: true, hidden: false, cat: "core", category: "modules"},
+ /* Core */
- /* Content */
- "Content Error Modal": {id: "fork-ps-1", info: "Shows a modal with plugin/theme errors", implemented: true, hidden: false, cat: "core", category: "content manager"},
- "Show Toasts": {id: "fork-ps-2", info: "Shows a small notification for important information", implemented: true, hidden: false, cat: "core", category: "content manager"},
- "Scroll To Settings": {id: "fork-ps-3", info: "Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)", implemented: true, hidden: false, cat: "core", category: "content manager"},
- "Automatic Loading": {id: "fork-ps-5", info: "Automatically loads, reloads, and unloads plugins and themes", implemented: true, hidden: false, cat: "core", category: "content manager"},
+ /* ====== */
+ "Public Servers": {
+ id: "bda-gs-1",
+ info: "Display public servers button",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "Minimal Mode": {
+ id: "bda-gs-2",
+ info: "Hide elements and reduce the size of elements.",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "Voice Mode": {
+ id: "bda-gs-4",
+ info: "Only show voice chat",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "Hide Channels": {
+ id: "bda-gs-3",
+ info: "Hide channels in minimal mode",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "Dark Mode": {
+ id: "bda-gs-5",
+ info: "Make certain elements dark by default(wip)",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "Voice Disconnect": {
+ id: "bda-dc-0",
+ info: "Disconnect from voice server when closing Discord",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "24 Hour Timestamps": {
+ id: "bda-gs-6",
+ info: "Replace 12hr timestamps with proper ones",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "Coloured Text": {
+ id: "bda-gs-7",
+ info: "Make text colour the same as role colour",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
+ "Normalize Classes": {
+ id: "fork-ps-4",
+ info: "Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "modules"
+ },
- /* Developer */
- "Developer Mode": {id: "bda-gs-8", info: "Developer Mode", implemented: true, hidden: false, cat: "core", category: "developer settings"},
- "Copy Selector": {id: "fork-dm-1", info: "Adds a \"Copy Selector\" option to context menus when developer mode is active", implemented: true, hidden: false, cat: "core", category: "developer settings"},
+ /* Content */
+ "Content Error Modal": {
+ id: "fork-ps-1",
+ info: "Shows a modal with plugin/theme errors",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "content manager"
+ },
+ "Show Toasts": {
+ id: "fork-ps-2",
+ info: "Shows a small notification for important information",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "content manager"
+ },
+ "Scroll To Settings": {
+ id: "fork-ps-3",
+ info: "Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "content manager"
+ },
+ "Automatic Loading": {
+ id: "fork-ps-5",
+ info: "Automatically loads, reloads, and unloads plugins and themes",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "content manager"
+ },
- /* Window Prefs */
- "Enable Transparency": {id: "fork-wp-1", info: "Enables the main window to be see-through (requires restart)", implemented: true, hidden: false, cat: "core", category: "window preferences"},
- "Window Frame": {id: "fork-wp-2", info: "Adds the native os window frame to the main window", implemented: false, hidden: true, cat: "core", category: "window preferences"},
+ /* Developer */
+ "Developer Mode": {
+ id: "bda-gs-8",
+ info: "Developer Mode",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "developer settings"
+ },
+ "Copy Selector": {
+ id: "fork-dm-1",
+ info: "Adds a \"Copy Selector\" option to context menus when developer mode is active",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "developer settings"
+ },
+ /* Window Prefs */
+ "Enable Transparency": {
+ id: "fork-wp-1",
+ info: "Enables the main window to be see-through (requires restart)",
+ implemented: true,
+ hidden: false,
+ cat: "core",
+ category: "window preferences"
+ },
+ "Window Frame": {
+ id: "fork-wp-2",
+ info: "Adds the native os window frame to the main window",
+ implemented: false,
+ hidden: true,
+ cat: "core",
+ category: "window preferences"
+ },
- /* Emotes */
- /* ====== */
- "Download Emotes": {id: "fork-es-3", info: "Download emotes when the cache is expired", implemented: true, hidden: false, cat: "emote"},
- "Twitch Emotes": {id: "bda-es-7", info: "Show Twitch emotes", implemented: true, hidden: false, cat: "emote"},
- "FrankerFaceZ Emotes": {id: "bda-es-1", info: "Show FrankerFaceZ Emotes", implemented: true, hidden: false, cat: "emote"},
- "BetterTTV Emotes": {id: "bda-es-2", info: "Show BetterTTV Emotes", implemented: true, hidden: false, cat: "emote"},
- "Emote Menu": {id: "bda-es-0", info: "Show Twitch/Favourite emotes in emote menu", implemented: true, hidden: false, cat: "emote"},
- "Emoji Menu": {id: "bda-es-9", info: "Show Discord emoji menu", implemented: true, hidden: false, cat: "emote"},
- "Emote Auto Capitalization": {id: "bda-es-4", info: "Autocapitalize emote commands", implemented: true, hidden: false, cat: "emote"},
- "Show Names": {id: "bda-es-6", info: "Show emote names on hover", implemented: true, hidden: false, cat: "emote"},
- "Show emote modifiers": {id: "bda-es-8", info: "Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)", implemented: true, hidden: false, cat: "emote"},
- "Animate On Hover": {id: "fork-es-2", info: "Only animate the emote modifiers on hover", implemented: true, hidden: false, cat: "emote"}
+ /* Emotes */
+
+ /* ====== */
+ "Download Emotes": {
+ id: "fork-es-3",
+ info: "Download emotes when the cache is expired",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "Twitch Emotes": {
+ id: "bda-es-7",
+ info: "Show Twitch emotes",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "FrankerFaceZ Emotes": {
+ id: "bda-es-1",
+ info: "Show FrankerFaceZ Emotes",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "BetterTTV Emotes": {
+ id: "bda-es-2",
+ info: "Show BetterTTV Emotes",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "Emote Menu": {
+ id: "bda-es-0",
+ info: "Show Twitch/Favourite emotes in emote menu",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "Emoji Menu": {
+ id: "bda-es-9",
+ info: "Show Discord emoji menu",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "Emote Auto Capitalization": {
+ id: "bda-es-4",
+ info: "Autocapitalize emote commands",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "Show Names": {
+ id: "bda-es-6",
+ info: "Show emote names on hover",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "Show emote modifiers": {
+ id: "bda-es-8",
+ info: "Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ },
+ "Animate On Hover": {
+ id: "fork-es-2",
+ info: "Only animate the emote modifiers on hover",
+ implemented: true,
+ hidden: false,
+ cat: "emote"
+ }
});
/***/ }),
-/***/ "./src/data/settingscookie.js":
-/*!************************************!*\
- !*** ./src/data/settingscookie.js ***!
- \************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony default export */ __webpack_exports__["default"] = ({
- "bda-gs-1": true,
- "bda-gs-2": false,
- "bda-gs-3": false,
- "bda-gs-4": false,
- "bda-gs-5": true,
- "bda-gs-6": false,
- "bda-gs-7": false,
- "bda-gs-8": false,
- "bda-es-0": true,
- "bda-es-1": true,
- "bda-es-2": true,
- "bda-es-4": false,
- "bda-es-6": true,
- "bda-es-7": true,
- "bda-gs-b": false,
- "bda-es-8": true,
- "bda-dc-0": false,
- "bda-css-0": false,
- "bda-css-1": false,
- "bda-es-9": true,
- "fork-dm-1": false,
- "fork-ps-1": true,
- "fork-ps-2": true,
- "fork-ps-3": true,
- "fork-ps-4": true,
- "fork-ps-5": true,
- "fork-es-2": false,
- "fork-es-3": true,
- "fork-wp-1": false,
- "fork-wp-2": false
-});
-
-/***/ }),
-
-/***/ "./src/data/themecookie.js":
-/*!*********************************!*\
- !*** ./src/data/themecookie.js ***!
- \*********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony default export */ __webpack_exports__["default"] = ({});
-
-/***/ }),
-
/***/ "./src/data/themes.js":
/*!****************************!*\
!*** ./src/data/themes.js ***!
@@ -325,12 +545,13 @@ __webpack_require__.r(__webpack_exports__);
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
-/*! exports provided: default */
+/*! exports provided: default, patchModuleLoad */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CoreWrapper; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchModuleLoad", function() { return patchModuleLoad; });
/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ "./src/data/data.js");
/* harmony import */ var _localstorage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./localstorage */ "./src/localstorage.js");
/* harmony import */ var _modules_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/core */ "./src/modules/core.js");
@@ -344,16 +565,14 @@ __webpack_require__.r(__webpack_exports__);
+ // Perform some setup
-
-// Perform some setup
Object(_localstorage__WEBPACK_IMPORTED_MODULE_1__["default"])();
const loadingIcon = document.createElement("div");
loadingIcon.className = "bd-loaderv2";
loadingIcon.title = "BandagedBD is loading...";
-document.body.appendChild(loadingIcon);
+document.body.appendChild(loadingIcon); // window.Core = Core;
-// window.Core = Core;
window.BdApi = _modules_pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"];
window.settings = data__WEBPACK_IMPORTED_MODULE_0__["SettingsInfo"];
window.settingsCookie = data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"];
@@ -363,19 +582,52 @@ window.pluginModule = _modules_pluginmanager__WEBPACK_IMPORTED_MODULE_4__["defau
window.themeModule = _modules_thememanager__WEBPACK_IMPORTED_MODULE_5__["default"];
window.bdthemes = data__WEBPACK_IMPORTED_MODULE_0__["Themes"];
window.bdplugins = data__WEBPACK_IMPORTED_MODULE_0__["Plugins"];
+window.bdEmotes = data__WEBPACK_IMPORTED_MODULE_0__["Emotes"];
window.bemotes = data__WEBPACK_IMPORTED_MODULE_0__["EmoteBlacklist"];
window.bdPluginStorage = _modules_oldstorage__WEBPACK_IMPORTED_MODULE_6__["bdPluginStorage"];
-
class CoreWrapper {
- constructor(config) {
- _modules_core__WEBPACK_IMPORTED_MODULE_2__["default"].setConfig(config);
- }
+ constructor(config) {
+ _modules_core__WEBPACK_IMPORTED_MODULE_2__["default"].setConfig(config);
+ }
+
+ init() {
+ _modules_core__WEBPACK_IMPORTED_MODULE_2__["default"].init();
+ }
- init() {
- _modules_core__WEBPACK_IMPORTED_MODULE_2__["default"].init();
- }
}
+function patchModuleLoad() {
+ const namespace = "betterdiscord";
+ const prefix = `${namespace}/`;
+ const Module = __webpack_require__(/*! module */ "module");
+
+ const load = Module._load; // const resolveFilename = Module._resolveFilename;
+
+ Module._load = function (request) {
+ if (request === namespace || request.startsWith(prefix)) {
+ const requested = request.substr(prefix.length);
+ if (requested == "api") return _modules_pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"];
+ }
+
+ return load.apply(this, arguments);
+ }; // Module._resolveFilename = function (request, parent, isMain) {
+ // if (request === "betterdiscord" || request.startsWith("betterdiscord/")) {
+ // const contentPath = PluginManager.getPluginPathByModule(parent);
+ // if (contentPath) return request;
+ // }
+ // return resolveFilename.apply(this, arguments);
+ // };
+
+
+ return function () {
+ Module._load = load;
+ };
+} // export function getPluginByModule(module) {
+// return this.localContent.find(plugin => module.filename === plugin.contentPath || module.filename.startsWith(plugin.contentPath + path.sep));
+// }
+// export function getPluginPathByModule(module) {
+// return Object.keys(this.pluginApiInstances).find(contentPath => module.filename === contentPath || module.filename.startsWith(contentPath + path.sep));
+// }
// var settingsPanel, emoteModule, quickEmoteMenu, voiceMode,, dMode, publicServersModule;
// var bdConfig = null;
@@ -391,55 +643,53 @@ class CoreWrapper {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* Localstorage fix */
-/* harmony default export */ __webpack_exports__["default"] = (function() {
+/* harmony default export */ __webpack_exports__["default"] = (function () {
+ const fs = __webpack_require__(/*! fs */ "fs");
- const fs = __webpack_require__(/*! fs */ "fs");
- const platform = process.platform;
- const dataPath = (platform === "win32" ? process.env.APPDATA : platform === "darwin" ? process.env.HOME + "/Library/Preferences" : process.env.HOME + "/.config") + "/BetterDiscord/";
- const localStorageFile = "localStorage.json";
+ const platform = process.platform;
+ const dataPath = (platform === "win32" ? process.env.APPDATA : platform === "darwin" ? process.env.HOME + "/Library/Preferences" : process.env.HOME + "/.config") + "/BetterDiscord/";
+ const localStorageFile = "localStorage.json";
+ let data = {};
- let data = {};
- if (fs.existsSync(`${dataPath}${localStorageFile}`)) {
- try {
- data = JSON.parse(fs.readFileSync(`${dataPath}${localStorageFile}`));
- }
- catch (err) {
- console.log(err);
- }
+ if (fs.existsSync(`${dataPath}${localStorageFile}`)) {
+ try {
+ data = JSON.parse(fs.readFileSync(`${dataPath}${localStorageFile}`));
+ } catch (err) {
+ console.log(err);
}
- else if (fs.existsSync(localStorageFile)) {
- try {
- data = JSON.parse(fs.readFileSync(localStorageFile));
- }
- catch (err) {
- console.log(err);
- }
+ } else if (fs.existsSync(localStorageFile)) {
+ try {
+ data = JSON.parse(fs.readFileSync(localStorageFile));
+ } catch (err) {
+ console.log(err);
}
+ }
- const storage = data;
- storage.setItem = function(i, v) {
- storage[i] = v;
- this.save();
- };
- storage.getItem = function(i) {
- return storage[i] || null;
- };
- storage.save = function() {
- fs.writeFileSync(`${dataPath}${localStorageFile}`, JSON.stringify(this), null, 4);
- };
+ const storage = data;
- const lsProxy = new Proxy(storage, {
- set: function(target, name, val) {
- storage[name] = val;
- storage.save();
- },
- get: function(target, name) {
- return storage[name] || null;
- }
- });
+ storage.setItem = function (i, v) {
+ storage[i] = v;
+ this.save();
+ };
- window.localStorage = lsProxy;
+ storage.getItem = function (i) {
+ return storage[i] || null;
+ };
+ storage.save = function () {
+ fs.writeFileSync(`${dataPath}${localStorageFile}`, JSON.stringify(this), null, 4);
+ };
+
+ const lsProxy = new Proxy(storage, {
+ set: function (target, name, val) {
+ storage[name] = val;
+ storage.save();
+ },
+ get: function (target, name) {
+ return storage[name] || null;
+ }
+ });
+ window.localStorage = lsProxy;
});
/***/ }),
@@ -454,165 +704,151 @@ __webpack_require__.r(__webpack_exports__);
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ "./src/data/data.js");
-/* harmony import */ var _pluginapi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pluginapi */ "./src/modules/pluginapi.js");
+/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webpackmodules */ "./src/modules/webpackmodules.js");
+/* harmony import */ var _pluginapi__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pluginapi */ "./src/modules/pluginapi.js");
+/* harmony import */ var _ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/icons/bdlogo */ "./src/ui/icons/bdlogo.js");
+
-// import BDLogo from "../ui/icons/bdlogo";
/* harmony default export */ __webpack_exports__["default"] = (new class V2 {
+ constructor() {
+ this.editorDetached = false;
+ }
- constructor() {
- this.editorDetached = false;
- this.WebpackModules = (() => {
- const req = webpackJsonp.push([[], {__extra_id__: (module, exports, req) => module.exports = req}, [["__extra_id__"]]]);
- delete req.m.__extra_id__;
- delete req.c.__extra_id__;
- const find = (filter) => {
- for (const i in req.c) {
- if (req.c.hasOwnProperty(i)) {
- const m = req.c[i].exports;
- if (m && m.__esModule && m.default && filter(m.default)) return m.default;
- if (m && filter(m)) return m;
- }
- }
- console.warn("Cannot find loaded module in cache");
- return null;
- };
+ initialize() {
+ _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].suppressErrors(this.patchSocial.bind(this), "BD Social Patch")();
+ _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].suppressErrors(this.patchGuildPills.bind(this), "BD Guild Pills Patch")();
+ _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].suppressErrors(this.patchGuildListItems.bind(this), "BD Guild List Items Patch")();
+ _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].suppressErrors(this.patchGuildSeparator.bind(this), "BD Guild Separator Patch")();
+ }
- const findAll = (filter) => {
- const modules = [];
- for (const i in req.c) {
- if (req.c.hasOwnProperty(i)) {
- const m = req.c[i].exports;
- if (m && m.__esModule && m.default && filter(m.default)) modules.push(m.default);
- else if (m && filter(m)) modules.push(m);
- }
- }
- return modules;
- };
+ get messageClasses() {
+ return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getByProps("message", "containerCozy");
+ }
- const findByUniqueProperties = (propNames) => find(module => propNames.every(prop => module[prop] !== undefined));
- const findByPrototypes = (protoNames) => find(module => module.prototype && protoNames.every(protoProp => module.prototype[protoProp] !== undefined));
- const findByDisplayName = (displayName) => find(module => module.displayName === displayName);
+ get guildClasses() {
+ const guildsWrapper = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getByProps("wrapper", "unreadMentionsBar");
+ const guilds = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getByProps("guildsError", "selected");
+ const pill = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getByProps("blobContainer");
+ return Object.assign({}, guildsWrapper, guilds, pill);
+ }
- return {find, findAll, findByUniqueProperties, findByPrototypes, findByDisplayName};
- })();
+ get MessageContentComponent() {
+ return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getModule(m => m.defaultProps && m.defaultProps.hasOwnProperty("disableButtons"));
+ }
- this.internal = {
- react: this.WebpackModules.findByUniqueProperties(["Component", "PureComponent", "Children", "createElement", "cloneElement"]),
- reactDom: this.WebpackModules.findByUniqueProperties(["findDOMNode"])
+ get TimeFormatter() {
+ return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getByProps("dateFormat");
+ }
+
+ get TooltipWrapper() {
+ return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getByDisplayName("TooltipDeprecated");
+ }
+
+ get NativeModule() {
+ return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getByProps("setBadge");
+ }
+
+ get Tooltips() {
+ return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getModule(m => m.hide && m.show && !m.search && !m.submit && !m.search && !m.activateRagingDemon && !m.dismiss);
+ }
+
+ get KeyGenerator() {
+ return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__["default"].getModule(m => m.toString && /"binary"/.test(m.toString()));
+ }
+
+ patchSocial() {
+ if (this.socialPatch) return;
+ const TabBar = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].findModule(m => m.displayName == "TabBar");
+ const Anchor = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].findModule(m => m.displayName == "Anchor");
+ if (!TabBar || !Anchor) return;
+ this.socialPatch = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].monkeyPatch(TabBar.prototype, "render", {
+ after: data => {
+ const children = data.returnValue.props.children;
+ if (!children || !children.length) return;
+ if (children[children.length - 2].type.displayName !== "Separator") return;
+ if (!children[children.length - 1].type.toString().includes("socialLinks")) return;
+ const original = children[children.length - 1].type;
+
+ const newOne = function () {
+ const returnVal = original(...arguments);
+ returnVal.props.children.push(_pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].React.createElement(Anchor, {
+ className: "bd-social-link",
+ href: "https://github.com/rauenzi/BetterDiscordApp",
+ rel: "author",
+ title: "BandagedBD",
+ target: "_blank"
+ }, _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ size: "16px",
+ className: "bd-social-logo"
+ })));
+ return returnVal;
};
- this.getInternalInstance = e => e[Object.keys(e).find(k => k.startsWith("__reactInternalInstance"))];
- }
- initialize() {
- // BdApi.suppressErrors(this.patchSocial.bind(this), "BD Social Patch")();
- _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].suppressErrors(this.patchGuildPills.bind(this), "BD Guild Pills Patch")();
- _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].suppressErrors(this.patchGuildListItems.bind(this), "BD Guild List Items Patch")();
- _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].suppressErrors(this.patchGuildSeparator.bind(this), "BD Guild Separator Patch")();
- }
+ children[children.length - 1].type = newOne;
+ }
+ });
+ }
- get react() {return this.internal.react;}
- get reactDom() {return this.internal.reactDom;}
- get reactComponent() {return this.internal.react.Component;}
+ patchGuildListItems() {
+ if (this.guildListItemsPatch) return;
+ const listItemClass = this.guildClasses.listItem.split(" ")[0];
+ const blobClass = this.guildClasses.blobContainer.split(" ")[0];
+ const reactInstance = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].getInternalInstance(document.querySelector(`.${listItemClass} .${blobClass}`).parentElement);
+ const GuildComponent = reactInstance.return.type;
+ if (!GuildComponent) return;
+ this.guildListItemsPatch = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].monkeyPatch(GuildComponent.prototype, "render", {
+ after: data => {
+ const returnValue = data.returnValue;
+ const guildData = data.thisObject.props;
+ returnValue.props.className += " bd-guild";
+ if (guildData.unread) returnValue.props.className += " bd-unread";
+ if (guildData.selected) returnValue.props.className += " bd-selected";
+ if (guildData.audio) returnValue.props.className += " bd-audio";
+ if (guildData.video) returnValue.props.className += " bd-video";
+ if (guildData.badge) returnValue.props.className += " bd-badge";
+ if (guildData.animatable) returnValue.props.className += " bd-animatable";
+ return returnValue;
+ }
+ });
+ }
- get messageClasses() {return this.WebpackModules.findByUniqueProperties(["message", "containerCozy"]);}
- get guildClasses() {
- const guildsWrapper = this.WebpackModules.findByUniqueProperties(["wrapper", "unreadMentionsBar"]);
- const guilds = this.WebpackModules.findByUniqueProperties(["guildsError", "selected"]);
- const pill = this.WebpackModules.findByUniqueProperties(["blobContainer"]);
- return Object.assign({}, guildsWrapper, guilds, pill);
- }
+ patchGuildPills() {
+ if (this.guildPillPatch) return;
+ const guildPill = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].findModule(m => m.default && m.default.toString && m.default.toString().includes("translate3d"));
+ if (!guildPill) return;
+ this.guildPillPatch = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].monkeyPatch(guildPill, "default", {
+ after: data => {
+ const props = data.methodArguments[0];
+ if (props.unread) data.returnValue.props.className += " bd-unread";
+ if (props.selected) data.returnValue.props.className += " bd-selected";
+ if (props.hovered) data.returnValue.props.className += " bd-hovered";
+ return data.returnValue;
+ }
+ });
+ }
- get MessageContentComponent() {return this.WebpackModules.find(m => m.defaultProps && m.defaultProps.hasOwnProperty("disableButtons"));}
- get TimeFormatter() {return this.WebpackModules.findByUniqueProperties(["dateFormat"]);}
- get TooltipWrapper() {return this.WebpackModules.findByDisplayName("TooltipDeprecated");}
- get NativeModule() {return this.WebpackModules.findByUniqueProperties(["setBadge"]);}
- get Tooltips() {return this.WebpackModules.find(m => m.hide && m.show && !m.search && !m.submit && !m.search && !m.activateRagingDemon && !m.dismiss);}
- get KeyGenerator() {return this.WebpackModules.find(m => m.toString && /"binary"/.test(m.toString()));}
+ patchGuildSeparator() {
+ if (this.guildSeparatorPatch) return;
+ const Guilds = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].findModuleByDisplayName("Guilds");
+ const guildComponents = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].findModuleByProps("renderListItem");
+ if (!guildComponents || !Guilds) return;
- parseSettings(cat) {
- return Object.keys(data__WEBPACK_IMPORTED_MODULE_0__["SettingsInfo"]).reduce((arr, key) => {
- const setting = data__WEBPACK_IMPORTED_MODULE_0__["SettingsInfo"][key];
- if (setting.cat === cat && setting.implemented && !setting.hidden) {
- setting.text = key;
- arr.push(setting);
- } return arr;
- }, []);
- }
+ const GuildSeparator = function () {
+ const returnValue = guildComponents.Separator(...arguments);
+ returnValue.props.className += " bd-guild-separator";
+ return returnValue;
+ };
- // patchSocial() {
- // if (this.socialPatch) return;
- // const TabBar = BdApi.findModule(m => m.displayName == "TabBar");
- // const Anchor = BdApi.findModule(m => m.displayName == "Anchor");
- // if (!TabBar || !Anchor) return;
- // this.socialPatch = BdApi.monkeyPatch(TabBar.prototype, "render", {after: (data) => {
- // const children = data.returnValue.props.children;
- // if (!children || !children.length) return;
- // if (children[children.length - 2].type.displayName !== "Separator") return;
- // if (!children[children.length - 1].type.toString().includes("socialLinks")) return;
- // const original = children[children.length - 1].type;
- // const newOne = function() {
- // const returnVal = original(...arguments);
- // returnVal.props.children.push(BdApi.React.createElement(Anchor, {className: "bd-social-link", href: "https://github.com/rauenzi/BetterDiscordApp", rel: "author", title: "BandagedBD", target: "_blank"},
- // BdApi.React.createElement(BDLogo, {size: "16px", className: "bd-social-logo"})
- // ));
- // return returnVal;
- // };
- // children[children.length - 1].type = newOne;
- // }});
- // }
+ this.guildSeparatorPatch = _pluginapi__WEBPACK_IMPORTED_MODULE_2__["default"].monkeyPatch(Guilds.prototype, "render", {
+ after: data => {
+ data.returnValue.props.children[1].props.children[3].type = GuildSeparator;
+ }
+ });
+ }
- patchGuildListItems() {
- if (this.guildListItemsPatch) return;
- const listItemClass = this.guildClasses.listItem.split(" ")[0];
- const blobClass = this.guildClasses.blobContainer.split(" ")[0];
- const reactInstance = _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].getInternalInstance(document.querySelector(`.${listItemClass} .${blobClass}`).parentElement);
- const GuildComponent = reactInstance.return.type;
- if (!GuildComponent) return;
- this.guildListItemsPatch = _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].monkeyPatch(GuildComponent.prototype, "render", {after: (data) => {
- const returnValue = data.returnValue;
- const guildData = data.thisObject.props;
- returnValue.props.className += " bd-guild";
- if (guildData.unread) returnValue.props.className += " bd-unread";
- if (guildData.selected) returnValue.props.className += " bd-selected";
- if (guildData.audio) returnValue.props.className += " bd-audio";
- if (guildData.video) returnValue.props.className += " bd-video";
- if (guildData.badge) returnValue.props.className += " bd-badge";
- if (guildData.animatable) returnValue.props.className += " bd-animatable";
- return returnValue;
- }});
- }
-
- patchGuildPills() {
- if (this.guildPillPatch) return;
- const guildPill = _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].findModule(m => m.default && m.default.toString && m.default.toString().includes("translate3d"));
- if (!guildPill) return;
- this.guildPillPatch = _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].monkeyPatch(guildPill, "default", {after: (data) => {
- const props = data.methodArguments[0];
- if (props.unread) data.returnValue.props.className += " bd-unread";
- if (props.selected) data.returnValue.props.className += " bd-selected";
- if (props.hovered) data.returnValue.props.className += " bd-hovered";
- return data.returnValue;
- }});
- }
-
- patchGuildSeparator() {
- if (this.guildSeparatorPatch) return;
- const Guilds = _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].findModuleByDisplayName("Guilds");
- const guildComponents = _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].findModuleByProps("renderListItem");
- if (!guildComponents || !Guilds) return;
- const GuildSeparator = function() {
- const returnValue = guildComponents.Separator(...arguments);
- returnValue.props.className += " bd-guild-separator";
- return returnValue;
- };
- this.guildSeparatorPatch = _pluginapi__WEBPACK_IMPORTED_MODULE_1__["default"].monkeyPatch(Guilds.prototype, "render", {after: (data) => {
- data.returnValue.props.children[1].props.children[3].type = GuildSeparator;
- }});
- }
-
-});
+}());
/***/ }),
@@ -627,117 +863,129 @@ __webpack_require__.r(__webpack_exports__);
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _pluginapi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pluginapi */ "./src/modules/pluginapi.js");
-
const normalizedPrefix = "da";
const randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`);
-
/* harmony default export */ __webpack_exports__["default"] = (new class ClassNormalizer {
- get id() {return "fork-ps-4";}
- get name() {return "ClassNormalizer";}
+ get id() {
+ return "fork-ps-4";
+ }
- stop() {
- if (!this.hasPatched) return;
- this.unpatchClassModules(_pluginapi__WEBPACK_IMPORTED_MODULE_0__["default"].findAllModules(this.moduleFilter.bind(this)));
- this.revertElement(document.querySelector("#app-mount"));
- this.hasPatched = false;
+ get name() {
+ return "ClassNormalizer";
+ }
+
+ stop() {
+ if (!this.hasPatched) return;
+ this.unpatchClassModules(_pluginapi__WEBPACK_IMPORTED_MODULE_0__["default"].findAllModules(this.moduleFilter.bind(this)));
+ this.revertElement(document.querySelector("#app-mount"));
+ this.hasPatched = false;
+ }
+
+ start() {
+ if (this.hasPatched) return;
+ this.patchClassModules(_pluginapi__WEBPACK_IMPORTED_MODULE_0__["default"].findAllModules(this.moduleFilter.bind(this)));
+ this.normalizeElement(document.querySelector("#app-mount"));
+ this.hasPatched = true;
+ }
+
+ patchClassModules(modules) {
+ for (const module of modules) {
+ this.patchClassModule(normalizedPrefix, module);
+ }
+ }
+
+ unpatchClassModules(modules) {
+ for (const module of modules) {
+ this.unpatchClassModule(normalizedPrefix, module);
+ }
+ }
+
+ shouldIgnore(value) {
+ if (!isNaN(value)) return true;
+ if (value.endsWith("px") || value.endsWith("ch") || value.endsWith("em") || value.endsWith("ms")) return true;
+ if (value.startsWith("layerContainer-")) return true;
+ if (value.startsWith("#") && (value.length == 7 || value.length == 4)) return true;
+ if (value.includes("calc(") || value.includes("rgba")) return true;
+ return false;
+ }
+
+ moduleFilter(module) {
+ if (typeof module !== "object" || Array.isArray(module)) return false;
+ if (module.__esModule) return false;
+ if (!Object.keys(module).length) return false;
+
+ for (const baseClassName in module) {
+ const value = module[baseClassName];
+ if (typeof value !== "string") return false;
+ if (this.shouldIgnore(value)) continue;
+ if (value.split("-").length === 1) return false;
+ if (!randClass.test(value.split(" ")[0])) return false;
}
- start() {
- if (this.hasPatched) return;
- this.patchClassModules(_pluginapi__WEBPACK_IMPORTED_MODULE_0__["default"].findAllModules(this.moduleFilter.bind(this)));
- this.normalizeElement(document.querySelector("#app-mount"));
- this.hasPatched = true;
+ return true;
+ }
+
+ patchClassModule(componentName, classNames) {
+ for (const baseClassName in classNames) {
+ const value = classNames[baseClassName];
+ if (this.shouldIgnore(value)) continue;
+ const classList = value.split(" ");
+
+ for (const normalClass of classList) {
+ const match = normalClass.match(randClass)[1];
+ if (!match) continue; // Shouldn't ever happen since they passed the moduleFilter, but you never know
+
+ const camelCase = match.split("-").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join("");
+ classNames[baseClassName] += ` ${componentName}-${camelCase}`;
+ }
+ }
+ }
+
+ unpatchClassModule(componentName, classNames) {
+ for (const baseClassName in classNames) {
+ const value = classNames[baseClassName];
+ if (this.shouldIgnore(value)) continue;
+ let newString = "";
+ const classList = value.split(" ");
+
+ for (const normalClass of classList) {
+ if (normalClass.startsWith(`${componentName}-`)) continue;
+ newString += ` ${normalClass}`;
+ }
+
+ classNames[baseClassName] = newString.trim();
+ }
+ }
+
+ normalizeElement(element) {
+ if (!(element instanceof Element)) return;
+ const classes = element.classList;
+
+ for (let c = 0, clen = classes.length; c < clen; c++) {
+ if (!randClass.test(classes[c])) continue;
+ const match = classes[c].match(randClass)[1];
+ const newClass = match.split("-").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join("");
+ element.classList.add(`${normalizedPrefix}-${newClass}`);
}
- patchClassModules(modules) {
- for (const module of modules) {
- this.patchClassModule(normalizedPrefix, module);
- }
+ for (const child of element.children) this.normalizeElement(child);
+ }
+
+ revertElement(element) {
+ if (!(element instanceof Element)) return;
+ if (element.children && element.children.length) this.revertElement(element.children[0]);
+ if (element.nextElementSibling) this.revertElement(element.nextElementSibling);
+ const classes = element.classList;
+ const toRemove = [];
+
+ for (let c = 0; c < classes.length; c++) {
+ if (classes[c].startsWith(`${normalizedPrefix}-`)) toRemove.push(classes[c]);
}
- unpatchClassModules(modules) {
- for (const module of modules) {
- this.unpatchClassModule(normalizedPrefix, module);
- }
- }
+ element.classList.remove(...toRemove);
+ }
- shouldIgnore(value) {
- if (!isNaN(value)) return true;
- if (value.endsWith("px") || value.endsWith("ch") || value.endsWith("em") || value.endsWith("ms")) return true;
- if (value.startsWith("layerContainer-")) return true;
- if (value.startsWith("#") && (value.length == 7 || value.length == 4)) return true;
- if (value.includes("calc(") || value.includes("rgba")) return true;
- return false;
- }
-
- moduleFilter(module) {
- if (typeof module !== "object" || Array.isArray(module)) return false;
- if (module.__esModule) return false;
- if (!Object.keys(module).length) return false;
- for (const baseClassName in module) {
- const value = module[baseClassName];
- if (typeof value !== "string") return false;
- if (this.shouldIgnore(value)) continue;
- if (value.split("-").length === 1) return false;
- if (!randClass.test(value.split(" ")[0])) return false;
- }
-
- return true;
- }
-
- patchClassModule(componentName, classNames) {
- for (const baseClassName in classNames) {
- const value = classNames[baseClassName];
- if (this.shouldIgnore(value)) continue;
- const classList = value.split(" ");
- for (const normalClass of classList) {
- const match = normalClass.match(randClass)[1];
- if (!match) continue; // Shouldn't ever happen since they passed the moduleFilter, but you never know
- const camelCase = match.split("-").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join("");
- classNames[baseClassName] += ` ${componentName}-${camelCase}`;
- }
- }
- }
-
- unpatchClassModule(componentName, classNames) {
- for (const baseClassName in classNames) {
- const value = classNames[baseClassName];
- if (this.shouldIgnore(value)) continue;
- let newString = "";
- const classList = value.split(" ");
- for (const normalClass of classList) {
- if (normalClass.startsWith(`${componentName}-`)) continue;
- newString += ` ${normalClass}`;
- }
- classNames[baseClassName] = newString.trim();
- }
- }
-
- normalizeElement(element) {
- if (!(element instanceof Element)) return;
- const classes = element.classList;
- for (let c = 0, clen = classes.length; c < clen; c++) {
- if (!randClass.test(classes[c])) continue;
- const match = classes[c].match(randClass)[1];
- const newClass = match.split("-").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join("");
- element.classList.add(`${normalizedPrefix}-${newClass}`);
- }
- for (const child of element.children) this.normalizeElement(child);
- }
-
- revertElement(element) {
- if (!(element instanceof Element)) return;
- if (element.children && element.children.length) this.revertElement(element.children[0]);
- if (element.nextElementSibling) this.revertElement(element.nextElementSibling);
- const classes = element.classList;
- const toRemove = [];
- for (let c = 0; c < classes.length; c++) {
- if (classes[c].startsWith(`${normalizedPrefix}-`)) toRemove.push(classes[c]);
- }
- element.classList.remove(...toRemove);
- }
-
-});
+}());
/***/ }),
@@ -760,194 +1008,267 @@ __webpack_require__.r(__webpack_exports__);
const path = __webpack_require__(/*! path */ "path");
+
const fs = __webpack_require__(/*! fs */ "fs");
+
const Module = __webpack_require__(/*! module */ "module").Module;
+
Module.globalPaths.push(path.resolve(__webpack_require__(/*! electron */ "electron").remote.app.getAppPath(), "node_modules"));
+
class MetaError extends Error {
- constructor(message) {
- super(message);
- this.name = "MetaError";
- }
+ constructor(message) {
+ super(message);
+ this.name = "MetaError";
+ }
+
}
+
const originalJSRequire = Module._extensions[".js"];
-const originalCSSRequire = Module._extensions[".css"] ? Module._extensions[".css"] : () => {return null;};
-
+const originalCSSRequire = Module._extensions[".css"] ? Module._extensions[".css"] : () => {
+ return null;
+};
/* harmony default export */ __webpack_exports__["default"] = (new class ContentManager {
+ constructor() {
+ this.timeCache = {};
+ this.watchers = {};
+ Module._extensions[".js"] = this.getContentRequire("plugin");
+ Module._extensions[".css"] = this.getContentRequire("theme");
+ }
- constructor() {
- this.timeCache = {};
- this.watchers = {};
- Module._extensions[".js"] = this.getContentRequire("plugin");
- Module._extensions[".css"] = this.getContentRequire("theme");
+ get pluginsFolder() {
+ return this._pluginsFolder || (this._pluginsFolder = fs.realpathSync(path.resolve(data__WEBPACK_IMPORTED_MODULE_0__["Config"].dataPath + "plugins/")));
+ }
+
+ get themesFolder() {
+ return this._themesFolder || (this._themesFolder = fs.realpathSync(path.resolve(data__WEBPACK_IMPORTED_MODULE_0__["Config"].dataPath + "themes/")));
+ }
+
+ watchContent(contentType) {
+ if (this.watchers[contentType]) return;
+ const isPlugin = contentType === "plugin";
+ const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
+ const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
+ this.watchers[contentType] = fs.watch(baseFolder, {
+ persistent: false
+ }, async (eventType, filename) => {
+ if (!eventType || !filename || !filename.endsWith(fileEnding)) return;
+ await new Promise(r => setTimeout(r, 50));
+
+ try {
+ fs.statSync(path.resolve(baseFolder, filename));
+ } catch (err) {
+ if (err.code !== "ENOENT") return;
+ delete this.timeCache[filename];
+ if (isPlugin) return _pluginmanager__WEBPACK_IMPORTED_MODULE_2__["default"].unloadPlugin(filename);
+ return _thememanager__WEBPACK_IMPORTED_MODULE_3__["default"].unloadTheme(filename);
+ }
+
+ if (!fs.statSync(path.resolve(baseFolder, filename)).isFile()) return;
+ const stats = fs.statSync(path.resolve(baseFolder, filename));
+ if (!stats || !stats.mtime || !stats.mtime.getTime()) return;
+ if (typeof stats.mtime.getTime() !== "number") return;
+ if (this.timeCache[filename] == stats.mtime.getTime()) return;
+ this.timeCache[filename] = stats.mtime.getTime();
+
+ if (eventType == "rename") {
+ if (isPlugin) _pluginmanager__WEBPACK_IMPORTED_MODULE_2__["default"].loadPlugin(filename);else _thememanager__WEBPACK_IMPORTED_MODULE_3__["default"].loadTheme(filename);
+ }
+
+ if (eventType == "change") {
+ if (isPlugin) _pluginmanager__WEBPACK_IMPORTED_MODULE_2__["default"].reloadPlugin(filename);else _thememanager__WEBPACK_IMPORTED_MODULE_3__["default"].reloadTheme(filename);
+ }
+ });
+ }
+
+ unwatchContent(contentType) {
+ if (!this.watchers[contentType]) return;
+ this.watchers[contentType].close();
+ delete this.watchers[contentType];
+ }
+
+ extractMeta(content) {
+ const meta = content.split("\n")[0];
+ const rawMeta = meta.substring(meta.lastIndexOf("//META") + 6, meta.lastIndexOf("*//"));
+ if (meta.indexOf("META") < 0) throw new MetaError("META was not found.");
+ if (!_utilities__WEBPACK_IMPORTED_MODULE_1__["default"].testJSON(rawMeta)) throw new MetaError("META could not be parsed.");
+ const parsed = JSON.parse(rawMeta);
+ if (!parsed.name) throw new MetaError("META missing name data.");
+ return parsed;
+ }
+
+ getContentRequire(type) {
+ const isPlugin = type === "plugin";
+ const self = this;
+ const originalRequire = isPlugin ? originalJSRequire : originalCSSRequire;
+ return function (module, filename) {
+ const baseFolder = isPlugin ? self.pluginsFolder : self.themesFolder;
+ const possiblePath = path.resolve(baseFolder, path.basename(filename));
+ if (!fs.existsSync(possiblePath) || filename !== fs.realpathSync(possiblePath)) return Reflect.apply(originalRequire, this, arguments);
+ let content = fs.readFileSync(filename, "utf8");
+ content = _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].stripBOM(content);
+ const meta = self.extractMeta(content);
+ meta.filename = path.basename(filename);
+
+ if (!isPlugin) {
+ meta.css = content.split("\n").slice(1).join("\n");
+ content = `module.exports = ${JSON.stringify(meta)};`;
+ }
+
+ if (isPlugin) {
+ content += `\nmodule.exports = ${JSON.stringify(meta)};\nmodule.exports.type = ${meta.name};`;
+ }
+
+ module._compile(content, filename);
+ };
+ }
+
+ makePlaceholderPlugin(data) {
+ return {
+ plugin: {
+ start: () => {},
+ getName: () => {
+ return data.name || data.filename;
+ },
+ getAuthor: () => {
+ return "???";
+ },
+ getDescription: () => {
+ return data.message ? data.message : "This plugin was unable to be loaded. Check the author's page for updates.";
+ },
+ getVersion: () => {
+ return "???";
+ }
+ },
+ name: data.name || data.filename,
+ filename: data.filename,
+ source: data.source ? data.source : "",
+ website: data.website ? data.website : ""
+ };
+ }
+
+ loadContent(filename, type) {
+ if (typeof filename === "undefined" || typeof type === "undefined") return;
+ const isPlugin = type === "plugin";
+ const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
+
+ try {
+ require(path.resolve(baseFolder, filename));
+ } catch (error) {
+ return {
+ name: filename,
+ file: filename,
+ message: "Could not be compiled.",
+ error: {
+ message: error.message,
+ stack: error.stack
+ }
+ };
}
- get pluginsFolder() {return this._pluginsFolder || (this._pluginsFolder = fs.realpathSync(path.resolve(data__WEBPACK_IMPORTED_MODULE_0__["Config"].dataPath + "plugins/")));}
- get themesFolder() {return this._themesFolder || (this._themesFolder = fs.realpathSync(path.resolve(data__WEBPACK_IMPORTED_MODULE_0__["Config"].dataPath + "themes/")));}
+ const content = require(path.resolve(baseFolder, filename));
- watchContent(contentType) {
- if (this.watchers[contentType]) return;
- const isPlugin = contentType === "plugin";
- const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
- const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
- this.watchers[contentType] = fs.watch(baseFolder, {persistent: false}, async (eventType, filename) => {
- if (!eventType || !filename || !filename.endsWith(fileEnding)) return;
- await new Promise(r => setTimeout(r, 50));
- try {fs.statSync(path.resolve(baseFolder, filename));}
- catch (err) {
- if (err.code !== "ENOENT") return;
- delete this.timeCache[filename];
- if (isPlugin) return _pluginmanager__WEBPACK_IMPORTED_MODULE_2__["default"].unloadPlugin(filename);
- return _thememanager__WEBPACK_IMPORTED_MODULE_3__["default"].unloadTheme(filename);
- }
- if (!fs.statSync(path.resolve(baseFolder, filename)).isFile()) return;
- const stats = fs.statSync(path.resolve(baseFolder, filename));
- if (!stats || !stats.mtime || !stats.mtime.getTime()) return;
- if (typeof(stats.mtime.getTime()) !== "number") return;
- if (this.timeCache[filename] == stats.mtime.getTime()) return;
- this.timeCache[filename] = stats.mtime.getTime();
- if (eventType == "rename") {
- if (isPlugin) _pluginmanager__WEBPACK_IMPORTED_MODULE_2__["default"].loadPlugin(filename);
- else _thememanager__WEBPACK_IMPORTED_MODULE_3__["default"].loadTheme(filename);
- }
- if (eventType == "change") {
- if (isPlugin) _pluginmanager__WEBPACK_IMPORTED_MODULE_2__["default"].reloadPlugin(filename);
- else _thememanager__WEBPACK_IMPORTED_MODULE_3__["default"].reloadTheme(filename);
- }
- });
- }
+ if (isPlugin) {
+ if (!content.type) return;
- unwatchContent(contentType) {
- if (!this.watchers[contentType]) return;
- this.watchers[contentType].close();
- delete this.watchers[contentType];
- }
-
- extractMeta(content) {
- const meta = content.split("\n")[0];
- const rawMeta = meta.substring(meta.lastIndexOf("//META") + 6, meta.lastIndexOf("*//"));
- if (meta.indexOf("META") < 0) throw new MetaError("META was not found.");
- if (!_utilities__WEBPACK_IMPORTED_MODULE_1__["default"].testJSON(rawMeta)) throw new MetaError("META could not be parsed.");
-
- const parsed = JSON.parse(rawMeta);
- if (!parsed.name) throw new MetaError("META missing name data.");
- return parsed;
- }
-
- getContentRequire(type) {
- const isPlugin = type === "plugin";
- const self = this;
- const originalRequire = isPlugin ? originalJSRequire : originalCSSRequire;
- return function(module, filename) {
- const baseFolder = isPlugin ? self.pluginsFolder : self.themesFolder;
- const possiblePath = path.resolve(baseFolder, path.basename(filename));
- if (!fs.existsSync(possiblePath) || filename !== fs.realpathSync(possiblePath)) return Reflect.apply(originalRequire, this, arguments);
- let content = fs.readFileSync(filename, "utf8");
- content = _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].stripBOM(content);
-
- const meta = self.extractMeta(content);
- meta.filename = path.basename(filename);
- if (!isPlugin) {
- meta.css = content.split("\n").slice(1).join("\n");
- content = `module.exports = ${JSON.stringify(meta)};`;
- }
- if (isPlugin) {
- content += `\nmodule.exports = ${JSON.stringify(meta)};\nmodule.exports.type = ${meta.name};`;
- }
- module._compile(content, filename);
+ try {
+ content.plugin = new content.type();
+ delete data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][content.plugin.getName()];
+ data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][content.plugin.getName()] = content;
+ } catch (error) {
+ return {
+ name: filename,
+ file: filename,
+ message: "Could not be constructed.",
+ error: {
+ message: error.message,
+ stack: error.stack
+ }
};
+ }
+ } else {
+ delete data__WEBPACK_IMPORTED_MODULE_0__["Themes"][content.name];
+ data__WEBPACK_IMPORTED_MODULE_0__["Themes"][content.name] = content;
}
+ }
- makePlaceholderPlugin(data) {
- return {plugin: {
- start: () => {},
- getName: () => {return data.name || data.filename;},
- getAuthor: () => {return "???";},
- getDescription: () => {return data.message ? data.message : "This plugin was unable to be loaded. Check the author's page for updates.";},
- getVersion: () => {return "???";}
- },
- name: data.name || data.filename,
- filename: data.filename,
- source: data.source ? data.source : "",
- website: data.website ? data.website : ""
- };
- }
+ unloadContent(filename, type) {
+ if (typeof filename === "undefined" || typeof type === "undefined") return;
+ const isPlugin = type === "plugin";
+ const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
- loadContent(filename, type) {
- if (typeof(filename) === "undefined" || typeof(type) === "undefined") return;
- const isPlugin = type === "plugin";
- const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
- try {require(path.resolve(baseFolder, filename));}
- catch (error) {return {name: filename, file: filename, message: "Could not be compiled.", error: {message: error.message, stack: error.stack}};}
- const content = require(path.resolve(baseFolder, filename));
- if (isPlugin) {
- if (!content.type) return;
- try {
- content.plugin = new content.type();
- delete data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][content.plugin.getName()];
- data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][content.plugin.getName()] = content;
- }
- catch (error) {return {name: filename, file: filename, message: "Could not be constructed.", error: {message: error.message, stack: error.stack}};}
- }
- else {
- delete data__WEBPACK_IMPORTED_MODULE_0__["Themes"][content.name];
- data__WEBPACK_IMPORTED_MODULE_0__["Themes"][content.name] = content;
+ try {
+ delete require.cache[require.resolve(path.resolve(baseFolder, filename))];
+ } catch (err) {
+ return {
+ name: filename,
+ file: filename,
+ message: "Could not be unloaded.",
+ error: {
+ message: err.message,
+ stack: err.stack
}
+ };
+ }
+ }
+
+ isLoaded(filename, type) {
+ const isPlugin = type === "plugin";
+ const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
+
+ try {
+ require.cache[require.resolve(path.resolve(baseFolder, filename))];
+ } catch (err) {
+ return false;
}
- unloadContent(filename, type) {
- if (typeof(filename) === "undefined" || typeof(type) === "undefined") return;
- const isPlugin = type === "plugin";
- const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
- try {
- delete require.cache[require.resolve(path.resolve(baseFolder, filename))];
- }
- catch (err) {return {name: filename, file: filename, message: "Could not be unloaded.", error: {message: err.message, stack: err.stack}};}
+ return true;
+ }
+
+ reloadContent(filename, type) {
+ const cantUnload = this.unloadContent(filename, type);
+ if (cantUnload) return cantUnload;
+ return this.loadContent(filename, type);
+ }
+
+ loadNewContent(type) {
+ const isPlugin = type === "plugin";
+ const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
+ const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
+ const files = fs.readdirSync(basedir);
+ const contentList = Object.values(isPlugin ? data__WEBPACK_IMPORTED_MODULE_0__["Plugins"] : data__WEBPACK_IMPORTED_MODULE_0__["Themes"]);
+ const removed = contentList.filter(t => !files.includes(t.filename)).map(c => isPlugin ? c.plugin.getName() : c.name);
+ const added = files.filter(f => !contentList.find(t => t.filename == f) && f.endsWith(fileEnding) && fs.statSync(path.resolve(basedir, f)).isFile());
+ return {
+ added,
+ removed
+ };
+ }
+
+ loadAllContent(type) {
+ const isPlugin = type === "plugin";
+ const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
+ const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
+ const errors = [];
+ const files = fs.readdirSync(basedir);
+
+ for (const filename of files) {
+ if (!fs.statSync(path.resolve(basedir, filename)).isFile() || !filename.endsWith(fileEnding)) continue;
+ const error = this.loadContent(filename, type);
+ if (error) errors.push(error);
}
- isLoaded(filename, type) {
- const isPlugin = type === "plugin";
- const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
- try {require.cache[require.resolve(path.resolve(baseFolder, filename))];}
- catch (err) {return false;}
- return true;
- }
+ return errors;
+ }
- reloadContent(filename, type) {
- const cantUnload = this.unloadContent(filename, type);
- if (cantUnload) return cantUnload;
- return this.loadContent(filename, type);
- }
+ loadPlugins() {
+ return this.loadAllContent("plugin");
+ }
- loadNewContent(type) {
- const isPlugin = type === "plugin";
- const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
- const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
- const files = fs.readdirSync(basedir);
- const contentList = Object.values(isPlugin ? data__WEBPACK_IMPORTED_MODULE_0__["Plugins"] : data__WEBPACK_IMPORTED_MODULE_0__["Themes"]);
- const removed = contentList.filter(t => !files.includes(t.filename)).map(c => isPlugin ? c.plugin.getName() : c.name);
- const added = files.filter(f => !contentList.find(t => t.filename == f) && f.endsWith(fileEnding) && fs.statSync(path.resolve(basedir, f)).isFile());
- return {added, removed};
- }
+ loadThemes() {
+ return this.loadAllContent("theme");
+ }
- loadAllContent(type) {
- const isPlugin = type === "plugin";
- const fileEnding = isPlugin ? ".plugin.js" : ".theme.css";
- const basedir = isPlugin ? this.pluginsFolder : this.themesFolder;
- const errors = [];
- const files = fs.readdirSync(basedir);
-
- for (const filename of files) {
- if (!fs.statSync(path.resolve(basedir, filename)).isFile() || !filename.endsWith(fileEnding)) continue;
- const error = this.loadContent(filename, type);
- if (error) errors.push(error);
- }
-
- return errors;
- }
-
- loadPlugins() {return this.loadAllContent("plugin");}
- loadThemes() {return this.loadAllContent("theme");}
-});
+}());
/***/ }),
@@ -974,8 +1295,7 @@ __webpack_require__.r(__webpack_exports__);
-
-// import VoiceMode from "./voicemode";
+ // import VoiceMode from "./voicemode";
// import DevMode from "./devmode";
@@ -983,189 +1303,197 @@ __webpack_require__.r(__webpack_exports__);
-function Core() {
-}
-Core.prototype.setConfig = function(config) {
- Object.assign(data__WEBPACK_IMPORTED_MODULE_2__["Config"], config);
+function Core() {}
+
+Core.prototype.setConfig = function (config) {
+ Object.assign(data__WEBPACK_IMPORTED_MODULE_2__["Config"], config);
};
-Core.prototype.init = async function() {
- if (data__WEBPACK_IMPORTED_MODULE_2__["Config"].version < data__WEBPACK_IMPORTED_MODULE_2__["Config"].minSupportedVersion) {
- this.alert("Not Supported", "BetterDiscord v" + data__WEBPACK_IMPORTED_MODULE_2__["Config"].version + " (your version)" + " is not supported by the latest js (" + data__WEBPACK_IMPORTED_MODULE_2__["Config"].bbdVersion + ").
Please download the latest version from GitHub");
- return;
- }
+Core.prototype.init = async function () {
+ if (data__WEBPACK_IMPORTED_MODULE_2__["Config"].version < data__WEBPACK_IMPORTED_MODULE_2__["Config"].minSupportedVersion) {
+ this.alert("Not Supported", "BetterDiscord v" + data__WEBPACK_IMPORTED_MODULE_2__["Config"].version + " (your version)" + " is not supported by the latest js (" + data__WEBPACK_IMPORTED_MODULE_2__["Config"].bbdVersion + ").
Please download the latest version from GitHub");
+ return;
+ }
- const latestLocalVersion = data__WEBPACK_IMPORTED_MODULE_2__["Config"].updater ? data__WEBPACK_IMPORTED_MODULE_2__["Config"].updater.LatestVersion : data__WEBPACK_IMPORTED_MODULE_2__["Config"].latestVersion;
- if (latestLocalVersion > data__WEBPACK_IMPORTED_MODULE_2__["Config"].version) {
- this.alert("Update Available", `
+ const latestLocalVersion = data__WEBPACK_IMPORTED_MODULE_2__["Config"].updater ? data__WEBPACK_IMPORTED_MODULE_2__["Config"].updater.LatestVersion : data__WEBPACK_IMPORTED_MODULE_2__["Config"].latestVersion;
+
+ if (latestLocalVersion > data__WEBPACK_IMPORTED_MODULE_2__["Config"].version) {
+ this.alert("Update Available", `
An update for BandagedBD is available (${latestLocalVersion})! Please Reinstall!
Download Installer
`);
- }
+ }
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing Settings");
- this.initSettings();
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing EmoteModule");
- window.emotePromise = _emotes__WEBPACK_IMPORTED_MODULE_3__["default"].init().then(() => {
- _emotes__WEBPACK_IMPORTED_MODULE_3__["default"].initialized = true;
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing QuickEmoteMenu");
- _emotemenu__WEBPACK_IMPORTED_MODULE_4__["default"].init();
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing Settings");
+ this.initSettings();
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing EmoteModule");
+ window.emotePromise = _emotes__WEBPACK_IMPORTED_MODULE_3__["default"].init().then(() => {
+ _emotes__WEBPACK_IMPORTED_MODULE_3__["default"].initialized = true;
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing QuickEmoteMenu");
+ _emotemenu__WEBPACK_IMPORTED_MODULE_4__["default"].init();
+ });
+ this.injectExternals();
+ await this.checkForGuilds();
+ _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].initialize();
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Updating Settings");
+ _settingspanel__WEBPACK_IMPORTED_MODULE_9__["default"].initializeSettings();
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Loading Plugins");
+ const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_5__["default"].loadPlugins();
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Loading Themes");
+ const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_6__["default"].loadThemes();
+ $("#customcss").detach().appendTo(document.head);
+ window.addEventListener("beforeunload", function () {
+ if (data__WEBPACK_IMPORTED_MODULE_2__["SettingsCookie"]["bda-dc-0"]) document.querySelector(".btn.btn-disconnect").click();
+ });
+ _publicservers__WEBPACK_IMPORTED_MODULE_8__["default"].initialize();
+ _emotes__WEBPACK_IMPORTED_MODULE_3__["default"].autoCapitalize();
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Removing Loading Icon");
+ document.getElementsByClassName("bd-loaderv2")[0].remove();
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing Main Observer");
+ this.initObserver(); // Show loading errors
+
+ if (data__WEBPACK_IMPORTED_MODULE_2__["SettingsCookie"]["fork-ps-1"]) {
+ _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Collecting Startup Errors");
+ this.showContentErrors({
+ plugins: pluginErrors,
+ themes: themeErrors
});
+ } // if (!DataStore.getBDData(bbdVersion)) {
+ // BdApi.alert("BBD Updated!", ["Lots of things were fixed in this update like Public Servers, Minimal Mode, Dark Mode and 24 Hour Timestamps.", BdApi.React.createElement("br"), BdApi.React.createElement("br"), "Feel free to test them all out!"]);
+ // DataStore.setBDData(bbdVersion, true);
+ // }
- this.injectExternals();
-
- await this.checkForGuilds();
- _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].initialize();
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Updating Settings");
- _settingspanel__WEBPACK_IMPORTED_MODULE_9__["default"].initializeSettings();
-
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Loading Plugins");
- const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_5__["default"].loadPlugins();
-
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Loading Themes");
- const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_6__["default"].loadThemes();
-
- $("#customcss").detach().appendTo(document.head);
-
- window.addEventListener("beforeunload", function() {
- if (data__WEBPACK_IMPORTED_MODULE_2__["SettingsCookie"]["bda-dc-0"]) document.querySelector(".btn.btn-disconnect").click();
- });
-
- _publicservers__WEBPACK_IMPORTED_MODULE_8__["default"].initialize();
- _emotes__WEBPACK_IMPORTED_MODULE_3__["default"].autoCapitalize();
-
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Removing Loading Icon");
- document.getElementsByClassName("bd-loaderv2")[0].remove();
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Initializing Main Observer");
- this.initObserver();
-
- // Show loading errors
- if (data__WEBPACK_IMPORTED_MODULE_2__["SettingsCookie"]["fork-ps-1"]) {
- _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].log("Startup", "Collecting Startup Errors");
- this.showContentErrors({plugins: pluginErrors, themes: themeErrors});
- }
-
- // if (!DataStore.getBDData(bbdVersion)) {
- // BdApi.alert("BBD Updated!", ["Lots of things were fixed in this update like Public Servers, Minimal Mode, Dark Mode and 24 Hour Timestamps.", BdApi.React.createElement("br"), BdApi.React.createElement("br"), "Feel free to test them all out!"]);
- // DataStore.setBDData(bbdVersion, true);
- // }
};
-Core.prototype.checkForGuilds = function() {
- return new Promise(resolve => {
- const checkForGuilds = function() {
- const wrapper = _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].guildClasses.wrapper.split(" ")[0];
- const guild = _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].guildClasses.listItem.split(" ")[0];
- const blob = _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].guildClasses.blobContainer.split(" ")[0];
- if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(data__WEBPACK_IMPORTED_MODULE_2__["Config"].deferLoaded = true);
- setTimeout(checkForGuilds, 100);
- };
- $(document).ready(function () {
- setTimeout(checkForGuilds, 100);
- });
+Core.prototype.checkForGuilds = function () {
+ return new Promise(resolve => {
+ const checkForGuilds = function () {
+ const wrapper = _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].guildClasses.wrapper.split(" ")[0];
+ const guild = _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].guildClasses.listItem.split(" ")[0];
+ const blob = _bdv2__WEBPACK_IMPORTED_MODULE_0__["default"].guildClasses.blobContainer.split(" ")[0];
+ if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(data__WEBPACK_IMPORTED_MODULE_2__["Config"].deferLoaded = true);
+ setTimeout(checkForGuilds, 100);
+ };
+
+ $(document).ready(function () {
+ setTimeout(checkForGuilds, 100);
});
+ });
};
-Core.prototype.injectExternals = async function() {
- await _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].injectJs("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js");
- if (window.require.original) window.require = window.require.original;
+Core.prototype.injectExternals = async function () {
+ await _utilities__WEBPACK_IMPORTED_MODULE_1__["default"].injectJs("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js");
+ if (window.require.original) window.require = window.require.original;
};
Core.prototype.initSettings = function () {
- _datastore__WEBPACK_IMPORTED_MODULE_7__["default"].initialize();
- if (!_datastore__WEBPACK_IMPORTED_MODULE_7__["default"].getSettingGroup("settings")) return this.saveSettings();
- const savedSettings = this.loadSettings();
- $("");
}
- updateLineCount() {
- const lineCount = this.refs.editor.value.split("\n").length;
- if (lineCount == this.props.lines) return;
- this.refs.lines.textContent = Array.from(new Array(lineCount), (_, i) => i + 1).join(".\n") + ".";
- this.props.lines = lineCount;
- }
+ $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
+ }
- get options() {
- return {
- lineNumbers: true,
- mode: "css",
- indentUnit: 4,
- theme: "material",
- scrollbarStyle: "simple"
- };
- }
+ saveCss() {
+ modules__WEBPACK_IMPORTED_MODULE_1__["DataStore"].setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
+ }
- get css() {
- const _ccss = modules__WEBPACK_IMPORTED_MODULE_1__["DataStore"].getBDData("bdcustomcss");
- let ccss = "";
- if (_ccss && _ccss !== "") {
- ccss = atob(_ccss);
- }
- return ccss;
- }
-
- get root() {
- const _root = $("#bd-customcss-detach-container");
- if (!_root.length) {
- if (!this.injectRoot()) return null;
- return this.detachedRoot;
- }
- return _root[0];
- }
-
- injectRoot() {
- if (!$(".app, .app-2rEoOp").length) return false;
- $("
", {
- id: "bd-customcss-detach-container"
- }).insertAfter($(".app, .app-2rEoOp"));
- return true;
- }
-
- render() {
- const self = this;
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {className: "bd-detached-css-editor", id: "bd-customcss-detach-editor"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {id: "bd-customcss-innerpane"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "editor-wrapper"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {id: "bd-customcss-editor-detached", className: "editor", ref: "editor"}, self.css)
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {id: "bd-customcss-attach-controls"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "ul",
- {className: "checkbox-group"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_settings_checkbox__WEBPACK_IMPORTED_MODULE_2__["default"], {id: "live-update", text: "Live Update", onChange: self.onChange, checked: data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"]})
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {id: "bd-customcss-detach-controls-button"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "button",
- {style: {borderRadius: "3px 0 0 3px", borderRight: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
- self.onClick("update");
- }},
- "Update"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "button",
- {style: {borderRadius: "0", borderLeft: "1px solid #2d2d2d", borderRight: "1px solid #2d2d2d"}, className: "btn btn-primary", onClick: () => {
- self.onClick("save");
- }},
- "Save"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "button",
- {style: {borderRadius: "0 3px 3px 0", borderLeft: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
- self.onClick("attach");
- }},
- "Attach"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "span",
- {style: {fontSize: "10px", marginLeft: "5px"}},
- "Unsaved changes are lost on attach"
- )
- )
- )
- )
- );
- }
-
- onChange(id, checked) {
- switch (id) {
- case "live-update":
- data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"] = checked;
- modules__WEBPACK_IMPORTED_MODULE_1__["Core"].saveSettings();
- break;
- }
- }
-
- onClick(id) {
- const self = this;
- switch (id) {
- case "attach":
- if ($("#editor-detached").length) self.props.attach();
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.unmountComponentAtNode(self.root);
- self.root.remove();
- break;
- case "update":
- self.updateCss();
- break;
- case "save":
- self.saveCss();
- break;
- }
- }
-
- updateCss() {
- if ($("#customcss").length == 0) {
- $("head").append("");
- }
- $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
- }
-
- saveCss() {
- modules__WEBPACK_IMPORTED_MODULE_1__["DataStore"].setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
- }
}
/***/ }),
@@ -3452,230 +4734,238 @@ __webpack_require__.r(__webpack_exports__);
+class V2C_CssEditor extends modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.Component {
+ constructor(props) {
+ super(props);
+ this.props.lines = 0;
+ this.setInitialState();
+ this.attach = this.attach.bind(this);
+ this.detachedEditor = modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement(_detached__WEBPACK_IMPORTED_MODULE_2__["default"], {
+ attach: this.attach
+ });
+ this.onClick = this.onClick.bind(this);
+ this.updateCss = this.updateCss.bind(this);
+ this.saveCss = this.saveCss.bind(this);
+ this.detach = this.detach.bind(this);
+ }
+ setInitialState() {
+ this.state = {
+ detached: this.props.detached || modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].editorDetached
+ };
+ }
-class V2C_CssEditor extends modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactComponent {
+ componentDidMount() {
+ // this.updateLineCount();
+ this.editor = ace.edit("bd-customcss-editor");
+ this.editor.setTheme("ace/theme/monokai");
+ this.editor.session.setMode("ace/mode/css");
+ this.editor.setShowPrintMargin(false);
+ this.editor.setFontSize(14);
+ this.editor.on("change", () => {
+ if (!data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"]) return;
+ this.saveCss();
+ this.updateCss();
+ });
+ }
- constructor(props) {
- super(props);
- this.props.lines = 0;
- this.setInitialState();
- this.attach = this.attach.bind(this);
- this.detachedEditor = modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_detached__WEBPACK_IMPORTED_MODULE_2__["default"], {attach: this.attach});
- this.onClick = this.onClick.bind(this);
- this.updateCss = this.updateCss.bind(this);
- this.saveCss = this.saveCss.bind(this);
- this.detach = this.detach.bind(this);
+ componentWillUnmount() {
+ this.editor.destroy();
+ }
+
+ componentDidUpdate(prevProps, prevState) {
+ if (prevState.detached && !this.state.detached) {
+ modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].ReactDOM.unmountComponentAtNode(this.detachedRoot);
+ }
+ }
+
+ codeMirror() {}
+
+ get options() {
+ return {
+ lineNumbers: true,
+ mode: "css",
+ indentUnit: 4,
+ theme: "material",
+ scrollbarStyle: "simple"
+ };
+ }
+
+ get css() {
+ const _ccss = modules__WEBPACK_IMPORTED_MODULE_1__["DataStore"].getBDData("bdcustomcss");
+
+ let ccss = "";
+
+ if (_ccss && _ccss !== "") {
+ ccss = atob(_ccss);
}
- setInitialState() {
- this.state = {
- detached: this.props.detached || modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].editorDetached
- };
+ return ccss;
+ }
+
+ updateLineCount() {
+ const lineCount = this.refs.editor.value.split("\n").length;
+ if (lineCount == this.props.lines) return;
+ this.refs.lines.textContent = Array.from(new Array(lineCount), (_, i) => i + 1).join(".\n") + ".";
+ this.props.lines = lineCount;
+ }
+
+ render() {
+ const self = this;
+ const {
+ detached
+ } = self.state;
+ return modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default",
+ style: {
+ padding: "60px 40px 0px"
+ }
+ }, detached && modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ id: "editor-detached"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {
+ text: "Custom CSS Editor"
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("h3", null, "Editor Detached"), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("button", {
+ className: "btn btn-primary",
+ onClick: () => {
+ self.attach();
+ }
+ }, "Attach")), !detached && modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", null, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {
+ text: "Custom CSS Editor"
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ className: "editor-wrapper"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ id: "bd-customcss-editor",
+ className: "editor",
+ ref: "editor"
+ }, self.css)), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ id: "bd-customcss-attach-controls"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("ul", {
+ className: "checkbox-group"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement(_settings_checkbox__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ id: "live-update",
+ text: "Live Update",
+ onChange: this.onChange,
+ checked: data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"]
+ })), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ id: "bd-customcss-detach-controls-button"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("button", {
+ style: {
+ borderRadius: "3px 0 0 3px",
+ borderRight: "1px solid #3f4146"
+ },
+ className: "btn btn-primary",
+ onClick: () => {
+ self.onClick("update");
+ }
+ }, "Update"), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("button", {
+ style: {
+ borderRadius: "0",
+ borderLeft: "1px solid #2d2d2d",
+ borderRight: "1px solid #2d2d2d"
+ },
+ className: "btn btn-primary",
+ onClick: () => {
+ self.onClick("save");
+ }
+ }, "Save"), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("button", {
+ style: {
+ borderRadius: "0 3px 3px 0",
+ borderLeft: "1px solid #3f4146"
+ },
+ className: "btn btn-primary",
+ onClick: () => {
+ self.onClick("detach");
+ }
+ }, "Detach"), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("span", {
+ style: {
+ fontSize: "10px",
+ marginLeft: "5px"
+ }
+ }, "Unsaved changes are lost on detach"), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ className: "help-text"
+ }, "Press ", modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("code", {
+ className: "inline"
+ }, "ctrl"), "+", modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("span", {
+ className: "inline"
+ }, ","), " with the editor focused to access the editor's settings.")))));
+ }
+
+ onClick(arg) {
+ switch (arg) {
+ case "update":
+ this.updateCss();
+ break;
+
+ case "save":
+ this.saveCss();
+ break;
+
+ case "detach":
+ this.detach();
+ break;
+ }
+ }
+
+ onChange(id, checked) {
+ switch (id) {
+ case "live-update":
+ data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"] = checked;
+ modules__WEBPACK_IMPORTED_MODULE_1__["Core"].saveSettings();
+ break;
+ }
+ }
+
+ updateCss() {
+ if ($("#customcss").length == 0) {
+ $("head").append("");
}
- componentDidMount() {
- // this.updateLineCount();
- this.editor = ace.edit("bd-customcss-editor");
- this.editor.setTheme("ace/theme/monokai");
- this.editor.session.setMode("ace/mode/css");
- this.editor.setShowPrintMargin(false);
- this.editor.setFontSize(14);
- this.editor.on("change", () => {
- if (!data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"]) return;
- this.saveCss();
- this.updateCss();
- });
+ $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
+ }
+
+ saveCss() {
+ modules__WEBPACK_IMPORTED_MODULE_1__["DataStore"].setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
+ }
+
+ detach() {
+ this.setState({
+ detached: true
+ });
+ const droot = this.detachedRoot;
+
+ if (!droot) {
+ console.log("FAILED TO INJECT ROOT: .app");
+ return;
}
- componentWillUnmount() {
- this.editor.destroy();
+ modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].ReactDOM.render(this.detachedEditor, droot);
+ }
+
+ get detachedRoot() {
+ const _root = $("#bd-customcss-detach-container");
+
+ if (!_root.length) {
+ if (!this.injectDetachedRoot()) return null;
+ return this.detachedRoot;
}
- componentDidUpdate(prevProps, prevState) {
- if (prevState.detached && !this.state.detached) {
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.unmountComponentAtNode(this.detachedRoot);
- }
- }
+ return _root[0];
+ }
- codeMirror() {
- }
+ injectDetachedRoot() {
+ if (!$(".app, .app-2rEoOp").length) return false;
+ $("", {
+ id: "bd-customcss-detach-container"
+ }).insertAfter($(".app, .app-2rEoOp"));
+ return true;
+ }
- get options() {
- return {
- lineNumbers: true,
- mode: "css",
- indentUnit: 4,
- theme: "material",
- scrollbarStyle: "simple"
- };
- }
+ attach() {
+ this.setState({
+ detached: false
+ });
+ }
- get css() {
- const _ccss = modules__WEBPACK_IMPORTED_MODULE_1__["DataStore"].getBDData("bdcustomcss");
- let ccss = "";
- if (_ccss && _ccss !== "") {
- ccss = atob(_ccss);
- }
- return ccss;
- }
-
- updateLineCount() {
- const lineCount = this.refs.editor.value.split("\n").length;
- if (lineCount == this.props.lines) return;
- this.refs.lines.textContent = Array.from(new Array(lineCount), (_, i) => i + 1).join(".\n") + ".";
- this.props.lines = lineCount;
- }
-
- render() {
- const self = this;
-
- const {detached} = self.state;
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default", style: {padding: "60px 40px 0px"}},
- detached && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {id: "editor-detached"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {text: "Custom CSS Editor"}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "h3",
- null,
- "Editor Detached"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "button",
- {className: "btn btn-primary", onClick: () => {
- self.attach();
- }},
- "Attach"
- )
- ),
- !detached && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- null,
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {text: "Custom CSS Editor"}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "editor-wrapper"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {id: "bd-customcss-editor", className: "editor", ref: "editor"}, self.css)
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {id: "bd-customcss-attach-controls"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "ul",
- {className: "checkbox-group"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_settings_checkbox__WEBPACK_IMPORTED_MODULE_3__["default"], {id: "live-update", text: "Live Update", onChange: this.onChange, checked: data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"]})
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {id: "bd-customcss-detach-controls-button"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "button",
- {style: {borderRadius: "3px 0 0 3px", borderRight: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
- self.onClick("update");
- }},
- "Update"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "button",
- {style: {borderRadius: "0", borderLeft: "1px solid #2d2d2d", borderRight: "1px solid #2d2d2d"}, className: "btn btn-primary", onClick: () => {
- self.onClick("save");
- }},
- "Save"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "button",
- {style: {borderRadius: "0 3px 3px 0", borderLeft: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
- self.onClick("detach");
- }},
- "Detach"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "span",
- {style: {fontSize: "10px", marginLeft: "5px"}},
- "Unsaved changes are lost on detach"
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "help-text"},
- "Press ",
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("code", {className: "inline"}, "ctrl"),
- "+",
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "inline"}, ","),
- " with the editor focused to access the editor's settings."
- )
- )
- )
- )
- );
- }
-
- onClick(arg) {
- switch (arg) {
- case "update":
- this.updateCss();
- break;
- case "save":
- this.saveCss();
- break;
- case "detach":
- this.detach();
- break;
- }
- }
-
- onChange(id, checked) {
- switch (id) {
- case "live-update":
- data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["bda-css-0"] = checked;
- modules__WEBPACK_IMPORTED_MODULE_1__["Core"].saveSettings();
- break;
- }
- }
-
- updateCss() {
- if ($("#customcss").length == 0) {
- $("head").append("");
- }
- $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
- }
-
- saveCss() {
- modules__WEBPACK_IMPORTED_MODULE_1__["DataStore"].setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
- }
-
- detach() {
- this.setState({
- detached: true
- });
- const droot = this.detachedRoot;
- if (!droot) {
- console.log("FAILED TO INJECT ROOT: .app");
- return;
- }
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.render(this.detachedEditor, droot);
- }
-
- get detachedRoot() {
- const _root = $("#bd-customcss-detach-container");
- if (!_root.length) {
- if (!this.injectDetachedRoot()) return null;
- return this.detachedRoot;
- }
- return _root[0];
- }
-
- injectDetachedRoot() {
- if (!$(".app, .app-2rEoOp").length) return false;
- $("", {
- id: "bd-customcss-detach-container"
- }).insertAfter($(".app, .app-2rEoOp"));
- return true;
- }
-
- attach() {
- this.setState({
- detached: false
- });
- }
}
/***/ }),
@@ -3694,88 +4984,165 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class BDEmote extends modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.Component {
+ constructor(props) {
+ super(props);
+ const isFav = modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"] && modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes && modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label] ? true : false;
+ this.state = {
+ shouldAnimate: !this.animateOnHover,
+ isFavorite: isFav
+ };
+ this.onMouseEnter = this.onMouseEnter.bind(this);
+ this.onMouseLeave = this.onMouseLeave.bind(this);
+ this.onClick = this.onClick.bind(this);
+ }
-class BDEmote extends modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
+ get animateOnHover() {
+ return data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-es-2"];
+ }
- const isFav = modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"] && modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes && modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label] ? true : false;
- this.state = {
- shouldAnimate: !this.animateOnHover,
- isFavorite: isFav
- };
+ get label() {
+ return this.props.modifier ? `${this.props.name}:${this.props.modifier}` : this.props.name;
+ }
- this.onMouseEnter = this.onMouseEnter.bind(this);
- this.onMouseLeave = this.onMouseLeave.bind(this);
- this.onClick = this.onClick.bind(this);
- }
+ get modifierClass() {
+ return this.props.modifier ? ` emote${this.props.modifier}` : "";
+ }
- get animateOnHover() {
- return data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-es-2"];
- }
+ onMouseEnter() {
+ if (!this.state.shouldAnimate && this.animateOnHover) this.setState({
+ shouldAnimate: true
+ });
+ if (!this.state.isFavorite && modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label]) this.setState({
+ isFavorite: true
+ });else if (this.state.isFavorite && !modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label]) this.setState({
+ isFavorite: false
+ });
+ }
- get label() {
- return this.props.modifier ? `${this.props.name}:${this.props.modifier}` : this.props.name;
- }
+ onMouseLeave() {
+ if (this.state.shouldAnimate && this.animateOnHover) this.setState({
+ shouldAnimate: false
+ });
+ }
- get modifierClass() {
- return this.props.modifier ? ` emote${this.props.modifier}` : "";
- }
+ onClick(e) {
+ if (this.props.onClick) this.props.onClick(e);
+ }
- onMouseEnter() {
- if (!this.state.shouldAnimate && this.animateOnHover) this.setState({shouldAnimate: true});
- if (!this.state.isFavorite && modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label]) this.setState({isFavorite: true});
- else if (this.state.isFavorite && !modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label]) this.setState({isFavorite: false});
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement(modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].TooltipWrapper, {
+ color: "black",
+ position: "top",
+ text: this.label,
+ delay: 750
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("div", {
+ className: "emotewrapper" + (this.props.jumboable ? " jumboable" : ""),
+ onMouseEnter: this.onMouseEnter,
+ onMouseLeave: this.onMouseLeave,
+ onClick: this.onClick
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("img", {
+ draggable: false,
+ className: "emote" + this.modifierClass + (this.props.jumboable ? " jumboable" : "") + (!this.state.shouldAnimate ? " stop-animation" : ""),
+ dataModifier: this.props.modifier,
+ alt: this.label,
+ src: this.props.url
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["DiscordModules"].React.createElement("input", {
+ className: "fav" + (this.state.isFavorite ? " active" : ""),
+ title: "Favorite!",
+ type: "button",
+ onClick: e => {
+ e.preventDefault();
+ e.stopPropagation();
- onMouseLeave() {
- if (this.state.shouldAnimate && this.animateOnHover) this.setState({shouldAnimate: false});
- }
+ if (this.state.isFavorite) {
+ delete modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label];
+ modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].updateFavorites();
+ } else {
+ modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favorite(this.label, this.props.url);
+ }
- onClick(e) {
- if (this.props.onClick) this.props.onClick(e);
- }
+ this.setState({
+ isFavorite: !this.state.isFavorite
+ });
+ }
+ })));
+ }
+
+}
+
+/***/ }),
+
+/***/ "./src/ui/icons/bdlogo.js":
+/*!********************************!*\
+ !*** ./src/ui/icons/bdlogo.js ***!
+ \********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return BDLogo; });
+/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+
+class BDLogo extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("svg", {
+ height: "100%",
+ width: this.props.size || "16px",
+ className: "bd-logo " + this.props.className,
+ style: {
+ fillRule: "evenodd",
+ clipRule: "evenodd",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+ },
+ viewBox: "0 0 2000 2000"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("metadata", null), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("defs", null, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("filter", {
+ id: "shadow1"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("feDropShadow", {
+ "dx": "20",
+ "dy": "0",
+ "stdDeviation": "20",
+ "flood-color": "rgba(0,0,0,0.35)"
+ })), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("filter", {
+ id: "shadow2"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("feDropShadow", {
+ "dx": "15",
+ "dy": "0",
+ "stdDeviation": "20",
+ "flood-color": "rgba(255,255,255,0.15)"
+ })), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("filter", {
+ id: "shadow3"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("feDropShadow", {
+ "dx": "10",
+ "dy": "0",
+ "stdDeviation": "20",
+ "flood-color": "rgba(0,0,0,0.35)"
+ }))), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("g", null, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("path", {
+ style: {
+ filter: "url(#shadow3)"
+ },
+ 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",
+ fill: "#171717",
+ opacity: "1"
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("path", {
+ style: {
+ filter: "url(#shadow2)"
+ },
+ 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",
+ fill: "#3E82E5",
+ opacity: "1"
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("path", {
+ style: {
+ filter: "url(#shadow1)"
+ },
+ 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",
+ fill: "#FFFFFF",
+ opacity: "1"
+ })));
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].TooltipWrapper, {
- color: "black",
- position: "top",
- text: this.label,
- delay: 750
- },
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {
- className: "emotewrapper" + (this.props.jumboable ? " jumboable" : ""),
- onMouseEnter: this.onMouseEnter,
- onMouseLeave: this.onMouseLeave,
- onClick: this.onClick
- },
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("img", {
- draggable: false,
- className: "emote" + this.modifierClass + (this.props.jumboable ? " jumboable" : "") + (!this.state.shouldAnimate ? " stop-animation" : ""),
- dataModifier: this.props.modifier,
- alt: this.label,
- src: this.props.url
- }),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("input", {
- className: "fav" + (this.state.isFavorite ? " active" : ""),
- title: "Favorite!",
- type: "button",
- onClick: (e) => {
- e.preventDefault();
- e.stopPropagation();
- if (this.state.isFavorite) {
- delete modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favoriteEmotes[this.label];
- modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].updateFavorites();
- }
- else {
- modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].favorite(this.label, this.props.url);
- }
- this.setState({isFavorite: !this.state.isFavorite});
- }
- })
- )
- );
- }
}
/***/ }),
@@ -3792,24 +5159,32 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_XSvg; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_XSvg extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_XSvg extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("svg", {
+ xmlns: "http://www.w3.org/2000/svg",
+ viewBox: "0 0 12 12",
+ style: {
+ width: "18px",
+ height: "18px"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("g", {
+ className: "background",
+ fill: "none",
+ fillRule: "evenodd"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("path", {
+ d: "M0 0h12v12H0"
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].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"
+ })));
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "svg",
- {xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 12 12", style: {width: "18px", height: "18px"}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "g",
- {className: "background", fill: "none", fillRule: "evenodd"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("path", {d: "M0 0h12v12H0"}),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.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"})
- )
- );
- }
}
/***/ }),
@@ -3826,25 +5201,30 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_ReloadIcon; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_ReloadIcon extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_ReloadIcon extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("svg", {
+ xmlns: "http://www.w3.org/2000/svg",
+ viewBox: "0 0 24 24",
+ fill: "#dcddde",
+ className: "bd-reload " + this.props.className,
+ onClick: this.props.onClick,
+ style: {
+ width: this.props.size || "24px",
+ height: this.props.size || "24px"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].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"
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("path", {
+ fill: "none",
+ d: "M0 0h24v24H0z"
+ }));
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("svg", {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24",
- fill: "#dcddde",
- className: "bd-reload " + this.props.className,
- onClick: this.props.onClick,
- style: {width: this.props.size || "24px", height: this.props.size || "24px"}
- },
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.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"}),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("path", {fill: "none", d: "M0 0h24v24H0z"})
- );
- }
}
/***/ }),
@@ -3861,73 +5241,87 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_Layer; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_Layer extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_Layer extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ componentDidMount() {
+ $(window).on(`keyup.${this.props.id}`, e => {
+ if (e.which === 27) {
+ modules__WEBPACK_IMPORTED_MODULE_0__["ReactDOM"].unmountComponentAtNode(this.refs.root.parentNode);
+ }
+ });
+ $(`#${this.props.id}`).animate({
+ opacity: 1
+ }, {
+ step: function (now) {
+ $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
+ },
+ duration: 200,
+ done: () => {
+ $(`#${this.props.id}`).css("opacity", "").css("transform", "");
+ }
+ });
+ }
- constructor(props) {
- super(props);
- }
+ componentWillUnmount() {
+ $(window).off(`keyup.${this.props.id}`);
+ $(`#${this.props.id}`).animate({
+ opacity: 0
+ }, {
+ step: function (now) {
+ $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
+ },
+ duration: 200,
+ done: () => {
+ $(`#${this.props.rootId}`).remove();
+ }
+ });
+ $("[class*=\"layer-\"]").removeClass("publicServersOpen").animate({
+ opacity: 1
+ }, {
+ step: function (now) {
+ $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
+ },
+ duration: 200,
+ done: () => {
+ $("[class*=\"layer-\"]").css("opacity", "").css("transform", "");
+ }
+ });
+ }
- componentDidMount() {
- $(window).on(`keyup.${this.props.id}`, e => {
- if (e.which === 27) {
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactDom.unmountComponentAtNode(this.refs.root.parentNode);
- }
- });
+ componentWillMount() {
+ $("[class*=\"layer-\"]").addClass("publicServersOpen").animate({
+ opacity: 0
+ }, {
+ step: function (now) {
+ $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
+ },
+ duration: 200
+ });
+ }
- $(`#${this.props.id}`).animate({opacity: 1}, {
- step: function(now) {
- $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
- },
- duration: 200,
- done: () => {$(`#${this.props.id}`).css("opacity", "").css("transform", "");}
- });
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "layer bd-layer layer-3QrUeG",
+ id: this.props.id,
+ ref: "root",
+ style: {
+ opacity: 0,
+ transform: "scale(1.1) translateZ(0px)"
+ }
+ }, this.props.children);
+ }
- componentWillUnmount() {
- $(window).off(`keyup.${this.props.id}`);
- $(`#${this.props.id}`).animate({opacity: 0}, {
- step: function(now) {
- $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
- },
- duration: 200,
- done: () => {$(`#${this.props.rootId}`).remove();}
- });
-
- $("[class*=\"layer-\"]").removeClass("publicServersOpen").animate({opacity: 1}, {
- step: function(now) {
- $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
- },
- duration: 200,
- done: () => {$("[class*=\"layer-\"]").css("opacity", "").css("transform", "");}
- });
-
- }
-
- componentWillMount() {
- $("[class*=\"layer-\"]").addClass("publicServersOpen").animate({opacity: 0}, {
- step: function(now) {
- $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
- },
- duration: 200
- });
- }
-
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "layer bd-layer layer-3QrUeG", id: this.props.id, ref: "root", style: {opacity: 0, transform: "scale(1.1) translateZ(0px)"}},
- this.props.children
- );
- }
}
/***/ }),
-/***/ "./src/ui/list.js":
-/*!************************!*\
- !*** ./src/ui/list.js ***!
- \************************/
+/***/ "./src/ui/list.jsx":
+/*!*************************!*\
+ !*** ./src/ui/list.jsx ***!
+ \*************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -3936,19 +5330,17 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_List; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_List extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_List extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("ul", {
+ className: this.props.className
+ }, this.props.children);
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "ul",
- {className: this.props.className},
- this.props.children
- );
- }
}
/***/ }),
@@ -3965,107 +5357,99 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_ServerCard; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.fallback;
+ this.state = {
+ imageError: false,
+ joined: this.props.guildList.includes(this.props.server.identifier)
+ };
+ }
-class V2C_ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.fallback;
- this.state = {
- imageError: false,
- joined: this.props.guildList.includes(this.props.server.identifier)
- };
- }
+ render() {
+ const {
+ server
+ } = this.props;
+ return modules__WEBPACK_IMPORTED_MODULE_0__["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(
+ // "div",
+ // { className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2yIZo0 alignStretch-1hwxMa noWrap-3jynv6" },
+ modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("img", {
+ ref: "img",
+ className: "bd-server-image",
+ src: server.iconUrl,
+ onError: this.handleError.bind(this)
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "flexChild-faoVW3 bd-server-content"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h5", {
+ className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"
+ }, server.name), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h5", {
+ className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"
+ }, server.members, " Members")), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "scroller-2FKFPG scroller bd-server-description"
+ }, server.description))), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "flexChild-faoVW3 bd-server-tags",
+ style: {
+ flex: "1 1 auto"
+ }
+ }, server.categories.join(", ")), this.state.joined && modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("button", {
+ type: "button",
+ className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY",
+ style: {
+ minHeight: "12px",
+ marginTop: "4px",
+ backgroundColor: "#3ac15c"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-button-contents"
+ }, "Joined")), server.error && modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("button", {
+ type: "button",
+ className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug",
+ style: {
+ minHeight: "12px",
+ marginTop: "4px",
+ backgroundColor: "#c13a3a"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-button-contents"
+ }, "Error")), !server.error && !this.state.joined && modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("button", {
+ type: "button",
+ className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",
+ style: {
+ minHeight: "12px",
+ marginTop: "4px"
+ },
+ onClick: () => {
+ this.join();
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-button-contents"
+ }, "Join")))) // )
+ );
+ }
- render() {
- const {server} = this.props;
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div", // cardPrimary-1Hv-to
- {className: `card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${server.pinned ? " bd-server-card-pinned" : ""}`},
- // BDV2.react.createElement(
- // "div",
- // { className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2yIZo0 alignStretch-1hwxMa noWrap-3jynv6" },
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("img", {ref: "img", className: "bd-server-image", src: server.iconUrl, onError: this.handleError.bind(this)}),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "flexChild-faoVW3 bd-server-content"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "h5",
- {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},
- server.name
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "h5",
- {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},
- server.members,
- " Members"
- )
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "scroller-2FKFPG scroller bd-server-description"},
- server.description
- )
- )
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "flexChild-faoVW3 bd-server-tags", style: {flex: "1 1 auto"}},
- server.categories.join(", ")
- ),
- this.state.joined && modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "button",
- {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#3ac15c"}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Joined"
- )
- ),
- server.error && modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "button",
- {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#c13a3a"}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Error"
- )
- ),
- !server.error && !this.state.joined && modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "button",
- {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN", style: {minHeight: "12px", marginTop: "4px"}, onClick: () => {this.join();}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Join"
- )
- )
- )
- )
- // )
- );
- }
+ handleError() {
+ this.props.server.iconUrl = this.props.fallback;
+ this.setState({
+ imageError: true
+ });
+ }
- handleError() {
- this.props.server.iconUrl = this.props.fallback;
- this.setState({imageError: true});
- }
+ join() {
+ this.props.join(this); //this.setState({joined: true});
+ }
- join() {
- this.props.join(this);
- //this.setState({joined: true});
- }
}
/***/ }),
@@ -4092,434 +5476,450 @@ __webpack_require__.r(__webpack_exports__);
+class V2C_PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ 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);
+ this.GuildStore = modules__WEBPACK_IMPORTED_MODULE_0__["WebpackModules"].getByProps("getGuilds");
+ this.AvatarDefaults = modules__WEBPACK_IMPORTED_MODULE_0__["WebpackModules"].getByProps("getUserAvatarURL", "DEFAULT_AVATARS");
+ this.InviteActions = modules__WEBPACK_IMPORTED_MODULE_0__["WebpackModules"].getByProps("acceptInvite");
+ this.SortedGuildStore = modules__WEBPACK_IMPORTED_MODULE_0__["WebpackModules"].getByProps("getSortedGuilds");
+ }
-class V2C_PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ componentDidMount() {
+ this.checkConnection();
+ }
- constructor(props) {
- super(props);
- this.setInitialState();
- 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);
+ setInitialState() {
+ this.state = {
+ selectedCategory: -1,
+ title: "Loading...",
+ loading: true,
+ servers: [],
+ next: null,
+ connection: {
+ state: 0,
+ user: null
+ }
+ };
+ }
- this.GuildStore = modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].WebpackModules.findByUniqueProperties(["getGuilds"]);
- this.AvatarDefaults = modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].WebpackModules.findByUniqueProperties(["getUserAvatarURL", "DEFAULT_AVATARS"]);
- this.InviteActions = modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].WebpackModules.findByUniqueProperties(["acceptInvite"]);
- this.SortedGuildStore = modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].WebpackModules.findByUniqueProperties(["getSortedGuilds"]);
- }
+ close() {
+ modules__WEBPACK_IMPORTED_MODULE_0__["ReactDOM"].unmountComponentAtNode(document.getElementById(this.props.rootId));
+ }
- componentDidMount() {
- this.checkConnection();
- }
+ search(query, clear) {
+ const self = this;
+ $.ajax({
+ method: "GET",
+ url: `${self.endPoint}${query}${query ? "&schema=new" : "?schema=new"}`,
+ success: data => {
+ let servers = data.results.reduce((arr, server) => {
+ server.joined = false;
+ arr.push(server); // arr.push();
- setInitialState() {
- this.state = {
- selectedCategory: -1,
- title: "Loading...",
- loading: true,
- servers: [],
- next: null,
+ return arr;
+ }, []);
+
+ if (!clear) {
+ servers = self.state.servers.concat(servers);
+ } else {//servers.unshift(self.bdServer);
+ }
+
+ let end = data.size + data.from;
+ data.next = `?from=${end}`;
+ if (self.state.term) data.next += `&term=${self.state.term}`;
+ if (self.state.selectedCategory) data.next += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
+
+ if (end >= data.total) {
+ end = data.total;
+ data.next = null;
+ }
+
+ let title = `Showing 1-${end} of ${data.total} results in ${self.categoryButtons[self.state.selectedCategory]}`;
+ if (self.state.term) title += ` for ${self.state.term}`;
+ self.setState({
+ loading: false,
+ title: title,
+ servers: servers,
+ next: data.next
+ });
+
+ if (clear) {
+ //console.log(self);
+ self.refs.sbv.refs.contentScroller.scrollTop = 0;
+ }
+ },
+ error: () => {
+ self.setState({
+ loading: false,
+ title: "Failed to load servers. Check console for details"
+ });
+ }
+ });
+ }
+
+ join(serverCard) {
+ if (serverCard.props.pinned) return this.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, url) => {
+ if (url != "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 = this.SortedGuildStore.guildPositions;
+ const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_card__WEBPACK_IMPORTED_MODULE_5__["default"], {
+ 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() {
+ const self = this;
+
+ 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));
+ self.setState({
+ selectedCategory: 0,
connection: {
- state: 0,
- user: null
+ state: 2,
+ user: data
}
- };
- }
-
- close() {
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId));
- }
-
- search(query, clear) {
- const self = this;
-
- $.ajax({
- method: "GET",
- url: `${self.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 = self.state.servers.concat(servers);
- }
- else {
- //servers.unshift(self.bdServer);
- }
-
- let end = data.size + data.from;
- data.next = `?from=${end}`;
- if (self.state.term) data.next += `&term=${self.state.term}`;
- if (self.state.selectedCategory) data.next += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
- if (end >= data.total) {
- end = data.total;
- data.next = null;
- }
-
- let title = `Showing 1-${end} of ${data.total} results in ${self.categoryButtons[self.state.selectedCategory]}`;
- if (self.state.term) title += ` for ${self.state.term}`;
-
- self.setState({
- loading: false,
- title: title,
- servers: servers,
- next: data.next
- });
-
- if (clear) {
- //console.log(self);
- self.refs.sbv.refs.contentScroller.scrollTop = 0;
- }
- },
- error: () => {
- self.setState({
- loading: false,
- title: "Failed to load servers. Check console for details"
- });
- }
- });
- }
-
- join(serverCard) {
- if (serverCard.props.pinned) return this.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, url) => {
- if (url != "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 = this.SortedGuildStore.guildPositions;
- const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_card__WEBPACK_IMPORTED_MODULE_5__["default"], {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() {
- const self = this;
- 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));
- self.setState({
- selectedCategory: 0,
- connection: {
- state: 2,
- user: data
- }
- });
- self.search("", true);
-
- },
- error: () => {
- self.setState({
- title: "Not connected to discordservers.com!",
- loading: true,
- selectedCategory: -1,
- connection: {
- state: 1,
- user: null
- }
- });
- }
- });
- }
- catch (error) {
- self.setState({
- title: "Not connected to discordservers.com!",
- loading: true,
- selectedCategory: -1,
- connection: {
- state: 1,
- user: null
- }
- });
- }
- }
-
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_sidebarview__WEBPACK_IMPORTED_MODULE_1__["default"], {ref: "sbv", children: this.component});
- }
-
- get component() {
- return {
- sidebar: {
- component: this.sidebar
- },
- content: {
- component: this.content
- },
- tools: {
- component: modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_exitbutton__WEBPACK_IMPORTED_MODULE_2__["default"], {key: "pt", ref: "tools", onClick: this.close})
- }
- };
- }
-
- get sidebar() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "sidebar", key: "ps"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-tab-bar SIDE"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-tab-bar-header", style: {fontSize: "16px"}},
- "Public Servers"
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null),
- this.searchInput,
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Header, {text: "Categories"}),
- this.categoryButtons.map((value, index) => {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Item, {id: index, onClick: this.changeCategory, key: index, text: value, selected: this.state.selectedCategory === index});
- }),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null),
- this.footer,
- this.connection
- )
- );
- }
-
- get searchInput() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-form-item"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-text-input flex-vertical", style: {width: "172px", marginLeft: "10px"}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("input", {ref: "searchinput", onKeyDown: this.searchKeyDown, onChange: () => {}, type: "text", className: "input default", placeholder: "Search...", maxLength: "50"})
- )
- );
- }
-
- searchKeyDown(e) {
- const self = this;
- if (self.state.loading || e.which !== 13) return;
- self.setState({
+ });
+ self.search("", true);
+ },
+ error: () => {
+ self.setState({
+ title: "Not connected to discordservers.com!",
loading: true,
- title: "Loading...",
- term: e.target.value
- });
- let query = `?term=${e.target.value}`;
- if (self.state.selectedCategory !== 0) {
- query += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
+ selectedCategory: -1,
+ connection: {
+ state: 1,
+ user: null
+ }
+ });
}
- self.search(query, true);
+ });
+ } catch (error) {
+ self.setState({
+ title: "Not connected to discordservers.com!",
+ loading: true,
+ selectedCategory: -1,
+ connection: {
+ state: 1,
+ user: null
+ }
+ });
+ }
+ }
+
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_sidebarview__WEBPACK_IMPORTED_MODULE_1__["default"], {
+ ref: "sbv",
+ children: this.component
+ });
+ }
+
+ get component() {
+ return {
+ sidebar: {
+ component: this.sidebar
+ },
+ content: {
+ component: this.content
+ },
+ tools: {
+ component: modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_exitbutton__WEBPACK_IMPORTED_MODULE_2__["default"], {
+ key: "pt",
+ ref: "tools",
+ onClick: this.close
+ })
+ }
+ };
+ }
+
+ get sidebar() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "sidebar",
+ key: "ps"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-tab-bar SIDE"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-tab-bar-header",
+ style: {
+ fontSize: "16px"
+ }
+ }, "Public Servers"), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null), this.searchInput, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Header, {
+ text: "Categories"
+ }), this.categoryButtons.map((value, index) => {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Item, {
+ id: index,
+ onClick: this.changeCategory,
+ key: index,
+ text: value,
+ selected: this.state.selectedCategory === index
+ });
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null), this.footer, this.connection));
+ }
+
+ get searchInput() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-form-item"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-text-input flex-vertical",
+ style: {
+ width: "172px",
+ marginLeft: "10px"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("input", {
+ ref: "searchinput",
+ onKeyDown: this.searchKeyDown,
+ onChange: () => {},
+ type: "text",
+ className: "input default",
+ placeholder: "Search...",
+ maxLength: "50"
+ })));
+ }
+
+ searchKeyDown(e) {
+ const self = this;
+ if (self.state.loading || e.which !== 13) return;
+ self.setState({
+ loading: true,
+ title: "Loading...",
+ term: e.target.value
+ });
+ let query = `?term=${e.target.value}`;
+
+ if (self.state.selectedCategory !== 0) {
+ query += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
}
- 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"];
+ self.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) {
+ const self = this;
+ if (self.state.loading) return;
+ self.refs.searchinput.value = "";
+ self.setState({
+ loading: true,
+ selectedCategory: id,
+ title: "Loading...",
+ term: null
+ });
+
+ if (id === 0) {
+ self.search("", true);
+ return;
}
- changeCategory(id) {
- const self = this;
+ self.search(`?category=${self.categoryButtons[id]}`, true);
+ }
+
+ get content() {
+ const self = this;
+ const guildList = this.SortedGuildStore.guildPositions;
+ const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
+ if (self.state.connection.state === 1) return self.notConnected;
+ return [modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ ref: "content",
+ key: "pc",
+ className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {
+ text: self.state.title
+ }), self.bdServer, self.state.servers.map(server => {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_card__WEBPACK_IMPORTED_MODULE_5__["default"], {
+ key: server.identifier,
+ server: server,
+ join: self.join,
+ guildList: guildList,
+ fallback: defaultList[Math.floor(Math.random() * 5)]
+ });
+ }), self.state.next && modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("button", {
+ type: "button",
+ onClick: () => {
if (self.state.loading) return;
- self.refs.searchinput.value = "";
self.setState({
- loading: true,
- selectedCategory: id,
- title: "Loading...",
- term: null
+ loading: true
});
- if (id === 0) {
- self.search("", true);
- return;
- }
- self.search(`?category=${self.categoryButtons[id]}`, true);
- }
+ self.search(self.state.next, false);
+ },
+ className: "ui-button filled brand small grow",
+ style: {
+ width: "100%",
+ marginTop: "10px",
+ marginBottom: "10px"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-button-contents"
+ }, self.state.loading ? "Loading" : "Load More")), self.state.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {
+ text: self.state.title
+ }))];
+ }
- get content() {
- const self = this;
- const guildList = this.SortedGuildStore.guildPositions;
- const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
- if (self.state.connection.state === 1) return self.notConnected;
- return [modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {ref: "content", key: "pc", className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {text: self.state.title}),
- self.bdServer,
- self.state.servers.map((server) => {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_card__WEBPACK_IMPORTED_MODULE_5__["default"], {key: server.identifier, server: server, join: self.join, guildList: guildList, fallback: defaultList[Math.floor(Math.random() * 5)]});
- }),
- self.state.next && modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "button",
- {type: "button", onClick: () => {
- if (self.state.loading) return;self.setState({loading: true}); self.search(self.state.next, false);
- }, className: "ui-button filled brand small grow", style: {width: "100%", marginTop: "10px", marginBottom: "10px"}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-button-contents"},
- self.state.loading ? "Loading" : "Load More"
- )
- ),
- self.state.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__["default"], {text: self.state.title})
- )];
- }
+ get notConnected() {
+ const self = this; //return React.createElement(SettingsTitle, { text: self.state.title });
- get notConnected() {
- const self = this;
- //return BDV2.react.createElement(SettingsTitle, { text: self.state.title });
- return [modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {key: "ncc", ref: "content", className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "h2",
- {className: "ui-form-title h2 margin-reset margin-bottom-20"},
- "Not connected to discordservers.com!",
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "button",
- {
- onClick: self.connect,
- type: "button",
- className: "ui-button filled brand small grow",
- style: {
- display: "inline-block",
- minHeight: "18px",
- marginLeft: "10px",
- lineHeight: "14px"
- }
- },
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Connect"
- )
- )
- ), self.bdServer
- )];
- }
+ return [modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ key: "ncc",
+ ref: "content",
+ className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h2", {
+ className: "ui-form-title h2 margin-reset margin-bottom-20"
+ }, "Not connected to discordservers.com!", modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("button", {
+ onClick: self.connect,
+ type: "button",
+ className: "ui-button filled brand small grow",
+ style: {
+ display: "inline-block",
+ minHeight: "18px",
+ marginLeft: "10px",
+ lineHeight: "14px"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-button-contents"
+ }, "Connect"))), self.bdServer)];
+ }
- get footer() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-tab-bar-header"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "a",
- {href: "https://discordservers.com", target: "_blank"},
- "Discordservers.com"
- )
- );
- }
+ get footer() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-tab-bar-header"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("a", {
+ href: "https://discordservers.com",
+ target: "_blank"
+ }, "Discordservers.com"));
+ }
- get connection() {
- const self = this;
- const {connection} = self.state;
- if (connection.state !== 2) return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("span", null);
+ get connection() {
+ const self = this;
+ const {
+ connection
+ } = self.state;
+ if (connection.state !== 2) return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("span", null);
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("span", null, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("span", {
+ style: {
+ color: "#b9bbbe",
+ fontSize: "10px",
+ marginLeft: "10px"
+ }
+ }, "Connected as: ", `${connection.user.username}#${connection.user.discriminator}`), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ style: {
+ padding: "5px 10px 0 10px"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("button", {
+ style: {
+ width: "100%",
+ minHeight: "20px"
+ },
+ type: "button",
+ className: "ui-button filled brand small grow"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-button-contents",
+ onClick: self.connect
+ }, "Reconnect"))));
+ }
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "span",
- null,
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settings_tabbar__WEBPACK_IMPORTED_MODULE_3__["default"].Separator, null),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "span",
- {style: {color: "#b9bbbe", fontSize: "10px", marginLeft: "10px"}},
- "Connected as: ",
- `${connection.user.username}#${connection.user.discriminator}`
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {style: {padding: "5px 10px 0 10px"}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "button",
- {style: {width: "100%", minHeight: "20px"}, type: "button", className: "ui-button filled brand small grow"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-button-contents", onClick: self.connect},
- "Reconnect"
- )
- )
- )
- );
}
-}
-
/***/ }),
@@ -4546,7 +5946,6 @@ __webpack_require__.r(__webpack_exports__);
-
/***/ }),
/***/ "./src/ui/scroller.js":
@@ -4561,33 +5960,39 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_Scroller; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_Scroller extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_Scroller extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ render() {
+ //scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y
+ let wrapperClass = `scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d${this.props.fade ? " scrollerFade-1Ijw5y" : ""}`;
+ let scrollerClass = "scroller-2FKFPG scroller";
+ /* fuck */
- constructor(props) {
- super(props);
+ if (this.props.sidebar) scrollerClass = "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix sidebarRegionScroller-3MXcoP sidebar-region-scroller scroller";
+
+ if (this.props.contentColumn) {
+ scrollerClass = "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller";
+ /* fuck */
+
+ wrapperClass = "scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv";
}
- render() {
- //scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y
- let wrapperClass = `scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d${this.props.fade ? " scrollerFade-1Ijw5y" : ""}`;
- let scrollerClass = "scroller-2FKFPG scroller"; /* fuck */
- if (this.props.sidebar) scrollerClass = "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix sidebarRegionScroller-3MXcoP sidebar-region-scroller scroller";
- if (this.props.contentColumn) {
- scrollerClass = "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller"; /* fuck */
- wrapperClass = "scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv";
- }
- const {children} = this.props;
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {key: "scrollerwrap", className: wrapperClass},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {key: "scroller", ref: "scroller", className: scrollerClass},
- children
- )
- );
- }
+ const {
+ children
+ } = this.props;
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ key: "scrollerwrap",
+ className: wrapperClass
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ key: "scroller",
+ ref: "scroller",
+ className: scrollerClass
+ }, children));
+ }
+
}
/***/ }),
@@ -4604,48 +6009,40 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_Checkbox; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_Checkbox extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.onClick = this.onClick.bind(this);
+ this.setInitialState();
+ }
-class V2C_Checkbox extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- this.onClick = this.onClick.bind(this);
- this.setInitialState();
- }
+ setInitialState() {
+ this.state = {
+ checked: this.props.checked || false
+ };
+ }
- setInitialState() {
- this.state = {
- checked: this.props.checked || false
- };
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("li", null, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "checkbox checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",
+ onClick: this.onClick
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "checkbox-inner checkboxInner-3yjcPe da-checkboxInner"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("input", {
+ className: "checkboxElement-1qV33p da-checkboxElement",
+ checked: this.state.checked,
+ onChange: () => {},
+ type: "checkbox"
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("span", null)), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("span", null, this.props.text)));
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "li",
- null,
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "checkbox checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox", onClick: this.onClick},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("input", {className: "checkboxElement-1qV33p da-checkboxElement", checked: this.state.checked, onChange: () => {}, type: "checkbox"}),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("span", null)
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "span",
- null,
- this.props.text
- )
- )
- );
- }
+ onClick() {
+ this.props.onChange(this.props.id, !this.state.checked);
+ this.setState({
+ checked: !this.state.checked
+ });
+ }
- onClick() {
- this.props.onChange(this.props.id, !this.state.checked);
- this.setState({
- checked: !this.state.checked
- });
- }
}
/***/ }),
@@ -4662,24 +6059,19 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_ContentColumn; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_ContentColumn extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_ContentColumn extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h2", {
+ className: "ui-form-title h2 margin-reset margin-bottom-20"
+ }, this.props.title), this.props.children);
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "h2",
- {className: "ui-form-title h2 margin-reset margin-bottom-20"},
- this.props.title
- ),
- this.props.children
- );
- }
}
/***/ }),
@@ -4698,38 +6090,35 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ "./src/ui/icons/close.js");
+class V2C_Tools extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.onClick = this.onClick.bind(this);
+ }
-class V2C_Tools extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "tools-container toolsContainer-1edPuj"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "tools tools-3-3s-N"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "container-1sFeqf"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "btn-close closeButton-1tv5uR",
+ onClick: this.onClick
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__["default"], null)), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "esc-text keybind-KpFkfr"
+ }, "ESC"))));
+ }
- constructor(props) {
- super(props);
- this.onClick = this.onClick.bind(this);
+ onClick() {
+ if (this.props.onClick) {
+ this.props.onClick();
}
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "tools-container toolsContainer-1edPuj"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "tools tools-3-3s-N"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "container-1sFeqf"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div",
- {className: "btn-close closeButton-1tv5uR", onClick: this.onClick},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__["default"], null)
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "esc-text keybind-KpFkfr"},
- "ESC"
- )
- )
- )
- );
- }
+ $(".closeButton-1tv5uR").first().click();
+ }
- onClick() {
- if (this.props.onClick) {
- this.props.onClick();
- }
- $(".closeButton-1tv5uR").first().click();
- }
}
/***/ }),
@@ -4752,27 +6141,36 @@ __webpack_require__.r(__webpack_exports__);
+class V2C_SettingsPanel extends modules__WEBPACK_IMPORTED_MODULE_1__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_SettingsPanel extends modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactComponent {
+ render() {
+ const {
+ settings
+ } = this.props;
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__["default"], {
+ text: this.props.title
+ }), this.props.button && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("button", {
+ key: "title-button",
+ className: "bd-pfbtn",
+ onClick: this.props.button.onClick
+ }, this.props.button.title), settings.map(setting => {
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_switch__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ id: setting.id,
+ key: setting.id,
+ data: setting,
+ checked: data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"][setting.id],
+ onChange: (id, checked) => {
+ this.props.onChange(id, checked);
+ }
+ });
+ }));
+ }
- constructor(props) {
- super(props);
- }
-
- render() {
- const {settings} = this.props;
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_title__WEBPACK_IMPORTED_MODULE_2__["default"], {text: this.props.title}),
- this.props.button && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("button", {key: "title-button", className: "bd-pfbtn", onClick: this.props.button.onClick}, this.props.button.title),
- settings.map(setting => {
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_switch__WEBPACK_IMPORTED_MODULE_3__["default"], {id: setting.id, key: setting.id, data: setting, checked: data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"][setting.id], onChange: (id, checked) => {
- this.props.onChange(id, checked);
- }});
- })
- );
- }
}
/***/ }),
@@ -4795,146 +6193,189 @@ __webpack_require__.r(__webpack_exports__);
+class V2C_PluginCard extends modules__WEBPACK_IMPORTED_MODULE_1__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.onChange = this.onChange.bind(this);
+ this.showSettings = this.showSettings.bind(this);
+ this.setInitialState();
+ this.hasSettings = typeof this.props.plugin.getSettingsPanel === "function";
+ this.settingsPanel = "";
+ this.reload = this.reload.bind(this);
+ this.onReload = this.onReload.bind(this);
+ }
-class V2C_PluginCard extends modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactComponent {
+ setInitialState() {
+ this.state = {
+ checked: data__WEBPACK_IMPORTED_MODULE_0__["PluginCookie"][this.props.plugin.getName()],
+ settings: false,
+ reloads: 0
+ };
+ } // componentDidMount() {
+ // BDEvents.on("plugin-reloaded", this.onReload);
+ // }
+ // componentWillUnmount() {
+ // BDEvents.off("plugin-reloaded", this.onReload);
+ // }
- constructor(props) {
- super(props);
- this.onChange = this.onChange.bind(this);
- this.showSettings = this.showSettings.bind(this);
- this.setInitialState();
- this.hasSettings = typeof this.props.plugin.getSettingsPanel === "function";
- this.settingsPanel = "";
- this.reload = this.reload.bind(this);
- this.onReload = this.onReload.bind(this);
+ onReload(pluginName) {
+ if (pluginName !== this.props.plugin.getName()) return;
+ this.setState({
+ reloads: this.state.reloads + 1
+ });
+ }
+
+ componentDidUpdate() {
+ if (this.state.settings) {
+ if (typeof this.settingsPanel === "object") {
+ this.refs.settingspanel.appendChild(this.settingsPanel);
+ }
+
+ if (!data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-3"]) return;
+
+ const isHidden = (container, element) => {
+ const cTop = container.scrollTop;
+ const cBottom = cTop + container.clientHeight;
+ const eTop = element.offsetTop;
+ const eBottom = eTop + element.clientHeight;
+ return eTop < cTop || eBottom > cBottom;
+ };
+
+ const self = $(modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].findDOMNode(this));
+ const container = self.parents(".scroller");
+ if (!isHidden(container[0], self[0])) return;
+ container.animate({
+ scrollTop: self.offset().top - container.offset().top + container.scrollTop() - 30
+ }, 300);
}
+ }
- setInitialState() {
- this.state = {
- checked: data__WEBPACK_IMPORTED_MODULE_0__["PluginCookie"][this.props.plugin.getName()],
- settings: false,
- reloads: 0
- };
- }
+ reload() {
+ const plugin = this.props.plugin.getName();
+ modules__WEBPACK_IMPORTED_MODULE_1__["PluginManager"].reloadPlugin(plugin);
+ this.props.plugin = data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][plugin].plugin;
+ this.onReload(this.props.plugin.getName());
+ }
- // componentDidMount() {
- // BDEvents.on("plugin-reloaded", this.onReload);
- // }
+ getString(value) {
+ return typeof value == "string" ? value : value.toString();
+ }
- // componentWillUnmount() {
- // BDEvents.off("plugin-reloaded", this.onReload);
- // }
+ render() {
+ const self = this;
+ const {
+ plugin
+ } = this.props;
+ const name = this.getString(plugin.getName());
+ const author = this.getString(plugin.getAuthor());
+ const description = this.getString(plugin.getDescription());
+ const version = this.getString(plugin.getVersion());
+ const website = data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][name].website;
+ const source = data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][name].source;
- onReload(pluginName) {
- if (pluginName !== this.props.plugin.getName()) return;
- this.setState({reloads: this.state.reloads + 1});
- }
+ if (this.state.settings) {
+ try {
+ self.settingsPanel = plugin.getSettingsPanel();
+ } catch (err) {
+ modules__WEBPACK_IMPORTED_MODULE_1__["Utilities"].err("Plugins", "Unable to get settings panel for " + plugin.getName() + ".", err);
+ }
- componentDidUpdate() {
- if (this.state.settings) {
- if (typeof this.settingsPanel === "object") {
- this.refs.settingspanel.appendChild(this.settingsPanel);
- }
-
- if (!data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-3"]) return;
- const isHidden = (container, element) => {
-
- const cTop = container.scrollTop;
- const cBottom = cTop + container.clientHeight;
-
- const eTop = element.offsetTop;
- const eBottom = eTop + element.clientHeight;
-
- return (eTop < cTop || eBottom > cBottom);
- };
-
- const self = $(modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.findDOMNode(this));
- const container = self.parents(".scroller");
- if (!isHidden(container[0], self[0])) return;
- container.animate({
- scrollTop: self.offset().top - container.offset().top + container.scrollTop() - 30
- }, 300);
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("li", {
+ className: "settings-open ui-switch-item"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ style: {
+ "float": "right",
+ "cursor": "pointer"
+ },
+ onClick: () => {
+ this.refs.settingspanel.innerHTML = "";
+ self.setState({
+ settings: false
+ });
}
- }
-
- reload() {
- const plugin = this.props.plugin.getName();
- modules__WEBPACK_IMPORTED_MODULE_1__["PluginManager"].reloadPlugin(plugin);
- this.props.plugin = data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][plugin].plugin;
- this.onReload(this.props.plugin.getName());
- }
-
- getString(value) {
- return typeof value == "string" ? value : value.toString();
- }
-
- render() {
- const self = this;
- const {plugin} = this.props;
- const name = this.getString(plugin.getName());
- const author = this.getString(plugin.getAuthor());
- const description = this.getString(plugin.getDescription());
- const version = this.getString(plugin.getVersion());
- const website = data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][name].website;
- const source = data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][name].source;
-
- if (this.state.settings) {
- try { self.settingsPanel = plugin.getSettingsPanel(); }
- catch (err) { modules__WEBPACK_IMPORTED_MODULE_1__["Utilities"].err("Plugins", "Unable to get settings panel for " + plugin.getName() + ".", err); }
-
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("li", {className: "settings-open ui-switch-item"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {style: {"float": "right", "cursor": "pointer"}, onClick: () => {
- this.refs.settingspanel.innerHTML = "";
- self.setState({settings: false});
- }},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__["default"], null)
- ),
- typeof self.settingsPanel === "object" && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {id: `plugin-settings-${name}`, className: "plugin-settings", ref: "settingspanel"}),
- typeof self.settingsPanel !== "object" && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {id: `plugin-settings-${name}`, className: "plugin-settings", ref: "settingspanel", dangerouslySetInnerHTML: {__html: self.settingsPanel}})
- );
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__["default"], null)), typeof self.settingsPanel === "object" && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ id: `plugin-settings-${name}`,
+ className: "plugin-settings",
+ ref: "settingspanel"
+ }), typeof self.settingsPanel !== "object" && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ id: `plugin-settings-${name}`,
+ className: "plugin-settings",
+ ref: "settingspanel",
+ dangerouslySetInnerHTML: {
+ __html: self.settingsPanel
}
-
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("li", {"data-name": name, "data-version": version, "className": "settings-closed ui-switch-item"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-header"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-header-title"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-name"}, name),
- " v",
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-version"}, version),
- " by ",
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-author"}, author)
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-controls"},
- !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__["default"], {className: "bd-reload-card", onClick: this.reload}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("label", {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("input", {checked: this.state.checked, onChange: this.onChange, className: "ui-switch-checkbox", type: "checkbox"}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: this.state.checked ? "ui-switch checked" : "ui-switch"})
- )
- )
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-description-wrap scroller-wrap fade"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-description scroller"}, description)
- ),
- (website || source || this.hasSettings) && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-footer"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-links"},
- website && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("a", {className: "bda-link bda-link-website", href: website, target: "_blank"}, "Website"),
- website && source && " | ",
- source && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("a", {className: "bda-link bda-link-source", href: source, target: "_blank"}, "Source")
- ),
- this.hasSettings && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("button", {onClick: this.showSettings, className: "bda-settings-button", disabled: !this.state.checked}, "Settings")
- )
- );
+ }));
}
- onChange() {
- this.setState({checked: !this.state.checked});
- modules__WEBPACK_IMPORTED_MODULE_1__["PluginManager"].togglePlugin(this.props.plugin.getName());
- }
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("li", {
+ "data-name": name,
+ "data-version": version,
+ "className": "settings-closed ui-switch-item"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-header"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-header-title"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-name"
+ }, name), " v", modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-version"
+ }, version), " by ", modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-author"
+ }, author)), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-controls"
+ }, !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ className: "bd-reload-card",
+ onClick: this.reload
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("label", {
+ className: "ui-switch-wrapper ui-flex-child",
+ style: {
+ flex: "0 0 auto"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("input", {
+ checked: this.state.checked,
+ onChange: this.onChange,
+ className: "ui-switch-checkbox",
+ type: "checkbox"
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: this.state.checked ? "ui-switch checked" : "ui-switch"
+ })))), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-description-wrap scroller-wrap fade"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-description scroller"
+ }, description)), (website || source || this.hasSettings) && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-footer"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-links"
+ }, website && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("a", {
+ className: "bda-link bda-link-website",
+ href: website,
+ target: "_blank"
+ }, "Website"), website && source && " | ", source && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("a", {
+ className: "bda-link bda-link-source",
+ href: source,
+ target: "_blank"
+ }, "Source")), this.hasSettings && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("button", {
+ onClick: this.showSettings,
+ className: "bda-settings-button",
+ disabled: !this.state.checked
+ }, "Settings")));
+ }
+
+ onChange() {
+ this.setState({
+ checked: !this.state.checked
+ });
+ modules__WEBPACK_IMPORTED_MODULE_1__["PluginManager"].togglePlugin(this.props.plugin.getName());
+ }
+
+ showSettings() {
+ if (!this.hasSettings) return;
+ this.setState({
+ settings: true
+ });
+ }
- showSettings() {
- if (!this.hasSettings) return;
- this.setState({settings: true});
- }
}
/***/ }),
@@ -4953,21 +6394,19 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settingsgroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settingsgroup */ "./src/ui/settings/settingsgroup.js");
+class V2C_SectionedSettingsPanel extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_SectionedSettingsPanel extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"
+ }, this.props.sections.map(section => {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_settingsgroup__WEBPACK_IMPORTED_MODULE_1__["default"], Object.assign({}, section, this.props.onChange));
+ }));
+ }
- constructor(props) {
- super(props);
- }
-
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div", {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- this.props.sections.map(section => {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_settingsgroup__WEBPACK_IMPORTED_MODULE_1__["default"], Object.assign({}, section, this.props.onChange));
- })
- );
- }
}
/***/ }),
@@ -4986,7 +6425,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
/* harmony import */ var _sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sidebar */ "./src/ui/settings/sidebar.js");
/* harmony import */ var _scroller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scroller */ "./src/ui/scroller.js");
-/* harmony import */ var _list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../list */ "./src/ui/list.js");
+/* harmony import */ var _list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../list */ "./src/ui/list.jsx");
/* harmony import */ var _contentcolumn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./contentcolumn */ "./src/ui/settings/contentcolumn.js");
/* harmony import */ var _sectionedsettings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sectionedsettings */ "./src/ui/settings/sectionedsettings.js");
/* harmony import */ var _exitbutton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./exitbutton */ "./src/ui/settings/exitbutton.js");
@@ -5008,218 +6447,333 @@ __webpack_require__.r(__webpack_exports__);
-
-
class V2_SettingsPanel {
+ constructor(props) {
+ this.sideBarOnClick = this.sideBarOnClick.bind(this);
+ this.onChange = props.onChange;
+ this.sidebar = new _sidebar__WEBPACK_IMPORTED_MODULE_2__["default"](this.sideBarOnClick);
+ }
- constructor(props) {
- this.sideBarOnClick = this.sideBarOnClick.bind(this);
- this.onChange = props.onChange;
- this.sidebar = new _sidebar__WEBPACK_IMPORTED_MODULE_2__["default"](this.sideBarOnClick);
+ get root() {
+ const _root = $("#bd-settingspane-container");
+
+ if (!_root.length) {
+ if (!this.injectRoot()) return null;
+ return this.root;
}
- get root() {
- const _root = $("#bd-settingspane-container");
- if (!_root.length) {
- if (!this.injectRoot()) return null;
- return this.root;
+ return _root[0];
+ }
+
+ injectRoot() {
+ if (!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length) return false;
+ const root = $("", {
+ "class": "contentRegion-3nDuYy content-region",
+ "id": "bd-settingspane-container"
+ });
+ $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(root);
+ modules__WEBPACK_IMPORTED_MODULE_1__["Utilities"].onRemoved(root[0], () => {
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].unmountComponentAtNode(root[0]);
+ });
+ return true;
+ }
+
+ get coreSettings() {
+ const settings = this.getSettings("core");
+ const categories = [...new Set(settings.map(s => s.category))];
+ const sections = categories.map(c => {
+ return {
+ title: c,
+ settings: settings.filter(s => s.category == c)
+ };
+ });
+ return sections;
+ }
+
+ get emoteSettings() {
+ return this.getSettings("emote");
+ }
+
+ getSettings(category) {
+ return Object.keys(data__WEBPACK_IMPORTED_MODULE_0__["SettingsInfo"]).reduce((arr, key) => {
+ const setting = data__WEBPACK_IMPORTED_MODULE_0__["SettingsInfo"][key];
+
+ if (setting.cat === category && setting.implemented && !setting.hidden) {
+ setting.text = key;
+ arr.push(setting);
+ }
+
+ return arr;
+ }, []);
+ }
+
+ sideBarOnClick(id) {
+ const self = this;
+ $(".contentRegion-3nDuYy, .content-region").first().hide();
+ $(self.root).show();
+
+ switch (id) {
+ case "core":
+ self.renderCoreSettings();
+ break;
+
+ case "emotes":
+ self.renderEmoteSettings();
+ break;
+
+ case "customcss":
+ self.renderCustomCssEditor();
+ break;
+
+ case "plugins":
+ self.renderPluginPane();
+ break;
+
+ case "themes":
+ self.renderThemePane();
+ break;
+ }
+ }
+
+ renderSidebar() {
+ const self = this;
+ $("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel", () => {
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].unmountComponentAtNode(self.root);
+ $(self.root).hide();
+ $(".contentRegion-3nDuYy, .content-region").first().show();
+ });
+ self.sidebar.render();
+ }
+
+ get coreComponent() {
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ contentColumn: true,
+ fade: true,
+ dark: true,
+ children: [modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_sectionedsettings__WEBPACK_IMPORTED_MODULE_6__["default"], {
+ key: "cspanel",
+ onChange: this.onChange,
+ sections: this.coreSettings
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {
+ key: "tools"
+ })]
+ });
+ }
+
+ get emoteComponent() {
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ contentColumn: true,
+ fade: true,
+ dark: true,
+ children: [modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_panel__WEBPACK_IMPORTED_MODULE_8__["default"], {
+ key: "espanel",
+ title: "Emote Settings",
+ onChange: this.onChange,
+ settings: this.emoteSettings,
+ button: {
+ title: "Clear Emote Cache",
+ onClick: () => {
+ modules__WEBPACK_IMPORTED_MODULE_1__["EmoteModule"].clearEmoteData();
+ modules__WEBPACK_IMPORTED_MODULE_1__["EmoteModule"].init();
+ modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].init();
+ }
}
- return _root[0];
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {
+ key: "tools"
+ })]
+ });
+ }
+
+ get customCssComponent() {
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ contentColumn: true,
+ fade: true,
+ dark: true,
+ children: [modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_12__["default"], {
+ key: "csseditor"
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {
+ key: "tools"
+ })]
+ });
+ }
+
+ contentComponent(type) {
+ const componentElement = type == "plugins" ? this.pluginsComponent : this.themesComponent;
+ const prefix = type.replace("s", "");
+ const settingsList = this;
+
+ class ContentList extends modules__WEBPACK_IMPORTED_MODULE_1__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.onChange = this.onChange.bind(this);
+ }
+
+ componentDidMount() {
+ modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].on(`${prefix}-reloaded`, this.onChange);
+ modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].on(`${prefix}-loaded`, this.onChange);
+ modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].on(`${prefix}-unloaded`, this.onChange);
+ }
+
+ componentWillUnmount() {
+ modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].off(`${prefix}-reloaded`, this.onChange);
+ modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].off(`${prefix}-loaded`, this.onChange);
+ modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].off(`${prefix}-unloaded`, this.onChange);
+ }
+
+ onChange() {
+ settingsList.sideBarOnClick(type);
+ }
+
+ render() {
+ return componentElement;
+ }
+
}
- injectRoot() {
- if (!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length) return false;
- const root = $("", {
- "class": "contentRegion-3nDuYy content-region",
- "id": "bd-settingspane-container"
- });
- $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(root);
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(ContentList);
+ }
- modules__WEBPACK_IMPORTED_MODULE_1__["Utilities"].onRemoved(root[0], () => {
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.unmountComponentAtNode(root[0]);
- });
- return true;
+ get pluginsComponent() {
+ const plugins = Object.keys(data__WEBPACK_IMPORTED_MODULE_0__["Plugins"]).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
+ arr.push(modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_plugincard__WEBPACK_IMPORTED_MODULE_9__["default"], {
+ key: key,
+ plugin: data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][key].plugin
+ }));
+ return arr;
+ }, []);
+ const list = modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_list__WEBPACK_IMPORTED_MODULE_4__["default"], {
+ key: "plugin-list",
+ className: "bda-slist",
+ children: plugins
+ });
+ const refreshIcon = !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_11__["default"], {
+ className: "bd-reload-header",
+ size: "18px",
+ onClick: async () => {
+ modules__WEBPACK_IMPORTED_MODULE_1__["PluginManager"].updatePluginList();
+ this.sideBarOnClick("plugins");
+ }
+ });
+ const pfBtn = modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("button", {
+ key: "folder-button",
+ className: "bd-pfbtn",
+ onClick: () => {
+ __webpack_require__(/*! electron */ "electron").shell.openItem(modules__WEBPACK_IMPORTED_MODULE_1__["ContentManager"].pluginsFolder);
+ }
+ }, "Open Plugin Folder");
+ const contentColumn = modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_contentcolumn__WEBPACK_IMPORTED_MODULE_5__["default"], {
+ key: "pcolumn",
+ title: "Plugins",
+ children: [refreshIcon, pfBtn, list]
+ });
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ contentColumn: true,
+ fade: true,
+ dark: true,
+ children: [contentColumn, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {
+ key: "tools"
+ })]
+ });
+ }
+
+ get themesComponent() {
+ const themes = Object.keys(data__WEBPACK_IMPORTED_MODULE_0__["Themes"]).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
+ arr.push(modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_themecard__WEBPACK_IMPORTED_MODULE_10__["default"], {
+ key: key,
+ theme: data__WEBPACK_IMPORTED_MODULE_0__["Themes"][key]
+ }));
+ return arr;
+ }, []);
+ const list = modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_list__WEBPACK_IMPORTED_MODULE_4__["default"], {
+ key: "theme-list",
+ className: "bda-slist",
+ children: themes
+ });
+ const refreshIcon = !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_11__["default"], {
+ className: "bd-reload-header",
+ size: "18px",
+ onClick: async () => {
+ modules__WEBPACK_IMPORTED_MODULE_1__["ThemeManager"].updateThemeList();
+ this.sideBarOnClick("themes");
+ }
+ });
+ const tfBtn = modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("button", {
+ key: "folder-button",
+ className: "bd-pfbtn",
+ onClick: () => {
+ __webpack_require__(/*! electron */ "electron").shell.openItem(modules__WEBPACK_IMPORTED_MODULE_1__["ContentManager"].themesFolder);
+ }
+ }, "Open Theme Folder");
+ const contentColumn = modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_contentcolumn__WEBPACK_IMPORTED_MODULE_5__["default"], {
+ key: "tcolumn",
+ title: "Themes",
+ children: [refreshIcon, tfBtn, list]
+ });
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ contentColumn: true,
+ fade: true,
+ dark: true,
+ children: [contentColumn, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {
+ key: "tools"
+ })]
+ });
+ }
+
+ renderCoreSettings() {
+ const root = this.root;
+
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
}
- get coreSettings() {
- const settings = this.getSettings("core");
- const categories = [...new Set(settings.map(s => s.category))];
- const sections = categories.map(c => {return {title: c, settings: settings.filter(s => s.category == c)};});
- return sections;
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].render(this.coreComponent, root);
+ }
+
+ renderEmoteSettings() {
+ const root = this.root;
+
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
}
- get emoteSettings() {
- return this.getSettings("emote");
- }
- getSettings(category) {
- return Object.keys(data__WEBPACK_IMPORTED_MODULE_0__["SettingsInfo"]).reduce((arr, key) => {
- const setting = data__WEBPACK_IMPORTED_MODULE_0__["SettingsInfo"][key];
- if (setting.cat === category && setting.implemented && !setting.hidden) {
- setting.text = key;
- arr.push(setting);
- }
- return arr;
- }, []);
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].render(this.emoteComponent, root);
+ }
+
+ renderCustomCssEditor() {
+ const root = this.root;
+
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
}
- sideBarOnClick(id) {
- const self = this;
- $(".contentRegion-3nDuYy, .content-region").first().hide();
- $(self.root).show();
- switch (id) {
- case "core":
- self.renderCoreSettings();
- break;
- case "emotes":
- self.renderEmoteSettings();
- break;
- case "customcss":
- self.renderCustomCssEditor();
- break;
- case "plugins":
- self.renderPluginPane();
- break;
- case "themes":
- self.renderThemePane();
- break;
- }
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].render(this.customCssComponent, root);
+ }
+
+ renderPluginPane() {
+ const root = this.root;
+
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
}
- renderSidebar() {
- const self = this;
- $("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel", () => {
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.unmountComponentAtNode(self.root);
- $(self.root).hide();
- $(".contentRegion-3nDuYy, .content-region").first().show();
- });
- self.sidebar.render();
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].render(this.contentComponent("plugins"), root);
+ }
+
+ renderThemePane() {
+ const root = this.root;
+
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
}
- get coreComponent() {
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {contentColumn: true, fade: true, dark: true, children: [
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_sectionedsettings__WEBPACK_IMPORTED_MODULE_6__["default"], {key: "cspanel", onChange: this.onChange, sections: this.coreSettings}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {key: "tools"})
- ]});
- }
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].render(this.contentComponent("themes"), root);
+ }
- get emoteComponent() {
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {
- contentColumn: true, fade: true, dark: true, children: [
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_panel__WEBPACK_IMPORTED_MODULE_8__["default"], {key: "espanel", title: "Emote Settings", onChange: this.onChange, settings: this.emoteSettings, button: {
- title: "Clear Emote Cache",
- onClick: () => { modules__WEBPACK_IMPORTED_MODULE_1__["EmoteModule"].clearEmoteData(); modules__WEBPACK_IMPORTED_MODULE_1__["EmoteModule"].init(); modules__WEBPACK_IMPORTED_MODULE_1__["EmoteMenu"].init(); }
- }}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {key: "tools"})
- ]});
- }
-
- get customCssComponent() {
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {contentColumn: true, fade: true, dark: true, children: [modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_12__["default"], {key: "csseditor"}), modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {key: "tools"})]});
- }
-
- contentComponent(type) {
- const componentElement = type == "plugins" ? this.pluginsComponent : this.themesComponent;
- const prefix = type.replace("s", "");
- const settingsList = this;
- class ContentList extends modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.Component {
- constructor(props) {
- super(props);
- this.onChange = this.onChange.bind(this);
- }
-
- componentDidMount() {
- modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].on(`${prefix}-reloaded`, this.onChange);
- modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].on(`${prefix}-loaded`, this.onChange);
- modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].on(`${prefix}-unloaded`, this.onChange);
- }
-
- componentWillUnmount() {
- modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].off(`${prefix}-reloaded`, this.onChange);
- modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].off(`${prefix}-loaded`, this.onChange);
- modules__WEBPACK_IMPORTED_MODULE_1__["Emitter"].off(`${prefix}-unloaded`, this.onChange);
- }
-
- onChange() {
- settingsList.sideBarOnClick(type);
- }
-
- render() {return componentElement;}
- }
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(ContentList);
- }
-
- get pluginsComponent() {
- const plugins = Object.keys(data__WEBPACK_IMPORTED_MODULE_0__["Plugins"]).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
- arr.push(modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_plugincard__WEBPACK_IMPORTED_MODULE_9__["default"], {key: key, plugin: data__WEBPACK_IMPORTED_MODULE_0__["Plugins"][key].plugin}));return arr;
- }, []);
- const list = modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_list__WEBPACK_IMPORTED_MODULE_4__["default"], {key: "plugin-list", className: "bda-slist", children: plugins});
- const refreshIcon = !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_11__["default"], {className: "bd-reload-header", size: "18px", onClick: async () => {
- modules__WEBPACK_IMPORTED_MODULE_1__["PluginManager"].updatePluginList();
- this.sideBarOnClick("plugins");
- }});
- const pfBtn = modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("button", {key: "folder-button", className: "bd-pfbtn", onClick: () => { __webpack_require__(/*! electron */ "electron").shell.openItem(modules__WEBPACK_IMPORTED_MODULE_1__["ContentManager"].pluginsFolder); }}, "Open Plugin Folder");
- const contentColumn = modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_contentcolumn__WEBPACK_IMPORTED_MODULE_5__["default"], {key: "pcolumn", title: "Plugins", children: [refreshIcon, pfBtn, list]});
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {contentColumn: true, fade: true, dark: true, children: [contentColumn, modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {key: "tools"})]});
- }
-
- get themesComponent() {
- const themes = Object.keys(data__WEBPACK_IMPORTED_MODULE_0__["Themes"]).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
- arr.push(modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_themecard__WEBPACK_IMPORTED_MODULE_10__["default"], {key: key, theme: data__WEBPACK_IMPORTED_MODULE_0__["Themes"][key]}));return arr;
- }, []);
- const list = modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_list__WEBPACK_IMPORTED_MODULE_4__["default"], {key: "theme-list", className: "bda-slist", children: themes});
- const refreshIcon = !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_11__["default"], {className: "bd-reload-header", size: "18px", onClick: async () => {
- modules__WEBPACK_IMPORTED_MODULE_1__["ThemeManager"].updateThemeList();
- this.sideBarOnClick("themes");
- }});
- const tfBtn = modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("button", {key: "folder-button", className: "bd-pfbtn", onClick: () => { __webpack_require__(/*! electron */ "electron").shell.openItem(modules__WEBPACK_IMPORTED_MODULE_1__["ContentManager"].themesFolder); }}, "Open Theme Folder");
- const contentColumn = modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_contentcolumn__WEBPACK_IMPORTED_MODULE_5__["default"], {key: "tcolumn", title: "Themes", children: [refreshIcon, tfBtn, list]});
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_scroller__WEBPACK_IMPORTED_MODULE_3__["default"], {contentColumn: true, fade: true, dark: true, children: [contentColumn, modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_exitbutton__WEBPACK_IMPORTED_MODULE_7__["default"], {key: "tools"})]});
- }
-
- renderCoreSettings() {
- const root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.render(this.coreComponent, root);
- }
-
- renderEmoteSettings() {
- const root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.render(this.emoteComponent, root);
- }
-
- renderCustomCssEditor() {
- const root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.render(this.customCssComponent, root);
- }
-
- renderPluginPane() {
- const root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.render(this.contentComponent("plugins"), root);
- }
-
- renderThemePane() {
- const root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.render(this.contentComponent("themes"), root);
- }
}
/***/ }),
@@ -5242,24 +6796,37 @@ __webpack_require__.r(__webpack_exports__);
+class V2C_SettingsGroup extends modules__WEBPACK_IMPORTED_MODULE_1__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_SettingsGroup extends modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactComponent {
+ render() {
+ const {
+ title,
+ settings,
+ button
+ } = this.props;
+ const buttonComponent = button ? modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("button", {
+ key: "title-button",
+ className: "bd-pfbtn",
+ onClick: button.onClick
+ }, button.title) : null;
+ return [modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__["default"], {
+ text: title
+ }), buttonComponent, settings.map(setting => {
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_switch__WEBPACK_IMPORTED_MODULE_3__["default"], {
+ id: setting.id,
+ key: setting.id,
+ data: setting,
+ checked: data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"][setting.id],
+ onChange: (id, checked) => {
+ this.props.onChange(id, checked);
+ }
+ });
+ })];
+ }
- constructor(props) {
- super(props);
- }
-
- render() {
- const {title, settings, button} = this.props;
- const buttonComponent = button ? modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("button", {key: "title-button", className: "bd-pfbtn", onClick: button.onClick}, button.title) : null;
- return [modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_title__WEBPACK_IMPORTED_MODULE_2__["default"], {text: title}),
- buttonComponent,
- settings.map(setting => {
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_switch__WEBPACK_IMPORTED_MODULE_3__["default"], {id: setting.id, key: setting.id, data: setting, checked: data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"][setting.id], onChange: (id, checked) => {
- this.props.onChange(id, checked);
- }});
- })];
- }
}
/***/ }),
@@ -5280,73 +6847,92 @@ __webpack_require__.r(__webpack_exports__);
-
-
class V2_SettingsPanel_Sidebar {
+ constructor(onClick) {
+ this.onClick = onClick;
+ }
- constructor(onClick) {
- this.onClick = onClick;
+ get items() {
+ return [{
+ text: "Settings",
+ id: "core"
+ }, {
+ text: "Emotes",
+ id: "emotes"
+ }, {
+ text: "Plugins",
+ id: "plugins"
+ }, {
+ text: "Themes",
+ id: "themes"
+ }, {
+ text: "Custom CSS",
+ id: "customcss"
+ }];
+ }
+
+ get component() {
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", null, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_sidebarmenu__WEBPACK_IMPORTED_MODULE_2__["default"], {
+ onClick: this.onClick,
+ headerText: "Bandaged BD",
+ items: this.items
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ style: {
+ fontSize: "12px",
+ fontWeight: "600",
+ color: "#72767d",
+ padding: "2px 10px"
+ }
+ }, `BD v${data__WEBPACK_IMPORTED_MODULE_0__["Config"].version} by `, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("a", {
+ href: "https://github.com/Jiiks/",
+ target: "_blank"
+ }, "Jiiks")), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ style: {
+ fontSize: "12px",
+ fontWeight: "600",
+ color: "#72767d",
+ padding: "2px 10px"
+ }
+ }, `BBD v${data__WEBPACK_IMPORTED_MODULE_0__["Config"].bbdVersion} by `, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("a", {
+ href: "https://github.com/rauenzi/",
+ target: "_blank"
+ }, "Zerebos")));
+ }
+
+ get root() {
+ const _root = $("#bd-settings-sidebar");
+
+ if (!_root.length) {
+ if (!this.injectRoot()) return null;
+ return this.root;
}
- get items() {
- return [{text: "Settings", id: "core"}, {text: "Emotes", id: "emotes"}, {text: "Plugins", id: "plugins"}, {text: "Themes", id: "themes"}, {text: "Custom CSS", id: "customcss"}];
+ return _root[0];
+ }
+
+ injectRoot() {
+ const changeLog = $("[class*='side-'] > [class*='item-']:not([class*=Danger])").last();
+ if (!changeLog.length) return false;
+ $("", {
+ id: "bd-settings-sidebar"
+ }).insertBefore(changeLog.prev());
+ return true;
+ }
+
+ render() {
+ const root = this.root;
+
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])");
+ return;
}
- get component() {
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "span",
- null,
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_sidebarmenu__WEBPACK_IMPORTED_MODULE_2__["default"], {onClick: this.onClick, headerText: "Bandaged BD", items: this.items}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {style: {fontSize: "12px", fontWeight: "600", color: "#72767d", padding: "2px 10px"}},
- `BD v${data__WEBPACK_IMPORTED_MODULE_0__["Config"].version} by `,
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "a",
- {href: "https://github.com/Jiiks/", target: "_blank"},
- "Jiiks"
- )
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "div",
- {style: {fontSize: "12px", fontWeight: "600", color: "#72767d", padding: "2px 10px"}},
- `BBD v${data__WEBPACK_IMPORTED_MODULE_0__["Config"].bbdVersion} by `,
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(
- "a",
- {href: "https://github.com/rauenzi/", target: "_blank"},
- "Zerebos"
- )
- )
- );
- }
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].render(this.component, root);
+ modules__WEBPACK_IMPORTED_MODULE_1__["Utilities"].onRemoved(root, () => {
+ modules__WEBPACK_IMPORTED_MODULE_1__["ReactDOM"].unmountComponentAtNode(root);
+ });
+ }
- get root() {
- const _root = $("#bd-settings-sidebar");
- if (!_root.length) {
- if (!this.injectRoot()) return null;
- return this.root;
- }
- return _root[0];
- }
-
- injectRoot() {
- const changeLog = $("[class*='side-'] > [class*='item-']:not([class*=Danger])").last();
- if (!changeLog.length) return false;
- $("", {id: "bd-settings-sidebar"}).insertBefore(changeLog.prev());
- return true;
- }
-
- render() {
- const root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])");
- return;
- }
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.render(this.component, root);
- modules__WEBPACK_IMPORTED_MODULE_1__["Utilities"].onRemoved(root, () => {
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactDom.unmountComponentAtNode(root);
- });
- }
}
/***/ }),
@@ -5365,71 +6951,84 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _tabbar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabbar */ "./src/ui/settings/tabbar.js");
+class V2C_SideBar extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ const self = this;
+ const si = $("[class*=side] > [class*=selected]");
+ if (si.length) self.scn = si.attr("class");
+ const ns = $("[class*=side] > [class*=notSelected]");
+ if (ns.length) self.nscn = ns.attr("class");
+ $("[class*='side-'] > [class*='item-']").on("click", () => {
+ self.setState({
+ selected: null
+ });
+ });
+ self.setInitialState();
+ self.onClick = self.onClick.bind(self);
+ }
-class V2C_SideBar extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ setInitialState() {
+ const self = this;
+ self.state = {
+ selected: null,
+ items: self.props.items
+ };
+ const initialSelection = self.props.items.find(item => {
+ return item.selected;
+ });
- constructor(props) {
- super(props);
- const self = this;
- const si = $("[class*=side] > [class*=selected]");
- if (si.length) self.scn = si.attr("class");
- const ns = $("[class*=side] > [class*=notSelected]");
- if (ns.length) self.nscn = ns.attr("class");
- $("[class*='side-'] > [class*='item-']").on("click", () => {
- self.setState({
- selected: null
- });
- });
- self.setInitialState();
- self.onClick = self.onClick.bind(self);
+ if (initialSelection) {
+ self.state.selected = initialSelection.id;
+ }
+ }
+
+ render() {
+ const self = this;
+ const {
+ headerText
+ } = self.props;
+ const {
+ items,
+ selected
+ } = self.state;
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", null, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_tabbar__WEBPACK_IMPORTED_MODULE_1__["default"].Separator, null), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_tabbar__WEBPACK_IMPORTED_MODULE_1__["default"].Header, {
+ text: headerText
+ }), items.map(item => {
+ const {
+ id,
+ text
+ } = item;
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_tabbar__WEBPACK_IMPORTED_MODULE_1__["default"].Item, {
+ key: id,
+ selected: selected === id,
+ text: text,
+ id: id,
+ onClick: self.onClick
+ });
+ }));
+ }
+
+ onClick(id) {
+ const self = this;
+ const si = $("[class*=side] > [class*=selected]");
+
+ if (si.length) {
+ si.off("click.bdsb").on("click.bsb", e => {
+ $(e.target).attr("class", self.scn);
+ });
+ si.attr("class", self.nscn);
}
- setInitialState() {
- const self = this;
- self.state = {
- selected: null,
- items: self.props.items
- };
+ self.setState({
+ selected: null
+ });
+ self.setState({
+ selected: id
+ });
+ if (self.props.onClick) self.props.onClick(id);
+ }
- const initialSelection = self.props.items.find(item => {
- return item.selected;
- });
- if (initialSelection) {
- self.state.selected = initialSelection.id;
- }
- }
-
- render() {
- const self = this;
- const {headerText} = self.props;
- const {items, selected} = self.state;
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- null,
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_tabbar__WEBPACK_IMPORTED_MODULE_1__["default"].Separator, null),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_tabbar__WEBPACK_IMPORTED_MODULE_1__["default"].Header, {text: headerText}),
- items.map(item => {
- const {id, text} = item;
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_tabbar__WEBPACK_IMPORTED_MODULE_1__["default"].Item, {key: id, selected: selected === id, text: text, id: id, onClick: self.onClick});
- })
- );
- }
-
- onClick(id) {
- const self = this;
- const si = $("[class*=side] > [class*=selected]");
- if (si.length) {
- si.off("click.bdsb").on("click.bsb", e => {
- $(e.target).attr("class", self.scn);
- });
- si.attr("class", self.nscn);
- }
-
- self.setState({selected: null});
- self.setState({selected: id});
-
- if (self.props.onClick) self.props.onClick(id);
- }
}
/***/ }),
@@ -5446,56 +7045,60 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_Switch; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_Switch extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ this.onChange = this.onChange.bind(this);
+ }
-class V2C_Switch extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ setInitialState() {
+ this.state = {
+ checked: this.props.checked
+ };
+ }
- constructor(props) {
- super(props);
- this.setInitialState();
- this.onChange = this.onChange.bind(this);
- }
+ render() {
+ const {
+ text,
+ info
+ } = this.props.data;
+ const {
+ checked
+ } = this.state;
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-flex flex-vertical flex-justify-start flex-align-stretch flex-nowrap ui-switch-item"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-flex flex-horizontal flex-justify-start flex-align-stretch flex-nowrap"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h3", {
+ className: "ui-form-title h3 margin-reset margin-reset ui-flex-child"
+ }, text), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("label", {
+ className: "ui-switch-wrapper ui-flex-child",
+ style: {
+ flex: "0 0 auto"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("input", {
+ className: "ui-switch-checkbox",
+ type: "checkbox",
+ checked: checked,
+ onChange: e => this.onChange(e)
+ }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: `ui-switch ${checked ? "checked" : ""}`
+ }))), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-form-text style-description margin-top-4",
+ style: {
+ flex: "1 1 auto"
+ }
+ }, info));
+ }
- setInitialState() {
- this.state = {
- checked: this.props.checked
- };
- }
+ onChange() {
+ this.props.onChange(this.props.id, !this.state.checked);
+ this.setState({
+ checked: !this.state.checked
+ });
+ }
- render() {
- const {text, info} = this.props.data;
- const {checked} = this.state;
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-flex flex-vertical flex-justify-start flex-align-stretch flex-nowrap ui-switch-item"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-flex flex-horizontal flex-justify-start flex-align-stretch flex-nowrap"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "h3",
- {className: "ui-form-title h3 margin-reset margin-reset ui-flex-child"},
- text
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "label",
- {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("input", {className: "ui-switch-checkbox", type: "checkbox", checked: checked, onChange: e => this.onChange(e)}),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: `ui-switch ${checked ? "checked" : ""}`})
- )
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-form-text style-description margin-top-4", style: {flex: "1 1 auto"}},
- info
- )
- );
- }
-
- onChange() {
- this.props.onChange(this.props.id, !this.state.checked);
- this.setState({
- checked: !this.state.checked
- });
- }
}
/***/ }),
@@ -5513,69 +7116,73 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
-class V2C_TabBarItem extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+class V2C_TabBarItem extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ this.onClick = this.onClick.bind(this);
+ }
- constructor(props) {
- super(props);
- this.setInitialState();
- this.onClick = this.onClick.bind(this);
- }
+ setInitialState() {
+ this.state = {
+ selected: this.props.selected || false
+ };
+ }
- setInitialState() {
- this.state = {
- selected: this.props.selected || false
- };
- }
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: `ui-tab-bar-item${this.props.selected ? " selected" : ""}`,
+ onClick: this.onClick
+ }, this.props.text);
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: `ui-tab-bar-item${this.props.selected ? " selected" : ""}`, onClick: this.onClick},
- this.props.text
- );
+ onClick() {
+ if (this.props.onClick) {
+ this.props.onClick(this.props.id);
}
+ }
- onClick() {
- if (this.props.onClick) {
- this.props.onClick(this.props.id);
- }
- }
}
-class V2C_TabBarSeparator extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- }
+class V2C_TabBarSeparator extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-tab-bar-separator margin-top-8 margin-bottom-8"
+ });
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "ui-tab-bar-separator margin-top-8 margin-bottom-8"});
- }
}
-class V2C_TabBarHeader extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- }
+class V2C_TabBarHeader extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "ui-tab-bar-header"
+ }, this.props.text);
+ }
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "ui-tab-bar-header"},
- this.props.text
- );
- }
}
class V2Cs_TabBar {
- static get Item() {
- return V2C_TabBarItem;
- }
- static get Header() {
- return V2C_TabBarHeader;
- }
- static get Separator() {
- return V2C_TabBarSeparator;
- }
+ static get Item() {
+ return V2C_TabBarItem;
+ }
+
+ static get Header() {
+ return V2C_TabBarHeader;
+ }
+
+ static get Separator() {
+ return V2C_TabBarSeparator;
+ }
+
}
/***/ }),
@@ -5596,89 +7203,114 @@ __webpack_require__.r(__webpack_exports__);
+class V2C_ThemeCard extends modules__WEBPACK_IMPORTED_MODULE_1__["React"].Component {
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ this.onChange = this.onChange.bind(this);
+ this.reload = this.reload.bind(this);
+ }
-class V2C_ThemeCard extends modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].reactComponent {
+ setInitialState() {
+ this.state = {
+ checked: data__WEBPACK_IMPORTED_MODULE_0__["ThemeCookie"][this.props.theme.name],
+ reloads: 0
+ };
+ } // componentDidMount() {
+ // BDEvents.on("theme-reloaded", this.onReload);
+ // }
+ // componentWillUnmount() {
+ // BDEvents.off("theme-reloaded", this.onReload);
+ // }
- constructor(props) {
- super(props);
- this.setInitialState();
- this.onChange = this.onChange.bind(this);
- this.reload = this.reload.bind(this);
- }
- setInitialState() {
- this.state = {
- checked: data__WEBPACK_IMPORTED_MODULE_0__["ThemeCookie"][this.props.theme.name],
- reloads: 0
- };
- }
+ onReload(themeName) {
+ if (themeName !== this.props.theme.name) return;
+ this.setState({
+ reloads: this.state.reloads + 1
+ });
+ }
- // componentDidMount() {
- // BDEvents.on("theme-reloaded", this.onReload);
- // }
+ reload() {
+ const theme = this.props.theme.name;
+ const error = modules__WEBPACK_IMPORTED_MODULE_1__["ThemeManager"].reloadTheme(theme);
+ if (error) modules__WEBPACK_IMPORTED_MODULE_1__["Core"].showToast(`Could not reload ${data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme].name}. Check console for details.`, {
+ type: "error"
+ });else modules__WEBPACK_IMPORTED_MODULE_1__["Core"].showToast(`${data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme].name} v${data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme].version} has been reloaded.`, {
+ type: "success"
+ }); // this.setState(this.state);
- // componentWillUnmount() {
- // BDEvents.off("theme-reloaded", this.onReload);
- // }
+ this.props.theme = data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme];
+ this.onReload(this.props.theme.name);
+ }
- onReload(themeName) {
- if (themeName !== this.props.theme.name) return;
- this.setState({reloads: this.state.reloads + 1});
- }
+ render() {
+ const {
+ theme
+ } = this.props;
+ const name = theme.name;
+ const description = theme.description;
+ const version = theme.version;
+ const author = theme.author;
+ const website = data__WEBPACK_IMPORTED_MODULE_0__["Themes"][name].website;
+ const source = data__WEBPACK_IMPORTED_MODULE_0__["Themes"][name].source;
+ return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("li", {
+ "data-name": name,
+ "data-version": version,
+ "className": "settings-closed ui-switch-item"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-header"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-header-title"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-name"
+ }, name), " v", modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-version"
+ }, version), " by ", modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-author"
+ }, author)), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-controls"
+ }, !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__["default"], {
+ className: "bd-reload-card",
+ onClick: this.reload
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("label", {
+ className: "ui-switch-wrapper ui-flex-child",
+ style: {
+ flex: "0 0 auto"
+ }
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("input", {
+ checked: this.state.checked,
+ onChange: this.onChange,
+ className: "ui-switch-checkbox",
+ type: "checkbox"
+ }), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: this.state.checked ? "ui-switch checked" : "ui-switch"
+ })))), modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-description-wrap scroller-wrap fade"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-description scroller"
+ }, description)), (website || source) && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("div", {
+ className: "bda-footer"
+ }, modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("span", {
+ className: "bda-links"
+ }, website && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("a", {
+ className: "bda-link",
+ href: website,
+ target: "_blank"
+ }, "Website"), website && source && " | ", source && modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement("a", {
+ className: "bda-link",
+ href: source,
+ target: "_blank"
+ }, "Source"))));
+ }
- reload() {
- const theme = this.props.theme.name;
- const error = modules__WEBPACK_IMPORTED_MODULE_1__["ThemeManager"].reloadTheme(theme);
- if (error) modules__WEBPACK_IMPORTED_MODULE_1__["Core"].showToast(`Could not reload ${data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme].name}. Check console for details.`, {type: "error"});
- else modules__WEBPACK_IMPORTED_MODULE_1__["Core"].showToast(`${data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme].name} v${data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme].version} has been reloaded.`, {type: "success"});
- // this.setState(this.state);
- this.props.theme = data__WEBPACK_IMPORTED_MODULE_0__["Themes"][theme];
- this.onReload(this.props.theme.name);
- }
+ onChange() {
+ this.setState({
+ checked: !this.state.checked
+ });
+ modules__WEBPACK_IMPORTED_MODULE_1__["ThemeManager"].toggleTheme(this.props.theme.name);
+ }
- render() {
- const {theme} = this.props;
- const name = theme.name;
- const description = theme.description;
- const version = theme.version;
- const author = theme.author;
- const website = data__WEBPACK_IMPORTED_MODULE_0__["Themes"][name].website;
- const source = data__WEBPACK_IMPORTED_MODULE_0__["Themes"][name].source;
-
- return modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("li", {"data-name": name, "data-version": version, "className": "settings-closed ui-switch-item"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-header"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-header-title"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-name"}, name),
- " v",
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-version"}, version),
- " by ",
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-author"}, author)
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-controls"},
- !data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"]["fork-ps-5"] && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__["default"], {className: "bd-reload-card", onClick: this.reload}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("label", {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("input", {checked: this.state.checked, onChange: this.onChange, className: "ui-switch-checkbox", type: "checkbox"}),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: this.state.checked ? "ui-switch checked" : "ui-switch"})
- )
- )
- ),
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-description-wrap scroller-wrap fade"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-description scroller"}, description)
- ),
- (website || source) && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("div", {className: "bda-footer"},
- modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("span", {className: "bda-links"},
- website && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("a", {className: "bda-link", href: website, target: "_blank"}, "Website"),
- website && source && " | ",
- source && modules__WEBPACK_IMPORTED_MODULE_1__["BDV2"].react.createElement("a", {className: "bda-link", href: source, target: "_blank"}, "Source")
- )
- )
- );
- }
-
- onChange() {
- this.setState({checked: !this.state.checked});
- modules__WEBPACK_IMPORTED_MODULE_1__["ThemeManager"].toggleTheme(this.props.theme.name);
- }
}
/***/ }),
@@ -5695,19 +7327,18 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return V2C_SettingsTitle; });
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
+class V2C_SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ } //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20
+
+
+ render() {
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h2", {
+ className: "ui-form-title h2 margin-reset margin-bottom-20 marginTop60-3PGbtK da-marginTop6"
+ }, this.props.text);
+ }
-class V2C_SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
- constructor(props) {
- super(props);
- }
-//h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20
- render() {
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "h2",
- {className: "ui-form-title h2 margin-reset margin-bottom-20 marginTop60-3PGbtK da-marginTop6"},
- this.props.text
- );
- }
}
/***/ }),
@@ -5726,35 +7357,42 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _scroller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scroller */ "./src/ui/scroller.js");
+class V2C_SidebarView extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
+ constructor(props) {
+ super(props);
+ }
-class V2C_SidebarView extends modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].reactComponent {
+ render() {
+ const {
+ sidebar,
+ content,
+ tools
+ } = this.props.children;
+ return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "standardSidebarView-3F1I7i ui-standard-sidebar-view"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "sidebarRegion-VFTUkN sidebar-region"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement(_scroller__WEBPACK_IMPORTED_MODULE_1__["default"], {
+ key: "sidebarScroller",
+ ref: "sidebarScroller",
+ sidebar: true,
+ fade: sidebar.fade || true,
+ dark: sidebar.dark || true,
+ children: sidebar.component
+ })), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "contentRegion-3nDuYy content-region"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "contentTransitionWrap-3hqOEW content-transition-wrap"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller",
+ ref: "contentScroller"
+ }, modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
+ className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"
+ }, content.component), tools.component)))));
+ }
- constructor(props) {
- super(props);
- }
-
- render() {
- const {sidebar, content, tools} = this.props.children;
- return modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "standardSidebarView-3F1I7i ui-standard-sidebar-view"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(
- "div",
- {className: "sidebarRegion-VFTUkN sidebar-region"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement(_scroller__WEBPACK_IMPORTED_MODULE_1__["default"], {key: "sidebarScroller", ref: "sidebarScroller", sidebar: true, fade: sidebar.fade || true, dark: sidebar.dark || true, children: sidebar.component})
- ),
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "contentRegion-3nDuYy content-region"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "contentTransitionWrap-3hqOEW content-transition-wrap"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller", ref: "contentScroller"},
- modules__WEBPACK_IMPORTED_MODULE_0__["BDV2"].react.createElement("div", {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"}, content.component),
- tools.component
- )
- )
- )
- )
- );
- }
}
/***/ }),
@@ -5777,7 +7415,6 @@ __webpack_require__.r(__webpack_exports__);
-
/***/ }),
/***/ "electron":
diff --git a/js/main.min.js b/js/main.min.js
index 92ce029d..a29aa5f0 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 o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,s),o.l=!0,o.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 o in e)s.d(n,o,function(t){return e[t]}.bind(null,o));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("events")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("request")},function(e,t,s){"use strict";s.r(t);var n={};s.r(n),s.d(n,"Menu",function(){return ue}),s.d(n,"Card",function(){return de}),s.d(n,"Layer",function(){return he});var o={"Custom css live update":{id:"bda-css-0",info:"",implemented:!0,hidden:!0,cat:"core"},"Custom css auto udpate":{id:"bda-css-1",info:"",implemented:!0,hidden:!0,cat:"core"},"BetterDiscord Blue":{id:"bda-gs-b",info:"Replace Discord blue with BD Blue",implemented:!1,hidden:!1,cat:"core"},"Public Servers":{id:"bda-gs-1",info:"Display public servers button",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Minimal Mode":{id:"bda-gs-2",info:"Hide elements and reduce the size of elements.",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Voice Mode":{id:"bda-gs-4",info:"Only show voice chat",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Hide Channels":{id:"bda-gs-3",info:"Hide channels in minimal mode",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Dark Mode":{id:"bda-gs-5",info:"Make certain elements dark by default(wip)",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Voice Disconnect":{id:"bda-dc-0",info:"Disconnect from voice server when closing Discord",implemented:!0,hidden:!1,cat:"core",category:"modules"},"24 Hour Timestamps":{id:"bda-gs-6",info:"Replace 12hr timestamps with proper ones",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Coloured Text":{id:"bda-gs-7",info:"Make text colour the same as role colour",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Normalize Classes":{id:"fork-ps-4",info:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Content Error Modal":{id:"fork-ps-1",info:"Shows a modal with plugin/theme errors",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Show Toasts":{id:"fork-ps-2",info:"Shows a small notification for important information",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Scroll To Settings":{id:"fork-ps-3",info:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Automatic Loading":{id:"fork-ps-5",info:"Automatically loads, reloads, and unloads plugins and themes",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Developer Mode":{id:"bda-gs-8",info:"Developer Mode",implemented:!0,hidden:!1,cat:"core",category:"developer settings"},"Copy Selector":{id:"fork-dm-1",info:'Adds a "Copy Selector" option to context menus when developer mode is active',implemented:!0,hidden:!1,cat:"core",category:"developer settings"},"Enable Transparency":{id:"fork-wp-1",info:"Enables the main window to be see-through (requires restart)",implemented:!0,hidden:!1,cat:"core",category:"window preferences"},"Window Frame":{id:"fork-wp-2",info:"Adds the native os window frame to the main window",implemented:!1,hidden:!0,cat:"core",category:"window preferences"},"Download Emotes":{id:"fork-es-3",info:"Download emotes when the cache is expired",implemented:!0,hidden:!1,cat:"emote"},"Twitch Emotes":{id:"bda-es-7",info:"Show Twitch emotes",implemented:!0,hidden:!1,cat:"emote"},"FrankerFaceZ Emotes":{id:"bda-es-1",info:"Show FrankerFaceZ Emotes",implemented:!0,hidden:!1,cat:"emote"},"BetterTTV Emotes":{id:"bda-es-2",info:"Show BetterTTV Emotes",implemented:!0,hidden:!1,cat:"emote"},"Emote Menu":{id:"bda-es-0",info:"Show Twitch/Favourite emotes in emote menu",implemented:!0,hidden:!1,cat:"emote"},"Emoji Menu":{id:"bda-es-9",info:"Show Discord emoji menu",implemented:!0,hidden:!1,cat:"emote"},"Emote Auto Capitalization":{id:"bda-es-4",info:"Autocapitalize emote commands",implemented:!0,hidden:!1,cat:"emote"},"Show Names":{id:"bda-es-6",info:"Show emote names on hover",implemented:!0,hidden:!1,cat:"emote"},"Show emote modifiers":{id:"bda-es-8",info:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)",implemented:!0,hidden:!1,cat:"emote"},"Animate On Hover":{id:"fork-es-2",info:"Only animate the emote modifiers on hover",implemented:!0,hidden:!1,cat:"emote"}},a={"bda-gs-1":!0,"bda-gs-2":!1,"bda-gs-3":!1,"bda-gs-4":!1,"bda-gs-5":!0,"bda-gs-6":!1,"bda-gs-7":!1,"bda-gs-8":!1,"bda-es-0":!0,"bda-es-1":!0,"bda-es-2":!0,"bda-es-4":!1,"bda-es-6":!0,"bda-es-7":!0,"bda-gs-b":!1,"bda-es-8":!0,"bda-dc-0":!1,"bda-css-0":!1,"bda-css-1":!1,"bda-es-9":!0,"fork-dm-1":!1,"fork-ps-1":!0,"fork-ps-2":!0,"fork-ps-3":!0,"fork-ps-4":!0,"fork-ps-5":!0,"fork-es-2":!1,"fork-es-3":!0,"fork-wp-1":!1,"fork-wp-2":!1},r={local:!1,localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"0.2.17"},i={},c={},l={},d={},u=[];class h{static get screenWidth(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get screenHeight(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}static stripBOM(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}static getTextArea(){return $(".channelTextArea-1LDbYG textarea")}static getInternalInstance(e){return e[Object.keys(e).find(e=>e.startsWith("__reactInternalInstance"))]||null}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static injectCss(e){$("",{type:"text/css",rel:"stylesheet",href:e}).appendTo($("head"))}static injectJs(e){return new Promise(t=>{$("",{type:"text/javascript",src:e,onload:t}).appendTo($("body"))})}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"")}static log(e,t){console.log(`%c[BandagedBD]%c [${e}]%c ${t}`,"color: #3a71c1; font-weight: 700;","color: #3a71c1;","")}static warn(e,t){console.warn(`%c[BandagedBD]%c [${e}]%c ${t}`,"color: #E8A400; font-weight: 700;","color: #E8A400;","")}static err(e,t,s){console.log(`%c[BandagedBD]%c [${e}]%c ${t}`,"color: red; font-weight: 700;","color: red;",""),s&&(console.groupCollapsed("%cError: "+s.message,"color: red;"),console.error(s.stack),console.groupEnd())}static escape(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e),!0}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){this.err("SuppressedError","Error occurred in "+t,e)}}}static monkeyPatch(e,t,s){const{before:n,after:o,instead:a,once:r=!1,silent:i=!1,force:c=!1}=s,l=s.displayName||e.displayName||e.name||e.constructor.displayName||e.constructor.name;if(i||console.log("patch",t,"of",l),!e[t]){if(!c)return console.error(t,"does not exist for",l);e[t]=function(){}}const d=e[t],u=()=>{i||console.log("unpatch",t,"of",l),e[t]=d};return e[t]=function(){const s={thisObject:this,methodArguments:arguments,cancelPatch:u,originalMethod:d,callOriginalMethod:()=>s.returnValue=s.originalMethod.apply(s.thisObject,s.methodArguments)};if(a){const n=h.suppressErrors(a,"`instead` callback of "+e[t].displayName)(s);void 0!==n&&(s.returnValue=n)}else n&&h.suppressErrors(n,"`before` callback of "+e[t].displayName)(s),s.callOriginalMethod(),o&&h.suppressErrors(o,"`after` callback of "+e[t].displayName)(s);return r&&u(),s.returnValue},e[t].__monkeyPatched=!0,e[t].__originalMethod||(e[t].__originalMethod=d),e[t].displayName="patched "+(e[t].displayName||t),u}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let o=0;o-1,c=r.some(t=>t.contains(e));(i||c)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){let s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?this.err("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}}const p=s(0),m=s(2),g=DiscordNative.globals.releaseChannel;var f=new class{constructor(){this.data={settings:{stable:{},canary:{},ptb:{}}},this.pluginData={}}initialize(){try{p.existsSync(this.BDFile)||p.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4));const e=require(this.BDFile);if(e.hasOwnProperty("settings")&&(this.data=e),!p.existsSync(this.settingsFile))return;let t=require(this.settingsFile);p.unlinkSync(this.settingsFile),t=t.hasOwnProperty("settings")?Object.assign({stable:{},canary:{},ptb:{}},{[g]:t}):Object.assign({stable:{},canary:{},ptb:{}},t),this.setBDData("settings",t)}catch(e){v.alert("Corrupt Storage","The bd storage has somehow become corrupt. You may either try to salvage the file or delete it then reload.")}}get BDFile(){return this._BDFile||(this._BDFile=m.resolve(r.dataPath,"bdstorage.json"))}get settingsFile(){return this._settingsFile||(this._settingsFile=m.resolve(r.dataPath,"bdsettings.json"))}getPluginFile(e){return m.resolve(r.dataPath,"plugins",e+".config.json")}getSettingGroup(e){return this.data.settings[g][e]||null}setSettingGroup(e,t){this.data.settings[g][e]=t,p.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4))}getBDData(e){return this.data[e]||""}setBDData(e,t){this.data[e]=t,p.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4))}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:p.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(p.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,p.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],p.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};const b={get React(){return y.react},get ReactDOM(){return y.reactDom},get WindowConfigFile(){if(this._windowConfigFile)return this._windowConfigFile;const e=s(1).remote.app.getAppPath(),t=s(2),n=t.resolve(e,"..","app","config.json"),o=s(0);return o.existsSync(t.resolve(e,"..","app"))?(o.existsSync(n)||o.writeFileSync(n,JSON.stringify({})),this._windowConfigFile=n):this._windowConfigFile=null},getAllWindowPreferences:function(){return"win32"!==r.os&&"darwin"!==r.os||!this.WindowConfigFile?{}:require(this.WindowConfigFile)},getWindowPreference:function(e){if(("win32"===r.os||"darwin"===r.os)&&this.WindowConfigFile)return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){if("win32"!==r.os&&"darwin"!==r.os||!this.WindowConfigFile)return;const n=s(0),o=this.getAllWindowPreferences();o[e]=t,delete s.c[this.WindowConfigFile],n.writeFileSync(this.WindowConfigFile,JSON.stringify(o,null,4))},injectCSS:function(e,t){$("head").append($("'),$("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){f.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}}class ie extends y.reactComponent{constructor(e){super(e),this.props.lines=0,this.setInitialState(),this.attach=this.attach.bind(this),this.detachedEditor=y.react.createElement(re,{attach:this.attach}),this.onClick=this.onClick.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.detach=this.detach.bind(this)}setInitialState(){this.state={detached:this.props.detached||y.editorDetached}}componentDidMount(){this.editor=ace.edit("bd-customcss-editor"),this.editor.setTheme("ace/theme/monokai"),this.editor.session.setMode("ace/mode/css"),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(14),this.editor.on("change",()=>{a["bda-css-0"]&&(this.saveCss(),this.updateCss())})}componentWillUnmount(){this.editor.destroy()}componentDidUpdate(e,t){t.detached&&!this.state.detached&&y.reactDom.unmountComponentAtNode(this.detachedRoot)}codeMirror(){}get options(){return{lineNumbers:!0,mode:"css",indentUnit:4,theme:"material",scrollbarStyle:"simple"}}get css(){const e=f.getBDData("bdcustomcss");let t="";return e&&""!==e&&(t=atob(e)),t}updateLineCount(){const e=this.refs.editor.value.split("\n").length;e!=this.props.lines&&(this.refs.lines.textContent=Array.from(new Array(e),(e,t)=>t+1).join(".\n")+".",this.props.lines=e)}render(){const e=this,{detached:t}=e.state;return y.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default",style:{padding:"60px 40px 0px"}},t&&y.react.createElement("div",{id:"editor-detached"},y.react.createElement(Y,{text:"Custom CSS Editor"}),y.react.createElement("h3",null,"Editor Detached"),y.react.createElement("button",{className:"btn btn-primary",onClick:()=>{e.attach()}},"Attach")),!t&&y.react.createElement("div",null,y.react.createElement(Y,{text:"Custom CSS Editor"}),y.react.createElement("div",{className:"editor-wrapper"},y.react.createElement("div",{id:"bd-customcss-editor",className:"editor",ref:"editor"},e.css)),y.react.createElement("div",{id:"bd-customcss-attach-controls"},y.react.createElement("ul",{className:"checkbox-group"},y.react.createElement(ae,{id:"live-update",text:"Live Update",onChange:this.onChange,checked:a["bda-css-0"]})),y.react.createElement("div",{id:"bd-customcss-detach-controls-button"},y.react.createElement("button",{style:{borderRadius:"3px 0 0 3px",borderRight:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("update")}},"Update"),y.react.createElement("button",{style:{borderRadius:"0",borderLeft:"1px solid #2d2d2d",borderRight:"1px solid #2d2d2d"},className:"btn btn-primary",onClick:()=>{e.onClick("save")}},"Save"),y.react.createElement("button",{style:{borderRadius:"0 3px 3px 0",borderLeft:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("detach")}},"Detach"),y.react.createElement("span",{style:{fontSize:"10px",marginLeft:"5px"}},"Unsaved changes are lost on detach"),y.react.createElement("div",{className:"help-text"},"Press ",y.react.createElement("code",{className:"inline"},"ctrl"),"+",y.react.createElement("span",{className:"inline"},",")," with the editor focused to access the editor's settings.")))))}onClick(e){switch(e){case"update":this.updateCss();break;case"save":this.saveCss();break;case"detach":this.detach()}}onChange(e,t){switch(e){case"live-update":a["bda-css-0"]=t,we.saveSettings()}}updateCss(){0==$("#customcss").length&&$("head").append(''),$("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){f.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}detach(){this.setState({detached:!0});const e=this.detachedRoot;e?y.reactDom.render(this.detachedEditor,e):console.log("FAILED TO INJECT ROOT: .app")}get detachedRoot(){const e=$("#bd-customcss-detach-container");return e.length?e[0]:this.injectDetachedRoot()?this.detachedRoot:null}injectDetachedRoot(){return!!$(".app, .app-2rEoOp").length&&($("",{id:"bd-customcss-detach-container"}).insertAfter($(".app, .app-2rEoOp")),!0)}attach(){this.setState({detached:!1})}}class ce{constructor(e){this.sideBarOnClick=this.sideBarOnClick.bind(this),this.onChange=e.onChange,this.sidebar=new z(this.sideBarOnClick)}get root(){const e=$("#bd-settingspane-container");return e.length?e[0]:this.injectRoot()?this.root:null}injectRoot(){if(!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length)return!1;const e=$("",{class:"contentRegion-3nDuYy content-region",id:"bd-settingspane-container"});return $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(e),h.onRemoved(e[0],()=>{y.reactDom.unmountComponentAtNode(e[0])}),!0}get coreSettings(){const e=this.getSettings("core");return[...new Set(e.map(e=>e.category))].map(t=>({title:t,settings:e.filter(e=>e.category==t)}))}get emoteSettings(){return this.getSettings("emote")}getSettings(e){return Object.keys(o).reduce((t,s)=>{const n=o[s];return n.cat===e&&n.implemented&&!n.hidden&&(n.text=s,t.push(n)),t},[])}sideBarOnClick(e){const t=this;switch($(".contentRegion-3nDuYy, .content-region").first().hide(),$(t.root).show(),e){case"core":t.renderCoreSettings();break;case"emotes":t.renderEmoteSettings();break;case"customcss":t.renderCustomCssEditor();break;case"plugins":t.renderPluginPane();break;case"themes":t.renderThemePane()}}renderSidebar(){const e=this;$("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel",()=>{y.reactDom.unmountComponentAtNode(e.root),$(e.root).hide(),$(".contentRegion-3nDuYy, .content-region").first().show()}),e.sidebar.render()}get coreComponent(){return y.react.createElement(U,{contentColumn:!0,fade:!0,dark:!0,children:[y.react.createElement(K,{key:"cspanel",onChange:this.onChange,sections:this.coreSettings}),y.react.createElement(ee,{key:"tools"})]})}get emoteComponent(){return y.react.createElement(U,{contentColumn:!0,fade:!0,dark:!0,children:[y.react.createElement(te,{key:"espanel",title:"Emote Settings",onChange:this.onChange,settings:this.emoteSettings,button:{title:"Clear Emote Cache",onClick:()=>{be.clearEmoteData(),be.init(),R.init()}}}),y.react.createElement(ee,{key:"tools"})]})}get customCssComponent(){return y.react.createElement(U,{contentColumn:!0,fade:!0,dark:!0,children:[y.react.createElement(ie,{key:"csseditor"}),y.react.createElement(ee,{key:"tools"})]})}contentComponent(e){const t="plugins"==e?this.pluginsComponent:this.themesComponent,s=e.replace("s",""),n=this;return y.react.createElement(class extends y.react.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this)}componentDidMount(){E.on(`${s}-reloaded`,this.onChange),E.on(`${s}-loaded`,this.onChange),E.on(`${s}-unloaded`,this.onChange)}componentWillUnmount(){E.off(`${s}-reloaded`,this.onChange),E.off(`${s}-loaded`,this.onChange),E.off(`${s}-unloaded`,this.onChange)}onChange(){n.sideBarOnClick(e)}render(){return t}})}get pluginsComponent(){const e=Object.keys(d).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(y.react.createElement(ne,{key:t,plugin:d[t].plugin})),e),[]),t=y.react.createElement(H,{key:"plugin-list",className:"bda-slist",children:e}),n=!a["fork-ps-5"]&&y.react.createElement(se,{className:"bd-reload-header",size:"18px",onClick:async()=>{S.updatePluginList(),this.sideBarOnClick("plugins")}}),o=y.react.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{s(1).shell.openItem(B.pluginsFolder)}},"Open Plugin Folder"),r=y.react.createElement(J,{key:"pcolumn",title:"Plugins",children:[n,o,t]});return y.react.createElement(U,{contentColumn:!0,fade:!0,dark:!0,children:[r,y.react.createElement(ee,{key:"tools"})]})}get themesComponent(){const e=Object.keys(l).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(y.react.createElement(oe,{key:t,theme:l[t]})),e),[]),t=y.react.createElement(H,{key:"theme-list",className:"bda-slist",children:e}),n=!a["fork-ps-5"]&&y.react.createElement(se,{className:"bd-reload-header",size:"18px",onClick:async()=>{D.updateThemeList(),this.sideBarOnClick("themes")}}),o=y.react.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{s(1).shell.openItem(B.themesFolder)}},"Open Theme Folder"),r=y.react.createElement(J,{key:"tcolumn",title:"Themes",children:[n,o,t]});return y.react.createElement(U,{contentColumn:!0,fade:!0,dark:!0,children:[r,y.react.createElement(ee,{key:"tools"})]})}renderCoreSettings(){const e=this.root;e?y.reactDom.render(this.coreComponent,e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderEmoteSettings(){const e=this.root;e?y.reactDom.render(this.emoteComponent,e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderCustomCssEditor(){const e=this.root;e?y.reactDom.render(this.customCssComponent,e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderPluginPane(){const e=this.root;e?y.reactDom.render(this.contentComponent("plugins"),e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderThemePane(){const e=this.root;e?y.reactDom.render(this.contentComponent("themes"),e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}}class le extends y.reactComponent{constructor(e){super(e)}render(){const{sidebar:e,content:t,tools:s}=this.props.children;return y.react.createElement("div",{className:"standardSidebarView-3F1I7i ui-standard-sidebar-view"},y.react.createElement("div",{className:"sidebarRegion-VFTUkN sidebar-region"},y.react.createElement(U,{key:"sidebarScroller",ref:"sidebarScroller",sidebar:!0,fade:e.fade||!0,dark:e.dark||!0,children:e.component})),y.react.createElement("div",{className:"contentRegion-3nDuYy content-region"},y.react.createElement("div",{className:"contentTransitionWrap-3hqOEW content-transition-wrap"},y.react.createElement("div",{className:"scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},y.react.createElement("div",{className:"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller",ref:"contentScroller"},y.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},t.component),s.component)))))}}class de extends y.reactComponent{constructor(e){super(e),this.props.server.iconUrl||(this.props.server.iconUrl=this.props.fallback),this.state={imageError:!1,joined:this.props.guildList.includes(this.props.server.identifier)}}render(){const{server:e}=this.props;return y.react.createElement("div",{className:`card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${e.pinned?" bd-server-card-pinned":""}`},y.react.createElement("img",{ref:"img",className:"bd-server-image",src:e.iconUrl,onError:this.handleError.bind(this)}),y.react.createElement("div",{className:"flexChild-faoVW3 bd-server-content"},y.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},y.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},e.name),y.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},e.members," Members")),y.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},y.react.createElement("div",{className:"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},y.react.createElement("div",{className:"scroller-2FKFPG scroller bd-server-description"},e.description))),y.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},y.react.createElement("div",{className:"flexChild-faoVW3 bd-server-tags",style:{flex:"1 1 auto"}},e.categories.join(", ")),this.state.joined&&y.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#3ac15c"}},y.react.createElement("div",{className:"ui-button-contents"},"Joined")),e.error&&y.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#c13a3a"}},y.react.createElement("div",{className:"ui-button-contents"},"Error")),!e.error&&!this.state.joined&&y.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",style:{minHeight:"12px",marginTop:"4px"},onClick:()=>{this.join()}},y.react.createElement("div",{className:"ui-button-contents"},"Join")))))}handleError(){this.props.server.iconUrl=this.props.fallback,this.setState({imageError:!0})}join(){this.props.join(this)}}class ue extends y.reactComponent{constructor(e){super(e),this.setInitialState(),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),this.GuildStore=y.WebpackModules.findByUniqueProperties(["getGuilds"]),this.AvatarDefaults=y.WebpackModules.findByUniqueProperties(["getUserAvatarURL","DEFAULT_AVATARS"]),this.InviteActions=y.WebpackModules.findByUniqueProperties(["acceptInvite"]),this.SortedGuildStore=y.WebpackModules.findByUniqueProperties(["getSortedGuilds"])}componentDidMount(){this.checkConnection()}setInitialState(){this.state={selectedCategory:-1,title:"Loading...",loading:!0,servers:[],next:null,connection:{state:0,user:null}}}close(){y.reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId))}search(e,t){const s=this;$.ajax({method:"GET",url:`${s.endPoint}${e}${e?"&schema=new":"?schema=new"}`,success:e=>{let n=e.results.reduce((e,t)=>(t.joined=!1,e.push(t),e),[]);t||(n=s.state.servers.concat(n));let o=e.size+e.from;e.next=`?from=${o}`,s.state.term&&(e.next+=`&term=${s.state.term}`),s.state.selectedCategory&&(e.next+=`&category=${s.categoryButtons[s.state.selectedCategory]}`),o>=e.total&&(o=e.total,e.next=null);let a=`Showing 1-${o} of ${e.total} results in ${s.categoryButtons[s.state.selectedCategory]}`;s.state.term&&(a+=` for ${s.state.term}`),s.setState({loading:!1,title:a,servers:n,next:e.next}),t&&(s.refs.sbv.refs.contentScroller.scrollTop=0)},error:()=>{s.setState({loading:!1,title:"Failed to load servers. Check console for details"})}})}join(e){if(e.props.pinned)return this.InviteActions.acceptInvite(e.props.invite_code);$.ajax({method:"GET",url:`${this.joinEndPoint}/${e.props.server.identifier}`,headers:{Accept:"application/json;","Content-Type":"application/json;","x-discord-token":this.state.connection.user.accessToken},crossDomain:!0,xhrFields:{withCredentials:!0},success:()=>{e.setState({joined:!0})}})}connect(){const e=this.windowOptions;e.x=Math.round(window.screenX+window.innerWidth/2-e.width/2),e.y=Math.round(window.screenY+window.innerHeight/2-e.height/2),this.joinWindow=new(window.require("electron").remote.BrowserWindow)(e);this.joinWindow.webContents.on("did-navigate",(e,t)=>{"https://auth.discordservers.com/info"==t&&(this.joinWindow.close(),this.checkConnection())}),this.joinWindow.loadURL("https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=https://auth.discordservers.com/info")}get windowOptions(){return{width:500,height:550,backgroundColor:"#282b30",show:!0,resizable:!1,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!1,webPreferences:{nodeIntegration:!1}}}get bdServer(){const e=this.SortedGuildStore.guildPositions,t=this.AvatarDefaults.DEFAULT_AVATARS;return y.react.createElement(de,{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:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0},pinned:!0,join:this.join,guildList:e,fallback:t[Math.floor(5*Math.random())]})}get endPoint(){return"https://search.discordservers.com"}get joinEndPoint(){return"https://j.discordservers.com"}get connectEndPoint(){return"https://join.discordservers.com/connect"}checkConnection(){const e=this;try{$.ajax({method:"GET",url:"https://auth.discordservers.com/info",headers:{Accept:"application/json;","Content-Type":"application/json;"},crossDomain:!0,xhrFields:{withCredentials:!0},success:t=>{e.setState({selectedCategory:0,connection:{state:2,user:t}}),e.search("",!0)},error:()=>{e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}})}catch(t){e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}}render(){return y.react.createElement(le,{ref:"sbv",children:this.component})}get component(){return{sidebar:{component:this.sidebar},content:{component:this.content},tools:{component:y.react.createElement(ee,{key:"pt",ref:"tools",onClick:this.close})}}}get sidebar(){return y.react.createElement("div",{className:"sidebar",key:"ps"},y.react.createElement("div",{className:"ui-tab-bar SIDE"},y.react.createElement("div",{className:"ui-tab-bar-header",style:{fontSize:"16px"}},"Public Servers"),y.react.createElement(_.Separator,null),this.searchInput,y.react.createElement(_.Separator,null),y.react.createElement(_.Header,{text:"Categories"}),this.categoryButtons.map((e,t)=>y.react.createElement(_.Item,{id:t,onClick:this.changeCategory,key:t,text:e,selected:this.state.selectedCategory===t})),y.react.createElement(_.Separator,null),this.footer,this.connection))}get searchInput(){return y.react.createElement("div",{className:"ui-form-item"},y.react.createElement("div",{className:"ui-text-input flex-vertical",style:{width:"172px",marginLeft:"10px"}},y.react.createElement("input",{ref:"searchinput",onKeyDown:this.searchKeyDown,onChange:()=>{},type:"text",className:"input default",placeholder:"Search...",maxLength:"50"})))}searchKeyDown(e){const t=this;if(t.state.loading||13!==e.which)return;t.setState({loading:!0,title:"Loading...",term:e.target.value});let s=`?term=${e.target.value}`;0!==t.state.selectedCategory&&(s+=`&category=${t.categoryButtons[t.state.selectedCategory]}`),t.search(s,!0)}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(e){const t=this;t.state.loading||(t.refs.searchinput.value="",t.setState({loading:!0,selectedCategory:e,title:"Loading...",term:null}),0!==e?t.search(`?category=${t.categoryButtons[e]}`,!0):t.search("",!0))}get content(){const e=this,t=this.SortedGuildStore.guildPositions,s=this.AvatarDefaults.DEFAULT_AVATARS;return 1===e.state.connection.state?e.notConnected:[y.react.createElement("div",{ref:"content",key:"pc",className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},y.react.createElement(Y,{text:e.state.title}),e.bdServer,e.state.servers.map(n=>y.react.createElement(de,{key:n.identifier,server:n,join:e.join,guildList:t,fallback:s[Math.floor(5*Math.random())]})),e.state.next&&y.react.createElement("button",{type:"button",onClick:()=>{e.state.loading||(e.setState({loading:!0}),e.search(e.state.next,!1))},className:"ui-button filled brand small grow",style:{width:"100%",marginTop:"10px",marginBottom:"10px"}},y.react.createElement("div",{className:"ui-button-contents"},e.state.loading?"Loading":"Load More")),e.state.servers.length>0&&y.react.createElement(Y,{text:e.state.title}))]}get notConnected(){return[y.react.createElement("div",{key:"ncc",ref:"content",className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},y.react.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},"Not connected to discordservers.com!",y.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"}},y.react.createElement("div",{className:"ui-button-contents"},"Connect"))),this.bdServer)]}get footer(){return y.react.createElement("div",{className:"ui-tab-bar-header"},y.react.createElement("a",{href:"https://discordservers.com",target:"_blank"},"Discordservers.com"))}get connection(){const{connection:e}=this.state;return 2!==e.state?y.react.createElement("span",null):y.react.createElement("span",null,y.react.createElement(_.Separator,null),y.react.createElement("span",{style:{color:"#b9bbbe",fontSize:"10px",marginLeft:"10px"}},"Connected as: ",`${e.user.username}#${e.user.discriminator}`),y.react.createElement("div",{style:{padding:"5px 10px 0 10px"}},y.react.createElement("button",{style:{width:"100%",minHeight:"20px"},type:"button",className:"ui-button filled brand small grow"},y.react.createElement("div",{className:"ui-button-contents",onClick:this.connect},"Reconnect"))))}}class he extends y.reactComponent{constructor(e){super(e)}componentDidMount(){$(window).on(`keyup.${this.props.id}`,e=>{27===e.which&&y.reactDom.unmountComponentAtNode(this.refs.root.parentNode)}),$(`#${this.props.id}`).animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.id}`).css("opacity","").css("transform","")}})}componentWillUnmount(){$(window).off(`keyup.${this.props.id}`),$(`#${this.props.id}`).animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.rootId}`).remove()}}),$('[class*="layer-"]').removeClass("publicServersOpen").animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200,done:()=>{$('[class*="layer-"]').css("opacity","").css("transform","")}})}componentWillMount(){$('[class*="layer-"]').addClass("publicServersOpen").animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200})}render(){return y.react.createElement("div",{className:"layer bd-layer layer-3QrUeG",id:this.props.id,ref:"root",style:{opacity:0,transform:"scale(1.1) translateZ(0px)"}},this.props.children)}}var pe=new class{initialize(){const e=y.guildClasses.wrapper.split(" ")[0];$(`.${e} .scroller-2FKFPG >:first-child`).after(this.button)}get component(){return y.react.createElement(n.Layer,{rootId:"pubslayerroot",id:"pubslayer",children:y.react.createElement(n.Menu,{rootId:"pubslayerroot"})})}get root(){const e=document.getElementById("pubslayerroot");return e||(this.injectRoot()?this.root:null)}injectRoot(){return!!$(".layers, .layers-3iHuyZ").length&&($(".layers, .layers-3iHuyZ").append($("",{id:"pubslayerroot"})),!0)}render(){const e=this.root;e?y.reactDom.render(this.component,e):console.log("FAILED TO LOCATE ROOT: .layers")}get button(){return $("",{class:y.guildClasses.listItem,id:"bd-pub-li",style:a["bda-gs-1"]?"":"display: none;"}).append($("",{class:"wrapper-25eVIn "+y.guildClasses.circleButtonMask,text:"public",id:"bd-pub-button",click:()=>{this.render()}}))}},me=new class{enable(){$(".scroller.guild-channels ul").first().css("display","none"),$(".scroller.guild-channels header").first().css("display","none"),$(".app.flex-vertical, .app-2rEoOp").first().css("overflow","hidden"),$(".chat-3bRxxu").first().css("visibility","hidden").css("min-width","0px"),$(".flex-vertical.channels-wrap").first().css("flex-grow","100000"),$(".guild-header .btn.btn-hamburger").first().css("visibility","hidden")}disable(){$(".scroller.guild-channels ul").first().css("display",""),$(".scroller.guild-channels header").first().css("display",""),$(".app.flex-vertical, .app-2rEoOp").first().css("overflow",""),$(".chat-3bRxxu").first().css("visibility","").css("min-width",""),$(".flex-vertical.channels-wrap").first().css("flex-grow",""),$(".guild-header .btn.btn-hamburger").first().css("visibility","")}};class ge extends y.reactComponent{constructor(e){super(e);const t=!!(R&&R.favoriteEmotes&&R.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 a["fork-es-2"]}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&&R.favoriteEmotes[this.label]?this.setState({isFavorite:!0}):this.state.isFavorite&&!R.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 y.react.createElement(y.TooltipWrapper,{color:"black",position:"top",text:this.label,delay:750},y.react.createElement("div",{className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},y.react.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}),y.react.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:"Favorite!",type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation(),this.state.isFavorite?(delete R.favoriteEmotes[this.label],R.updateFavorites()):R.favorite(this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}})))}}function fe(){Object.defineProperty(this,"categories",{get:function(){const e=[];for(const t in window.bdEmoteSettingIDs)a[window.bdEmoteSettingIDs[t]]&&e.push(t);return e}})}window.emotesFfz={},window.emotesBTTV={},window.emotesBTTV2={},window.emotesTwitch={},window.subEmotesTwitch={},window.bdEmotes={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}},window.bdEmoteSettingIDs={TwitchGlobal:"bda-es-7",TwitchSubscriber:"bda-es-7",BTTV:"bda-es-2",FrankerFaceZ:"bda-es-1",BTTV2:"bda-es-2"},fe.prototype.init=async function(){this.modifiers=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"],this.overrides=["twitch","bttv","ffz"];const e={TwitchGlobal:{url:"https://twitchemotes.com/api_cache/v3/global.json",backup:"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_twitch_global.json",variable:"TwitchGlobal",oldVariable:"emotesTwitch",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",oldVariable:"subEmotesTwitch",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",oldVariable:"emotesFfz",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",oldVariable:"emotesBTTV",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]}};for(await this.getBlacklist(),await this.loadEmoteData(e);!y.MessageContentComponent;)await new Promise(e=>setTimeout(e,100));this.cancelEmoteRender||(this.cancelEmoteRender=h.monkeyPatch(y.MessageContentComponent.prototype,"render",{after:({returnValue:e})=>{h.monkeyPatch(e.props,"children",{silent:!0,after:({returnValue:e})=>{if(0==this.categories.length)return;const t=e.props.children[1];if(!t.props.children)return;const s=t.props.children[1];if(s&&s.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 s)"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))}}})}}))},fe.prototype.disable=function(){this.disableAutoCapitalize(),this.cancelEmoteRender||(this.cancelEmoteRender(),this.cancelEmoteRender=null)},fe.prototype.clearEmoteData=async function(){const e=s(0),t=r.dataPath+"emote_data.json";e.existsSync(t)&&e.unlinkSync(t),f.setBDData("emoteCacheDate",(new Date).toJSON()),window.bdEmotes={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}}},fe.prototype.goBack=async function(e){for(const t in e)for(const s in window.bdEmotes[e[t].variable])window[e[t].oldVariable][s]=e[t].getOldData(window.bdEmotes[e[t].variable][s],s)},fe.prototype.isCacheValid=function(){const e=f.getBDData("emoteCacheDays")||f.setBDData("emoteCacheDays",7)||7,t=new Date(f.getBDData("emoteCacheDate")||null),s=new Date;return!(Math.round(Math.abs((s.getTime()-t.getTime())/864e5))>e)||(f.setBDData("emoteCacheDate",s.toJSON()),!1)},fe.prototype.loadEmoteData=async function(e){const t=s(0),n=r.dataPath+"emote_data.json";if(t.existsSync(n)&&this.isCacheValid()){a["fork-ps-2"]&&v.showToast("Loading emotes from cache.",{type:"info"}),h.log("Emotes","Loading emotes from local cache.");const s=await new Promise(e=>{t.readFile(n,"utf8",(t,s)=>{h.log("Emotes","Emotes loaded from cache."),t&&(s={}),e(s)})});let o=h.testJSON(s);o&&(window.bdEmotes=JSON.parse(s));for(const t in e)o=Object.keys(window.bdEmotes[e[t].variable]).length>0;if(o)return void(a["fork-ps-2"]&&v.showToast("Emotes successfully loaded.",{type:"success"}));h.log("Emotes","Cache was corrupt, downloading..."),t.unlinkSync(n)}if(a["fork-es-3"]){a["fork-ps-2"]&&v.showToast("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]);window.bdEmotes[e[t].variable]=s}a["fork-ps-2"]&&v.showToast("All emotes successfully downloaded.",{type:"success"});try{t.writeFileSync(n,JSON.stringify(window.bdEmotes),"utf8")}catch(e){h.err("Emotes","Could not save emote data.",e)}}},fe.prototype.downloadEmotes=function(e){const t=s(5),n={url:e.url,timeout:e.timeout?e.timeout:5e3};return h.log("Emotes",`Downloading: ${e.variable} (${e.url})`),new Promise((s,o)=>{t(n,(t,n,a)=>{if(t)return h.err("Emotes","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))):o({});let r={};try{r=JSON.parse(a)}catch(t){return h.err("Emotes","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))):o({})}"function"==typeof e.parser&&(r=e.parser(r));for(const t in r)t.length<4||u.includes(t)?delete r[t]:r[t]=e.getEmoteURL(r[t]);s(r),h.log("Emotes","Downloaded: "+e.variable)})})},fe.prototype.getBlacklist=function(){return new Promise(e=>{$.getJSON("https://rauenzi.github.io/BetterDiscordApp/data/emotefilter.json",function(t){e(u.push(...t.blacklist))})})},fe.prototype.autoCapitalize=function(){a["bda-es-4"]&&!this.autoCapitalizeActive&&($("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&&h.insertText(h.getTextArea()[0],e.replace(t,s))}}),this.autoCapitalizeActive=!0)},fe.prototype.capitalize=function(e){const t=window.bdEmotes.TwitchGlobal;for(const s in t)if(t.hasOwnProperty(s)&&e==(s+"").toLowerCase())return s},fe.prototype.disableAutoCapitalize=function(){this.autoCapitalizeActive=!1,$("body").off(".bdac")};var be=new fe,ve=new class{constructor(){this.renderer=new ce({onChange:this.updateSettings.bind(this)})}renderSidebar(){this.renderer.renderSidebar()}updateSettings(e,t){a[e]=t,"bda-es-0"==e&&(t?$("#twitchcord-button-container").show():$("#twitchcord-button-container").hide()),"bda-gs-2"==e&&(t?$("body").addClass("bd-minimal"):$("body").removeClass("bd-minimal")),"bda-gs-3"==e&&(t?$("body").addClass("bd-minimal-chan"):$("body").removeClass("bd-minimal-chan")),"bda-gs-1"==e&&(t?$("#bd-pub-li").show():$("#bd-pub-li").hide()),"bda-gs-4"==e&&(t?me.enable():me.disable()),"bda-gs-5"==e&&(t?$("#app-mount").addClass("bda-dark"):$("#app-mount").removeClass("bda-dark")),t&&"bda-gs-6"==e&&we.inject24Hour(),"bda-gs-7"==e&&(t?we.injectColoredText():we.removeColoredText()),"bda-es-4"==e&&(t?be.autoCapitalize():be.disableAutoCapitalize()),"fork-ps-4"==e&&(t?C.start():C.stop()),"fork-ps-5"==e&&(t?(B.watchContent("plugin"),B.watchContent("theme")):(B.unwatchContent("plugin"),B.unwatchContent("theme"))),"fork-wp-1"==e&&(v.setWindowPreference("transparent",t),t?v.setWindowPreference("backgroundColor",null):v.setWindowPreference("backgroundColor","#2f3136")),"bda-gs-8"==e&&(t?I.enable(a["fork-dm-1"]):I.disable()),we.saveSettings()}initializeSettings(){a["bda-es-0"]&&$("#twitchcord-button-container").show(),a["bda-gs-2"]&&$("body").addClass("bd-minimal"),a["bda-gs-3"]&&$("body").addClass("bd-minimal-chan"),a["bda-gs-1"]&&$("#bd-pub-li").show(),a["bda-gs-4"]&&me.enable(),a["bda-gs-5"]&&$("#app-mount").addClass("bda-dark"),a["bda-gs-6"]&&we.inject24Hour(),a["bda-gs-7"]&&we.injectColoredText(),a["bda-es-4"]&&be.autoCapitalize(),a["fork-ps-4"]&&C.start(),a["fork-ps-5"]&&(B.watchContent("plugin"),B.watchContent("theme")),a["bda-gs-8"]&&I.enable(a["fork-dm-1"]),we.saveSettings()}};function ye(){}ye.prototype.setConfig=function(e){Object.assign(r,e)},ye.prototype.init=async function(){if(r.version
Please download the latest version from GitHub");const e=r.updater?r.updater.LatestVersion:r.latestVersion;e>r.version&&this.alert("Update Available",`\n An update for BandagedBD is available (${e})! Please Reinstall!
\n Download Installer\n `),h.log("Startup","Initializing Settings"),this.initSettings(),h.log("Startup","Initializing EmoteModule"),window.emotePromise=be.init().then(()=>{be.initialized=!0,h.log("Startup","Initializing QuickEmoteMenu"),R.init()}),this.injectExternals(),await this.checkForGuilds(),y.initialize(),h.log("Startup","Updating Settings"),ve.initializeSettings(),h.log("Startup","Loading Plugins");const t=S.loadPlugins();h.log("Startup","Loading Themes");const s=D.loadThemes();$("#customcss").detach().appendTo(document.head),window.addEventListener("beforeunload",function(){a["bda-dc-0"]&&document.querySelector(".btn.btn-disconnect").click()}),pe.initialize(),be.autoCapitalize(),h.log("Startup","Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),h.log("Startup","Initializing Main Observer"),this.initObserver(),a["fork-ps-1"]&&(h.log("Startup","Collecting Startup Errors"),this.showContentErrors({plugins:t,themes:s}))},ye.prototype.checkForGuilds=function(){return new Promise(e=>{const t=function(){const s=y.guildClasses.wrapper.split(" ")[0],n=y.guildClasses.listItem.split(" ")[0],o=y.guildClasses.blobContainer.split(" ")[0];if(document.querySelectorAll(`.${s} .${n} .${o}`).length>0)return e(r.deferLoaded=!0);setTimeout(t,100)};$(document).ready(function(){setTimeout(t,100)})})},ye.prototype.injectExternals=async function(){await h.injectJs("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js"),window.require.original&&(window.require=window.require.original)},ye.prototype.initSettings=function(){if(f.initialize(),!f.getSettingGroup("settings"))return this.saveSettings();const e=this.loadSettings();$(''),$("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){C.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}}class ve extends m.React.Component{constructor(e){super(e),this.props.lines=0,this.setInitialState(),this.attach=this.attach.bind(this),this.detachedEditor=m.React.createElement(ye,{attach:this.attach}),this.onClick=this.onClick.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.detach=this.detach.bind(this)}setInitialState(){this.state={detached:this.props.detached||Q.editorDetached}}componentDidMount(){this.editor=ace.edit("bd-customcss-editor"),this.editor.setTheme("ace/theme/monokai"),this.editor.session.setMode("ace/mode/css"),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(14),this.editor.on("change",()=>{r["bda-css-0"]&&(this.saveCss(),this.updateCss())})}componentWillUnmount(){this.editor.destroy()}componentDidUpdate(e,t){t.detached&&!this.state.detached&&m.ReactDOM.unmountComponentAtNode(this.detachedRoot)}codeMirror(){}get options(){return{lineNumbers:!0,mode:"css",indentUnit:4,theme:"material",scrollbarStyle:"simple"}}get css(){const e=C.getBDData("bdcustomcss");let t="";return e&&""!==e&&(t=atob(e)),t}updateLineCount(){const e=this.refs.editor.value.split("\n").length;e!=this.props.lines&&(this.refs.lines.textContent=Array.from(new Array(e),(e,t)=>t+1).join(".\n")+".",this.props.lines=e)}render(){const e=this,{detached:t}=e.state;return m.React.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default",style:{padding:"60px 40px 0px"}},t&&m.React.createElement("div",{id:"editor-detached"},m.React.createElement(ae,{text:"Custom CSS Editor"}),m.React.createElement("h3",null,"Editor Detached"),m.React.createElement("button",{className:"btn btn-primary",onClick:()=>{e.attach()}},"Attach")),!t&&m.React.createElement("div",null,m.React.createElement(ae,{text:"Custom CSS Editor"}),m.React.createElement("div",{className:"editor-wrapper"},m.React.createElement("div",{id:"bd-customcss-editor",className:"editor",ref:"editor"},e.css)),m.React.createElement("div",{id:"bd-customcss-attach-controls"},m.React.createElement("ul",{className:"checkbox-group"},m.React.createElement(be,{id:"live-update",text:"Live Update",onChange:this.onChange,checked:r["bda-css-0"]})),m.React.createElement("div",{id:"bd-customcss-detach-controls-button"},m.React.createElement("button",{style:{borderRadius:"3px 0 0 3px",borderRight:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("update")}},"Update"),m.React.createElement("button",{style:{borderRadius:"0",borderLeft:"1px solid #2d2d2d",borderRight:"1px solid #2d2d2d"},className:"btn btn-primary",onClick:()=>{e.onClick("save")}},"Save"),m.React.createElement("button",{style:{borderRadius:"0 3px 3px 0",borderLeft:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("detach")}},"Detach"),m.React.createElement("span",{style:{fontSize:"10px",marginLeft:"5px"}},"Unsaved changes are lost on detach"),m.React.createElement("div",{className:"help-text"},"Press ",m.React.createElement("code",{className:"inline"},"ctrl"),"+",m.React.createElement("span",{className:"inline"},",")," with the editor focused to access the editor's settings.")))))}onClick(e){switch(e){case"update":this.updateCss();break;case"save":this.saveCss();break;case"detach":this.detach()}}onChange(e,t){switch(e){case"live-update":r["bda-css-0"]=t,Ne.saveSettings()}}updateCss(){0==$("#customcss").length&&$("head").append(''),$("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){C.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}detach(){this.setState({detached:!0});const e=this.detachedRoot;e?m.ReactDOM.render(this.detachedEditor,e):console.log("FAILED TO INJECT ROOT: .app")}get detachedRoot(){const e=$("#bd-customcss-detach-container");return e.length?e[0]:this.injectDetachedRoot()?this.detachedRoot:null}injectDetachedRoot(){return!!$(".app, .app-2rEoOp").length&&($("",{id:"bd-customcss-detach-container"}).insertAfter($(".app, .app-2rEoOp")),!0)}attach(){this.setState({detached:!1})}}class Ce{constructor(e){this.sideBarOnClick=this.sideBarOnClick.bind(this),this.onChange=e.onChange,this.sidebar=new ne(this.sideBarOnClick)}get root(){const e=$("#bd-settingspane-container");return e.length?e[0]:this.injectRoot()?this.root:null}injectRoot(){if(!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length)return!1;const e=$("",{class:"contentRegion-3nDuYy content-region",id:"bd-settingspane-container"});return $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(e),h.onRemoved(e[0],()=>{Z.unmountComponentAtNode(e[0])}),!0}get coreSettings(){const e=this.getSettings("core");return[...new Set(e.map(e=>e.category))].map(t=>({title:t,settings:e.filter(e=>e.category==t)}))}get emoteSettings(){return this.getSettings("emote")}getSettings(e){return Object.keys(o).reduce((t,s)=>{const n=o[s];return n.cat===e&&n.implemented&&!n.hidden&&(n.text=s,t.push(n)),t},[])}sideBarOnClick(e){const t=this;switch($(".contentRegion-3nDuYy, .content-region").first().hide(),$(t.root).show(),e){case"core":t.renderCoreSettings();break;case"emotes":t.renderEmoteSettings();break;case"customcss":t.renderCustomCssEditor();break;case"plugins":t.renderPluginPane();break;case"themes":t.renderThemePane()}}renderSidebar(){const e=this;$("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel",()=>{Z.unmountComponentAtNode(e.root),$(e.root).hide(),$(".contentRegion-3nDuYy, .content-region").first().show()}),e.sidebar.render()}get coreComponent(){return J.createElement(oe,{contentColumn:!0,fade:!0,dark:!0,children:[J.createElement(de,{key:"cspanel",onChange:this.onChange,sections:this.coreSettings}),J.createElement(pe,{key:"tools"})]})}get emoteComponent(){return J.createElement(oe,{contentColumn:!0,fade:!0,dark:!0,children:[J.createElement(he,{key:"espanel",title:"Emote Settings",onChange:this.onChange,settings:this.emoteSettings,button:{title:"Clear Emote Cache",onClick:()=>{W.clearEmoteData(),W.init(),z.init()}}}),J.createElement(pe,{key:"tools"})]})}get customCssComponent(){return J.createElement(oe,{contentColumn:!0,fade:!0,dark:!0,children:[J.createElement(ve,{key:"csseditor"}),J.createElement(pe,{key:"tools"})]})}contentComponent(e){const t="plugins"==e?this.pluginsComponent:this.themesComponent,s=e.replace("s",""),n=this;return J.createElement(class extends J.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this)}componentDidMount(){P.on(`${s}-reloaded`,this.onChange),P.on(`${s}-loaded`,this.onChange),P.on(`${s}-unloaded`,this.onChange)}componentWillUnmount(){P.off(`${s}-reloaded`,this.onChange),P.off(`${s}-loaded`,this.onChange),P.off(`${s}-unloaded`,this.onChange)}onChange(){n.sideBarOnClick(e)}render(){return t}})}get pluginsComponent(){const e=Object.keys(d).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(J.createElement(ge,{key:t,plugin:d[t].plugin})),e),[]),t=J.createElement(re,{key:"plugin-list",className:"bda-slist",children:e}),n=!r["fork-ps-5"]&&J.createElement(me,{className:"bd-reload-header",size:"18px",onClick:async()=>{N.updatePluginList(),this.sideBarOnClick("plugins")}}),o=J.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{s(1).shell.openItem(I.pluginsFolder)}},"Open Plugin Folder"),i=J.createElement(ie,{key:"pcolumn",title:"Plugins",children:[n,o,t]});return J.createElement(oe,{contentColumn:!0,fade:!0,dark:!0,children:[i,J.createElement(pe,{key:"tools"})]})}get themesComponent(){const e=Object.keys(c).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(J.createElement(fe,{key:t,theme:c[t]})),e),[]),t=J.createElement(re,{key:"theme-list",className:"bda-slist",children:e}),n=!r["fork-ps-5"]&&J.createElement(me,{className:"bd-reload-header",size:"18px",onClick:async()=>{B.updateThemeList(),this.sideBarOnClick("themes")}}),o=J.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{s(1).shell.openItem(I.themesFolder)}},"Open Theme Folder"),i=J.createElement(ie,{key:"tcolumn",title:"Themes",children:[n,o,t]});return J.createElement(oe,{contentColumn:!0,fade:!0,dark:!0,children:[i,J.createElement(pe,{key:"tools"})]})}renderCoreSettings(){const e=this.root;e?Z.render(this.coreComponent,e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderEmoteSettings(){const e=this.root;e?Z.render(this.emoteComponent,e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderCustomCssEditor(){const e=this.root;e?Z.render(this.customCssComponent,e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderPluginPane(){const e=this.root;e?Z.render(this.contentComponent("plugins"),e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderThemePane(){const e=this.root;e?Z.render(this.contentComponent("themes"),e):console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}}class we extends J.Component{constructor(e){super(e)}render(){const{sidebar:e,content:t,tools:s}=this.props.children;return J.createElement("div",{className:"standardSidebarView-3F1I7i ui-standard-sidebar-view"},J.createElement("div",{className:"sidebarRegion-VFTUkN sidebar-region"},J.createElement(oe,{key:"sidebarScroller",ref:"sidebarScroller",sidebar:!0,fade:e.fade||!0,dark:e.dark||!0,children:e.component})),J.createElement("div",{className:"contentRegion-3nDuYy content-region"},J.createElement("div",{className:"contentTransitionWrap-3hqOEW content-transition-wrap"},J.createElement("div",{className:"scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},J.createElement("div",{className:"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller",ref:"contentScroller"},J.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},t.component),s.component)))))}}class Ee extends J.Component{constructor(e){super(e),this.props.server.iconUrl||(this.props.server.iconUrl=this.props.fallback),this.state={imageError:!1,joined:this.props.guildList.includes(this.props.server.identifier)}}render(){const{server:e}=this.props;return J.createElement("div",{className:`card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${e.pinned?" bd-server-card-pinned":""}`},J.createElement("img",{ref:"img",className:"bd-server-image",src:e.iconUrl,onError:this.handleError.bind(this)}),J.createElement("div",{className:"flexChild-faoVW3 bd-server-content"},J.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},J.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},e.name),J.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},e.members," Members")),J.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},J.createElement("div",{className:"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},J.createElement("div",{className:"scroller-2FKFPG scroller bd-server-description"},e.description))),J.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},J.createElement("div",{className:"flexChild-faoVW3 bd-server-tags",style:{flex:"1 1 auto"}},e.categories.join(", ")),this.state.joined&&J.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#3ac15c"}},J.createElement("div",{className:"ui-button-contents"},"Joined")),e.error&&J.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#c13a3a"}},J.createElement("div",{className:"ui-button-contents"},"Error")),!e.error&&!this.state.joined&&J.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",style:{minHeight:"12px",marginTop:"4px"},onClick:()=>{this.join()}},J.createElement("div",{className:"ui-button-contents"},"Join")))))}handleError(){this.props.server.iconUrl=this.props.fallback,this.setState({imageError:!0})}join(){this.props.join(this)}}class ke extends J.Component{constructor(e){super(e),this.setInitialState(),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),this.GuildStore=f.getByProps("getGuilds"),this.AvatarDefaults=f.getByProps("getUserAvatarURL","DEFAULT_AVATARS"),this.InviteActions=f.getByProps("acceptInvite"),this.SortedGuildStore=f.getByProps("getSortedGuilds")}componentDidMount(){this.checkConnection()}setInitialState(){this.state={selectedCategory:-1,title:"Loading...",loading:!0,servers:[],next:null,connection:{state:0,user:null}}}close(){Z.unmountComponentAtNode(document.getElementById(this.props.rootId))}search(e,t){const s=this;$.ajax({method:"GET",url:`${s.endPoint}${e}${e?"&schema=new":"?schema=new"}`,success:e=>{let n=e.results.reduce((e,t)=>(t.joined=!1,e.push(t),e),[]);t||(n=s.state.servers.concat(n));let o=e.size+e.from;e.next=`?from=${o}`,s.state.term&&(e.next+=`&term=${s.state.term}`),s.state.selectedCategory&&(e.next+=`&category=${s.categoryButtons[s.state.selectedCategory]}`),o>=e.total&&(o=e.total,e.next=null);let r=`Showing 1-${o} of ${e.total} results in ${s.categoryButtons[s.state.selectedCategory]}`;s.state.term&&(r+=` for ${s.state.term}`),s.setState({loading:!1,title:r,servers:n,next:e.next}),t&&(s.refs.sbv.refs.contentScroller.scrollTop=0)},error:()=>{s.setState({loading:!1,title:"Failed to load servers. Check console for details"})}})}join(e){if(e.props.pinned)return this.InviteActions.acceptInvite(e.props.invite_code);$.ajax({method:"GET",url:`${this.joinEndPoint}/${e.props.server.identifier}`,headers:{Accept:"application/json;","Content-Type":"application/json;","x-discord-token":this.state.connection.user.accessToken},crossDomain:!0,xhrFields:{withCredentials:!0},success:()=>{e.setState({joined:!0})}})}connect(){const e=this.windowOptions;e.x=Math.round(window.screenX+window.innerWidth/2-e.width/2),e.y=Math.round(window.screenY+window.innerHeight/2-e.height/2),this.joinWindow=new(window.require("electron").remote.BrowserWindow)(e);this.joinWindow.webContents.on("did-navigate",(e,t)=>{"https://auth.discordservers.com/info"==t&&(this.joinWindow.close(),this.checkConnection())}),this.joinWindow.loadURL("https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=https://auth.discordservers.com/info")}get windowOptions(){return{width:500,height:550,backgroundColor:"#282b30",show:!0,resizable:!1,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!1,webPreferences:{nodeIntegration:!1}}}get bdServer(){const e=this.SortedGuildStore.guildPositions,t=this.AvatarDefaults.DEFAULT_AVATARS;return J.createElement(Ee,{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:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0},pinned:!0,join:this.join,guildList:e,fallback:t[Math.floor(5*Math.random())]})}get endPoint(){return"https://search.discordservers.com"}get joinEndPoint(){return"https://j.discordservers.com"}get connectEndPoint(){return"https://join.discordservers.com/connect"}checkConnection(){const e=this;try{$.ajax({method:"GET",url:"https://auth.discordservers.com/info",headers:{Accept:"application/json;","Content-Type":"application/json;"},crossDomain:!0,xhrFields:{withCredentials:!0},success:t=>{e.setState({selectedCategory:0,connection:{state:2,user:t}}),e.search("",!0)},error:()=>{e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}})}catch(t){e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}}render(){return J.createElement(we,{ref:"sbv",children:this.component})}get component(){return{sidebar:{component:this.sidebar},content:{component:this.content},tools:{component:J.createElement(pe,{key:"pt",ref:"tools",onClick:this.close})}}}get sidebar(){return J.createElement("div",{className:"sidebar",key:"ps"},J.createElement("div",{className:"ui-tab-bar SIDE"},J.createElement("div",{className:"ui-tab-bar-header",style:{fontSize:"16px"}},"Public Servers"),J.createElement(te.Separator,null),this.searchInput,J.createElement(te.Separator,null),J.createElement(te.Header,{text:"Categories"}),this.categoryButtons.map((e,t)=>J.createElement(te.Item,{id:t,onClick:this.changeCategory,key:t,text:e,selected:this.state.selectedCategory===t})),J.createElement(te.Separator,null),this.footer,this.connection))}get searchInput(){return J.createElement("div",{className:"ui-form-item"},J.createElement("div",{className:"ui-text-input flex-vertical",style:{width:"172px",marginLeft:"10px"}},J.createElement("input",{ref:"searchinput",onKeyDown:this.searchKeyDown,onChange:()=>{},type:"text",className:"input default",placeholder:"Search...",maxLength:"50"})))}searchKeyDown(e){const t=this;if(t.state.loading||13!==e.which)return;t.setState({loading:!0,title:"Loading...",term:e.target.value});let s=`?term=${e.target.value}`;0!==t.state.selectedCategory&&(s+=`&category=${t.categoryButtons[t.state.selectedCategory]}`),t.search(s,!0)}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(e){const t=this;t.state.loading||(t.refs.searchinput.value="",t.setState({loading:!0,selectedCategory:e,title:"Loading...",term:null}),0!==e?t.search(`?category=${t.categoryButtons[e]}`,!0):t.search("",!0))}get content(){const e=this,t=this.SortedGuildStore.guildPositions,s=this.AvatarDefaults.DEFAULT_AVATARS;return 1===e.state.connection.state?e.notConnected:[J.createElement("div",{ref:"content",key:"pc",className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},J.createElement(ae,{text:e.state.title}),e.bdServer,e.state.servers.map(n=>J.createElement(Ee,{key:n.identifier,server:n,join:e.join,guildList:t,fallback:s[Math.floor(5*Math.random())]})),e.state.next&&J.createElement("button",{type:"button",onClick:()=>{e.state.loading||(e.setState({loading:!0}),e.search(e.state.next,!1))},className:"ui-button filled brand small grow",style:{width:"100%",marginTop:"10px",marginBottom:"10px"}},J.createElement("div",{className:"ui-button-contents"},e.state.loading?"Loading":"Load More")),e.state.servers.length>0&&J.createElement(ae,{text:e.state.title}))]}get notConnected(){return[J.createElement("div",{key:"ncc",ref:"content",className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},J.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},"Not connected to discordservers.com!",J.createElement("button",{onClick:this.connect,type:"button",className:"ui-button filled brand small grow",style:{display:"inline-block",minHeight:"18px",marginLeft:"10px",lineHeight:"14px"}},J.createElement("div",{className:"ui-button-contents"},"Connect"))),this.bdServer)]}get footer(){return J.createElement("div",{className:"ui-tab-bar-header"},J.createElement("a",{href:"https://discordservers.com",target:"_blank"},"Discordservers.com"))}get connection(){const{connection:e}=this.state;return 2!==e.state?J.createElement("span",null):J.createElement("span",null,J.createElement(te.Separator,null),J.createElement("span",{style:{color:"#b9bbbe",fontSize:"10px",marginLeft:"10px"}},"Connected as: ",`${e.user.username}#${e.user.discriminator}`),J.createElement("div",{style:{padding:"5px 10px 0 10px"}},J.createElement("button",{style:{width:"100%",minHeight:"20px"},type:"button",className:"ui-button filled brand small grow"},J.createElement("div",{className:"ui-button-contents",onClick:this.connect},"Reconnect"))))}}class Se extends J.Component{constructor(e){super(e)}componentDidMount(){$(window).on(`keyup.${this.props.id}`,e=>{27===e.which&&Z.unmountComponentAtNode(this.refs.root.parentNode)}),$(`#${this.props.id}`).animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.id}`).css("opacity","").css("transform","")}})}componentWillUnmount(){$(window).off(`keyup.${this.props.id}`),$(`#${this.props.id}`).animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.rootId}`).remove()}}),$('[class*="layer-"]').removeClass("publicServersOpen").animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200,done:()=>{$('[class*="layer-"]').css("opacity","").css("transform","")}})}componentWillMount(){$('[class*="layer-"]').addClass("publicServersOpen").animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200})}render(){return J.createElement("div",{className:"layer bd-layer layer-3QrUeG",id:this.props.id,ref:"root",style:{opacity:0,transform:"scale(1.1) translateZ(0px)"}},this.props.children)}}var xe=new class{initialize(){const e=Q.guildClasses.wrapper.split(" ")[0];$(`.${e} .scroller-2FKFPG >:first-child`).after(this.button)}get component(){return m.React.createElement(n.Layer,{rootId:"pubslayerroot",id:"pubslayer",children:m.React.createElement(n.Menu,{rootId:"pubslayerroot"})})}get root(){const e=document.getElementById("pubslayerroot");return e||(this.injectRoot()?this.root:null)}injectRoot(){return!!$(".layers, .layers-3iHuyZ").length&&($(".layers, .layers-3iHuyZ").append($("",{id:"pubslayerroot"})),!0)}render(){const e=this.root;e?m.ReactDOM.render(this.component,e):console.log("FAILED TO LOCATE ROOT: .layers")}get button(){return $("",{class:Q.guildClasses.listItem,id:"bd-pub-li",style:r["bda-gs-1"]?"":"display: none;"}).append($("",{class:"wrapper-25eVIn "+Q.guildClasses.circleButtonMask,text:"public",id:"bd-pub-button",click:()=>{this.render()}}))}},Pe=new class{constructor(){this.renderer=new Ce({onChange:this.updateSettings.bind(this)})}renderSidebar(){this.renderer.renderSidebar()}updateSettings(e,t){r[e]=t,"bda-es-0"==e&&(t?$("#twitchcord-button-container").show():$("#twitchcord-button-container").hide()),"bda-gs-2"==e&&(t?$("body").addClass("bd-minimal"):$("body").removeClass("bd-minimal")),"bda-gs-3"==e&&(t?$("body").addClass("bd-minimal-chan"):$("body").removeClass("bd-minimal-chan")),"bda-gs-1"==e&&(t?$("#bd-pub-li").show():$("#bd-pub-li").hide()),"bda-gs-4"==e&&(t?H.enable():H.disable()),"bda-gs-5"==e&&(t?$("#app-mount").addClass("bda-dark"):$("#app-mount").removeClass("bda-dark")),t&&"bda-gs-6"==e&&Ne.inject24Hour(),"bda-gs-7"==e&&(t?Ne.injectColoredText():Ne.removeColoredText()),"bda-es-4"==e&&(t?W.autoCapitalize():W.disableAutoCapitalize()),"fork-ps-4"==e&&(t?S.start():S.stop()),"fork-ps-5"==e&&(t?(I.watchContent("plugin"),I.watchContent("theme")):(I.unwatchContent("plugin"),I.unwatchContent("theme"))),"fork-wp-1"==e&&(E.setWindowPreference("transparent",t),t?E.setWindowPreference("backgroundColor",null):E.setWindowPreference("backgroundColor","#2f3136")),"bda-gs-8"==e&&(t?G.enable(r["fork-dm-1"]):G.disable()),Ne.saveSettings()}initializeSettings(){r["bda-es-0"]&&$("#twitchcord-button-container").show(),r["bda-gs-2"]&&$("body").addClass("bd-minimal"),r["bda-gs-3"]&&$("body").addClass("bd-minimal-chan"),r["bda-gs-1"]&&$("#bd-pub-li").show(),r["bda-gs-4"]&&H.enable(),r["bda-gs-5"]&&$("#app-mount").addClass("bda-dark"),r["bda-gs-6"]&&Ne.inject24Hour(),r["bda-gs-7"]&&Ne.injectColoredText(),r["bda-es-4"]&&W.autoCapitalize(),r["fork-ps-4"]&&S.start(),r["fork-ps-5"]&&(I.watchContent("plugin"),I.watchContent("theme")),r["bda-gs-8"]&&G.enable(r["fork-dm-1"]),Ne.saveSettings()}};function De(){}De.prototype.setConfig=function(e){Object.assign(i,e)},De.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&&this.alert("Update Available",`\n An update for BandagedBD is available (${e})! Please Reinstall!
\n Download Installer\n `),h.log("Startup","Initializing Settings"),this.initSettings(),h.log("Startup","Initializing EmoteModule"),window.emotePromise=W.init().then(()=>{W.initialized=!0,h.log("Startup","Initializing QuickEmoteMenu"),z.init()}),this.injectExternals(),await this.checkForGuilds(),Q.initialize(),h.log("Startup","Updating Settings"),Pe.initializeSettings(),h.log("Startup","Loading Plugins");const t=N.loadPlugins();h.log("Startup","Loading Themes");const s=B.loadThemes();$("#customcss").detach().appendTo(document.head),window.addEventListener("beforeunload",function(){r["bda-dc-0"]&&document.querySelector(".btn.btn-disconnect").click()}),xe.initialize(),W.autoCapitalize(),h.log("Startup","Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),h.log("Startup","Initializing Main Observer"),this.initObserver(),r["fork-ps-1"]&&(h.log("Startup","Collecting Startup Errors"),this.showContentErrors({plugins:t,themes:s}))},De.prototype.checkForGuilds=function(){return new Promise(e=>{const t=function(){const s=Q.guildClasses.wrapper.split(" ")[0],n=Q.guildClasses.listItem.split(" ")[0],o=Q.guildClasses.blobContainer.split(" ")[0];if(document.querySelectorAll(`.${s} .${n} .${o}`).length>0)return e(i.deferLoaded=!0);setTimeout(t,100)};$(document).ready(function(){setTimeout(t,100)})})},De.prototype.injectExternals=async function(){await h.injectJs("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js"),window.require.original&&(window.require=window.require.original)},De.prototype.initSettings=function(){if(C.initialize(),!C.getSettingGroup("settings"))return this.saveSettings();const e=this.loadSettings();$('