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=>{$("