diff --git a/Plugins/BDFDB.js b/Plugins/BDFDB.js
index 0bbfee5310..1e3c7e5e3a 100644
--- a/Plugins/BDFDB.js
+++ b/Plugins/BDFDB.js
@@ -4142,8 +4142,7 @@
DiscordClassModules.ContextMenuReactButton = BDFDB.ModuleUtils.find(m => typeof m.wrapper == "string" && typeof m.button == "string" && typeof m.icon == "string" && Object.keys(m).length == 3);
DiscordClassModules.CtaVerification = BDFDB.ModuleUtils.findByProperties("attendeeCTA", "verificationNotice");
DiscordClassModules.Cursor = BDFDB.ModuleUtils.findByProperties("cursorDefault", "userSelectNone");
- DiscordClassModules.CustomStatus = BDFDB.ModuleUtils.findByProperties("customStatusContentIcon", "customStatus");
- DiscordClassModules.CustomStatusIcon = BDFDB.ModuleUtils.findByProperties("icon", "emoji");
+ DiscordClassModules.CustomStatusIcon = BDFDB.ModuleUtils.findByProperties("textRuler", "emoji", "icon");
DiscordClassModules.DmAddPopout = BDFDB.ModuleUtils.findByProperties("popout", "searchBarComponent");
DiscordClassModules.DmAddPopoutItems = BDFDB.ModuleUtils.findByProperties("friendSelected", "friendWrapper");
DiscordClassModules.DownloadLink = BDFDB.ModuleUtils.findByProperties("downloadLink");
@@ -4204,6 +4203,7 @@
DiscordClassModules.LiveTag = BDFDB.ModuleUtils.findByProperties("liveLarge", "live");
DiscordClassModules.LoadingScreen = BDFDB.ModuleUtils.findByProperties("container", "problemsText", "problems");
DiscordClassModules.Margins = BDFDB.ModuleUtils.findByProperties("marginBottom4", "marginCenterHorz");
+ DiscordClassModules.Menu = BDFDB.ModuleUtils.findByProperties("menu", "styleFlexible", "item");
DiscordClassModules.Member = BDFDB.ModuleUtils.findByProperties("member", "ownerIcon");
DiscordClassModules.MembersWrap = BDFDB.ModuleUtils.findByProperties("membersWrap", "membersGroup");
DiscordClassModules.Message = BDFDB.ModuleUtils.findByProperties("message", "mentioned");
@@ -4725,8 +4725,6 @@
contextmenusubcontext: ["ContextMenu", "subMenuContext"],
cursordefault: ["Cursor", "cursorDefault"],
cursorpointer: ["Cursor", "cursorPointer"],
- customstatus: ["CustomStatus", "customStatus"],
- customstatuscontenticon: ["CustomStatus", "customStatusContentIcon"],
customstatusemoji: ["CustomStatusIcon", "emoji"],
customstatusicon: ["CustomStatusIcon", "icon"],
defaultcolor: ["Text", "defaultColor"],
@@ -5152,6 +5150,34 @@
mention: ["NotFound", "mention"],
mentioninteractive: ["NotFound", "mentionInteractive"],
mentionwrapper: ["NotFound", "mentionWrapper"],
+ menumenu: ["Menu", "menu"],
+ menuaccommodatescrollbar: ["Menu", "accommodateScrollbar"],
+ menucaret: ["Menu", "caret"],
+ menucheck: ["Menu", "check"],
+ menucheckbox: ["Menu", "checkbox"],
+ menucolorbrand: ["Menu", "colorBrand"],
+ menucolordanger: ["Menu", "colorDanger"],
+ menucolordefault: ["Menu", "colorDefault"],
+ menucolorpremium: ["Menu", "colorPremium"],
+ menucustomitem: ["Menu", "customItem"],
+ menudisabled: ["Menu", "disabled"],
+ menufocused: ["Menu", "focused"],
+ menuhideinteraction: ["Menu", "hideInteraction"],
+ menuhintcontainer: ["Menu", "hintContainer"],
+ menuicon: ["Menu", "icon"],
+ menuiconcontainer: ["Menu", "iconContainer"],
+ menuimage: ["Menu", "image"],
+ menuimagecontainer: ["Menu", "imageContainer"],
+ menuitem: ["Menu", "item"],
+ menulabel: ["Menu", "label"],
+ menulabelcontainer: ["Menu", "labelContainer"],
+ menuscroller: ["Menu", "scroller"],
+ menuseparator: ["Menu", "separator"],
+ menustylefixed: ["Menu", "styleFixed"],
+ menustyleflexible: ["Menu", "styleFlexible"],
+ menusubmenu: ["Menu", "submenu"],
+ menusubmenucontainer: ["Menu", "submenuContainer"],
+ menusubtext: ["Menu", "subtext"],
message: ["Message", "message"],
messageaccessory: ["MessageAccessory", "container"],
messageavatar: ["MessageBody", "avatar"],
@@ -7157,7 +7183,6 @@
InternalComponents.LibraryComponents.ContextMenuItems.Item = InternalBDFDB.loadPatchedComp("ContextMenuItems.Item") || reactInitialized && class BDFDB_ContextMenuItem extends LibraryModules.React.Component {
render() {
- let hintIsString = typeof this.props.hint == "string";
return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Clickable, {
className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.contextmenuitem, !this.props.disabled && BDFDB.disCN.contextmenuitemclickable, this.props.danger && BDFDB.disCN.contextmenuitemdanger, this.props.disabled && BDFDB.disCN.contextmenuitemdisabled, this.props.brand && BDFDB.disCN.contextmenuitembrand, this.props.className),
style: this.props.style,
@@ -7219,7 +7244,7 @@
};
var ComponentTypeData = {};
- ComponentTypeData.NormalContextMenus = ["DeveloperContextMenu", "GuildRoleContextMenu", "NativeContextMenu", "UserSettingsCogContextMenu"];
+ ComponentTypeData.NormalContextMenus = ["DeveloperContextMenu", "NativeContextMenu", "UserSettingsCogContextMenu"];
ComponentTypeData.FluxContextMenus = ["ApplicationContextMenu", "GroupDMContextMenu"];
ComponentTypeData.NonRenderContextMenus = ["ChannelContextMenu", "GuildContextMenu", "MessageContextMenu", "SlateContextMenu", "UserContextMenu"];
ComponentTypeData.ObservedContextMenus = [];
@@ -7243,8 +7268,6 @@
InternalComponents.LibraryComponents.ContextMenus.GuildContextMenu = BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.GUILD_CHANNEL_LIST);
InternalComponents.LibraryComponents.ContextMenus._Exports.GuildContextMenu = (BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.GUILD_CHANNEL_LIST, false) || {}).exports;
- InternalComponents.LibraryComponents.ContextMenus.GuildRoleContextMenu = BDFDB.ModuleUtils.findByName("GuildRoleContextMenu");
-
InternalComponents.LibraryComponents.ContextMenus.MessageContextMenu = BDFDB.ModuleUtils.findByString("message", "target", BDFDB.DiscordConstants.ContextMenuTypes.MESSAGE_MAIN);
InternalComponents.LibraryComponents.ContextMenus._Exports.MessageContextMenu = (BDFDB.ModuleUtils.findByString("message", "target", BDFDB.DiscordConstants.ContextMenuTypes.MESSAGE_MAIN, false) || {}).exports;
@@ -7565,10 +7588,6 @@
}
};
- InternalComponents.LibraryComponents.MessageGroup = BDFDB.ModuleUtils.findByName("ChannelMessage");
-
- InternalComponents.LibraryComponents.MessagesPopoutComponents = BDFDB.ModuleUtils.findByProperties("Header", "EmptyStateBottom");
-
InternalComponents.LibraryComponents.MemberRole = InternalBDFDB.loadPatchedComp("MemberRole") || reactInitialized && class BDFDB_MemberRole extends LibraryModules.React.Component {
handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);}
handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);}
@@ -7593,6 +7612,12 @@
}
};
+ InternalComponents.LibraryComponents.MenuItems = BDFDB.ModuleUtils.findByProperties("MenuItem", "MenuGroup");
+
+ InternalComponents.LibraryComponents.MessageGroup = BDFDB.ModuleUtils.findByName("ChannelMessage");
+
+ InternalComponents.LibraryComponents.MessagesPopoutComponents = BDFDB.ModuleUtils.findByProperties("Header", "EmptyStateBottom");
+
InternalComponents.LibraryComponents.ModalComponents = Object.assign({}, BDFDB.ModuleUtils.findByProperties("ModalContent", "ModalFooter"));
InternalComponents.LibraryComponents.ModalComponents.ModalContent = InternalBDFDB.loadPatchedComp("ModalComponents.ModalContent") || reactInitialized && class BDFDB_ModalContent extends LibraryModules.React.Component {
diff --git a/Plugins/BDFDB.min.js b/Plugins/BDFDB.min.js
index 7f2d29bd67..69f09bd0d1 100644
--- a/Plugins/BDFDB.min.js
+++ b/Plugins/BDFDB.min.js
@@ -1,9919 +1 @@
-(_ => {
- if (window.BDFDB && window.BDFDB.ListenerUtils && typeof window.BDFDB.ListenerUtils.remove == "function") window.BDFDB.ListenerUtils.remove(window.BDFDB);
- if (window.BDFDB && window.BDFDB.StoreChangeUtils && typeof window.BDFDB.StoreChangeUtils.remove == "function") window.BDFDB.StoreChangeUtils.remove(window.BDFDB);
- if (window.BDFDB && window.BDFDB.ObserverUtils && typeof window.BDFDB.ObserverUtils.disconnect == "function") window.BDFDB.ObserverUtils.disconnect(window.BDFDB);
- if (window.BDFDB && window.BDFDB.ModuleUtils && typeof window.BDFDB.ModuleUtils.unpatch == "function") window.BDFDB.ModuleUtils.unpatch(window.BDFDB);
- if (window.BDFDB && window.BDFDB.WindowUtils && typeof window.BDFDB.WindowUtils.closeAll == "function") window.BDFDB.WindowUtils.closeAll(window.BDFDB);
- if (window.BDFDB && window.BDFDB.WindowUtils && typeof window.BDFDB.WindowUtils.removeListener == "function") window.BDFDB.WindowUtils.removeListener(window.BDFDB);
-
- const BDFDB = {
- myPlugins: Object.assign({}, window.BDFDB && window.BDFDB.myPlugins),
- InternalData: Object.assign({
- pressedKeys: [],
- mousePosition: {
- pageX: 0,
- pageY: 0
- },
- componentPatchQueries: {}
- },
- window.BDFDB && window.BDFDB.InternalData,
- {
- creationTime: performance.now()
- }),
- BDv2Api: window.BDFDB && window.BDFDB.BDv2Api || undefined,
- name: "BDFDB"
- };
- const InternalBDFDB = {
- name: "BDFDB",
- patchPriority: 0
- };
- const loadId = Math.round(Math.random() * 10000000000000000);
- BDFDB.InternalData.loadId = loadId;
-
- if (typeof Array.prototype.flat != "function") Array.prototype.flat = function () {return this;}
-
- InternalBDFDB.defaults = {
- settings: {
- showToasts: {value:true, description:"Show Plugin start and stop Toasts"},
- showSupportBadges: {value:true, description:"Show little Badges for Users who support my Patreon"}
- }
- };
-
- BDFDB.LogUtils = {};
- BDFDB.LogUtils.log = function (string, name) {
- console.log(`%c[${typeof name == "string" && name || "BDFDB"}]`, "color: #3a71c1; font-weight: 700;", (typeof string == "string" && string || "").trim());
- };
- BDFDB.LogUtils.warn = function (string, name) {
- console.warn(`%c[${typeof name == "string" && name || "BDFDB"}]`, "color: #3a71c1; font-weight: 700;", (typeof string == "string" && string || "").trim());
- };
- BDFDB.LogUtils.error = function (string, name) {
- console.error(`%c[${typeof name == "string" && name || "BDFDB"}]`, "color: #3a71c1; font-weight: 700;", "Fatal Error: " + (typeof string == "string" && string || "").trim());
- };
-
- BDFDB.LogUtils.log("Loading library.");
-
- BDFDB.PluginUtils = {};
- BDFDB.PluginUtils.init = BDFDB.loadMessage = function (plugin) {
- plugin.name = plugin.name || (typeof plugin.getName == "function" ? plugin.getName() : null);
- plugin.version = plugin.version || (typeof plugin.getVersion == "function" ? plugin.getVersion() : null);
- plugin.author = plugin.author || (typeof plugin.getAuthor == "function" ? plugin.getAuthor() : null);
- plugin.description = plugin.description || (typeof plugin.getDescription == "function" ? plugin.getDescription() : null);
-
- let loadMessage = BDFDB.LanguageUtils.LibraryStringsFormat("toast_plugin_started", "v" + plugin.version);
- BDFDB.LogUtils.log(loadMessage, plugin.name);
- if (!BDFDB.BDUtils.getSettings("fork-ps-2") && BDFDB.DataUtils.get(BDFDB, "settings", "showToasts")) BDFDB.NotificationUtils.toast(plugin.name + " " + loadMessage, {nopointer: true, selector: "plugin-started-toast"});
-
- let url = typeof plugin.getRawUrl == "function" && typeof plugin.getRawUrl() == "string" ? plugin.getRawUrl() : `https://mwittrien.github.io/BetterDiscordAddons/Plugins/${plugin.name}/${plugin.name}.plugin.js`;
- BDFDB.PluginUtils.checkUpdate(plugin.name, url);
-
- if (typeof plugin.initConstructor === "function") BDFDB.TimeUtils.suppress(plugin.initConstructor.bind(plugin), "Could not initiate constructor!", plugin.name)();
- if (typeof plugin.css === "string") BDFDB.DOMUtils.appendLocalStyle(plugin.name, plugin.css);
-
- InternalBDFDB.patchPlugin(plugin);
- InternalBDFDB.addSpecialListeners(plugin);
-
- BDFDB.PluginUtils.translate(plugin);
-
- BDFDB.PluginUtils.checkChangeLog(plugin);
-
- if (!window.PluginUpdates || typeof window.PluginUpdates !== "object") window.PluginUpdates = {plugins: {} };
- window.PluginUpdates.plugins[url] = {name: plugin.name, raw: url, version: plugin.version};
- if (typeof window.PluginUpdates.interval === "undefined") window.PluginUpdates.interval = BDFDB.TimeUtils.interval(_ => {BDFDB.PluginUtils.checkAllUpdates();}, 1000*60*60*2);
-
- plugin.started = true;
- delete plugin.stopping;
-
- for (let name in BDFDB.myPlugins) if (!BDFDB.myPlugins[name].started && typeof BDFDB.myPlugins[name].initialize == "function") setImmediate(_ => {BDFDB.TimeUtils.suppress(BDFDB.myPlugins[name].initialize.bind(BDFDB.myPlugins[name]), "Could not initiate plugin!", name)();});
- };
- BDFDB.PluginUtils.clear = BDFDB.unloadMessage = function (plugin) {
- InternalBDFDB.clearStartTimeout(plugin);
-
- delete BDFDB.myPlugins[plugin.name];
-
- let unloadMessage = BDFDB.LanguageUtils.LibraryStringsFormat("toast_plugin_stopped", "v" + plugin.version);
- BDFDB.LogUtils.log(unloadMessage, plugin.name);
- if (!BDFDB.BDUtils.getSettings("fork-ps-2") && BDFDB.DataUtils.get(BDFDB, "settings", "showToasts")) BDFDB.NotificationUtils.toast(plugin.name + " " + unloadMessage, {nopointer: true, selector: "plugin-stopped-toast"});
-
- let url = typeof plugin.getRawUrl == "function" && typeof plugin.getRawUrl() == "string" ? plugin.getRawUrl() : `https://mwittrien.github.io/BetterDiscordAddons/Plugins/${plugin.name}/${plugin.name}.plugin.js`;
-
- if (typeof plugin.css === "string") BDFDB.DOMUtils.removeLocalStyle(plugin.name);
-
- BDFDB.ModuleUtils.unpatch(plugin);
- BDFDB.ListenerUtils.remove(plugin);
- BDFDB.StoreChangeUtils.remove(plugin);
- BDFDB.ObserverUtils.disconnect(plugin);
- BDFDB.WindowUtils.closeAll(plugin);
- BDFDB.WindowUtils.removeListener(plugin);
-
- for (let type in BDFDB.InternalData.componentPatchQueries) BDFDB.ArrayUtils.remove(BDFDB.InternalData.componentPatchQueries[type].query, plugin, true);
-
- for (let modal of document.querySelectorAll(`.${plugin.name}-modal, .${plugin.name.toLowerCase()}-modal, .${plugin.name}-settingsmodal, .${plugin.name.toLowerCase()}-settingsmodal`)) {
- let closeButton = modal.querySelector(BDFDB.dotCN.modalclose);
- if (closeButton) closeButton.click();
- }
-
- delete BDFDB.DataUtils.cached[plugin.name]
- delete window.PluginUpdates.plugins[url];
-
- delete plugin.started;
- BDFDB.TimeUtils.timeout(_ => {delete plugin.stopping;});
- };
- BDFDB.PluginUtils.translate = function (plugin) {
- plugin.labels = {};
- if (typeof plugin.setLabelsByLanguage === "function" || typeof plugin.changeLanguageStrings === "function") {
- if (document.querySelector("html").lang) translate();
- else {
- let translateInterval = BDFDB.TimeUtils.interval(_ => {
- if (document.querySelector("html").lang) {
- BDFDB.TimeUtils.clear(translateInterval);
- translate();
- }
- }, 100);
- }
- function translate() {
- let language = BDFDB.LanguageUtils.getLanguage();
- if (typeof plugin.setLabelsByLanguage === "function") plugin.labels = plugin.setLabelsByLanguage(language.id);
- if (typeof plugin.changeLanguageStrings === "function") plugin.changeLanguageStrings();
- BDFDB.LogUtils.log(BDFDB.LanguageUtils.LibraryStringsFormat("toast_plugin_translated", language.ownlang), plugin.name);
- }
- }
- };
- BDFDB.PluginUtils.checkUpdate = function (pluginName, url) {
- if (pluginName && url) return new Promise(callback => {
- LibraryRequires.request(url, (error, response, result) => {
- if (error) return callback(null);
- let newVersion = result.match(/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i);
- if (!newVersion) return callback(null);
- if (BDFDB.NumberUtils.getVersionDifference(newVersion[0], window.PluginUpdates.plugins[url].version) > 0.2) {
- BDFDB.NotificationUtils.toast(`${pluginName} will be force updated, because your version is heavily outdated.`, {
- type: "warn",
- nopointer: true,
- selector: "plugin-forceupdate-toast"
- });
- BDFDB.PluginUtils.downloadUpdate(pluginName, url);
- return callback(2);
- }
- else if (BDFDB.NumberUtils.compareVersions(newVersion[0], window.PluginUpdates.plugins[url].version)) {
- BDFDB.PluginUtils.showUpdateNotice(pluginName, url);
- return callback(1);
- }
- else {
- BDFDB.PluginUtils.removeUpdateNotice(pluginName);
- return callback(0);
- }
- });
- });
- return new Promise(_ => {callback(null);});
- };
- BDFDB.PluginUtils.checkAllUpdates = function () {
- return new Promise(callback => {
- let finished = 0, amount = 0;
- for (let url in window.PluginUpdates.plugins) {
- let plugin = window.PluginUpdates.plugins[url];
- if (plugin) BDFDB.PluginUtils.checkUpdate(plugin.name, plugin.raw).then(state => {
- finished++;
- if (state == 1) amount++;
- if (finished >= Object.keys(window.PluginUpdates.plugins).length) callback(amount);
- });
- }
- });
- };
- BDFDB.PluginUtils.showUpdateNotice = function (pluginName, url) {
- if (!pluginName || !url) return;
- let updateNotice = document.querySelector("#pluginNotice");
- if (!updateNotice) {
- updateNotice = BDFDB.NotificationUtils.notice(`The following plugins need to be updated: `, {html:true, id:"pluginNotice", type:"info", btn:!BDFDB.BDUtils.isAutoLoadEnabled() ? "Reload" : "", customicon:` `});
- updateNotice.style.setProperty("display", "block", "important");
- updateNotice.style.setProperty("visibility", "visible", "important");
- updateNotice.style.setProperty("opacity", "1", "important");
- updateNotice.querySelector(BDFDB.dotCN.noticedismiss).addEventListener("click", _ => {
- BDFDB.DOMUtils.remove(".update-clickme-tooltip");
- });
- let reloadButton = updateNotice.querySelector(BDFDB.dotCN.noticebutton);
- if (reloadButton) {
- BDFDB.DOMUtils.toggle(reloadButton, true);
- reloadButton.addEventListener("click", _ => {
- LibraryRequires.electron.remote.getCurrentWindow().reload();
- });
- reloadButton.addEventListener("mouseenter", _ => {
- if (window.PluginUpdates.downloaded) BDFDB.TooltipUtils.create(reloadButton, window.PluginUpdates.downloaded.join(", "), {type:"bottom", selector:"update-notice-tooltip", style: "max-width: 420px"});
- });
- }
- }
- if (updateNotice) {
- let updateNoticeList = updateNotice.querySelector("#outdatedPlugins");
- if (updateNoticeList && !updateNoticeList.querySelector(`#${pluginName}-notice`)) {
- if (updateNoticeList.querySelector("span")) updateNoticeList.appendChild(BDFDB.DOMUtils.create(`, `));
- let updateEntry = BDFDB.DOMUtils.create(`${pluginName} `);
- updateEntry.addEventListener("click", _ => {BDFDB.PluginUtils.downloadUpdate(pluginName, url);});
- updateNoticeList.appendChild(updateEntry);
- if (!document.querySelector(".update-clickme-tooltip")) BDFDB.TooltipUtils.create(updateNoticeList, "Click us!", {type:"bottom", selector:"update-clickme-tooltip", delay:500});
- }
- }
- };
- BDFDB.PluginUtils.removeUpdateNotice = function (pluginName, updateNotice = document.querySelector("#pluginNotice")) {
- if (!pluginName || !updateNotice) return;
- let updateNoticeList = updateNotice.querySelector("#outdatedPlugins");
- if (updateNoticeList) {
- let noticeEntry = updateNoticeList.querySelector(`#${pluginName}-notice`);
- if (noticeEntry) {
- let nextSibling = noticeEntry.nextSibling;
- let prevSibling = noticeEntry.prevSibling;
- if (nextSibling && BDFDB.DOMUtils.containsClass(nextSibling, "separator")) nextSibling.remove();
- else if (prevSibling && BDFDB.DOMUtils.containsClass(prevSibling, "separator")) prevSibling.remove();
- noticeEntry.remove();
- }
- if (!updateNoticeList.querySelector("span")) {
- let reloadButton = updateNotice.querySelector(BDFDB.dotCN.noticebutton);
- if (reloadButton) {
- updateNotice.querySelector(".notice-message").innerText = "To finish updating you need to reload.";
- BDFDB.DOMUtils.toggle(reloadButton, false);
- }
- else updateNotice.querySelector(BDFDB.dotCN.noticedismiss).click();
- }
- }
- };
- BDFDB.PluginUtils.downloadUpdate = function (pluginName, url) {
- if (!pluginName || !url) return;
- LibraryRequires.request(url, (error, response, result) => {
- if (error) return BDFDB.LogUtils.warn("Unable to get update for " + pluginName);
- BDFDB.InternalData.creationTime = 0;
- let newVersion = result.match(/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i);
- newVersion = newVersion.toString().replace(/['"]/g, "");
- LibraryRequires.fs.writeFileSync(LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), url.split("/").slice(-1)[0]), result);
- BDFDB.NotificationUtils.toast(`${pluginName} v${window.PluginUpdates.plugins[url].version} has been replaced by ${pluginName} v${newVersion}.`, {nopointer:true, selector:"plugin-updated-toast"});
- let updateNotice = document.querySelector("#pluginNotice");
- if (updateNotice) {
- if (updateNotice.querySelector(BDFDB.dotCN.noticebutton)) {
- window.PluginUpdates.plugins[url].version = newVersion;
- if (!window.PluginUpdates.downloaded) window.PluginUpdates.downloaded = [];
- if (!window.PluginUpdates.downloaded.includes(pluginName)) window.PluginUpdates.downloaded.push(pluginName);
- }
- BDFDB.PluginUtils.removeUpdateNotice(pluginName, updateNotice);
- }
- });
- };
- BDFDB.PluginUtils.checkChangeLog = function (plugin) {
- if (!BDFDB.ObjectUtils.is(plugin) || !plugin.changelog) return;
- let changeLog = BDFDB.DataUtils.load(plugin, "changelog");
- if (!changeLog.currentversion || BDFDB.NumberUtils.compareVersions(plugin.version, changeLog.currentversion)) {
- changeLog.currentversion = plugin.version;
- BDFDB.DataUtils.save(changeLog, plugin, "changelog");
- BDFDB.PluginUtils.openChangeLog(plugin);
- }
- };
- BDFDB.PluginUtils.openChangeLog = function (plugin) {
- if (!BDFDB.ObjectUtils.is(plugin) || !plugin.changelog) return;
- let changeLogHTML = "", headers = {
- added: "New Features",
- fixed: "Bug Fixes",
- improved: "Improvements",
- progress: "Progress"
- };
- for (let type in plugin.changelog) {
- type = type.toLowerCase();
- let className = BDFDB.disCN["changelog" + type];
- if (className) {
- changeLogHTML += `
${headers[type]} `;
- for (let log of plugin.changelog[type]) changeLogHTML += `${log[0]} ${log[1] ? (": " + log[1] + ".") : ""} `;
- changeLogHTML += ` `
- }
- }
- if (changeLogHTML) BDFDB.ModalUtils.open(plugin, {header:`${plugin.name} ${BDFDB.LanguageUtils.LanguageStrings.CHANGE_LOG}`, subheader:`Version ${plugin.version}`, children:BDFDB.ReactUtils.elementToReact(BDFDB.DOMUtils.create(changeLogHTML)), className:BDFDB.disCN.modalchangelogmodal, contentClassName:BDFDB.disCNS.changelogcontainer + BDFDB.disCN.modalminicontent});
- };
- BDFDB.PluginUtils.addLoadingIcon = function (icon) {
- if (!Node.prototype.isPrototypeOf(icon)) return;
- BDFDB.DOMUtils.addClass(icon, BDFDB.disCN.loadingicon);
- let loadingIconWrapper = document.querySelector(BDFDB.dotCN.app + ">" + BDFDB.dotCN.loadingiconwrapper);
- if (!loadingIconWrapper) {
- loadingIconWrapper = BDFDB.DOMUtils.create(`
`);
- document.querySelector(BDFDB.dotCN.app).appendChild(loadingIconWrapper);
- let killObserver = new MutationObserver(changes => {if (!loadingIconWrapper.firstElementChild) BDFDB.DOMUtils.remove(loadingIconWrapper);});
- killObserver.observe(loadingIconWrapper, {childList:true});
- }
- loadingIconWrapper.appendChild(icon);
- };
- BDFDB.PluginUtils.createSettingsPanel = function (plugin, children) {
- if (!BDFDB.ObjectUtils.is(plugin) || !children || (!BDFDB.ReactUtils.isValidElement(children) && !BDFDB.ArrayUtils.is(children)) || (BDFDB.ArrayUtils.is(children) && !children.length)) return;
- let settingsPanel = BDFDB.DOMUtils.create(`
`);
- BDFDB.ReactUtils.render(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsPanel, {
- key: `${plugin.name}-settingsPanel`,
- title: plugin.name,
- children
- }), settingsPanel);
- return settingsPanel;
- };
- BDFDB.PluginUtils.refreshSettingsPanel = function (plugin, settingsPanel, ...args) {
- if (!BDFDB.ObjectUtils.is(plugin) || typeof plugin.getSettingsPanel != "function" || !Node.prototype.isPrototypeOf(settingsPanel) || !settingsPanel.parentElement) return;
- settingsPanel.parentElement.appendChild(plugin.getSettingsPanel(...args));
- settingsPanel.remove();
- };
- InternalBDFDB.clearStartTimeout = function (plugin) {
- if (!BDFDB.ObjectUtils.is(plugin)) return;
- BDFDB.TimeUtils.clear(plugin.startTimeout, plugin.libLoadTimeout);
- delete plugin.startTimeout;
- delete plugin.libLoadTimeout;
- };
- InternalBDFDB.addSpecialListeners = function (plugin) {
- if (BDFDB.ObjectUtils.is(plugin)) {
- if (typeof plugin.onSettingsClosed === "function") {
- let SettingsLayer = BDFDB.ModuleUtils.findByName("StandardSidebarView");
- if (SettingsLayer) BDFDB.ModuleUtils.patch(plugin, SettingsLayer.prototype, "componentWillUnmount", {after: e => {
- plugin.onSettingsClosed();
- }});
- }
- if (typeof plugin.onSwitch === "function") {
- let spacer = document.querySelector(`${BDFDB.dotCN.guildswrapper} ~ * > ${BDFDB.dotCN.chatspacer}`);
- if (spacer) {
- let noChannelObserver = new MutationObserver(changes => {changes.forEach(change => {
- if (change.target && BDFDB.DOMUtils.containsClass(change.target, BDFDB.disCN.nochannel)) plugin.onSwitch();
- });});
- BDFDB.ObserverUtils.connect(plugin, spacer.querySelector(BDFDB.dotCNC.chat + BDFDB.dotCN.nochannel), {name:"switchFixNoChannelObserver", instance:noChannelObserver}, {attributes: true});
- let spacerObserver = new MutationObserver(changes => {changes.forEach(change => {if (change.addedNodes) {change.addedNodes.forEach(node => {
- if (BDFDB.DOMUtils.containsClass(node, BDFDB.disCN.chat, BDFDB.disCN.nochannel, false)) {
- BDFDB.ObserverUtils.connect(plugin, node, {name:"switchFixNoChannelObserver", instance:noChannelObserver}, {attributes: true});
- }
- });}});});
- BDFDB.ObserverUtils.connect(plugin, spacer, {name:"switchFixSpacerObserver", instance:spacerObserver}, {childList: true});
- }
- }
- InternalBDFDB.addContextListeners(plugin);
- }
- };
-
- BDFDB.ObserverUtils = {};
- BDFDB.ObserverUtils.connect = function (plugin, eleOrSelec, observer, config = {childList: true}) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !eleOrSelec || !observer) return;
- if (BDFDB.ObjectUtils.isEmpty(plugin.observers)) plugin.observers = {};
- if (!BDFDB.ArrayUtils.is(plugin.observers[observer.name])) plugin.observers[observer.name] = [];
- if (!observer.multi) for (let subinstance of plugin.observers[observer.name]) subinstance.disconnect();
- if (observer.instance) plugin.observers[observer.name].push(observer.instance);
- let instance = plugin.observers[observer.name][plugin.observers[observer.name].length - 1];
- if (instance) {
- let node = Node.prototype.isPrototypeOf(eleOrSelec) ? eleOrSelec : typeof eleOrSelec === "string" ? document.querySelector(eleOrSelec) : null;
- if (node) instance.observe(node, config);
- }
- };
- BDFDB.ObserverUtils.disconnect = function (plugin, observer) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (BDFDB.ObjectUtils.is(plugin) && !BDFDB.ObjectUtils.isEmpty(plugin.observers)) {
- let observername = typeof observer == "string" ? observer : (BDFDB.ObjectUtils.is(observer) ? observer.name : null);
- if (!observername) {
- for (let observer in plugin.observers) for (let instance of plugin.observers[observer]) instance.disconnect();
- delete plugin.observers;
- }
- else if (!BDFDB.ArrayUtils.is(plugin.observers[observername])) {
- for (let instance of plugin.observers[observername]) instance.disconnect();
- delete plugin.observers[observername];
- }
- }
- };
-
- BDFDB.StoreChangeUtils = {};
- BDFDB.StoreChangeUtils.add = function (plugin, store, callback) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(store) || typeof store.addChangeListener != "function" || typeof callback != "function") return;
- BDFDB.ListenerUtils.remove(plugin, store, callback);
- if (!BDFDB.ArrayUtils.is(plugin.changeListeners)) plugin.changeListeners = [];
- plugin.changeListeners.push({store, callback});
- store.addChangeListener(callback);
- };
- BDFDB.StoreChangeUtils.remove = function (plugin, store, callback) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ArrayUtils.is(plugin.changeListeners)) return;
- if (!store) {
- while (plugin.changeListeners.length) {
- let listener = plugin.changeListeners.pop();
- listener.store.removeChangeListener(listener.callback);
- }
- }
- else if (BDFDB.ObjectUtils.is(store) && typeof store.addChangeListener == "function") {
- if (!callback) {
- for (let listener of plugin.changeListeners) {
- let removedListeners = [];
- if (listener.store == store) {
- listener.store.removeChangeListener(listener.callback);
- removedListeners.push(listener);
- }
- if (removedListeners.length) plugin.changeListeners = plugin.changeListeners.filter(listener => !removedListeners.includes(listener));
- }
- }
- else if (typeof callback == "function") {
- store.removeChangeListener(callback);
- plugin.changeListeners = plugin.changeListeners.filter(listener => listener.store == store && listener.callback == callback);
- }
- }
- };
-
- BDFDB.ListenerUtils = {};
- BDFDB.ListenerUtils.add = function (plugin, ele, actions, selectorOrCallback, callbackOrNothing) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || (!Node.prototype.isPrototypeOf(ele) && ele !== window) || !actions) return;
- let callbackIs4th = typeof selectorOrCallback == "function";
- let selector = callbackIs4th ? undefined : selectorOrCallback;
- let callback = callbackIs4th ? selectorOrCallback : callbackOrNothing;
- if (typeof callback != "function") return;
- BDFDB.ListenerUtils.remove(plugin, ele, actions, selector);
- for (let action of actions.split(" ")) {
- action = action.split(".");
- let eventname = action.shift().toLowerCase();
- if (!eventname) return;
- let origeventname = eventname;
- eventname = eventname == "mouseenter" || eventname == "mouseleave" ? "mouseover" : eventname;
- let namespace = (action.join(".") || "") + plugin.name;
- if (!BDFDB.ArrayUtils.is(plugin.eventListeners)) plugin.eventListeners = [];
- let eventcallback = null;
- if (selector) {
- if (origeventname == "mouseenter" || origeventname == "mouseleave") {
- eventcallback = e => {
- for (let child of e.path) if (typeof child.matches == "function" && child.matches(selector) && !child[namespace + "BDFDB" + origeventname]) {
- child[namespace + "BDFDB" + origeventname] = true;
- if (origeventname == "mouseenter") callback(BDFDB.ListenerUtils.copyEvent(e, child));
- let mouseout = e2 => {
- if (e2.target.contains(child) || e2.target == child || !child.contains(e2.target)) {
- if (origeventname == "mouseleave") callback(BDFDB.ListenerUtils.copyEvent(e, child));
- delete child[namespace + "BDFDB" + origeventname];
- document.removeEventListener("mouseout", mouseout);
- }
- };
- document.addEventListener("mouseout", mouseout);
- break;
- }
- };
- }
- else {
- eventcallback = e => {
- for (let child of e.path) if (typeof child.matches == "function" && child.matches(selector)) {
- callback(BDFDB.ListenerUtils.copyEvent(e, child));
- break;
- }
- };
- }
- }
- else eventcallback = e => {callback(BDFDB.ListenerUtils.copyEvent(e, ele));};
-
- plugin.eventListeners.push({ele, eventname, origeventname, namespace, selector, eventcallback});
- ele.addEventListener(eventname, eventcallback, true);
- }
- };
- BDFDB.ListenerUtils.remove = function (plugin, ele, actions = "", selector) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ArrayUtils.is(plugin.eventListeners)) return;
- if (!ele) {
- while (plugin.eventListeners.length) {
- let listener = plugin.eventListeners.pop();
- listener.ele.removeEventListener(listener.eventname, listener.eventcallback, true);
- }
- }
- else if (Node.prototype.isPrototypeOf(ele) || ele === window) {
- for (let action of actions.split(" ")) {
- action = action.split(".");
- let eventname = action.shift().toLowerCase();
- let namespace = (action.join(".") || "") + plugin.name;
- for (let listener of plugin.eventListeners) {
- let removedListeners = [];
- if (listener.ele == ele && (!eventname || listener.origeventname == eventname) && listener.namespace == namespace && (selector === undefined || listener.selector == selector)) {
- listener.ele.removeEventListener(listener.eventname, listener.eventcallback, true);
- removedListeners.push(listener);
- }
- if (removedListeners.length) plugin.eventListeners = plugin.eventListeners.filter(listener => !removedListeners.includes(listener));
- }
- }
- }
- };
- BDFDB.ListenerUtils.multiAdd = function (node, actions, callback) {
- if (!Node.prototype.isPrototypeOf(node) || !actions || typeof callback != "function") return;
- for (let action of actions.trim().split(" ").filter(n => n)) node.addEventListener(action, callback, true);
- };
- BDFDB.ListenerUtils.multiRemove = function (node, actions, callback) {
- if (!Node.prototype.isPrototypeOf(node) || !actions || typeof callback != "function") return;
- for (let action of actions.trim().split(" ").filter(n => n)) node.removeEventListener(action, callback, true);
- };
- BDFDB.ListenerUtils.addToChildren = function (node, actions, selector, callback) {
- if (!Node.prototype.isPrototypeOf(node) || !actions || !selector || !selector.trim() || typeof callback != "function") return;
- for (let action of actions.trim().split(" ").filter(n => n)) {
- let eventcallback = callback;
- if (action == "mouseenter" || action == "mouseleave") eventcallback = e => {if (e.target.matches(selector)) callback(e);};
- node.querySelectorAll(selector.trim()).forEach(child => {child.addEventListener(action, eventcallback, true);});
- }
- };
- BDFDB.ListenerUtils.copyEvent = function (e, ele) {
- if (!e || !e.constructor || !e.type) return e;
- let ecopy = new e.constructor(e.type, e);
- Object.defineProperty(ecopy, "originalEvent", {value: e});
- Object.defineProperty(ecopy, "which", {value: e.which});
- Object.defineProperty(ecopy, "keyCode", {value: e.keyCode});
- Object.defineProperty(ecopy, "path", {value: e.path});
- Object.defineProperty(ecopy, "relatedTarget", {value: e.relatedTarget});
- Object.defineProperty(ecopy, "srcElement", {value: e.srcElement});
- Object.defineProperty(ecopy, "target", {value: e.target});
- Object.defineProperty(ecopy, "toElement", {value: e.toElement});
- if (ele) Object.defineProperty(ecopy, "currentTarget", {value: ele});
- return ecopy;
- };
- BDFDB.ListenerUtils.stopEvent = function (e) {
- if (BDFDB.ObjectUtils.is(e)) {
- if (typeof e.preventDefault == "function") e.preventDefault();
- if (typeof e.stopPropagation == "function") e.stopPropagation();
- if (typeof e.stopImmediatePropagation == "function") e.stopImmediatePropagation();
- if (BDFDB.ObjectUtils.is(e.originalEvent)) {
- if (typeof e.originalEvent.preventDefault == "function") e.originalEvent.preventDefault();
- if (typeof e.originalEvent.stopPropagation == "function") e.originalEvent.stopPropagation();
- if (typeof e.originalEvent.stopImmediatePropagation == "function") e.originalEvent.stopImmediatePropagation();
- }
- }
- };
-
- var NotificationBars = [], DesktopNotificationQueue = {queue:[], running:false};
- BDFDB.NotificationUtils = {};
- BDFDB.NotificationUtils.toast = function (text, options = {}) {
- let toasts = document.querySelector(".toasts, .bd-toasts");
- if (!toasts) {
- let channels = document.querySelector(BDFDB.dotCN.channels + " + div");
- let channelRects = channels ? BDFDB.DOMUtils.getRects(channels) : null;
- let members = channels ? channels.querySelector(BDFDB.dotCN.memberswrap) : null;
- let left = channelRects ? channelRects.left : 310;
- let width = channelRects ? (members ? channelRects.width - BDFDB.DOMUtils.getRects(members).width : channelRects.width) : window.outerWidth - 0;
- let form = channels ? channels.querySelector("form") : null;
- let bottom = form ? BDFDB.DOMUtils.getRects(form).height : 80;
- toasts = BDFDB.DOMUtils.create(`
`);
- (document.querySelector(BDFDB.dotCN.app) || document.body).appendChild(toasts);
- }
- const {type = "", icon = true, timeout = 3000, html = false, selector = "", nopointer = false, color = ""} = options;
- let toast = BDFDB.DOMUtils.create(`${html === true ? text : BDFDB.StringUtils.htmlEscape(text)}
`);
- if (type) {
- BDFDB.DOMUtils.addClass(toast, "toast-" + type);
- if (icon) BDFDB.DOMUtils.addClass(toast, "icon");
- }
- else if (color) {
- let rgbcolor = BDFDB.ColorUtils.convert(color, "RGB");
- if (rgbcolor) toast.style.setProperty("background-color", rgbcolor);
- }
- BDFDB.DOMUtils.addClass(toast, selector);
- toasts.appendChild(toast);
- toast.close = _ => {
- if (document.contains(toast)) {
- BDFDB.DOMUtils.addClass(toast, "closing");
- toast.style.setProperty("pointer-events", "none", "important");
- BDFDB.TimeUtils.timeout(_ => {
- toast.remove();
- if (!toasts.querySelectorAll(".toast, .bd-toast").length) toasts.remove();
- }, 3000);
- }
- };
- if (nopointer) toast.style.setProperty("pointer-events", "none", "important");
- else toast.addEventListener("click", toast.close);
- BDFDB.TimeUtils.timeout(_ => {toast.close();}, timeout > 0 ? timeout : 600000);
- return toast;
- };
- BDFDB.NotificationUtils.desktop = function (parsedcontent, parsedoptions = {}) {
- const queue = _ => {
- DesktopNotificationQueue.queue.push({parsedcontent, parsedoptions});
- runqueue();
- };
- const runqueue = _ => {
- if (!DesktopNotificationQueue.running) {
- let notification = DesktopNotificationQueue.queue.shift();
- if (notification) notify(notification.parsedcontent, notification.parsedoptions);
- }
- };
- const notify = (content, options) => {
- DesktopNotificationQueue.running = true;
- let muted = options.silent;
- options.silent = options.silent || options.sound ? true : false;
- let notification = new Notification(content, options);
- let audio = new Audio();
- let timeout = BDFDB.TimeUtils.timeout(_ => {close();}, options.timeout ? options.timeout : 3000);
- if (typeof options.click == "function") notification.onclick = _ => {
- BDFDB.TimeUtils.clear(timeout);
- close();
- options.click();
- };
- if (!muted && options.sound) {
- audio.src = options.sound;
- audio.play();
- }
- const close = _ => {
- audio.pause();
- notification.close();
- DesktopNotificationQueue.running = false;
- BDFDB.TimeUtils.timeout(_ => {runqueue();}, 1000);
- };
- };
- if (!("Notification" in window)) {}
- else if (Notification.permission === "granted") queue();
- else if (Notification.permission !== "denied") Notification.requestPermission(function (response) {if (response === "granted") queue();});
- };
- BDFDB.NotificationUtils.notice = function (text, options = {}) {
- if (!text) return;
- let layers = document.querySelector(BDFDB.dotCN.layers);
- if (!layers) return;
- let id = BDFDB.NumberUtils.generateId(NotificationBars);
- let notice = BDFDB.DOMUtils.create(``);
- layers.parentElement.insertBefore(notice, layers);
- let noticeMessage = notice.querySelector(".notice-message");
- if (options.platform) for (let platform of options.platform.split(" ")) if (DiscordClasses["noticeicon" + platform]) {
- let icon = BDFDB.DOMUtils.create(` `);
- BDFDB.DOMUtils.addClass(icon, BDFDB.disCN.noticeplatformicon);
- BDFDB.DOMUtils.removeClass(icon, BDFDB.disCN.noticeicon);
- notice.insertBefore(icon, noticeMessage);
- }
- if (options.customicon) {
- let iconinner = BDFDB.DOMUtils.create(options.customicon)
- let icon = BDFDB.DOMUtils.create(` `);
- if (iconinner.tagName == "span" && !iconinner.firstElementChild) icon.style.setProperty("background", `url(${options.customicon}) center/cover no-repeat`);
- else icon.appendChild(iconinner);
- BDFDB.DOMUtils.addClass(icon, BDFDB.disCN.noticeplatformicon);
- BDFDB.DOMUtils.removeClass(icon, BDFDB.disCN.noticeicon);
- notice.insertBefore(icon, noticeMessage);
- }
- if (options.btn || options.button) notice.appendChild(BDFDB.DOMUtils.create(`${options.btn || options.button} `));
- if (options.id) notice.id = options.id.split(" ").join("");
- if (options.selector) BDFDB.DOMUtils.addClass(notice, options.selector);
- if (options.css) BDFDB.DOMUtils.appendLocalStyle("BDFDBcustomNotificationBar" + id, options.css);
- if (options.style) notice.style = options.style;
- if (options.html === true) noticeMessage.innerHTML = text;
- else {
- let link = document.createElement("a");
- let newText = [];
- for (let word of text.split(" ")) {
- let encodedWord = BDFDB.StringUtils.htmlEscape(word);
- link.href = word;
- newText.push(link.host && link.host !== window.location.host ? `${encodedWord} ` : encodedWord);
- }
- noticeMessage.innerHTML = newText.join(" ");
- }
- let type = null;
- if (options.type && !document.querySelector(BDFDB.dotCNS.chatbase + BDFDB.dotCN.noticestreamer)) {
- if (type = BDFDB.disCN["notice" + options.type]) BDFDB.DOMUtils.addClass(notice, type);
- if (options.type == "premium") {
- let noticeButton = notice.querySelector(BDFDB.dotCN.noticebutton);
- if (noticeButton) BDFDB.DOMUtils.addClass(noticeButton, BDFDB.disCN.noticepremiumaction);
- BDFDB.DOMUtils.addClass(noticeMessage, BDFDB.disCN.noticepremiumtext);
- notice.insertBefore(BDFDB.DOMUtils.create(` `), noticeMessage);
- }
- }
- if (!type) {
- let comp = BDFDB.ColorUtils.convert(options.color, "RGBCOMP");
- if (comp) {
- let fontColor = comp[0] > 180 && comp[1] > 180 && comp[2] > 180 ? "#000" : "#FFF";
- let backgroundcolor = BDFDB.ColorUtils.convert(comp, "HEX");
- let filter = comp[0] > 180 && comp[1] > 180 && comp[2] > 180 ? "brightness(0%)" : "brightness(100%)";
- BDFDB.DOMUtils.appendLocalStyle("BDFDBcustomNotificationBarColorCorrection" + id, `${BDFDB.dotCN.noticewrapper}[notice-id="${id}"]{background-color:${backgroundcolor} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] .notice-message {color:${fontColor} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] ${BDFDB.dotCN.noticebutton} {color:${fontColor} !important;border-color:${BDFDB.ColorUtils.setAlpha(fontColor, 0.25, "RGBA")} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] ${BDFDB.dotCN.noticebutton}:hover {color:${backgroundcolor} !important;background-color:${fontColor} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] ${BDFDB.dotCN.noticedismiss} {filter:${filter} !important;}`);
- }
- else BDFDB.DOMUtils.addClass(notice, BDFDB.disCN.noticedefault);
- }
- notice.style.setProperty("height", "36px", "important");
- notice.style.setProperty("min-width", "70vw", "important");
- notice.style.setProperty("left", "unset", "important");
- notice.style.setProperty("right", "unset", "important");
- let sideMargin = ((BDFDB.DOMUtils.getWidth(document.body.firstElementChild) - BDFDB.DOMUtils.getWidth(notice))/2);
- notice.style.setProperty("left", sideMargin + "px", "important");
- notice.style.setProperty("right", sideMargin + "px", "important");
- notice.style.setProperty("min-width", "unset", "important");
- notice.style.setProperty("width", "unset", "important");
- notice.style.setProperty("max-width", "calc(100vw - " + (sideMargin*2) + "px)", "important");
- notice.querySelector(BDFDB.dotCN.noticedismiss).addEventListener("click", _ => {
- notice.style.setProperty("overflow", "hidden", "important");
- notice.style.setProperty("height", "0px", "important");
- BDFDB.TimeUtils.timeout(_ => {
- BDFDB.ArrayUtils.remove(NotificationBars, id);
- BDFDB.DOMUtils.removeLocalStyle("BDFDBcustomNotificationBar" + id);
- BDFDB.DOMUtils.removeLocalStyle("BDFDBcustomNotificationBarColorCorrection" + id);
- notice.remove();
- }, 500);
- });
- return notice;
- };
- BDFDB.NotificationUtils.alert = function (header, body) {
- if (typeof header == "string" && typeof header == "string" && window.BdApi && typeof BdApi.alert == "function") BdApi.alert(header, body);
- };
-
- var Tooltips = [];
- BDFDB.TooltipUtils = {};
- BDFDB.TooltipUtils.create = function (anker, text, options = {}) {
- let itemLayerContainer = document.querySelector(BDFDB.dotCN.appmount + " > " + BDFDB.dotCN.itemlayercontainer);
- if (!itemLayerContainer || (typeof text != "string" && !BDFDB.ObjectUtils.is(options.guild)) || !Node.prototype.isPrototypeOf(anker) || !document.contains(anker)) return null;
- let id = BDFDB.NumberUtils.generateId(Tooltips);
- let itemLayer = BDFDB.DOMUtils.create(``);
- itemLayerContainer.appendChild(itemLayer);
-
- let tooltip = itemLayer.firstElementChild;
-
- if (options.id) tooltip.id = options.id.split(" ").join("");
-
- if (typeof options.type != "string" || !BDFDB.disCN["tooltip" + options.type.toLowerCase()]) options.type = "top";
- let type = options.type.toLowerCase();
- BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN["tooltip" + type]);
-
- let fontColorIsGradient = false, customBackgroundColor = false, style = "";
- if (options.style) style += options.style;
- if (options.fontColor) {
- fontColorIsGradient = BDFDB.ObjectUtils.is(options.fontColor);
- if (!fontColorIsGradient) style = (style ? (style + " ") : "") + `color: ${BDFDB.ColorUtils.convert(options.fontColor, "RGBA")} !important;`
- }
- if (options.backgroundColor) {
- customBackgroundColor = true;
- let backgroundColorIsGradient = BDFDB.ObjectUtils.is(options.backgroundColor);
- let backgroundColor = !backgroundColorIsGradient ? BDFDB.ColorUtils.convert(options.backgroundColor, "RGBA") : BDFDB.ColorUtils.createGradient(options.backgroundColor);
- style = (style ? (style + " ") : "") + `background: ${backgroundColor} !important; border-color: ${backgroundColorIsGradient ? BDFDB.ColorUtils.convert(options.backgroundColor[type == "left" ? 100 : 0], "RGBA") : backgroundColor} !important;`;
- }
- if (style) tooltip.style = style;
- if (typeof options.zIndex == "number") {
- itemLayer.style.setProperty("z-index", options.zIndex, "important");
- tooltip.style.setProperty("z-index", options.zIndex, "important");
- }
- if (customBackgroundColor) BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN.tooltipcustom);
- else if (options.color && BDFDB.disCN["tooltip" + options.color.toLowerCase()]) BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN["tooltip" + options.color.toLowerCase()]);
- else BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN.tooltipblack);
-
- if (options.list || BDFDB.ObjectUtils.is(options.guild)) BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN.tooltiplistitem);
-
- if (options.selector) BDFDB.DOMUtils.addClass(tooltip, options.selector);
-
- if (BDFDB.ObjectUtils.is(options.guild)) {
- let streamOwnerIds = LibraryModules.StreamUtils.getAllApplicationStreams().filter(app => app.guildId === options.guild.id).map(app => app.ownerId);
- let streamOwners = streamOwnerIds.map(ownerId => LibraryModules.UserStore.getUser(ownerId)).filter(n => n);
- let connectedUsers = Object.keys(LibraryModules.VoiceUtils.getVoiceStates(options.guild.id)).map(userId => !streamOwnerIds.includes(userId) && BDFDB.LibraryModules.UserStore.getUser(userId)).filter(n => n);
- let tooltipText = text || options.guild.toString();
- if (fontColorIsGradient) tooltipText = `${BDFDB.StringUtils.htmlEscape(tooltipText)} `;
- BDFDB.ReactUtils.render(BDFDB.ReactUtils.createElement(BDFDB.ReactUtils.Fragment, {
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tooltiprow, BDFDB.disCN.tooltiprowguildname),
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.Badge, {
- guild: options.guild,
- size: LibraryModules.StringUtils.cssValueToNumber(DiscordClassModules.TooltipGuild.iconSize),
- className: BDFDB.disCN.tooltiprowicon
- }),
- BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tooltipguildnametext, (connectedUsers.length || streamOwners.length) && BDFDB.disCN.tooltipguildnametextlimitedsize),
- children: fontColorIsGradient || options.html ? BDFDB.ReactUtils.elementToReact(BDFDB.DOMUtils.create(tooltipText)) : tooltipText
- })
- ]
- }),
- connectedUsers.length ? BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.tooltiprow,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- name: InternalComponents.LibraryComponents.SvgIcon.Names.SPEAKER,
- className: BDFDB.disCN.tooltipactivityicon
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.UserSummaryItem, {
- users: connectedUsers,
- max: 6
- })
- ]
- }) : null,
- streamOwners.length ? BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.tooltiprow,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- name: InternalComponents.LibraryComponents.SvgIcon.Names.STREAM,
- className: BDFDB.disCN.tooltipactivityicon
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.UserSummaryItem, {
- users: streamOwners,
- max: 6
- })
- ]
- }) : null
- ].filter(n => n)
- }), tooltip);
- }
- else {
- if (fontColorIsGradient) tooltip.innerHTML = `${BDFDB.StringUtils.htmlEscape(text)} `;
- else if (options.html === true) tooltip.innerHTML = text;
- else tooltip.innerText = text;
- }
-
- tooltip.appendChild(BDFDB.DOMUtils.create(`
`));
-
- if (options.hide) BDFDB.DOMUtils.appendLocalStyle("BDFDBhideOtherTooltips" + id, `#app-mount ${BDFDB.dotCN.tooltip}:not([tooltip-id="${id}"]) {display: none !important;}`, itemLayerContainer);
-
- let mouseleave = _ => {BDFDB.DOMUtils.remove(itemLayer);};
- anker.addEventListener("mouseleave", mouseleave);
-
- let observer = new MutationObserver(changes => changes.forEach(change => {
- let nodes = Array.from(change.removedNodes);
- if (nodes.indexOf(itemLayer) > -1 || nodes.indexOf(anker) > -1 || nodes.some(n => n.contains(anker))) {
- BDFDB.ArrayUtils.remove(Tooltips, id);
- observer.disconnect();
- BDFDB.DOMUtils.remove(itemLayer);
- BDFDB.DOMUtils.removeLocalStyle("BDFDBhideOtherTooltips" + id, itemLayerContainer);
- anker.removeEventListener("mouseleave", mouseleave);
- }
- }));
- observer.observe(document.body, {subtree:true, childList:true});
-
- (tooltip.update = _ => {
- let pointer = tooltip.querySelector(BDFDB.dotCN.tooltippointer);
- let left, top, tRects = BDFDB.DOMUtils.getRects(anker), iRects = BDFDB.DOMUtils.getRects(itemLayer), aRects = BDFDB.DOMUtils.getRects(document.querySelector(BDFDB.dotCN.appmount)), positionOffsets = {height: 10, width: 10}, offset = typeof options.offset == "number" ? options.offset : 0;
- switch (type) {
- case "top":
- top = tRects.top - iRects.height - positionOffsets.height + 2 - offset;
- left = tRects.left + (tRects.width - iRects.width) / 2;
- break;
- case "bottom":
- top = tRects.top + tRects.height + positionOffsets.height - 2 + offset;
- left = tRects.left + (tRects.width - iRects.width) / 2;
- break;
- case "left":
- top = tRects.top + (tRects.height - iRects.height) / 2;
- left = tRects.left - iRects.width - positionOffsets.width + 2 - offset;
- break;
- case "right":
- top = tRects.top + (tRects.height - iRects.height) / 2;
- left = tRects.left + tRects.width + positionOffsets.width - 2 + offset;
- break;
- }
-
- itemLayer.style.setProperty("top", top + "px");
- itemLayer.style.setProperty("left", left + "px");
-
- pointer.style.removeProperty("margin-left");
- pointer.style.removeProperty("margin-top");
- if (type == "top" || type == "bottom") {
- if (left < 0) {
- itemLayer.style.setProperty("left", "5px");
- pointer.style.setProperty("margin-left", `${left - 10}px`);
- }
- else {
- let rightMargin = aRects.width - (left + iRects.width);
- if (rightMargin < 0) {
- itemLayer.style.setProperty("left", (aRects.width - iRects.width - 5) + "px");
- pointer.style.setProperty("margin-left", `${-1*rightMargin}px`);
- }
- }
- }
- else if (type == "left" || type == "right") {
- if (top < 0) {
- itemLayer.style.setProperty("top", "5px");
- pointer.style.setProperty("margin-top", `${top - 10}px`);
- }
- else {
- let bottomMargin = aRects.height - (top + iRects.height);
- if (bottomMargin < 0) {
- itemLayer.style.setProperty("top", aRects.height - iRects.height - 5 + "px");
- pointer.style.setProperty("margin-top", `${-1*bottomMargin}px`);
- }
- }
- }
- })();
-
- if (options.delay) {
- BDFDB.DOMUtils.toggle(itemLayer);
- BDFDB.TimeUtils.timeout(_ => {BDFDB.DOMUtils.toggle(itemLayer);}, options.delay);
- }
- return itemLayer;
- };
-
- BDFDB.ObjectUtils = {};
- BDFDB.ObjectUtils.is = function (obj) {
- return obj && Object.prototype.isPrototypeOf(obj) && !Array.prototype.isPrototypeOf(obj);
- };
- BDFDB.ObjectUtils.extract = function (obj, ...keys) {
- let newObj = {};
- if (BDFDB.ObjectUtils.is(obj)) for (let key of keys.flat(10).filter(n => n)) if (obj[key]) newObj[key] = obj[key];
- return newObj;
- };
- BDFDB.ObjectUtils.exclude = function (obj, ...keys) {
- let newObj = Object.assign({}, obj);
- BDFDB.ObjectUtils.delete(newObj, ...keys)
- return newObj;
- };
- BDFDB.ObjectUtils.delete = function (obj, ...keys) {
- if (BDFDB.ObjectUtils.is(obj)) for (let key of keys.flat(10).filter(n => n)) delete obj[key];
- };
- BDFDB.ObjectUtils.sort = function (obj, sort, except) {
- if (!BDFDB.ObjectUtils.is(obj)) return {};
- let newObj = {};
- if (sort === undefined || !sort) for (let key of Object.keys(obj).sort()) newObj[key] = obj[key];
- else {
- let values = [];
- for (let key in obj) values.push(obj[key]);
- values = BDFDB.ArrayUtils.keySort(values, sort, except);
- for (let value of values) for (let key in obj) if (BDFDB.equals(value, obj[key])) {
- newObj[key] = value;
- break;
- }
- }
- return newObj;
- };
- BDFDB.ObjectUtils.reverse = function (obj, sort) {
- if (!BDFDB.ObjectUtils.is(obj)) return {};
- let newObj = {};
- for (let key of (sort === undefined || !sort) ? Object.keys(obj).reverse() : Object.keys(obj).sort().reverse()) newObj[key] = obj[key];
- return newObj;
- };
- BDFDB.ObjectUtils.filter = function (obj, filter, byKey = false) {
- if (!BDFDB.ObjectUtils.is(obj)) return {};
- if (typeof filter != "function") return obj;
- return Object.keys(obj).filter(key => filter(byKey ? key : obj[key])).reduce((newObj, key) => (newObj[key] = obj[key], newObj), {});
- };
- BDFDB.ObjectUtils.push = function (obj, value) {
- if (BDFDB.ObjectUtils.is(obj)) obj[Object.keys(obj).length] = value;
- };
- BDFDB.ObjectUtils.pop = function (obj, value) {
- if (BDFDB.ObjectUtils.is(obj)) {
- let keys = Object.keys(obj);
- if (!keys.length) return;
- let value = obj[keys[keys.length-1]];
- delete obj[keys[keys.length-1]];
- return value;
- }
- };
- BDFDB.ObjectUtils.map = function (obj, mapfunc) {
- if (!BDFDB.ObjectUtils.is(obj)) return {};
- if (typeof mapfunc != "string" && typeof mapfunc != "function") return obj;
- let newObj = {};
- for (let key in obj) if (BDFDB.ObjectUtils.is(obj[key])) newObj[key] = typeof mapfunc == "string" ? obj[key][mapfunc] : mapfunc(obj[key], key);
- return newObj;
- };
- BDFDB.ObjectUtils.toArray = function (obj) {
- if (!BDFDB.ObjectUtils.is(obj)) return [];
- return Object.entries(obj).map(n => n[1]);
- };
- BDFDB.ObjectUtils.deepAssign = function (obj, ...objs) {
- if (!objs.length) return obj;
- let nextobj = objs.shift();
- if (BDFDB.ObjectUtils.is(obj) && BDFDB.ObjectUtils.is(nextobj)) {
- for (let key in nextobj) {
- if (BDFDB.ObjectUtils.is(nextobj[key])) {
- if (!obj[key]) Object.assign(obj, {[key]:{}});
- BDFDB.ObjectUtils.deepAssign(obj[key], nextobj[key]);
- }
- else Object.assign(obj, {[key]:nextobj[key]});
- }
- }
- return BDFDB.ObjectUtils.deepAssign(obj, ...objs);
- };
- BDFDB.ObjectUtils.isEmpty = function (obj) {
- return !BDFDB.ObjectUtils.is(obj) || Object.getOwnPropertyNames(obj).length == 0;
- };
-
- BDFDB.ArrayUtils = {};
- BDFDB.ArrayUtils.is = function (array) {
- return array && Array.isArray(array);
- };
- BDFDB.ArrayUtils.sum = function (array) {
- return Array.isArray(array) ? array.reduce((total, num) => total + Math.round(num), 0) : 0;
- };
- BDFDB.ArrayUtils.keySort = function (array, key, except) {
- if (!BDFDB.ArrayUtils.is(array)) return [];
- if (key == null) return array;
- if (except === undefined) except = null;
- return array.sort((x, y) => {
- let xValue = x[key], yValue = y[key];
- if (xValue !== except) return xValue < yValue ? -1 : xValue > yValue ? 1 : 0;
- });
- };
- BDFDB.ArrayUtils.numSort = function (array) {
- return array.sort((x, y) => {return x < y ? -1 : x > y ? 1 : 0;});
- };
- BDFDB.ArrayUtils.includes = function (array, ...values) {
- if (!BDFDB.ArrayUtils.is(array)) return null;
- if (!array.length) return false;
- let all = values.pop();
- if (typeof all != "boolean") {
- values.push(all);
- all = true;
- }
- if (!values.length) return false;
- let contained = undefined;
- for (let v of values) {
- if (contained === undefined) contained = all;
- if (all && !array.includes(v)) contained = false;
- if (!all && array.includes(v)) contained = true;
- }
- return contained;
- };
- BDFDB.ArrayUtils.remove = function (array, value, all = false) {
- if (!BDFDB.ArrayUtils.is(array)) return [];
- if (!array.includes(value)) return array;
- if (!all) array.splice(array.indexOf(value), 1);
- else while (array.indexOf(value) > -1) array.splice(array.indexOf(value), 1);
- return array;
- };
- BDFDB.ArrayUtils.getAllIndexes = function (array, value) {
- if (!BDFDB.ArrayUtils.is(array) && typeof array != "string") return [];
- var indexes = [], index = -1;
- while ((index = array.indexOf(value, index + 1)) !== -1) indexes.push(index);
- return indexes;
- };
- BDFDB.ArrayUtils.removeCopies = function (array) {
- if (!BDFDB.ArrayUtils.is(array)) return [];
- return [...new Set(array)];
- };
-
- BDFDB.ModuleUtils = {};
- BDFDB.ModuleUtils.cached = window.BDFDB && window.BDFDB.ModuleUtils && window.BDFDB.ModuleUtils.cached || {};
- BDFDB.ModuleUtils.find = function (filter, getExport) {
- getExport = typeof getExport != "boolean" ? true : getExport;
- let req = InternalBDFDB.getWebModuleReq();
- for (let i in req.c) if (req.c.hasOwnProperty(i)) {
- let m = req.c[i].exports;
- if (m && (typeof m == "object" || typeof m == "function") && filter(m)) return getExport ? m : req.c[i];
- if (m && m.__esModule) {
- for (let j in m) if (m[j] && (typeof m[j] == "object" || typeof m[j] == "function") && filter(m[j])) return getExport ? m[j] : req.c[i];
- if (m.default && (typeof m.default == "object" || typeof m.default == "function")) for (let j in m.default) if (m.default[j] && (typeof m.default[j] == "object" || typeof m.default[j] == "function") && filter(m.default[j])) return getExport ? m.default[j] : req.c[i];
- }
- }
- for (let i in req.m) if (req.m.hasOwnProperty(i)) {
- let m = req.m[i];
- if (m && typeof m == "function" && filter(m)) {
- if (req.c[i]) return getExport ? req.c[i].exports : req.c[i];
- else {
- let resolved = {};
- req.m[i](resolved, null, req);
- return getExport ? resolved.exports : resolved;
- }
- }
- }
- };
- BDFDB.ModuleUtils.findByProperties = function (...properties) {
- properties = properties.flat(10);
- let getExport = properties.pop();
- if (typeof getExport != "boolean") {
- properties.push(getExport);
- getExport = true;
- }
- return InternalBDFDB.findModule("prop", JSON.stringify(properties), m => properties.every(prop => m[prop] !== undefined), getExport);
- };
- BDFDB.ModuleUtils.findByName = function (name, getExport) {
- return InternalBDFDB.findModule("name", JSON.stringify(name), m => m.displayName === name || m.render && m.render.displayName === name, typeof getExport != "boolean" ? true : getExport);
- };
- BDFDB.ModuleUtils.findByString = function (...strings) {
- strings = strings.flat(10);
- let getExport = strings.pop();
- if (typeof getExport != "boolean") {
- strings.push(getExport);
- getExport = true;
- }
- return InternalBDFDB.findModule("string", JSON.stringify(strings), m => strings.every(string => typeof m == "function" && (m.toString().indexOf(string) > -1 || typeof m.__originalMethod == "function" && m.__originalMethod.toString().indexOf(string) > -1 || typeof m.__originalFunction == "function" && m.__originalFunction.toString().indexOf(string) > -1) || BDFDB.ObjectUtils.is(m) && typeof m.type == "function" && m.type.toString().indexOf(string) > -1), getExport);
- };
- BDFDB.ModuleUtils.findByPrototypes = function (...protoprops) {
- protoprops = protoprops.flat(10);
- let getExport = protoprops.pop();
- if (typeof getExport != "boolean") {
- protoprops.push(getExport);
- getExport = true;
- }
- return InternalBDFDB.findModule("proto", JSON.stringify(protoprops), m => m.prototype && protoprops.every(prop => m.prototype[prop] !== undefined), getExport);
- };
- InternalBDFDB.findModule = function (type, cachestring, filter, getExport) {
- if (!BDFDB.ObjectUtils.is(BDFDB.ModuleUtils.cached[type])) BDFDB.ModuleUtils.cached[type] = {module:{}, export:{}};
- if (getExport && BDFDB.ModuleUtils.cached[type].export[cachestring]) return BDFDB.ModuleUtils.cached[type].export[cachestring];
- else if (!getExport && BDFDB.ModuleUtils.cached[type].module[cachestring]) return BDFDB.ModuleUtils.cached[type].module[cachestring];
- else {
- var m = BDFDB.ModuleUtils.find(filter, getExport);
- if (m) {
- if (getExport) BDFDB.ModuleUtils.cached[type].export[cachestring] = m;
- else BDFDB.ModuleUtils.cached[type].module[cachestring] = m;
- return m;
- }
- else BDFDB.LogUtils.warn(`${cachestring} [${type}] not found in WebModules`);
- }
- };
- InternalBDFDB.getWebModuleReq = function () {
- if (!InternalBDFDB.getWebModuleReq.req) {
- const id = "BDFDB-WebModules";
- const req = window.webpackJsonp.push([[], {[id]: (module, exports, req) => module.exports = req}, [[id]]]);
- delete req.m[id];
- delete req.c[id];
- InternalBDFDB.getWebModuleReq.req = req;
- }
- return InternalBDFDB.getWebModuleReq.req;
- };
-
- var WebModulesData = {};
- WebModulesData.PatchTypes = ["before", "instead", "after"];
- WebModulesData.PatchMap = {
- BannedCard: "BannedUser",
- ChannelWindow: "Channel",
- InvitationCard: "InviteRow",
- InviteCard: "InviteRow",
- MemberCard: "Member",
- PopoutContainer: "Popout",
- QuickSwitchResult: "Result",
- UserProfile: "UserProfileBody",
- WebhookCard: "Webhook"
- };
- WebModulesData.ForceObserve = [
- "DirectMessage",
- "GuildIcon"
- ];
- WebModulesData.MemoComponent = [
- "ExpressionPicker",
- "ExpressionEmojiPicker",
- "GuildFolder",
- "MessageContent",
- "NowPlayingHeader"
- ];
- WebModulesData.NonRender = BDFDB.ArrayUtils.removeCopies([].concat(WebModulesData.MemoComponent, [
- "Attachment",
- "ConnectedPrivateChannelsList",
- "ContextMenuItem",
- "DiscordTag",
- "InviteModalUserRow",
- "Mention",
- "Message",
- "MessageTimestamp",
- "NameTag",
- "NowPlayingItem",
- "PrivateChannelEmptyMessage",
- "RecentsHeader",
- "SystemMessage",
- "SimpleMessageAccessories",
- "UserInfo"
- ]));
- WebModulesData.LoadedInComponents = {
- AutocompleteChannelResult: "LibraryComponents.AutocompleteItems.Channel",
- AutocompleteUserResult: "LibraryComponents.AutocompleteItems.User",
- ContextMenuItem: "NativeSubComponents.ContextMenuItem",
- QuickSwitchChannelResult: "LibraryComponents.QuickSwitchItems.Channel",
- QuickSwitchGroupDMResult: "LibraryComponents.QuickSwitchItems.GroupDM",
- QuickSwitchGuildResult: "LibraryComponents.QuickSwitchItems.Guild",
- QuickSwitchUserResult: "LibraryComponents.QuickSwitchItems.User",
- };
- WebModulesData.SpecialFilter = {
- V2C_ContentColumn: ins => ins && ins.return && ins.return.stateNode && ins.return.stateNode.props && typeof ins.return.stateNode.props.title == "string" && (ins.return.stateNode.props.title.toUpperCase().indexOf("PLUGINS") == 0 || ins.return.stateNode.props.title.toUpperCase().indexOf("THEMES") == 0) && ins.return.type,
- V2C_PluginCard: ins => ins && ins.return && ins.return.stateNode && ins.return.stateNode.props && ins.return.stateNode.props.addon && ins.return.stateNode.props.addon.plugin && ins.return.type,
- V2C_ThemeCard: ins => ins && ins.return && ins.return.stateNode && ins.return.stateNode.props && ins.return.stateNode.props.addon && ins.return.stateNode.props.addon.css && ins.return.type,
- GuildFolder: ins => ins && ins.return && ins.return.memoizedProps && ins.return.memoizedProps.folderId && ins.return.memoizedProps.guildIds && ins.return.type
- };
- WebModulesData.PatchFinder = {
- Account: "accountinfo",
- App: "app",
- AppSkeleton: "app",
- AppView: "appcontainer",
- AuthWrapper: "loginscreen",
- BannedCard: "guildsettingsbannedcard",
- Category: "categorycontainerdefault",
- ChannelCall: "callcurrentcontainer",
- ChannelMember: "member",
- Channels: "guildchannels",
- ChannelTextAreaForm: "chatform",
- ChannelWindow: "chatcontent",
- DirectMessage: "guildouter",
- EmojiPicker: "emojipicker",
- Guild: "guildouter",
- GuildFolder: "guildfolderwrapper",
- GuildIcon: "avataricon",
- Guilds: "guildswrapper",
- GuildSettingsBans: "guildsettingsbannedcard",
- GuildSettingsEmoji: "guildsettingsemojicard",
- GuildSettingsMembers: "guildsettingsmembercard",
- GuildSidebar: "guildchannels",
- I18nLoaderWrapper: "app",
- InstantInviteModal: "invitemodalwrapper",
- InvitationCard: "invitemodalinviterow",
- InviteCard: "guildsettingsinvitecard",
- MemberCard: "guildsettingsmembercard",
- Messages: "messages",
- MessagesPopout: "messagespopout",
- ModalLayer: "layermodal",
- MutualGuilds: "userprofilebody",
- MutualFriends: "userprofilebody",
- Note: "usernote",
- PopoutContainer: "popout",
- Popouts: "popouts",
- PrivateChannelCall: "callcurrentcontainer",
- PrivateChannelCallParticipants: "callcurrentcontainer",
- PrivateChannelRecipientsInvitePopout: "searchpopoutdmaddpopout",
- PrivateChannelsList: "dmchannelsscroller",
- QuickSwitchChannelResult: "quickswitchresult",
- QuickSwitchGuildResult: "quickswitchresult",
- QuickSwitchResult: "quickswitchresult",
- SearchResults: "searchresultswrap",
- TypingUsers: "typing",
- UnreadDMs: "guildsscroller",
- Upload: "uploadmodal",
- UserHook: "auditloguserhook",
- UserPopout: "userpopout",
- UserProfile: "userprofile",
- V2C_ContentColumn: "contentcolumn",
- V2C_PluginCard: "_repocard",
- V2C_ThemeCard: "_repocard"
- };
- WebModulesData.CodeFinder = {
- ExpressionEmojiPicker: ["allowManagedEmojis", "EMOJI_PICKER_TAB_PANEL_ID", "diversitySelector"]
- };
- WebModulesData.PropsFinder = {
- MessageHeader: "MessageTimestamp",
- UnavailableGuildsButton: "UnavailableGuildsButton"
- };
- WebModulesData.NonPrototype = BDFDB.ArrayUtils.removeCopies([].concat(WebModulesData.NonRender, Object.keys(WebModulesData.CodeFinder), Object.keys(WebModulesData.PropsFinder), [
- "ChannelTextAreaContainer"
- ]));
-
- BDFDB.ModuleUtils.isPatched = function (plugin, module, methodName) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!plugin || !BDFDB.ObjectUtils.is(module) || !module.BDFDBpatch || !methodName) return false;
- const pluginId = (typeof plugin === "string" ? plugin : plugin.name).toLowerCase();
- return pluginId && module[methodName] && module[methodName].__isBDFDBpatched && module.BDFDBpatch[methodName] && BDFDB.ObjectUtils.toArray(module.BDFDBpatch[methodName]).some(patchObj => BDFDB.ObjectUtils.toArray(patchObj).some(priorityObj => Object.keys(priorityObj).includes(pluginId)));
- };
- BDFDB.ModuleUtils.patch = function (plugin, module, methodNames, patchMethods, config = {}) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!plugin || !BDFDB.ObjectUtils.is(module) || !methodNames || !BDFDB.ObjectUtils.is(patchMethods)) return null;
- patchMethods = BDFDB.ObjectUtils.filter(patchMethods, type => WebModulesData.PatchTypes.includes(type), true);
- if (BDFDB.ObjectUtils.isEmpty(patchMethods)) return null;
- const pluginName = typeof plugin === "string" ? plugin : plugin.name;
- const pluginId = pluginName.toLowerCase();
- const patchPriority = BDFDB.ObjectUtils.is(plugin) && !isNaN(plugin.patchPriority) ? (plugin.patchPriority < 0 ? 0 : (plugin.patchPriority > 10 ? 10 : Math.round(plugin.patchPriority))) : 5;
- if (!BDFDB.ObjectUtils.is(module.BDFDBpatch)) module.BDFDBpatch = {};
- methodNames = [methodNames].flat(10).filter(n => n);
- let cancel = _ => {BDFDB.ModuleUtils.unpatch(plugin, module, methodNames);};
- for (let methodName of methodNames) if (module[methodName] == null || typeof module[methodName] == "function") {
- let i = 0;
- if (!module.BDFDBpatch[methodName] || config.force && (!module[methodName] || !module[methodName].__isBDFDBpatched)) {
- if (!module.BDFDBpatch[methodName]) {
- module.BDFDBpatch[methodName] = {};
- for (let type of WebModulesData.PatchTypes) module.BDFDBpatch[methodName][type] = {};
- }
- if (!module[methodName]) module[methodName] = (_ => {});
- const originalMethod = module[methodName];
- module.BDFDBpatch[methodName].originalMethod = originalMethod;
- module[methodName] = function () {
- let callInstead = false, stopCall = false;
- const data = {
- thisObject: this,
- methodArguments: arguments,
- originalMethod: originalMethod,
- originalMethodName: methodName,
- callOriginalMethod: _ => {if (!stopCall) data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)},
- callOriginalMethodAfterwards: _ => {callInstead = true;},
- stopOriginalMethodCall: _ => {stopCall = true;}
- };
- if (module.BDFDBpatch && module.BDFDBpatch[methodName]) {
- for (let priority in module.BDFDBpatch[methodName].before) for (let id in BDFDB.ObjectUtils.sort(module.BDFDBpatch[methodName].before[priority])) {
- BDFDB.TimeUtils.suppress(module.BDFDBpatch[methodName].before[priority][id], `"before" callback of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`, module.BDFDBpatch[methodName].before[priority][id].pluginName)(data);
- }
- let hasInsteadPatches = BDFDB.ObjectUtils.toArray(module.BDFDBpatch[methodName].instead).some(priorityObj => !BDFDB.ObjectUtils.isEmpty(priorityObj));
- if (hasInsteadPatches) for (let priority in module.BDFDBpatch[methodName].instead) for (let id in BDFDB.ObjectUtils.sort(module.BDFDBpatch[methodName].instead[priority])) {
- let tempReturn = BDFDB.TimeUtils.suppress(module.BDFDBpatch[methodName].instead[priority][id], `"instead" callback of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`, module.BDFDBpatch[methodName].instead[priority][id].pluginName)(data);
- if (tempReturn !== undefined) data.returnValue = tempReturn;
- }
- if ((!hasInsteadPatches || callInstead) && !stopCall) BDFDB.TimeUtils.suppress(data.callOriginalMethod, `originalMethod of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`)();
- for (let priority in module.BDFDBpatch[methodName].after) for (let id in BDFDB.ObjectUtils.sort(module.BDFDBpatch[methodName].after[priority])) {
- let tempReturn = BDFDB.TimeUtils.suppress(module.BDFDBpatch[methodName].after[priority][id], `"after" callback of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`, module.BDFDBpatch[methodName].after[priority][id].pluginName)(data);
- if (tempReturn !== undefined) data.returnValue = tempReturn;
- }
- }
- else BDFDB.TimeUtils.suppress(data.callOriginalMethod, `originalMethod of ${methodName} in ${module.constructor ? module.constructor.displayName || module.constructor.name : "module"}`)();
- callInstead = false, stopCall = false;
- return methodName == "render" && data.returnValue === undefined ? null : data.returnValue;
- };
- for (let key of Object.keys(originalMethod)) module[methodName][key] = originalMethod[key];
- if (!module[methodName].__originalFunction) {
- let realOriginalMethod = originalMethod.__originalMethod || originalMethod.__originalFunction || originalMethod;
- if (typeof realOriginalMethod == "function") {
- module[methodName].__originalFunction = realOriginalMethod;
- module[methodName].toString = _ => realOriginalMethod.toString();
- }
- }
- module[methodName].__isBDFDBpatched = true;
- }
- for (let type in patchMethods) if (typeof patchMethods[type] == "function") {
- if (!BDFDB.ObjectUtils.is(module.BDFDBpatch[methodName][type][patchPriority])) module.BDFDBpatch[methodName][type][patchPriority] = {};
- module.BDFDBpatch[methodName][type][patchPriority][pluginId] = (...args) => {
- if (config.once) cancel();
- return patchMethods[type](...args);
- };
- module.BDFDBpatch[methodName][type][patchPriority][pluginId].pluginName = pluginName;
- }
- }
- if (BDFDB.ObjectUtils.is(plugin) && !config.once && !config.noCache) {
- if (!BDFDB.ArrayUtils.is(plugin.patchCancels)) plugin.patchCancels = [];
- plugin.patchCancels.push(cancel);
- }
- return cancel;
- };
- BDFDB.ModuleUtils.unpatch = function (plugin, module, methodNames) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!module && !methodNames) {
- if (BDFDB.ObjectUtils.is(plugin) && BDFDB.ArrayUtils.is(plugin.patchCancels)) while (plugin.patchCancels.length) (plugin.patchCancels.pop())();
- }
- else {
- if (!BDFDB.ObjectUtils.is(module) || !module.BDFDBpatch) return;
- const pluginId = !plugin ? null : (typeof plugin === "string" ? plugin : plugin.name).toLowerCase();
- if (methodNames) {
- for (let methodName of [methodNames].flat(10).filter(n => n)) if (module[methodName] && module.BDFDBpatch[methodName]) unpatch(methodName, pluginId);
- }
- else for (let patchedMethod of module.BDFDBpatch) unpatch(patchedMethod, pluginId);
- }
- function unpatch (funcName, pluginId) {
- for (let type of WebModulesData.PatchTypes) {
- if (pluginId) for (let priority in module.BDFDBpatch[funcName][type]) {
- delete module.BDFDBpatch[funcName][type][priority][pluginId];
- if (BDFDB.ObjectUtils.isEmpty(module.BDFDBpatch[funcName][type][priority])) delete module.BDFDBpatch[funcName][type][priority];
- }
- else delete module.BDFDBpatch[funcName][type];
- }
- if (BDFDB.ObjectUtils.isEmpty(BDFDB.ObjectUtils.filter(module.BDFDBpatch[funcName], key => WebModulesData.PatchTypes.includes(key) && !BDFDB.ObjectUtils.isEmpty(module.BDFDBpatch[funcName][key]), true))) {
- module[funcName] = module.BDFDBpatch[funcName].originalMethod;
- delete module.BDFDBpatch[funcName];
- if (BDFDB.ObjectUtils.isEmpty(module.BDFDBpatch)) delete module.BDFDBpatch;
- }
- }
- };
- BDFDB.ModuleUtils.forceAllUpdates = function (plugin, selectedTypes) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (BDFDB.ObjectUtils.is(plugin) && BDFDB.ObjectUtils.is(plugin.patchedModules)) {
- const app = document.querySelector(BDFDB.dotCN.app);
- const bdSettings = document.querySelector("#bd-settingspane-container > *");
- if (app) {
- selectedTypes = [selectedTypes].flat(10).filter(n => n).map(type => type && WebModulesData.PatchMap[type] ? WebModulesData.PatchMap[type] + " _ _ " + type : type);
- let filteredModules = [], specialModules = [], patchtypes = {};
- for (let patchType in plugin.patchedModules) for (let type in plugin.patchedModules[patchType]) {
- let methodNames = [plugin.patchedModules[patchType][type]].flat(10).filter(n => n);
- if (BDFDB.ArrayUtils.includes(methodNames, "componentDidMount", "componentDidUpdate", "render", false) && (!selectedTypes.length || selectedTypes.includes(type))) {
- let unmappedType = type.split(" _ _ ")[1] || type;
- let className = WebModulesData.PatchFinder[unmappedType];
- let filter = WebModulesData.SpecialFilter[unmappedType];
- if (className && DiscordClasses[className] && typeof filter == "function") {
- for (let ele of document.querySelectorAll(BDFDB.dotCN[className])) {
- let constro = filter(BDFDB.ReactUtils.getInstance(ele));
- if (constro) {
- specialModules.push([type, constro]);
- break;
- }
- }
- }
- else filteredModules.push(type);
- let name = type.split(" _ _ ")[0];
- if (!patchtypes[name]) patchtypes[name] = [];
- patchtypes[name].push(patchType);
- }
- }
- if (filteredModules.length || specialModules.length) {
- filteredModules = BDFDB.ArrayUtils.removeCopies(filteredModules);
- specialModules = BDFDB.ArrayUtils.removeCopies(specialModules);
- try {
- const appInsDown = BDFDB.ReactUtils.findOwner(app, {name:filteredModules, type:specialModules, all:true, group:true, unlimited:true});
- const appInsUp = BDFDB.ReactUtils.findOwner(app, {name:filteredModules, type:specialModules, all:true, group:true, unlimited:true, up:true});
- for (let type in appInsDown) for (let ins of appInsDown[type]) InternalBDFDB.forceInitiateProcess(plugin, ins, type, patchtypes[type]);
- for (let type in appInsUp) for (let ins of appInsUp[type]) InternalBDFDB.forceInitiateProcess(plugin, ins, type, patchtypes[type]);
- if (bdSettings) {
- const bdSettingsIns = BDFDB.ReactUtils.findOwner(bdSettings, {name:filteredModules, type:specialModules, all:true, unlimited:true});
- if (bdSettingsIns.length) {
- const bdSettingsWrap = BDFDB.ReactUtils.findOwner(BDFDB.ReactUtils.getInstance(document.querySelector("#bd-settingspane-container > *")), {props:"onChange", up:true});
- if (bdSettingsWrap && bdSettingsWrap.props && typeof bdSettingsWrap.props.onChange == "function") bdSettingsWrap.props.onChange(bdSettingsWrap.props.type);
- }
- }
- }
- catch (err) {BDFDB.LogUtils.error("Could not force update components! " + err, plugin.name);}
- }
- }
- }
- };
- InternalBDFDB.forceInitiateProcess = function (plugin, instance, type, patchtypes) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!plugin || !instance || !type) return;
- let methodNames = [];
- for (let patchType in plugin.patchedModules) if (plugin.patchedModules[patchType][type]) methodNames.push(plugin.patchedModules[patchType][type]);
- methodNames = BDFDB.ArrayUtils.removeCopies(methodNames).flat(10).filter(n => n);
- if (methodNames.includes("componentDidMount")) InternalBDFDB.initiateProcess(plugin, type, {instance, methodname:"componentDidMount", patchtypes});
- if (methodNames.includes("render")) BDFDB.ReactUtils.forceUpdate(instance);
- else if (methodNames.includes("componentDidUpdate")) InternalBDFDB.initiateProcess(plugin, type, {instance, methodname:"componentDidUpdate", patchtypes});
- };
- InternalBDFDB.initiateProcess = function (plugin, type, e) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (BDFDB.ObjectUtils.is(plugin) && !plugin.stopping && e.instance) {
- type = LibraryModules.StringUtils.upperCaseFirstChar(type.split(" _ _ ")[1] || type).replace(/[^A-z0-9]|_/g, "");
- if (typeof plugin[`process${type}`] == "function") {
- if (typeof e.methodname == "string" && (e.methodname.indexOf("componentDid") == 0 || e.methodname.indexOf("componentWill") == 0)) {
- e.node = BDFDB.ReactUtils.findDOMNode(e.instance);
- if (e.node) return plugin[`process${type}`](e);
- else BDFDB.TimeUtils.timeout(_ => {
- e.node = BDFDB.ReactUtils.findDOMNode(e.instance);
- if (e.node) return plugin[`process${type}`](e);
- });
-
- }
- else if (e.returnvalue || e.patchtypes.includes("before")) return plugin[`process${type}`](e);
- }
- }
- };
- InternalBDFDB.patchPlugin = function (plugin) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(plugin.patchedModules)) return;
- BDFDB.ModuleUtils.unpatch(plugin);
- for (let patchType in plugin.patchedModules) for (let type in plugin.patchedModules[patchType]) {
- let unmappedType = type.split(" _ _ ")[1] || type;
- let component = WebModulesData.LoadedInComponents[type] && BDFDB.ReactUtils.getValue(InternalComponents, WebModulesData.LoadedInComponents[type]);
- if (component) patchInstance(WebModulesData.NonRender.includes(unmappedType) ? (BDFDB.ModuleUtils.find(m => m == component, false) || {}).exports : component, type, patchType);
- else {
- let className = WebModulesData.PatchFinder[unmappedType];
- let codeFind = WebModulesData.CodeFinder[unmappedType];
- let propertyFind = WebModulesData.PropsFinder[unmappedType];
- let mapped = WebModulesData.PatchMap[type];
- let mappedType = mapped ? mapped + " _ _ " + type : type;
- let name = mappedType.split(" _ _ ")[0];
- if (mapped) {
- plugin.patchedModules[patchType][mappedType] = plugin.patchedModules[patchType][type];
- delete plugin.patchedModules[patchType][type];
- }
- if (className && DiscordClasses[className]) checkForInstance(className, mappedType, patchType, WebModulesData.ForceObserve.includes(unmappedType));
- else if (codeFind) {
- let exports = (BDFDB.ModuleUtils.findByString(codeFind, false) || {}).exports;
- patchInstance(exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, mappedType, patchType, true);
- }
- else if (propertyFind) {
- let exports = (BDFDB.ModuleUtils.findByProperties(propertyFind, false) || {}).exports;
- patchInstance(exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, mappedType, patchType, true);
- }
- else if (WebModulesData.NonRender.includes(unmappedType)) {
- let exports = (BDFDB.ModuleUtils.findByName(name, false) || {}).exports;
- patchInstance(exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, mappedType, patchType, true);
- }
- else patchInstance(BDFDB.ModuleUtils.findByName(name), mappedType, patchType);
- }
- }
- function patchInstance(instance, type, patchType, ignoreCheck) {
- if (instance) {
- let name = type.split(" _ _ ")[0];
- instance = instance._reactInternalFiber && instance._reactInternalFiber.type ? instance._reactInternalFiber.type : instance;
- instance = ignoreCheck || InternalBDFDB.isInstanceCorrect(instance, name) || WebModulesData.LoadedInComponents[type] ? instance : (BDFDB.ReactUtils.findConstructor(instance, name) || BDFDB.ReactUtils.findConstructor(instance, name, {up:true}));
- if (instance) {
- instance = instance._reactInternalFiber && instance._reactInternalFiber.type ? instance._reactInternalFiber.type : instance;
- let patchMethods = {};
- patchMethods[patchType] = e => {
- return InternalBDFDB.initiateProcess(plugin, type, {
- instance: window != e.thisObject ? e.thisObject : {props:e.methodArguments[0]},
- returnvalue: e.returnValue,
- methodname: e.originalMethodName,
- patchtypes: [patchType]
- })
- };
- BDFDB.ModuleUtils.patch(plugin, WebModulesData.NonPrototype.includes(name) ? instance : instance.prototype, plugin.patchedModules[patchType][type], patchMethods);
- }
- }
- }
- function checkEle(ele, type, patchType, instanceObserver) {
- let unmappedType = type.split(" _ _ ")[1] || type;
- let ins = BDFDB.ReactUtils.getInstance(ele);
- let filter = WebModulesData.SpecialFilter[unmappedType];
- if (typeof filter == "function") {
- let component = filter(ins);
- if (component) {
- if (WebModulesData.NonRender.includes(unmappedType)) {
- let exports = (BDFDB.ModuleUtils.find(m => m == component, false) || {}).exports;
- patchInstance(exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, type, patchType, true);
- }
- else patchInstance(component, type, patchType, true);
- BDFDB.ModuleUtils.forceAllUpdates(plugin, type);
- return true;
- }
- }
- else if (isCorrectInstance(ins, type)) {
- patchInstance(ins, type, patchType);
- BDFDB.ModuleUtils.forceAllUpdates(plugin, type);
- return true;
- }
- return false;
- }
- function checkForInstance(className, type, patchType, forceObserve) {
- const app = document.querySelector(BDFDB.dotCN.app), bdSettings = document.querySelector("#bd-settingspane-container " + BDFDB.dotCN.scrollerwrap);
- let instanceFound = false;
- if (!forceObserve) {
- if (app) {
- let appIns = BDFDB.ReactUtils.findConstructor(app, type, {unlimited:true}) || BDFDB.ReactUtils.findConstructor(app, type, {unlimited:true, up:true});
- if (appIns && (instanceFound = true)) patchInstance(appIns, type, patchType);
- }
- if (!instanceFound && bdSettings) {
- let bdSettingsIns = BDFDB.ReactUtils.findConstructor(bdSettings, type, {unlimited:true});
- if (bdSettingsIns && (instanceFound = true)) patchInstance(bdSettingsIns, type, patchType);
- }
- }
- if (!instanceFound) {
- let found = false, disClass = BDFDB.disCN[className], dotClass = BDFDB.dotCN[className];
- for (let ele of document.querySelectorAll(dotClass)) {
- found = checkEle(ele, type, patchType);
- if (found) break;
- }
- if (!found) {
- let instanceObserver = new MutationObserver(cs => {cs.forEach(c => {c.addedNodes.forEach(n => {
- if (found || !n || !n.tagName) return;
- let ele = null;
- if ((ele = BDFDB.DOMUtils.containsClass(n, disClass) ? n : n.querySelector(dotClass)) != null) {
- found = checkEle(ele, type, patchType);
- if (found) instanceObserver.disconnect();
- }
- });});});
- BDFDB.ObserverUtils.connect(plugin, BDFDB.dotCN.appmount, {name:"checkForinstanceObserver", instance:instanceObserver, multi:true
- }, {childList:true, subtree:true});
- }
- }
- }
- function isCorrectInstance(instance, name) {
- if (!instance) return false;
- instance = instance._reactInternalFiber && instance._reactInternalFiber.type ? instance._reactInternalFiber.type : instance;
- instance = InternalBDFDB.isInstanceCorrect(instance, name) ? instance : (BDFDB.ReactUtils.findConstructor(instance, name) || BDFDB.ReactUtils.findConstructor(instance, name, {up:true}));
- return !!instance;
- }
- };
-
- InternalBDFDB.isInstanceCorrect = function (instance, name) {
- return instance && ((instance.type && (instance.type.render && instance.type.render.displayName === name || instance.type.displayName === name || instance.type.name === name || instance.type === name)) || instance.render && (instance.render.displayName === name || instance.render.name === name) || instance.displayName == name || instance.name === name);
- };
-
- InternalBDFDB.addContextListeners = function (plugin) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- for (let type of ComponentTypeData.NormalContextMenus) if (typeof plugin[`on${type}`] === "function") InternalBDFDB.patchContextMenuPlugin(plugin, type, InternalComponents.LibraryComponents.ContextMenus[type]);
- for (let type of ComponentTypeData.FluxContextMenus) if (typeof plugin[`on${type}`] === "function") {
- if (BDFDB.InternalData.componentPatchQueries[type].module) InternalBDFDB.patchContextMenuPlugin(plugin, type, BDFDB.InternalData.componentPatchQueries[type].module);
- else {
- BDFDB.InternalData.componentPatchQueries[type].query.push(plugin);
- BDFDB.InternalData.componentPatchQueries[type].query.sort((x, y) => {return x.name < y.name ? -1 : x.name > y.name ? 1 : 0;});
- }
- }
- for (let type of ComponentTypeData.QueuedComponents) if (typeof plugin[`on${type}`] === "function") {
- if (BDFDB.InternalData.componentPatchQueries[type].module) InternalBDFDB.patchExportedContextMenuPlugin(plugin, type, BDFDB.InternalData.componentPatchQueries[type].module);
- else {
- BDFDB.InternalData.componentPatchQueries[type].query.push(plugin);
- BDFDB.InternalData.componentPatchQueries[type].query.sort((x, y) => {return x.name < y.name ? -1 : x.name > y.name ? 1 : 0;});
- }
- }
- };
- InternalBDFDB.patchContextMenuPlugin = function (plugin, type, module) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (module && module.prototype) BDFDB.ModuleUtils.patch(plugin, module.prototype, "render", {after: e => {
- if (e.thisObject && e.returnValue && typeof plugin[`on${type}`] === "function") plugin[`on${type}`]({instance:e.thisObject, returnvalue:e.returnValue, methodname:"render"});
- }});
- };
- InternalBDFDB.patchExportedContextMenuPlugin = function (plugin, type, module) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (module && module.exports) BDFDB.ModuleUtils.patch(plugin, module.exports, "default", {after: e => {
- if (e.returnValue && typeof plugin[`on${type}`] === "function") plugin[`on${type}`]({instance:{props:e.methodArguments[0]}, returnvalue:e.returnValue, methodname:"default"});
- }});
- };
- InternalBDFDB.executeExtraPatchedPatches = function (type, e) {
- if (BDFDB.ObjectUtils.is(BDFDB.InternalData.componentPatchQueries[type]) && BDFDB.ArrayUtils.is(BDFDB.InternalData.componentPatchQueries[type].query)) for (let plugin of BDFDB.InternalData.componentPatchQueries[type].query) if (e.returnvalue && typeof plugin[`on${type}`] === "function") plugin[`on${type}`](e);
- };
- InternalBDFDB.patchContextMenuLib = function (module, repatch) {
- if (module && module.prototype) {
- BDFDB.ModuleUtils.patch(BDFDB, module.prototype, "render", {after: e => {
- if (e.thisObject.props.BDFDBcontextMenu && e.thisObject.props.children && e.returnValue && e.returnValue.props) {
- e.returnValue.props.children = e.thisObject.props.children;
- delete e.thisObject.props.value;
- delete e.thisObject.props.children;
- delete e.thisObject.props.BDFDBcontextMenu;
- }
- if (repatch) {
- let newmodule = BDFDB.ReactUtils.getValue(e, "thisObject._reactInternalFiber.child.type");
- if (newmodule && newmodule.displayName && BDFDB.InternalData.componentPatchQueries[newmodule.displayName] && !BDFDB.InternalData.componentPatchQueries[newmodule.displayName].module) {
- BDFDB.InternalData.componentPatchQueries[newmodule.displayName].module = newmodule;
- InternalBDFDB.patchContextMenuLib(newmodule, false);
- while (BDFDB.InternalData.componentPatchQueries[newmodule.displayName].query.length) InternalBDFDB.patchContextMenuPlugin(BDFDB.InternalData.componentPatchQueries[newmodule.displayName].query.pop(), newmodule.displayName, newmodule);
- }
- }
- }});
- }
- };
- InternalBDFDB.patchExportedContextMenuLib = function (menu, type, shouldCloseOnPatch) {
- let module = BDFDB.ModuleUtils.find(m => m == menu.type, false);
- if (module && module.exports && module.exports.default) {
- if (!InternalComponents.LibraryComponents.ContextMenus[type]) {
- InternalComponents.LibraryComponents.ContextMenus[type] = module.exports.default;
- BDFDB.LibraryComponents.ContextMenus[type] = module.exports.default;
- }
- if (!InternalComponents.LibraryComponents.ContextMenus._Exports[type]) {
- InternalComponents.LibraryComponents.ContextMenus._Exports[type] = module.exports;
- BDFDB.LibraryComponents.ContextMenus._Exports[type] = module.exports;
- }
- if (BDFDB.InternalData.componentPatchQueries[type] && !BDFDB.InternalData.componentPatchQueries[type].module) {
- BDFDB.InternalData.componentPatchQueries[type].module = module;
- while (BDFDB.InternalData.componentPatchQueries[type].query.length) InternalBDFDB.patchExportedContextMenuPlugin(BDFDB.InternalData.componentPatchQueries[type].query.pop(), type, module);
- let close = shouldCloseOnPatch && BDFDB.ReactUtils.getValue(menu, "memoizedProps.onClose");
- if (typeof close == "function") close();
- }
- if (!module.exports.default.displayName) module.exports.default.displayName = type;
- }
- };
- InternalBDFDB.getContextMenuType = function (menuType, component) {
- if (menuType) {
- if (menuType == "MessageContextMenu" && component && component.type != InternalComponents.LibraryComponents.ContextMenus.MessageContextMenu) return "MessageOptionContextMenu";
- else if (menuType.endsWith("ContextMenu")) return menuType;
- else if (InternalComponents.LibraryComponents.ContextMenus._Types.includes(menuType)) {
- if (menuType.indexOf("USER_") == 0) return "UserContextMenu";
- else if (menuType.indexOf("CHANNEL_") == 0) return "ChannelContextMenu";
- else if (menuType.indexOf("GUILD_") == 0) return "GuildContextMenu";
- else if (menuType.indexOf("MESSAGE_") == 0) return "MessageContextMenu";
- }
- }
- return null;
- };
-
- BDFDB.DiscordConstants = BDFDB.ModuleUtils.findByProperties("Permissions", "ActivityTypes");
-
- var DiscordObjects = {};
- DiscordObjects.Channel = BDFDB.ModuleUtils.findByPrototypes("getRecipientId", "isManaged", "getGuildId");
- DiscordObjects.Guild = BDFDB.ModuleUtils.findByPrototypes("getIconURL", "getMaxEmojiSlots", "getRole");
- DiscordObjects.Invite = BDFDB.ModuleUtils.findByPrototypes("getExpiresAt", "isExpired");
- DiscordObjects.Message = BDFDB.ModuleUtils.findByPrototypes("getReaction", "getAuthorName", "getChannelId");
- DiscordObjects.Messages = BDFDB.ModuleUtils.findByPrototypes("jumpToMessage", "hasAfterCached", "forEach");
- DiscordObjects.Timestamp = BDFDB.ModuleUtils.findByPrototypes("add", "dayOfYear", "hasAlignedHourOffset");
- DiscordObjects.User = BDFDB.ModuleUtils.findByPrototypes("hasFlag", "isLocalBot", "isClaimed");
- BDFDB.DiscordObjects = Object.assign({}, DiscordObjects);
-
- var LibraryRequires = {};
- for (let name of ["child_process", "electron", "fs", "path", "process", "request"]) {
- try {LibraryRequires[name] = require(name);} catch (err) {}
- }
- BDFDB.LibraryRequires = Object.assign({}, LibraryRequires);
-
- var LibraryModules = {};
- LibraryModules.AckUtils = BDFDB.ModuleUtils.findByProperties("localAck", "bulkAck");
- LibraryModules.APIUtils = BDFDB.ModuleUtils.findByProperties("getAPIBaseURL");
- LibraryModules.AnalyticsUtils = BDFDB.ModuleUtils.findByProperties("isThrottled", "track");
- LibraryModules.AnimationUtils = BDFDB.ModuleUtils.findByProperties("spring", "decay");
- LibraryModules.BadgeUtils = BDFDB.ModuleUtils.findByProperties("getBadgeCountString", "getBadgeWidthForValue");
- LibraryModules.CallUtils = BDFDB.ModuleUtils.findByProperties("getCalls", "isCallActive");
- LibraryModules.CategoryCollapseStore = BDFDB.ModuleUtils.findByProperties("getCollapsedCategories", "isCollapsed");
- LibraryModules.CategoryCollapseUtils = BDFDB.ModuleUtils.findByProperties("categoryCollapse", "categoryCollapseAll");
- LibraryModules.ChannelStore = BDFDB.ModuleUtils.findByProperties("getChannel", "getChannels");
- LibraryModules.ColorUtils = BDFDB.ModuleUtils.findByProperties("hex2int", "hex2rgb");
- LibraryModules.ContextMenuUtils = BDFDB.ModuleUtils.findByProperties("closeContextMenu", "openContextMenu");
- LibraryModules.CopyLinkUtils = BDFDB.ModuleUtils.findByProperties("SUPPORTS_COPY", "copy");
- LibraryModules.CurrentUserStore = BDFDB.ModuleUtils.findByProperties("getCurrentUser");
- LibraryModules.CurrentVoiceUtils = BDFDB.ModuleUtils.findByProperties("getAveragePing", "isConnected");
- LibraryModules.DirectMessageStore = BDFDB.ModuleUtils.findByProperties("getPrivateChannelIds", "getPrivateChannelTimestamps");
- LibraryModules.DirectMessageUnreadStore = BDFDB.ModuleUtils.findByProperties("getUnreadPrivateChannelIds");
- LibraryModules.DispatchApiUtils = BDFDB.ModuleUtils.findByProperties("dirtyDispatch", "isDispatching");
- LibraryModules.DispatchUtils = BDFDB.ModuleUtils.findByProperties("ComponentDispatch");
- LibraryModules.DirectMessageUtils = BDFDB.ModuleUtils.findByProperties("addRecipient", "openPrivateChannel");
- LibraryModules.EmojiUtils = BDFDB.ModuleUtils.findByProperties("translateInlineEmojiToSurrogates", "translateSurrogatesToInlineEmoji");
- LibraryModules.EmojiStateUtils = BDFDB.ModuleUtils.findByProperties("getURL", "isEmojiDisabled");
- LibraryModules.FriendUtils = BDFDB.ModuleUtils.findByProperties("getFriendIDs", "getRelationships");
- LibraryModules.FolderStore = BDFDB.ModuleUtils.findByProperties("getGuildFolderById", "getFlattenedGuilds");
- LibraryModules.FolderUtils = BDFDB.ModuleUtils.findByProperties("isFolderExpanded", "getExpandedFolders");
- LibraryModules.GuildBoostUtils = BDFDB.ModuleUtils.findByProperties("getTierName", "getUserLevel");
- LibraryModules.GuildChannelStore = BDFDB.ModuleUtils.findByProperties("getChannels", "getDefaultChannel");
- LibraryModules.GuildEmojiStore = BDFDB.ModuleUtils.findByProperties("getGuildEmoji", "getDisambiguatedEmojiContext");
- LibraryModules.GuildSettingsUtils = BDFDB.ModuleUtils.findByProperties("updateChannelOverrideSettings", "updateNotificationSettings");
- LibraryModules.GuildStore = BDFDB.ModuleUtils.findByProperties("getGuild", "getGuilds");
- LibraryModules.GuildUnavailableStore = BDFDB.ModuleUtils.findByProperties("isUnavailable", "totalUnavailableGuilds");
- LibraryModules.GuildUtils = BDFDB.ModuleUtils.findByProperties("transitionToGuildSync");
- LibraryModules.HistoryUtils = BDFDB.ModuleUtils.findByProperties("transitionTo", "replaceWith", "getHistory");;
- LibraryModules.IconUtils = BDFDB.ModuleUtils.findByProperties("getGuildIconURL", "getGuildBannerURL");
- LibraryModules.InviteUtils = BDFDB.ModuleUtils.findByProperties("acceptInvite", "createInvite");
- LibraryModules.KeyCodeUtils = Object.assign({}, BDFDB.ModuleUtils.findByProperties("toCombo", "keyToCode"));
- LibraryModules.KeyCodeUtils.getString = function (keyarray) {
- return LibraryModules.KeyCodeUtils.toString([keyarray].flat(10).filter(n => n).map(keycode => [BDFDB.DiscordConstants.KeyboardDeviceTypes.KEYBOARD_KEY, keycode, BDFDB.DiscordConstants.KeyboardEnvs.BROWSER]), true);
- };
- LibraryModules.KeyEvents = BDFDB.ModuleUtils.findByProperties("aliases", "code", "codes");
- LibraryModules.LanguageStore = BDFDB.ModuleUtils.findByProperties("getLanguages", "Messages");
- LibraryModules.LastChannelStore = BDFDB.ModuleUtils.findByProperties("getLastSelectedChannelId");
- LibraryModules.LastGuildStore = BDFDB.ModuleUtils.findByProperties("getLastSelectedGuildId");
- LibraryModules.LoginUtils = BDFDB.ModuleUtils.findByProperties("login", "logout");
- LibraryModules.MemberStore = BDFDB.ModuleUtils.findByProperties("getMember", "getMembers");
- LibraryModules.MentionUtils = BDFDB.ModuleUtils.findByProperties("isRawMessageMentioned", "isMentioned");
- LibraryModules.MessagePinUtils = BDFDB.ModuleUtils.findByProperties("pinMessage", "unpinMessage");
- LibraryModules.MessageStore = BDFDB.ModuleUtils.findByProperties("getMessage", "getMessages");
- LibraryModules.MessageUtils = BDFDB.ModuleUtils.findByProperties("receiveMessage", "editMessage");
- LibraryModules.ModalUtils = BDFDB.ModuleUtils.findByProperties("openModal", "hasModalOpen");
- LibraryModules.MutedUtils = BDFDB.ModuleUtils.findByProperties("isGuildOrCategoryOrChannelMuted");
- LibraryModules.NoteStore = BDFDB.ModuleUtils.findByProperties("getNote");
- LibraryModules.NotificationSettingsStore = BDFDB.ModuleUtils.findByProperties("getDesktopType", "getTTSType");
- LibraryModules.NotificationSettingsUtils = BDFDB.ModuleUtils.findByProperties("setDesktopType", "setTTSType");
- LibraryModules.NotificationUtils = BDFDB.ModuleUtils.findByProperties("makeTextChatNotification", "shouldNotify");
- LibraryModules.PlatformUtils = BDFDB.ModuleUtils.findByProperties("isWindows", "isLinux");
- LibraryModules.PermissionUtils = BDFDB.ModuleUtils.findByProperties("getChannelPermissions", "canUser");
- LibraryModules.PermissionRoleUtils = BDFDB.ModuleUtils.findByProperties("getHighestRole", "can");
- LibraryModules.QuoteUtils = BDFDB.ModuleUtils.findByProperties("canQuote", "createQuotedText");
- LibraryModules.ReactionUtils = BDFDB.ModuleUtils.findByProperties("addReaction", "removeReaction");
- LibraryModules.RecentMentionUtils = BDFDB.ModuleUtils.findByProperties("deleteRecentMention", "fetchRecentMentions");
- LibraryModules.SearchPageUtils = BDFDB.ModuleUtils.findByProperties("searchNextPage", "searchPreviousPage");
- LibraryModules.SelectChannelUtils = BDFDB.ModuleUtils.findByProperties("selectChannel", "selectPrivateChannel");
- LibraryModules.SettingsUtils = BDFDB.ModuleUtils.findByProperties("updateRemoteSettings", "updateLocalSettings");
- LibraryModules.SoundStateUtils = BDFDB.ModuleUtils.findByProperties("isSoundDisabled", "getDisabledSounds");
- LibraryModules.SoundUtils = BDFDB.ModuleUtils.findByProperties("playSound", "createSound");
- LibraryModules.SpellCheckUtils = BDFDB.ModuleUtils.findByProperties("learnWord", "toggleSpellcheck");
- LibraryModules.SlateUtils = BDFDB.ModuleUtils.findByProperties("serialize", "deserialize");
- LibraryModules.SlateSelectionUtils = BDFDB.ModuleUtils.findByProperties("serialize", "serializeSelection");
- LibraryModules.StateStoreUtils = BDFDB.ModuleUtils.findByProperties("useStateFromStores", "useStateFromStoresArray");
- LibraryModules.StatusMetaUtils = BDFDB.ModuleUtils.findByProperties("getApplicationActivity", "getStatus");
- LibraryModules.StoreChangeUtils = BDFDB.ModuleUtils.findByProperties("get", "set", "clear", "remove");
- LibraryModules.StreamerModeStore = BDFDB.ModuleUtils.findByProperties("disableSounds", "hidePersonalInformation");
- LibraryModules.StreamUtils = BDFDB.ModuleUtils.findByProperties("getStreamForUser", "getActiveStream");
- LibraryModules.StringUtils = BDFDB.ModuleUtils.findByProperties("cssValueToNumber", "upperCaseFirstChar");
- LibraryModules.UnreadGuildUtils = BDFDB.ModuleUtils.findByProperties("hasUnread", "getUnreadGuilds");
- LibraryModules.UnreadChannelUtils = BDFDB.ModuleUtils.findByProperties("getUnreadCount", "getOldestUnreadMessageId");
- LibraryModules.UploadUtils = BDFDB.ModuleUtils.findByProperties("upload", "instantBatchUpload");
- LibraryModules.UserNameUtils = BDFDB.ModuleUtils.findByProperties("getName", "getNickname");
- LibraryModules.UserStore = BDFDB.ModuleUtils.findByProperties("getUser", "getUsers");
- LibraryModules.Utilities = BDFDB.ModuleUtils.findByProperties("flatMap", "cloneDeep");
- LibraryModules.VoiceUtils = BDFDB.ModuleUtils.findByProperties("getAllVoiceStates", "getVoiceStatesForChannel");
- LibraryModules.ZoomUtils = BDFDB.ModuleUtils.findByProperties("setZoom", "setFontSize");
- BDFDB.LibraryModules = Object.assign({}, LibraryModules);
-
- LibraryModules.React = BDFDB.ModuleUtils.findByProperties("createElement", "cloneElement");
- LibraryModules.ReactDOM = BDFDB.ModuleUtils.findByProperties("render", "findDOMNode");
-
- BDFDB.ReactUtils = Object.assign({}, LibraryModules.React, LibraryModules.ReactDOM);
- BDFDB.ReactUtils.childrenToArray = function (parent) {
- if (parent && parent.props && parent.props.children && !BDFDB.ArrayUtils.is(parent.props.children)) {
- var child = parent.props.children;
- parent.props.children = [];
- parent.props.children.push(child);
- }
- return parent.props.children;
- }
- BDFDB.ReactUtils.createElement = function (component, props) {
- if (component && component.defaultProps) for (let key in component.defaultProps) if (props[key] == null) props[key] = component.defaultProps[key];
- try {return LibraryModules.React.createElement(component || "div", props || {}) || null;}
- catch (err) {BDFDB.LogUtils.error("Could not create react element! " + err);}
- return null;
- };
- BDFDB.ReactUtils.elementToReact = function (node, ref) {
- if (BDFDB.ReactUtils.isValidElement(node)) return node;
- else if (!Node.prototype.isPrototypeOf(node)) return null;
- else if (node.nodeType == Node.TEXT_NODE) return node.nodeValue;
- let attributes = {}, importantStyles = [];
- if (typeof ref == "function") attributes.ref = ref;
- for (let attr of node.attributes) attributes[attr.name] = attr.value;
- if (node.attributes.style) attributes.style = BDFDB.ObjectUtils.filter(node.style, n => node.style[n] && isNaN(parseInt(n)), true);
- attributes.children = [];
- if (node.style && node.style.cssText) for (let propStr of node.style.cssText.split(";")) if (propStr.endsWith("!important")) {
- let key = propStr.split(":")[0];
- let camelprop = key.replace(/-([a-z]?)/g, (m, g) => g.toUpperCase());
- if (attributes.style[camelprop] != null) importantStyles.push(key);
- }
- for (let child of node.childNodes) attributes.children.push(BDFDB.ReactUtils.elementToReact(child));
- attributes.className = BDFDB.DOMUtils.formatClassName(attributes.className, attributes.class);
- delete attributes.class;
- let reactEle = BDFDB.ReactUtils.createElement(node.tagName, attributes);
- BDFDB.ReactUtils.forceStyle(reactEle, importantStyles);
- return reactEle;
- };
- BDFDB.ReactUtils.forceStyle = function (reactEle, styles) {
- if (!BDFDB.ReactUtils.isValidElement(reactEle) || !BDFDB.ObjectUtils.is(reactEle.props.style) || !BDFDB.ArrayUtils.is(styles) || !styles.length) return;
- let ref = reactEle.ref;
- reactEle.ref = instance => {
- if (typeof ref == "function") ref(instance);
- let node = BDFDB.ReactUtils.findDOMNode(instance);
- if (Node.prototype.isPrototypeOf(node)) for (let key of styles) {
- let propValue = reactEle.props.style[key.replace(/-([a-z]?)/g, (m, g) => g.toUpperCase())];
- if (propValue != null) node.style.setProperty(key, propValue, "important");
- }
- };
- };
- BDFDB.ReactUtils.findChild = function (nodeOrInstance, config) {
- if (!nodeOrInstance || !BDFDB.ObjectUtils.is(config) || !config.name && !config.key && !config.props && !config.filter) return null;
- let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance;
- if (!BDFDB.ObjectUtils.is(instance) && !BDFDB.ArrayUtils.is(instance)) return null;
- config.name = config.name && [config.name].flat().filter(n => n);
- config.key = config.key && [config.key].flat().filter(n => n);
- config.props = config.props && [config.props].flat().filter(n => n);
- config.filter = typeof config.filter == "function" && config.filter;
- let depth = -1;
- let start = performance.now();
- let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth);
- let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time);
- return getChild(instance);
- function getChild (children) {
- let result = null;
- if (!children || depth >= maxDepth && performance.now() - start >= maxTime) return result;
- if (!BDFDB.ArrayUtils.is(children)) {
- if (check(children)) result = children;
- else if (children.props && children.props.children) {
- depth++;
- result = getChild(children.props.children);
- depth--;
- }
- }
- else {
- for (let child of children) if (child) {
- if (BDFDB.ArrayUtils.is(child)) result = getChild(child);
- else if (check(child)) result = child;
- else if (child.props && child.props.children) {
- depth++;
- result = getChild(child.props.children);
- depth--;
- }
- }
- }
- return result;
- }
- function check (instance) {
- if (!instance) return false;
- let props = instance.stateNode ? instance.stateNode.props : instance.props;
- return instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name)) || config.key && config.key.some(key => instance.key == key) || props && config.props && config.props[config.someProps ? "some" : "every"](prop => BDFDB.ArrayUtils.is(prop) ? (BDFDB.ArrayUtils.is(prop[1]) ? prop[1].some(checkvalue => propCheck(props, prop[0], checkvalue)) : propCheck(props, prop[0], prop[1])) : props[prop] !== undefined) || config.filter && config.filter(instance);
- }
- function propCheck (props, key, value) {
- return key != null && props[key] != null && value != null && (key == "className" ? (" " + props[key] + " ").indexOf(" " + value + " ") > -1 : BDFDB.equals(props[key], value));
- }
- };
- BDFDB.ReactUtils.findChildren = function (nodeOrInstance, config) {
- if (!nodeOrInstance || !BDFDB.ObjectUtils.is(config) || !config.name && !config.key && !config.props && !config.filter) return [null, -1];
- let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance;
- if (!BDFDB.ObjectUtils.is(instance) && !BDFDB.ArrayUtils.is(instance)) return [null, -1];
- config.name = config.name && [config.name].flat().filter(n => n);
- config.key = config.key && [config.key].flat().filter(n => n);
- config.props = config.props && [config.props].flat().filter(n => n);
- config.filter = typeof config.filter == "function" && config.filter;
- let parent = firstArray = instance;
- while (!BDFDB.ArrayUtils.is(firstArray) && firstArray.props && firstArray.props.children) firstArray = firstArray.props.children;
- if (!BDFDB.ArrayUtils.is(firstArray)) {
- if (parent && parent.props) {
- parent.props.children = [parent.props.children];
- firstArray = parent.props.children;
- }
- else firstArray = [];
- }
- return getChildren(instance);
- function getChildren (children) {
- let result = [firstArray, -1];
- if (!children) return result;
- if (!BDFDB.ArrayUtils.is(children)) {
- if (check(children)) result = found(children);
- else if (children.props && children.props.children) {
- parent = children;
- result = getChildren(children.props.children);
- }
- }
- else {
- for (let i = 0; result[1] == -1 && i < children.length; i++) if (children[i]) {
- if (BDFDB.ArrayUtils.is(children[i])) {
- parent = children;
- result = getChildren(children[i]);
- }
- else if (check(children[i])) {
- parent = children;
- result = found(children[i]);
- }
- else if (children[i].props && children[i].props.children) {
- parent = children[i];
- result = getChildren(children[i].props.children);
- }
- }
- }
- return result;
- }
- function found (child) {
- if (BDFDB.ArrayUtils.is(parent)) return [parent, parent.indexOf(child)];
- else {
- parent.props.children = [];
- parent.props.children.push(child);
- return [parent.props.children, 0];
- }
- }
- function check (instance) {
- if (!instance) return false;
- let props = instance.stateNode ? instance.stateNode.props : instance.props;
- return instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name)) || config.key && config.key.some(key => instance.key == key) || props && config.props && config.props[config.someProps ? "some" : "every"](prop => BDFDB.ArrayUtils.is(prop) ? (BDFDB.ArrayUtils.is(prop[1]) ? prop[1].some(checkvalue => propCheck(props, prop[0], checkvalue)) : propCheck(props, prop[0], prop[1])) : props[prop] !== undefined) || config.filter && config.filter(instance);
- }
- function propCheck (props, key, value) {
- return key != null && props[key] != null && value != null && (key == "className" ? (" " + props[key] + " ").indexOf(" " + value + " ") > -1 : BDFDB.equals(props[key], value));
- }
- };
- BDFDB.ReactUtils.setChild = function (parent, stringOrChild) {
- if (!BDFDB.ReactUtils.isValidElement(parent) || (!BDFDB.ReactUtils.isValidElement(stringOrChild) && typeof stringOrChild != "string" && !BDFDB.ArrayUtils.is(stringOrChild))) return;
- let set = false;
- checkParent(parent);
- function checkParent(child) {
- if (set) return;
- if (!BDFDB.ArrayUtils.is(child)) checkChild(child);
- else for (let subChild of child) checkChild(subChild);
- }
- function checkChild(child) {
- if (!BDFDB.ReactUtils.isValidElement(child)) return;
- if (BDFDB.ReactUtils.isValidElement(child.props.children)) checkParent(child.props.children);
- else if (BDFDB.ArrayUtils.is(child.props.children)) {
- if (child.props.children.every(c => !c || typeof c == "string")) {
- set = true;
- child.props.children = [stringOrChild].flat(10);
- }
- else checkParent(child.props.children);
- }
- else {
- set = true;
- child.props.children = stringOrChild;
- }
- }
- };
- BDFDB.ReactUtils.findConstructor = function (nodeOrInstance, types, config = {}) {
- if (!BDFDB.ObjectUtils.is(config)) return null;
- if (!nodeOrInstance || !types) return config.all ? (config.group ? {} : []) : null;
- let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance;
- if (!BDFDB.ObjectUtils.is(instance)) return config.all ? (config.group ? {} : []) : null;
- types = types && [types].flat(10).filter(n => typeof n == "string");
- if (!types.length) return config.all ? (config.group ? {} : []) : null;;
- let depth = -1;
- let start = performance.now();
- let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth);
- let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time);
- let whitelist = config.up ? {return:true, sibling:true, default:true, _reactInternalFiber:true} : {child:true, sibling:true, default:true, _reactInternalFiber:true};
- let foundConstructors = config.group ? {} : [];
- let singleConstructor = getConstructor(instance);
- if (config.all) {
- for (let i in foundConstructors) {
- if (config.group) for (let j in foundConstructors[i]) delete foundConstructors[i][j].BDFDBreactSearch;
- else delete foundConstructors[i].BDFDBreactSearch;
- }
- return foundConstructors;
- }
- else return singleConstructor;
-
- function getConstructor (instance) {
- depth++;
- let result = undefined;
- if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) {
- if (instance.type && types.some(name => InternalBDFDB.isInstanceCorrect(instance, name.split(" _ _ ")[0]))) {
- if (config.all === undefined || !config.all) result = instance.type;
- else if (config.all) {
- if (!instance.type.BDFDBreactSearch) {
- instance.type.BDFDBreactSearch = true;
- if (config.group) {
- if (instance.type && (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name)) {
- let group = config.name.find(name => (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name || instance.type) == name.split(" _ _ ")[0]) || "Default";
- if (!BDFDB.ArrayUtils.is(foundConstructors[group])) foundConstructors[group] = [];
- foundConstructors[group].push(instance.stateNode);
- }
- }
- else foundConstructors.push(instance.type);
- }
- }
- }
- if (result === undefined) {
- let keys = Object.getOwnPropertyNames(instance);
- for (let i = 0; result === undefined && i < keys.length; i++) {
- let key = keys[i];
- if (key && whitelist[key] && (typeof instance[key] === "object" || typeof instance[key] === "function")) result = getConstructor(instance[key]);
- }
- }
- }
- depth--;
- return result;
- }
- };
- BDFDB.ReactUtils.findDOMNode = function (instance) {
- if (Node.prototype.isPrototypeOf(instance)) return instance;
- if (!instance || !instance.updater || typeof instance.updater.isMounted !== "function" || !instance.updater.isMounted(instance)) return null;
- let node = LibraryModules.ReactDOM.findDOMNode(instance) || BDFDB.ReactUtils.getValue(instance, "child.stateNode");
- return Node.prototype.isPrototypeOf(node) ? node : null;
- };
- BDFDB.ReactUtils.findOwner = function (nodeOrInstance, config) {
- if (!BDFDB.ObjectUtils.is(config)) return null;
- if (!nodeOrInstance || !config.name && !config.type && !config.key && !config.props) return config.all ? (config.group ? {} : []) : null;
- let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance;
- if (!BDFDB.ObjectUtils.is(instance)) return config.all ? (config.group ? {} : []) : null;
- config.name = config.name && [config.name].flat().filter(n => n);
- config.type = config.type && [config.type].flat().filter(n => n);
- config.key = config.key && [config.key].flat().filter(n => n);
- config.props = config.props && [config.props].flat().filter(n => n);
- let depth = -1;
- let start = performance.now();
- let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth);
- let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time);
- let whitelist = config.up ? {return:true, sibling:true, _reactInternalFiber:true} : {child:true, sibling:true, _reactInternalFiber:true};
- let foundInstances = config.group ? {} : [];
- let singleInstance = getOwner(instance);
- if (config.all) {
- for (let i in foundInstances) {
- if (config.group) for (let j in foundInstances[i]) delete foundInstances[i][j].BDFDBreactSearch;
- else delete foundInstances[i].BDFDBreactSearch;
- }
- return foundInstances;
- }
- else return singleInstance;
-
- function getOwner (instance) {
- depth++;
- let result = undefined;
- if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) {
- let props = instance.stateNode ? instance.stateNode.props : instance.props;
- if (instance.stateNode && !Node.prototype.isPrototypeOf(instance.stateNode) && (instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name.split(" _ _ ")[0])) || instance.type && config.type && config.type.some(type => BDFDB.ArrayUtils.is(type) ? instance.type === type[1] : instance.type === type) || instance.key && config.key && config.key.some(key => instance.key == key) || props && config.props && config.props.every(prop => BDFDB.ArrayUtils.is(prop) ? (BDFDB.ArrayUtils.is(prop[1]) ? prop[1].some(checkvalue => BDFDB.equals(props[prop[0]], checkvalue)) : BDFDB.equals(props[prop[0]], prop[1])) : props[prop] !== undefined))) {
- if (config.all === undefined || !config.all) result = instance.stateNode;
- else if (config.all) {
- if (!instance.stateNode.BDFDBreactSearch) {
- instance.stateNode.BDFDBreactSearch = true;
- if (config.group) {
- if (config.name && instance.type && (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name || instance.type)) {
- let group = config.name.find(name => (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name || instance.type) == name.split(" _ _ ")[0]) || "Default";
- if (!BDFDB.ArrayUtils.is(foundInstances[group])) foundInstances[group] = [];
- foundInstances[group].push(instance.stateNode);
- }
- if (config.type && instance.type) {
- let group = [config.type.find(t => BDFDB.ArrayUtils.is(t) && instance.type === t[1])].flat(10)[0] || "Default";
- if (!BDFDB.ArrayUtils.is(foundInstances[group])) foundInstances[group] = [];
- foundInstances[group].push(instance.stateNode);
- }
- }
- else foundInstances.push(instance.stateNode);
- }
- }
- }
- if (result === undefined) {
- let keys = Object.getOwnPropertyNames(instance);
- for (let i = 0; result === undefined && i < keys.length; i++) {
- let key = keys[i];
- if (key && whitelist[key] && (typeof instance[key] === "object" || typeof instance[key] === "function")) result = getOwner(instance[key]);
- }
- }
- }
- depth--;
- return result;
- }
- };
- BDFDB.ReactUtils.findProps = function (nodeOrInstance, config) {
- if (!BDFDB.ObjectUtils.is(config)) return null;
- if (!nodeOrInstance || !config.name && !config.key) return null;
- let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance;
- if (!BDFDB.ObjectUtils.is(instance)) return null;
- config.name = config.name && [config.name].flat().filter(n => n);
- config.key = config.key && [config.key].flat().filter(n => n);
- let depth = -1;
- let start = performance.now();
- let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth);
- let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time);
- let whitelist = config.up ? {return:true, sibling:true, _reactInternalFiber:true} : {child:true, sibling:true, _reactInternalFiber:true};
- return findProps(instance);
-
- function findProps (instance) {
- depth++;
- let result = undefined;
- if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) {
- if (instance.memoizedProps && (instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name.split(" _ _ ")[0])) || config.key && config.key.some(key => instance.key == key))) result = instance.memoizedProps;
- if (result === undefined) {
- let keys = Object.getOwnPropertyNames(instance);
- for (let i = 0; result === undefined && i < keys.length; i++) {
- let key = keys[i];
- if (key && whitelist[key] && (typeof instance[key] === "object" || typeof instance[key] === "function")) result = findProps(instance[key]);
- }
- }
- }
- depth--;
- return result;
- }
- };
- BDFDB.ReactUtils.findValue = function (nodeOrInstance, searchKey, config = {}) {
- if (!BDFDB.ObjectUtils.is(config)) return null;
- if (!nodeOrInstance || typeof searchKey != "string") return config.all ? [] : null;
- let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance;
- if (!BDFDB.ObjectUtils.is(instance)) return config.all ? [] : null;
- instance = instance._reactInternalFiber || instance;
- let depth = -1;
- let start = performance.now();
- let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth);
- let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time);
- let whitelist = {
- props: true,
- state: true,
- stateNode: true,
- updater: true,
- prototype: true,
- type: true,
- children: config.up ? false : true,
- memoizedProps: true,
- memoizedState: true,
- child: config.up ? false : true,
- return: config.up ? true : false,
- sibling: config.up ? false : true
- };
- let blacklist = {
- contextSection: true
- };
- if (BDFDB.ObjectUtils.is(config.whitelist)) Object.assign(whitelist, config.whiteList);
- if (BDFDB.ObjectUtils.is(config.blacklist)) Object.assign(blacklist, config.blacklist);
- let foundKeys = [];
- let singleKey = getKey(instance);
- if (config.all) return foundKeys;
- else return singleKey;
- function getKey(instance) {
- depth++;
- let result = undefined;
- if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) {
- let keys = Object.getOwnPropertyNames(instance);
- for (let i = 0; result === undefined && i < keys.length; i++) {
- let key = keys[i];
- if (key && !blacklist[key]) {
- let value = instance[key];
- if (searchKey === key && (config.value === undefined || BDFDB.equals(config.value, value))) {
- if (config.all === undefined || !config.all) result = value;
- else if (config.all) {
- if (config.noCopies === undefined || !config.noCopies) foundKeys.push(value);
- else if (config.noCopies) {
- let copy = false;
- for (let foundKey of foundKeys) if (BDFDB.equals(value, foundKey)) {
- copy = true;
- break;
- }
- if (!copy) foundKeys.push(value);
- }
- }
- }
- else if ((typeof value === "object" || typeof value === "function") && (whitelist[key] || key[0] == "." || !isNaN(key[0]))) result = getKey(value);
- }
- }
- }
- depth--;
- return result;
- }
- };
- BDFDB.ReactUtils.forceUpdate = function (...instances) {
- for (let ins of instances.flat(10).filter(n => n)) if (ins.updater && typeof ins.updater.isMounted == "function" && ins.updater.isMounted(ins)) ins.forceUpdate();
- };
- BDFDB.ReactUtils.getInstance = function (node) {
- if (!BDFDB.ObjectUtils.is(node)) return null;
- return node[Object.keys(node).find(key => key.startsWith("__reactInternalInstance"))];
- };
- BDFDB.ReactUtils.getValue = function (nodeOrInstance, valuepath) {
- if (!nodeOrInstance || !valuepath) return null;
- let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance;
- if (!BDFDB.ObjectUtils.is(instance)) return null;
- let found = instance, values = valuepath.split(".").filter(n => n);
- for (value of values) {
- if (!found) return null;
- found = found[value];
- }
- return found;
- };
- BDFDB.ReactUtils.render = function (component, node) {
- if (!BDFDB.ReactUtils.isValidElement(component) || !Node.prototype.isPrototypeOf(node)) return;
- try {
- LibraryModules.ReactDOM.render(component, node);
- let observer = new MutationObserver(changes => changes.forEach(change => {
- let nodes = Array.from(change.removedNodes);
- if (nodes.indexOf(node) > -1 || nodes.some(n => n.contains(node))) {
- observer.disconnect();
- BDFDB.ReactUtils.unmountComponentAtNode(node);
- }
- }));
- observer.observe(document.body, {subtree:true, childList:true});
- }
- catch (err) {BDFDB.LogUtils.error("Could not render react element! " + err);}
- };
- InternalBDFDB.setDefaultProps = function (component, defaultProps) {
- if (BDFDB.ObjectUtils.is(component)) component.defaultProps = Object.assign({}, component.defaultProps, defaultProps);
- };
- InternalBDFDB.loadPatchedComp = function (path) {
- let comp = BDFDB.ReactUtils.getValue(window.BDFDB, `LibraryComponents.${path}`);
- if (comp && comp.prototype && comp.prototype.BDFDBpatch) return comp;
- };
-
- BDFDB.sameProto = function (a, b) {
- if (a != null && typeof a == "object") return a.constructor && a.constructor.prototype && typeof a.constructor.prototype.isPrototypeOf == "function" && a.constructor.prototype.isPrototypeOf(b);
- else return typeof a == typeof b;
- };
- BDFDB.equals = function (mainA, mainB, sorted) {
- var i = -1;
- if (sorted === undefined || typeof sorted !== "boolean") sorted = false;
- return equal(mainA, mainB);
- function equal(a, b) {
- i++;
- var result = true;
- if (i > 1000) result = null;
- else {
- if (typeof a !== typeof b) result = false;
- else if (typeof a === "function") result = a.toString() == b.toString();
- else if (typeof a === "undefined") result = true;
- else if (typeof a === "symbol") result = true;
- else if (typeof a === "boolean") result = a == b;
- else if (typeof a === "string") result = a == b;
- else if (typeof a === "number") {
- if (isNaN(a) || isNaN(b)) result = isNaN(a) == isNaN(b);
- else result = a == b;
- }
- else if (!a && !b) result = true;
- else if (!a || !b) result = false;
- else if (typeof a === "object") {
- var keysA = Object.getOwnPropertyNames(a);
- var keysB = Object.getOwnPropertyNames(b);
- if (keysA.length !== keysB.length) result = false;
- else for (let j = 0; result === true && j < keysA.length; j++) {
- if (sorted) result = equal(a[keysA[j]], b[keysB[j]]);
- else result = equal(a[keysA[j]], b[keysA[j]]);
- }
- }
- }
- i--;
- return result;
- }
- };
-
- let MessageRerenderTimeout;
- BDFDB.MessageUtils = {};
- BDFDB.MessageUtils.rerenderAll = function () {
- BDFDB.TimeUtils.clear(MessageRerenderTimeout);
- MessageRerenderTimeout = BDFDB.TimeUtils.timeout(_ => {
- let MessagesIns = BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.app), {name:"Messages", unlimited:true});
- let MessagesPrototype = BDFDB.ReactUtils.getValue(MessagesIns, "_reactInternalFiber.type.prototype");
- if (MessagesIns && MessagesPrototype) {
- BDFDB.ModuleUtils.patch(BDFDB, MessagesPrototype, "render", {after: e => {
- let [children, index] = BDFDB.ReactUtils.findChildren(e.returnValue, {props: ["message", "channel"]});
- if (index > -1) for (let ele of children) if (ele.props.message) ele.props.message = new BDFDB.DiscordObjects.Message(ele.props.message);
- }}, {once: true});
- BDFDB.ReactUtils.forceUpdate(MessagesIns);
- }
- }, 1000);
- };
-
- BDFDB.UserUtils = {};
- BDFDB.UserUtils.is = function (user) {
- return user && user instanceof BDFDB.DiscordObjects.User;
- };
- var myDataUser = LibraryModules.CurrentUserStore && LibraryModules.CurrentUserStore.getCurrentUser();
- BDFDB.UserUtils.me = new Proxy(myDataUser || {}, {
- get: function (list, item) {
- return (myDataUser = LibraryModules.CurrentUserStore.getCurrentUser()) && myDataUser[item];
- }
- });
- BDFDB.UserUtils.getStatus = function (id = BDFDB.UserUtils.me.id) {
- id = typeof id == "number" ? id.toFixed() : id;
- let activity = BDFDB.UserUtils.getActivitiy(id);
- return activity && activity.type == BDFDB.DiscordConstants.ActivityTypes.STREAMING ? "streaming" : LibraryModules.StatusMetaUtils.getStatus(id);
- };
- BDFDB.UserUtils.getStatusColor = function (status) {
- status = typeof status == "string" ? status.toLowerCase() : null;
- switch (status) {
- case "online": return BDFDB.DiscordConstants.Colors.STATUS_GREEN;
- case "mobile": return BDFDB.DiscordConstants.Colors.STATUS_GREEN;
- case "idle": return BDFDB.DiscordConstants.Colors.STATUS_YELLOW;
- case "dnd": return BDFDB.DiscordConstants.Colors.STATUS_RED;
- case "playing": return BDFDB.DiscordConstants.Colors.BRAND;
- case "listening": return BDFDB.DiscordConstants.Colors.SPOTIFY;
- case "streaming": return BDFDB.DiscordConstants.Colors.TWITCH;
- default: return BDFDB.DiscordConstants.Colors.STATUS_GREY;
- }
- };
- BDFDB.UserUtils.getActivitiy = function (id = BDFDB.UserUtils.me.id) {
- for (let activity of LibraryModules.StatusMetaUtils.getActivities(id)) if (activity.type != BDFDB.DiscordConstants.ActivityTypes.CUSTOM_STATUS) return activity;
- return null;
- };
- BDFDB.UserUtils.getAvatar = function (id = BDFDB.UserUtils.me.id) {
- var user = LibraryModules.UserStore.getUser(typeof id == "number" ? id.toFixed() : id);
- if (!user) return window.location.origin + "/assets/322c936a8c8be1b803cd94861bdfa868.png";
- else return ((user.avatar ? "" : window.location.origin) + LibraryModules.IconUtils.getUserAvatarURL(user)).split("?")[0];
- };
- BDFDB.UserUtils.can = function (permission, id = BDFDB.UserUtils.me.id, channelid = LibraryModules.LastChannelStore.getChannelId()) {
- if (!BDFDB.DiscordConstants.Permissions[permission]) BDFDB.LogUtils.warn(permission + " not found in Permissions");
- else {
- var channel = LibraryModules.ChannelStore.getChannel(channelid);
- if (channel) return LibraryModules.PermissionUtils.canUser(id, BDFDB.DiscordConstants.Permissions[permission], channel);
- }
- return false;
- };
-
- let GuildsRerenderTimeout;
- BDFDB.GuildUtils = {};
- BDFDB.GuildUtils.is = function (guild) {
- if (!BDFDB.ObjectUtils.is(guild)) return false;
- let keys = Object.keys(guild);
- return guild instanceof BDFDB.DiscordObjects.Guild || Object.keys(new BDFDB.DiscordObjects.Guild({})).every(key => keys.indexOf(key) > -1);
- };
- BDFDB.GuildUtils.getIcon = function (id) {
- let guild = LibraryModules.GuildStore.getGuild(typeof id == "number" ? id.toFixed() : id);
- if (!guild || !guild.icon) return null;
- return LibraryModules.IconUtils.getGuildIconURL(guild).split("?")[0];
- };
- BDFDB.GuildUtils.getBanner = function (id) {
- let guild = LibraryModules.GuildStore.getGuild(typeof id == "number" ? id.toFixed() : id);
- if (!guild || !guild.banner) return null;
- return LibraryModules.IconUtils.getGuildBannerURL(guild).split("?")[0];
- };
- BDFDB.GuildUtils.getFolder = function (id) {
- return BDFDB.LibraryModules.FolderStore.guildFolders.filter(n => n.folderId).find(n => n.guildIds.includes(id));
- };
- BDFDB.GuildUtils.getId = function (div) {
- if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return;
- let guilddiv = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, div);
- if (!guilddiv) return;
- let iconWrap = guilddiv.querySelector(BDFDB.dotCN.guildiconwrapper);
- let id = iconWrap && iconWrap.href ? iconWrap.href.split("/").slice(-2)[0] : null;
- return id && !isNaN(parseInt(id)) ? id.toString() : null;
- };
- BDFDB.GuildUtils.getData = function (eleOrInfoOrId) {
- if (!eleOrInfoOrId) return null;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- id = typeof id == "number" ? id.toFixed() : id;
- for (let info of BDFDB.GuildUtils.getAll()) if (info && info.id == id) return info;
- return null;
- };
- BDFDB.GuildUtils.getAll = function () {
- let found = [], objs = [];
- for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.guilds), {name:["Guild","GuildIcon"], all:true, unlimited:true})) {
- if (ins.props && ins.props.guild) objs.push(Object.assign(new ins.props.guild.constructor(ins.props.guild), {div:ins.handleContextMenu && BDFDB.ReactUtils.findDOMNode(ins), instance:ins}));
- }
- for (let id of BDFDB.LibraryModules.FolderStore.getFlattenedGuildIds()) {
- let foundobj = null;
- for (let obj of objs) if (obj.id == id) {
- foundobj = obj
- break;
- }
- if (foundobj) found.push(foundobj);
- else {
- let guild = BDFDB.LibraryModules.GuildStore.getGuild(id);
- if (guild) found.push(Object.assign(new guild.constructor(guild), {div:null, instance:null}))
- }
- }
- return found;
- };
- BDFDB.GuildUtils.getUnread = function (servers) {
- let found = [];
- for (let eleOrInfoOrId of servers === undefined || !BDFDB.ArrayUtils.is(servers) ? BDFDB.GuildUtils.getAll() : servers) {
- if (!eleOrInfoOrId) return null;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- id = typeof id == "number" ? id.toFixed() : id;
- if (id && (LibraryModules.UnreadGuildUtils.hasUnread(id) || LibraryModules.UnreadGuildUtils.getMentionCount(id) > 0)) found.push(eleOrInfoOrId);
- }
- return found;
- };
- BDFDB.GuildUtils.getPinged = function (servers) {
- let found = [];
- for (let eleOrInfoOrId of servers === undefined || !BDFDB.ArrayUtils.is(servers) ? BDFDB.GuildUtils.getAll() : servers) {
- if (!eleOrInfoOrId) return null;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- id = typeof id == "number" ? id.toFixed() : id;
- if (id && LibraryModules.UnreadGuildUtils.getMentionCount(id) > 0) found.push(eleOrInfoOrId);
- }
- return found;
- };
- BDFDB.GuildUtils.getMuted = function (servers) {
- let found = [];
- for (let eleOrInfoOrId of servers === undefined || !BDFDB.ArrayUtils.is(servers) ? BDFDB.GuildUtils.getAll() : servers) {
- if (!eleOrInfoOrId) return null;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- id = typeof id == "number" ? id.toFixed() : id;
- if (id && LibraryModules.MutedUtils.isGuildOrCategoryOrChannelMuted(id)) found.push(eleOrInfoOrId);
- }
- return found;
- };
- BDFDB.GuildUtils.getSelected = function () {
- let info = LibraryModules.GuildStore.getGuild(LibraryModules.LastGuildStore.getGuildId());
- if (info) return BDFDB.GuildUtils.getData(info.id) || Object.assign(new info.constructor(info), {div:null, instance:null});
- else return null;
- };
- BDFDB.GuildUtils.openMenu = function (eleOrInfoOrId, e = BDFDB.InternalData.mousePosition) {
- if (!eleOrInfoOrId) return;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- let guild = LibraryModules.GuildStore.getGuild(id);
- if (guild) LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ContextMenus._Exports.GuildContextMenu && InternalComponents.LibraryComponents.ContextMenus._Exports.GuildContextMenu.default, Object.assign({}, e, {
- type: BDFDB.DiscordConstants.ContextMenuTypes.GUILD_ICON_BAR,
- guild: guild,
- badge: LibraryModules.UnreadGuildUtils.getMentionCount(guild.id),
- link: BDFDB.DiscordConstants.Routes.CHANNEL(guild.id, LibraryModules.LastChannelStore.getChannelId(guild.id)),
- selected: guild.id == LibraryModules.LastGuildStore.getGuildId()
- }));
- });
- };
- BDFDB.GuildUtils.markAsRead = function (guilds) {
- if (!guilds) return;
- let unreadChannels = [];
- for (let guild of BDFDB.ArrayUtils.is(guilds) ? guilds : (typeof guilds == "string" || typeof guilds == "number" ? Array.of(guilds) : Array.from(guilds))) {
- let id = Node.prototype.isPrototypeOf(guild) ? BDFDB.GuildUtils.getId(guild) : (guild && typeof guild == "object" ? guild.id : guild);
- let channels = id && LibraryModules.GuildChannelStore.getChannels(id);
- if (channels) for (let type in channels) if (BDFDB.ArrayUtils.is(channels[type])) for (let channelObj of channels[type]) unreadChannels.push(channelObj.channel.id);
- }
- if (unreadChannels.length) BDFDB.ChannelUtils.markAsRead(unreadChannels);
- };
- BDFDB.GuildUtils.rerenderAll = function () {
- BDFDB.TimeUtils.clear(GuildsRerenderTimeout);
- GuildsRerenderTimeout = BDFDB.TimeUtils.timeout(_ => {
- let GuildsIns = BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.app), {name:"Guilds", unlimited:true});
- let GuildsPrototype = BDFDB.ReactUtils.getValue(GuildsIns, "_reactInternalFiber.type.prototype");
- if (GuildsIns && GuildsPrototype) {
- BDFDB.ModuleUtils.patch(BDFDB, GuildsPrototype, "render", {after: e => {
- let [children, index] = BDFDB.ReactUtils.findChildren(e.returnValue, {name: "ConnectedUnreadDMs"});
- if (index > -1) children.splice(index + 1, 0, BDFDB.ReactUtils.createElement("div", {}));
- BDFDB.ReactUtils.forceUpdate(GuildsIns);
- }}, {once: true});
- BDFDB.ReactUtils.forceUpdate(GuildsIns);
- }
- }, 1000);
- };
-
- BDFDB.FolderUtils = {};
- BDFDB.FolderUtils.getId = function (div) {
- if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return;
- div = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildfolderwrapper, div);
- if (!div) return;
- return BDFDB.ReactUtils.findValue(div, "folderId", {up:true});
- };
- BDFDB.FolderUtils.getDefaultName = function (folderId) {
- let folder = BDFDB.LibraryModules.FolderStore.getGuildFolderById(folderId);
- if (!folder) return "";
- let rest = 2 * BDFDB.DiscordConstants.MAX_GUILD_FOLDER_NAME_LENGTH;
- let names = [], allNames = folder.guildIds.map(guildId => (BDFDB.LibraryModules.GuildStore.getGuild(guildId) || {}).name).filter(n => n);
- for (let name of allNames) if (name.length < rest || names.length === 0) {
- names.push(name);
- rest -= name.length;
- }
- return names.join(", ") + (names.length < allNames.length ? ", ..." : "");
- };
- BDFDB.FolderUtils.getDiv = function (eleOrInfoOrId) {
- if (!eleOrInfoOrId) return null;
- let info = BDFDB.FolderUtils.getData(eleOrInfoOrId);
- return info ? info.div : null;
- };
- BDFDB.FolderUtils.getData = function (eleOrInfoOrId) {
- if (!eleOrInfoOrId) return null;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.FolderUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- id = typeof id == "number" ? id.toFixed() : id;
- for (let info of BDFDB.FolderUtils.getAll()) if (info && info.folderId == id) return info;
- return null;
- };
- BDFDB.FolderUtils.getAll = function () {
- let found = [];
- for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.guildswrapper), {name:"GuildFolder", all:true, unlimited:true})) {
- if (ins.props && ins.props.folderId) found.push(Object.assign({}, ins.props, {div:BDFDB.ReactUtils.findDOMNode(ins), instance:ins}));
- }
- return found;
- };
-
- BDFDB.ChannelUtils = {};
- BDFDB.ChannelUtils.is = function (channel) {
- if (!BDFDB.ObjectUtils.is(channel)) return false;
- let keys = Object.keys(channel);
- return channel instanceof BDFDB.DiscordObjects.Channel || Object.keys(new BDFDB.DiscordObjects.Channel({})).every(key => keys.indexOf(key) > -1);
- };
- BDFDB.ChannelUtils.isTextChannel = function (channelOrId) {
- let channel = typeof channelOrId == "string" ? LibraryModules.ChannelStore.getChannel(channelOrId) : channelOrId;
- return BDFDB.ObjectUtils.is(channel) && (channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_TEXT || channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_STORE || channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_ANNOUNCEMENT);
- };
- BDFDB.ChannelUtils.getId = function (div) {
- if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return;
- div = BDFDB.DOMUtils.getParent(BDFDB.dotCNC.categorycontainerdefault + BDFDB.dotCNC.channelcontainerdefault + BDFDB.dotCN.dmchannel, div);
- if (!div) return;
- let info = BDFDB.ReactUtils.findValue(div, "channel");
- return info ? info.id.toString() : null;
- };
- BDFDB.ChannelUtils.getDiv = function (eleOrInfoOrId) {
- if (!eleOrInfoOrId) return null;
- let info = BDFDB.ChannelUtils.getData(eleOrInfoOrId);
- return info ? info.div : null;
- };
- BDFDB.ChannelUtils.getData = function (eleOrInfoOrId) {
- if (!eleOrInfoOrId) return null;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.ChannelUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- id = typeof id == "number" ? id.toFixed() : id;
- for (let info of BDFDB.ChannelUtils.getAll()) if (info && info.id == id) return info;
- return null;
- };
- BDFDB.ChannelUtils.getName = function (id, addPrefix) {
- let channel = BDFDB.LibraryModules.ChannelStore.getChannel(id);
- if (!channel) return "";
- switch (channel.type) {
- case BDFDB.DiscordConstants.ChannelTypes.DM:
- let user = channel.recipients.map(BDFDB.LibraryModules.UserStore.getUser).filter(n => n)[0];
- return (addPrefix && "@" || "") + (user && user.toString() || "");
- case BDFDB.DiscordConstants.ChannelTypes.GROUP_DM:
- if (channel.name) return channel.name;
- let users = channel.recipients.map(BDFDB.LibraryModules.UserStore.getUser).filter(n => n);
- return users.length > 0 ? users.map(user => user.toString).join(", ") : BDFDB.LanguageUtils.LanguageStrings.UNNAMED;
- case BDFDB.DiscordConstants.ChannelTypes.GUILD_ANNOUNCEMENT:
- case BDFDB.DiscordConstants.ChannelTypes.GUILD_TEXT:
- return (addPrefix && "#" || "") + channel.name;
- default:
- return channel.name
- }
- };
- BDFDB.ChannelUtils.getAll = function () {
- let found = [];
- for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.channels), {name: ["ChannelCategoryItem", "ChannelItem", "PrivateChannel"], all:true, unlimited:true})) if (ins.props && !ins.props.ispin && ins.props.channel && ins._reactInternalFiber.return) {
- var div = BDFDB.ReactUtils.findDOMNode(ins);
- div = div && BDFDB.DOMUtils.containsClass(div.parentElement, BDFDB.disCN.categorycontainerdefault, BDFDB.disCN.channelcontainerdefault, false) ? div.parentElement : div;
- found.push(Object.assign(new ins.props.channel.constructor(ins.props.channel), {div, instance:ins}));
- }
- return found;
- };
- BDFDB.ChannelUtils.getSelected = function () {
- let info = LibraryModules.ChannelStore.getChannel(LibraryModules.LastChannelStore.getChannelId());
- if (info) return BDFDB.ChannelUtils.getData(info.id) || Object.assign(new info.constructor(info), {div:null, instance:null});
- else return null;
- };
- BDFDB.ChannelUtils.openMenu = function (eleOrInfoOrId, e = BDFDB.InternalData.mousePosition) {
- if (!eleOrInfoOrId) return;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.ChannelUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- let channel = LibraryModules.ChannelStore.getChannel(id);
- if (channel) {
- let type = null;
- for (let t in BDFDB.DiscordConstants.ChannelTypes) if (BDFDB.DiscordConstants.ChannelTypes[t] == channel.type) {
- type = BDFDB.DiscordConstants.ContextMenuTypes[(t == "GUILD_CATEGORY" ? "CHANNEL_" : "CHANNEL_LIST_") + t.replace("GUILD_", "")];
- break;
- }
- if (type) LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ContextMenus._Exports.ChannelContextMenu && InternalComponents.LibraryComponents.ContextMenus._Exports.ChannelContextMenu.default, Object.assign({}, e, {
- type: type,
- channel: channel,
- guild: LibraryModules.GuildStore.getGuild(channel.guild_id),
- selected: channel.id == LibraryModules.LastChannelStore.getChannelId()
- }));
- });
- }
- };
- BDFDB.ChannelUtils.markAsRead = function (channels) {
- if (!channels) return;
- let unreadChannels = [];
- for (let channel of channels = BDFDB.ArrayUtils.is(channels) ? channels : (typeof channels == "string" || typeof channels == "number" ? Array.of(channels) : Array.from(channels))) {
- let id = Node.prototype.isPrototypeOf(channel) ? BDFDB.ChannelUtils.getId(channel) : (channel && typeof channel == "object" ? channel.id : channel);
- if (id && BDFDB.ChannelUtils.isTextChannel(id)) unreadChannels.push({
- channelId: id,
- messageId: LibraryModules.UnreadChannelUtils.lastMessageId(id)
- });
- }
- if (unreadChannels.length) LibraryModules.AckUtils.bulkAck(unreadChannels);
- };
-
- BDFDB.DMUtils = {};
- BDFDB.DMUtils.isDMChannel = function (channelOrId) {
- let channel = typeof channelOrId == "string" ? LibraryModules.ChannelStore.getChannel(channelOrId) : channelOrId;
- return BDFDB.ObjectUtils.is(channel) && (channel.type == BDFDB.DiscordConstants.ChannelTypes.DM || channel.type == BDFDB.DiscordConstants.ChannelTypes.GROUP_DM);
- };
- BDFDB.DMUtils.getIcon = function (id) {
- let channel = LibraryModules.ChannelStore.getChannel(id = typeof id == "number" ? id.toFixed() : id);
- if (!channel) return null;
- if (!channel.icon) return channel.type == 1 ? BDFDB.UserUtils.getAvatar(channel.recipients[0]) : (channel.type == 3 ? window.location.origin + LibraryModules.IconUtils.getChannelIconURL(channel).split("?")[0] : null);
- return LibraryModules.IconUtils.getChannelIconURL(channel).split("?")[0];
- };
- BDFDB.DMUtils.getId = function (div) {
- if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return;
- let dmdiv = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, div);
- if (!dmdiv) return;
- let iconWrap = dmdiv.querySelector(BDFDB.dotCN.guildiconwrapper);
- let id = iconWrap && iconWrap.href ? iconWrap.href.split("/").slice(-1)[0] : null;
- return id && !isNaN(parseInt(id)) ? id.toString() : null;
- };
- BDFDB.DMUtils.getDiv = function (eleOrInfoOrId) {
- if (!eleOrInfoOrId) return null;
- if (Node.prototype.isPrototypeOf(eleOrInfoOrId)) {
- var div = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, eleOrInfoOrId);
- return div ? div.parentElement : div;
- }
- else {
- let id = typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId;
- if (id) {
- var div = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, document.querySelector(`${BDFDB.dotCNS.guilds + BDFDB.dotCN.dmpill + " + * " + BDFDB.dotCN.guildiconwrapper}[href*="/channels/@me/${id}"]`));
- return div && BDFDB? div.parentElement : div;
- }
- }
- return null;
- };
- BDFDB.DMUtils.getData = function (eleOrInfoOrId) {
- if (!eleOrInfoOrId) return null;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.BDFDB.DMUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- id = typeof id == "number" ? id.toFixed() : id;
- for (let info of BDFDB.DMUtils.getAll()) if (info && info.id == id) return info;
- return null;
- };
- BDFDB.DMUtils.getAll = function () {
- let found = [];
- for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.guilds), {name:"DirectMessage", all:true, unlimited:true})) {
- if (ins.props && ins.props.channel) found.push(Object.assign(new ins.props.channel.constructor(ins.props.channel), {div:BDFDB.ReactUtils.findDOMNode(ins), instance:ins}));
- }
- return found;
- };
- BDFDB.DMUtils.openMenu = function (eleOrInfoOrId, e = BDFDB.InternalData.mousePosition) {
- if (!eleOrInfoOrId) return;
- let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.ChannelUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId);
- let channel = LibraryModules.ChannelStore.getChannel(id);
- if (channel) {
- if (channel.isMultiUserDM()) LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ContextMenus.GroupDMContextMenu, Object.assign({}, e, {
- channelId: channel.id,
- selected: channel.id == LibraryModules.LastChannelStore.getChannelId()
- }));
- }, {noBlurEvent: true});
- else LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ContextMenus._Exports.UserContextMenu && InternalComponents.LibraryComponents.ContextMenus._Exports.UserContextMenu.default, Object.assign({}, e, {
- type: BDFDB.DiscordConstants.ContextMenuTypes.USER_PRIVATE_CHANNELS,
- user: LibraryModules.UserStore.getUser(channel.recipients[0]),
- channelId: channel.id,
- selected: channel.id == LibraryModules.LastChannelStore.getChannelId()
- }));
- });
- }
- };
- BDFDB.DMUtils.markAsRead = function (dms) {
- if (!dms) return;
- let unreadChannels = [];
- for (let dm of dms = BDFDB.ArrayUtils.is(dms) ? dms : (typeof dms == "string" || typeof dms == "number" ? Array.of(dms) : Array.from(dms))) {
- let id = Node.prototype.isPrototypeOf(dm) ? BDFDB.BDFDB.DMUtils.getId(dm) : (dm && typeof dm == "object" ? dm.id : dm);
- if (id) unreadChannels.push(id);
- }
- for (let i in unreadChannels) BDFDB.TimeUtils.timeout(_ => {LibraryModules.AckUtils.ack(unreadChannels[i]);}, i * 1000);
- };
-
- BDFDB.DataUtils = {};
- BDFDB.DataUtils.cached = window.BDFDB && window.BDFDB.DataUtils && window.BDFDB.DataUtils.cached || {};
- BDFDB.DataUtils.save = function (data, plugin, key, id) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- let pluginName = typeof plugin === "string" ? plugin : plugin.name;
- let configPath = LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".config.json");
-
- let config = BDFDB.DataUtils.cached[pluginName] !== undefined ? BDFDB.DataUtils.cached[pluginName] : (InternalBDFDB.readConfig(configPath) || {});
-
- if (key === undefined) config = BDFDB.ObjectUtils.is(data) ? BDFDB.ObjectUtils.sort(data) : data;
- else {
- if (id === undefined) config[key] = BDFDB.ObjectUtils.is(data) ? BDFDB.ObjectUtils.sort(data) : data;
- else {
- if (!BDFDB.ObjectUtils.is(config[key])) config[key] = {};
- config[key][id] = BDFDB.ObjectUtils.is(data) ? BDFDB.ObjectUtils.sort(data) : data;
- }
- }
-
- let configIsObject = BDFDB.ObjectUtils.is(config);
- if (key !== undefined && configIsObject && BDFDB.ObjectUtils.is(config[key]) && BDFDB.ObjectUtils.isEmpty(config[key])) delete config[key];
- if (BDFDB.ObjectUtils.isEmpty(config)) {
- delete BDFDB.DataUtils.cached[pluginName];
- if (LibraryRequires.fs.existsSync(configPath)) LibraryRequires.fs.unlinkSync(configPath);
- }
- else {
- if (configIsObject) config = BDFDB.ObjectUtils.sort(config);
- BDFDB.DataUtils.cached[pluginName] = configIsObject ? BDFDB.ObjectUtils.deepAssign({}, config) : config;
- LibraryRequires.fs.writeFileSync(configPath, JSON.stringify(config, null, " "));
- }
- };
-
- BDFDB.DataUtils.load = function (plugin, key, id) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- let pluginName = typeof plugin === "string" ? plugin : plugin.name;
- let configPath = LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".config.json");
-
- let config = BDFDB.DataUtils.cached[pluginName] !== undefined ? BDFDB.DataUtils.cached[pluginName] : (InternalBDFDB.readConfig(configPath) || {});
- let configIsObject = BDFDB.ObjectUtils.is(config);
- BDFDB.DataUtils.cached[pluginName] = configIsObject ? BDFDB.ObjectUtils.deepAssign({}, config) : config;
-
- if (key === undefined) return config;
- else {
- let keydata = configIsObject ? (BDFDB.ObjectUtils.is(config[key]) || config[key] == undefined ? BDFDB.ObjectUtils.deepAssign({}, config[key]) : config[key]) : null;
- if (id === undefined) return keydata;
- else return !BDFDB.ObjectUtils.is(keydata) || keydata[id] === undefined ? null : keydata[id];
- }
- };
- BDFDB.DataUtils.remove = function (plugin, key, id) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- let pluginName = typeof plugin === "string" ? plugin : plugin.name;
- let configPath = LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".config.json");
-
- let config = BDFDB.DataUtils.cached[pluginName] !== undefined ? BDFDB.DataUtils.cached[pluginName] : (InternalBDFDB.readConfig(configPath) || {});
- let configIsObject = BDFDB.ObjectUtils.is(config);
-
- if (key === undefined || !configIsObject) config = {};
- else {
- if (id === undefined) delete config[key];
- else if (BDFDB.ObjectUtils.is(config[key])) delete config[key][id];
- }
-
- if (BDFDB.ObjectUtils.is(config[key]) && BDFDB.ObjectUtils.isEmpty(config[key])) delete config[key];
- if (BDFDB.ObjectUtils.isEmpty(config)) {
- delete BDFDB.DataUtils.cached[pluginName];
- if (LibraryRequires.fs.existsSync(configPath)) LibraryRequires.fs.unlinkSync(configPath);
- }
- else {
- if (configIsObject) config = BDFDB.ObjectUtils.sort(config);
- BDFDB.DataUtils.cached[pluginName] = configIsObject ? BDFDB.ObjectUtils.deepAssign({}, config) : config;
- LibraryRequires.fs.writeFileSync(configPath, JSON.stringify(config, null, " "));
- }
- };
- BDFDB.DataUtils.get = function (plugin, key, id) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- plugin = typeof plugin == "string" ? BDFDB.BDUtils.getPlugin(plugin) : plugin;
- if (!BDFDB.ObjectUtils.is(plugin)) return id === undefined ? {} : null;
- let defaults = plugin.defaults;
- if (!BDFDB.ObjectUtils.is(defaults) || !defaults[key]) return id === undefined ? {} : null;
- let oldC = BDFDB.DataUtils.load(plugin, key), newC = {}, update = false;
- for (let k in defaults[key]) {
- let isObj = BDFDB.ObjectUtils.is(defaults[key][k].value);
- if (oldC[k] == null || isObj && (!BDFDB.ObjectUtils.is(oldC[k]) || Object.keys(defaults[key][k].value).some(n => defaults[key][k].value[n] != null && !BDFDB.sameProto(defaults[key][k].value[n], oldC[k][n])))) {
- newC[k] = isObj ? BDFDB.ObjectUtils.deepAssign({}, defaults[key][k].value) : defaults[key][k].value;
- update = true;
- }
- else newC[k] = oldC[k];
- }
- if (update) BDFDB.DataUtils.save(newC, plugin, key);
-
- if (id === undefined) return newC;
- else return newC[id] === undefined ? null : newC[id];
- };
- InternalBDFDB.readConfig = function (path) {
- try {return JSON.parse(LibraryRequires.fs.readFileSync(path));}
- catch (err) {return {};}
- };
-
- BDFDB.ColorUtils = {};
- BDFDB.ColorUtils.convert = function (color, conv, type) {
- if (BDFDB.ObjectUtils.is(color)) {
- var newColor = {};
- for (let pos in color) newColor[pos] = BDFDB.ColorUtils.convert(color[pos], conv, type);
- return newColor;
- }
- else {
- conv = conv === undefined || !conv ? conv = "RGBCOMP" : conv.toUpperCase();
- type = type === undefined || !type || !["RGB", "RGBA", "RGBCOMP", "HSL", "HSLA", "HSLCOMP", "HEX", "HEXA", "INT"].includes(type.toUpperCase()) ? BDFDB.ColorUtils.getType(color) : type.toUpperCase();
- if (conv == "RGBCOMP") {
- switch (type) {
- case "RGBCOMP":
- if (color.length == 3) return processRGB(color);
- else if (color.length == 4) {
- let a = processA(color.pop());
- return processRGB(color).concat(a);
- }
- break;
- case "RGB":
- return processRGB(color.replace(/\s/g, "").slice(4, -1).split(","));
- case "RGBA":
- let comp = color.replace(/\s/g, "").slice(5, -1).split(",");
- let a = processA(comp.pop());
- return processRGB(comp).concat(a);
- case "HSLCOMP":
- if (color.length == 3) return BDFDB.ColorUtils.convert(`hsl(${processHSL(color).join(",")})`, "RGBCOMP");
- else if (color.length == 4) {
- let a = processA(color.pop());
- return BDFDB.ColorUtils.convert(`hsl(${processHSL(color).join(",")})`, "RGBCOMP").concat(a);
- }
- break;
- case "HSL":
- var hslcomp = processHSL(color.replace(/\s/g, "").slice(4, -1).split(","));
- var r, g, b, m, c, x, p, q;
- var h = hslcomp[0] / 360, l = parseInt(hslcomp[1]) / 100, s = parseInt(hslcomp[2]) / 100; m = Math.floor(h * 6); c = h * 6 - m; x = s * (1 - l); p = s * (1 - c * l); q = s * (1 - (1 - c) * l);
- switch (m % 6) {
- case 0: r = s, g = q, b = x; break;
- case 1: r = p, g = s, b = x; break;
- case 2: r = x, g = s, b = q; break;
- case 3: r = x, g = p, b = s; break;
- case 4: r = q, g = x, b = s; break;
- case 5: r = s, g = x, b = p; break;
- }
- return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
- case "HSLA":
- var hslcomp = color.replace(/\s/g, "").slice(5, -1).split(",");
- return BDFDB.ColorUtils.convert(`hsl(${hslcomp.slice(0, 3).join(",")})`, "RGBCOMP").concat(processA(hslcomp.pop()));
- case "HEX":
- var hex = /^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color);
- return [parseInt(hex[1] + hex[1] || hex[4], 16).toString(), parseInt(hex[2] + hex[2] || hex[5], 16).toString(), parseInt(hex[3] + hex[3] || hex[6], 16).toString()];
- case "HEXA":
- var hex = /^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color);
- return [parseInt(hex[1] + hex[1] || hex[5], 16).toString(), parseInt(hex[2] + hex[2] || hex[6], 16).toString(), parseInt(hex[3] + hex[3] || hex[7], 16).toString(), Math.floor(BDFDB.NumberUtils.mapRange([0, 255], [0, 100], parseInt(hex[4] + hex[4] || hex[8], 16).toString()))/100];
- case "INT":
- color = processINT(color);
- return [(color >> 16 & 255).toString(), (color >> 8 & 255).toString(), (color & 255).toString()];
- default:
- return null;
- }
- }
- else {
- if (conv && type && conv.indexOf("HSL") == 0 && type.indexOf("HSL") == 0) {
- if (type == "HSLCOMP") {
- switch (conv) {
- case "HSLCOMP":
- if (color.length == 3) return processHSL(color);
- else if (color.length == 4) {
- var a = processA(color.pop());
- return processHSL(color).concat(a);
- }
- break;
- case "HSL":
- return `hsl(${processHSL(color.slice(0, 3)).join(",")})`;
- case "HSLA":
- color = color.slice(0, 4);
- var a = color.length == 4 ? processA(color.pop()) : 1;
- return `hsla(${processHSL(color).concat(a).join(",")})`;
- }
- }
- else return BDFDB.ColorUtils.convert(color.replace(/\s/g, "").slice(color.toLowerCase().indexOf("hsla") == 0 ? 5 : 4, -1).split(","), conv, "HSLCOMP");
- }
- else {
- let rgbcomp = type == "RGBCOMP" ? color : BDFDB.ColorUtils.convert(color, "RGBCOMP", type);
- if (rgbcomp) switch (conv) {
- case "RGB":
- return `rgb(${processRGB(rgbcomp.slice(0, 3)).join(",")})`;
- case "RGBA":
- rgbcomp = rgbcomp.slice(0, 4);
- var a = rgbcomp.length == 4 ? processA(rgbcomp.pop()) : 1;
- return `rgba(${processRGB(rgbcomp).concat(a).join(",")})`;
- case "HSLCOMP":
- var a = rgbcomp.length == 4 ? processA(rgbcomp.pop()) : null;
- var hslcomp = processHSL(BDFDB.ColorUtils.convert(rgbcomp, "HSL").replace(/\s/g, "").split(","));
- return a != null ? hslcomp.concat(a) : hslcomp;
- case "HSL":
- var r = processC(rgbcomp[0]), g = processC(rgbcomp[1]), b = processC(rgbcomp[2]);
- var max = Math.max(r, g, b), min = Math.min(r, g, b), dif = max - min, h, l = max === 0 ? 0 : dif / max, s = max / 255;
- switch (max) {
- case min: h = 0; break;
- case r: h = g - b + dif * (g < b ? 6 : 0); h /= 6 * dif; break;
- case g: h = b - r + dif * 2; h /= 6 * dif; break;
- case b: h = r - g + dif * 4; h /= 6 * dif; break;
- }
- return `hsl(${processHSL([Math.round(h * 360), l * 100, s * 100]).join(",")})`;
- case "HSLA":
- var a = rgbcomp.length == 4 ? processA(rgbcomp.pop()) : 1;
- return `hsla(${BDFDB.ColorUtils.convert(rgbcomp, "HSL").slice(4, -1).split(",").concat(a).join(",")})`;
- case "HEX":
- return ("#" + (0x1000000 + (rgbcomp[2] | rgbcomp[1] << 8 | rgbcomp[0] << 16)).toString(16).slice(1)).toUpperCase();
- case "HEXA":
- return ("#" + (0x1000000 + (rgbcomp[2] | rgbcomp[1] << 8 | rgbcomp[0] << 16)).toString(16).slice(1) + (0x100 + Math.round(BDFDB.NumberUtils.mapRange([0, 100], [0, 255], processA(rgbcomp[3]) * 100))).toString(16).slice(1)).toUpperCase();
- case "INT":
- return processINT(rgbcomp[2] | rgbcomp[1] << 8 | rgbcomp[0] << 16);
- default:
- return null;
- }
- }
- }
- }
- return null;
- function processC(c) {if (c == null) {return 255;} else {c = parseInt(c.toString().replace(/[^0-9\-]/g, ""));return isNaN(c) || c > 255 ? 255 : c < 0 ? 0 : c;}};
- function processRGB(comp) {return comp.map(c => {return processC(c);});};
- function processA(a) {if (a == null) {return 1;} else {a = a.toString();a = (a.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(a.replace(/[^0-9\.\-]/g, ""));return isNaN(a) || a > 1 ? 1 : a < 0 ? 0 : a;}};
- function processSL(sl) {if (sl == null) {return "100%";} else {sl = parseFloat(sl.toString().replace(/[^0-9\.\-]/g, ""));return (isNaN(sl) || sl > 100 ? 100 : sl < 0 ? 0 : sl) + "%";}};
- function processHSL(comp) {let h = parseFloat(comp.shift().toString().replace(/[^0-9\.\-]/g, ""));h = isNaN(h) || h > 360 ? 360 : h < 0 ? 0 : h;return [h].concat(comp.map(sl => {return processSL(sl);}));};
- function processINT(c) {if (c == null) {return 16777215;} else {c = parseInt(c.toString().replace(/[^0-9]/g, ""));return isNaN(c) || c > 16777215 ? 16777215 : c < 0 ? 0 : c;}};
- };
- BDFDB.ColorUtils.setAlpha = function (color, a, conv) {
- if (BDFDB.ObjectUtils.is(color)) {
- var newcolor = {};
- for (let pos in color) newcolor[pos] = BDFDB.ColorUtils.setAlpha(color[pos], a, conv);
- return newcolor;
- }
- else {
- var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP");
- if (comp) {
- a = a.toString();
- a = (a.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(a.replace(/[^0-9\.\-]/g, ""));
- a = isNaN(a) || a > 1 ? 1 : a < 0 ? 0 : a;
- comp[3] = a;
- conv = (conv || BDFDB.ColorUtils.getType(color)).toUpperCase();
- conv = conv == "RGB" || conv == "HSL" || conv == "HEX" ? conv + "A" : conv;
- return BDFDB.ColorUtils.convert(comp, conv);
- }
- }
- return null;
- };
- BDFDB.ColorUtils.getAlpha = function (color) {
- var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP");
- if (comp) {
- if (comp.length == 3) return 1;
- else if (comp.length == 4) {
- let a = comp[3].toString();
- a = (a.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(a.replace(/[^0-9\.\-]/g, ""));
- return isNaN(a) || a > 1 ? 1 : a < 0 ? 0 : a;
- }
- }
- return null;
- };
- BDFDB.ColorUtils.change = function (color, value, conv) {
- value = parseFloat(value);
- if (color != null && typeof value == "number" && !isNaN(value)) {
- if (BDFDB.ObjectUtils.is(color)) {
- var newcolor = {};
- for (let pos in color) newcolor[pos] = BDFDB.ColorUtils.change(color[pos], value, conv);
- return newcolor;
- }
- else {
- var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP");
- if (comp) {
- if (parseInt(value) !== value) {
- value = value.toString();
- value = (value.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(value.replace(/[^0-9\.\-]/g, ""));
- value = isNaN(value) ? 0 : value;
- return BDFDB.ColorUtils.convert([Math.round(comp[0] * (1 + value)), Math.round(comp[1] * (1 + value)), Math.round(comp[2] * (1 + value))], conv || BDFDB.ColorUtils.getType(color));
- }
- else return BDFDB.ColorUtils.convert([Math.round(comp[0] + value), Math.round(comp[1] + value), Math.round(comp[2] + value)], conv || BDFDB.ColorUtils.getType(color));
- }
- }
- }
- return null;
- };
- BDFDB.ColorUtils.invert = function (color, conv) {
- if (BDFDB.ObjectUtils.is(color)) {
- var newcolor = {};
- for (let pos in color) newcolor[pos] = BDFDB.ColorUtils.invert(color[pos], conv);
- return newcolor;
- }
- else {
- var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP");
- if (comp) return BDFDB.ColorUtils.convert([255 - comp[0], 255 - comp[1], 255 - comp[2]], conv || BDFDB.ColorUtils.getType(color));
- }
- return null;
- };
- BDFDB.ColorUtils.compare = function (color1, color2) {
- if (color1 && color2) {
- color1 = BDFDB.ColorUtils.convert(color1, "RGBA");
- color2 = BDFDB.ColorUtils.convert(color2, "RGBA");
- if (color1 && color2) return BDFDB.equals(color1, color2);
- }
- return null;
- };
- BDFDB.ColorUtils.isBright = function (color, compare = 160) {
- color = BDFDB.ColorUtils.convert(color, "RGBCOMP");
- if (!color) return false;
- return parseInt(compare) < Math.sqrt(0.299 * color[0]**2 + 0.587 * color[1]**2 + 0.144 * color[2]**2);
- };
- BDFDB.ColorUtils.getType = function (color) {
- if (color != null) {
- if (typeof color === "object" && (color.length == 3 || color.length == 4)) {
- if (isRGB(color)) return "RGBCOMP";
- else if (isHSL(color)) return "HSLCOMP";
- }
- else if (typeof color === "string") {
- if (/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i.test(color)) return "HEX";
- else if (/^#[a-f\d]{4}$|^#[a-f\d]{8}$/i.test(color)) return "HEXA";
- else {
- color = color.toUpperCase();
- var comp = color.replace(/[^0-9\.\-\,\%]/g, "").split(",");
- if (color.indexOf("RGB(") == 0 && comp.length == 3 && isRGB(comp)) return "RGB";
- else if (color.indexOf("RGBA(") == 0 && comp.length == 4 && isRGB(comp)) return "RGBA";
- else if (color.indexOf("HSL(") == 0 && comp.length == 3 && isHSL(comp)) return "HSL";
- else if (color.indexOf("HSLA(") == 0 && comp.length == 4 && isHSL(comp)) return "HSLA";
- }
- }
- else if (typeof color === "number" && parseInt(color) == color && color > -1 && color < 16777216) return "INT";
- }
- return null;
- function isRGB(comp) {return comp.slice(0, 3).every(rgb => rgb.toString().indexOf("%") == -1 && parseFloat(rgb) == parseInt(rgb));};
- function isHSL(comp) {return comp.slice(1, 3).every(hsl => hsl.toString().indexOf("%") == hsl.length - 1);};
- };
- BDFDB.ColorUtils.createGradient = function (colorobj, direction = "to right") {
- var sortedgradient = {};
- var gradientstring = "linear-gradient(" + direction;
- for (let pos of Object.keys(colorobj).sort()) {
- let color = BDFDB.ColorUtils.convert(colorobj[pos], "RGBA");
- gradientstring += color ? `, ${color} ${pos*100}%` : ''
- }
- return gradientstring += ")";
- };
- BDFDB.ColorUtils.getSwatchColor = function (container, number) {
- if (!Node.prototype.isPrototypeOf(container)) return;
- let swatches = container.querySelector(`${BDFDB.dotCN.colorpickerswatches}[number="${number}"], ${BDFDB.dotCN.colorpickerswatch}[number="${number}"]`);
- if (!swatches) return null;
- return BDFDB.ColorUtils.convert(BDFDB.ReactUtils.findValue(BDFDB.ReactUtils.getInstance(swatches), "selectedColor", {up:true, blacklist:{"props":true}}));
- };
-
- BDFDB.DOMUtils = {};
- BDFDB.DOMUtils.getSelection = function () {
- let selection = document.getSelection();
- return selection && selection.anchorNode ? selection.getRangeAt(0).toString() : "";
- };
- BDFDB.DOMUtils.addClass = function (eles, ...classes) {
- if (!eles || !classes) return;
- for (let ele of [eles].flat(10).filter(n => n)) {
- if (Node.prototype.isPrototypeOf(ele)) add(ele);
- else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) add(e);
- else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) add(n);
- }
- function add(node) {
- if (node && node.classList) for (let cla of classes) for (let cl of [cla].flat(10).filter(n => n)) if (typeof cl == "string") for (let c of cl.split(" ")) if (c) node.classList.add(c);
- }
- };
- BDFDB.DOMUtils.removeClass = function (eles, ...classes) {
- if (!eles || !classes) return;
- for (let ele of [eles].flat(10).filter(n => n)) {
- if (Node.prototype.isPrototypeOf(ele)) remove(ele);
- else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) remove(e);
- else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) remove(n);
- }
- function remove(node) {
- if (node && node.classList) for (let cla of classes) for (let cl of [cla].flat(10).filter(n => n)) if (typeof cl == "string") for (let c of cl.split(" ")) if (c) node.classList.remove(c);
- }
- };
- BDFDB.DOMUtils.toggleClass = function (eles, ...classes) {
- if (!eles || !classes) return;
- var force = classes.pop();
- if (typeof force != "boolean") {
- classes.push(force);
- force = undefined;
- }
- if (!classes.length) return;
- for (let ele of [eles].flat(10).filter(n => n)) {
- if (!ele) {}
- else if (Node.prototype.isPrototypeOf(ele)) toggle(ele);
- else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) toggle(e);
- else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) toggle(n);
- }
- function toggle(node) {
- if (node && node.classList) for (let cla of classes) for (let cl of [cla].flat(10).filter(n => n)) if (typeof cl == "string") for (let c of cl.split(" ")) if (c) node.classList.toggle(c, force);
- }
- };
- BDFDB.DOMUtils.containsClass = function (eles, ...classes) {
- if (!eles || !classes) return;
- var all = classes.pop();
- if (typeof all != "boolean") {
- classes.push(all);
- all = true;
- }
- if (!classes.length) return;
- var contained = undefined;
- for (let ele of BDFDB.ArrayUtils.is(eles) ? eles : Array.of(eles)) {
- if (!ele) {}
- else if (Node.prototype.isPrototypeOf(ele)) contains(ele);
- else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) contains(e);
- else if (typeof ele == "string") for (let c of ele.split(",")) if (c && (c = c.trim())) for (let n of document.querySelectorAll(c)) contains(n);
- }
- return contained;
- function contains(node) {
- if (node && node.classList) for (let cla of classes) if (typeof cla == "string") for (let c of cla.split(" ")) if (c) {
- if (contained === undefined) contained = all;
- if (all && !node.classList.contains(c)) contained = false;
- if (!all && node.classList.contains(c)) contained = true;
- }
- }
- };
- BDFDB.DOMUtils.replaceClass = function (eles, oldclass, newclass) {
- if (!eles || typeof oldclass != "string" || typeof newclass != "string") return;
- for (let ele of [eles].flat(10).filter(n => n)) {
- if (Node.prototype.isPrototypeOf(ele)) replace(ele);
- else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) replace(e);
- else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) replace(n);
- }
- function replace(node) {
- if (node && node.tagName && node.className) node.className = node.className.replace(new RegExp(oldclass, "g"), newclass).trim();
- }
- };
- BDFDB.DOMUtils.formatClassName = function (...classes) {
- return BDFDB.ArrayUtils.removeCopies(classes.flat(10).filter(n => n).join(" ").split(" ")).join(" ").trim();
- };
- BDFDB.DOMUtils.removeClassFromDOM = function (...classes) {
- for (let c of classes.flat(10).filter(n => n)) if (typeof c == "string") for (let a of c.split(",")) if (a && (a = a.replace(/\.|\s/g, ""))) BDFDB.DOMUtils.removeClass(document.querySelectorAll("." + a), a);
- };
- BDFDB.DOMUtils.show = function (...eles) {
- BDFDB.DOMUtils.toggle(...eles, true);
- };
- BDFDB.DOMUtils.hide = function (...eles) {
- BDFDB.DOMUtils.toggle(...eles, false);
- };
- BDFDB.DOMUtils.toggle = function (...eles) {
- if (!eles) return;
- var force = eles.pop();
- if (typeof force != "boolean") {
- eles.push(force);
- force = undefined;
- }
- if (!eles.length) return;
- for (let ele of eles.flat(10).filter(n => n)) {
- if (Node.prototype.isPrototypeOf(ele)) toggle(ele);
- else if (NodeList.prototype.isPrototypeOf(ele)) for (let node of ele) toggle(node);
- else if (typeof ele == "string") for (let c of ele.split(",")) if (c && (c = c.trim())) for (let node of document.querySelectorAll(c)) toggle(node);
- }
- function toggle(node) {
- if (!node || !Node.prototype.isPrototypeOf(node)) return;
- var hidden = force === undefined ? !BDFDB.DOMUtils.isHidden(node) : !force;
- if (hidden) node.style.setProperty("display", "none", "important");
- else node.style.removeProperty("display");
- }
- };
- BDFDB.DOMUtils.isHidden = function (node) {
- if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) return getComputedStyle(node, null).getPropertyValue("display") == "none";
- };
- BDFDB.DOMUtils.remove = function (...eles) {
- for (let ele of eles.flat(10).filter(n => n)) {
- if (Node.prototype.isPrototypeOf(ele)) ele.remove();
- else if (NodeList.prototype.isPrototypeOf(ele)) {
- let nodes = Array.from(ele);
- while (nodes.length) nodes.shift().remove();
- }
- else if (typeof ele == "string") for (let c of ele.split(",")) if (c && (c = c.trim())) {
- let nodes = Array.from(document.querySelectorAll(c));
- while (nodes.length) nodes.shift().remove();
- }
- }
- };
- BDFDB.DOMUtils.create = function (html) {
- if (typeof html != "string" || !html.trim()) return null;
- let template = document.createElement("template");
- try {template.innerHTML = html.replace(/(?[\t\r\n]+<(?!pre)/g, "><");}
- catch (err) {template.innerHTML = html.replace(/>[\t\r\n]+<(?!pre)/g, "><");}
- if (template.content.childNodes.length == 1) return template.content.firstElementChild;
- else {
- let wrapper = document.createElement("span");
- let nodes = Array.from(template.content.childNodes);
- while (nodes.length) wrapper.appendChild(nodes.shift());
- return wrapper;
- }
- };
- BDFDB.DOMUtils.getParent = function (listOrSelector, node) {
- let parent = null;
- if (Node.prototype.isPrototypeOf(node) && listOrSelector) {
- let list = NodeList.prototype.isPrototypeOf(listOrSelector) ? listOrSelector : typeof listOrSelector == "string" ? document.querySelectorAll(listOrSelector) : null;
- if (list) for (let listNode of list) if (listNode.contains(node)) {
- parent = listNode;
- break;
- }
- }
- return parent;
- };
- BDFDB.DOMUtils.setText = function (node, stringOrNode) {
- if (!node || !Node.prototype.isPrototypeOf(node)) return;
- let textnode = node.nodeType == Node.TEXT_NODE ? node : null;
- if (!textnode) for (let child of node.childNodes) if (child.nodeType == Node.TEXT_NODE || BDFDB.DOMUtils.containsClass(child, "BDFDB-textnode")) {
- textnode = child;
- break;
- }
- if (textnode) {
- if (Node.prototype.isPrototypeOf(stringOrNode) && stringOrNode.nodeType != Node.TEXT_NODE) {
- BDFDB.DOMUtils.addClass(stringOrNode, "BDFDB-textnode");
- node.replaceChild(stringOrNode, textnode);
- }
- else if (Node.prototype.isPrototypeOf(textnode) && textnode.nodeType != Node.TEXT_NODE) node.replaceChild(document.createTextNode(stringOrNode), textnode);
- else textnode.textContent = stringOrNode;
- }
- else node.appendChild(Node.prototype.isPrototypeOf(stringOrNode) ? stringOrNode : document.createTextNode(stringOrNode));
- };
- BDFDB.DOMUtils.getText = function (node) {
- if (!node || !Node.prototype.isPrototypeOf(node)) return;
- for (let child of node.childNodes) if (child.nodeType == Node.TEXT_NODE) return child.textContent;
- };
- BDFDB.DOMUtils.getRects = function (node) {
- let rects = {};
- if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) {
- let hideNode = node;
- while (hideNode) {
- let hidden = BDFDB.DOMUtils.isHidden(hideNode);
- if (hidden) {
- BDFDB.DOMUtils.toggle(hideNode, true);
- hideNode.BDFDBgetRectsHidden = true;
- }
- hideNode = hideNode.parentElement;
- }
- rects = node.getBoundingClientRect();
- hideNode = node;
- while (hideNode) {
- if (hideNode.BDFDBgetRectsHidden) {
- BDFDB.DOMUtils.toggle(hideNode, false);
- delete hideNode.BDFDBgetRectsHidden;
- }
- hideNode = hideNode.parentElement;
- }
- }
- return rects;
- };
- BDFDB.DOMUtils.getHeight = function (node) {
- if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) {
- let rects = BDFDB.DOMUtils.getRects(node);
- let style = getComputedStyle(node);
- return rects.height + parseInt(style.marginTop) + parseInt(style.marginBottom);
- }
- return 0;
- };
- BDFDB.DOMUtils.getInnerHeight = function (node) {
- if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) {
- let rects = BDFDB.DOMUtils.getRects(node);
- let style = getComputedStyle(node);
- return rects.height - parseInt(style.paddingTop) - parseInt(style.paddingBottom);
- }
- return 0;
- };
- BDFDB.DOMUtils.getWidth = function (node) {
- if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) {
- let rects = BDFDB.DOMUtils.getRects(node);
- let style = getComputedStyle(node);
- return rects.width + parseInt(style.marginLeft) + parseInt(style.marginRight);
- }
- return 0;
- };
- BDFDB.DOMUtils.getInnerWidth = function (node) {
- if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) {
- let rects = BDFDB.DOMUtils.getRects(node);
- let style = getComputedStyle(node);
- return rects.width - parseInt(style.paddingLeft) - parseInt(style.paddingRight);
- }
- return 0;
- };
- BDFDB.DOMUtils.appendWebScript = function (url, container) {
- if (!container && !document.head.querySelector("bd-head bd-scripts")) document.head.appendChild(BDFDB.DOMUtils.create(` `));
- container = container || document.head.querySelector("bd-head bd-scripts") || document.head;
- container = Node.prototype.isPrototypeOf(container) ? container : document.head;
- BDFDB.DOMUtils.removeWebScript(url, container);
- let script = document.createElement("script");
- script.src = url;
- container.appendChild(script);
- };
- BDFDB.DOMUtils.removeWebScript = function (url, container) {
- container = container || document.head.querySelector("bd-head bd-scripts") || document.head;
- container = Node.prototype.isPrototypeOf(container) ? container : document.head;
- BDFDB.DOMUtils.remove(container.querySelectorAll(`script[src="${url}"]`));
- };
- BDFDB.DOMUtils.appendWebStyle = function (url, container) {
- if (!container && !document.head.querySelector("bd-head bd-styles")) document.head.appendChild(BDFDB.DOMUtils.create(` `));
- container = container || document.head.querySelector("bd-head bd-styles") || document.head;
- container = Node.prototype.isPrototypeOf(container) ? container : document.head;
- BDFDB.DOMUtils.removeWebStyle(url, container);
- container.appendChild(BDFDB.DOMUtils.create(` `));
- };
- BDFDB.DOMUtils.removeWebStyle = function (url, container) {
- container = container || document.head.querySelector("bd-head bd-styles") || document.head;
- container = Node.prototype.isPrototypeOf(container) ? container : document.head;
- BDFDB.DOMUtils.remove(container.querySelectorAll(`link[href="${url}"]`));
- };
- BDFDB.DOMUtils.appendLocalStyle = function (id, css, container) {
- if (!container && !document.head.querySelector("bd-head bd-styles")) document.head.appendChild(BDFDB.DOMUtils.create(` `));
- container = container || document.head.querySelector("bd-head bd-styles") || document.head;
- container = Node.prototype.isPrototypeOf(container) ? container : document.head;
- BDFDB.DOMUtils.removeLocalStyle(id, container);
- container.appendChild(BDFDB.DOMUtils.create(``));
- };
- BDFDB.DOMUtils.removeLocalStyle = function (id, container) {
- container = container || document.head.querySelector("bd-head bd-styles") || document.head;
- container = Node.prototype.isPrototypeOf(container) ? container : document.head;
- BDFDB.DOMUtils.remove(container.querySelectorAll(`style[id="${id}CSS"]`));
- };
-
- BDFDB.ModalUtils = {};
- BDFDB.ModalUtils.open = function (plugin, config) {
- if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(config)) return;
- let modal, modalInstance, modalProps, cancels = [], closeModal = _ => {
- if (BDFDB.ObjectUtils.is(modalProps) && typeof modalProps.onClose == "function") modalProps.onClose();
- };
- let headerChildren = [], contentChildren = [], footerChildren = [];
- if (typeof config.text == "string") {
- contentChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, {
- children: config.text
- }));
- }
- if (config.children) {
- let tabBarItems = [];
- for (let child of [config.children].flat(10).filter(n => n)) if (LibraryModules.React.isValidElement(child)) {
- if (child.type == InternalComponents.LibraryComponents.ModalComponents.ModalTabContent) {
- if (!tabBarItems.length) child.props.open = true;
- else delete child.props.open;
- tabBarItems.push({value:child.props.tab});
- }
- contentChildren.push(child);
- }
- if (tabBarItems.length) headerChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.tabbarcontainer,
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TabBar, {
- className: BDFDB.disCN.tabbar,
- itemClassName: BDFDB.disCN.tabbaritem,
- type: InternalComponents.LibraryComponents.TabBar.Types.TOP,
- items: tabBarItems,
- onItemSelect: (value, instance) => {
- let tabContentInstances = BDFDB.ReactUtils.findOwner(modal, {name:"BDFDB_ModalTabContent", all:true, unlimited:true});
- for (let ins of tabContentInstances) {
- if (ins.props.tab == value) ins.props.open = true;
- else delete ins.props.open;
- }
- BDFDB.ReactUtils.forceUpdate(tabContentInstances);
- }
- }),
- config.tabBarChildren
- ].flat(10).filter(n => n)
- }));
- }
- if (BDFDB.ArrayUtils.is(config.buttons)) for (let button of config.buttons) {
- let contents = typeof button.contents == "string" && button.contents;
- if (contents) {
- let color = typeof button.color == "string" && InternalComponents.LibraryComponents.Button.Colors[button.color.toUpperCase()];
- let look = typeof button.look == "string" && InternalComponents.LibraryComponents.Button.Looks[button.look.toUpperCase()];
- let click = typeof button.click == "function" ? button.click : (typeof button.onClick == "function" ? button.onClick : _ => {});
-
- if (button.cancel) cancels.push(click);
-
- footerChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, BDFDB.ObjectUtils.exclude(Object.assign({}, button, {
- look: look || (color ? InternalComponents.LibraryComponents.Button.Looks.FILLED : InternalComponents.LibraryComponents.Button.Looks.LINK),
- color: color || InternalComponents.LibraryComponents.Button.Colors.PRIMARY,
- onClick: _ => {
- if (button.close) closeModal();
- if (!(button.close && button.cancel)) click(modal, modalInstance);
- },
- children: contents
- }), "click", "close", "cancel", "contents")));
- }
- }
- contentChildren = contentChildren.concat(config.contentChildren).filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n)));
- headerChildren = headerChildren.concat(config.headerChildren).filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n)));
- footerChildren = footerChildren.concat(config.footerChildren).filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n)));
- if (contentChildren.length) {
- if (typeof config.onClose != "function") config.onClose = _ => {};
- if (typeof config.onOpen != "function") config.onOpen = _ => {};
-
- let name = plugin.name || (typeof plugin.getName == "function" ? plugin.getName() : null);
- name = typeof name == "string" ? name : null;
- let oldTransitionState = 0;
- LibraryModules.ModalUtils.openModal(props => {
- modalProps = props;
- return BDFDB.ReactUtils.createElement(class BDFDB_Modal extends LibraryModules.React.Component {
- render () {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalRoot, {
- className: BDFDB.DOMUtils.formatClassName(name && `${name}-modal`, BDFDB.disCN.modalwrapper, config.className),
- size: typeof config.size == "string" && InternalComponents.LibraryComponents.ModalComponents.ModalSize[config.size.toUpperCase()] || InternalComponents.LibraryComponents.ModalComponents.ModalSize.SMALL,
- transitionState: props.transitionState,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalHeader, {
- className: BDFDB.DOMUtils.formatClassName(config.headerClassName, headerChildren.length && BDFDB.disCN.modalheaderhassibling),
- separator: config.headerSeparator || false,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, {
- tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H4,
- children: config.header
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, {
- size: InternalComponents.LibraryComponents.TextElement.Sizes.SIZE_12,
- children: typeof config.subheader == "string" || BDFDB.ReactUtils.isValidElement(config.subheader) ? config.subheader : (name || "")
- })
- ]
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalCloseButton, {
- onClick: closeModal
- })
- ]
- }),
- headerChildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- grow: 0,
- shrink: 0,
- children: headerChildren
- }) : null,
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalContent, {
- className: config.contentClassName,
- scroller: config.scroller,
- children: contentChildren
- }),
- footerChildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalFooter, {
- className: config.footerClassName,
- children: footerChildren
- }) : null
- ]
- });
- }
- componentDidMount () {
- modalInstance = this;
- modal = BDFDB.ReactUtils.findDOMNode(this);
- modal = modal && modal.parentElement ? modal.parentElement.querySelector(BDFDB.dotCN.modalwrapper) : null;
- if (modal && props.transitionState == 1 && props.transitionState > oldTransitionState) config.onOpen(modal, this);
- oldTransitionState = props.transitionState;
- }
- componentWillUnmount () {
- if (modal && props.transitionState == 3) {
- for (let cancel of cancels) cancel(modal);
- config.onClose(modal, this);
- }
- }
- }, props);
- }, {
- onCloseRequest: closeModal
- });
- }
- };
- BDFDB.ModalUtils.confirm = function (plugin, text, callback) {
- if (!BDFDB.ObjectUtils.is(plugin) || typeof text != "string") return;
- BDFDB.ModalUtils.open(plugin, {text, header:"Are you sure?", className:BDFDB.disCN.modalconfirmmodal, scroller:false, buttons:[
- {contents: BDFDB.LanguageUtils.LanguageStrings.OKAY, close:true, color:"RED", click:typeof callback == "function" ? callback : _ => {}},
- {contents: BDFDB.LanguageUtils.LanguageStrings.CANCEL, close:true}
- ]});
- };
-
- BDFDB.ContextMenuUtils = {};
- BDFDB.ContextMenuUtils.open = function (plugin, e, children) {
- LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ContextMenus.NativeContextMenu, Object.assign({}, e, {
- BDFDBcontextMenu: true,
- type: BDFDB.DiscordConstants.ContextMenuTypes.NATIVE_TEXT,
- value: "",
- className: BDFDB.disCN.contextmenu,
- children: children
- }));
- });
- };
- BDFDB.ContextMenuUtils.close = function (nodeOrInstance) {
- if (!BDFDB.ObjectUtils.is(nodeOrInstance)) return;
- var instance = BDFDB.ReactUtils.findOwner(nodeOrInstance, {props:"closeContextMenu", up:true});
- if (BDFDB.ObjectUtils.is(instance) && instance.props && typeof instance.props.closeContextMenu == "function") instance.props.closeContextMenu();
- else BDFDB.LibraryModules.ContextMenuUtils.closeContextMenu();
- };
-
- BDFDB.TimeUtils = {};
- BDFDB.TimeUtils.interval = function (callback, delay) {
- if (typeof callback != "function" || typeof delay != "number" || delay < 1) return;
- else return setInterval(_ => {BDFDB.TimeUtils.suppress(callback, "Interval")();}, delay);
- };
- BDFDB.TimeUtils.timeout = function (callback, delay) {
- if (typeof callback != "function") return;
- else if (typeof delay != "number" || delay < 1) return setImmediate(_ => {BDFDB.TimeUtils.suppress(callback, "Immediate")();});
- else return setTimeout(_ => {BDFDB.TimeUtils.suppress(callback, "Timeout")();}, delay);
- };
- BDFDB.TimeUtils.clear = function (...timeobjects) {
- for (let t of timeobjects.flat(10).filter(n => n)) {
- if (typeof t == "number") {
- clearInterval(t);
- clearTimeout(t);
- }
- else if (typeof t == "object") clearImmediate(t);
- }
- };
- BDFDB.TimeUtils.suppress = function (callback, string, name) {return function (...args) {
- try {return callback(...args);}
- catch (err) {
- if (typeof string != "string") string = "";
- BDFDB.LogUtils.error(string + " " + err, name);
- }
- }};
-
- BDFDB.StringUtils = {};
- BDFDB.StringUtils.htmlEscape = function (string) {
- var ele = document.createElement("div");
- ele.innerText = string;
- return ele.innerHTML;
- };
- BDFDB.StringUtils.regEscape = function (string) {
- return typeof string == "string" && string.replace(/([\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}])/g, "\\$1");
- };
- BDFDB.StringUtils.insertNRST = function (string) {
- return typeof string == "string" && string.replace(/\\r/g, "\r").replace(/\\n/g, "\n").replace(/\\t/g, "\t").replace(/\\s/g, " ");
- };
- BDFDB.StringUtils.highlight = function (string, searchstring, prefix = ``, suffix = ` `) {
- if (typeof string != "string" || !searchstring || searchstring.length < 1) return string;
- var offset = 0, original = string;
- BDFDB.ArrayUtils.getAllIndexes(string.toUpperCase(), searchstring.toUpperCase()).forEach(index => {
- var d1 = offset * (prefix.length + suffix.length);
- index = index + d1;
- var d2 = index + searchstring.length;
- var d3 = [-1].concat(BDFDB.ArrayUtils.getAllIndexes(string.substring(0, index), "<"));
- var d4 = [-1].concat(BDFDB.ArrayUtils.getAllIndexes(string.substring(0, index), ">"));
- if (d3[d3.length - 1] > d4[d4.length - 1]) return;
- string = string.substring(0, index) + prefix + string.substring(index, d2) + suffix + string.substring(d2);
- offset++;
- });
- return string || original;
- };
-
- BDFDB.SlateUtils = {};
- BDFDB.SlateUtils.isRichValue = function (richValue) {
- return BDFDB.ObjectUtils.is(richValue) && LibraryModules.SlateUtils.deserialize("").constructor.prototype.isPrototypeOf(richValue);
- };
- BDFDB.SlateUtils.copyRichValue = function (string, richValue) {
- let newRichValue = LibraryModules.SlateUtils.deserialize(string);
- if (BDFDB.SlateUtils.isRichValue(richValue) && richValue._map && richValue._map._root && BDFDB.ArrayUtils.is(richValue._map._root.entries)) {
- for (let i in richValue._map._root.entries) if (richValue._map._root.entries[i][0] == "selection") {
- newRichValue._map._root.entries[i] = richValue._map._root.entries[i];
- break;
- }
- }
- return newRichValue;
- };
- BDFDB.SlateUtils.hasOpenPlainTextCodeBlock = function (editor) {
- let richValue = BDFDB.ReactUtils.getValue(editor, "props.richValue");
- if (!BDFDB.SlateUtils.isRichValue(richValue)) return false;
- let codeMatches = BDFDB.LibraryModules.SlateSelectionUtils.serializeSelection(richValue.document, {
- start: {
- key: richValue.document.getFirstText().key,
- offset: 0
- },
- end: richValue.selection.start
- }, "raw").match(/```/g);
- return codeMatches && codeMatches.length && codeMatches.length % 2 != 0;
- };
- BDFDB.SlateUtils.getCurrentWord = function (editor) {
- let richValue = BDFDB.ReactUtils.getValue(editor, "props.richValue");
- if (!BDFDB.SlateUtils.isRichValue(richValue) || !richValue.selection.isCollapsed || BDFDB.SlateUtils.hasOpenPlainTextCodeBlock(editor) || richValue.document.text.trim().length == 0) return {word: null, isAtStart: false};
- if (editor.props.useSlate) {
- if (richValue.document.text.startsWith("/giphy ") || richValue.document.text.startsWith("/tenor ")) {
- let node = richValue.document.getNode(richValue.selection.start.key);
- if (node) return {
- word: node.text.substring(0, richValue.selection.start.offset),
- isAtStart: true
- }
- }
- let node = richValue.document.getNode(richValue.selection.start.key);
- if (node == null) return {
- word: null,
- isAtStart: false
- };
- let word = "", atStart = false;
- let offset = richValue.selection.start.offset;
- let block = richValue.document.getClosestBlock(node.key);
- while (true) {
- if (--offset < 0) {
- if ((node = block.getPreviousNode(node.key) == null)) {
- atStart = true;
- break;
- }
- if (node.object!== "text") break;
- offset = node.text.length - 1;
- }
- if (node.object !== "text") break;
- let prefix = node.text[offset];
- if (/(\t|\s)/.test(prefix)) break;
- word = prefix + word;
- }
- return {
- word: !word ? null : word,
- isAtStart: atStart && block.type == "line" && richValue.document.nodes.get(0) === block
- };
- }
- else {
- let textarea = BDFDB.ReactUtils.findDOMNode(editor.ref.current);
- if (!Node.prototype.isPrototypeOf(textarea) || textarea.tagName != "TEXTAREA" || !textarea.value.length || /\s/.test(textarea.value.slice(textarea.selectionStart, textarea.selectionEnd))) return {
- word: null,
- isAtStart: true
- };
- else {
- if (textarea.selectionEnd == textarea.value.length) {
- let words = textarea.value.split(/\s/).reverse();
- return {
- word: !words[0] ? null : words[0],
- isAtStart: words.length > 1
- };
- }
- else {
- let chars = textarea.value.split(""), word = "", currentWord = "", isCurrentWord = false, isAtStart = true;
- for (let i in chars) {
- if (i == textarea.selectionStart) isCurrentWord = true;
- if (/\s/.test(chars[i])) {
- word = "";
- isAtStart = currentWord.length > 0 && isAtStart || false;
- isCurrentWord = false;
- }
- else {
- word += chars[i];
- if (isCurrentWord) currentWord = word;
- }
- }
- return {
- word: !currentWord ? null : currentWord,
- isAtStart: isAtStart
- };
- }
- }
- }
- };
-
- BDFDB.NumberUtils = {};
- BDFDB.NumberUtils.formatBytes = function (bytes, sigDigits) {
- bytes = parseInt(bytes);
- if (isNaN(bytes) || bytes < 0) return "0 Bytes";
- if (bytes == 1) return "1 Byte";
- let size = Math.floor(Math.log(bytes) / Math.log(1024));
- return parseFloat((bytes / Math.pow(1024, size)).toFixed(sigDigits < 1 ? 0 : sigDigits > 20 ? 20 : sigDigits || 2)) + " " + ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"][size];
- };
- BDFDB.NumberUtils.mapRange = function (from, to, value) {
- if (parseFloat(value) < parseFloat(from[0])) return parseFloat(to[0]);
- else if (parseFloat(value) > parseFloat(from[1])) return parseFloat(to[1]);
- else return parseFloat(to[0]) + (parseFloat(value) - parseFloat(from[0])) * (parseFloat(to[1]) - parseFloat(to[0])) / (parseFloat(from[1]) - parseFloat(from[0]));
- };
- BDFDB.NumberUtils.generateId = function (array) {
- array = BDFDB.ArrayUtils.is(array) ? array : [];
- let id = Math.floor(Math.random() * 10000000000000000);
- if (array.includes(id)) return BDFDB.NumberUtils.generateId(array);
- else {
- array.push(id);
- return id;
- }
- };
- BDFDB.NumberUtils.compareVersions = function (newv, oldv) {
- if (!newv || !oldv) return true;
- newv = newv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n));
- oldv = oldv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n));
- var length = Math.max(newv.length, oldv.length);
- if (!length) return true;
- if (newv.length > oldv.length) {
- var temparray = new Array(newv.length - oldv.length);
- for (let i = 0; i < temparray.length; i++) temparray[i] = 0;
- oldv = temparray.concat(oldv);
- }
- else if (newv.length < oldv.length) {
- var temparray = new Array(oldv.length - newv.length);
- for (let i = 0; i < temparray.length; i++) temparray[i] = 0;
- newv = temparray.concat(newv);
- }
- for (let i = 0; i < length; i++) for (let ioutdated = false, j = 0; j <= i; j++) {
- if (j == i && newv[j] < oldv[j]) return false;
- if (j < i) ioutdated = newv[j] == oldv[j];
- if ((j == 0 || ioutdated) && j == i && newv[j] > oldv[j]) return true;
- }
- return false;
- };
- BDFDB.NumberUtils.getVersionDifference = function (newv, oldv) {
- if (!newv || !oldv) return false;
- newv = newv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n));
- oldv = oldv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n));
- var length = Math.max(newv.length, oldv.length);
- if (!length) return false;
- if (newv.length > oldv.length) {
- var temparray = new Array(newv.length - oldv.length);
- for (let i = 0; i < temparray.length; i++) temparray[i] = 0;
- oldv = temparray.concat(oldv);
- }
- else if (newv.length < oldv.length) {
- var temparray = new Array(oldv.length - newv.length);
- for (let i = 0; i < temparray.length; i++) temparray[i] = 0;
- newv = temparray.concat(newv);
- }
- var oldvvalue = 0, newvvalue = 0;
- for (let i in oldv.reverse()) oldvvalue += (oldv[i] * (10 ** i));
- for (let i in newv.reverse()) newvvalue += (newv[i] * (10 ** i));
- return (newvvalue - oldvvalue) / (10 ** (length-1));
- };
-
- BDFDB.DiscordUtils = {};
- BDFDB.DiscordUtils.openLink = function (url, inbuilt, minimized) {
- if (!inbuilt) window.open(url, "_blank");
- else {
- let browserWindow = new LibraryRequires.electron.remote.BrowserWindow({
- frame: true,
- resizeable: true,
- show: true,
- darkTheme: BDFDB.DiscordUtils.getTheme() == BDFDB.disCN.themedark,
- webPreferences: {
- nodeIntegration: false,
- nodeIntegrationInWorker: false
- }
- });
- browserWindow.setMenu(null);
- browserWindow.loadURL(url);
- if (minimized) browserWindow.minimize(null);
- }
- };
- BDFDB.DiscordUtils.getFolder = function () {
- var built = BDFDB.DiscordUtils.getBuilt();
- built = "discord" + (built == "stable" ? "" : built);
- return LibraryRequires.path.resolve(LibraryRequires.electron.remote.app.getPath("appData"), built, BDFDB.DiscordUtils.getVersion());
- };
- BDFDB.DiscordUtils.getBuilt = function () {
- if (BDFDB.DiscordUtils.getBuilt.built) return BDFDB.DiscordUtils.getBuilt.built;
- else {
- var built = null;
- try {built = require(LibraryRequires.electron.remote.app.getAppPath() + "/build_info.json").releaseChannel.toLowerCase();}
- catch (err) {
- try {built = require(LibraryRequires.electron.remote.app.getAppPath().replace("\app.asar", "") + "/build_info.json").releaseChannel.toLowerCase();}
- catch (err) {
- var version = BDFDB.DiscordUtils.getVersion();
- if (version) {
- version = version.split(".");
- if (version.length == 3 && !isNaN(version = parseInt(version[2]))) built = version > 300 ? "stable" : da > 200 ? "canary" : "ptb";
- else built = "stable";
- }
- else built = "stable";
- }
- }
- BDFDB.DiscordUtils.getBuilt.built = built;
- return built;
- }
- };
- BDFDB.DiscordUtils.getVersion = function () {
- if (BDFDB.DiscordUtils.getBuilt.version) return BDFDB.DiscordUtils.getBuilt.version;
- else {
- let version = null;
- try {version = LibraryRequires.electron.remote.app.getVersion();}
- catch (err) {version = "";}
- BDFDB.DiscordUtils.getBuilt.version = version;
- return version;
- }
- };
- BDFDB.DiscordUtils.isDevModeEnabled = function () {
- return LibraryModules.StoreChangeUtils.get("UserSettingsStore").developerMode;
- };
- BDFDB.DiscordUtils.getTheme = function () {
- return LibraryModules.StoreChangeUtils.get("UserSettingsStore").theme == "dark" ? BDFDB.disCN.themedark : BDFDB.disCN.themelight;
- };
- BDFDB.DiscordUtils.getMode = function () {
- return LibraryModules.StoreChangeUtils.get("UserSettingsStore").message_display_compact ? "compact" : "cozy";
- };
- BDFDB.DiscordUtils.getZoomFactor = function () {
- let aRects = BDFDB.DOMUtils.getRects(document.querySelector(BDFDB.dotCN.appmount));
- let widthZoom = Math.round(100 * window.outerWidth / aRects.width);
- let heightZoom = Math.round(100 * window.outerHeight / aRects.height);
- return widthZoom < heightZoom ? widthZoom : heightZoom;
- };
- BDFDB.DiscordUtils.getFontScale = function () {
- return parseInt(document.firstElementChild.style.fontSize.replace("%", ""));
- };
- BDFDB.DiscordUtils.shake = function () {
- BDFDB.ReactUtils.getInstance(document.querySelector(BDFDB.dotCN.appold)).return.stateNode.shake();
- };
-
- BDFDB.WindowUtils = {};
- BDFDB.WindowUtils.open = function (plugin, url, options = {}) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !url) return;
- if (!BDFDB.ArrayUtils.is(plugin.browserWindows)) plugin.browserWindows = [];
- let config = Object.assign({
- show: false,
- webPreferences: {
- nodeIntegration: true,
- nodeIntegrationInWorker: true
- }
- }, options);
- let browserWindow = new LibraryRequires.electron.remote.BrowserWindow(BDFDB.ObjectUtils.exclude(config, "showOnReady", "onLoad"));
-
- if (!config.show && config.showOnReady) browserWindow.once("ready-to-show", browserWindow.show);
- if (typeof config.onLoad == "function") browserWindow.webContents.on("did-finish-load", (...args) => {config.onLoad(...args);});
-
- if (typeof browserWindow.removeMenu == "function") browserWindow.removeMenu();
- else browserWindow.setMenu(null);
- browserWindow.loadURL(url);
- browserWindow.executeJavaScriptSafe = js => {if (!browserWindow.isDestroyed()) browserWindow.webContents.executeJavaScript(`(_ => {${js}})();`);};
- plugin.browserWindows.push(browserWindow);
- return browserWindow;
- };
- BDFDB.WindowUtils.close = function (browserWindow) {
- if (BDFDB.ObjectUtils.is(browserWindow) && !browserWindow.isDestroyed() && browserWindow.isClosable()) browserWindow.close();
- };
- BDFDB.WindowUtils.closeAll = function (plugin) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (BDFDB.ObjectUtils.is(plugin) && BDFDB.ArrayUtils.is(plugin.browserWindows)) while (plugin.browserWindows.length) BDFDB.WindowUtils.close(plugin.browserWindows.pop());
- };
- BDFDB.WindowUtils.addListener = function (plugin, actions, callback) {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !actions || typeof callback != "function") return;
- BDFDB.WindowUtils.removeListener(plugin, actions);
- for (let action of actions.split(" ")) {
- action = action.split(".");
- let eventname = action.shift();
- if (!eventname) return;
- let namespace = (action.join(".") || "") + plugin.name;
- if (!BDFDB.ArrayUtils.is(plugin.ipcListeners)) plugin.ipcListeners = [];
-
- plugin.ipcListeners.push({eventname, namespace, callback});
- LibraryRequires.electron.ipcRenderer.on(eventname, callback);
- }
- };
- BDFDB.WindowUtils.removeListener = function (plugin, actions = "") {
- plugin = plugin == BDFDB && InternalBDFDB || plugin;
- if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ArrayUtils.is(plugin.ipcListeners)) return;
- if (actions) {
- for (let action of actions.split(" ")) {
- action = action.split(".");
- let eventname = action.shift();
- let namespace = (action.join(".") || "") + plugin.name;
- for (let listener of plugin.ipcListeners) {
- let removedListeners = [];
- if (listener.eventname == eventname && listener.namespace == namespace) {
- LibraryRequires.electron.ipcRenderer.off(listener.eventname, listener.callback);
- removedListeners.push(listener);
- }
- if (removedListeners.length) plugin.ipcListeners = plugin.ipcListeners.filter(listener => {return removedListeners.indexOf(listener) < 0;});
- }
- }
- }
- else {
- for (let listener of plugin.ipcListeners) LibraryRequires.electron.ipcRenderer.off(listener.eventname, listener.callback);
- plugin.ipcListeners = [];
- }
- };
-
- BDFDB.BDUtils = {};
- BDFDB.BDUtils.getPluginsFolder = function () {
- if (LibraryRequires.process.env.injDir) return LibraryRequires.path.resolve(LibraryRequires.process.env.injDir, "plugins/");
- switch (LibraryRequires.process.platform) {
- case "win32":
- return LibraryRequires.path.resolve(LibraryRequires.process.env.appdata, "BetterDiscord/plugins/");
- case "darwin":
- return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, "Library/Preferences/BetterDiscord/plugins/");
- default:
- if (LibraryRequires.process.env.XDG_CONFIG_HOME) return LibraryRequires.path.resolve(LibraryRequires.process.env.XDG_CONFIG_HOME, "BetterDiscord/plugins/");
- else return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, ".config/BetterDiscord/plugins/");
- }
- };
- BDFDB.BDUtils.getThemesFolder = function () {
- if (LibraryRequires.process.env.injDir) return LibraryRequires.path.resolve(LibraryRequires.process.env.injDir, "plugins/");
- switch (LibraryRequires.process.platform) {
- case "win32":
- return LibraryRequires.path.resolve(LibraryRequires.process.env.appdata, "BetterDiscord/themes/");
- case "darwin":
- return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, "Library/Preferences/BetterDiscord/themes/");
- default:
- if (LibraryRequires.process.env.XDG_CONFIG_HOME) return LibraryRequires.path.resolve(LibraryRequires.process.env.XDG_CONFIG_HOME, "BetterDiscord/themes/");
- else return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, ".config/BetterDiscord/themes/");
- }
- };
- BDFDB.BDUtils.checkRepoPage = function (usersettings = document.querySelector(BDFDB.dotCN.layer + `[layer-id="user-settings"]`)) {
- if (!usersettings) return;
- let folderbutton = usersettings.querySelector(BDFDB.dotCN._repofolderbutton);
- if (!folderbutton) return;
- let header = folderbutton.parentElement.querySelector("h2");
- if (header && header.innerText) {
- let headerText = header.innerText.toLowerCase();
- if (headerText === "plugins" || headerText === "themes") return headerText;
- }
- };
- BDFDB.BDUtils.isPluginEnabled = function (pluginName) {
- if (BdApi.Plugins && typeof BdApi.Plugins.Plugins == "function") return BdApi.Plugins.isEnabled(pluginName);
- else if (typeof BdApi.isPluginEnabled == "function") return BdApi.isPluginEnabled(pluginName);
- };
- BDFDB.BDUtils.enablePlugin = function (pluginName) {
- if (BdApi.Plugins && typeof BdApi.Plugins.enable == "function") BdApi.Plugins.enable(pluginName);
- else if (window.pluginModule) window.pluginModule.startPlugin(pluginName);
- };
- BDFDB.BDUtils.disablePlugin = function (pluginName) {
- if (BdApi.Plugins && typeof BdApi.Plugins.disable == "function") BdApi.Plugins.disable(pluginName);
- else if (window.pluginModule) window.pluginModule.stopPlugin(pluginName);
- };
- BDFDB.BDUtils.getPlugin = function (pluginName, hasToBeEnabled = false, overHead = false) {
- if (!hasToBeEnabled || BDFDB.BDUtils.isPluginEnabled(pluginName)) {
- if (BdApi.Plugins.get && typeof BdApi.Plugins.get == "function") {
- let plugin = BdApi.Plugins.get(pluginName);
- if (overHead) return plugin ? {filename: LibraryRequires.fs.existsSync(LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), `${pluginName}.plugin.js`)) ? `${pluginName}.plugin.js` : null, id: pluginName, name: pluginName, plugin: plugin} : null;
- else return plugin;
- }
- else if (window.bdplugins) overHead ? window.bdplugins[pluginName] : (window.bdplugins[pluginName] || {}).plugin;
- }
- return null;
- };
- BDFDB.BDUtils.isThemeEnabled = function (themeName) {
- if (BdApi.Themes && typeof BdApi.Themes.isEnabled == "function") return BdApi.Themes.isEnabled(themeName);
- else if (typeof BdApi.isThemeEnabled == "function") return BdApi.isThemeEnabled(themeName);
- };
- BDFDB.BDUtils.enableTheme = function (themeName) {
- if (BdApi.Themes && typeof BdApi.Themes.enable == "function") BdApi.Themes.enable(themeName);
- else if (window.themeModule) window.themeModule.enableTheme(themeName);
- };
- BDFDB.BDUtils.disableTheme = function (themeName) {
- if (BdApi.Themes && typeof BdApi.Themes.disable == "function") BdApi.Themes.disable(themeName);
- else if (window.themeModule) window.themeModule.disableTheme(themeName);
- };
- BDFDB.BDUtils.getTheme = function (themeName, hasToBeEnabled = false) {
- if (!hasToBeEnabled || BDFDB.BDUtils.isThemeEnabled(themeName)) {
- if (BdApi.Themes && typeof BdApi.Themes.get == "function") return BdApi.Themes.get(themeName);
- else if (window.bdthemes) window.bdthemes[themeName];
- }
- return null;
- };
- BDFDB.BDUtils.getSettings = function (key) {
- if (key) return BdApi.isSettingEnabled(key);
- else return BDFDB.ReactUtils.getValue(BdApi.getBDData("settings"), `${BDFDB.DiscordUtils.getBuilt()}.settings`);
- };
- BDFDB.BDUtils.isAutoLoadEnabled = function () {
- return BDFDB.BDUtils.getSettings("fork-ps-5") === true || BDFDB.BDUtils.isPluginEnabled("Restart-No-More") || BDFDB.BDUtils.isPluginEnabled("Restart No More");
- };
-
- var DiscordClassModules = {};
- DiscordClassModules.BDFDB = {
- BDFDBundefined: "BDFDB_undefined",
- avatarStatusHovered: "statusHovered-gF2976",
- badge: "badge-7R_W4s",
- bdaRepoEntry: "entry-9JnAPs",
- cardInner: "inner-OP_8zd",
- cardWrapper: "card-rT4Wbb",
- charCounter: "counter-uAzbKp",
- changeLogModal: "changeLogModal-ny_dHC",
- collapseContainer: "container-fAVkOf",
- collapseContainerArrow: "arrow-uglXxc",
- collapseContainerCollapsed: "collapsed-2BUBZm",
- collapseContainerHeader: "header-2s6x-5",
- collapseContainerInner: "inner-TkGytd",
- collapseContainerMini: "container-fAVkOf containerMini-_k6Rts",
- collapseContainerTitle: "title-ROsJi-",
- colorPicker: "colorPicker-h5sF8g",
- colorPickerAlpha: "alpha-VcPGeR",
- colorPickerAlphaCheckered: "alpha-checkered",
- colorPickerAlphaCursor: "alpha-cursor",
- colorPickerAlphaHorizontal: "alpha-horizontal",
- colorPickerGradient: "gradient-TJOYTr",
- colorPickerGradientCheckered: "gradient-checkered",
- colorPickerGradientCursor: "gradient-cursor",
- colorPickerGradientCursorEdge: "gradient-cursor-edge",
- colorPickerGradientCursorSelected: "gradient-cursor-selected",
- colorPickerGradientHorizontal: "gradient-horizontal",
- colorPickerGradientButton: "gradientButton-eBBuwD",
- colorPickerGradientButtonEnabled: "enabled-MypHME",
- colorPickerSwatches: "swatches-QxZw_N",
- colorPickerSwatchesDisabled: "disabled-2JgNxl",
- colorPickerSwatchSingle: "single-Fbb1wB",
- colorPickerSwatchSelected: "selected-f5IVXN",
- confirmModal: "confirmModal-t-WDWJ",
- dev: "dev-A7f2Rx",
- favButtonContainer: "favbutton-8Fzu45",
- guild: "guild-r3yAE_",
- guildLowerLeftBadge: "lowerLeftBadge-zr4T_9",
- guildUpperLeftBadge: "upperLeftBadge-e35IpL",
- hotkeyResetButton: "resetButton-hI9Ax7",
- hotkeyWrapper: "recorder-can0vx",
- inputNumberButton: "button-J9muv5",
- inputNumberButtonDown: "down-cOY7Qp button-J9muv5",
- inputNumberButtonUp: "up-mUs_72 button-J9muv5",
- inputNumberButtons: "buttons-our3p-",
- inputNumberWrapper: "numberInputWrapper-j4svZS",
- inputNumberWrapperDefault: "numberInputWrapperDefault-gRxcuK numberInputWrapper-j4svZS",
- inputNumberWrapperMini: "numberInputWrapperMini-wtUU31 numberInputWrapper-j4svZS",
- loadingIcon: "loadingIcon-cOYMPl",
- loadingIconWrapper: "loadingIconWrapper-PsVJ9m",
- overflowEllipsis: "ellipsis-qlo9sA",
- popoutWrapper: "popout-xwjvsX",
- quickSelectWrapper: "quickSelectWrapper-UCfTKz",
- quickSelectPopoutWrapper: "quickSelectPopout-u2dtIf",
- modalHeaderHasSibling: "hasSiblings-fRyjyl",
- modalInnerScrollerLess: "inner-YgPpF3",
- modalTabContent: "tabContent-nZ-1U5",
- modalTabContentOpen: "open-yICTYu",
- modalWrapper: "modal-6GHvdM",
- noticeWrapper: "noticeWrapper-8z511t",
- selectWrapper: "selectWrapper-yPjeij",
- settingsGuild: "guild-J3Egt5",
- settingsGuildDisabled: "disabled-b2o83O",
- settingsPanel: "settingsPanel-w2ySNR",
- settingsPanelInner: "settingsInner-zw1xAY",
- settingsPanelList: "settingsList-eZjkXj",
- settingsPanelTitle: "title-GTF_8J",
- settingsTableCard: "settingsTableCard-628t52",
- settingsTableCardConfigs: "settingsTableCardConfigs-w5X9-Z",
- settingsTableCardLabel: "settingsTableCardLabel-MElgIg",
- settingsTableHeaders: "settingsTableHeaders-WKzw9_",
- settingsTableHeaderVertical: "headerVertical-4MNxqk",
- settingsTableList: "settingsTableList-f6sW2y",
- supporter: "supporter-Z3FfwL",
- svgIcon: "icon-GhnIRB",
- table: "table-moqjM0",
- tableBodyCell: "bodyCell-dQam9V",
- tableHeader: "header-g67q9_",
- tableHeaderCell: "headerCell-T6Fo3K",
- tableHeaderCellSorted: "headerCellSorted-FMjMWK",
- tableHeaderSortIcon: "sortIcon-WZjMja",
- tableRow: "row-_9Ehcp",
- tableStickyHeader: "stickyHeader-JabwjW header-g67q9_",
- textScroller: "textScroller-dc9_kz",
- themedPopout: "themedPopout-1TrfdI",
- tooltipCustom: "tooltipCustom-hH39_Z"
- };
- DiscordClassModules.BDrepo = {
- bdAddonCard: "bd-card bd-addon-card",
- bdButton: "bd-button",
- bdaAuthor: "author bda-author",
- bdaControls: "bd-addon-controls bda-controls",
- bdaControlsButton: "bd-addon-button",
- bdaDescription: "bd-addon-description bda-description",
- bdaDescriptionWrap: "bda-description-wrap",
- bdaFooter: "bd-card-footer bda-footer",
- bdaHeader: "bd-addon-header bda-header",
- bdaHeaderTitle: "bd-card-title bda-header-title",
- bdaLink: "bda-link",
- bdaLinks: "bd-addon-links bda-links",
- bdaName: "name bda-name",
- bdaSettingsButton: "bda-settings-button",
- bdaSlist: "bda-slist bd-addon-list",
- bdaVersion: "version bda-version",
- bdGuild: "bd-guild",
- bdGuildAnimatable: "bd-animatable",
- bdGuildAudio: "bd-audio",
- bdGuildSelected: "bd-selected",
- bdGuildSeparator: "bd-guild-separator",
- bdGuildUnread: "bd-unread",
- bdGuildVideo: "bd-video",
- bdIcon: "bd-icon",
- bdPillSelected: "bd-selected",
- bdPillUnread: "bd-unread",
- bdPfbtn: "bd-pfbtn",
- bdSwitch: "bd-switch",
- bdSwitchChecked: "bd-switch-checked",
- bdSwitchInner: "bd-checkbox",
- bdUpdatebtn: "bd-updatebtn",
- settingsOpen: "settings-open",
- settingsClosed: "settings-closed",
- switch: "ui-switch",
- switchCheckbox: "ui-switch-checkbox",
- switchChecked: "checked",
- switchItem: "ui-switch-item",
- switchWrapper: "ui-switch-wrapper"
- };
- DiscordClassModules.BetterNsfwTag = {
- nsfwTag: "nsfwTag-666omg"
- };
- DiscordClassModules.ChatFilter = {
- blocked: "blocked-jUhayi",
- blockedStamp: "blockedStamp-ijVeNn",
- censored: "censored-UYfeYg",
- censoredStamp: "censoredStamp-fb2cYb"
- };
- DiscordClassModules.CharCounter = {
- charCounter: "charCounter-7fw40k charcounter",
- counterAdded: "counterAdded-zz9O4t"
- };
- DiscordClassModules.DisplayLargeMessages = {
- injectButton: "injectButton-8eKqGu"
- };
- DiscordClassModules.DisplayServersAsChannels = {
- badge: "badge-fxFrUP",
- name: "name-z5133D",
- styled: "styledGuildsAsChannels-DNHtg_"
- };
- DiscordClassModules.EmojiStatistics = {
- statisticsButton: "statisticsButton-nW2KoM",
- amountCell: "amountCell-g_W6Rx",
- iconCell: "iconCell--wniOu",
- nameCell: "nameCell-xyXENZ"
- };
- DiscordClassModules.FriendNotifications = {
- friendsOnline: "friendsOnline-2JkivW"
- };
- DiscordClassModules.GoogleTranslateOption = {
- reverseButton: "reverseButton-5S47qV",
- translateButton: "translateButton-DhP9x8",
- translated: "translated-5YO8i3",
- translating: "translating-Yi-YxC"
- };
- DiscordClassModules.ImageGallery = {
- details: "details-9dkFPc",
- detailsLabel: "label-mrlccN",
- detailsWrapper: "detailsWrapper-TE1mu5",
- gallery: "gallery-JViwKR",
- icon: "icon-QY6cR4",
- next: "next-SHEZrz",
- previous: "previous-xsNq6B",
- sibling: "sibling-6vI7Pu"
- };
- DiscordClassModules.ImageZoom = {
- backdrop: "lenseBackdrop-yEm7Om",
- lense: "zoomLense-uOK8xV",
- modal: "imageModal-8J0ttB",
- operations: "operations-3V47CY"
- };
- DiscordClassModules.OldTitleBar = {
- oldTitleBarEnabled: "oldTitleBarEnabled-D8ppJQ",
- settingsToolbar: "settingsToolbar-wu4yfQ",
- toolbar: "toolbar-hRzFw-"
- };
- DiscordClassModules.PinDMs = {
- dragPreview: "dragPreview-nXiByA",
- dmChannelPinned: "pinned-0lM4wD",
- dmChannelPlaceholder: "placeholder-7bhR5s",
- pinnedChannelsHeaderAmount: "headerAmount-_-7GrS",
- pinnedChannelsHeaderArrow: "pinnedChannelsHeaderArrow-44rrTz",
- pinnedChannelsHeaderCollapsed: "collapsed-3w_-ff",
- pinnedChannelsHeaderColored: "colored-oIzG5s",
- pinnedChannelsHeaderContainer: "pinnedChannelsHeaderContainer-89Gjv4",
- recentPinned: "pinned-jHvFrr",
- recentPlaceholder: "placeholder-Uff-gH",
- unpinButton: "unpinButton-z3-UVO",
- unpinIcon: "unpinIcon-79ZnEr"
- };
- DiscordClassModules.ReadAllNotificationsButton = {
- button: "button-Jt-tIg",
- frame: "frame-oXWS21",
- innerFrame: "innerFrame-8Hg64E"
- };
- DiscordClassModules.ServerFolders = {
- dragPreview: "dragPreview-nXiByA",
- guildPlaceholder: "placeholder-7bhR5s",
- folderContent: "content-Pph8t6",
- folderContentClosed: "closed-j55_T-",
- folderContentIsOpen: "folderContentIsOpen-zz6FgW",
- iconSwatch: "iconSwatch-_78Ghj",
- iconSwatchInner: "iconInner-aOY-qk",
- iconSwatchPreview: "preview-Bbg_24",
- iconSwatchSelected: "selected-P5oePO"
- };
- DiscordClassModules.ShowImageDetails = {
- details: "details-1t6Zms",
- detailsAdded: "detailsAdded-SAy48f"
- };
- DiscordClassModules.SpellCheck = {
- error: "error-k9z2IV",
- overlay: "spellCheckOverlay-cNSap5"
- };
- DiscordClassModules.TimedLightDarkMode = {
- dateGrabber: "dateGrabber-QrRkIX",
- timerGrabber: "timerGrabber-zpRAIk",
- timerSettings: "timerSettings-wkvEfF"
- };
- DiscordClassModules.TopRolesEverywhere = {
- badgeStyle: "badgeStyle-tFiEQ8",
- chatTag: "chatTag-Y-5TDc",
- memberTag: "memberTag-QVWzGc",
- roleStyle: "roleStyle-jQ7KI2",
- tag: "tag-wWVHyf"
- };
- DiscordClassModules.NotFound = {
- _: "",
- badgeWrapper: "wrapper-232cHJ",
- channelPanelTitle: "title-eS5yk3",
- emoji: "emoji",
- guildChannels: "container-PNkimc",
- highlight: "highlight",
- hoverCardButton: "button-2CgfFz",
- loginScreen: "wrapper-3Q5DdO",
- mention: "mention",
- mentionInteractive: "interactive",
- mentionWrapper: "wrapper-3WhCwL",
- nameContainerNameContainer: "container-2ax-kl",
- quickSelectPopoutOptionSelected: "selected",
- hueCursor: "hue-cursor",
- hueHorizontal: "hue-horizontal",
- hueVertical: "hue-vertical",
- saturationBlack: "saturation-black",
- saturationColor: "saturation-color",
- saturationCursor: "saturation-cursor",
- saturationWhite: "saturation-white",
- splashBackground: "splashBackground-1FRCko",
- stopAnimations: "stop-animations",
- subtext: "subtext-3CDbHg",
- themeDark: "theme-dark",
- themeLight: "theme-light",
- themeUndefined: "theme-undefined",
- voiceDraggable: "draggable-1KoBzC"
- };
-
- DiscordClassModules.AccountDetails = BDFDB.ModuleUtils.findByProperties("usernameContainer", "container");
- DiscordClassModules.AccountDetailsButtons = BDFDB.ModuleUtils.findByProperties("button", "enabled", "disabled");
- DiscordClassModules.Anchor = BDFDB.ModuleUtils.findByProperties("anchor", "anchorUnderlineOnHover");
- DiscordClassModules.AnimationContainer = BDFDB.ModuleUtils.findByProperties("animatorLeft", "didRender");
- DiscordClassModules.AppBase = BDFDB.ModuleUtils.findByProperties("container", "base");
- DiscordClassModules.AppInner = BDFDB.ModuleUtils.findByProperties("app", "layers");
- DiscordClassModules.AppMount = BDFDB.ModuleUtils.findByProperties("appMount");
- DiscordClassModules.ApplicationStore = BDFDB.ModuleUtils.findByProperties("applicationStore", "navigation");
- DiscordClassModules.AppOuter = BDFDB.ModuleUtils.find(m => typeof m.app == "string" && Object.keys(m).length == 1);
- DiscordClassModules.AuditLog = BDFDB.ModuleUtils.findByProperties("auditLog");
- DiscordClassModules.AuthBox = BDFDB.ModuleUtils.findByProperties("authBox");
- DiscordClassModules.Autocomplete = BDFDB.ModuleUtils.findByProperties("autocomplete", "autocompleteRow");
- DiscordClassModules.Avatar = BDFDB.ModuleUtils.findByProperties("avatar", "mask", "wrapper");
- DiscordClassModules.AvatarIcon = BDFDB.ModuleUtils.findByProperties("iconActiveLarge", "iconActiveMedium");
- DiscordClassModules.Backdrop = BDFDB.ModuleUtils.findByProperties("backdrop", "backdropWithLayer");
- DiscordClassModules.Badge = BDFDB.ModuleUtils.findByProperties("numberBadge", "textBadge", "iconBadge");
- DiscordClassModules.BotTag = BDFDB.ModuleUtils.findByProperties("botTag", "botTagInvert");
- DiscordClassModules.Button = BDFDB.ModuleUtils.findByProperties("colorBlack", "button");
- DiscordClassModules.CallCurrent = BDFDB.ModuleUtils.findByProperties("wrapper", "fullScreen");
- DiscordClassModules.CallDetails = BDFDB.ModuleUtils.findByProperties("container", "hotspot");
- DiscordClassModules.CallIncoming = BDFDB.ModuleUtils.findByProperties("incomingCall", "container");
- DiscordClassModules.CallIncomingInner = BDFDB.ModuleUtils.findByProperties("incomingCallInner", "members");
- DiscordClassModules.Card = BDFDB.ModuleUtils.findByProperties("card", "cardBrand");
- DiscordClassModules.CardStatus = BDFDB.ModuleUtils.findByProperties("reset", "error", "card");
- DiscordClassModules.Category = BDFDB.ModuleUtils.findByProperties("wrapper", "children", "muted");
- DiscordClassModules.CategoryContainer = BDFDB.ModuleUtils.findByProperties("addButtonIcon", "containerDefault");
- DiscordClassModules.ChangeLog = BDFDB.ModuleUtils.findByProperties("added", "fixed", "improved", "progress");
- DiscordClassModules.Channel = BDFDB.ModuleUtils.findByProperties("wrapper", "content", "modeSelected");
- DiscordClassModules.ChannelContainer = BDFDB.ModuleUtils.findByProperties("actionIcon", "containerDefault");
- DiscordClassModules.ChannelLimit = BDFDB.ModuleUtils.findByProperties("users", "total", "wrapper");
- DiscordClassModules.ChannelTextArea = BDFDB.ModuleUtils.findByProperties("textArea", "buttons");
- DiscordClassModules.ChannelTextAreaAttachButton = BDFDB.ModuleUtils.findByProperties("attachButton", "attachWrapper");
- DiscordClassModules.ChannelTextAreaButton = BDFDB.ModuleUtils.findByProperties("buttonWrapper", "active");
- DiscordClassModules.ChannelTextAreaCharCounter = BDFDB.ModuleUtils.findByProperties("characterCount", "error");
- DiscordClassModules.ChannelTextAreaSlate = BDFDB.ModuleUtils.findByProperties("slateContainer", "placeholder");
- DiscordClassModules.ChatWindow = BDFDB.ModuleUtils.findByProperties("chat", "channelTextArea");
- DiscordClassModules.Checkbox = BDFDB.ModuleUtils.findByProperties("checkboxWrapper", "round");
- DiscordClassModules.ColorPicker = BDFDB.ModuleUtils.findByProperties("colorPickerCustom", "customColorPickerInput");
- DiscordClassModules.ColorPickerInner = BDFDB.ModuleUtils.findByProperties("saturation", "hue", "wrapper");
- DiscordClassModules.ContextMenu = BDFDB.ModuleUtils.findByProperties("contextMenu", "itemGroup");
- DiscordClassModules.ContextMenuCheckbox = BDFDB.ModuleUtils.findByProperties("checkboxInner", "checkboxElement");
- DiscordClassModules.ContextMenuReactButton = BDFDB.ModuleUtils.find(m => typeof m.wrapper == "string" && typeof m.button == "string" && typeof m.icon == "string" && Object.keys(m).length == 3);
- DiscordClassModules.CtaVerification = BDFDB.ModuleUtils.findByProperties("attendeeCTA", "verificationNotice");
- DiscordClassModules.Cursor = BDFDB.ModuleUtils.findByProperties("cursorDefault", "userSelectNone");
- DiscordClassModules.CustomStatus = BDFDB.ModuleUtils.findByProperties("customStatusContentIcon", "customStatus");
- DiscordClassModules.CustomStatusIcon = BDFDB.ModuleUtils.findByProperties("icon", "emoji");
- DiscordClassModules.DmAddPopout = BDFDB.ModuleUtils.findByProperties("popout", "searchBarComponent");
- DiscordClassModules.DmAddPopoutItems = BDFDB.ModuleUtils.findByProperties("friendSelected", "friendWrapper");
- DiscordClassModules.DownloadLink = BDFDB.ModuleUtils.findByProperties("downloadLink");
- DiscordClassModules.Embed = BDFDB.ModuleUtils.findByProperties("embed", "embedAuthorIcon");
- DiscordClassModules.EmbedActions = BDFDB.ModuleUtils.findByProperties("iconPlay", "iconWrapperActive");
- DiscordClassModules.Emoji = BDFDB.ModuleUtils.find(m => typeof m.emoji == "string" && Object.keys(m).length == 1);
- DiscordClassModules.EmojiButton = BDFDB.ModuleUtils.findByProperties("emojiButton", "sprite");
- DiscordClassModules.EmojiInput = BDFDB.ModuleUtils.findByProperties("inputContainer", "emojiButton");
- DiscordClassModules.EmojiPicker = BDFDB.ModuleUtils.findByProperties("emojiPicker", "categories");
- DiscordClassModules.ExpressionPicker = BDFDB.ModuleUtils.findByProperties("contentWrapper", "navButton", "navList");
- DiscordClassModules.ExpressionEmojiPicker = BDFDB.ModuleUtils.findByProperties("emojiPicker", "inspector");
- DiscordClassModules.ExpressionEmojiPickerDiversitySelector = BDFDB.ModuleUtils.findByProperties("diversityEmojiItemImage", "diversitySelectorPopout");
- DiscordClassModules.ExpressionEmojiPickerItem = BDFDB.ModuleUtils.findByProperties("emojiItemImage", "emojiItemImageLoading");
- DiscordClassModules.ExpressionEmojiPickerInspector = BDFDB.ModuleUtils.findByProperties("inspector", "glyphEmoji");
- DiscordClassModules.File = BDFDB.ModuleUtils.findByProperties("downloadButton", "fileNameLink");
- DiscordClassModules.Flex = BDFDB.ModuleUtils.findByProperties("alignBaseline", "alignCenter");
- DiscordClassModules.FlexChild = BDFDB.ModuleUtils.findByProperties("flexChild", "flex");
- DiscordClassModules.FlowerStar = BDFDB.ModuleUtils.findByProperties("flowerStarContainer", "flowerStar");
- DiscordClassModules.FormText = BDFDB.ModuleUtils.findByProperties("description", "modeDefault");
- DiscordClassModules.Game = BDFDB.ModuleUtils.findByProperties("game", "gameName");
- DiscordClassModules.GameIcon = BDFDB.ModuleUtils.findByProperties("gameIcon", "small", "xsmall");
- DiscordClassModules.GameLibraryTable = BDFDB.ModuleUtils.findByProperties("stickyHeader", "emptyStateText");
- DiscordClassModules.GifFavoriteButton = BDFDB.ModuleUtils.findByProperties("gifFavoriteButton", "showPulse");
- DiscordClassModules.GoLiveDetails = BDFDB.ModuleUtils.findByProperties("panel", "gameWrapper");
- DiscordClassModules.Guild = BDFDB.ModuleUtils.findByProperties("wrapper", "lowerBadge", "svg");
- DiscordClassModules.GuildChannels = BDFDB.ModuleUtils.findByProperties("positionedContainer", "unreadBar");
- DiscordClassModules.GuildDiscovery = BDFDB.ModuleUtils.findByProperties("pageWrapper", "guildCard");
- DiscordClassModules.GuildDm = BDFDB.ModuleUtils.find(m => typeof m.pill == "string" && Object.keys(m).length == 1);
- DiscordClassModules.GuildEdges = BDFDB.ModuleUtils.findByProperties("wrapper", "edge", "autoPointerEvents");
- DiscordClassModules.GuildFolder = BDFDB.ModuleUtils.findByProperties("folder", "expandedFolderIconWrapper");
- DiscordClassModules.GuildHeader = BDFDB.ModuleUtils.findByProperties("header", "name", "bannerImage");
- DiscordClassModules.GuildHeaderButton = BDFDB.ModuleUtils.findByProperties("button", "open");
- DiscordClassModules.GuildIcon = BDFDB.ModuleUtils.findByProperties("acronym", "selected", "wrapper");
- DiscordClassModules.GuildInvite = BDFDB.ModuleUtils.findByProperties("wrapper", "guildIconJoined");
- DiscordClassModules.GuildSettingsBanned = BDFDB.ModuleUtils.findByProperties("bannedUser", "bannedUserAvatar");
- DiscordClassModules.GuildSettingsEmoji = BDFDB.ModuleUtils.findByProperties("emojiRow", "emojiAliasPlaceholder");
- DiscordClassModules.GuildSettingsInvite = BDFDB.ModuleUtils.findByProperties("countdownColumn", "inviteSettingsInviteRow");
- DiscordClassModules.GuildSettingsMember = BDFDB.ModuleUtils.findByProperties("member", "membersFilterPopout");
- DiscordClassModules.GuildServer = BDFDB.ModuleUtils.findByProperties("blobContainer", "pill");
- DiscordClassModules.GuildsItems = BDFDB.ModuleUtils.findByProperties("guildSeparator", "guildsError");
- DiscordClassModules.GuildsWrapper = BDFDB.ModuleUtils.findByProperties("scrollerWrap", "unreadMentionsBar", "wrapper");
- DiscordClassModules.HeaderBar = BDFDB.ModuleUtils.findByProperties("container", "children", "toolbar");
- DiscordClassModules.HeaderBarExtras = BDFDB.ModuleUtils.findByProperties("headerBarLoggedOut", "search");
- DiscordClassModules.HeaderBarSearch = BDFDB.ModuleUtils.findByProperties("search", "searchBar", "open");
- DiscordClassModules.HeaderBarTopic = BDFDB.ModuleUtils.findByProperties("topic", "expandable", "content");
- DiscordClassModules.HomeIcon = BDFDB.ModuleUtils.findByProperties("homeIcon");
- DiscordClassModules.HotKeyRecorder = BDFDB.ModuleUtils.findByProperties("editIcon", "recording");
- DiscordClassModules.HoverCard = BDFDB.ModuleUtils.findByProperties("card", "active");
- DiscordClassModules.IconDirection = BDFDB.ModuleUtils.findByProperties("directionDown", "directionUp");
- DiscordClassModules.ImageWrapper = BDFDB.ModuleUtils.findByProperties("clickable", "imageWrapperBackground");
- DiscordClassModules.InviteModal = BDFDB.ModuleUtils.findByProperties("inviteRow", "modal");
- DiscordClassModules.Item = BDFDB.ModuleUtils.findByProperties("item", "side", "header");
- DiscordClassModules.ItemRole = BDFDB.ModuleUtils.findByProperties("role", "dragged");
- DiscordClassModules.ItemLayerContainer = BDFDB.ModuleUtils.findByProperties("layer", "layerContainer");
- DiscordClassModules.Input = BDFDB.ModuleUtils.findByProperties("inputMini", "inputDefault");
- DiscordClassModules.LayerModal = BDFDB.ModuleUtils.findByProperties("root", "small", "medium");
- DiscordClassModules.Layers = BDFDB.ModuleUtils.findByProperties("layer", "layers");
- DiscordClassModules.LiveTag = BDFDB.ModuleUtils.findByProperties("liveLarge", "live");
- DiscordClassModules.LoadingScreen = BDFDB.ModuleUtils.findByProperties("container", "problemsText", "problems");
- DiscordClassModules.Margins = BDFDB.ModuleUtils.findByProperties("marginBottom4", "marginCenterHorz");
- DiscordClassModules.Member = BDFDB.ModuleUtils.findByProperties("member", "ownerIcon");
- DiscordClassModules.MembersWrap = BDFDB.ModuleUtils.findByProperties("membersWrap", "membersGroup");
- DiscordClassModules.Message = BDFDB.ModuleUtils.findByProperties("message", "mentioned");
- DiscordClassModules.MessageAccessory = BDFDB.ModuleUtils.findByProperties("embedWrapper", "gifFavoriteButton");
- DiscordClassModules.MessageBlocked = BDFDB.ModuleUtils.findByProperties("blockedMessageText", "expanded");
- DiscordClassModules.MessageBody = BDFDB.ModuleUtils.findByProperties("markupRtl", "edited");
- DiscordClassModules.MessageDivider = BDFDB.ModuleUtils.findByProperties("isUnread", "divider");
- DiscordClassModules.MessageElements = BDFDB.ModuleUtils.findByProperties("messageGroupBlockedBtn", "dividerRed");
- DiscordClassModules.MessageFile = BDFDB.ModuleUtils.findByProperties("cancelButton", "filenameLinkWrapper");
- DiscordClassModules.MessageLocalBot = BDFDB.ModuleUtils.find(m => typeof m.localBotMessage == "string" && Object.keys(m).length == 1);
- DiscordClassModules.MessageMarkup = BDFDB.ModuleUtils.findByProperties("markup");
- DiscordClassModules.MessageOperations = BDFDB.ModuleUtils.find(m => typeof m.operations == "string" && Object.keys(m).length == 1);
- DiscordClassModules.MessageSystem = BDFDB.ModuleUtils.findByProperties("container", "actionAnchor");
- DiscordClassModules.MessageToolbar = BDFDB.ModuleUtils.findByProperties("container", "icon", "isHeader");
- DiscordClassModules.MessageToolbarItems = BDFDB.ModuleUtils.findByProperties("wrapper", "button", "separator");
- DiscordClassModules.MessagesPopout = BDFDB.ModuleUtils.findByProperties("messagesPopoutWrap", "jumpButton");
- DiscordClassModules.MessagesPopoutButtons = BDFDB.ModuleUtils.findByProperties("secondary", "tertiary", "button");
- DiscordClassModules.MessagesPopoutTabBar = BDFDB.ModuleUtils.findByProperties("header", "tabBar", "active");
- DiscordClassModules.MessagesWelcome = BDFDB.ModuleUtils.findByProperties("welcomeMessage", "h1");
- DiscordClassModules.MessagesWrap = BDFDB.ModuleUtils.findByProperties("messagesWrapper", "messageGroupBlocked");
- DiscordClassModules.Modal = BDFDB.ModuleUtils.findByProperties("modal", "sizeLarge");
- DiscordClassModules.ModalDivider = BDFDB.ModuleUtils.find(m => typeof m.divider == "string" && Object.keys(m).length == 1);
- DiscordClassModules.ModalItems = BDFDB.ModuleUtils.findByProperties("guildName", "checkboxContainer");
- DiscordClassModules.ModalMiniContent = BDFDB.ModuleUtils.find(m => typeof m.modal == "string" && typeof m.content == "string" && Object.keys(m).length == 2);
- DiscordClassModules.ModalWrap = BDFDB.ModuleUtils.find(m => typeof m.modal == "string" && typeof m.inner == "string" && Object.keys(m).length == 2);
- DiscordClassModules.NameContainer = DiscordClassModules.ContextMenu.subMenuContext ? BDFDB.ModuleUtils.findByProperties("nameAndDecorators", "name") : {};
- DiscordClassModules.NameTag = BDFDB.ModuleUtils.findByProperties("bot", "nameTag");
- DiscordClassModules.NitroStore = BDFDB.ModuleUtils.findByProperties("applicationStore", "marketingHeader");
- DiscordClassModules.Note = BDFDB.ModuleUtils.find(m => typeof m.note == "string" && Object.keys(m).length == 1);
- DiscordClassModules.Notice = BDFDB.ModuleUtils.findByProperties("notice", "noticeFacebook");
- DiscordClassModules.Peoples = BDFDB.ModuleUtils.findByProperties("peopleColumn", "tabBar");
- DiscordClassModules.PictureInPicture = BDFDB.ModuleUtils.findByProperties("pictureInPicture", "pictureInPictureWindow");
- DiscordClassModules.PillWrapper = BDFDB.ModuleUtils.find(m => typeof m.item == "string" && typeof m.wrapper == "string" && Object.keys(m).length == 2);
- DiscordClassModules.PrivateChannel = BDFDB.ModuleUtils.findByProperties("channel", "closeButton");
- DiscordClassModules.PrivateChannelList = BDFDB.ModuleUtils.findByProperties("privateChannels", "searchBar");
- DiscordClassModules.PrivateChannelListScroller = BDFDB.ModuleUtils.findByProperties("scroller", "empty");
- DiscordClassModules.Popout = BDFDB.ModuleUtils.findByProperties("popout", "arrowAlignmentTop");
- DiscordClassModules.PopoutActivity = BDFDB.ModuleUtils.findByProperties("ellipsis", "activityActivityFeed");
- DiscordClassModules.QuickMessage = BDFDB.ModuleUtils.findByProperties("quickMessage", "isBlocked");
- DiscordClassModules.QuickSelect = BDFDB.ModuleUtils.findByProperties("quickSelectArrow", "selected");
- DiscordClassModules.QuickSwitch = BDFDB.ModuleUtils.findByProperties("resultFocused", "guildIconContainer");
- DiscordClassModules.QuickSwitchWrap = BDFDB.ModuleUtils.findByProperties("container", "miscContainer");
- DiscordClassModules.Reactions = BDFDB.ModuleUtils.findByProperties("reactionBtn", "reaction");
- DiscordClassModules.RecentMentions = BDFDB.ModuleUtils.findByProperties("recentMentionsPopout");
- DiscordClassModules.Role = BDFDB.ModuleUtils.findByProperties("roleCircle", "roleName", "roleRemoveIcon");
- DiscordClassModules.Scrollbar = BDFDB.ModuleUtils.findByProperties("scrollbar", "scrollbarGhost");
- DiscordClassModules.Scroller = BDFDB.ModuleUtils.findByProperties("scrollerThemed", "scroller");
- DiscordClassModules.SearchBar = BDFDB.ModuleUtils.findByProperties("clear", "container", "pointer");
- DiscordClassModules.SearchPopout = BDFDB.ModuleUtils.findByProperties("datePicker", "searchResultChannelIconBackground");
- DiscordClassModules.SearchPopoutWrap = BDFDB.ModuleUtils.findByProperties("container", "queryContainer");
- DiscordClassModules.SearchResults = BDFDB.ModuleUtils.findByProperties("messageGroupCozy", "searchResultsWrap");
- DiscordClassModules.Select = BDFDB.ModuleUtils.findByProperties("select", "error", "errorMessage");
- DiscordClassModules.SettingsCloseButton = BDFDB.ModuleUtils.findByProperties("closeButton", "keybind");
- DiscordClassModules.SettingsItems = BDFDB.ModuleUtils.findByProperties("dividerMini", "note");
- DiscordClassModules.SettingsTable = BDFDB.ModuleUtils.findByProperties("headerOption", "headerName");
- DiscordClassModules.SettingsWindow = BDFDB.ModuleUtils.findByProperties("contentRegion", "standardSidebarView");
- DiscordClassModules.Slider = BDFDB.ModuleUtils.findByProperties("slider", "grabber");
- DiscordClassModules.Spoiler = BDFDB.ModuleUtils.findByProperties("spoilerContainer", "hidden");
- DiscordClassModules.SpoilerEmbed = BDFDB.ModuleUtils.findByProperties("hiddenSpoilers", "spoiler");
- DiscordClassModules.Switch = BDFDB.ModuleUtils.findByProperties("switchDisabled", "valueChecked");
- DiscordClassModules.Table = BDFDB.ModuleUtils.findByProperties("stickyHeader", "sortIcon");
- DiscordClassModules.Text = BDFDB.ModuleUtils.findByProperties("defaultColor", "defaultMarginh1");
- DiscordClassModules.TextColor = BDFDB.ModuleUtils.findByProperties("colorStandard", "colorMuted", "colorError");
- DiscordClassModules.TextColor2 = BDFDB.ModuleUtils.findByProperties("muted", "wrapper", "base");
- DiscordClassModules.TextSize = BDFDB.ModuleUtils.findByProperties("size10", "size14", "size20");
- DiscordClassModules.TextStyle = BDFDB.ModuleUtils.findByProperties("strikethrough", "underline", "bold");
- DiscordClassModules.Tip = BDFDB.ModuleUtils.findByProperties("pro", "inline");
- DiscordClassModules.Title = BDFDB.ModuleUtils.findByProperties("title", "size18");
- DiscordClassModules.TitleBar = BDFDB.ModuleUtils.findByProperties("titleBar", "wordmark");
- DiscordClassModules.Tooltip = BDFDB.ModuleUtils.findByProperties("tooltip", "tooltipTop");
- DiscordClassModules.TooltipGuild = BDFDB.ModuleUtils.findByProperties("rowIcon", "rowGuildName");
- DiscordClassModules.Typing = BDFDB.ModuleUtils.findByProperties("cooldownWrapper", "typing");
- DiscordClassModules.UnreadBar = BDFDB.ModuleUtils.findByProperties("active", "bar", "unread");
- DiscordClassModules.UploadModal = BDFDB.ModuleUtils.findByProperties("uploadModal", "bgScale");
- DiscordClassModules.UserInfo = BDFDB.ModuleUtils.findByProperties("userInfo", "discordTag");
- DiscordClassModules.UserPopout = BDFDB.ModuleUtils.findByProperties("userPopout", "headerPlaying");
- DiscordClassModules.UserProfile = BDFDB.ModuleUtils.findByProperties("topSectionNormal", "tabBarContainer");
- DiscordClassModules.Video = BDFDB.ModuleUtils.findByProperties("video", "fullScreen");
- DiscordClassModules.VoiceChannel = BDFDB.ModuleUtils.findByProperties("avatarSpeaking", "voiceUser");
- DiscordClassModules.VoiceChannelList = BDFDB.ModuleUtils.findByProperties("list", "collapsed");
- DiscordClassModules.VoiceDetails = BDFDB.ModuleUtils.findByProperties("container", "customStatusContainer");
- DiscordClassModules.VoiceDetailsPing = BDFDB.ModuleUtils.findByProperties("rtcConnectionQualityBad", "rtcConnectionQualityFine");
- BDFDB.DiscordClassModules = Object.assign({}, DiscordClassModules);
-
- var DiscordClasses = {
- _bdguild: ["BDrepo", "bdGuild"],
- _bdguildanimatable: ["BDrepo", "bdGuildAnimatable"],
- _bdguildaudio: ["BDrepo", "bdGuildAudio"],
- _bdguildselected: ["BDrepo", "bdGuildSelected"],
- _bdguildseparator: ["BDrepo", "bdGuildSeparator"],
- _bdguildunread: ["BDrepo", "bdGuildUnread"],
- _bdguildvideo: ["BDrepo", "bdGuildVideo"],
- _bdpillselected: ["BDrepo", "bdPillSelected"],
- _bdpillunread: ["BDrepo", "bdPillUnread"],
- _betternsfwtagtag: ["BetterNsfwTag", "nsfwTag"],
- _chatfilterblocked: ["ChatFilter", "blocked"],
- _chatfilterblockedstamp: ["ChatFilter", "blockedStamp"],
- _chatfiltercensored: ["ChatFilter", "censored"],
- _chatfiltercensoredstamp: ["ChatFilter", "censoredStamp"],
- _charcountercounter: ["CharCounter", "charCounter"],
- _charcountercounteradded: ["CharCounter", "counterAdded"],
- _displaylargemessagesinjectbutton: ["DisplayLargeMessages", "injectButton"],
- _displayserversaschannelsbadge: ["DisplayServersAsChannels", "badge"],
- _displayserversaschannelsname: ["DisplayServersAsChannels", "name"],
- _displayserversaschannelsstyled: ["DisplayServersAsChannels", "styled"],
- _emojistatisticsstatisticsbutton: ["EmojiStatistics", "statisticsButton"],
- _emojistatisticsamountcell: ["EmojiStatistics", "amountCell"],
- _emojistatisticsiconcell: ["EmojiStatistics", "iconCell"],
- _emojistatisticsnamecell: ["EmojiStatistics", "nameCell"],
- _imagegallerydetails: ["ImageGallery", "details"],
- _imagegallerydetailslabel: ["ImageGallery", "detailsLabel"],
- _imagegallerydetailswrapper: ["ImageGallery", "detailsWrapper"],
- _imagegallerygallery: ["ImageGallery", "gallery"],
- _imagegalleryicon: ["ImageGallery", "icon"],
- _imagegallerynext: ["ImageGallery", "next"],
- _imagegalleryprevious: ["ImageGallery", "previous"],
- _imagegallerysibling: ["ImageGallery", "sibling"],
- _imagezoombackdrop: ["ImageZoom", "backdrop"],
- _imagezoomimagemodal: ["ImageZoom", "modal"],
- _imagezoomlense: ["ImageZoom", "lense"],
- _imagezoomoperations: ["ImageZoom", "operations"],
- _friendnotificationsfriendsonline: ["FriendNotifications", "friendsOnline"],
- _googletranslateoptionreversebutton: ["GoogleTranslateOption", "reverseButton"],
- _googletranslateoptiontranslatebutton: ["GoogleTranslateOption", "translateButton"],
- _googletranslateoptiontranslated: ["GoogleTranslateOption", "translated"],
- _googletranslateoptiontranslating: ["GoogleTranslateOption", "translating"],
- _oldtitlebarenabled: ["OldTitleBar", "oldTitleBarEnabled"],
- _oldtitlebarsettingstoolbar: ["OldTitleBar", "settingsToolbar"],
- _oldtitlebartoolbar: ["OldTitleBar", "toolbar"],
- _pindmsdragpreview: ["PinDMs", "dragPreview"],
- _pindmsdmchannelpinned: ["PinDMs", "dmChannelPinned"],
- _pindmsdmchannelplaceholder: ["PinDMs", "dmChannelPlaceholder"],
- _pindmspinnedchannelsheaderamount: ["PinDMs", "pinnedChannelsHeaderAmount"],
- _pindmspinnedchannelsheaderarrow: ["PinDMs", "pinnedChannelsHeaderArrow"],
- _pindmspinnedchannelsheadercollapsed: ["PinDMs", "pinnedChannelsHeaderCollapsed"],
- _pindmspinnedchannelsheadercolored: ["PinDMs", "pinnedChannelsHeaderColored"],
- _pindmspinnedchannelsheadercontainer: ["PinDMs", "pinnedChannelsHeaderContainer"],
- _pindmsrecentpinned: ["PinDMs", "recentPinned"],
- _pindmsrecentplaceholder: ["PinDMs", "recentPlaceholder"],
- _pindmsunpinbutton: ["PinDMs", "unpinButton"],
- _pindmsunpinicon: ["PinDMs", "unpinIcon"],
- _readallnotificationsbuttonbutton: ["ReadAllNotificationsButton", "button"],
- _readallnotificationsbuttonframe: ["ReadAllNotificationsButton", "frame"],
- _readallnotificationsbuttoninner: ["ReadAllNotificationsButton", "innerFrame"],
- _serverfoldersdragpreview: ["ServerFolders", "dragPreview"],
- _serverfoldersfoldercontent: ["ServerFolders", "folderContent"],
- _serverfoldersfoldercontentclosed: ["ServerFolders", "folderContentClosed"],
- _serverfoldersfoldercontentisopen: ["ServerFolders", "folderContentIsOpen"],
- _serverfoldersguildplaceholder: ["ServerFolders", "guildPlaceholder"],
- _serverfoldersiconswatch: ["ServerFolders", "iconSwatch"],
- _serverfoldersiconswatchinner: ["ServerFolders", "iconSwatchInner"],
- _serverfoldersiconswatchpreview: ["ServerFolders", "iconSwatchPreview"],
- _serverfoldersiconswatchselected: ["ServerFolders", "iconSwatchSelected"],
- _showimagedetailsdetails: ["ShowImageDetails", "details"],
- _spellcheckerror: ["SpellCheck", "error"],
- _spellcheckoverlay: ["SpellCheck", "overlay"],
- _timedlightdarkmodedategrabber: ["TimedLightDarkMode", "dateGrabber"],
- _timedlightdarkmodetimergrabber: ["TimedLightDarkMode", "timerGrabber"],
- _timedlightdarkmodetimersettings: ["TimedLightDarkMode", "timerSettings"],
- _toproleseverywherebadgestyle: ["TopRolesEverywhere", "badgeStyle"],
- _toproleseverywherechattag: ["TopRolesEverywhere", "chatTag"],
- _toproleseverywheremembertag: ["TopRolesEverywhere", "memberTag"],
- _toproleseverywhererolestyle: ["TopRolesEverywhere", "roleStyle"],
- _toproleseverywheretag: ["TopRolesEverywhere", "tag"],
- _repoauthor: ["BDrepo", "bdaAuthor"],
- _repobutton: ["BDrepo", "bdButton"],
- _repocard: ["BDrepo", "bdAddonCard"],
- _repocheckbox: ["BDrepo", "switchCheckbox"],
- _repocheckboxchecked: ["BDrepo", "switchChecked"],
- _repocheckboxinner: ["BDrepo", "switch"],
- _repocheckboxitem: ["BDrepo", "switchItem"],
- _repocheckboxwrap: ["BDrepo", "switchWrapper"],
- _repocontrols: ["BDrepo", "bdaControls"],
- _repocontrolsbutton: ["BDrepo", "bdaControlsButton"],
- _repodescription: ["BDrepo", "bdaDescription"],
- _repodescriptionwrap: ["BDrepo", "bdaDescriptionWrap"],
- _repoentry: ["BDFDB", "bdaRepoEntry"],
- _repofolderbutton: ["BDrepo", "bdPfbtn"],
- _repofooter: ["BDrepo", "bdaFooter"],
- _repoheader: ["BDrepo", "bdaHeader"],
- _repoheadertitle: ["BDrepo", "bdaHeaderTitle"],
- _repoicon: ["BDrepo", "bdIcon"],
- _repolist: ["BDrepo", "bdaSlist"],
- _repolink: ["BDrepo", "bdaLink"],
- _repolinks: ["BDrepo", "bdaLinks"],
- _reponame: ["BDrepo", "bdaName"],
- _reposettingsbutton: ["BDrepo", "bdaSettingsButton"],
- _reposettingsopen: ["BDrepo", "settingsOpen"],
- _reposettingsclosed: ["BDrepo", "settingsClosed"],
- _reposwitch: ["BDrepo", "bdSwitch"],
- _reposwitchchecked: ["BDrepo", "bdSwitchChecked"],
- _reposwitchinner: ["BDrepo", "bdSwitchInner"],
- _repoupdatebutton: ["BDrepo", "bdUpdatebtn"],
- _repoversion: ["BDrepo", "bdaVersion"],
- accountinfo: ["AccountDetails", "container"],
- accountinfoavatar: ["AccountDetails", "avatar"],
- accountinfoavatarwrapper: ["AccountDetails", "avatarWrapper"],
- accountinfobutton: ["AccountDetailsButtons", "button"],
- accountinfobuttondisabled: ["AccountDetailsButtons", "disabled"],
- accountinfobuttonenabled: ["AccountDetailsButtons", "enabled"],
- accountinfodetails: ["AccountDetails", "usernameContainer"],
- accountinfonametag: ["AccountDetails", "nameTag"],
- alignbaseline: ["Flex", "alignBaseline"],
- aligncenter: ["Flex", "alignCenter"],
- alignend: ["Flex", "alignEnd"],
- alignstart: ["Flex", "alignStart"],
- alignstretch: ["Flex", "alignStretch"],
- anchor: ["Anchor", "anchor"],
- anchorunderlineonhover: ["Anchor", "anchorUnderlineOnHover"],
- animationcontainerbottom: ["AnimationContainer", "animatorBottom"],
- animationcontainerleft: ["AnimationContainer", "animatorLeft"],
- animationcontainerright: ["AnimationContainer", "animatorRight"],
- animationcontainertop: ["AnimationContainer", "animatorTop"],
- animationcontainerrender: ["AnimationContainer", "didRender"],
- animationcontainerscale: ["AnimationContainer", "scale"],
- animationcontainertranslate: ["AnimationContainer", "translate"],
- app: ["AppOuter", "app"],
- appcontainer: ["AppBase", "container"],
- appmount: ["AppMount", "appMount"],
- applayers: ["AppInner", "layers"],
- applicationstore: ["ApplicationStore", "applicationStore"],
- appold: ["AppInner", "app"],
- auditlog: ["AuditLog", "auditLog"],
- auditlogoverflowellipsis: ["AuditLog", "overflowEllipsis"],
- auditloguserhook: ["AuditLog", "userHook"],
- authbox: ["AuthBox", "authBox"],
- autocomplete: ["Autocomplete", "autocomplete"],
- autocompletecontent: ["Autocomplete", "content"],
- autocompletecontenttitle: ["Autocomplete", "contentTitle"],
- autocompletedescription: ["Autocomplete", "description"],
- autocompletedescriptiondiscriminator: ["Autocomplete", "descriptionDiscriminator"],
- autocompletedescriptionusername: ["Autocomplete", "descriptionUsername"],
- autocompleteicon: ["Autocomplete", "icon"],
- autocompleteiconforeground: ["Autocomplete", "iconForeground"],
- autocompleteinner: ["Autocomplete", "autocompleteInner"],
- autocompleterow: ["Autocomplete", "autocompleteRow"],
- autocompleterowhorizontal: ["Autocomplete", "autocompleteRowHorizontal"],
- autocompleterowvertical: ["Autocomplete", "autocompleteRowVertical"],
- autocompleteselectable: ["Autocomplete", "selectable"],
- autocompleteselected: ["Autocomplete", "selectorSelected"],
- autocompleteselector: ["Autocomplete", "selector"],
- avatar: ["Avatar", "avatar"],
- avatarcursordefault: ["Avatar", "cursorDefault"],
- avataricon: ["AvatarIcon", "icon"],
- avatariconactivelarge: ["AvatarIcon", "iconActiveLarge"],
- avatariconactivemedium: ["AvatarIcon", "iconActiveMedium"],
- avatariconactivemini: ["AvatarIcon", "iconActiveMini"],
- avatariconactivesmall: ["AvatarIcon", "iconActiveSmall"],
- avatariconactivexlarge: ["AvatarIcon", "iconActiveXLarge"],
- avatariconinactive: ["AvatarIcon", "iconInactive"],
- avatariconsizelarge: ["AvatarIcon", "iconSizeLarge"],
- avatariconsizemedium: ["AvatarIcon", "iconSizeMedium"],
- avatariconsizemini: ["AvatarIcon", "iconSizeMini"],
- avatariconsizesmol: ["AvatarIcon", "iconSizeSmol"],
- avatariconsizesmall: ["AvatarIcon", "iconSizeSmall"],
- avatariconsizexlarge: ["AvatarIcon", "iconSizeXLarge"],
- avatarmask: ["Avatar", "mask"],
- avatarnoicon: ["AvatarIcon", "noIcon"],
- avatarpointer: ["Avatar", "pointer"],
- avatarpointerevents: ["Avatar", "pointerEvents"],
- avatarstatushovered: ["BDFDB", "avatarStatusHovered"],
- avatarwrapper: ["Avatar", "wrapper"],
- backdrop: ["Backdrop", "backdrop"],
- backdropwithlayer: ["Backdrop", "backdropWithLayer"],
- badgebase: ["Badge", "base"],
- badgeicon: ["Badge", "icon"],
- badgeiconbadge: ["Badge", "iconBadge"],
- badgenumberbadge: ["Badge", "numberBadge"],
- badgetextbadge: ["Badge", "textBadge"],
- badgewrapper: ["NotFound", "badgeWrapper"],
- bdfdbbadge: ["BDFDB", "badge"],
- bdfdbdev: ["BDFDB", "dev"],
- bdfdbsupporter: ["BDFDB", "supporter"],
- bold: ["TextStyle", "bold"],
- bottag: ["BotTag", "botTag"],
- bottaginvert: ["BotTag", "botTagInvert"],
- bottagmember: ["Member", "botTag"],
- bottagnametag: ["NameTag", "bot"],
- bottagpx: ["BotTag", "px"],
- bottagregular: ["BotTag", "botTagRegular"],
- bottagrem: ["BotTag", "rem"],
- bottagtext: ["BotTag", "botText"],
- bottagverified: ["BotTag", "botTagVerified"],
- button: ["Button", "button"],
- buttoncolorblack: ["Button", "colorBlack"],
- buttoncolorbrand: ["Button", "colorBrand"],
- buttoncolorgreen: ["Button", "colorGreen"],
- buttoncolorgrey: ["Button", "colorGrey"],
- buttoncolorlink: ["Button", "colorLink"],
- buttoncolorprimary: ["Button", "colorPrimary"],
- buttoncolorred: ["Button", "colorRed"],
- buttoncolortransparent: ["Button", "colorTransparent"],
- buttoncolorwhite: ["Button", "colorWhite"],
- buttoncoloryellow: ["Button", "colorYellow"],
- buttoncontents: ["Button", "contents"],
- buttondisabledoverlay: ["Button", "disabledButtonOverlay"],
- buttondisabledwrapper: ["Button", "disabledButtonWrapper"],
- buttonfullwidth: ["Button", "fullWidth"],
- buttongrow: ["Button", "grow"],
- buttonhashover: ["Button", "hasHover"],
- buttonhoverblack: ["Button", "hoverBlack"],
- buttonhoverbrand: ["Button", "hoverBrand"],
- buttonhovergreen: ["Button", "hoverGreen"],
- buttonhovergrey: ["Button", "hoverGrey"],
- buttonhoverlink: ["Button", "hoverLink"],
- buttonhoverprimary: ["Button", "hoverPrimary"],
- buttonhoverred: ["Button", "hoverRed"],
- buttonhovertransparent: ["Button", "hoverTransparent"],
- buttonhoverwhite: ["Button", "hoverWhite"],
- buttonhoveryellow: ["Button", "hoverYellow"],
- buttonlookblank: ["Button", "lookBlank"],
- buttonlookfilled: ["Button", "lookFilled"],
- buttonlookghost: ["Button", "lookGhost"],
- buttonlookinverted: ["Button", "lookInverted"],
- buttonlooklink: ["Button", "lookLink"],
- buttonlookoutlined: ["Button", "lookOutlined"],
- buttonsizeicon: ["Button", "sizeIcon"],
- buttonsizelarge: ["Button", "sizeLarge"],
- buttonsizemax: ["Button", "sizeMax"],
- buttonsizemedium: ["Button", "sizeMedium"],
- buttonsizemin: ["Button", "sizeMin"],
- buttonsizesmall: ["Button", "sizeSmall"],
- buttonsizexlarge: ["Button", "sizeXlarge"],
- buttonspinner: ["Button", "spinner"],
- buttonspinneritem: ["Button", "spinnerItem"],
- buttonsubmitting: ["Button", "submitting"],
- callcurrentcontainer: ["CallCurrent", "wrapper"],
- callcurrentdetails: ["CallDetails", "container"],
- callcurrentvideo: ["Video", "video"],
- callincoming: ["CallIncoming", "incomingCall"],
- callincomingcontainer: ["CallIncoming", "container"],
- callincominginner: ["CallIncomingInner", "incomingCallInner"],
- callmembers: ["CallIncomingInner", "members"],
- card: ["Card", "card"],
- cardbrand: ["Card", "cardBrand"],
- cardbrandoutline: ["Card", "cardBrandOutline"],
- carddanger: ["Card", "cardDanger"],
- carddangeroutline: ["Card", "cardDangerOutline"],
- carderror: ["CardStatus", "error"],
- cardprimary: ["Card", "cardPrimary"],
- cardprimaryeditable: ["Card", "cardPrimaryEditable"],
- cardprimaryoutline: ["Card", "cardPrimaryOutline"],
- cardprimaryoutlineeditable: ["Card", "cardPrimaryOutlineEditable"],
- cardreset: ["CardStatus", "reset"],
- cardsuccess: ["Card", "cardSuccess"],
- cardsuccessoutline: ["Card", "cardSuccessOutline"],
- cardwarning: ["Card", "cardWarning"],
- cardwarningoutline: ["Card", "cardWarningOutline"],
- categoryaddbutton: ["CategoryContainer", "addButton"],
- categoryaddbuttonicon: ["CategoryContainer", "addButtonIcon"],
- categorychildren: ["Category", "children"],
- categoryclickable: ["Category", "clickable"],
- categorycollapsed: ["Category", "collapsed"],
- categorycontainerdefault: ["CategoryContainer", "containerDefault"],
- categoryforcevisible: ["CategoryContainer", "forceVisible"],
- categoryicon: ["Category", "icon"],
- categoryiconvisibility: ["CategoryContainer", "iconVisibility"],
- categorymuted: ["Category", "muted"],
- categoryname: ["Category", "name"],
- categorywrapper: ["Category", "wrapper"],
- changelogadded: ["ChangeLog", "added"],
- changelogcontainer: ["ChangeLog", "container"],
- changelogfixed: ["ChangeLog", "fixed"],
- changelogimproved: ["ChangeLog", "improved"],
- changelogprogress: ["ChangeLog", "added"],
- changelogtitle: ["ChangeLog", "title"],
- channelactionicon: ["ChannelContainer", "actionIcon"],
- channelchildicon: ["ChannelContainer", "iconItem"],
- channelchildiconbase: ["ChannelContainer", "iconBase"],
- channelchildren: ["Channel", "children"],
- channelcontainerdefault: ["ChannelContainer", "containerDefault"],
- channelcontent: ["Channel", "content"],
- channeldisabled: ["ChannelContainer", "disabled"],
- channelheaderchannelname: ["ChatWindow", "channelName"],
- channelheaderchildren: ["HeaderBar", "children"],
- channelheaderdivider: ["HeaderBar", "divider"],
- channelheaderheaderbar: ["HeaderBar", "container"],
- channelheaderheaderbarthemed: ["HeaderBar", "themed"],
- channelheaderheaderbartitle: ["HeaderBar", "title"],
- channelheadericon: ["HeaderBar", "icon"],
- channelheadericonbadge: ["HeaderBar", "iconBadge"],
- channelheadericonclickable: ["HeaderBar", "clickable"],
- channelheadericonselected: ["HeaderBar", "selected"],
- channelheadericonwrapper: ["HeaderBar", "iconWrapper"],
- channelheadertitle: ["ChatWindow", "title"],
- channelheadertitlewrapper: ["ChatWindow", "titleWrapper"],
- channelheadersearch: ["HeaderBarExtras", "search"],
- channelheadersearchbar: ["HeaderBarSearch", "searchBar"],
- channelheadersearchicon: ["HeaderBarSearch", "icon"],
- channelheadersearchinner: ["HeaderBarSearch", "search"],
- channelheadertoolbar: ["HeaderBar", "toolbar"],
- channelheadertoolbar2: ["HeaderBarExtras", "toolbar"],
- channelheadertopic: ["HeaderBarTopic", "topic"],
- channelheadertopicexpandable: ["HeaderBarTopic", "expandable"],
- channelicon: ["Channel", "icon"],
- channeliconvisibility: ["ChannelContainer", "iconVisibility"],
- channelmentionsbadge: ["ChannelContainer", "mentionsBadge"],
- channelmodeconnected: ["Channel", "modeConnected"],
- channelmodelocked: ["Channel", "modeLocked"],
- channelmodemuted: ["Channel", "modeMuted"],
- channelmodeselected: ["Channel", "modeSelected"],
- channelmodeunread: ["Channel", "modeUnread"],
- channelname: ["Channel", "name"],
- channelpanel: ["AppBase", "activityPanel"],
- channelpaneltitle: ["NotFound", "channelPanelTitle"],
- channelpanels: ["AppBase", "panels"],
- channels: ["AppBase", "sidebar"],
- channelselected: ["ChannelContainer", "selected"],
- channelsscroller: ["GuildChannels", "scroller"],
- channelsunreadbar: ["GuildChannels", "unreadBar"],
- channelsunreadbarcontainer: ["GuildChannels", "positionedContainer"],
- channelsunreadbarbottom: ["GuildChannels", "unreadBottom"],
- channelsunreadbarunread: ["GuildChannels", "unread"],
- channelsunreadbartop: ["GuildChannels", "unreadTop"],
- channelunread: ["Channel", "unread"],
- channeluserlimit: ["ChannelLimit", "wrapper"],
- channeluserlimitcontainer: ["ChannelContainer", "userLimit"],
- channeluserlimittotal: ["ChannelLimit", "total"],
- channeluserlimitusers: ["ChannelLimit", "users"],
- channelwrapper: ["Channel", "wrapper"],
- charcounter: ["BDFDB", "charCounter"],
- chat: ["ChatWindow", "chat"],
- chatbase: ["AppBase", "base"],
- chatcontent: ["ChatWindow", "chatContent"],
- chatform: ["ChatWindow", "form"],
- chatinner: ["ChatWindow", "content"],
- chatspacer: ["AppBase", "content"],
- checkbox: ["Checkbox", "checkbox"],
- checkboxchecked: ["Checkbox", "checked"],
- checkboxcontainer: ["ModalItems", "checkboxContainer"],
- checkboxinput: ["Checkbox", "input"],
- checkboxinputdefault: ["Checkbox", "inputDefault"],
- checkboxinputdisabled: ["Checkbox", "inputDisabled"],
- checkboxround: ["Checkbox", "round"],
- checkboxwrapper: ["Checkbox", "checkboxWrapper"],
- checkboxwrapperdisabled: ["Checkbox", "checkboxWrapperDisabled"],
- collapsecontainer: ["BDFDB", "collapseContainer"],
- collapsecontainerarrow: ["BDFDB", "collapseContainerArrow"],
- collapsecontainercollapsed: ["BDFDB", "collapseContainerCollapsed"],
- collapsecontainerheader: ["BDFDB", "collapseContainerHeader"],
- collapsecontainerinner: ["BDFDB", "collapseContainerInner"],
- collapsecontainermini: ["BDFDB", "collapseContainerMini"],
- collapsecontainertitle: ["BDFDB", "collapseContainerTitle"],
- colorbase: ["TextColor2", "base"],
- colorbrand: ["TextColor", "colorBrand"],
- colorerror: ["TextColor", "colorError"],
- colormuted: ["TextColor", "colorMuted"],
- colorgreen: ["TextColor", "colorStatusGreen"],
- colorpicker: ["ColorPicker", "colorPickerCustom"],
- colorpickeralpha: ["BDFDB", "colorPickerAlpha"],
- colorpickeralphacheckered: ["BDFDB", "colorPickerAlphaCheckered"],
- colorpickeralphacursor: ["BDFDB", "colorPickerAlphaCursor"],
- colorpickeralphahorizontal: ["BDFDB", "colorPickerAlphaHorizontal"],
- colorpickergradient: ["BDFDB", "colorPickerGradient"],
- colorpickergradientbutton: ["BDFDB", "colorPickerGradientButton"],
- colorpickergradientbuttonenabled: ["BDFDB", "colorPickerGradientButtonEnabled"],
- colorpickergradientcheckered: ["BDFDB", "colorPickerGradientCheckered"],
- colorpickergradientcursor: ["BDFDB", "colorPickerGradientCursor"],
- colorpickergradientcursoredge: ["BDFDB", "colorPickerGradientCursorEdge"],
- colorpickergradientcursorselected: ["BDFDB", "colorPickerGradientCursorSelected"],
- colorpickergradienthorizontal: ["BDFDB", "colorPickerGradientHorizontal"],
- colorpickerhexinput: ["ColorPicker", "customColorPickerInput"],
- colorpickerhue: ["ColorPickerInner", "hue"],
- colorpickerhuecursor: ["NotFound", "hueCursor"],
- colorpickerhuehorizontal: ["NotFound", "hueHorizontal"],
- colorpickerhuevertical: ["NotFound", "hueVertical"],
- colorpickerinner: ["ColorPickerInner", "wrapper"],
- colorpickerrow: ["ColorPicker", "colorPickerRow"],
- colorpickersaturation: ["ColorPickerInner", "saturation"],
- colorpickersaturationblack: ["NotFound", "saturationBlack"],
- colorpickersaturationcolor: ["NotFound", "saturationColor"],
- colorpickersaturationcursor: ["NotFound", "saturationCursor"],
- colorpickersaturationwhite: ["NotFound", "saturationWhite"],
- colorpickerswatch: ["ColorPicker", "colorPickerSwatch"],
- colorpickerswatches: ["BDFDB", "colorPickerSwatches"],
- colorpickerswatchesdisabled: ["BDFDB", "colorPickerSwatchesDisabled"],
- colorpickerswatchcustom: ["ColorPicker", "custom"],
- colorpickerswatchdefault: ["ColorPicker", "default"],
- colorpickerswatchdisabled: ["ColorPicker", "disabled"],
- colorpickerswatchdropper: ["ColorPicker", "colorPickerDropper"],
- colorpickerswatchdropperfg: ["ColorPicker", "colorPickerDropperFg"],
- colorpickerswatchnocolor: ["ColorPicker", "noColor"],
- colorpickerswatchselected: ["BDFDB", "colorPickerSwatchSelected"],
- colorpickerswatchsingle: ["BDFDB", "colorPickerSwatchSingle"],
- colorpickerwrapper: ["BDFDB", "colorPicker"],
- colorprimary: ["TextColor", "colorHeaderPrimary"],
- colorred: ["TextColor", "colorStatusRed"],
- colorsecondary: ["TextColor", "colorHeaderSecondary"],
- colorselectable: ["TextColor", "selectable"],
- colorstandard: ["TextColor", "colorStandard"],
- coloryellow: ["TextColor", "colorStatusYellow"],
- contentcolumn: ["SettingsWindow", "contentColumn"],
- contentregion: ["SettingsWindow", "contentRegion"],
- contextmenu: ["ContextMenu", "contextMenu"],
- contextmenucheckbox: ["ContextMenuCheckbox", "checkbox"],
- contextmenucheckbox2: ["ContextMenu", "checkbox"],
- contextmenucheckboxdisabled: ["ContextMenuCheckbox", "disabled"],
- contextmenucheckboxinner: ["ContextMenuCheckbox", "checkboxInner"],
- contextmenucheckboxelement: ["ContextMenuCheckbox", "checkboxElement"],
- contextmenuhint: ["ContextMenu", "hint"],
- contextmenuimage: ["ContextMenu", "image"],
- contextmenuitem: ["ContextMenu", "item"],
- contextmenuitembrand: ["ContextMenu", "brand"],
- contextmenuitemclickable: ["ContextMenu", "clickable"],
- contextmenuitemdanger: ["ContextMenu", "danger"],
- contextmenuitemdisabled: ["ContextMenu", "disabled"],
- contextmenuitemgroup: ["ContextMenu", "itemGroup"],
- contextmenuitemtoggle: ["ContextMenu", "itemToggle"],
- contextmenuitemselected: ["ContextMenu", "selected"],
- contextmenuitemslider: ["ContextMenu", "itemSlider"],
- contextmenuitemsubmenu: ["ContextMenu", "itemSubMenu"],
- contextmenuitemsubmenucaret: ["ContextMenu", "caret"],
- contextmenulabel: ["ContextMenu", "label"],
- contextmenureactbutton: ["ContextMenuReactButton", "button"],
- contextmenureactbuttonicon: ["ContextMenuReactButton", "icon"],
- contextmenureactbuttons: ["ContextMenuReactButton", "wrapper"],
- contextmenuscroller: ["ContextMenu", "scroller"],
- contextmenuslider: ["ContextMenu", "slider"],
- contextmenusubcontext: ["ContextMenu", "subMenuContext"],
- cursordefault: ["Cursor", "cursorDefault"],
- cursorpointer: ["Cursor", "cursorPointer"],
- customstatus: ["CustomStatus", "customStatus"],
- customstatuscontenticon: ["CustomStatus", "customStatusContentIcon"],
- customstatusemoji: ["CustomStatusIcon", "emoji"],
- customstatusicon: ["CustomStatusIcon", "icon"],
- defaultcolor: ["Text", "defaultColor"],
- description: ["FormText", "description"],
- directioncolumn: ["Flex", "directionColumn"],
- directiondown: ["IconDirection", "directionDown"],
- directionleft: ["IconDirection", "directionLeft"],
- directionright: ["IconDirection", "directionRight"],
- directionrow: ["Flex", "directionRow"],
- directionrowreverse: ["Flex", "directionRowReverse"],
- directionup: ["IconDirection", "directionUp"],
- directiontransition: ["IconDirection", "transition"],
- disabled: ["SettingsItems", "disabled"],
- discriminator: ["NameTag", "discriminator"],
- divider: ["ModalDivider", "divider"],
- dividerdefault: ["SettingsItems", "dividerDefault"],
- dividermini: ["SettingsItems", "dividerMini"],
- dmchannel: ["PrivateChannel", "channel"],
- dmchannelactivity: ["PrivateChannel", "activity"],
- dmchannelactivityemoji: ["PrivateChannel", "activityEmoji"],
- dmchannelactivitytext: ["PrivateChannel", "activityText"],
- dmchannelclose: ["PrivateChannel", "closeButton"],
- dmchannelheadercontainer: ["PrivateChannelListScroller", "privateChannelsHeaderContainer"],
- dmchannelheadertext: ["PrivateChannelListScroller", "headerText"],
- dmchannels: ["PrivateChannelList", "privateChannels"],
- dmchannelsempty: ["PrivateChannelListScroller", "empty"],
- dmchannelsscroller: ["PrivateChannelListScroller", "scroller"],
- dmpill: ["GuildDm", "pill"],
- downloadlink: ["DownloadLink", "downloadLink"],
- ellipsis: ["PopoutActivity", "ellipsis"],
- embed: ["Embed", "embed"],
- embedauthor: ["Embed", "embedAuthor"],
- embedauthoricon: ["Embed", "embedAuthorIcon"],
- embedauthorname: ["Embed", "embedAuthorName"],
- embedauthornamelink: ["Embed", "embedAuthorNameLink"],
- embedcentercontent: ["Embed", "centerContent"],
- embeddescription: ["Embed", "embedDescription"],
- embedfield: ["Embed", "embedField"],
- embedfieldname: ["Embed", "embedFieldName"],
- embedfields: ["Embed", "embedFields"],
- embedfieldvalue: ["Embed", "embedFieldValue"],
- embedfooter: ["Embed", "embedFooter"],
- embedfootericon: ["Embed", "embedFooterIcon"],
- embedfooterseparator: ["Embed", "embedFooterSeparator"],
- embedfootertext: ["Embed", "embedFooterText"],
- embedfull: ["Embed", "embedFull"],
- embedgiftag: ["Embed", "embedGIFTag"],
- embedgrid: ["Embed", "grid"],
- embedhasthumbnail: ["Embed", "hasThumbnail"],
- embedhiddenspoiler: ["Embed", "hiddenSpoiler"],
- embediframe: ["Embed", "embedIframe"],
- embedimage: ["Embed", "embedImage"],
- embedlink: ["Embed", "embedLink"],
- embedmargin: ["Embed", "embedMargin"],
- embedmedia: ["Embed", "embedMedia"],
- embedprovider: ["Embed", "embedProvider"],
- embedspoilerattachment: ["Embed", "spoilerAttachment"],
- embedspoilerembed: ["Embed", "spoilerEmbed"],
- embedspotify: ["Embed", "embedSpotify"],
- embedthumbnail: ["Embed", "embedThumbnail"],
- embedtitle: ["Embed", "embedTitle"],
- embedtitlelink: ["Embed", "embedTitleLink"],
- embedvideo: ["Embed", "embedVideo"],
- embedvideoaction: ["Embed", "embedVideoAction"],
- embedvideoactions: ["Embed", "embedVideoActions"],
- embedvideoimagecomponent: ["Embed", "embedVideoImageComponent"],
- embedvideoimagecomponentinner: ["Embed", "embedVideoImageComponentInner"],
- embedwrapper: ["MessageAccessory", "embedWrapper"],
- emoji: ["Emoji", "emoji"],
- emojiold: ["NotFound", "emoji"],
- emojibutton: ["EmojiButton", "emojiButton"],
- emojibuttonhovered: ["EmojiButton", "emojiButtonHovered"],
- emojibuttonnormal: ["EmojiButton", "emojiButtonNormal"],
- emojibuttonsprite: ["EmojiButton", "sprite"],
- emojiinput: ["EmojiInput", "input"],
- emojiinputbutton: ["EmojiInput", "emojiButton"],
- emojiinputbuttoncontainer: ["EmojiInput", "emojiButtonContainer"],
- emojiinputclearbutton: ["EmojiInput", "clearButton"],
- emojiinputclearicon: ["EmojiInput", "clearIcon"],
- emojiinputcontainer: ["EmojiInput", "inputContainer"],
- emojipicker: ["EmojiPicker", "emojiPicker"],
- emojipickerbutton: ["Reactions", "reactionBtn"],
- emojipickercategories: ["EmojiPicker", "categories"],
- emojipickercategory: ["EmojiPicker", "category"],
- emojipickerdisabled: ["EmojiPicker", "disabled"],
- emojipickerdiversityselector: ["EmojiPicker", "diversitySelector"],
- emojipickerdiversityselectoritem: ["EmojiPicker", "item"],
- emojipickeremojiitem: ["EmojiPicker", "emojiItem"],
- emojipickerheader: ["EmojiPicker", "header"],
- emojipickerinfobar: ["EmojiPicker", "infoBar"],
- emojipickerinfobaremoji: ["EmojiPicker", "infoBarEmoji"],
- emojipickerpopout: ["EmojiPicker", "popout"],
- emojipickerpremiumpromo: ["EmojiPicker", "premiumPromo"],
- emojipickerpremiumpromoclose: ["EmojiPicker", "premiumPromoClose"],
- emojipickerpremiumpromodescription: ["EmojiPicker", "premiumPromoDescription"],
- emojipickerpremiumpromoimage: ["EmojiPicker", "premiumPromoImage"],
- emojipickerpremiumpromotitle: ["EmojiPicker", "premiumPromoTitle"],
- emojipickerrow: ["EmojiPicker", "row"],
- emojipickersearchbar: ["EmojiPicker", "searchBar"],
- emojipickerscroller: ["EmojiPicker", "scroller"],
- emojipickerscrollerwrap: ["EmojiPicker", "scrollerWrap"],
- emojipickerselected: ["EmojiPicker", "selected"],
- emojipickerspriteitem: ["EmojiPicker", "spriteItem"],
- emojipickerstickyheader: ["EmojiPicker", "stickyHeader"],
- expressionemojipicker: ["ExpressionEmojiPicker", "emojiPicker"],
- expressionemojipickerdiversityemojiitem: ["ExpressionEmojiPickerDiversitySelector", "diversityEmojiItem"],
- expressionemojipickerdiversityemojiitemimage: ["ExpressionEmojiPickerDiversitySelector", "diversityEmojiItemImage"],
- expressionemojipickerdiversityselector: ["ExpressionEmojiPickerDiversitySelector", "diversitySelector"],
- expressionemojipickerdiversityselectorpopout: ["ExpressionEmojiPickerDiversitySelector", "diversitySelectorPopout"],
- expressionemojipickerdiversityselectorwrapper: ["ExpressionEmojiPicker", "diversitySelector"],
- expressionemojipickeremojiitemimage: ["ExpressionEmojiPickerItem", "emojiItemImage"],
- expressionemojipickeremojiitemimageloading: ["ExpressionEmojiPickerItem", "emojiItemImageLoading"],
- expressionemojipickerheader: ["ExpressionEmojiPicker", "header"],
- expressionemojipickerinspector: ["ExpressionEmojiPickerInspector", "inspector"],
- expressionemojipickerinspectoremoji: ["ExpressionEmojiPickerInspector", "emoji"],
- expressionpicker: ["ExpressionPicker", "contentWrapper"],
- expressionpickernav: ["ExpressionPicker", "nav"],
- expressionpickernavbutton: ["ExpressionPicker", "navButton"],
- expressionpickernavbuttonactive: ["ExpressionPicker", "navButtonActive"],
- expressionpickernavitem: ["ExpressionPicker", "navItem"],
- expressionpickernavlist: ["ExpressionPicker", "navList"],
- favbuttoncontainer: ["BDFDB", "favButtonContainer"],
- fileattachment: ["File", "attachment"],
- fileattachmentinner: ["File", "attachmentInner"],
- filecancelbutton: ["File", "cancelButton"],
- filedownloadbutton: ["File", "downloadButton"],
- filename: ["File", "filename"],
- filenamelink: ["File", "fileNameLink"],
- filenamelinkwrapper: ["File", "filenameLinkWrapper"],
- filenamewrapper: ["File", "filenameWrapper"],
- flex: ["FlexChild", "flex"],
- flex2: ["Flex", "flex"],
- flexcenter: ["Flex", "flexCenter"],
- flexchild: ["FlexChild", "flexChild"],
- flexmarginreset: ["FlexChild", "flexMarginReset"],
- flexspacer: ["Flex", "spacer"],
- flowerstar: ["FlowerStar", "flowerStar"],
- flowerstarchild: ["FlowerStar", "childContainer"],
- flowerstarcontainer: ["FlowerStar", "flowerStarContainer"],
- formtext: ["FormText", "formText"],
- game: ["Game", "game"],
- gameicon: ["GameIcon", "gameIcon"],
- gameiconlarge: ["GameIcon", "large"],
- gameiconmedium: ["GameIcon", "medium"],
- gameiconsmall: ["GameIcon", "small"],
- gameiconxsmall: ["GameIcon", "xsmall"],
- gamelibrarytable: ["GameLibraryTable", "table"],
- gamelibrarytableheader: ["GameLibraryTable", "header"],
- gamelibrarytableheadercell: ["GameLibraryTable", "headerCell"],
- gamelibrarytableheadercellsorted: ["GameLibraryTable", "headerCellSorted"],
- gamelibrarytablerow: ["GameLibraryTable", "row"],
- gamelibrarytablerowwrapper: ["GameLibraryTable", "rowWrapper"],
- gamelibrarytablestickyheader: ["GameLibraryTable", "stickyHeader"],
- gamename: ["Game", "gameName"],
- gamenameinput: ["Game", "gameNameInput"],
- giffavoritebutton: ["MessageAccessory", "gifFavoriteButton"],
- giffavoritecolor: ["GifFavoriteButton", "gifFavoriteButton"],
- giffavoriteicon: ["GifFavoriteButton", "icon"],
- giffavoriteshowpulse: ["GifFavoriteButton", "showPulse"],
- giffavoritesize: ["GifFavoriteButton", "size"],
- giffavoriteselected: ["GifFavoriteButton", "selected"],
- goliveactions: ["GoLiveDetails", "actions"],
- golivebody: ["GoLiveDetails", "body"],
- goliveclickablegamewrapper: ["GoLiveDetails", "clickableGameWrapper"],
- golivegameicon: ["GoLiveDetails", "gameIcon"],
- golivegamename: ["GoLiveDetails", "gameName"],
- golivegamewrapper: ["GoLiveDetails", "gameWrapper"],
- goliveinfo: ["GoLiveDetails", "info"],
- golivepanel: ["GoLiveDetails", "panel"],
- guild: ["BDFDB", "guild"],
- guildbuttoncontainer: ["GuildsItems", "circleButtonMask"],
- guildbuttoninner: ["GuildsItems", "circleIconButton"],
- guildbuttonicon: ["GuildsItems", "circleIcon"],
- guildbuttonpill: ["GuildsItems", "pill"],
- guildbuttonselected: ["GuildsItems", "selected"],
- guildchannels: ["NotFound", "guildChannels"],
- guildcontainer: ["GuildServer", "blobContainer"],
- guilddiscovery: ["GuildDiscovery", "pageWrapper"],
- guildedge: ["GuildEdges", "edge"],
- guildedgehalf: ["GuildEdges", "half"],
- guildedgehigher: ["GuildEdges", "higher"],
- guildedgemiddle: ["GuildEdges", "middle"],
- guildedgewrapper: ["GuildEdges", "wrapper"],
- guildserror: ["GuildsItems", "guildsError"],
- guildserrorinner: ["GuildsItems", "errorInner"],
- guildfolder: ["GuildFolder", "folder"],
- guildfolderexpandedbackground: ["GuildFolder", "expandedFolderBackground"],
- guildfolderexpandedbackgroundcollapsed: ["GuildFolder", "collapsed"],
- guildfolderexpandedbackgroundhover: ["GuildFolder", "hover"],
- guildfolderguildicon: ["GuildFolder", "guildIcon"],
- guildfoldericonwrapper: ["GuildFolder", "folderIconWrapper"],
- guildfoldericonwrapperclosed: ["GuildFolder", "closedFolderIconWrapper"],
- guildfoldericonwrapperexpanded: ["GuildFolder", "expandedFolderIconWrapper"],
- guildfolderwrapper: ["GuildFolder", "wrapper"],
- guildheader: ["GuildHeader", "container"],
- guildheaderbannerimage: ["GuildHeader", "bannerImage"],
- guildheaderbannerimagecontainer: ["GuildHeader", "animatedContainer"],
- guildheaderbannervisible: ["GuildHeader", "bannerVisible"],
- guildheaderbutton: ["GuildHeaderButton", "button"],
- guildheaderbuttonopen: ["GuildHeaderButton", "open"],
- guildheaderclickable: ["GuildHeader", "clickable"],
- guildheaderhasbanner: ["GuildHeader", "hasBanner"],
- guildheadericoncontainer: ["GuildHeader", "guildIconContainer"],
- guildheadericonbgtiernone: ["GuildHeader", "iconBackgroundTierNone"],
- guildheadericonbgtierone: ["GuildHeader", "iconBackgroundTierOne"],
- guildheadericonbgtierthree: ["GuildHeader", "iconBackgroundTierThree"],
- guildheadericonbgtiertwo: ["GuildHeader", "iconBackgroundTierTwo"],
- guildheadericonpremiumgem: ["GuildHeader", "premiumGuildIconGem"],
- guildheadericontiernone: ["GuildHeader", "iconTierNone"],
- guildheadericontierone: ["GuildHeader", "iconTierOne"],
- guildheadericontierthree: ["GuildHeader", "iconTierThree"],
- guildheadericontiertwo: ["GuildHeader", "iconTierTwo"],
- guildheaderheader: ["GuildHeader", "header"],
- guildheadername: ["GuildHeader", "name"],
- guildicon: ["GuildIcon", "icon"],
- guildiconacronym: ["GuildIcon", "acronym"],
- guildiconbadge: ["GuildsItems", "iconBadge"],
- guildiconchildwrapper: ["GuildIcon", "childWrapper"],
- guildiconselected: ["GuildIcon", "selected"],
- guildiconwrapper: ["GuildIcon", "wrapper"],
- guildinner: ["Guild", "wrapper"],
- guildinnerwrapper: ["GuildsItems", "listItemWrapper"],
- guildlowerbadge: ["Guild", "lowerBadge"],
- guildlowerleftbadge: ["BDFDB", "guildLowerLeftBadge"],
- guildouter: ["GuildsItems", "listItem"],
- guildpill: ["GuildServer", "pill"],
- guildpillitem: ["PillWrapper", "item"],
- guildpillwrapper: ["PillWrapper", "wrapper"],
- guildplaceholder: ["GuildsItems", "dragInner"],
- guildplaceholdermask: ["GuildsItems", "placeholderMask"],
- guilds: ["AppBase", "guilds"],
- guildseparator: ["GuildsItems", "guildSeparator"],
- guildserror: ["GuildsItems", "guildsError"],
- guildsettingsbannedcard: ["GuildSettingsBanned", "bannedUser"],
- guildsettingsbanneddiscrim: ["GuildSettingsBanned", "discrim"],
- guildsettingsbannedusername: ["GuildSettingsBanned", "username"],
- guildsettingsemojicard: ["GuildSettingsEmoji", "emojiRow"],
- guildsettingsinvitecard: ["GuildSettingsInvite", "inviteSettingsInviteRow"],
- guildsettingsinvitechannelname: ["GuildSettingsInvite", "channelName"],
- guildsettingsinviteusername: ["GuildSettingsInvite", "username"],
- guildsettingsmembercard: ["GuildSettingsMember", "member"],
- guildsettingsmembername: ["GuildSettingsMember", "name"],
- guildsettingsmembernametag: ["GuildSettingsMember", "nameTag"],
- guildsscroller: ["GuildsWrapper", "scroller"],
- guildsscrollerwrap: ["GuildsWrapper", "scrollerWrap"],
- guildsvg: ["Guild", "svg"],
- guildswrapper: ["GuildsWrapper", "wrapper"],
- guildswrapperunreadmentionsbar: ["GuildsWrapper", "unreadMentionsBar"],
- guildswrapperunreadmentionsbarbottom: ["GuildsWrapper", "unreadMentionsIndicatorBottom"],
- guildswrapperunreadmentionsbartop: ["GuildsWrapper", "unreadMentionsIndicatorTop"],
- guildtutorialcontainer: ["GuildsItems", "tutorialContainer"],
- guildupperbadge: ["Guild", "upperBadge"],
- guildupperleftbadge: ["BDFDB", "guildUpperLeftBadge"],
- h1: ["Text", "h1"],
- h1defaultmargin: ["Text", "defaultMarginh1"],
- h2: ["Text", "h2"],
- h2defaultmargin: ["Text", "defaultMarginh2"],
- h3: ["Text", "h3"],
- h3defaultmargin: ["Text", "defaultMarginh3"],
- h4: ["Text", "h4"],
- h4defaultmargin: ["Text", "defaultMarginh4"],
- h5: ["Text", "h5"],
- h5defaultmargin: ["Text", "defaultMarginh5"],
- headertitle: ["Text", "title"],
- height12: ["UserPopout", "height12"],
- height16: ["File", "height16"],
- height24: ["Title", "height24"],
- height36: ["Notice", "height36"],
- highlight: ["NotFound", "highlight"],
- homebuttonicon: ["HomeIcon", "homeIcon"],
- homebuttonpill: ["HomeIcon", "pill"],
- horizontal: ["FlexChild", "horizontal"],
- horizontal2: ["NotFound", "_"],
- horizontalreverse: ["FlexChild", "horizontalReverse"],
- horizontalreverse2: ["NotFound", "_"],
- hotkeybase: ["NotFound", "_"],
- hotkeybutton: ["HotKeyRecorder", "button"],
- hotkeybutton2: ["NotFound", "_"],
- hotkeycontainer: ["HotKeyRecorder", "container"],
- hotkeycontainer2: ["NotFound", "_"],
- hotkeydisabled: ["HotKeyRecorder", "disabled"],
- hotkeydisabled2: ["NotFound", "_"],
- hotkeyediticon: ["HotKeyRecorder", "editIcon"],
- hotkeyhasvalue: ["HotKeyRecorder", "hasValue"],
- hotkeyinput: ["HotKeyRecorder", "input"],
- hotkeyinput2: ["HotKeyRecorder", "input"],
- hotkeylayout: ["HotKeyRecorder", "layout"],
- hotkeylayout2: ["HotKeyRecorder", "layout"],
- hotkeyrecording: ["HotKeyRecorder", "recording"],
- hotkeyresetbutton: ["BDFDB", "hotkeyResetButton"],
- hotkeyshadowpulse: ["HotKeyRecorder", "shadowPulse"],
- hotkeytext: ["HotKeyRecorder", "text"],
- hotkeywrapper: ["BDFDB", "hotkeyWrapper"],
- hovercard: ["HoverCard", "card"],
- hovercardbutton: ["NotFound", "hoverCardButton"],
- hovercardinner: ["BDFDB", "cardInner"],
- hovercardwrapper: ["BDFDB", "cardWrapper"],
- icon: ["EmbedActions", "icon"],
- iconactionswrapper: ["EmbedActions", "wrapper"],
- iconexternal: ["EmbedActions", "iconExternal"],
- iconexternalmargins: ["EmbedActions", "iconExternalMargins"],
- iconplay: ["EmbedActions", "iconPlay"],
- iconwrapper: ["EmbedActions", "iconWrapper"],
- iconwrapperactive: ["EmbedActions", "iconWrapperActive"],
- imageaccessory: ["ImageWrapper", "imageAccessory"],
- imageclickable: ["ImageWrapper", "clickable"],
- imageerror: ["ImageWrapper", "imageError"],
- imageplaceholder: ["ImageWrapper", "imagePlaceholder"],
- imageplaceholderoverlay: ["ImageWrapper", "imagePlaceholderOverlay"],
- imagewrapper: ["ImageWrapper", "imageWrapper"],
- imagewrapperbackground: ["ImageWrapper", "imageWrapperBackground"],
- imagewrapperinner: ["ImageWrapper", "imageWrapperInner"],
- imagezoom: ["ImageWrapper", "imageZoom"],
- itemlayer: ["ItemLayerContainer", "layer"],
- itemlayercontainer: ["ItemLayerContainer", "layerContainer"],
- itemlayerdisabledpointerevents: ["ItemLayerContainer", "disabledPointerEvents"],
- input: ["Input", "input"],
- inputdefault: ["Input", "inputDefault"],
- inputdisabled: ["Input", "disabled"],
- inputeditable: ["Input", "editable"],
- inputerror: ["Input", "error"],
- inputfocused: ["Input", "focused"],
- inputmini: ["Input", "inputMini"],
- inputprefix: ["Input", "inputPrefix"],
- inputsuccess: ["Input", "success"],
- inputwrapper: ["Input", "inputWrapper"],
- inputnumberbutton: ["BDFDB", "inputNumberButton"],
- inputnumberbuttondown: ["BDFDB", "inputNumberButtonDown"],
- inputnumberbuttonup: ["BDFDB", "inputNumberButtonUp"],
- inputnumberbuttons: ["BDFDB", "inputNumberButtons"],
- inputnumberwrapper: ["BDFDB", "inputNumberWrapper"],
- inputnumberwrapperdefault: ["BDFDB", "inputNumberWrapperDefault"],
- inputnumberwrappermini: ["BDFDB", "inputNumberWrapperMini"],
- invite: ["GuildInvite", "wrapper"],
- invitebutton: ["GuildInvite", "button"],
- invitebuttonfornonmember: ["GuildInvite", "buttonForNonMember"],
- invitebuttonresolving: ["GuildInvite", "invite-button-resolving"],
- invitebuttonsize: ["GuildInvite", "buttonSize"],
- invitechannel: ["GuildInvite", "channel"],
- invitechannelicon: ["GuildInvite", "channelIcon"],
- invitechannelname: ["GuildInvite", "channelName"],
- invitecontent: ["GuildInvite", "content"],
- invitecount: ["GuildInvite", "count"],
- invitecursordefault: ["GuildInvite", "cursorDefault"],
- invitedestination: ["GuildInvite", "inviteDestination"],
- invitedestinationexpired: ["GuildInvite", "inviteDestinationExpired"],
- invitedestinationjoined: ["GuildInvite", "inviteDestinationJoined"],
- inviteguildbadge: ["GuildInvite", "guildBadge"],
- inviteguilddetail: ["GuildInvite", "guildDetail"],
- inviteguildicon: ["GuildInvite", "guildIcon"],
- inviteguildiconexpired: ["GuildInvite", "guildIconExpired"],
- inviteguildiconimage: ["GuildInvite", "guildIconImage"],
- inviteguildiconimagejoined: ["GuildInvite", "guildIconImageJoined"],
- inviteguildiconjoined: ["GuildInvite", "guildIconJoined"],
- inviteguildinfo: ["GuildInvite", "guildInfo"],
- inviteguildname: ["GuildInvite", "guildName"],
- inviteguildnamewrapper: ["GuildInvite", "guildNameWrapper"],
- inviteheader: ["GuildInvite", "header"],
- invitemodal: ["InviteModal", "modal"],
- invitemodalinviterow: ["InviteModal", "inviteRow"],
- invitemodalinviterowname: ["InviteModal", "inviteRowName"],
- invitemodalwrapper: ["InviteModal", "wrapper"],
- invitesplash: ["GuildInvite", "inviteSplash"],
- invitesplashimage: ["GuildInvite", "inviteSplashImage"],
- invitesplashimageloaded: ["GuildInvite", "inviteSplashImageLoaded"],
- inviteresolving: ["GuildInvite", "resolving"],
- inviteresolvingbackground: ["GuildInvite", "resolvingBackground"],
- invitestatus: ["GuildInvite", "status"],
- invitestatuscounts: ["GuildInvite", "statusCounts"],
- invitestatusoffline: ["GuildInvite", "statusOffline"],
- invitestatusonline: ["GuildInvite", "statusOnline"],
- inviteuserselectnone: ["GuildInvite", "userSelectNone"],
- italics: ["TextStyle", "italics"],
- justifycenter: ["Flex", "justifyCenter"],
- justifyend: ["Flex", "justifyEnd"],
- justifystart: ["Flex", "justifyStart"],
- layermodal: ["LayerModal", "root"],
- layermodallarge: ["LayerModal", "large"],
- layermodalmedium: ["LayerModal", "medium"],
- layermodalsmall: ["LayerModal", "small"],
- layer: ["Layers", "layer"],
- layerbase: ["Layers", "baseLayer"],
- layers: ["Layers", "layers"],
- layersbg: ["Layers", "bg"],
- listavatar: ["UserProfile", "listAvatar"],
- listdiscriminator: ["UserProfile", "listDiscriminator"],
- listname: ["UserProfile", "listName"],
- listrow: ["UserProfile", "listRow"],
- listrowcontent: ["UserProfile", "listRowContent"],
- listscroller: ["UserProfile", "listScroller"],
- livetag: ["LiveTag", "live"],
- livetaggrey: ["LiveTag", "grey"],
- livetaglarge: ["LiveTag", "liveLarge"],
- livetagsmall: ["LiveTag", "liveSmall"],
- loadingicon: ["BDFDB", "loadingIcon"],
- loadingiconwrapper: ["BDFDB", "loadingIconWrapper"],
- loadingscreen: ["LoadingScreen", "container"],
- loginscreen: ["NotFound", "loginScreen"],
- marginbottom4: ["Margins", "marginBottom4"],
- marginbottom8: ["Margins", "marginBottom8"],
- marginbottom20: ["Margins", "marginBottom20"],
- marginbottom40: ["Margins", "marginBottom40"],
- marginbottom60: ["Margins", "marginBottom60"],
- margincenterhorz: ["Margins", "marginCenterHorz"],
- marginleft4: ["Autocomplete", "marginLeft4"],
- marginleft8: ["Autocomplete", "marginLeft8"],
- marginreset: ["Margins", "marginReset"],
- margintop4: ["Margins", "marginTop4"],
- margintop8: ["Margins", "marginTop8"],
- margintop20: ["Margins", "marginTop20"],
- margintop40: ["Margins", "marginTop40"],
- margintop60: ["Margins", "marginTop60"],
- member: ["Member", "member"],
- memberactivity: ["Member", "activity"],
- membericon: ["Member", "icon"],
- memberoffline: ["Member", "offline"],
- memberownericon: ["Member", "ownerIcon"],
- memberpremiumicon: ["Member", "premiumIcon"],
- members: ["MembersWrap", "members"],
- membersgroup: ["MembersWrap", "membersGroup"],
- memberswrap: ["MembersWrap", "membersWrap"],
- memberusername: ["Member", "roleColor"],
- mention: ["NotFound", "mention"],
- mentioninteractive: ["NotFound", "mentionInteractive"],
- mentionwrapper: ["NotFound", "mentionWrapper"],
- message: ["Message", "message"],
- messageaccessory: ["MessageAccessory", "container"],
- messageavatar: ["MessageBody", "avatar"],
- messageavatarclickable: ["MessageBody", "clickable"],
- messagebackgroundflash: ["Message", "backgroundFlash"],
- messagebarbase: ["MessageElements", "barBase"],
- messagebarbuttonalt: ["MessageElements", "barButtonAlt"],
- messagebarbuttonbase: ["MessageElements", "barButtonBase"],
- messagebarbuttonicon: ["MessageElements", "barButtonIcon"],
- messagebarbuttonmain: ["MessageElements", "barButtonMain"],
- messagebarhasmore: ["MessageElements", "hasMore"],
- messagebarjumptopresentbar: ["MessageElements", "jumpToPresentBar"],
- messagebarloadingmore: ["MessageElements", "loadingMore"],
- messagebarnewmessagesbar: ["MessageElements", "newMessagesBar"],
- messagebarspan: ["MessageElements", "span"],
- messagebarspinner: ["MessageElements", "spinner"],
- messagebarspinneritem: ["MessageElements", "spinnerItem"],
- messagebeforegroup: ["Message", "beforeGroup"],
- messageblockedaction: ["MessageBlocked", "blockedAction"],
- messageblockedcontainer: ["MessageBlocked", "container"],
- messageblockedexpanded: ["MessageBlocked", "expanded"],
- messageblockedicon: ["MessageBlocked", "blockedIcon"],
- messageblockedsystemmessage: ["MessageBlocked", "blockedSystemMessage"],
- messageblockedtext: ["MessageBlocked", "blockedMessageText"],
- messageblockquotecontainer: ["MessageMarkup", "blockquoteContainer"],
- messageblockquotedivider: ["MessageMarkup", "blockquoteDivider"],
- messagebottag: ["MessageBody", "botTag"],
- messagebottagcompact: ["MessageBody", "botTagCompact"],
- messagebottagcozy: ["MessageBody", "botTagCozy"],
- messagebuttoncontainer: ["MessageBody", "buttonContainer"],
- messagebuttons: ["Message", "buttons"],
- messagechanneltextarea: ["Message", "channelTextArea"],
- messagecompact: ["MessageBody", "compact"],
- messagecontents: ["MessageBody", "contents"],
- messagecozy: ["MessageBody", "cozy"],
- messagecozymessage: ["Message", "cozyMessage"],
- messagedisableinteraction: ["Message", "disableInteraction"],
- messagedivider: ["Message", "divider"],
- messagedividerhascontent: ["Message", "hasContent"],
- messageedited: ["MessageBody", "edited"],
- messagegroupstart: ["Message", "groupStart"],
- messagegroupblocked: ["MessageElements", "messageGroupBlocked"],
- messagegroupblockedbtn: ["MessageElements", "messageGroupBlockedBtn"],
- messagegroupblockedrevealed: ["MessageElements", "revealed"],
- messageheader: ["MessageBody", "header"],
- messagelocalbot: ["Message", "localBot"],
- messagelocalbotoperations: ["MessageLocalBot", "localBotMessage"],
- messagemarkup: ["MessageMarkup", "markup"],
- messagemarkupcompact: ["MessageBody", "compact"],
- messagemarkupcontent: ["MessageBody", "messageContent"],
- messagemarkupcozy: ["MessageBody", "cozy"],
- messagemarkupisfailed: ["MessageBody", "isFailed"],
- messagemarkupissending: ["MessageBody", "isSending"],
- messagemarkuprtl: ["MessageBody", "markupRtl"],
- messagementioned: ["Message", "mentioned"],
- messageoperations: ["MessageOperations", "operations"],
- messageselected: ["Message", "selected"],
- messages: ["MessagesWrap", "messages"],
- messagesdivider: ["MessagesWrap", "divider"],
- messagespopout: ["MessagesPopout", "messagesPopout"],
- messagespopoutactionbuttons: ["MessagesPopout", "actionButtons"],
- messagespopoutbody: ["MessagesPopout", "body"],
- messagespopoutbottom: ["MessagesPopout", "bottom"],
- messagespopoutbutton: ["MessagesPopoutButtons", "button"],
- messagespopoutbuttonsecondary: ["MessagesPopoutButtons", "secondary"],
- messagespopoutbuttontertiary: ["MessagesPopoutButtons", "tertiary"],
- messagespopoutchannelname: ["MessagesPopout", "channelName"],
- messagespopoutchannelseparator: ["MessagesPopout", "channelSeparator"],
- messagespopoutclosebutton: ["MessagesPopout", "closeIcon"],
- messagespopoutemptyplaceholder: ["MessagesPopout", "emptyPlaceholder"],
- messagespopoutfooter: ["MessagesPopout", "footer"],
- messagespopoutguildname: ["MessagesPopout", "guildName"],
- messagespopoutgroupcozy: ["MessagesPopout", "messageGroupCozy"],
- messagespopoutgroupwrapper: ["MessagesPopout", "messageGroupWrapper"],
- messagespopouthasmore: ["MessagesPopout", "hasMore"],
- messagespopouthasmorebutton: ["MessagesPopout", "hasMoreButton"],
- messagespopoutheader: ["MessagesPopout", "header"],
- messagespopoutimage: ["MessagesPopout", "image"],
- messagespopoutjumpbutton: ["MessagesPopout", "jumpButton"],
- messagespopoutloading: ["MessagesPopout", "loading"],
- messagespopoutloadingmore: ["MessagesPopout", "loadingMore"],
- messagespopoutloadingplaceholder: ["MessagesPopout", "loadingPlaceholder"],
- messagespopoutscroller: ["MessagesPopout", "scroller"],
- messagespopoutscrollingfooterwrap: ["MessagesPopout", "scrollingFooterWrap"],
- messagespopoutspinner: ["MessagesPopout", "spinner"],
- messagespopouttabbar: ["MessagesPopoutTabBar", "tabBar"],
- messagespopouttabbarheader: ["MessagesPopoutTabBar", "header"],
- messagespopouttabbartab: ["MessagesPopoutTabBar", "tab"],
- messagespopouttabbartabactive: ["MessagesPopoutTabBar", "active"],
- messagespopouttitle: ["MessagesPopout", "title"],
- messagespopoutvisible: ["MessagesPopout", "visible"],
- messagespopoutwrap: ["MessagesPopout", "messagesPopoutWrap"],
- messagesscroller: ["MessagesWrap", "scroller"],
- messagesscrollerinner: ["MessagesWrap", "scrollerInner"],
- messagesscrollerwrapper: ["MessagesWrap", "scrollerWrap"],
- messageswelcomemessage: ["MessagesWelcome", "welcomeMessage"],
- messageswelcomemessageheader: ["MessagesWelcome", "h1"],
- messageswrapper: ["MessagesWrap", "messagesWrapper"],
- messageswrapperplaceholder: ["MessagesWrap", "placeholder"],
- messagesystem: ["Message", "systemMessage"],
- messagesystemaccessories: ["MessageBody", "systemMessageAccessories"],
- messagesystemcontainer: ["MessageSystem", "container"],
- messagesystemcontent: ["MessageSystem", "content"],
- messagesystemicon: ["MessageSystem", "icon"],
- messagesystemiconcontainer: ["MessageSystem", "iconContainer"],
- messagesystemiconsize: ["MessageSystem", "iconSize"],
- messagetimedivider: ["MessageDivider", "divider"],
- messagetimedividercontent: ["MessageDivider", "content"],
- messagetimedividerhascontent: ["MessageDivider", "hasContent"],
- messagetimedividerisunread: ["MessageDivider", "isUnread"],
- messagetimedividerunreadpill: ["MessageDivider", "unreadPill"],
- messagetimedividerunreadpillcap: ["MessageDivider", "unreadPillCap"],
- messagetimedividerunreadpillcapstroke: ["MessageDivider", "unreadPillCapStroke"],
- messagetimestampasiancompact: ["MessageBody", "asianCompactTimeStamp"],
- messagetimestamp: ["MessageBody", "timestamp"],
- messagetimestampalt: ["MessageBody", "alt"],
- messagetimestamplatin12compact: ["MessageBody", "latin12CompactTimeStamp"],
- messagetimestamplatin24compact: ["MessageBody", "latin24CompactTimeStamp"],
- messagetimestampseparator: ["MessageBody", "separator"],
- messagetimestampsystem: ["MessageSystem", "timestamp"],
- messagetimestamptooltip: ["MessageBody", "timestampTooltip"],
- messagetimestampvisibleonhover: ["MessageBody", "timestampVisibleOnHover"],
- messagetoolbar: ["MessageToolbar", "container"],
- messagetoolbarbutton: ["MessageToolbarItems", "button"],
- messagetoolbarbuttondisabled: ["MessageToolbarItems", "disabled"],
- messagetoolbarbuttonselected: ["MessageToolbarItems", "selected"],
- messagetoolbaricon: ["MessageToolbar", "icon"],
- messagetoolbarinner: ["MessageToolbarItems", "wrapper"],
- messagetoolbarisheader: ["MessageToolbar", "isHeader"],
- messagetoolbarseparator: ["MessageToolbarItems", "separator"],
- messageuploadcancel: ["MessageFile", "cancelButton"],
- messageusername: ["MessageBody", "username"],
- messagewrapper: ["MessageBody", "wrapper"],
- messagezalgo: ["MessageBody", "zalgo"],
- modal: ["ModalWrap", "modal"],
- modalclose: ["Modal", "close"],
- modalchangelogmodal: ["BDFDB", "changeLogModal"],
- modalconfirmmodal: ["BDFDB", "confirmModal"],
- modalcontent: ["Modal", "content"],
- modalfooter: ["Modal", "footer"],
- modalguildname: ["ModalItems", "guildName"],
- modalheader: ["Modal", "header"],
- modalheaderhassibling: ["BDFDB", "modalHeaderHasSibling"],
- modalinner: ["ModalWrap", "inner"],
- modalmini: ["ModalMiniContent", "modal"],
- modalminicontent: ["ModalMiniContent", "content"],
- modalminitext: ["HeaderBarTopic", "content"],
- modalseparator: ["Modal", "separator"],
- modalsizelarge: ["Modal", "sizeLarge"],
- modalsizemedium: ["Modal", "sizeMedium"],
- modalsizesmall: ["Modal", "sizeSmall"],
- modalsub: ["Modal", "modal"],
- modalsubinner: ["Modal", "inner"],
- modalsubinnerscrollerless: ["BDFDB", "modalInnerScrollerLess"],
- modaltabcontent: ["BDFDB", "modalTabContent"],
- modaltabcontentopen: ["BDFDB", "modalTabContentOpen"],
- modalwrapper: ["BDFDB", "modalWrapper"],
- modedefault: ["FormText", "modeDefault"],
- modedisabled: ["FormText", "modeDisabled"],
- modeselectable: ["FormText", "modeSelectable"],
- namecontainer: ["NameContainer", "container"],
- namecontaineravatar: ["NameContainer", "avatar"],
- namecontainerchildren: ["NameContainer", "children"],
- namecontainerclickable: ["NameContainer", "clickable"],
- namecontainercontent: ["NameContainer", "content"],
- namecontainerlayout: ["NameContainer", "layout"],
- namecontainername: ["NameContainer", "name"],
- namecontainernamecontainer: ["NotFound", "nameContainerNameContainer"],
- namecontainernamewrapper: ["NameContainer", "nameAndDecorators"],
- namecontainerselected: ["NameContainer", "selected"],
- namecontainersubtext: ["NameContainer", "subText"],
- nametag: ["NameTag", "nameTag"],
- nitrostore: ["NitroStore", "applicationStore"],
- nochannel: ["ChatWindow", "noChannel"],
- notice: ["Notice", "notice"],
- noticebrand: ["Notice", "noticeBrand"],
- noticebutton: ["Notice", "button"],
- noticedanger: ["Notice", "noticeDanger"],
- noticedefault: ["Notice", "noticeDefault"],
- noticedownload: ["Notice", "noticeDownload"],
- noticedismiss: ["Notice", "dismiss"],
- noticefacebook: ["Notice", "noticeFacebook"],
- noticeicon: ["Notice", "icon"],
- noticeiconandroid: ["Notice", "iconAndroid"],
- noticeiconapple: ["Notice", "iconApple"],
- noticeiconwindows: ["Notice", "iconWindows"],
- noticeinfo: ["Notice", "noticeInfo"],
- noticenotification: ["Notice", "noticeNotification"],
- noticeplatformicon: ["Notice", "platformIcon"],
- noticepremium: ["Notice", "noticePremium"],
- noticepremiumaction: ["Notice", "premiumAction"],
- noticepremiumlogo: ["Notice", "premiumLogo"],
- noticepremiumtext: ["Notice", "premiumText"],
- noticepremiumtier1: ["Notice", "noticePremiumTier1"],
- noticepremiumtier2: ["Notice", "noticePremiumTier2"],
- noticerichpresence: ["Notice", "noticeRichPresence"],
- noticespotify: ["Notice", "noticeSpotify"],
- noticestreamer: ["Notice", "noticeStreamerMode"],
- noticesuccess: ["Notice", "noticeSuccess"],
- noticesurvey: ["Notice", "noticeSurvey"],
- noticewrapper: ["BDFDB", "noticeWrapper"],
- note: ["SettingsItems", "note"],
- nowrap: ["Flex", "noWrap"],
- overflowellipsis: ["BDFDB", "overflowEllipsis"],
- peoples: ["Peoples", "container"],
- peoplesbadge: ["Peoples", "badge"],
- peoplesnowplayingcolumn: ["Peoples", "nowPlayingColumn"],
- peoplespeoplecolumn: ["Peoples", "peopleColumn"],
- peoplestabbar: ["Peoples", "tabBar"],
- pictureinpicture: ["PictureInPicture", "pictureInPicture"],
- pictureinpicturewindow: ["PictureInPicture", "pictureInPictureWindow"],
- popout: ["Popout", "popout"],
- popoutarrowalignmentmiddle: ["Popout", "arrowAlignmentMiddle"],
- popoutarrowalignmenttop: ["Popout", "arrowAlignmentTop"],
- popoutbottom: ["Popout", "popoutBottom"],
- popoutbottomleft: ["Popout", "popoutBottomLeft"],
- popoutbottomright: ["Popout", "popoutBottomRight"],
- popoutinvert: ["Popout", "popoutInvert"],
- popoutleft: ["Popout", "popoutLeft"],
- popoutnoarrow: ["Popout", "noArrow"],
- popoutnoshadow: ["Popout", "noShadow"],
- popoutright: ["Popout", "popoutRight"],
- popouts: ["Popout", "popouts"],
- popoutthemedpopout: ["BDFDB", "themedPopout"],
- popouttop: ["Popout", "popoutTop"],
- popouttopleft: ["Popout", "popoutTopLeft"],
- popouttopright: ["Popout", "popoutTopRight"],
- popoutwrapper: ["BDFDB", "popoutWrapper"],
- quickmessage: ["QuickMessage", "quickMessage"],
- quickmessagepopout: ["UserPopout", "quickMessage"],
- quickselect: ["QuickSelect", "quickSelect"],
- quickselectarrow: ["QuickSelect", "quickSelectArrow"],
- quickselectclick: ["QuickSelect", "quickSelectClick"],
- quickselectlabel: ["QuickSelect", "quickSelectLabel"],
- quickselectpopout: ["QuickSelect", "quickSelectPopout"],
- quickselectpopoutoption: ["QuickSelect", "quickSelectPopoutOption"],
- quickselectpopoutoptionselected: ["NotFound", "quickSelectPopoutOptionSelected"],
- quickselectpopoutscroll: ["QuickSelect", "quickSelectPopoutScroll"],
- quickselectpopoutwrapper: ["BDFDB", "quickSelectPopoutWrapper"],
- quickselectscroller: ["QuickSelect", "quickSelectScroller"],
- quickselectselected: ["QuickSelect", "selected"],
- quickselectvalue: ["QuickSelect", "quickSelectValue"],
- quickselectwrapper: ["BDFDB", "quickSelectWrapper"],
- quickswitcher: ["QuickSwitchWrap", "quickswitcher"],
- quickswitchresult: ["QuickSwitch", "result"],
- quickswitchresultfocused: ["QuickSwitch", "resultFocused"],
- quickswitchresultguildicon: ["QuickSwitch", "guildIcon"],
- quickswitchresulticon: ["QuickSwitch", "icon"],
- quickswitchresulticoncontainer: ["QuickSwitch", "iconContainer"],
- quickswitchresultmatch: ["QuickSwitch", "match"],
- quickswitchresultmisccontainer: ["QuickSwitchWrap", "miscContainer"],
- quickswitchresultname: ["QuickSwitch", "name"],
- quickswitchresultnote: ["QuickSwitch", "note"],
- quickswitchresultusername: ["QuickSwitch", "username"],
- recentmentionsclosebutton: ["RecentMentions", "closeButton"],
- recentmentionsfilterpopout: ["RecentMentions", "recentMentionsFilterPopout"],
- recentmentionsheader: ["RecentMentions", "header"],
- recentmentionsjumpbutton: ["RecentMentions", "jumpButton"],
- recentmentionsmentionfilter: ["RecentMentions", "mentionFilter"],
- recentmentionsmentionfilterlabel: ["RecentMentions", "label"],
- recentmentionsmentionfiltervalue: ["RecentMentions", "value"],
- recentmentionspopout: ["RecentMentions", "recentMentionsPopout"],
- recentmentionstabbar: ["RecentMentions", "tabBar"],
- recentmentionstabbaritem: ["RecentMentions", "tabBarItem"],
- recentmentionstabbarwrapper: ["RecentMentions", "headerTabBarWrapper"],
- scrollbar: ["Scrollbar", "scrollbar"],
- scrollbardefault: ["Scrollbar", "scrollbarDefault"],
- scrollbarghost: ["Scrollbar", "scrollbarGhost"],
- scrollbarghosthairline: ["Scrollbar", "scrollbarGhostHairline"],
- scroller: ["Scroller", "scroller"],
- scrollerfade: ["Scroller", "scrollerFade"],
- scrollersystempad: ["Scroller", "systemPad"],
- scrollerthemed: ["Scroller", "scrollerThemed"],
- scrollerthemedwithtrack: ["Scroller", "themedWithTrack"],
- scrollerthemeghost: ["Scroller", "themeGhost"],
- scrollerthemeghosthairline: ["Scroller", "themeGhostHairline"],
- scrollerthemeghosthairlinechannels: ["Scroller", "themeGhostHairlineChannels"],
- scrollerwrap: ["Scroller", "scrollerWrap"],
- searchbar: ["SearchBar", "container"],
- searchbarclear: ["SearchBar", "clear"],
- searchbarclose: ["SearchBar", "close"],
- searchbaricon: ["SearchBar", "icon"],
- searchbariconlayout: ["SearchBar", "iconLayout"],
- searchbariconwrap: ["SearchBar", "iconContainer"],
- searchbarinner: ["SearchBar", "inner"],
- searchbarinput: ["SearchBar", "input"],
- searchbarlarge: ["SearchBar", "large"],
- searchbarmedium: ["SearchBar", "medium"],
- searchbarsmall: ["SearchBar", "small"],
- searchbartag: ["SearchBar", "tag"],
- searchbarvisible: ["SearchBar", "visible"],
- searchpopout: ["SearchPopoutWrap", "container"],
- searchpopoutanswer: ["SearchPopout", "answer"],
- searchpopoutdatepicker: ["SearchPopout", "datePicker"],
- searchpopoutdatepickerhint: ["SearchPopout", "datePickerHint"],
- searchpopoutdmaddpopout: ["DmAddPopout", "popout"],
- searchpopoutddmadddiscordtag: ["DmAddPopoutItems", "discordTag"],
- searchpopoutddmaddfriend: ["DmAddPopoutItems", "friend"],
- searchpopoutddmaddfriendwrapper: ["DmAddPopoutItems", "friendWrapper"],
- searchpopoutddmaddnickname: ["DmAddPopoutItems", "nickname"],
- searchpopoutdisplayavatar: ["SearchPopout", "displayAvatar"],
- searchpopoutdisplayusername: ["SearchPopout", "displayUsername"],
- searchpopoutdisplayednick: ["SearchPopout", "displayedNick"],
- searchpopoutfilter: ["SearchPopout", "filter"],
- searchpopoutheader: ["SearchPopout", "header"],
- searchpopouthint: ["SearchPopout", "hint"],
- searchpopouthintvalue: ["SearchPopout", "hintValue"],
- searchpopoutlinksource: ["SearchPopout", "linkSource"],
- searchpopoutnontext: ["SearchPopout", "nonText"],
- searchpopoutoption: ["SearchPopout", "option"],
- searchpopoutplusicon: ["SearchPopout", "plusIcon"],
- searchpopoutresultchannel: ["SearchPopout", "resultChannel"],
- searchpopoutresultsgroup: ["SearchPopout", "resultsGroup"],
- searchpopoutsearchclearhistory: ["SearchPopout", "searchClearHistory"],
- searchpopoutsearchlearnmore: ["SearchPopout", "searchLearnMore"],
- searchpopoutsearchoption: ["SearchPopout", "searchOption"],
- searchpopoutsearchresultchannelcategory: ["SearchPopout", "searchResultChannelCategory"],
- searchpopoutsearchresultchannelicon: ["SearchPopout", "searchResultChannelIcon"],
- searchpopoutsearchresultchanneliconbackground: ["SearchPopout", "searchResultChannelIconBackground"],
- searchpopoutselected: ["SearchPopout", "selected"],
- searchpopoutuser: ["SearchPopout", "user"],
- searchresultsafter: ["SearchResults", "after"],
- searchresultsalt: ["SearchResults", "alt"],
- searchresultsbefore: ["SearchResults", "before"],
- searchresultschannelname: ["SearchResults", "channelName"],
- searchresultschannelSeparator: ["SearchResults", "channelSeparator"],
- searchresultsexpanded: ["SearchResults", "expanded"],
- searchresultsgroupcozy: ["SearchResults", "messageGroupCozy"],
- searchresultshit: ["SearchResults", "hit"],
- searchresultspagination: ["SearchResults", "pagination"],
- searchresultspaginationbutton: ["SearchResults", "paginationButton"],
- searchresultspaginationdisabled: ["SearchResults", "disabled"],
- searchresultspaginationicon: ["SearchResults", "icon"],
- searchresultssearchheader: ["SearchResults", "searchHeader"],
- searchresultswrap: ["SearchResults", "searchResultsWrap"],
- select: ["Select", "select"],
- selectwrapper: ["BDFDB", "selectWrapper"],
- settingsclosebutton: ["SettingsCloseButton", "closeButton"],
- settingsclosebuttoncontainer: ["SettingsCloseButton", "container"],
- settingsguild: ["BDFDB", "settingsGuild"],
- settingsguilddisabled: ["BDFDB", "settingsGuildDisabled"],
- settingsheader: ["Item", "header"],
- settingsitem: ["Item", "item"],
- settingsitemdragged: ["ItemRole", "dragged"],
- settingsitemdlock: ["ItemRole", "lock"],
- settingsitemrole: ["ItemRole", "role"],
- settingsitemroleinner: ["ItemRole", "roleInner"],
- settingsitemselected: ["Item", "selected"],
- settingsitemthemed: ["Item", "themed"],
- settingsPanel: ["BDFDB", "settingsPanel"],
- settingspanelinner: ["BDFDB", "settingsPanelInner"],
- settingspanellist: ["BDFDB", "settingsPanelList"],
- settingspaneltitle: ["BDFDB", "settingsPanelTitle"],
- settingsseparator: ["Item", "separator"],
- settingstableheader: ["SettingsTable", "header"],
- settingstableheadername: ["SettingsTable", "headerName"],
- settingstableheaderoption: ["SettingsTable", "headerOption"],
- settingstableheaders: ["BDFDB", "settingsTableHeaders"],
- settingstableheadervertical: ["BDFDB", "settingsTableHeaderVertical"],
- settingstablecard: ["BDFDB", "settingsTableCard"],
- settingstablecardconfigs: ["BDFDB", "settingsTableCardConfigs"],
- settingstablecardlabel: ["BDFDB", "settingsTableCardLabel"],
- settingstablelist: ["BDFDB", "settingsTableList"],
- sidebarregion: ["SettingsWindow", "sidebarRegion"],
- size10: ["TextSize", "size10"],
- size12: ["TextSize", "size12"],
- size14: ["TextSize", "size14"],
- size16: ["TextSize", "size16"],
- size20: ["TextSize", "size20"],
- size24: ["TextSize", "size24"],
- size32: ["TextSize", "size32"],
- slider: ["Slider", "slider"],
- sliderbar: ["Slider", "bar"],
- sliderbarfill: ["Slider", "barFill"],
- sliderbubble: ["Slider", "bubble"],
- sliderdisabled: ["Slider", "disabled"],
- slidergrabber: ["Slider", "grabber"],
- sliderinput: ["Slider", "input"],
- slidermark: ["Slider", "mark"],
- slidermarkdash: ["Slider", "markDash"],
- slidermarkdashsimple: ["Slider", "markDashSimple"],
- slidermarkvalue: ["Slider", "markValue"],
- slidermini: ["Slider", "mini"],
- slidertrack: ["Slider", "track"],
- spoilercontainer: ["Spoiler", "spoilerContainer"],
- spoilerembed: ["SpoilerEmbed", "spoiler"],
- spoilerembedhidden: ["SpoilerEmbed", "hiddenSpoilers"],
- spoilerembedinline: ["SpoilerEmbed", "inline"],
- spoilerhidden: ["Spoiler", "hidden"],
- spoilertext: ["Spoiler", "spoilerText"],
- spoilerwarning: ["Spoiler", "spoilerWarning"],
- splashbackground: ["NotFound", "splashBackground"],
- standardsidebarview: ["SettingsWindow", "standardSidebarView"],
- strikethrough: ["TextStyle", "strikeThrough"],
- status: ["Avatar", "status"],
- stopanimations: ["NotFound", "stopAnimations"],
- subtext: ["NotFound", "subtext"],
- svgicon: ["BDFDB", "svgIcon"],
- switch: ["Switch", "switch"],
- switchdisabled: ["Switch", "switchDisabled"],
- switchenabled: ["Switch", "switchEnabled"],
- switchinner: ["Switch", "checkbox"],
- switchinnerdisabled: ["Switch", "checkboxDisabled"],
- switchinnerenabled: ["Switch", "checkboxEnabled"],
- switchsize: ["Switch", "size"],
- switchsizedefault: ["Switch", "sizeDefault"],
- switchsizemini: ["Switch", "sizeMini"],
- switchthemeclear: ["Switch", "themeClear"],
- switchthemedefault: ["Switch", "themeDefault"],
- switchvalue: ["Switch", "value"],
- switchvaluechecked: ["Switch", "valueChecked"],
- switchvalueunchecked: ["Switch", "valueUnchecked"],
- systempad: ["Scroller", "systemPad"],
- tabbar: ["UserProfile", "tabBar"],
- tabbarcontainer: ["UserProfile", "tabBarContainer"],
- tabbaritem: ["UserProfile", "tabBarItem"],
- tabbartop: ["Item", "top"],
- table: ["BDFDB", "table"],
- tablebodycell: ["BDFDB", "tableBodyCell"],
- tableheader: ["BDFDB", "tableHeader"],
- tableheadercell: ["BDFDB", "tableHeaderCellSorted"],
- tableheadercellsorted: ["BDFDB", "tableHeaderCell"],
- tableheadersorticon: ["BDFDB", "tableHeaderSortIcon"],
- tablerow: ["BDFDB", "tableRow"],
- tablestickyheader: ["BDFDB", "tableStickyHeader"],
- textarea: ["ChannelTextArea", "textArea"],
- textareaattachbutton: ["ChannelTextAreaAttachButton", "attachButton"],
- textareaattachbuttoninner: ["ChannelTextAreaAttachButton", "attachButtonInner"],
- textareaattachbuttonplus: ["ChannelTextAreaAttachButton", "attachButtonPlus"],
- textareaattachwrapper: ["ChannelTextAreaAttachButton", "attachWrapper"],
- textareabutton: ["ChannelTextAreaButton", "button"],
- textareabuttonactive: ["ChannelTextAreaButton", "active"],
- textareabuttonpulse: ["ChannelTextAreaButton", "pulseButton"],
- textareabuttonwrapper: ["ChannelTextAreaButton", "buttonWrapper"],
- textareacharcounter: ["ChannelTextAreaCharCounter", "characterCount"],
- textareacharcountererror: ["ChannelTextAreaCharCounter", "error"],
- textareadisabled: ["ChannelTextArea", "textAreaDisabled"],
- textareafontsize12padding: ["ChannelTextArea", "fontSize12Padding"],
- textareafontsize14padding: ["ChannelTextArea", "fontSize14Padding"],
- textareafontsize15padding: ["ChannelTextArea", "fontSize15Padding"],
- textareafontsize16padding: ["ChannelTextArea", "fontSize16Padding"],
- textareafontsize18padding: ["ChannelTextArea", "fontSize18Padding"],
- textareafontsize20padding: ["ChannelTextArea", "fontSize20Padding"],
- textareafontsize24padding: ["ChannelTextArea", "fontSize24Padding"],
- textareahasautocomplete: ["ChannelTextArea", "hasAutocomplete"],
- textareaicon: ["ChannelTextAreaButton", "icon"],
- textareaiconpulse: ["ChannelTextAreaButton", "pulseIcon"],
- textareainner: ["ChannelTextArea", "inner"],
- textareainnerdisabled: ["ChannelTextArea", "innerDisabled"],
- textareapickerbutton: ["ChannelTextArea", "button"],
- textareapickerbuttoncontainer: ["ChannelTextArea", "buttonContainer"],
- textareapickerbuttons: ["ChannelTextArea", "buttons"],
- textareascrollablecontainer: ["ChannelTextArea", "scrollableContainer"],
- textareaslate: ["ChannelTextArea", "textAreaSlate"],
- textareaslatemarkup: ["ChannelTextAreaSlate", "slateTextArea"],
- textareaslatecontainer: ["ChannelTextAreaSlate", "slateContainer"],
- textareaslateplaceholder: ["ChannelTextAreaSlate", "placeholder"],
- textareauploadinput: ["ChannelTextAreaAttachButton", "uploadInput"],
- textareawebkit: ["ChannelTextArea", "webkit"],
- textareawrapall: ["ChannelTextArea", "channelTextArea"],
- textareawrapchat: ["ChatWindow", "channelTextArea"],
- textareawrapdisabled: ["ChannelTextArea", "channelTextAreaDisabled"],
- textlink: ["Notice", "textLink"],
- textrow: ["PopoutActivity", "textRow"],
- textscroller: ["BDFDB", "textScroller"],
- themedark: ["NotFound", "themeDark"],
- themeghosthairline: ["Scroller", "themeGhostHairline"],
- themelight: ["NotFound", "themeLight"],
- themeundefined: ["NotFound", "themeUndefined"],
- tip: ["Tip", "tip"],
- tipblock: ["Tip", "block"],
- tippro: ["Tip", "pro"],
- tipinline: ["Tip", "inline"],
- title: ["SettingsItems", "title"],
- titlebar: ["TitleBar", "titleBar"],
- titlebarmac: ["TitleBar", "typeMacOS"],
- titlebarmacbutton: ["TitleBar", "macButton"],
- titlebarmacbuttonclose: ["TitleBar", "macButtonClose"],
- titlebarmacbuttonmin: ["TitleBar", "macButtonMinimize"],
- titlebarmacbuttonmax: ["TitleBar", "macButtonMaximize"],
- titlebarmacbuttons: ["TitleBar", "macButtons"],
- titlebarmacwithframe: ["TitleBar", "typeMacOSWithFrame"],
- titlebarwinbutton: ["TitleBar", "winButton"],
- titlebarwinbuttonclose: ["TitleBar", "winButtonClose"],
- titlebarwinbuttonminmax: ["TitleBar", "winButtonMinMax"],
- titlebarwindows: ["TitleBar", "typeWindows"],
- titlebarwithframe: ["TitleBar", "withFrame"],
- titlebarwordmark: ["TitleBar", "wordmark"],
- titlebarwordmarkmac: ["TitleBar", "wordmarkMacOS"],
- titlebarwordmarkwindows: ["TitleBar", "wordmarkWindows"],
- titledefault: ["SettingsItems", "titleDefault"],
- titlemini: ["SettingsItems", "titleMini"],
- titlesize10: ["UserPopout", "size10"],
- titlesize12: ["UserPopout", "size12"],
- titlesize14: ["UserPopout", "size14"],
- titlesize16: ["UserPopout", "size16"],
- titlesize18: ["Title", "size18"],
- tooltip: ["Tooltip", "tooltip"],
- tooltipactivityicon: ["TooltipGuild", "activityIcon"],
- tooltipblack: ["Tooltip", "tooltipBlack"],
- tooltipbottom: ["Tooltip", "tooltipBottom"],
- tooltipbrand: ["Tooltip", "tooltipBrand"],
- tooltipcustom: ["BDFDB", "tooltipCustom"],
- tooltipgreen: ["Tooltip", "tooltipGreen"],
- tooltipgrey: ["Tooltip", "tooltipGrey"],
- tooltipguildnametext: ["TooltipGuild", "guildNameText"],
- tooltipguildnametextlimitedsize: ["TooltipGuild", "guildNameTextLimitedSize"],
- tooltipleft: ["Tooltip", "tooltipLeft"],
- tooltiplistitem: ["GuildsItems", "listItemTooltip"],
- tooltippointer: ["Tooltip", "tooltipPointer"],
- tooltipred: ["Tooltip", "tooltipRed"],
- tooltipright: ["Tooltip", "tooltipRight"],
- tooltiprow: ["TooltipGuild", "row"],
- tooltiprowguildname: ["TooltipGuild", "rowGuildName"],
- tooltiprowicon: ["TooltipGuild", "rowIcon"],
- tooltiptop: ["Tooltip", "tooltipTop"],
- tooltipyellow: ["Tooltip", "tooltipYellow"],
- typing: ["Typing", "typing"],
- typingcooldownwrapper: ["Typing", "cooldownWrapper"],
- typingtext: ["Typing", "text"],
- underline: ["TextStyle", "underline"],
- unreadbar: ["UnreadBar", "bar"],
- unreadbaractive: ["UnreadBar", "active"],
- unreadbarcontainer: ["UnreadBar", "container"],
- unreadbaricon: ["UnreadBar", "icon"],
- unreadbarmention: ["UnreadBar", "mention"],
- unreadbartext: ["UnreadBar", "text"],
- unreadbarunread: ["UnreadBar", "unread"],
- uploadmodal: ["UploadModal", "uploadModal"],
- userinfo: ["UserInfo", "userInfo"],
- userinfoavatar: ["UserInfo", "avatar"],
- userinfodiscordtag: ["UserInfo", "discordTag"],
- userinfodiscriminator: ["UserInfo", "discriminator"],
- userinfohovered: ["UserInfo", "hovered"],
- userinfosubtext: ["UserInfo", "subtext"],
- userinfotext: ["UserInfo", "text"],
- userinfousername: ["UserInfo", "username"],
- userpopout: ["UserPopout", "userPopout"],
- userpopoutavatarhint: ["UserPopout", "avatarHint"],
- userpopoutavatarhintinner: ["UserPopout", "avatarHintInner"],
- userpopoutavatarwrapper: ["UserPopout", "avatarWrapper"],
- userpopoutavatarwrappernormal: ["UserPopout", "avatarWrapperNormal"],
- userpopoutbody: ["UserPopout", "body"],
- userpopoutbodyinner: ["UserPopout", "bodyInner"],
- userpopoutbodytitle: ["UserPopout", "bodyTitle"],
- userpopoutcustomstatus: ["UserPopout", "customStatus"],
- userpopoutcustomstatusemoji: ["UserPopout", "customStatusEmoji"],
- userpopoutcustomstatussoloemoji: ["UserPopout", "customStatusSoloEmoji"],
- userpopoutcustomstatustext: ["UserPopout", "customStatusText"],
- userpopoutendbodysection: ["UserPopout", "endBodySection"],
- userpopoutfooter: ["UserPopout", "footer"],
- userpopoutheader: ["UserPopout", "header"],
- userpopoutheaderbottagwithnickname: ["UserPopout", "headerBotTagWithNickname"],
- userpopoutheadernamewrapper: ["UserPopout", "headerNameWrapper"],
- userpopoutheadernickname: ["UserPopout", "headerName"],
- userpopoutheadernormal: ["UserPopout", "headerNormal"],
- userpopoutheaderplaying: ["UserPopout", "headerPlaying"],
- userpopoutheaderspotify: ["UserPopout", "headerSpotify"],
- userpopoutheaderstreaming: ["UserPopout", "headerStreaming"],
- userpopoutheadertag: ["UserPopout", "headerTag"],
- userpopoutheadertagnonickname: ["UserPopout", "headerTagNoNickname"],
- userpopoutheadertagusernamenonickname: ["UserPopout", "headerTagUsernameNoNickname"],
- userpopoutheadertagwithnickname: ["UserPopout", "headerTagWithNickname"],
- userpopoutheadertext: ["UserPopout", "headerText"],
- userpopoutheadertop: ["UserPopout", "headerTop"],
- userpopoutprotip: ["UserPopout", "protip"],
- userpopoutrole: ["Role", "role"],
- userpopoutrolecircle: ["Role", "roleCircle"],
- userpopoutrolelist: ["UserPopout", "rolesList"],
- userpopoutrolename: ["Role", "roleName"],
- userpopoutroles: ["Role", "root"],
- userprofile: ["UserProfile", "root"],
- userprofilebody: ["UserProfile", "body"],
- userprofilebottag: ["UserProfile", "botTag"],
- userprofilecustomstatus: ["UserProfile", "customStatusText"],
- userprofilecustomstatusemoji: ["UserProfile", "customStatusEmoji"],
- userprofileheader: ["UserProfile", "header"],
- userprofileheaderfill: ["UserProfile", "headerFill"],
- userprofileheaderinfo: ["UserProfile", "headerInfo"],
- userprofilelistavatar: ["UserProfile", "listAvatar"],
- userprofilelistguildavatarwithouticon: ["UserProfile", "guildAvatarWithoutIcon"],
- userprofilenametag: ["UserProfile", "nameTag"],
- userprofiletopsectionnormal: ["UserProfile", "topSectionNormal"],
- userprofiletopsectionplaying: ["UserProfile", "topSectionPlaying"],
- userprofiletopsectionspotify: ["UserProfile", "topSectionSpotify"],
- userprofiletopsectionstreaming: ["UserProfile", "topSectionStreaming"],
- userprofiletopsectionxbox: ["UserProfile", "topSectionXbox"],
- userprofileusername: ["UserProfile", "username"],
- username: ["NameTag", "username"],
- usernote: ["Note", "note"],
- usernotepopout: ["UserPopout", "note"],
- usernoteprofile: ["UserProfile", "note"],
- vertical: ["Flex", "vertical"],
- voiceavatar: ["VoiceChannel", "avatar"],
- voiceavatarcontainer: ["VoiceChannel", "avatarContainer"],
- voiceavatarlarge: ["VoiceChannel", "avatarLarge"],
- voiceavatarsmall: ["VoiceChannel", "avatarSmall"],
- voiceavatarspeaking: ["VoiceChannel", "avatarSpeaking"],
- voiceclickable: ["VoiceChannel", "clickable"],
- voicecontent: ["VoiceChannel", "content"],
- voicedetails: ["VoiceDetails", "container"],
- voicedetailschannel: ["VoiceDetails", "channel"],
- voicedetailscustomstatuscontainer: ["VoiceDetails", "customStatusContainer"],
- voicedetailshotspot: ["VoiceDetails", "hotspot"],
- voicedetailsinactive: ["VoiceDetailsPing", "inactive"],
- voicedetailsinner: ["VoiceDetails", "inner"],
- voicedetailslabelwrapper: ["VoiceDetailsPing", "labelWrapper"],
- voicedetailsping: ["VoiceDetailsPing", "ping"],
- voicedetailspingforeground: ["VoiceDetailsPing", "pingForeground"],
- voicedetailsqualityaverage: ["VoiceDetailsPing", "rtcConnectionQualityAverage"],
- voicedetailsqualitybad: ["VoiceDetailsPing", "rtcConnectionQualityBad"],
- voicedetailsqualityfine: ["VoiceDetailsPing", "rtcConnectionQualityFine"],
- voicedetailsstatus: ["VoiceDetailsPing", "rtcConnectionStatus"],
- voicedetailsstatusconnected: ["VoiceDetailsPing", "rtcConnectionStatusConnected"],
- voicedetailsstatusconnecting: ["VoiceDetailsPing", "rtcConnectionStatusConnecting"],
- voicedetailsstatuserror: ["VoiceDetailsPing", "rtcConnectionStatusError"],
- voicedetailsstatuswithpopout: ["VoiceDetails", "statusWithPopout"],
- voicedraggable: ["NotFound", "voiceDraggable"],
- voiceflipped: ["VoiceChannel", "flipped"],
- voiceicon: ["VoiceChannel", "icon"],
- voiceicons: ["VoiceChannel", "icons"],
- voiceiconspacing: ["VoiceChannel", "iconSpacing"],
- voicelist: ["VoiceChannel", "list"],
- voicelist2: ["VoiceChannelList", "list"],
- voicelistcollapsed: ["VoiceChannel", "listCollapse"],
- voicelistcollapsed2: ["VoiceChannelList", "collapsed"],
- voicelistdefault: ["VoiceChannel", "listDefault"],
- voiceliveicon: ["VoiceChannel", "liveIcon"],
- voicename: ["VoiceChannel", "username"],
- voicenamefont: ["VoiceChannel", "usernameFont"],
- voicenamespeaking: ["VoiceChannel", "usernameSpeaking"],
- voiceselected: ["VoiceChannel", "selected"],
- voiceuser: ["VoiceChannel", "voiceUser"],
- voiceuserlarge: ["VoiceChannel", "userLarge"],
- voiceusersmall: ["VoiceChannel", "userSmall"],
- wrap: ["Flex", "wrap"],
- wrapreverse: ["Flex", "wrapReverse"]
- };
- BDFDB.DiscordClasses = Object.assign({}, DiscordClasses);
-
- InternalBDFDB.getDiscordClass = (item, selector) => {
- let className = DiscordClassModules.BDFDB.BDFDBundefined;
- if (DiscordClasses[item] === undefined) {
- BDFDB.LogUtils.warn(item + " not found in DiscordClasses");
- return className;
- }
- else if (!BDFDB.ArrayUtils.is(DiscordClasses[item]) || DiscordClasses[item].length != 2) {
- BDFDB.LogUtils.warn(item + " is not an Array of Length 2 in DiscordClasses");
- return className;
- }
- else if (DiscordClassModules[DiscordClasses[item][0]] === undefined) {
- BDFDB.LogUtils.warn(DiscordClasses[item][0] + " not found in DiscordClassModules");
- return className;
- }
- else if (DiscordClassModules[DiscordClasses[item][0]][DiscordClasses[item][1]] === undefined) {
- BDFDB.LogUtils.warn(DiscordClasses[item][1] + " not found in " + DiscordClasses[item][0] + " in DiscordClassModules");
- return className;
- }
- else {
- className = DiscordClassModules[DiscordClasses[item][0]][DiscordClasses[item][1]];
- if (selector) {
- className = className.split(" ").filter(n => n.indexOf("da-") != 0).join(selector ? "." : " ");
- className = className || DiscordClassModules.BDFDB.BDFDBundefined;
- }
- return className;
- }
- };
- BDFDB.disCN = new Proxy(DiscordClasses, {
- get: function (list, item) {
- return InternalBDFDB.getDiscordClass(item, false).replace("#", "");
- }
- });
- BDFDB.disCNS = new Proxy(DiscordClasses, {
- get: function (list, item) {
- return InternalBDFDB.getDiscordClass(item, false).replace("#", "") + " ";
- }
- });
- BDFDB.disCNC = new Proxy(DiscordClasses, {
- get: function (list, item) {
- return InternalBDFDB.getDiscordClass(item, false).replace("#", "") + ",";
- }
- });
- BDFDB.dotCN = new Proxy(DiscordClasses, {
- get: function (list, item) {
- let className = InternalBDFDB.getDiscordClass(item, true);
- return (className.indexOf("#") == 0 ? "" : ".") + className;
- }
- });
- BDFDB.dotCNS = new Proxy(DiscordClasses, {
- get: function (list, item) {
- let className = InternalBDFDB.getDiscordClass(item, true);
- return (className.indexOf("#") == 0 ? "" : ".") + className + " ";
- }
- });
- BDFDB.dotCNC = new Proxy(DiscordClasses, {
- get: function (list, item) {
- let className = InternalBDFDB.getDiscordClass(item, true);
- return (className.indexOf("#") == 0 ? "" : ".") + className + ",";
- }
- });
- BDFDB.notCN = new Proxy(DiscordClasses, {
- get: function (list, item) {
- return `:not(.${InternalBDFDB.getDiscordClass(item, true).split(".")[0]})`;
- }
- });
- BDFDB.notCNS = new Proxy(DiscordClasses, {
- get: function (list, item) {
- return `:not(.${InternalBDFDB.getDiscordClass(item, true).split(".")[0]}) `;
- }
- });
- BDFDB.notCNC = new Proxy(DiscordClasses, {
- get: function (list, item) {
- return `:not(.${InternalBDFDB.getDiscordClass(item, true).split(".")[0]}),`;
- }
- });
-
- var LanguageStrings = LibraryModules.LanguageStore && LibraryModules.LanguageStore._proxyContext ? Object.assign({}, LibraryModules.LanguageStore._proxyContext.defaultMessages) : {};
- BDFDB.LanguageUtils = {};
- BDFDB.LanguageUtils.languages = {
- "$discord": {name:"Discord (English))", id:"en", ownlang:"English", integrated:false, dic:false},
- "af": {name:"Afrikaans", id:"af", ownlang:"Afrikaans", integrated:false, dic:true},
- "sq": {name:"Albanian", id:"sq", ownlang:"Shqiptar", integrated:false, dic:false},
- "am": {name:"Amharic", id:"am", ownlang:"አማርኛ", integrated:false, dic:false},
- "ar": {name:"Arabic", id:"ar", ownlang:"اللغة العربية", integrated:false, dic:false},
- "hy": {name:"Armenian", id:"hy", ownlang:"Հայերեն", integrated:false, dic:false},
- "az": {name:"Azerbaijani", id:"az", ownlang:"آذربایجان دیلی", integrated:false, dic:false},
- "ba": {name:"Bashkir", id:"ba", ownlang:"Башҡорт", integrated:false, dic:false},
- "eu": {name:"Basque", id:"eu", ownlang:"Euskara", integrated:false, dic:false},
- "be": {name:"Belarusian", id:"be", ownlang:"Беларуская", integrated:false, dic:false},
- "bn": {name:"Bengali", id:"bn", ownlang:"বাংলা", integrated:false, dic:false},
- "bs": {name:"Bosnian", id:"bs", ownlang:"Босански", integrated:false, dic:false},
- "bg": {name:"Bulgarian", id:"bg", ownlang:"български", integrated:true, dic:false},
- "my": {name:"Burmese", id:"my", ownlang:"မြန်မာစာ", integrated:false, dic:false},
- "ca": {name:"Catalan", id:"ca", ownlang:"Català", integrated:false, dic:false},
- "ceb": {name:"Cebuano", id:"ceb", ownlang:"Bisaya", integrated:false, dic:false},
- "ny": {name:"Chichewa", id:"ny", ownlang:"Nyanja", integrated:false, dic:false},
- "zh": {name:"Chinese", id:"zh", ownlang:"中文", integrated:false, dic:false},
- "zh-HK": {name:"Chinese (Hong Kong)", id:"zh-HK", ownlang:"香港中文", integrated:false, dic:false},
- "zh-CN": {name:"Chinese (Simplified)", id:"zh-CN", ownlang:"简体中文", integrated:false, dic:false},
- "zh-TW": {name:"Chinese (Traditional)", id:"zh-TW", ownlang:"繁體中文", integrated:true, dic:false},
- "co": {name:"Corsican", id:"co", ownlang:"Corsu", integrated:false, dic:false},
- "hr": {name:"Croatian", id:"hr", ownlang:"Hrvatski", integrated:true, dic:false},
- "cs": {name:"Czech", id:"cs", ownlang:"Čeština", integrated:true, dic:false},
- "da": {name:"Danish", id:"da", ownlang:"Dansk", integrated:true, dic:true},
- "nl": {name:"Dutch", id:"nl", ownlang:"Nederlands", integrated:true, dic:true},
- "en": {name:"English", id:"en", ownlang:"English", integrated:false, dic:true},
- "en-GB": {name:"English (UK)", id:"en-GB", ownlang:"English (UK)", integrated:true, dic:true},
- "en-US": {name:"English (US)", id:"en-US", ownlang:"English (US)", integrated:true, dic:true},
- "eo": {name:"Esperanto", id:"eo", ownlang:"Esperanto", integrated:false, dic:false},
- "et": {name:"Estonian", id:"et", ownlang:"Eesti", integrated:false, dic:false},
- "fil": {name:"Filipino", id:"fil", ownlang:"Wikang Filipino", integrated:false, dic:false},
- "fi": {name:"Finnish", id:"fi", ownlang:"Suomi", integrated:true, dic:false},
- "fr": {name:"French", id:"fr", ownlang:"Français", integrated:true, dic:true},
- "fr-CA": {name:"French (Canadian)", id:"fr-CA", ownlang:"Français Canadien", integrated:false, dic:false},
- "fy": {name:"Frisian", id:"fy", ownlang:"Frysk", integrated:false, dic:false},
- "gl": {name:"Galician", id:"gl", ownlang:"Galego", integrated:false, dic:false},
- "ka": {name:"Georgian", id:"ka", ownlang:"ქართული", integrated:false, dic:false},
- "de": {name:"German", id:"de", ownlang:"Deutsch", integrated:true, dic:true},
- "de-AT": {name:"German (Austria)", id:"de-AT", ownlang:"Österreichisch Deutsch", integrated:false, dic:false},
- "de-CH": {name:"German (Switzerland)", id:"de-CH", ownlang:"Schweizerdeutsch", integrated:false, dic:false},
- "el": {name:"Greek", id:"el", ownlang:"Ελληνικά", integrated:false, dic:false},
- "gu": {name:"Gujarati", id:"gu", ownlang:"ગુજરાતી", integrated:false, dic:false},
- "ht": {name:"Haitian Creole", id:"ht", ownlang:"Kreyòl Ayisyen", integrated:false, dic:false},
- "ha": {name:"Hausa", id:"ha", ownlang:"حَوْسَ", integrated:false, dic:false},
- "haw": {name:"Hawaiian", id:"haw", ownlang:"ʻŌlelo Hawaiʻi", integrated:false, dic:false},
- "he": {name:"Hebrew", id:"he", ownlang:"עברית", integrated:false, dic:false},
- "iw": {name:"Hebrew (Israel)", id:"iw", ownlang:"עברית", integrated:false, dic:false},
- "hi": {name:"Hindi", id:"hi", ownlang:"हिन्दी", integrated:false, dic:false},
- "hmn": {name:"Hmong", id:"hmn", ownlang:"lol Hmongb", integrated:false, dic:false},
- "hu": {name:"Hungarian", id:"hu", ownlang:"Magyar", integrated:false, dic:false},
- "is": {name:"Icelandic", id:"is", ownlang:"Íslenska", integrated:false, dic:false},
- "ig": {name:"Igbo", id:"ig", ownlang:"Asụsụ Igbo", integrated:false, dic:false},
- "id": {name:"Indonesian", id:"id", ownlang:"Bahasa Indonesia", integrated:false, dic:false},
- "ga": {name:"Irish", id:"ga", ownlang:"Gaeilge", integrated:false, dic:false},
- "it": {name:"Italian", id:"it", ownlang:"Italiano", integrated:true, dic:true},
- "ja": {name:"Japanese", id:"ja", ownlang:"日本語", integrated:true, dic:false},
- "jv": {name:"Javanese", id:"jv", ownlang:"ꦧꦱꦗꦮ", integrated:false, dic:false},
- "jw": {name:"Javanese (Javanese)", id:"jw", ownlang:"ꦧꦱꦗꦮ", integrated:false, dic:false},
- "kn": {name:"Kannada", id:"kn", ownlang:"ಕನ್ನಡ", integrated:false, dic:false},
- "kk": {name:"Kazakh", id:"kk", ownlang:"Қазақ Tілі", integrated:false, dic:false},
- "km": {name:"Khmer", id:"km", ownlang:"ភាសាខ្មែរ", integrated:false, dic:false},
- "rw": {name:"Kinyarwanda", id:"rw", ownlang:"Ikinyarwanda", integrated:false, dic:false},
- "ko": {name:"Korean", id:"ko", ownlang:"한국어", integrated:true, dic:false},
- "ku": {name:"Kurdish", id:"ku", ownlang:"کوردی", integrated:false, dic:false},
- "ky": {name:"Kyrgyz", id:"ky", ownlang:"кыргызча", integrated:false, dic:false},
- "lo": {name:"Lao", id:"lo", ownlang:"ພາສາລາວ", integrated:false, dic:false},
- "la": {name:"Latin", id:"la", ownlang:"Latina", integrated:false, dic:false},
- "lv": {name:"Latvian", id:"lv", ownlang:"Latviešu", integrated:false, dic:false},
- "lt": {name:"Lithuanian", id:"lt", ownlang:"Lietuvių", integrated:false, dic:false},
- "lb": {name:"Luxembourgish", id:"lb", ownlang:"Lëtzebuergesch", integrated:false, dic:false},
- "mk": {name:"Macedonian", id:"mk", ownlang:"Mакедонски", integrated:false, dic:false},
- "mg": {name:"Malagasy", id:"mg", ownlang:"Malagasy", integrated:false, dic:false},
- "ms": {name:"Malay", id:"ms", ownlang:"بهاس ملايو", integrated:false, dic:false},
- "ml": {name:"Malayalam", id:"ml", ownlang:"മലയാളം", integrated:false, dic:false},
- "mt": {name:"Maltese", id:"mt", ownlang:"Malti", integrated:false, dic:false},
- "mi": {name:"Maori", id:"mi", ownlang:"te Reo Māori", integrated:false, dic:false},
- "mr": {name:"Marathi", id:"mr", ownlang:"मराठी", integrated:false, dic:false},
- "mhr": {name:"Mari", id:"mhr", ownlang:"марий йылме", integrated:false, dic:false},
- "mn": {name:"Mongolian", id:"mn", ownlang:"Монгол Хэл", integrated:false, dic:false},
- "my": {name:"Myanmar (Burmese)", id:"my", ownlang:"မြန်မာл Хэл", integrated:false, dic:false},
- "ne": {name:"Nepali", id:"ne", ownlang:"नेपाली", integrated:false, dic:false},
- "no": {name:"Norwegian", id:"no", ownlang:"Norsk", integrated:true, dic:false},
- "or": {name:"Odia", id:"or", ownlang:"ଓଡ଼ିଆ", integrated:false, dic:false},
- "pap": {name:"Papiamento", id:"pap", ownlang:"Papiamentu", integrated:false, dic:false},
- "ps": {name:"Pashto", id:"ps", ownlang:"پښتو", integrated:false, dic:false},
- "fa": {name:"Persian", id:"fa", ownlang:"فارسی", integrated:false, dic:false},
- "pl": {name:"Polish", id:"pl", ownlang:"Polski", integrated:true, dic:true},
- "pt": {name:"Portuguese", id:"pt", ownlang:"Português", integrated:false, dic:true},
- "pt-BR": {name:"Portuguese (Brazil)", id:"pt-BR", ownlang:"Português do Brasil", integrated:true, dic:true},
- "pt-PT": {name:"Portuguese (Portugal)", id:"pt-PT", ownlang:"Português do Portugal", integrated:false, dic:false},
- "pa": {name:"Punjabi", id:"pa", ownlang:"पंजाबी", integrated:false, dic:false},
- "ro": {name:"Romanian", id:"ro", ownlang:"Română", integrated:false, dic:false},
- "ru": {name:"Russian", id:"ru", ownlang:"Pусский", integrated:true, dic:true},
- "sm": {name:"Samoan", id:"sm", ownlang:"Gagana Sāmoa", integrated:false, dic:false},
- "gd": {name:"Scottish Gaelic", id:"gd", ownlang:"Gàidhlig", integrated:false, dic:false},
- "sr": {name:"Serbian", id:"sr", ownlang:"Српски", integrated:false, dic:false},
- "st": {name:"Sesotho", id:"st", ownlang:"Sesotho", integrated:false, dic:false},
- "sn": {name:"Shona", id:"sn", ownlang:"Shona", integrated:false, dic:false},
- "sd": {name:"Sindhi", id:"sd", ownlang:"سنڌي", integrated:false, dic:false},
- "si": {name:"Sinhala", id:"si", ownlang:"සිංහල", integrated:false, dic:false},
- "sk": {name:"Slovak", id:"sk", ownlang:"Slovenčina", integrated:false, dic:false},
- "sl": {name:"Slovenian", id:"sl", ownlang:"Slovenščina", integrated:false, dic:false},
- "so": {name:"Somali", id:"so", ownlang:"Soomaali", integrated:false, dic:false},
- "es": {name:"Spanish", id:"es", ownlang:"Español", integrated:true, dic:true},
- "es-419": {name:"Spanish (Latin America)", id:"es-419", ownlang:"Español latinoamericano", integrated:false, dic:false},
- "su": {name:"Sundanese", id:"su", ownlang:"Basa Sunda", integrated:false, dic:false},
- "sw": {name:"Swahili", id:"sw", ownlang:"Kiswahili", integrated:false, dic:false},
- "sv": {name:"Swedish", id:"sv", ownlang:"Svenska", integrated:true, dic:true},
- "tl": {name:"Tagalog", id:"tl", ownlang:"Wikang Tagalog", integrated:false, dic:false},
- "tg": {name:"Tajik", id:"tg", ownlang:"тоҷикӣ", integrated:false, dic:false},
- "ta": {name:"Tamil", id:"ta", ownlang:"தமிழ்", integrated:false, dic:false},
- "tt": {name:"Tatar", id:"tt", ownlang:"татарча", integrated:false, dic:false},
- "te": {name:"Telugu", id:"te", ownlang:"తెలుగు", integrated:false, dic:false},
- "th": {name:"Thai", id:"th", ownlang:"ภาษาไทย", integrated:false, dic:false},
- "tr": {name:"Turkish", id:"tr", ownlang:"Türkçe", integrated:true, dic:false},
- "tk": {name:"Turkmen", id:"tk", ownlang:"Türkmençe", integrated:false, dic:false},
- "udm": {name:"Udmurt", id:"udm", ownlang:"удмурт кыл", integrated:false, dic:false},
- "uk": {name:"Ukrainian", id:"uk", ownlang:"Yкраїнський", integrated:true, dic:false},
- "ur": {name:"Urdu", id:"ur", ownlang:"اُردُو", integrated:false, dic:false},
- "ug": {name:"Uyghur", id:"ug", ownlang:"ئۇيغۇر تىلى", integrated:false, dic:false},
- "uz": {name:"Uzbek", id:"uz", ownlang:"اوزبیک", integrated:false, dic:false},
- "vi": {name:"Vietnamese", id:"vi", ownlang:"Tiếng Việt Nam", integrated:false, dic:false},
- "cy": {name:"Welsh", id:"cy", ownlang:"Cymraeg", integrated:false, dic:false},
- "xh": {name:"Xhosa", id:"xh", ownlang:"Xhosa", integrated:false, dic:false},
- "yi": {name:"Yiddish", id:"yi", ownlang:"ייִדיש ייִדיש", integrated:false, dic:false},
- "yo": {name:"Yoruba", id:"yo", ownlang:"Èdè Yorùbá", integrated:false, dic:false},
- "zu": {name:"Zulu", id:"zu", ownlang:"Zulu", integrated:false, dic:false}
- };
- InternalBDFDB.LibraryStrings = {
- "hr": {
- toast_plugin_started: "{{var0}} je započeo.",
- toast_plugin_stopped: "{{var0}} zaustavljen.",
- toast_plugin_translated: "prijevod na {{var0}}.",
- file_navigator_text: "Pregledajte datoteku"
- },
- "da": {
- toast_plugin_started: "{{var0}} er startet.",
- toast_plugin_stopped: "{{var0}} er stoppet.",
- toast_plugin_translated: "oversat til {{var0}}.",
- file_navigator_text: "Gennemse fil"
- },
- "de": {
- toast_plugin_started: "{{var0}} wurde gestartet.",
- toast_plugin_stopped: "{{var0}} wurde gestoppt.",
- toast_plugin_translated: "auf {{var0}} übersetzt.",
- file_navigator_text: "Datei durchsuchen"
- },
- "es": {
- toast_plugin_started: "{{var0}} se guilddiv iniciado.",
- toast_plugin_stopped: "{{var0}} se guilddiv detenido.",
- toast_plugin_translated: "traducido a {{var0}}.",
- file_navigator_text: "Buscar archivo"
- },
- "fr": {
- toast_plugin_started: "{{var0}} a été démarré.",
- toast_plugin_stopped: "{{var0}} a été arrêté.",
- toast_plugin_translated: "traduit en {{var0}}.",
- file_navigator_text: "Parcourir le fichier"
- },
- "it": {
- toast_plugin_started: "{{var0}} è stato avviato.",
- toast_plugin_stopped: "{{var0}} è stato interrotto.",
- toast_plugin_translated: "tradotto in {{var0}}.",
- file_navigator_text: "Sfoglia file"
- },
- "nl": {
- toast_plugin_started: "{{var0}} is gestart.",
- toast_plugin_stopped: "{{var0}} is gestopt.",
- toast_plugin_translated: "vertaald naar {{var0}}.",
- file_navigator_text: "Bestand zoeken"
- },
- "no": {
- toast_plugin_started: "{{var0}} er startet.",
- toast_plugin_stopped: "{{var0}} er stoppet.",
- toast_plugin_translated: "oversatt til {{var0}}.",
- file_navigator_text: "Bla gjennom fil"
- },
- "pl": {
- toast_plugin_started: "{{var0}} został uruchomiony.",
- toast_plugin_stopped: "{{var0}} został zatrzymany.",
- toast_plugin_translated: "przetłumaczono na {{var0}}.",
- file_navigator_text: "Przeglądać plik"
- },
- "pt-BR": {
- toast_plugin_started: "{{var0}} foi iniciado.",
- toast_plugin_stopped: "{{var0}} foi interrompido.",
- toast_plugin_translated: "traduzido para {{var0}}.",
- file_navigator_text: "Procurar arquivo"
- },
- "fi": {
- toast_plugin_started: "{{var0}} on käynnistetty.",
- toast_plugin_stopped: "{{var0}} on pysäytetty.",
- toast_plugin_translated: "käännetty osoitteeseen {{var0}}.",
- file_navigator_text: "Selaa tiedostoa"
- },
- "sv": {
- toast_plugin_started: "{{var0}} har startats.",
- toast_plugin_stopped: "{{var0}} har blivit stoppad.",
- toast_plugin_translated: "översatt till {{var0}}.",
- file_navigator_text: "Bläddra i fil"
- },
- "tr": {
- toast_plugin_started: "{{var0}} başlatıldı.",
- toast_plugin_stopped: "{{var0}} durduruldu.",
- toast_plugin_translated: "{{var0}} olarak çevrildi.",
- file_navigator_text: "Dosyaya gözat"
- },
- "cs": {
- toast_plugin_started: "{{var0}} byl spuštěn.",
- toast_plugin_stopped: "{{var0}} byl zastaven.",
- toast_plugin_translated: "přeložen do {{var0}}.",
- file_navigator_text: "Procházet soubor"
- },
- "bg": {
- toast_plugin_started: "{{var0}} е стартиран.",
- toast_plugin_stopped: "{{var0}} е спрян.",
- toast_plugin_translated: "преведена на {{var0}}.",
- file_navigator_text: "Прегледайте файла"
- },
- "ru": {
- toast_plugin_started: "{{var0}} запущен.",
- toast_plugin_stopped: "{{var0}} остановлен.",
- toast_plugin_translated: "переведен на {{var0}}.",
- file_navigator_text: "Просмотр файла"
- },
- "uk": {
- toast_plugin_started: "{{var0}} було запущено.",
- toast_plugin_stopped: "{{var0}} було зупинено.",
- toast_plugin_translated: "перекладено {{var0}}.",
- file_navigator_text: "Перегляньте файл"
- },
- "ja": {
- toast_plugin_started: "{{var0}}が開始されました.",
- toast_plugin_stopped: "{{var0}}が停止しました.",
- toast_plugin_translated: "は{{var0}}に翻訳されました.",
- file_navigator_text: "ファイルを参照"
- },
- "zh-TW": {
- toast_plugin_started: "{{var0}}已經啟動.",
- toast_plugin_stopped: "{{var0}}已停止.",
- toast_plugin_translated: "翻譯為{{var0}}.",
- file_navigator_text: "瀏覽文件"
- },
- "ko": {
- toast_plugin_started: "{{var0}} 시작되었습니다.",
- toast_plugin_stopped: "{{var0}} 중지되었습니다.",
- toast_plugin_translated: "{{var0}} 로 번역되었습니다.",
- file_navigator_text: "파일 찾아보기"
- },
- "default": {
- toast_plugin_started: "{{var0}} has been started.",
- toast_plugin_stopped: "{{var0}} has been stopped.",
- toast_plugin_translated: "translated to {{var0}}.",
- file_navigator_text: "Browse File"
- }
- };
- BDFDB.LanguageUtils.getLanguage = function () {
- let lang = document.querySelector("html").lang || "en";
- if (lang == "en-GB" || lang == "en-US") lang = "en";
- let langIds = lang.split("-");
- let langId = langIds[0];
- let langId2 = langIds[1] || "";
- lang = langId2 && langId.toUpperCase() !== langId2.toUpperCase() ? langId + "-" + langId2 : langId;
- return BDFDB.LanguageUtils.languages[lang] || BDFDB.LanguageUtils.languages[langId] || BDFDB.LanguageUtils.languages["en"];
- };
- BDFDB.LanguageUtils.LanguageStrings = new Proxy(LanguageStrings, {
- get: function (list, item) {
- let stringObj = LibraryModules.LanguageStore.Messages[item];
- if (!stringObj) BDFDB.LogUtils.warn(item + " not found in BDFDB.LanguageUtils.LanguageStrings");
- else {
- if (stringObj && typeof stringObj == "object" && typeof stringObj.format == "function") return BDFDB.LanguageUtils.LanguageStringsFormat(item);
- else return stringObj;
- }
- return "";
- }
- });
- BDFDB.LanguageUtils.LanguageStringsCheck = new Proxy(LanguageStrings, {
- get: function (list, item) {
- return !!LibraryModules.LanguageStore.Messages[item];
- }
- });
- BDFDB.LanguageUtils.LanguageStringsFormat = function (item, ...values) {
- if (item) {
- let stringObj = LibraryModules.LanguageStore.Messages[item];
- if (stringObj && typeof stringObj == "object" && typeof stringObj.format == "function") {
- let i = 0, returnvalue, formatvars = {};
- while (!returnvalue && i < 10) {
- i++;
- try {returnvalue = stringObj.format(formatvars);}
- catch (err) {
- returnvalue = null;
- let value = values.shift();
- formatvars[err.toString().split("for: ")[1]] = value != null ? (value === 0 ? "0" : value) : "undefined";
- }
- }
- if (returnvalue) {
- if (BDFDB.ArrayUtils.is(returnvalue)) {
- let newstring = "";
- for (let ele of returnvalue) {
- if (typeof ele == "string") newstring += BDFDB.StringUtils.htmlEscape(ele);
- else if (BDFDB.ObjectUtils.is(ele) && ele.props) newstring += `<${ele.type}>${BDFDB.StringUtils.htmlEscape(ele.props.children[0].toString())}${ele.type}>`
- }
- return newstring;
- }
- return returnvalue;
- }
- else {
- BDFDB.LogUtils.warn(item + " failed to format string in BDFDB.LanguageUtils.LanguageStrings");
- return "";
- }
- }
- else return BDFDB.LanguageUtils.LanguageStrings[item];
- }
- else BDFDB.LogUtils.warn(item + " enter a valid key to format the string in BDFDB.LanguageUtils.LanguageStrings");
- return "";
- };
- BDFDB.LanguageUtils.LibraryStrings = new Proxy(InternalBDFDB.LibraryStrings.default, {
- get: function (list, item) {
- let languageid = BDFDB.LanguageUtils.getLanguage().id;
- if (InternalBDFDB.LibraryStrings[languageid] && InternalBDFDB.LibraryStrings[languageid][item]) return InternalBDFDB.LibraryStrings[languageid][item];
- else if (InternalBDFDB.LibraryStrings.default[item]) return InternalBDFDB.LibraryStrings.default[item];
- else BDFDB.LogUtils.warn(item + " not found in BDFDB.LanguageUtils.LibraryStrings");
- return "";
- }
- });
- BDFDB.LanguageUtils.LibraryStringsCheck = new Proxy(LanguageStrings, {
- get: function (list, item) {
- return !!InternalBDFDB.LibraryStrings.default[item];
- }
- });
- BDFDB.LanguageUtils.LibraryStringsFormat = function (item, ...values) {
- if (item && values.length) {
- let languageid = BDFDB.LanguageUtils.getLanguage().id, string = null;
- if (InternalBDFDB.LibraryStrings[languageid] && InternalBDFDB.LibraryStrings[languageid][item]) string = InternalBDFDB.LibraryStrings[languageid][item];
- else if (InternalBDFDB.LibraryStrings.default[item]) string = InternalBDFDB.LibraryStrings.default[item];
- if (string) {
- for (let i = 0; i < values.length; i++) if (typeof values[i] == "string") string = string.replace(new RegExp(`{{var${i}}}`, "g"), values[i]);
- return string;
- }
- else BDFDB.LogUtils.warn(item + " not found in BDFDB.LanguageUtils.LibraryStrings");
- }
- else BDFDB.LogUtils.warn(item + " enter a valid key and at least one value to format the string in BDFDB.LanguageUtils.LibraryStrings");
- return "";
- };
- var initDiscordLanguageInterval = BDFDB.TimeUtils.interval(_ => {
- if (document.querySelector("html").lang) {
- BDFDB.TimeUtils.clear(initDiscordLanguageInterval);
- var language = BDFDB.LanguageUtils.getLanguage();
- BDFDB.LanguageUtils.languages.$discord.name = `Discord (${language.name})`;
- BDFDB.LanguageUtils.languages.$discord.id = language.id;
- BDFDB.LanguageUtils.languages.$discord.google = language.google;
- BDFDB.LanguageUtils.languages.$discord.ownlang = language.ownlang;
- }
- }, 100);
-
- var InternalComponents = {NativeSubComponents: {}, LibraryComponents: {}}, reactInitialized = LibraryModules.React && LibraryModules.React.Component;
- InternalComponents.NativeSubComponents.Button = BDFDB.ModuleUtils.findByProperties("Colors", "Hovers", "Looks");
- InternalComponents.NativeSubComponents.Checkbox = BDFDB.ModuleUtils.findByName("Checkbox");
- InternalComponents.NativeSubComponents.Clickable = BDFDB.ModuleUtils.findByName("Clickable");
- InternalComponents.NativeSubComponents.ContextMenuItem = BDFDB.ModuleUtils.findByString("default.item", "default.hint", "danger", "brand");
- InternalComponents.NativeSubComponents.ContextMenuSliderItem = BDFDB.ModuleUtils.findByName("SliderMenuItem");
- InternalComponents.NativeSubComponents.ContextMenuToggleItem = BDFDB.ModuleUtils.findByName("ToggleMenuItem");
- InternalComponents.NativeSubComponents.FavButton = BDFDB.ModuleUtils.findByName("GIFFavButton");
- InternalComponents.NativeSubComponents.KeybindRecorder = BDFDB.ModuleUtils.findByName("KeybindRecorder");
- InternalComponents.NativeSubComponents.PopoutContainer = BDFDB.ModuleUtils.findByName("Popout");
- InternalComponents.NativeSubComponents.QuickSelect = BDFDB.ModuleUtils.findByName("QuickSelectWrapper");
- InternalComponents.NativeSubComponents.RadioGroup = BDFDB.ModuleUtils.findByName("RadioGroup");
- InternalComponents.NativeSubComponents.SearchBar = BDFDB.ModuleUtils.find(m => m && m.displayName == "SearchBar" && m.defaultProps.placeholder == BDFDB.LanguageUtils.LanguageStrings.SEARCH);
- InternalComponents.NativeSubComponents.Select = BDFDB.ModuleUtils.findByName("SelectTempWrapper");
- InternalComponents.NativeSubComponents.Slider = BDFDB.ModuleUtils.findByName("Slider");
- InternalComponents.NativeSubComponents.Switch = BDFDB.ModuleUtils.findByName("Switch");
- InternalComponents.NativeSubComponents.TabBar = BDFDB.ModuleUtils.findByName("TabBar");
- InternalComponents.NativeSubComponents.Table = BDFDB.ModuleUtils.findByName("Table");
- InternalComponents.NativeSubComponents.TextArea = BDFDB.ModuleUtils.findByName("TextArea");
- InternalComponents.NativeSubComponents.TextInput = BDFDB.ModuleUtils.findByName("TextInput");
- InternalComponents.NativeSubComponents.TooltipContainer = BDFDB.ModuleUtils.findByName("Tooltip");
-
- InternalComponents.LibraryComponents.AddonCard = InternalBDFDB.loadPatchedComp("AddonCard") || reactInitialized && class BDFDB_AddonCard extends LibraryModules.React.Component {
- render() {
- return !BDFDB.ObjectUtils.is(this.props.data) ? null : BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN._repoentry, this.props.className, BDFDB.disCN._repocard, BDFDB.disCN._reposettingsclosed, BDFDB.disCN._repocheckboxitem),
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN._repoheader,
- style: {overflow: "visible"},
- children: [
- BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN._repoheadertitle,
- children: [
- BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN._reponame,
- children: this.props.data.name
- }),
- " v",
- BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN._repoversion,
- children: this.props.data.version
- }),
- " by ",
- BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN._repoauthor,
- children: this.props.data.author
- })
- ]
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN._repocontrols,
- children: this.props.controls
- })
- ]
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ScrollerVertical, {
- outerClassName: BDFDB.disCNS._repodescriptionwrap,
- className: BDFDB.disCNS._repodescription,
- children: this.props.data.description
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN._repofooter,
- children: [
- BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN._repolinks,
- children: [].concat(this.props.links).map((link, i) => BDFDB.ObjectUtils.is(link) && [
- i > 0 && " | ",
- BDFDB.ReactUtils.createElement("a", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN._repolink, typeof link.label == "string" && BDFDB.disCN._repolink + "-" + link.label.toLowerCase().replace(/\s/g, "")),
- href: link.href,
- children: link.label
- })
- ]).flat(10).filter(n => n)
- }),
- this.props.buttons
- ].flat(10).filter(n => n)
- }),
- ]
- });
- }
- };
-
- InternalComponents.LibraryComponents.Anchor = BDFDB.ModuleUtils.findByName("Anchor");
-
- InternalComponents.LibraryComponents.Animations = Object.assign({}, BDFDB.ModuleUtils.findByProperties("Controller", "Spring"));
-
- InternalComponents.LibraryComponents.AutocompleteItems = BDFDB.ModuleUtils.findByProperties("Generic", "User", "Command");
-
- InternalComponents.LibraryComponents.AutocompleteMenu = BDFDB.ModuleUtils.findByName("Autocomplete");
-
- InternalComponents.LibraryComponents.Avatar = (BDFDB.ModuleUtils.findByProperties("AnimatedAvatar") || {}).default;
-
- InternalComponents.LibraryComponents.BadgeAnimationContainer = InternalBDFDB.loadPatchedComp("BadgeAnimationContainer") || reactInitialized && class BDFDB_BadgeAnimationContainer extends LibraryModules.React.Component {
- componentDidMount() {BDFDB.ReactUtils.forceUpdate(this);}
- componentWillAppear(e) {if (typeof e == "function") e();}
- componentWillEnter(e) {if (typeof e == "function") e();}
- componentWillLeave(e) {if (typeof e == "function") this.timeoutId = setTimeout(e, 300);}
- componentWillUnmount() {clearTimeout(this.timeoutId)}
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Animations.animated.div, {
- className: this.props.className,
- style: this.props.animatedStyle,
- children: this.props.children
- });
- }
- };
-
- InternalComponents.LibraryComponents.Badges = Object.assign({}, BDFDB.ModuleUtils.findByProperties("IconBadge", "NumberBadge"));
- InternalComponents.LibraryComponents.Badges.IconBadge = InternalBDFDB.loadPatchedComp("Badges.IconBadge") || reactInitialized && class BDFDB_IconBadge extends LibraryModules.React.Component {
- render() {
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.badgeiconbadge, this.props.className),
- style: Object.assign({
- backgroundColor: this.props.disableColor ? null : (this.props.color || BDFDB.DiscordConstants.Colors.STATUS_RED)
- }, this.props.style),
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- className: BDFDB.disCN.badgeicon,
- name: this.props.icon
- })
- });
- }
- };
-
- InternalComponents.LibraryComponents.BotTag = InternalBDFDB.loadPatchedComp("BotTag") || reactInitialized && class BDFDB_BotTag extends LibraryModules.React.Component {
- handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);}
- handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);}
- render() {
- return BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.invertColor ? BDFDB.disCN.bottaginvert : BDFDB.disCN.bottagregular, this.props.useRemSizes ? BDFDB.disCN.bottagrem : BDFDB.disCN.bottagpx),
- style: this.props.style,
- onClick: this.handleClick.bind(this),
- onContextMenu: this.handleContextMenu.bind(this),
- children: BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN.bottagtext,
- children: this.props.tag || BDFDB.LanguageUtils.LanguageStrings.BOT_TAG_BOT
- })
- });
- }
- };
-
- InternalComponents.LibraryComponents.Button = InternalBDFDB.loadPatchedComp("Button") || reactInitialized && class BDFDB_Button extends LibraryModules.React.Component {
- handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);}
- handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);}
- handleMouseDown(e) {if (typeof this.props.onMouseDown == "function") this.props.onMouseDown(e, this);}
- handleMouseUp(e) {if (typeof this.props.onMouseUp == "function") this.props.onMouseUp(e, this);}
- handleMouseEnter(e) {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);}
- handleMouseLeave(e) {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);}
- render() {
- let processingAndListening = (this.props.disabled || this.props.submitting) && (null != this.props.onMouseEnter || null != this.props.onMouseLeave);
- let props = BDFDB.ObjectUtils.exclude(this.props, "look", "color", "hover", "size", "fullWidth", "grow", "disabled", "submitting", "type", "style", "wrapperClassName", "className", "innerClassName", "onClick", "onContextMenu", "onMouseDown", "onMouseUp", "onMouseEnter", "onMouseLeave", "children", "rel");
- let button = BDFDB.ReactUtils.createElement("button", Object.assign({}, !this.props.disabled && !this.props.submitting && props, {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, BDFDB.disCN.button, this.props.look != null ? this.props.look : InternalComponents.LibraryComponents.Button.Looks.FILLED, this.props.color != null ? this.props.color : InternalComponents.LibraryComponents.Button.Colors.BRAND, this.props.hover, this.props.size != null ? this.props.size : InternalComponents.LibraryComponents.Button.Sizes.MEDIUM, processingAndListening && this.props.wrapperClassName, this.props.fullWidth && BDFDB.disCN.buttonfullwidth, (this.props.grow === undefined || this.props.grow) && BDFDB.disCN.buttongrow, this.props.hover && this.props.hover !== InternalComponents.LibraryComponents.Button.Hovers.DEFAULT && BDFDB.disCN.buttonhashover, this.props.submitting && BDFDB.disCN.buttonsubmitting),
- onClick: (this.props.disabled || this.props.submitting) ? e => {return e.preventDefault();} : this.handleClick.bind(this),
- onContextMenu: (this.props.disabled || this.props.submitting) ? e => {return e.preventDefault();} : this.handleContextMenu.bind(this),
- onMouseUp: !this.props.disabled && this.handleMouseDown.bind(this),
- onMouseDown: !this.props.disabled && this.handleMouseUp.bind(this),
- onMouseEnter: this.handleMouseEnter.bind(this),
- onMouseLeave: this.handleMouseLeave.bind(this),
- type: this.props.type === "undefined" ? "button" : this.props.type,
- disabled: this.props.disabled,
- style: this.props.style,
- rel: this.props.rel,
- children: [
- this.props.submitting && !this.props.disabled ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Spinner, {
- type: InternalComponents.LibraryComponents.Spinner.Type.PULSING_ELLIPSIS,
- className: BDFDB.disCN.buttonspinner,
- itemClassName: BDFDB.disCN.buttonspinneritem
- }) : null,
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.buttoncontents, this.props.innerClassName),
- children: this.props.children
- })
- ]
- }));
- return !processingAndListening ? button : BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.buttondisabledwrapper, this.props.wrapperClassName, this.props.size != null ? this.props.size : InternalComponents.LibraryComponents.Button.Sizes.MEDIUM, this.props.fullWidth && BDFDB.disCN.buttonfullwidth, (this.props.grow === undefined || this.props.grow) && BDFDB.disCN.buttongrow),
- children: [
- button,
- BDFDB.ReactUtils.createElement("span", {
- onMouseEnter: this.handleMouseEnter.bind(this),
- onMouseLeave: this.handleMouseLeave.bind(this),
- className: BDFDB.disCN.buttondisabledoverlay
- })
- ]
- });
- }
- };
-
- InternalComponents.LibraryComponents.Card = InternalBDFDB.loadPatchedComp("Card") || reactInitialized && class BDFDB_Card extends LibraryModules.React.Component {
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.hovercardwrapper, this.props.backdrop && BDFDB.disCN.hovercard, this.props.className),
- onMouseEnter: e => {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);},
- onMouseLeave: e => {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);},
- onClick: e => {if (typeof this.props.onClick == "function") this.props.onClick(e, this);},
- onContextMenu: e => {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);},
- children: [
- !this.props.noRemove ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.CardRemoveButton, {
- onClick: e => {
- if (typeof this.props.onRemove == "function") this.props.onRemove(e, this);
- BDFDB.ListenerUtils.stopEvent(e);
- }
- }) : null,
- typeof this.props.children == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, {
- className: BDFDB.disCN.hovercardinner,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, {children: this.props.children})
- }) : this.props.children
- ].flat(10).filter(n => n)
- }), "backdrop", "noRemove"));
- }
- };
- InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.Card, {backdrop:true, noRemove:false});
-
- InternalComponents.LibraryComponents.CardRemoveButton = BDFDB.ModuleUtils.findByName("RemoveButton");
-
- InternalComponents.LibraryComponents.ChannelTextAreaButton = InternalBDFDB.loadPatchedComp("ChannelTextAreaButton") || reactInitialized && class BDFDB_ChannelTextAreaButton extends LibraryModules.React.Component {
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, {
- look: InternalComponents.LibraryComponents.Button.Looks.BLANK,
- size: InternalComponents.LibraryComponents.Button.Sizes.NONE,
- "aria-label": this.props.label,
- tabIndex: this.props.tabIndex,
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textareabuttonwrapper, this.props.isActive && BDFDB.disCN.textareabuttonactive),
- innerClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textareabutton, this.props.className, this.props.pulse && BDFDB.disCN.textareaattachbuttonplus),
- onClick: this.props.onClick,
- onContextMenu: this.props.onContextMenu,
- onMouseEnter: this.props.onMouseEnter,
- onMouseLeave: this.props.onMouseLeave,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- name: this.props.iconName,
- iconSVG: this.props.iconSVG,
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textareaicon, this.props.iconClassName, this.props.pulse && BDFDB.disCN.textareaiconpulse)
- })
- });
- }
- };
-
- InternalComponents.LibraryComponents.CharCounter = InternalBDFDB.loadPatchedComp("CharCounter") || reactInitialized && class BDFDB_CharCounter extends LibraryModules.React.Component {
- getCounterString() {
- let input = this.refElement || {}, string = "";
- if (BDFDB.DOMUtils.containsClass(this.refElement, BDFDB.disCN.textarea)) {
- let instance = BDFDB.ReactUtils.findOwner(input, {name:"ChannelEditorContainer", up:true});
- if (instance) string = instance.props.textValue;
- else string = input.value || input.textContent || "";
- }
- else string = input.value || input.textContent || "";
- let start = input.selectionStart || 0, end = input.selectionEnd || 0, selectlength = end - start, selection = BDFDB.DOMUtils.getSelection();
- let select = !selectlength && !selection ? 0 : (selectlength || selection.length);
- select = !select ? 0 : (select > string.length ? (end || start ? string.length - (string.length - end - start) : string.length) : select);
- let children = [
- typeof this.props.renderPrefix == "function" && this.props.renderPrefix(string.length),
- `${string.length}${!this.props.max ? "" : "/" + this.props.max}${!select ? "" : " (" + select + ")"}`,
- typeof this.props.renderSuffix == "function" && this.props.renderSuffix(string.length)
- ].filter(n => n);
- return children.length == 1 ? children[0] : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- children: children
- });
- }
- updateCounter() {
- if (!this.refElement) return;
- BDFDB.TimeUtils.clear(this.updateTimeout);
- this.updateTimeout = BDFDB.TimeUtils.timeout(this.forceUpdateCounter.bind(this), 100);
- }
- forceUpdateCounter() {
- if (!this.refElement) return;
- this.props.children = this.getCounterString();
- BDFDB.ReactUtils.forceUpdate(this);
- }
- handleSelection() {
- if (!this.refElement) return;
- let mousemove = _ => {
- BDFDB.TimeUtils.timeout(this.forceUpdateCounter.bind(this), 10);
- };
- let mouseup = _ => {
- document.removeEventListener("mousemove", mousemove);
- document.removeEventListener("mouseup", mouseup);
- if (this.refElement.selectionEnd - this.refElement.selectionStart) BDFDB.TimeUtils.timeout(_ => {
- document.addEventListener("click", click);
- });
- };
- let click = _ => {
- var contexttype = BDFDB.ReactUtils.getValue(document.querySelector(BDFDB.dotCN.contextmenu), "return.stateNode.props.type");
- if (!contexttype || !contexttype.startsWith("CHANNEL_TEXT_AREA")) this.forceUpdateCounter();
- BDFDB.TimeUtils.timeout(this.forceUpdateCounter.bind(this), 100);
- document.removeEventListener("mousemove", mousemove);
- document.removeEventListener("mouseup", mouseup);
- document.removeEventListener("click", click);
- };
- document.addEventListener("mousemove", mousemove);
- document.addEventListener("mouseup", mouseup);
- }
- componentDidMount() {
- if (this.props.refClass) {
- let node = BDFDB.ReactUtils.findDOMNode(this);
- if (node && node.parentElement) {
- this.refElement = node.parentElement.querySelector(this.props.refClass);
- if (this.refElement) {
- if (!this._updateCounter) this._updateCounter = _ => {
- if (!document.contains(node)) BDFDB.ListenerUtils.multiRemove(this.refElement, "keydown click change", this._updateCounter);
- else this.updateCounter();
- };
- if (!this._handleSelection) this._handleSelection = _ => {
- if (!document.contains(node)) BDFDB.ListenerUtils.multiRemove(this.refElement, "mousedown", this._handleSelection);
- else this.handleSelection();
- };
- BDFDB.ListenerUtils.multiRemove(this.refElement, "mousedown", this._handleSelection);
- BDFDB.ListenerUtils.multiAdd(this.refElement, "mousedown", this._handleSelection);
- if (this.refElement.tagName == "INPUT" || this.refElement.tagName == "TEXTAREA") {
- BDFDB.ListenerUtils.multiRemove(this.refElement, "keydown click change", this._updateCounter);
- BDFDB.ListenerUtils.multiAdd(this.refElement, "keydown click change", this._updateCounter);
- }
- else {
- if (!this._mutationObserver) this._mutationObserver = new MutationObserver(changes => {
- if (!document.contains(node)) this._mutationObserver.disconnect();
- else this.updateCounter();
- });
- else this._mutationObserver.disconnect();
- this._mutationObserver.observe(this.refElement, {childList: true, subtree: true});
- }
- this.updateCounter();
- }
- else BDFDB.LogUtils.warn("could not find referenceElement for BDFDB_CharCounter");
- }
- }
- else BDFDB.LogUtils.warn("refClass can not be undefined for BDFDB_CharCounter");
- }
- render() {
- let string = this.getCounterString();
- BDFDB.TimeUtils.timeout(_ => {if (string != this.getCounterString()) BDFDB.ReactUtils.forceUpdate(this);});
- return BDFDB.ReactUtils.createElement("div", BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.charcounter, this.props.className),
- children: string
- }), "parsing", "max", "refClass", "renderPrefix", "renderSuffix"));
- }
- };
-
- InternalComponents.LibraryComponents.Checkbox = InternalBDFDB.loadPatchedComp("Checkbox") || reactInitialized && class BDFDB_Checkbox extends LibraryModules.React.Component {
- handleChange() {
- this.props.value = !this.props.value;
- if (typeof this.props.onChange == "function") this.props.onChange(this.props.value, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Checkbox, Object.assign({}, this.props, {onChange: this.handleChange.bind(this)}));
- }
- };
-
- InternalComponents.LibraryComponents.Clickable = InternalBDFDB.loadPatchedComp("Clickable") || reactInitialized && class BDFDB_Clickable extends LibraryModules.React.Component {
- handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);}
- handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);}
- handleMouseDown(e) {if (typeof this.props.onMouseDown == "function") this.props.onMouseDown(e, this);}
- handleMouseUp(e) {if (typeof this.props.onMouseUp == "function") this.props.onMouseUp(e, this);}
- handleMouseEnter(e) {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);}
- handleMouseLeave(e) {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);}
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Clickable, Object.assign({}, this.props, {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, BDFDB.disCN.cursorpointer),
- onClick: this.handleClick.bind(this),
- onContextMenu: this.handleContextMenu.bind(this),
- onMouseUp: this.handleMouseDown.bind(this),
- onMouseDown: !this.props.disabled && this.handleMouseUp.bind(this),
- onMouseEnter: this.handleMouseEnter.bind(this),
- onMouseLeave: this.handleMouseLeave.bind(this)
- }));
- }
- };
-
- InternalComponents.LibraryComponents.CollapseContainer = InternalBDFDB.loadPatchedComp("CollapseContainer") || reactInitialized && class BDFDB_CollapseContainer extends LibraryModules.React.Component {
- render() {
- if (!BDFDB.ObjectUtils.is(this.props.collapseStates)) this.props.collapseStates = {};
- this.props.collapsed = this.props.collapsed && (this.props.collapseStates[this.props.title] || this.props.collapseStates[this.props.title] == undefined);
- this.props.collapseStates[this.props.title] = this.props.collapsed;
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(this.props.collapsed && BDFDB.disCN.collapsecontainercollapsed, this.props.mini ? BDFDB.disCN.collapsecontainermini : BDFDB.disCN.collapsecontainer, this.props.className),
- id: this.props.id,
- children: [
- this.props.dividertop ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, {
- className: this.props.mini ? BDFDB.disCN.marginbottom8 : BDFDB.disCN.marginbottom20
- }) : null,
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCNS.collapsecontainerheader + BDFDB.disCN.cursorpointer,
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- onClick: e => {
- this.props.collapsed = !this.props.collapsed;
- this.props.collapseStates[this.props.title] = this.props.collapsed;
- if (typeof this.props.onClick == "function") this.props.onClick(this.props.collapsed, this);
- BDFDB.ReactUtils.forceUpdate(this);
- },
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.collapsecontainerarrow
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, {
- tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H2,
- className: BDFDB.disCNS.collapsecontainertitle + BDFDB.disCN.cursorpointer,
- children: this.props.title
- })
- ]
- }),
- !this.props.collapsed ? BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.collapsecontainerinner,
- children: this.props.children
- }) : null,
- this.props.dividerbottom ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, {
- className: this.props.mini ? BDFDB.disCN.margintop8 : BDFDB.disCN.margintop20
- }) : null
- ]
- });
- }
- };
- InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.CollapseContainer, {collapsed:true, mini:true});
-
- // FIX COLOR PICKER NOT OPENING IN BD RENDER //
- InternalComponents.LibraryComponents.ColorPicker = InternalBDFDB.loadPatchedComp("ColorPicker") || reactInitialized && class BDFDB_ColorPicker extends LibraryModules.React.Component {
- constructor(props) {
- super(props);
- if (!this.state) this.state = {};
- this.state.isGradient = props.gradient && props.color && BDFDB.ObjectUtils.is(props.color);
- this.state.gradientBarEnabled = this.state.isGradient;
- this.state.draggingAlphaCursor = false;
- this.state.draggingGradientCursor = false;
- this.state.selectedGradientCursor = 0;
- }
- handleColorChange(color) {
- let changed = false;
- if (color != null) {
- changed = !BDFDB.equals(this.state.isGradient ? this.props.color[this.state.selectedGradientCursor] : this.props.color, color);
- if (this.state.isGradient) this.props.color[this.state.selectedGradientCursor] = color;
- else this.props.color = color;
- }
- else changed = true;
- if (changed) {
- if (typeof this.props.onColorChange == "function") this.props.onColorChange(this.props.color);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- }
- componentDidMount() {
- this.domElementRef = {current: BDFDB.DOMUtils.getParent(BDFDB.dotCN.itemlayer, BDFDB.ReactUtils.findDOMNode(this))};
- let popoutContainerInstance = BDFDB.ReactUtils.findOwner(this.domElementRef.current, {name:"BDFDB_PopoutContainer", up:true, unlimited:true});
- if (popoutContainerInstance) {
- let mousedown = event => {
- if (!this.domElementRef.current || !document.contains(this.domElementRef.current)) document.removeEventListener("mousedown", mousedown);
- else if (!this.domElementRef.current.contains(event.target)) {
- let mouseup = event => {
- if (!this.domElementRef.current || !document.contains(this.domElementRef.current)) {
- document.removeEventListener("mousedown", mousedown);
- document.removeEventListener("mouseup", mouseup);
- }
- else if (!this.domElementRef.current.contains(event.target)) {
- document.removeEventListener("mousedown", mousedown);
- document.removeEventListener("mouseup", mouseup);
- popoutContainerInstance.handleClick(event);
- }
- };
- document.addEventListener("mouseup", mouseup);
- }
- };
- document.addEventListener("mousedown", mousedown);
- }
- }
- render() {
- if (this.state.isGradient) this.props.color = Object.assign({}, this.props.color);
-
- let hslFormat = this.props.alpha ? "HSLA" : "HSL";
- let hexRegex = this.props.alpha ? /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i : /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;
-
- let selectedColor = BDFDB.ColorUtils.convert(this.state.isGradient ? this.props.color[this.state.selectedGradientCursor] : this.props.color, hslFormat) || BDFDB.ColorUtils.convert("#000000FF", hslFormat);
- let currentGradient = (this.state.isGradient ? Object.entries(this.props.color, hslFormat) : [[0, selectedColor], [1, selectedColor]]);
-
- let [h, s, l] = BDFDB.ColorUtils.convert(selectedColor, "HSLCOMP");
- let a = BDFDB.ColorUtils.getAlpha(selectedColor);
- a = a == null ? 1 : a;
-
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutFocusLock, {
- className: BDFDB.disCNS.colorpickerwrapper + BDFDB.disCN.colorpicker,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickerinner,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickersaturation,
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickersaturationcolor,
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0, cursor: "crosshair", backgroundColor: BDFDB.ColorUtils.convert([h, "100%", "100%"], "RGB")},
- onClick: event => {
- let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickersaturationcolor, event.target));
- let newS = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 100], event.clientX) + "%";
- let newL = BDFDB.NumberUtils.mapRange([rects.top, rects.top + rects.height], [100, 0], event.clientY) + "%";
- this.handleColorChange(BDFDB.ColorUtils.convert([h, newS, newL, a], hslFormat));
- },
- onMouseDown: event => {
- let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickersaturationcolor, event.target));
-
- let mouseup = _ => {
- document.removeEventListener("mouseup", mouseup);
- document.removeEventListener("mousemove", mousemove);
- };
- let mousemove = event2 => {
- let newS = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 100], event2.clientX) + "%";
- let newL = BDFDB.NumberUtils.mapRange([rects.top, rects.top + rects.height], [100, 0], event2.clientY) + "%";
- this.handleColorChange(BDFDB.ColorUtils.convert([h, newS, newL, a], hslFormat));
- };
- document.addEventListener("mouseup", mouseup);
- document.addEventListener("mousemove", mousemove);
- },
- children: [
- BDFDB.ReactUtils.createElement("style", {
- children: `${BDFDB.dotCN.colorpickersaturationwhite} {background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));background: linear-gradient(to right, #fff, rgba(255,255,255,0));}${BDFDB.dotCN.colorpickersaturationblack} {background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));background: linear-gradient(to top, #000, rgba(0,0,0,0));}`
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickersaturationwhite,
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0},
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickersaturationblack,
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0}
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickersaturationcursor,
- style: {position: "absolute", cursor: "crosshair", left: s, top: `${BDFDB.NumberUtils.mapRange([0, 100], [100, 0], parseFloat(l))}%`},
- children: BDFDB.ReactUtils.createElement("div", {
- style: {width: 4, height: 4, boxShadow: "rgb(255, 255, 255) 0px 0px 0px 1.5px, rgba(0, 0, 0, 0.3) 0px 0px 1px 1px inset, rgba(0, 0, 0, 0.4) 0px 0px 1px 2px", borderRadius: "50%", transform: "translate(-2px, -2px)"}
- })
- })
- ]
- })
- ]
- })
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickerhue,
- children: BDFDB.ReactUtils.createElement("div", {
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0},
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickerhuehorizontal,
- style: {padding: "0px 2px", position: "relative", height: "100%"},
- onClick: event => {
- let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickerhuehorizontal, event.target));
- let newH = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 360], event.clientX);
- this.handleColorChange(BDFDB.ColorUtils.convert([newH, s, l, a], hslFormat));
- },
- onMouseDown: event => {
- let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickerhuehorizontal, event.target));
-
- let mouseup = _ => {
- document.removeEventListener("mouseup", mouseup);
- document.removeEventListener("mousemove", mousemove);
- };
- let mousemove = event2 => {
- let newH = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 360], event2.clientX);
- this.handleColorChange(BDFDB.ColorUtils.convert([newH, s, l, a], hslFormat));
- };
- document.addEventListener("mouseup", mouseup);
- document.addEventListener("mousemove", mousemove);
- },
- children: [
- BDFDB.ReactUtils.createElement("style", {
- children: `${BDFDB.dotCN.colorpickerhuehorizontal} {background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);background: -webkit-linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);}${BDFDB.dotCN.colorpickerhuevertical} {background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);}`
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickerhuecursor,
- style: {position: "absolute", cursor: "ew-resize", left: `${BDFDB.NumberUtils.mapRange([0, 360], [0, 100], h)}%`},
- children: BDFDB.ReactUtils.createElement("div", {
- style: {marginTop: 1, width: 4, borderRadius: 1, height: 8, boxShadow: "rgba(0, 0, 0, 0.6) 0px 0px 2px", background: "rgb(255, 255, 255)", transform: "translateX(-2px)"}
- })
- })
- ]
- })
- })
- }),
- this.props.alpha && BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickeralpha,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0},
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickeralphacheckered,
- style: {padding: "0px 2px", position: "relative", height: "100%"}
- })
- }),
- BDFDB.ReactUtils.createElement("div", {
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0},
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickeralphahorizontal,
- style: {padding: "0px 2px", position: "relative", height: "100%", background: `linear-gradient(to right, ${BDFDB.ColorUtils.setAlpha([h, s, l], 0, "RGBA")}, ${BDFDB.ColorUtils.setAlpha([h, s, l], 1, "RGBA")}`},
- onClick: event => {
- let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickeralphahorizontal, event.target));
- let newA = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 1], event.clientX);
- this.handleColorChange(BDFDB.ColorUtils.setAlpha(selectedColor, newA, hslFormat));
- },
- onMouseDown: event => {
- let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickeralphahorizontal, event.target));
-
- let mouseup = _ => {
- document.removeEventListener("mouseup", mouseup);
- document.removeEventListener("mousemove", mousemove);
- this.state.draggingAlphaCursor = false;
- BDFDB.ReactUtils.forceUpdate(this);
- };
- let mousemove = event2 => {
- this.state.draggingAlphaCursor = true;
- let newA = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 1], event2.clientX);
- this.handleColorChange(BDFDB.ColorUtils.setAlpha(selectedColor, newA, hslFormat));
- };
- document.addEventListener("mouseup", mouseup);
- document.addEventListener("mousemove", mousemove);
- },
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickeralphacursor,
- style: {position: "absolute", cursor: "ew-resize", left: `${a * 100}%`},
- children: [
- BDFDB.ReactUtils.createElement("div", {
- style: {marginTop: 1, width: 4, borderRadius: 1, height: 8, boxShadow: "rgba(0, 0, 0, 0.6) 0px 0px 2px", background: "rgb(255, 255, 255)", transform: "translateX(-2px)"}
- }),
- this.state.draggingAlphaCursor && BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN.sliderbubble,
- style: {opacity: 1, visibility: "visible", left: 2},
- children: `${Math.floor(a * 100)}%`
- })
- ].filter(n => n)
- })
- })
- })
- ]
- }),
- this.state.gradientBarEnabled && BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickergradient,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0},
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickergradientcheckered,
- style: {padding: "0px 2px", position: "relative", height: "100%"}
- })
- }),
- BDFDB.ReactUtils.createElement("div", {
- style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0},
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.colorpickergradienthorizontal,
- style: {padding: "0px 2px", position: "relative", cursor: "copy", height: "100%", background: BDFDB.ColorUtils.createGradient(currentGradient.reduce((colorObj, posAndColor) => (colorObj[posAndColor[0]] = posAndColor[1], colorObj), {}))},
- onClick: event => {
- let rects = BDFDB.DOMUtils.getRects(event.target);
- let pos = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0.01, 0.99], event.clientX);
- if (Object.keys(this.props.color).indexOf(pos) == -1) {
- this.props.color[pos] = BDFDB.ColorUtils.convert("#000000FF", hslFormat);
- this.state.selectedGradientCursor = pos;
- this.handleColorChange();
- }
- },
- children: currentGradient.map(posAndColor => BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickergradientcursor, (posAndColor[0] == 0 || posAndColor[0] == 1) && BDFDB.disCNS.colorpickergradientcursoredge, this.state.selectedGradientCursor == posAndColor[0] && BDFDB.disCN.colorpickergradientcursorselected),
- style: {position: "absolute", cursor: "pointer", left: `${posAndColor[0] * 100}%`},
- onMouseDown: posAndColor[0] == 0 || posAndColor[0] == 1 ? _ => {} : event => {
- event = event.nativeEvent || event;
- let mousemove = event2 => {
- if (Math.sqrt((event.pageX - event2.pageX)**2) > 10) {
- document.removeEventListener("mousemove", mousemove);
- document.removeEventListener("mouseup", mouseup);
-
- this.state.draggingGradientCursor = true;
- let cursor = BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickergradientcursor, event.target);
- let rects = BDFDB.DOMUtils.getRects(cursor.parentElement);
-
- let releasing = _ => {
- document.removeEventListener("mousemove", dragging);
- document.removeEventListener("mouseup", releasing);
- BDFDB.TimeUtils.timeout(_ => {this.state.draggingGradientCursor = false;});
- };
- let dragging = event3 => {
- let pos = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0.01, 0.99], event3.clientX);
- if (Object.keys(this.props.color).indexOf(pos) == -1) {
- delete this.props.color[posAndColor[0]];
- posAndColor[0] = pos;
- this.props.color[pos] = posAndColor[1];
- this.state.selectedGradientCursor = pos;
- this.handleColorChange();
- }
- };
- document.addEventListener("mousemove", dragging);
- document.addEventListener("mouseup", releasing);
- }
- };
- let mouseup = _ => {
- document.removeEventListener("mousemove", mousemove);
- document.removeEventListener("mouseup", mouseup);
- };
- document.addEventListener("mousemove", mousemove);
- document.addEventListener("mouseup", mouseup);
- },
- onClick: event => {
- BDFDB.ListenerUtils.stopEvent(event);
- if (!this.state.draggingGradientCursor) {
- this.state.selectedGradientCursor = posAndColor[0];
- BDFDB.ReactUtils.forceUpdate(this);
- }
- },
- onContextMenu: posAndColor[0] == 0 || posAndColor[0] == 1 ? _ => {} : event => {
- BDFDB.ListenerUtils.stopEvent(event);
- delete this.props.color[posAndColor[0]];
- this.state.selectedGradientCursor = 0;
- this.handleColorChange();
- },
- children: BDFDB.ReactUtils.createElement("div", {
- style: {background: BDFDB.ColorUtils.convert(posAndColor[1], "RGBA")}
- })
- }))
- })
- })
- ]
- })
- ].filter(n => n)
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextInput, {
- className: BDFDB.disCNS.colorpickerhexinput + BDFDB.disCN.margintop8,
- maxLength: this.props.alpha ? 9 : 7,
- valuePrefix: "#",
- value: BDFDB.ColorUtils.convert(selectedColor, this.props.alpha ? "HEXA" : "HEX"),
- autoFocus: true,
- onChange: value => {
- if (hexRegex.test(value)) this.handleColorChange(value);
- },
- inputChildren: this.props.gradient && BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, {
- text: "Gradient",
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Clickable, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickergradientbutton, this.state.gradientBarEnabled && BDFDB.disCN.colorpickergradientbuttonenabled),
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- nativeClass: true,
- width: 28,
- height: 28,
- name: InternalComponents.LibraryComponents.SvgIcon.Names.GRADIENT
- }),
- onClick: _ => {
- this.state.gradientBarEnabled = !this.state.gradientBarEnabled;
- if (this.state.gradientBarEnabled && !this.state.isGradient) this.props.color = {0: selectedColor, 1: selectedColor};
- else if (!this.state.gradientBarEnabled && this.state.isGradient) this.props.color = selectedColor;
- this.state.isGradient = this.props.color && BDFDB.ObjectUtils.is(this.props.color);
- this.handleColorChange();
- }
- })
- })
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: "move-corners",
- children: [{top: 0, left: 0}, {top: 0, right: 0}, {bottom: 0, right: 0}, {bottom: 0, left: 0}].map(pos => BDFDB.ReactUtils.createElement("div", {
- className: "move-corner",
- onMouseDown: e => {
- if (!this.domElementRef.current) return;
- let rects = BDFDB.DOMUtils.getRects(this.domElementRef.current);
- let left = rects.left, top = rects.top;
- let oldX = e.pageX, oldY = e.pageY;
- let mouseup = _ => {
- document.removeEventListener("mouseup", mouseup);
- document.removeEventListener("mousemove", mousemove);
- };
- let mousemove = e2 => {
- left = left - (oldX - e2.pageX), top = top - (oldY - e2.pageY);
- oldX = e2.pageX, oldY = e2.pageY;
- this.domElementRef.current.style.setProperty("left", left + "px", "important");
- this.domElementRef.current.style.setProperty("top", top + "px", "important");
- };
- document.addEventListener("mouseup", mouseup);
- document.addEventListener("mousemove", mousemove);
- },
- style: Object.assign({}, pos, {width: 10, height: 10, cursor: "move", position: "absolute"})
- }))
- })
- ]
- });
- }
- };
-
- InternalComponents.LibraryComponents.ColorSwatches = InternalBDFDB.loadPatchedComp("ColorSwatches") || reactInitialized && class BDFDB_ColorSwatches extends LibraryModules.React.Component {
- constructor(props) {
- super(props);
-
- props.selectedColor = BDFDB.ObjectUtils.is(props.color) ? props.color : BDFDB.ColorUtils.convert(props.color, "RGBA");
- props.colors = (BDFDB.ArrayUtils.is(props.colors) ? props.colors : [null, 5433630, 3066993, 1752220, 3447003, 3429595, 8789737, 10181046, 15277667, 15286558, 15158332, 15105570, 15844367, 13094093, 7372936, 6513507, 16777215, 3910932, 2067276, 1146986, 2123412, 2111892, 7148717, 7419530, 11342935, 11345940, 10038562, 11027200, 12745742, 9936031, 6121581, 2894892]).map(c => BDFDB.ColorUtils.convert(c, "RGBA"));
- props.colorRows = props.colors.length ? [props.colors.slice(0, parseInt(props.colors.length/2)), props.colors.slice(parseInt(props.colors.length/2))] : [];
- props.customColor = props.selectedColor != null ? (props.colors.indexOf(props.selectedColor) > -1 ? null : props.selectedColor) : null;
- props.customSelected = !!props.customColor;
- props.pickerConfig = BDFDB.ObjectUtils.is(props.pickerConfig) ? props.pickerConfig : {gradient: true, alpha: true};
- this.state = props;
-
- var swatches = this;
- this.ColorSwatch = class BDFDB_ColorSwatch extends LibraryModules.React.Component {
- render() {
- let useWhite = !BDFDB.ColorUtils.isBright(this.props.color);
- let swatch = BDFDB.ReactUtils.createElement("button", {
- type: "button",
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickerswatch, this.props.isSingle && BDFDB.disCN.colorpickerswatchsingle, this.props.isDisabled && BDFDB.disCN.colorpickerswatchdisabled, this.props.isSelected && BDFDB.disCN.colorpickerswatchselected, this.props.isCustom && BDFDB.disCN.colorpickerswatchcustom, this.props.color == null && BDFDB.disCN.colorpickerswatchnocolor),
- number: this.props.number,
- disabled: this.props.isDisabled,
- onClick: _ => {
- if (!this.props.isSelected) {
- let color = this.props.isCustom && this.props.color == null ? "rgba(0, 0, 0, 1)" : this.props.color;
- if (typeof swatches.props.onColorChange == "function") swatches.props.onColorChange(BDFDB.ColorUtils.convert(color, "RGBA"));
- swatches.setState({
- selectedColor: color,
- customColor: this.props.isCustom ? color : swatches.state.customColor,
- customSelected: this.props.isCustom
- });
- }
- },
- style: Object.assign({}, this.props.style, {
- background: BDFDB.ObjectUtils.is(this.props.color) ? BDFDB.ColorUtils.createGradient(this.props.color) : BDFDB.ColorUtils.convert(this.props.color, "RGBA")
- }),
- children: [
- this.props.isCustom || this.props.isSingle ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- className: BDFDB.disCN.colorpickerswatchdropper,
- foreground: BDFDB.disCN.colorpickerswatchdropperfg,
- name: InternalComponents.LibraryComponents.SvgIcon.Names.DROPPER,
- width: this.props.isCustom ? 14 : 10,
- height: this.props.isCustom ? 14 : 10,
- color: useWhite ? BDFDB.DiscordConstants.Colors.WHITE : BDFDB.DiscordConstants.Colors.BLACK
- }) : null,
- this.props.isSelected && !this.props.isSingle ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- name: InternalComponents.LibraryComponents.SvgIcon.Names.CHECKMARK,
- width: this.props.isCustom ? 32 : 16,
- height: this.props.isCustom ? 24 : 16,
- color: useWhite ? BDFDB.DiscordConstants.Colors.WHITE : BDFDB.DiscordConstants.Colors.BLACK
- }) : null
- ]
- });
- if (this.props.isCustom || this.props.isSingle || this.props.color == null) swatch = BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, {
- text: this.props.isCustom || this.props.isSingle ? BDFDB.LanguageUtils.LanguageStrings.CUSTOM_COLOR : BDFDB.LanguageUtils.LanguageStrings.DEFAULT,
- tooltipConfig: {type: this.props.isSingle ? "top" : "bottom"},
- children: swatch
- });
- if (this.props.isCustom || this.props.isSingle) swatch = BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutContainer, {
- children: swatch,
- wrap: false,
- popoutClassName: BDFDB.disCNS.colorpickerwrapper + BDFDB.disCN.colorpicker,
- animation: InternalComponents.LibraryComponents.PopoutContainer.Animation.TRANSLATE,
- position: InternalComponents.LibraryComponents.PopoutContainer.Positions.BOTTOM,
- align: InternalComponents.LibraryComponents.PopoutContainer.Align.CENTER,
- renderPopout: _ => {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ColorPicker, Object.assign({
- color: this.props.color,
- onColorChange: color => {
- if (typeof swatches.props.onColorChange == "function") swatches.props.onColorChange(BDFDB.ColorUtils.convert(color, "RGBA"))
- this.props.color = color;
- swatches.setState({
- selectedColor: color,
- customColor: color,
- customSelected: true
- });
- }
- }, props.pickerConfig));
- }
- });
- return swatch;
- }
- }
- }
- renderRow(colors) {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.colorpickerrow,
- wrap: InternalComponents.LibraryComponents.Flex.Wrap.WRAP,
- children: colors.map(color => {
- return BDFDB.ReactUtils.createElement(this.ColorSwatch, {
- color: color,
- isCustom: false,
- isSelected: !this.state.customSelected && color === this.state.selectedColor,
- isDisabled: this.state.disabled
- })
- })
- });
- }
- render() {
- let customSwatch = BDFDB.ReactUtils.createElement(this.ColorSwatch, {
- number: !this.state.colors.length ? (this.props.number != null ? this.props.number : 0) : null,
- color: this.state.customColor,
- isSingle: !this.state.colors.length,
- isCustom: this.state.colors.length,
- isSelected: this.state.customSelected,
- isDisabled: this.state.disabled,
- style: {margin: 0}
- });
- return !this.state.colors.length ? customSwatch : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickerswatches, this.state.disabled && BDFDB.disCN.colorpickerswatchesdisabled),
- number: this.props.number != null ? this.props.number : 0,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- className: BDFDB.disCN.marginreset,
- shrink: 0,
- grow: 0,
- children: customSwatch
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- className: BDFDB.disCN.flexmarginreset,
- grow: 1,
- children: [
- this.renderRow(this.state.colorRows[0]),
- this.renderRow(this.state.colorRows[1])
- ]
- })
- ]
- });
- }
- };
-
- InternalComponents.LibraryComponents.Connectors = Object.assign({}, BDFDB.ModuleUtils.findByProperties("Router", "Link"));
-
- InternalComponents.LibraryComponents.ContextMenuItems = {};
-
- InternalComponents.LibraryComponents.ContextMenuItems.Group = BDFDB.ModuleUtils.findByString(`"div",{className`, `default.itemGroup}`);
-
- InternalComponents.LibraryComponents.ContextMenuItems.Hint = InternalBDFDB.loadPatchedComp("ContextMenuItems.Hint") || reactInitialized && class BDFDB_ContextMenuItemHint extends LibraryModules.React.Component {
- render() {
- let hintIsString = typeof this.props.hint == "string";
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.contextmenuhint,
- style: hintIsString ? {
- width: 42,
- maxWidth: 42,
- marginLeft: 8
- } : {},
- children: hintIsString ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, {
- speed: 2,
- children: this.props.hint
- }) : (this.props.hint || null)
- });
- }
- };
-
- InternalComponents.LibraryComponents.ContextMenuItems.Item = InternalBDFDB.loadPatchedComp("ContextMenuItems.Item") || reactInitialized && class BDFDB_ContextMenuItem extends LibraryModules.React.Component {
- render() {
- let hintIsString = typeof this.props.hint == "string";
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Clickable, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.contextmenuitem, !this.props.disabled && BDFDB.disCN.contextmenuitemclickable, this.props.danger && BDFDB.disCN.contextmenuitemdanger, this.props.disabled && BDFDB.disCN.contextmenuitemdisabled, this.props.brand && BDFDB.disCN.contextmenuitembrand, this.props.className),
- style: this.props.style,
- role: "menuitem",
- onClick: this.props.disabled || typeof this.props.action != "function" ? null : this.props.action,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.contextmenulabel,
- children: this.props.label
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ContextMenuItems.Hint, {hint: this.props.hint}),
- this.props.children
- ]
- });
- }
- };
-
- InternalComponents.LibraryComponents.ContextMenuItems.Slider = InternalBDFDB.loadPatchedComp("ContextMenuItems.Slider") || reactInitialized && class BDFDB_ContextMenuSliderItem extends LibraryModules.React.Component {
- handleValueChange(value) {
- let newvalue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange([0, 100], this.props.edges, value) : value;
- if (typeof this.props.digits == "number") newvalue = Math.round(newvalue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits);
- this.props.defaultValue = newvalue;
- if (typeof this.props.onValueChange == "function") this.props.onValueChange(newvalue, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- handleValueRender(value) {
- let newvalue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange([0, 100], this.props.edges, value) : value;
- if (typeof this.props.digits == "number") newvalue = Math.round(newvalue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits);
- if (typeof this.props.renderLabel == "function") this.props.label = this.props.renderLabel(newvalue);
- if (typeof this.props.onValueRender == "function") {
- let tempReturn = this.props.onValueRender(newvalue, this);
- if (tempReturn != undefined) newvalue = tempReturn;
- }
- return newvalue;
- }
- render() {
- let defaultValue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange(this.props.edges, [0, 100], this.props.defaultValue) : this.props.defaultValue;
- if (typeof this.props.digits == "number") defaultValue = Math.round(defaultValue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits);
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.ContextMenuSliderItem, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- defaultValue: defaultValue,
- label: typeof this.props.renderLabel == "function" ? this.props.renderLabel(this.props.defaultValue) : this.props.label,
- onValueChange: this.handleValueChange.bind(this),
- onValueRender: this.handleValueRender.bind(this)
- }), "digits", "edges", "renderLabel"));
- }
- };
-
- InternalComponents.LibraryComponents.ContextMenuItems.Sub = BDFDB.ModuleUtils.findByName("FluxContainer(SubMenuItem)");
-
- InternalComponents.LibraryComponents.ContextMenuItems.Toggle = InternalBDFDB.loadPatchedComp("ContextMenuItems.Toggle") || reactInitialized && class BDFDB_ContextMenuToggleItem extends LibraryModules.React.Component {
- handleToggle() {
- this.props.active = !this.props.active;
- if (typeof this.props.action == "function") this.props.action(this.props.active);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.ContextMenuToggleItem, Object.assign({}, this.props, {action: this.handleToggle.bind(this)}));
- }
- };
-
- var ComponentTypeData = {};
- ComponentTypeData.NormalContextMenus = ["DeveloperContextMenu", "GuildRoleContextMenu", "NativeContextMenu", "UserSettingsCogContextMenu"];
- ComponentTypeData.FluxContextMenus = ["ApplicationContextMenu", "GroupDMContextMenu"];
- ComponentTypeData.NonRenderContextMenus = ["ChannelContextMenu", "GuildContextMenu", "MessageContextMenu", "SlateContextMenu", "UserContextMenu"];
- ComponentTypeData.ObservedContextMenus = [];
- ComponentTypeData.ExtraPatchedComponents = ["MessageOptionContextMenu", "MessageOptionToolbar"];
- ComponentTypeData.QueuedComponents = [].concat(ComponentTypeData.NonRenderContextMenus, ComponentTypeData.ObservedContextMenus, ComponentTypeData.ExtraPatchedComponents);
-
- InternalComponents.LibraryComponents.ContextMenus = {};
- InternalComponents.LibraryComponents.ContextMenus._Exports = {};
-
- InternalComponents.LibraryComponents.ContextMenus._Types = Object.entries(BDFDB.DiscordConstants.ContextMenuTypes).map(n => n[1]);
-
- InternalComponents.LibraryComponents.ContextMenus.ApplicationContextMenu = BDFDB.ModuleUtils.findByName("FluxContainer(ApplicationContextMenu)");
-
- InternalComponents.LibraryComponents.ContextMenus.ChannelContextMenu = BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.CHANNEL_LIST_TEXT);
- InternalComponents.LibraryComponents.ContextMenus._Exports.ChannelContextMenu = (BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.CHANNEL_LIST_TEXT, false) || {}).exports;
-
- InternalComponents.LibraryComponents.ContextMenus.DeveloperContextMenu = BDFDB.ModuleUtils.findByName("DeveloperContextMenu");
-
- InternalComponents.LibraryComponents.ContextMenus.GroupDMContextMenu = BDFDB.ModuleUtils.findByName("FluxContainer(GroupDMContextMenu)");
-
- InternalComponents.LibraryComponents.ContextMenus.GuildContextMenu = BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.GUILD_CHANNEL_LIST);
- InternalComponents.LibraryComponents.ContextMenus._Exports.GuildContextMenu = (BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.GUILD_CHANNEL_LIST, false) || {}).exports;
-
- InternalComponents.LibraryComponents.ContextMenus.GuildRoleContextMenu = BDFDB.ModuleUtils.findByName("GuildRoleContextMenu");
-
- InternalComponents.LibraryComponents.ContextMenus.MessageContextMenu = BDFDB.ModuleUtils.findByString("message", "target", BDFDB.DiscordConstants.ContextMenuTypes.MESSAGE_MAIN);
- InternalComponents.LibraryComponents.ContextMenus._Exports.MessageContextMenu = (BDFDB.ModuleUtils.findByString("message", "target", BDFDB.DiscordConstants.ContextMenuTypes.MESSAGE_MAIN, false) || {}).exports;
-
- InternalComponents.LibraryComponents.ContextMenus.NativeContextMenu = BDFDB.ModuleUtils.findByName("NativeContextMenu");
-
- InternalComponents.LibraryComponents.ContextMenus.SlateContextMenu = BDFDB.ModuleUtils.findByName("SlateContextMenu");
- InternalComponents.LibraryComponents.ContextMenus._Exports.SlateContextMenu = BDFDB.ModuleUtils.findByName("SlateContextMenu", false);
-
- InternalComponents.LibraryComponents.ContextMenus.UserContextMenu = BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.USER_CHANNEL_MEMBERS);
- InternalComponents.LibraryComponents.ContextMenus._Exports.UserContextMenu = (BDFDB.ModuleUtils.findByString("Error - no such ctx menu type", BDFDB.DiscordConstants.ContextMenuTypes.USER_CHANNEL_MEMBERS, false) || {}).exports;
-
- InternalComponents.LibraryComponents.ContextMenus.UserSettingsCogContextMenu = BDFDB.ModuleUtils.findByName("UserSettingsCogContextMenu");
-
- InternalComponents.LibraryComponents.DiscordTag = BDFDB.ModuleUtils.findByName("DiscordTag");
-
- InternalComponents.LibraryComponents.Emoji = BDFDB.ModuleUtils.findByName("Emoji");
-
- InternalComponents.LibraryComponents.EmojiButton = BDFDB.ModuleUtils.findByName("EmojiButton");
-
- InternalComponents.LibraryComponents.EmojiPicker = BDFDB.ModuleUtils.findByString("allowManagedEmojis", "theme");
-
- InternalComponents.LibraryComponents.EmojiPickerButton = InternalBDFDB.loadPatchedComp("EmojiPickerButton") || reactInitialized && class BDFDB_EmojiPickerButton extends LibraryModules.React.Component {
- handleEmojiChange(emoji) {
- if (emoji != null) {
- this.props.emoji = emoji.id ? {
- id: emoji.id,
- name: emoji.name,
- animated: emoji.animated
- } : {
- id: null,
- name: emoji.optionallyDiverseSequence,
- animated: false
- };
- if (typeof this.props.onSelect == "function") this.props.onSelect(this.props.emoji, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- }
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutContainer, {
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.EmojiButton, {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, BDFDB.disCN.emojiinputbutton),
- renderButtonContents: this.props.emoji ? _ => BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Emoji, {
- className: BDFDB.disCN.emoji,
- emoji: this.props.emoji
- }) : null
- }),
- wrap: false,
- animation: InternalComponents.LibraryComponents.PopoutContainer.Animation.NONE,
- position: InternalComponents.LibraryComponents.PopoutContainer.Positions.TOP,
- align: InternalComponents.LibraryComponents.PopoutContainer.Align.LEFT,
- renderPopout: instance => {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.EmojiPicker, {
- closePopout: instance.close,
- onSelectEmoji: this.handleEmojiChange.bind(this),
- allowManagedEmojis: false
- });
- }
- })
- }
- };
-
- InternalComponents.LibraryComponents.FavButton = InternalBDFDB.loadPatchedComp("FavButton") || reactInitialized && class BDFDB_FavButton extends LibraryModules.React.Component {
- handleClick() {
- this.props.isFavorite = !this.props.isFavorite;
- if (typeof this.props.onClick == "function") this.props.onClick(this.props.isFavorite, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.favbuttoncontainer, this.props.className),
- children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.FavButton, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {onClick: this.handleClick.bind(this)}), "className"))
- });
- }
- };
-
- InternalComponents.LibraryComponents.FileButton = InternalBDFDB.loadPatchedComp("FileButton") || reactInitialized && class BDFDB_FileButton extends LibraryModules.React.Component {
- render() {
- let filter = this.props.filter && [this.props.filter].flat(10).filter(n => typeof n == "string") || [];
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- onClick: e => {e.currentTarget.querySelector("input").click();},
- children: [
- BDFDB.LanguageUtils.LibraryStrings.file_navigator_text,
- BDFDB.ReactUtils.createElement("input", {
- type: "file",
- accept: filter.length && (filter.join("/*,") + "/*"),
- style: {display: "none"},
- onChange: e => {
- let file = e.currentTarget.files[0];
- if (this.refInput && file && (!filter.length || filter.some(n => file.type.indexOf(n) == 0))) {
- this.refInput.props.value = `${this.props.mode == "url" ? "url('" : ""}${(this.props.useFilePath || this.props.useFilepath) ? file.path : `data:${file.type};base64,${BDFDB.LibraryRequires.fs.readFileSync(file.path).toString("base64")}`}${this.props.mode ? "')" : ""}`;
- BDFDB.ReactUtils.forceUpdate(this.refInput);
- this.refInput.handleChange(this.refInput.props.value);
- }
- }
- })
- ]
- }), "filter", "mode", "useFilePath", "useFilepath"));
- }
- };
-
- InternalComponents.LibraryComponents.Flex = BDFDB.ModuleUtils.findByProperties("Wrap", "Direction", "Child");
-
- InternalComponents.LibraryComponents.FlowerStarIcon = BDFDB.ModuleUtils.findByName("FlowerStarIcon");
-
- InternalComponents.LibraryComponents.FormComponents = Object.assign({}, BDFDB.ModuleUtils.findByProperties("FormSection", "FormText"));
-
- InternalComponents.LibraryComponents.FormComponents.FormItem = InternalBDFDB.loadPatchedComp("FormComponents.FormItem") || reactInitialized && class BDFDB_FormItem extends LibraryModules.React.Component {
- render() {
- return BDFDB.ReactUtils.createElement("div", {
- className: this.props.className,
- style: this.props.style,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- align: InternalComponents.LibraryComponents.Flex.Align.BASELINE,
- children: [
- this.props.title != null || this.props.error != null ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- wrap: true,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, {
- tag: this.props.tag || InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H5,
- disabled: this.props.disabled,
- required: this.props.required,
- error: this.props.error,
- className: this.props.titleClassName,
- children: this.props.title
- })
- }) : null
- ].concat([this.props.titlechildren].flat(10)).filter(n => n)
- }),
- ].concat(this.props.children)
- });
- }
- };
-
- InternalComponents.LibraryComponents.GuildComponents = {};
-
- InternalComponents.LibraryComponents.GuildComponents.Badge = BDFDB.ModuleUtils.findByName("GuildBadge");
-
- InternalComponents.LibraryComponents.GuildComponents.BlobMask = BDFDB.ModuleUtils.findByName("BlobMask");
-
- InternalComponents.LibraryComponents.GuildComponents.Guild = InternalBDFDB.loadPatchedComp("GuildComponents.Guild") || reactInitialized && class BDFDB_Guild extends LibraryModules.React.Component {
- constructor(props) {
- super(props);
- this.state = {hovered: false};
- }
- handleMouseEnter(e) {
- if (!this.props.sorting) this.setState({hovered: true});
- if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);
- }
- handleMouseLeave(e) {
- if (!this.props.sorting) this.setState({hovered: false});
- if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);
- }
- handleMouseDown(e) {
- if (!this.props.unavailable && this.props.guild && this.props.selectedChannelId) LibraryModules.DirectMessageUtils.preload(this.props.guild.id, this.props.selectedChannelId);
- if (e.button == 0 && typeof this.props.onMouseDown == "function") this.props.onMouseDown(e, this);
- }
- handleMouseUp(e) {
- if (e.button == 0 && typeof this.props.onMouseUp == "function") this.props.onMouseUp(e, this);
- }
- handleClick(e) {
- if (typeof this.props.onClick == "function") this.props.onClick(e, this);
- }
- handleContextMenu(e) {
- if (this.props.menu) BDFDB.GuildUtils.openMenu(this.props.guild, e);
- if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);
- }
- setRef(e) {
- if (typeof this.props.setRef == "function") this.props.setRef(this.props.guild.id, e)
- }
- componentDidMount() {
- let node = BDFDB.ReactUtils.findDOMNode(this);
- if (node) for (let child of node.querySelectorAll("a")) child.setAttribute("draggable", false);
- }
- render() {
- if (!this.props.guild) return null;
- this.props.guildId = this.props.guild.id;
- this.props.selectedChannelId = LibraryModules.LastChannelStore.getChannelId(this.props.guild.id);
- this.props.selected = this.props.state ? LibraryModules.LastGuildStore.getGuildId() == this.props.guild.id : false;
- this.props.unread = this.props.state ? LibraryModules.UnreadGuildUtils.hasUnread(this.props.guild.id) : false;
- this.props.badge = this.props.state ? LibraryModules.UnreadGuildUtils.getMentionCount(this.props.guild.id) : 0;
- this.props.audio = this.props.state ? (LibraryModules.ChannelStore.getChannel(LibraryModules.LastChannelStore.getVoiceChannelId()) || {}).guild_id == this.props.guild.id : false;
- this.props.video = this.props.state ? (LibraryModules.StreamUtils.getActiveStream() || {}).guildId == this.props.guild.id : false;
- this.props.screenshare = this.props.state ? !!LibraryModules.StreamUtils.getAllApplicationStreams().filter(stream => stream.guildId == this.props.guild.id)[0] : false;
- this.props.isCurrentUserInThisGuildVoice = this.props.state ? !LibraryModules.CurrentVoiceUtils.isDisabled() && LibraryModules.CurrentVoiceUtils.getGuildId() == this.props.guild.id : false;
- this.props.animatable = this.props.state ? LibraryModules.IconUtils.hasAnimatedGuildIcon(this.props.guild) : false;
- this.props.unavailable = this.props.state ? LibraryModules.GuildUnavailableStore.unavailableGuilds.includes(this.props.guild.id) : false;
- var isDraggedGuild = this.props.draggingGuildId === this.props.guild.id;
- let guild = isDraggedGuild ? BDFDB.ReactUtils.createElement("div", {
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.Items.DragPlaceholder, {})
- }) : BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.guildcontainer,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.BlobMask, {
- selected: this.state.isDropHovering || this.props.selected || this.state.hovered,
- upperBadge: this.props.unavailable ? InternalComponents.LibraryComponents.GuildComponents.Items.renderUnavailableBadge() : InternalComponents.LibraryComponents.GuildComponents.Items.renderIconBadge(this.props.audio, this.props.video, this.props.screenshare, this.props.isCurrentUserInThisGuildVoice),
- lowerBadge: this.props.badge > 0 ? InternalComponents.LibraryComponents.GuildComponents.Items.renderMentionBadge(this.props.badge) : null,
- lowerBadgeWidth: InternalComponents.LibraryComponents.Badges.getBadgeWidthForValue(this.props.badge),
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.NavItem, {
- to: {
- pathname: BDFDB.DiscordConstants.Routes.CHANNEL(this.props.guild.id, this.props.selectedChannelId),
- state: {
- analyticsSource: {
- page: BDFDB.DiscordConstants.AnalyticsPages.GUILD_CHANNEL,
- section: BDFDB.DiscordConstants.AnalyticsSections.CHANNEL_LIST,
- object: BDFDB.DiscordConstants.AnalyticsObjects.CHANNEL
- }
- }
- },
- name: this.props.guild.name,
- onMouseEnter: this.handleMouseEnter.bind(this),
- onMouseLeave: this.handleMouseLeave.bind(this),
- onMouseDown: this.handleMouseDown.bind(this),
- onMouseUp: this.handleMouseUp.bind(this),
- onClick: this.handleClick.bind(this),
- onContextMenu: this.handleContextMenu.bind(this),
- icon: this.props.guild.getIconURL(this.state.hovered && this.props.animatable ? "gif" : "jpg"),
- selected: this.props.selected || this.state.hovered
- })
- })
- });
-
- if (this.props.draggable && typeof this.props.connectDragSource == "function") guild = this.props.connectDragSource(guild);
-
- let children = [
- this.props.list || this.props.pill ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.Pill, {
- hovered: !isDraggedGuild && this.state.hovered,
- selected: !isDraggedGuild && this.props.selected,
- unread: !isDraggedGuild && this.props.unread,
- className: BDFDB.disCN.guildpill
- }) : null,
- !this.props.tooltip ? guild : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, {
- tooltipConfig: Object.assign({type: "right"}, this.props.tooltipConfig, {guild: this.props.list && this.props.guild}),
- children: guild
- })
- ].filter(n => n);
- return this.props.list ? InternalComponents.LibraryComponents.GuildComponents.Items.renderListItem(BDFDB.ReactUtils.createElement(BDFDB.ReactUtils.Fragment, {
- children: children
- }), null != this.props.setRef ? this.setRef : null) : BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.guild, this.props.className),
- children: children
- });
- }
- };
- InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.GuildComponents.Guild, {menu:true, tooltip:true, list:false, state:false, draggable:false, sorting:false});
-
- InternalComponents.LibraryComponents.GuildComponents.Icon = BDFDB.ModuleUtils.findByName("GuildIconWrapper");
-
- InternalComponents.LibraryComponents.GuildComponents.Items = BDFDB.ModuleUtils.findByProperties("Separator", "DragPlaceholder");
-
- InternalComponents.LibraryComponents.GuildComponents.Pill = BDFDB.ModuleUtils.findByString("opacity:1,height:", "20:8", "default.item");
-
- InternalComponents.LibraryComponents.HeaderBarComponents = BDFDB.ModuleUtils.findByName("HeaderBarContainer");
-
- InternalComponents.LibraryComponents.KeybindRecorder = InternalBDFDB.loadPatchedComp("KeybindRecorder") || reactInitialized && class BDFDB_KeybindRecorder extends LibraryModules.React.Component {
- handleChange(arrays) {
- if (typeof this.props.onChange == "function") this.props.onChange(arrays.map(platformkey => LibraryModules.KeyEvents.codes[BDFDB.LibraryModules.KeyCodeUtils.codeToKey(platformkey)] || platformkey[1]), this);
- }
- handleReset() {
- this.props.defaultValue = [];
- let recorder = BDFDB.ReactUtils.findOwner(this, {name: "KeybindRecorder"});
- if (recorder) recorder.setState({codes: []});
- if (typeof this.props.onChange == "function") this.props.onChange([], this);
- if (typeof this.props.onReset == "function") this.props.onReset(this);
- }
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.hotkeywrapper,
- direction: InternalComponents.LibraryComponents.Flex.Direction.HORIZONTAL,
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.KeybindRecorder, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- defaultValue: [this.props.defaultValue].flat(10).filter(n => n).map(keycode => [BDFDB.DiscordConstants.KeyboardDeviceTypes.KEYBOARD_KEY, keycode, BDFDB.DiscordConstants.KeyboardEnvs.BROWSER]),
- onChange: this.handleChange.bind(this)
- }), "reset", "onReset")),
- this.props.reset || this.props.onReset ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, {
- text: BDFDB.LanguageUtils.LanguageStrings.REMOVE_KEYBIND,
- tooltipConfig: {type: "top"},
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Clickable, {
- className: BDFDB.disCN.hotkeyresetbutton,
- onClick: this.handleReset.bind(this),
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- iconSVG: ` `,
- })
- })
- }) : null
- ].filter(n => n)
- });
- }
- };
-
- InternalComponents.LibraryComponents.LazyImage = BDFDB.ModuleUtils.findByName("LazyImage");
-
- InternalComponents.LibraryComponents.ListHeader = BDFDB.ModuleUtils.findByName("ListSectionItem");
-
- InternalComponents.LibraryComponents.ListRow = InternalBDFDB.loadPatchedComp("ListRow") || reactInitialized && class BDFDB_ListRow extends LibraryModules.React.Component {
- render () {
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.listrow, this.props.className),
- children: [
- this.props.prefix,
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.listrowcontent,
- style: {flex: "1 1 auto"},
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.listname, this.props.labelClassName),
- style: {flex: "1 1 auto"},
- children: this.props.label
- }),
- typeof this.props.note == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormText, {
- type: InternalComponents.LibraryComponents.FormComponents.FormText.Types.DESCRIPTION,
- children: this.props.note
- }) : null
- ].filter(n => n)
- }),
- this.props.suffix
- ].filter(n => n)
- });
- }
- };
-
- InternalComponents.LibraryComponents.MessageGroup = BDFDB.ModuleUtils.findByName("ChannelMessage");
-
- InternalComponents.LibraryComponents.MessagesPopoutComponents = BDFDB.ModuleUtils.findByProperties("Header", "EmptyStateBottom");
-
- InternalComponents.LibraryComponents.MemberRole = InternalBDFDB.loadPatchedComp("MemberRole") || reactInitialized && class BDFDB_MemberRole extends LibraryModules.React.Component {
- handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);}
- handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);}
- render() {
- let color = BDFDB.ColorUtils.convert(this.props.role.colorString || BDFDB.DiscordConstants.Colors.PRIMARY_DARK_300, "RGB");
- return BDFDB.ReactUtils.createElement("li", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.userpopoutrole, this.props.className),
- style: {borderColor: BDFDB.ColorUtils.setAlpha(color, 0.6)},
- onClick: this.handleClick.bind(this),
- onContextMenu: this.handleContextMenu.bind(this),
- children: [
- !this.props.noCircle ? BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.userpopoutrolecircle,
- style: {backgroundColor: color}
- }) : null,
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.userpopoutrolename,
- children: this.props.role.name
- })
- ].filter(n => n)
- });
- }
- };
-
- InternalComponents.LibraryComponents.ModalComponents = Object.assign({}, BDFDB.ModuleUtils.findByProperties("ModalContent", "ModalFooter"));
-
- InternalComponents.LibraryComponents.ModalComponents.ModalContent = InternalBDFDB.loadPatchedComp("ModalComponents.ModalContent") || reactInitialized && class BDFDB_ModalContent extends LibraryModules.React.Component {
- render() {
- return this.props.scroller ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ScrollerVertical, {
- outerClassName: BDFDB.disCN.modalcontent,
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.modalsubinner, this.props.className),
- theme: InternalComponents.LibraryComponents.ScrollerVertical.Themes.GHOST_HAIRLINE,
- ref: this.props.scrollerRef,
- children: this.props.children
- }) : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.modalcontent,
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- align: InternalComponents.LibraryComponents.Flex.Align.STRETCH,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.modalsubinner, BDFDB.disCN.modalsubinnerscrollerless, this.props.className),
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- align: InternalComponents.LibraryComponents.Flex.Align.STRETCH,
- children: this.props.children
- })
- });
- }
- };
- InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.ModalComponents.ModalContent, {scroller:true});
-
- InternalComponents.LibraryComponents.ModalComponents.ModalTabContent = InternalBDFDB.loadPatchedComp("ModalComponents.ModalTabContent") || reactInitialized && class BDFDB_ModalTabContent extends LibraryModules.React.Component {
- render() {
- let childprops = Object.assign({}, this.props);
- BDFDB.ObjectUtils.delete(childprops, "open");
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, Object.assign({tab:"unnamed"}, childprops, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.modaltabcontent, this.props.open && BDFDB.disCN.modaltabcontentopen, this.props.className),
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- align: InternalComponents.LibraryComponents.Flex.Align.STRETCH,
- style: Object.assign({}, childprops.style, {
- display: this.props.open ? null : "none"
- })
- }));
- }
- };
-
- InternalComponents.LibraryComponents.NavItem = BDFDB.ModuleUtils.findByName("NavItem");
-
- InternalComponents.LibraryComponents.Popout = InternalBDFDB.loadPatchedComp("Popout") || reactInitialized && class BDFDB_Popout extends LibraryModules.React.Component {
- componentWillUnmount() {
- delete this.props.containerInstance.popout;
- if (typeof this.props.onClose == "function") this.props.onClose(this.props.containerInstance, this);
- }
- render() {
- let pos = typeof this.props.position == "string" ? this.props.position.toLowerCase() : null;
- let positionClass = pos && DiscordClasses["popout" + pos] ? BDFDB.disCN["popout" + pos] : BDFDB.disCN.popouttop;
- let arrowClass = !this.props.arrow ? BDFDB.disCN.popoutnoarrow : (pos && pos.indexOf("top") > -1 && pos != "top" ? BDFDB.disCN.popoutarrowalignmenttop : BDFDB.disCN.popoutarrowalignmentmiddle);
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutFocusLock, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.popoutwrapper, BDFDB.disCN.popout, positionClass, this.props.invert && pos && pos != "bottom" && BDFDB.disCN.popoutinvert, arrowClass, !this.props.shadow && BDFDB.disCN.popoutnoshadow),
- id: this.props.id,
- onClick: e => {e.stopPropagation();},
- style: Object.assign({}, this.props.style, {
- position: this.props.isChild ? "relative" : "absolute"
- }),
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.themed && BDFDB.disCN.popoutthemedpopout),
- style: BDFDB.ObjectUtils.extract(this.props, "padding", "height", "maxHeight", "minHeight", "width", "maxWidth", "minWidth"),
- children: this.props.children
- })
- });
- }
- };
- InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.Popout, {themed:true});
-
- InternalComponents.LibraryComponents.PopoutContainer = InternalBDFDB.loadPatchedComp("PopoutContainer") || reactInitialized && class BDFDB_PopoutContainer extends LibraryModules.React.Component {
- handleRender(e) {
- let children = typeof this.props.renderPopout == "function" ? this.props.renderPopout(this) : null;
- return this.popout = !children ? null : (!this.props.wrap ? children : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Popout, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- className: this.props.popoutClassName,
- containerInstance: this,
- isChild: true,
- position: e.position,
- style: this.props.popoutStyle,
- onClose: typeof this.props.onClose == "function" ? this.props.onClose.bind(this) : _ => {},
- children: children
- }), "popoutStyle", "popoutClassName")));
- }
- componentDidMount() {
- let basepopout = BDFDB.ReactUtils.findOwner(this, {name:"BasePopout"});
- if (!basepopout || !basepopout.handleClick) return;
- basepopout.isBDFDBpopout = true;
- this.handleClick = e => {return basepopout.handleClick(BDFDB.ObjectUtils.is(e) ? e : (new MouseEvent({})));};
- this.close = basepopout.close;
- this.domElementRef = basepopout.domElementRef;
- }
- render() {
- let child = (BDFDB.ArrayUtils.is(this.props.children) ? this.props.children[0] : this.props.children) || BDFDB.ReactUtils.createElement("div", {style: {height: "100%", width: "100%"}});
- child.props.className = BDFDB.DOMUtils.formatClassName(child.props.className, this.props.className);
- let childClick = child.props.onClick, childContextMenu = child.props.onContextMenu;
- child.props.onClick = (e, childThis) => {
- if (!this.domElementRef.current || this.domElementRef.current.contains(e.target)) {
- if ((this.props.openOnClick || this.props.openOnClick === undefined) && typeof this.handleClick == "function") this.handleClick(e);
- if (typeof this.props.onClick == "function") this.props.onClick(e, this);
- if (typeof childClick == "function") childClick(e, childThis);
- }
- else e.stopPropagation();
- };
- child.props.onContextMenu = (e, childThis) => {
- if (!this.domElementRef.current || this.domElementRef.current.contains(e.target)) {
- if (this.props.openOnContextMenu && typeof this.handleClick == "function") this.handleClick(e);
- if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);
- if (typeof childContextMenu == "function") childContextMenu(e, childThis);
- }
- else e.stopPropagation();
- };
- return BDFDB.ReactUtils.createElement(LibraryModules.React.Fragment, {
- children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.PopoutContainer, Object.assign({}, this.props, {
- children: _ => {return child;},
- renderPopout: this.handleRender.bind(this)
- }))
- });
- }
- };
- InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.PopoutContainer, {wrap:true});
-
- InternalComponents.LibraryComponents.PopoutFocusLock = BDFDB.ModuleUtils.findByString("useFocusLock", "useImperativeHandle");
-
- InternalComponents.LibraryComponents.PrivateChannelItems = BDFDB.ModuleUtils.findByProperties("DirectMessage", "GroupDM");
-
- InternalComponents.LibraryComponents.QuickSelect = InternalBDFDB.loadPatchedComp("QuickSelect") || reactInitialized && class BDFDB_QuickSelect extends LibraryModules.React.Component {
- handleChange(option) {
- this.props.value = option;
- if (typeof this.props.onChange == "function") this.props.onChange(option.value || option.key, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- let options = (BDFDB.ArrayUtils.is(this.props.options) ? this.props.options : [{}]).filter(n => n);
- let selectedOption = BDFDB.ObjectUtils.is(this.props.value) ? this.props.value : (options[0] || {});
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutContainer, Object.assign({}, this.props, {
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, BDFDB.disCN.quickselectwrapper),
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.quickselect,
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.quickselectlabel,
- children: this.props.label
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- className: BDFDB.disCN.quickselectclick,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.quickselectvalue,
- children: typeof this.props.renderValue == "function" ? this.props.renderValue(this.props.value) : this.props.value.label
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.quickselectarrow
- })
- ]
- })
- ]
- })
- }),
- popoutClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.quickselectpopout, this.props.popoutClassName, BDFDB.disCN.contextmenu, BDFDB.disCN.quickselectpopoutwrapper, this.props.scroller && BDFDB.disCN.quickselectpopoutscroll),
- themed: false,
- animation: InternalComponents.LibraryComponents.PopoutContainer.Animation.TRANSLATE,
- position: InternalComponents.LibraryComponents.PopoutContainer.Positions.BOTTOM,
- align: InternalComponents.LibraryComponents.PopoutContainer.Align.RIGHT,
- renderPopout: instance => {
- let items = options.map(option => {
- let selected = option.value && option.value === selectedOption.value || option.key && option.key === selectedOption.key;
- return typeof this.props.renderOption == "function" ? this.props.renderOption(option) : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ContextMenuItems.Item, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.quickselectpopoutoption, selected && BDFDB.disCN.quickselectpopoutoptionselected),
- action: selected ? null : _ => {
- instance.close();
- this.handleChange.bind(this)(option)
- },
- label: option.label
- });
- });
- return this.props.scroller ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ScrollerVertical, {
- className: BDFDB.disCN.quickselectscroller,
- children: items
- }) : items;
- }
- }));
- }
- };
-
- InternalComponents.LibraryComponents.QuickSwitchItems = BDFDB.ModuleUtils.findByProperties("Channel", "GroupDM", "Header");
-
- InternalComponents.LibraryComponents.QuickSwitchMenu = BDFDB.ModuleUtils.findByName("QuickSwitcher");
-
- InternalComponents.LibraryComponents.RadioGroup = InternalBDFDB.loadPatchedComp("RadioGroup") || reactInitialized && class BDFDB_RadioGroup extends LibraryModules.React.Component {
- handleChange(value) {
- this.props.value = value.value;
- if (typeof this.props.onChange == "function") this.props.onChange(value, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.RadioGroup, Object.assign({}, this.props, {
- onChange: this.handleChange.bind(this)
- }));
- }
- };
-
- InternalComponents.LibraryComponents.ScrollerHorizontal = BDFDB.ModuleUtils.findByName("HorizontalScroller");
-
- InternalComponents.LibraryComponents.ScrollerVertical = BDFDB.ModuleUtils.findByName("VerticalScroller");
-
- InternalComponents.LibraryComponents.SearchBar = InternalBDFDB.loadPatchedComp("SearchBar") || reactInitialized && class BDFDB_SearchBar extends LibraryModules.React.Component {
- handleChange(query) {
- this.props.query = query;
- if (typeof this.props.onChange == "function") this.props.onChange(query, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- handleClear() {
- this.props.query = "";
- if (this.props.changeOnClear && typeof this.props.onChange == "function") this.props.onChange("", this);
- if (typeof this.props.onClear == "function") this.props.onClear(this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- let props = Object.assign({}, this.props, {
- onChange: this.handleChange.bind(this),
- onClear: this.handleClear.bind(this)
- });
- if (typeof props.query != "string") props.query = "";
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.SearchBar, props);
- }
- };
-
- InternalComponents.LibraryComponents.Select = InternalBDFDB.loadPatchedComp("Select") || reactInitialized && class BDFDB_Select extends LibraryModules.React.Component {
- handleChange(value) {
- this.props.value = value;
- if (typeof this.props.onChange == "function") this.props.onChange(value, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.selectwrapper,
- direction: InternalComponents.LibraryComponents.Flex.Direction.HORIZONTAL,
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Select, Object.assign({}, this.props, {
- onChange: this.handleChange.bind(this)
- }))
- });
- }
- };
-
- InternalComponents.LibraryComponents.SettingsGuildList = InternalBDFDB.loadPatchedComp("SettingsGuildList") || reactInitialized && class BDFDB_SettingsGuildList extends LibraryModules.React.Component {
- render() {
- this.props.disabled = BDFDB.ArrayUtils.is(this.props.disabled) ? this.props.disabled : [];
- return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Flex, {
- className: this.props.className,
- wrap: BDFDB.LibraryComponents.Flex.Wrap.WRAP,
- children: [this.props.includeDMs && {name:"Direct Messages", acronym:"DMs", id:BDFDB.DiscordConstants.ME, getIconURL: _ => {}}].concat(BDFDB.LibraryModules.FolderStore.getFlattenedGuilds()).filter(n => n).map(guild => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
- text: guild.name,
- children: BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(this.props.guildClassName, BDFDB.disCN.settingsguild, this.props.disabled.includes(guild.id) && BDFDB.disCN.settingsguilddisabled),
- children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.GuildComponents.Icon, {
- guild: guild,
- size: this.props.size || BDFDB.LibraryComponents.GuildComponents.Icon.Sizes.MEDIUM
- }),
- onClick: e => {
- let isDisabled = this.props.disabled.includes(guild.id);
- if (isDisabled) BDFDB.ArrayUtils.remove(this.props.disabled, guild.id, true);
- else this.props.disabled.push(guild.id);
- if (typeof this.props.onClick == "function") this.props.onClick(this.props.disabled, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- })
- }))
- });
- }
- };
-
- InternalComponents.LibraryComponents.SettingsPanel = InternalBDFDB.loadPatchedComp("SettingsPanel") || reactInitialized && class BDFDB_SettingsPanel extends LibraryModules.React.Component {
- render() {
- return this.props.children ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- grow: 1,
- children: [
- typeof this.props.title == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, {
- className: BDFDB.disCN.settingspaneltitle,
- tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H2,
- children: this.props.title
- }) : null,
- typeof this.props.title == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, {
- className: BDFDB.disCNS.margintop4 + BDFDB.disCN.marginbottom8
- }) : null,
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.settingspanelinner,
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- children: this.props.children
- })
- ]
- }) : null;
- }
- };
-
- InternalComponents.LibraryComponents.SettingsPanelInner = InternalBDFDB.loadPatchedComp("SettingsPanelInner") || reactInitialized && class BDFDB_SettingsPanelInner extends LibraryModules.React.Component {
- render() {
- return this.props.children ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: this.props.className,
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- children: [
- !this.props.first ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, {
- className: BDFDB.disCN.marginbottom8
- }) : null,
- typeof this.props.title == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, {
- className: BDFDB.disCN.marginbottom4,
- tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H3,
- children: this.props.title
- }) : null,
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.settingspanellist,
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- children: this.props.children
- }),
- !this.props.last ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, {
- className: BDFDB.disCN.marginbottom20
- }) : null
- ]
- }) : null;
- }
- };
-
- InternalComponents.LibraryComponents.SettingsItem = InternalBDFDB.loadPatchedComp("SettingsItem") || reactInitialized && class BDFDB_SettingsItem extends LibraryModules.React.Component {
- handleChange(value) {
- if (typeof this.props.onChange == "function") this.props.onChange(value, this);
- }
- render() {
- if (typeof this.props.type != "string" || !["BUTTON", "SELECT", "SWITCH", "TEXTINPUT"].includes(this.props.type.toUpperCase())) return null;
- let childcomponent = InternalComponents.LibraryComponents[this.props.type];
- if (!childcomponent) return null;
- if (this.props.mini && childcomponent.Sizes) this.props.size = childcomponent.Sizes.MINI || childcomponent.Sizes.MIN;
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.disabled && BDFDB.disCN.disabled),
- id: this.props.id,
- direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL,
- align: InternalComponents.LibraryComponents.Flex.Align.STRETCH,
- grow: this.props.grow,
- stretch: this.props.stretch,
- children: [
- this.props.dividertop ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, {
- className: this.props.mini ? BDFDB.disCN.marginbottom4 : BDFDB.disCN.marginbottom8
- }) : null,
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- children: [
- this.props.label ? (this.props.tag ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, {
- className: BDFDB.DOMUtils.formatClassName(this.props.labelClassName, BDFDB.disCN.marginreset),
- tag: this.props.tag,
- children: this.props.label
- }) : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsLabel, {
- className: this.props.labelClassName,
- mini: this.props.mini,
- label: this.props.label
- })
- })) : null,
- this.props.labelchildren,
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- grow: 0,
- shrink: this.props.basis ? 0 : 1,
- basis: this.props.basis,
- wrap: true,
- children: BDFDB.ReactUtils.createElement(childcomponent, BDFDB.ObjectUtils.exclude(Object.assign(BDFDB.ObjectUtils.exclude(this.props, "className", "id", "type"), this.props.childProps, {onChange: this.handleChange.bind(this)}), "grow", "stretch", "basis", "dividerbottom", "dividertop", "label", "labelClassName", "labelchildren", "tag", "mini", "note", "childProps"))
- })
- ].flat(10).filter(n => n)
- }),
- typeof this.props.note == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- className: BDFDB.disCN.note,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormText, {
- disabled: this.props.disabled,
- type: InternalComponents.LibraryComponents.FormComponents.FormText.Types.DESCRIPTION,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, {speed: 2, children: this.props.note})
- })
- }) : null,
- this.props.dividerbottom ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, {
- className: this.props.mini ? BDFDB.disCN.margintop4 : BDFDB.disCN.margintop8
- }) : null
- ]
- });
- }
- };
-
- InternalComponents.LibraryComponents.SettingsLabel = InternalBDFDB.loadPatchedComp("SettingsLabel") || reactInitialized && class BDFDB_SettingsLabel extends LibraryModules.React.Component {
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, {
- className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.mini ? BDFDB.disCN.titlemini : BDFDB.disCN.titledefault, BDFDB.disCN.cursordefault),
- speed: 2,
- children: this.props.label
- });
- }
- };
-
- InternalComponents.LibraryComponents.SettingsList = InternalBDFDB.loadPatchedComp("SettingsList") || reactInitialized && class BDFDB_SettingsList extends LibraryModules.React.Component {
- componentDidMount() {
- let list = BDFDB.ReactUtils.findDOMNode(this);
- if (list && !this.props.maxWidth) {
- let headers = Array.from(list.querySelectorAll(BDFDB.dotCN.settingstableheader));
- headers.shift();
- if (BDFDB.DOMUtils.getRects(headers[0]).width == 0) BDFDB.TimeUtils.timeout(_ => {this.resizeList(list, headers);});
- else this.resizeList(list, headers);
- }
- }
- resizeList(list, headers) {
- let maxWidth = 0, biggestWidth = 0;
- if (!maxWidth) {
- for (let header of headers) {
- header.style = "";
- let width = BDFDB.DOMUtils.getRects(header).width;
- maxWidth = width > maxWidth ? width : maxWidth;
- }
- maxWidth += 4;
- biggestWidth = maxWidth;
- }
- if (headers.length * maxWidth > 300) {
- this.props.vertical = true;
- maxWidth = parseInt(290 / headers.length);
- }
- else if (maxWidth < 36) {
- maxWidth = 36;
- biggestWidth = maxWidth;
- }
- this.props.maxWidth = maxWidth;
- this.props.biggestWidth = biggestWidth;
- this.props.fullWidth = BDFDB.DOMUtils.getRects(list).width;
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- this.props.settings = BDFDB.ArrayUtils.is(this.props.settings) ? this.props.settings : [];
- this.props.renderLabel = typeof this.props.renderLabel == "function" ? this.props.renderLabel : data => data.label;
- let labelWidth = this.props.maxWidth && this.props.fullWidth && (this.props.fullWidth - 20 - (this.props.maxWidth * this.props.settings.length));
- let configWidth = this.props.maxWidth && this.props.maxWidth * this.props.settings.length;
- let isHeaderClickable = typeof this.props.onHeaderClick == "function" || typeof this.props.onHeaderContextMenu == "function";
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.settingstablelist, this.props.className),
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.settingstableheaders,
- align: InternalComponents.LibraryComponents.Flex.Align.STRETCH,
- style: this.props.vertical && this.props.biggestWidth ? {
- marginTop: this.props.biggestWidth - 15 || 0
- } : {},
- children: [].concat(this.props.title || "", this.props.settings).map((setting, i) => BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(i == 0 ? BDFDB.disCN.settingstableheadername : BDFDB.disCN.settingstableheaderoption, i != 0 && this.props.vertical && BDFDB.disCN.settingstableheadervertical, BDFDB.disCN.colorbase, BDFDB.disCN.size10, isHeaderClickable && BDFDB.disCN.cursorpointer),
- onClick: _ => {if (typeof this.props.onHeaderClick == "function") this.props.onHeaderClick(setting, this);},
- onContextMenu: _ => {if (typeof this.props.onHeaderContextMenu == "function") this.props.onHeaderContextMenu(setting, this);},
- style: i != 0 && this.props.maxWidth ? {
- maxWidth: this.props.maxWidth,
- width: this.props.maxWidth,
- flex: `0 0 ${this.props.maxWidth}px`
- } : {},
- children: BDFDB.ReactUtils.createElement("span", {
- children: setting
- })
- }))
- }),
- (BDFDB.ArrayUtils.is(this.props.data) ? this.props.data : [{}]).filter(n => n).map(data => BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Card, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- className: BDFDB.DOMUtils.formatClassName([this.props.cardClassName, data.className].filter(n => n).join(" ").indexOf(BDFDB.disCN.card) == -1 && BDFDB.disCN.cardprimaryoutline, BDFDB.disCN.settingstablecard, this.props.cardClassName, data.className),
- cardId: data.key,
- backdrop: false,
- style: Object.assign({}, this.props.cardStyle, data.style),
- children: [
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.settingstablecardlabel,
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- grow: 0,
- shrink: 0,
- basis: labelWidth || "auto",
- style: {maxWidth: labelWidth || null},
- children: this.props.renderLabel(data)
- }),
- BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- className: BDFDB.disCN.settingstablecardconfigs,
- justify: InternalComponents.LibraryComponents.Flex.Justify.AROUND,
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- grow: 0,
- shrink: 0,
- basis: configWidth || "auto",
- style: {maxWidth: configWidth || null},
- children: this.props.settings.map(setting => BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- className: BDFDB.disCN.checkboxcontainer,
- grow: 0,
- shrink: 0,
- wrap: true,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Checkbox, {
- disabled: data.disabled,
- cardId: data.key,
- settingId: setting,
- shape: InternalComponents.LibraryComponents.Checkbox.Shapes.ROUND,
- type: InternalComponents.LibraryComponents.Checkbox.Types.INVERTED,
- value: data[setting],
- onChange: this.props.onCheckboxChange
- })
- })).flat(10).filter(n => n)
- })
- ]
- }), "title", "data", "settings", "renderLabel", "cardClassName", "cardStyle", "onCheckboxChange", "maxWidth", "fullWidth")))
- ]
- });
- }
- };
-
- InternalComponents.LibraryComponents.SettingsSaveItem = InternalBDFDB.loadPatchedComp("SettingsSaveItem") || reactInitialized && class BDFDB_SettingsSaveItem extends LibraryModules.React.Component {
- saveSettings(value) {
- if (!BDFDB.ArrayUtils.is(this.props.keys) || !BDFDB.ObjectUtils.is(this.props.plugin)) return;
- let keys = this.props.keys.filter(n => n);
- let option = keys.shift();
- if (BDFDB.ObjectUtils.is(this.props.plugin) && option) {
- let data = BDFDB.DataUtils.load(this.props.plugin, option);
- let newdata = "";
- for (let key of keys) newdata += `{"${key}":`;
- value = value != null && value.value != null ? value.value : value;
- let isString = typeof value == "string";
- let marker = isString ? `"` : ``;
- newdata += (marker + (isString ? value.replace(/\\/g, "\\\\") : value) + marker) + "}".repeat(keys.length);
- newdata = JSON.parse(newdata);
- BDFDB.DataUtils.save(BDFDB.ObjectUtils.is(newdata) ? BDFDB.ObjectUtils.deepAssign({}, data, newdata) : newdata, this.props.plugin, option);
- this.props.plugin.SettingsUpdated = true;
- }
- if (typeof this.props.onChange == "function") this.props.onChange(value, this);
- }
- render() {
- if (typeof this.props.type != "string" || !["SELECT", "SWITCH", "TEXTINPUT"].includes(this.props.type.toUpperCase())) return null;
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsItem, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- onChange: this.saveSettings.bind(this)
- }), "keys", "plugin"));
- }
- };
-
- InternalComponents.LibraryComponents.Slider = InternalBDFDB.loadPatchedComp("Slider") || reactInitialized && class BDFDB_Slider extends LibraryModules.React.Component {
- handleValueChange(value) {
- let newvalue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange([0, 100], this.props.edges, value) : value;
- if (typeof this.props.digits == "number") newvalue = Math.round(newvalue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits);
- this.props.defaultValue = newvalue;
- if (typeof this.props.onValueChange == "function") this.props.onValueChange(newvalue, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- handleValueRender(value) {
- let newvalue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange([0, 100], this.props.edges, value) : value;
- if (typeof this.props.digits == "number") newvalue = Math.round(newvalue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits);
- if (typeof this.props.onValueRender == "function") {
- let tempReturn = this.props.onValueRender(newvalue, this);
- if (tempReturn != undefined) newvalue = tempReturn;
- }
- return newvalue;
- }
- render() {
- let defaultValue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange(this.props.edges, [0, 100], this.props.defaultValue) : this.props.defaultValue;
- if (typeof this.props.digits == "number") defaultValue = Math.round(defaultValue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits);
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Slider, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- initialValue: defaultValue,
- onValueChange: this.handleValueChange.bind(this),
- onValueRender: this.handleValueRender.bind(this)
- }), "digits", "edges"));
- }
- };
-
- InternalComponents.LibraryComponents.Spinner = BDFDB.ModuleUtils.findByName("Spinner");
-
- InternalComponents.LibraryComponents.SvgIcon = InternalBDFDB.loadPatchedComp("SvgIcon") || reactInitialized && class BDFDB_Icon extends LibraryModules.React.Component {
- render() {
- if (BDFDB.ObjectUtils.is(this.props.name)) {
- if (this.props.className) this.props.nativeClass = true;
- this.props.iconSVG = this.props.name.icon;
- let props = Object.assign({
- width: 24,
- height: 24,
- color: "currentColor"
- }, this.props.name.defaultProps, this.props);
- for (let key in props) this.props.iconSVG = this.props.iconSVG.replace(new RegExp(`%%${key}`, "g"), props[key]);
- }
- if (this.props.iconSVG) {
- let icon = BDFDB.ReactUtils.elementToReact(BDFDB.DOMUtils.create(this.props.iconSVG));
- if (BDFDB.ReactUtils.isValidElement(icon)) {
- icon.props.className = BDFDB.DOMUtils.formatClassName(!this.props.nativeClass && BDFDB.disCN.svgicon, icon.props.className, this.props.className);
- icon.props.style = Object.assign({}, icon.props.style, this.props.style);
- icon.props = Object.assign({}, BDFDB.ObjectUtils.extract(this.props, "onClick", "onContextMenu", "onMouseDown", "onMouseUp", "onMouseEnter", "onMouseLeave"), icon.props);
- return icon;
- }
- }
- return null;
- }
- };
- InternalComponents.LibraryComponents.SvgIcon.Names = {
- CHANGELOG: {
- icon: ` `
- },
- CHECKMARK: {
- defaultProps: {
- width: 18,
- height: 18
- },
- icon: ` `
- },
- CLOSE: {
- defaultProps: {
- width: 12,
- height: 12
- },
- icon: ` `
- },
- CLOSE_CIRCLE: {
- icon: ` `
- },
- CROWN: {
- icon: ` `
- },
- DROPPER: {
- defaultProps: {
- width: 16,
- height: 16,
- foreground: ""
- },
- icon: ` `
- },
- FOLDER: {
- icon: ` `
- },
- GITHUB: {
- icon: ` `
- },
- GRADIENT: {
- defaultProps: {
- width: 36,
- height: 36
- },
- icon: ` `
- },
- LEFT_CARET: {
- icon: ` `
- },
- LOCK_CLOSED: {
- icon: ` `
- },
- NOVA_AT: {
- icon: ` `
- },
- NOVA_PIN: {
- icon: ` `
- },
- NOVA_TRASH: {
- icon: ` `
- },
- PENCIL: {
- defaultProps: {
- width: 16,
- height: 16
- },
- icon: ` `
- },
- PIN: {
- defaultProps: {
- width: 16,
- height: 16
- },
- icon: ` `
- },
- RAW_TEXT: {
- icon: ` `
- },
- RIGHT_CARET: {
- icon: ` `
- },
- SPEAKER: {
- icon: ` `
- },
- STREAM: {
- icon: ` `
- }
- };
-
- InternalComponents.LibraryComponents.Switch = InternalBDFDB.loadPatchedComp("Switch") || reactInitialized && class BDFDB_Switch extends LibraryModules.React.Component {
- handleChange() {
- this.props.value = !this.props.value;
- if (typeof this.props.onChange == "function") this.props.onChange(this.props.value, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Switch, Object.assign({}, this.props, {onChange: this.handleChange.bind(this)}));
- }
- };
-
- InternalComponents.LibraryComponents.TabBar = InternalBDFDB.loadPatchedComp("TabBar") || reactInitialized && class BDFDB_TabBar extends LibraryModules.React.Component {
- handleItemSelect(item) {
- this.props.selectedItem = item;
- if (typeof this.props.onItemSelect == "function") this.props.onItemSelect(item, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- render() {
- let items = (BDFDB.ArrayUtils.is(this.props.items) ? this.props.items : [{}]).filter(n => n);
- let selectedItem = this.props.selectedItem || (items[0] || {}).value;
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.TabBar, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- selectedItem: selectedItem,
- onItemSelect: this.handleItemSelect.bind(this),
- children: items.map(data => {
- return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TabBar.Item, {
- className: BDFDB.DOMUtils.formatClassName(this.props.itemClassName, selectedItem == data.value && this.props.itemSelectedClassName),
- itemType: this.props.type,
- id: data.value,
- children: data.label || data.value,
- "aria-label": data.label || data.value
- })
- })
- }), "itemClassName", "items"));
- }
- };
-
- InternalComponents.LibraryComponents.Table = InternalBDFDB.loadPatchedComp("Table") || reactInitialized && class BDFDB_Table extends LibraryModules.React.Component {
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Table, Object.assign({}, this.props, {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.table, this.props.className),
- headerClassName: BDFDB.DOMUtils.formatClassName(this.props.stickyHeader ? BDFDB.disCN.tablestickyheader : BDFDB.disCN.tableheader, this.props.headerClassName),
- headerCellClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tableheadercell, this.props.headerCellClassName),
- sortedHeaderCellClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tableheadercellsorted, this.props.sortedHeaderCellClassName),
- bodyCellClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tablebodycell, this.props.bodyCellClassName),
- rowClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tablerow, this.props.rowClassName),
- onSort: (sortKey, sortDirection) => {
- this.props.sortDirection = this.props.sortKey != sortKey && sortDirection == InternalComponents.LibraryComponents.Table.SortDirection.ASCENDING && this.props.columns.filter(n => n.key == sortKey)[0].reverse ? InternalComponents.LibraryComponents.Table.SortDirection.DESCENDING : sortDirection;
- this.props.sortKey = sortKey;
- this.props.data = BDFDB.ArrayUtils.keySort(this.props.data, this.props.sortKey);
- if (this.props.sortDirection == InternalComponents.LibraryComponents.Table.SortDirection.DESCENDING) this.props.data.reverse();
- if (typeof this.props.onSort == "function") this.props.onSort(this.props.sortKey, this.props.sortDirection);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- }));
- }
- };
-
- InternalComponents.LibraryComponents.TextArea = InternalBDFDB.loadPatchedComp("TextArea") || reactInitialized && class BDFDB_TextArea extends LibraryModules.React.Component {
- handleChange(e) {
- this.props.value = e;
- if (typeof this.props.onChange == "function") this.props.onChange(e, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- handleBlur(e) {if (typeof this.props.onBlur == "function") this.props.onBlur(e, this);}
- handleFocus(e) {if (typeof this.props.onFocus == "function") this.props.onFocus(e, this);}
- render() {
- return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.TextArea, Object.assign({}, this.props, {
- onChange: this.handleChange.bind(this),
- onBlur: this.handleBlur.bind(this),
- onFocus: this.handleFocus.bind(this)
- }));
- }
- };
-
- InternalComponents.LibraryComponents.TextElement = BDFDB.ModuleUtils.findByName("Text");
-
- InternalComponents.LibraryComponents.TextGradientElement = InternalBDFDB.loadPatchedComp("TextGradientElement") || reactInitialized && class BDFDB_TextGradientElement extends LibraryModules.React.Component {
- render() {
- if (this.props.gradient && this.props.children) return BDFDB.ReactUtils.createElement("span", {
- children: this.props.children,
- ref: instance => {
- let ele = BDFDB.ReactUtils.findDOMNode(instance);
- if (ele) {
- ele.style.setProperty("background-image", this.props.gradient, "important");
- ele.style.setProperty("color", "transparent", "important");
- ele.style.setProperty("-webkit-background-clip", "text", "important");
- }
- }
- });
- return this.props.children || null;
- }
- };
-
- InternalComponents.LibraryComponents.TextInput = InternalBDFDB.loadPatchedComp("TextInput") || reactInitialized && class BDFDB_TextInput extends LibraryModules.React.Component {
- handleChange(e) {
- let value = e = BDFDB.ObjectUtils.is(e) ? e.currentTarget.value : e;
- this.props.value = this.props.valuePrefix && !value.startsWith(this.props.valuePrefix) ? (this.props.valuePrefix + value) : value;
- if (typeof this.props.onChange == "function") this.props.onChange(this.props.value, this);
- BDFDB.ReactUtils.forceUpdate(this);
- }
- handleInput(e) {if (typeof this.props.onInput == "function") this.props.onInput(BDFDB.ObjectUtils.is(e) ? e.currentTarget.value : e, this);}
- handleKeyDown(e) {if (typeof this.props.onKeyDown == "function") this.props.onKeyDown(e, this);}
- handleBlur(e) {if (typeof this.props.onBlur == "function") this.props.onBlur(e, this);}
- handleFocus(e) {if (typeof this.props.onFocus == "function") this.props.onFocus(e, this);}
- handleMouseEnter(e) {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);}
- handleMouseLeave(e) {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);}
- handleNumberButton(ins, value) {
- BDFDB.TimeUtils.clear(ins.pressedTimeout);
- ins.pressedTimeout = BDFDB.TimeUtils.timeout(_ => {
- delete this.props.focused;
- BDFDB.ReactUtils.forceUpdate(this);
- }, 1000);
- this.props.focused = true;
- this.handleChange.bind(this)(value);
- this.handleInput.bind(this)(value);
- }
- componentDidMount() {
- if (this.props.type == "file") {
- let navigatorInstance = BDFDB.ReactUtils.findOwner(this, {name: "BDFDB_FileButton"});
- if (navigatorInstance) navigatorInstance.refInput = this;
- }
- let input = BDFDB.ReactUtils.findDOMNode(this);
- if (!input) return;
- input = input.querySelector("input") || input;
- if (input && !input.patched) {
- input.addEventListener("keydown", e => {
- this.handleKeyDown.bind(this)(e);
- e.stopImmediatePropagation();
- });
- input.patched = true;
- }
- }
- render() {
- let inputChildren = [
- BDFDB.ReactUtils.createElement("input", BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
- className: BDFDB.DOMUtils.formatClassName(this.props.size && InternalComponents.LibraryComponents.TextInput.Sizes[this.props.size.toUpperCase()] && BDFDB.disCN["input" + this.props.size.toLowerCase()] || BDFDB.disCN.inputdefault, this.props.inputClassName, this.props.focused && BDFDB.disCN.inputfocused, this.props.error || this.props.errorMessage ? BDFDB.disCN.inputerror : (this.props.success && BDFDB.disCN.inputsuccess), this.props.disabled && BDFDB.disCN.inputdisabled, this.props.editable && BDFDB.disCN.inputeditable),
- type: this.props.type == "color" || this.props.type == "file" ? "text" : this.props.type,
- onChange: this.handleChange.bind(this),
- onInput: this.handleInput.bind(this),
- onKeyDown: this.handleKeyDown.bind(this),
- onBlur: this.handleBlur.bind(this),
- onFocus: this.handleFocus.bind(this),
- onMouseEnter: this.handleMouseEnter.bind(this),
- onMouseLeave: this.handleMouseLeave.bind(this),
- maxLength: this.props.type == "file" ? false : this.props.maxLength,
- ref: this.props.inputRef
- }), "errorMessage", "focused", "error", "success", "inputClassName", "inputChildren", "valuePrefix", "inputPrefix", "size", "editable", "inputRef", "style", "mode", "filter", "useFilePath", "useFilepath")),
- this.props.inputChildren,
- this.props.type == "color" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
- wrap: true,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ColorSwatches, {
- colors: [],
- color: this.props.value && this.props.mode == "comp" ? BDFDB.ColorUtils.convert(this.props.value.split(","), "RGB") : this.props.value,
- onColorChange: color => {
- this.handleChange(!color ? "" : (this.props.mode == "comp" ? BDFDB.ColorUtils.convert(color, "RGBCOMP").slice(0, 3).join(",") : color));
- },
- pickerConfig: {gradient:false, alpha:this.props.mode != "comp"}
- })
- }) : null,
- this.props.type == "file" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FileButton, {
- filter: this.props.filter,
- mode: this.props.mode,
- useFilePath: this.props.useFilePath || this.props.useFilepath,
- }) : null
- ].flat(10).filter(n => n);
-
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.inputwrapper, this.props.type == "number" && (this.props.size && InternalComponents.LibraryComponents.TextInput.Sizes[this.props.size.toUpperCase()] && BDFDB.disCN["inputnumberwrapper" + this.props.size.toLowerCase()] || BDFDB.disCN.inputnumberwrapperdefault), this.props.className),
- style: this.props.style,
- children: [
- this.props.inputPrefix ? BDFDB.ReactUtils.createElement("span", {
- className: BDFDB.disCN.inputprefix
- }) : null,
- this.props.type == "number" ? BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.inputnumberbuttons,
- children: [
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.inputnumberbuttonup,
- onClick: e => {
- let min = parseInt(this.props.min);
- let max = parseInt(this.props.max);
- let newv = parseInt(this.props.value) + 1 || min || 0;
- if (isNaN(max) || !isNaN(max) && newv <= max) this.handleNumberButton.bind(this)(e._targetInst, isNaN(min) || !isNaN(min) && newv >= min ? newv : min);
- }
- }),
- BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN.inputnumberbuttondown,
- onClick: e => {
- let min = parseInt(this.props.min);
- let max = parseInt(this.props.max);
- let newv = parseInt(this.props.value) - 1 || min || 0;
- if (isNaN(min) || !isNaN(min) && newv >= min) this.handleNumberButton.bind(this)(e._targetInst, isNaN(max) || !isNaN(max) && newv <= max ? newv : max);
- }
- })
- ]
- }) : null,
- inputChildren.length == 1 ? inputChildren[0] : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
- align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
- children: inputChildren.map((child, i) => i != 0 ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {shrink: 0, children: child}) : child)
- }),
- this.props.errorMessage ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, {
- className: BDFDB.disCN.carderror,
- size: InternalComponents.LibraryComponents.TextElement.Sizes.SIZE_12,
- color: InternalComponents.LibraryComponents.TextElement.Colors.STATUS_RED,
- children: this.props.errorMessage
- }) : null
- ].filter(n => n)
- });
- }
- };
-
- InternalComponents.LibraryComponents.TextScroller = InternalBDFDB.loadPatchedComp("TextScroller") || reactInitialized && class BDFDB_TextScroller extends LibraryModules.React.Component {
- render() {
- return BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textscroller, this.props.className),
- style: Object.assign({}, this.props.style, {
- position: "relative",
- display: "block",
- overflow: "hidden"
- }),
- ref: instance => {
- let ele = BDFDB.ReactUtils.findDOMNode(instance);
- if (ele && ele.parentElement) {
- let maxWidth = BDFDB.DOMUtils.getInnerWidth(ele.parentElement);
- if (maxWidth > 50) ele.style.setProperty("max-width", `${maxWidth}px`);
- BDFDB.TimeUtils.timeout(_ => {
- if (document.contains(ele.parentElement)) {
- let newMaxWidth = BDFDB.DOMUtils.getInnerWidth(ele.parentElement);
- if (newMaxWidth > maxWidth) ele.style.setProperty("max-width", `${newMaxWidth}px`);
- }
- }, 3000);
- let Animation = new LibraryModules.AnimationUtils.Value(0);
- Animation
- .interpolate({inputRange:[0, 1], outputRange:[0, (BDFDB.DOMUtils.getRects(ele.firstElementChild).width - BDFDB.DOMUtils.getRects(ele).width) * -1]})
- .addListener(v => {ele.firstElementChild.style.setProperty("left", v.value + "px", "important");});
- this.scroll = p => {
- let w = p + parseFloat(ele.firstElementChild.style.getPropertyValue("left")) / (BDFDB.DOMUtils.getRects(ele.firstElementChild).width - BDFDB.DOMUtils.getRects(ele).width);
- w = isNaN(w) || !isFinite(w) ? p : w;
- w *= BDFDB.DOMUtils.getRects(ele.firstElementChild).width / (BDFDB.DOMUtils.getRects(ele).width * 2);
- LibraryModules.AnimationUtils.parallel([LibraryModules.AnimationUtils.timing(Animation, {toValue:p, duration:Math.sqrt(w**2) * 4000 / (parseInt(this.props.speed) || 1)})]).start();
- }
- }
- },
- onClick: e => {
- if (typeof this.props.onClick == "function") this.props.onClick(e, this);
- },
- onMouseEnter: e => {
- if (BDFDB.DOMUtils.getRects(e.currentTarget).width < BDFDB.DOMUtils.getRects(e.currentTarget.firstElementChild).width) {
- this.scrolling = true;
- e.currentTarget.firstElementChild.style.setProperty("display", "block", "important");
- this.scroll(1);
- }
- },
- onMouseLeave: e => {
- if (this.scrolling) {
- delete this.scrolling;
- e.currentTarget.firstElementChild.style.setProperty("display", "inline", "important");
- this.scroll(0);
- }
- },
- children: BDFDB.ReactUtils.createElement("div", {
- style: {
- left: "0",
- position: "relative",
- display: "inline",
- whiteSpace: "nowrap"
- },
- children: this.props.children
- })
- });
- }
- };
- InternalComponents.LibraryComponents.TooltipContainer = InternalBDFDB.loadPatchedComp("TooltipContainer") || reactInitialized && class BDFDB_TooltipContainer extends LibraryModules.React.Component {
- render() {
- let child = (BDFDB.ArrayUtils.is(this.props.children) ? this.props.children[0] : this.props.children) || BDFDB.ReactUtils.createElement("div", {});
- child.props.className = BDFDB.DOMUtils.formatClassName(child.props.className, this.props.className);
- let childMouseEnter = child.props.onMouseEnter, childMouseLeave = child.props.onMouseLeave, childClick = child.props.onClick, childContextMenu = child.props.onContextMenu;
- let shown = false;
- child.props.onMouseEnter = (e, childThis) => {
- if (!shown) {
- shown = true;
- BDFDB.TooltipUtils.create(e.currentTarget, this.props.text, Object.assign({delay: this.props.delay}, this.props.tooltipConfig));
- if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);
- if (typeof childMouseEnter == "function") childMouseEnter(e, childThis);
- }
- };
- child.props.onMouseLeave = (e, childThis) => {
- shown = false;
- if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);
- if (typeof childMouseLeave == "function") childMouseLeave(e, childThis);
- };
- child.props.onClick = (e, childThis) => {
- if (typeof this.props.onClick == "function") this.props.onClick(e, this);
- if (typeof childClick == "function") childClick(e, childThis);
- };
- child.props.onContextMenu = (e, childThis) => {
- if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);
- if (typeof childContextMenu == "function") childContextMenu(e, childThis);
- };
- return BDFDB.ReactUtils.createElement(LibraryModules.React.Fragment, {
- children: child
- });
- }
- };
-
- InternalComponents.LibraryComponents.UserSummaryItem = BDFDB.ModuleUtils.findByName("UserSummaryItem");
-
- for (let type in InternalComponents.NativeSubComponents) if (InternalComponents.LibraryComponents[type]) for (let key in InternalComponents.NativeSubComponents[type]) if (key != "displayName" && key != "name" && (typeof InternalComponents.NativeSubComponents[type][key] != "function" || key.charAt(0) == key.charAt(0).toUpperCase())) {
- if (key == "defaultProps") InternalComponents.LibraryComponents[type][key] = Object.assign({}, InternalComponents.LibraryComponents[type][key], InternalComponents.NativeSubComponents[type][key]);
- else InternalComponents.LibraryComponents[type][key] = InternalComponents.NativeSubComponents[type][key];
- }
- BDFDB.LibraryComponents = Object.assign({}, InternalComponents.LibraryComponents);
-
- BDFDB.DOMUtils.appendLocalStyle("BDFDB", `
- @import url(https://mwittrien.github.io/BetterDiscordAddons/Themes/SupporterBadge.css);
-
- img:not([src]), img[src=""], img[src="null"] {
- opacity: 0;
- }
-
- ${BDFDB.dotCN.loadingiconwrapper} {
- position: absolute;
- bottom: 0;
- right: 0;
- z-index: 1000;
- animation: loadingwrapper-fade 3s infinite ease;
- }
- ${BDFDB.dotCNS.loadingiconwrapper + BDFDB.dotCN.loadingicon} {
- margin: 0 5px;
- }
- @keyframes loadingwrapper-fade {
- from {opacity: 0.1;}
- 50% {opacity: 0.9;}
- to {opacity: 0.1;}
- }
-
- ${BDFDB.dotCN.settingspanelinner} {
- padding-left: 15px;
- padding-right: 5px;
- }
- ${BDFDB.dotCN.settingspanellist} {
- padding-left: 15px;
- }
-
- ${BDFDB.dotCN.collapsecontainer} {
- margin-bottom: 20px;
- }
- ${BDFDB.dotCN.collapsecontainermini} {
- margin-bottom: 8px;
- }
- ${BDFDB.dotCN.collapsecontainerinner} {
- padding-left: 15px;
- }
- ${BDFDB.dotCNS.settingspanelinner + BDFDB.dotCN.collapsecontainerheader} {
- margin-left: -16px;
- }
- ${BDFDB.dotCN.collapsecontainerarrow} {
- background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K) center/cover no-repeat;
- height: 16px;
- width: 16px;
- transition: transform .3s ease;
- transform: rotate(0);
- }
- ${BDFDB.dotCNS.collapsecontainercollapsed + BDFDB.dotCN.collapsecontainerarrow} {
- transform: rotate(-90deg);
- }
-
- ${BDFDB.dotCN.settingsguild} {
- border-radius: 50%;
- border: 3px solid ${BDFDB.DiscordConstants.Colors.STATUS_GREEN};
- box-sizing: border-box;
- cursor: pointer;
- margin: 3px;
- overflow: hidden;
- }
- ${BDFDB.dotCN.settingsguilddisabled} {
- border-color: ${BDFDB.DiscordConstants.Colors.STATUS_GREY};
- filter: grayscale(100%) brightness(50%);
- }
-
- ${BDFDB.dotCN.overflowellipsis} {
- overflow: hidden;
- text-overflow: ellipsis;
- }
-
- ${BDFDB.dotCN.messageavatar + BDFDB.dotCN.bdfdbbadge} {
- position: absolute;
- overflow: visible;
- border-radius: 0;
- }
-
- ${BDFDB.dotCN.favbuttoncontainer} {
- display: flex;
- position: relative;
- cursor: pointer;
- }
-
- ${BDFDB.dotCN.cursordefault} {
- cursor: default !important;
- }
- ${BDFDB.dotCN.cursorpointer} {
- cursor: pointer !important;
- }
-
- ${BDFDB.dotCNS.selectwrapper + BDFDB.dotCN.select} {
- flex: 1 1 auto;
- }
- ${BDFDB.dotCN.selectwrapper} [class*="css-"][class*="-container"] > [class*="css-"][class*="-menu"] {
- z-index: 3;
- }
-
- ${BDFDB.dotCNS.hotkeywrapper + BDFDB.dotCN.hotkeycontainer} {
- flex: 1 1 auto;
- }
- ${BDFDB.dotCN.hotkeyresetbutton} {
- cursor: pointer;
- margin-left: 5px;
- }
- ${BDFDB.dotCNS.hotkeyresetbutton + BDFDB.dotCN.svgicon}:hover {
- color: ${BDFDB.DiscordConstants.Colors.STATUS_RED};
- }
-
-
- ${BDFDB.dotCNC.hovercardwrapper + BDFDB.dotCN.hovercardinner} {
- min-height: 28px;
- }
- ${BDFDB.dotCN.hovercardinner} {
- width: 100%;
- padding-right: 5px;
- display: flex;
- align-items: center;
- z-index: 1;
- }
- ${BDFDB.dotCNS.hovercardwrapper + BDFDB.dotCN.hovercardbutton} {
- position: absolute;
- top: -6px;
- right: -6px;
- opacity: 0;
- }
- ${BDFDB.dotCN.hovercardwrapper + BDFDB.dotCNS.hovercard + BDFDB.dotCN.hovercardbutton} {
- right: -25px;
- }
- ${BDFDB.dotCN.hovercardwrapper}:hover ${BDFDB.dotCN.hovercardbutton} {
- opacity: 1;
- }
-
- ${BDFDB.dotCN.table} {
- width: 100%;
- }
- ${BDFDB.dotCN.tableheader} {
- padding: 0px 12px 8px 0;
- margin-bottom: 5px;
- font-size: 12px;
- font-weight: 600;
- box-sizing: border-box;
- background-color: var(--background-primary);
- border-bottom: 1px solid var(--background-modifier-accent);
- }
- ${BDFDB.dotCN.tablestickyheader}:first-child {
- position: absolute;
- width: 100%;
- }
- ${BDFDB.dotCNS.modalsubinner + BDFDB.dotCN.tablestickyheader}:first-child {
- padding-left: 20px;
- }
- ${BDFDB.dotCN.tableheadercell} {
- text-transform: uppercase;
- color: var(--interactive-normal);
- }
- ${BDFDB.dotCN.tableheadercell},
- ${BDFDB.dotCN.tablebodycell} {
- border-left: 1px solid var(--background-modifier-accent);
- box-sizing: border-box;
- padding: 0 12px;
- }
- ${BDFDB.dotCN.tableheadercell}:first-child,
- ${BDFDB.dotCN.tablebodycell}:first-child {
- border-left: none;
- padding-left: 0;
- }
- ${BDFDB.dotCN.tableheadercellsorted},
- ${BDFDB.dotCN.tableheadercellsorted}:hover {
- color: var(--interactive-active);
- }
- ${BDFDB.dotCN.tableheadersorticon} {
- width: 18px;
- height: 18px;
- margin-left: 4px;
- }
- ${BDFDB.dotCN.tablerow} {
- position: relative;
- display: flex;
- margin-bottom: 5px;
- align-items: center;
- color: var(--header-secondary);
- }
- ${BDFDB.dotCN.tablebodycell} {
- font-size: 15px;
- }
-
- ${BDFDB.dotCNS.settingstablelist + BDFDB.dotCN.checkboxcontainer}:before {
- display: none;
- }
-
- ${BDFDB.dotCNS.settingstablelist + BDFDB.dotCN.settingstableheader} {
- min-height: 10px;
- }
- ${BDFDB.dotCNS.settingstablelist + BDFDB.dotCN.settingstableheaderoption} {
- width: unset;
- }
- ${BDFDB.dotCN.settingstableheadervertical} {
- position: relative;
- }
- ${BDFDB.dotCN.settingstableheadervertical} > span {
- position: absolute;
- bottom: 50%;
- right: calc(50% - 5px);
- margin-bottom: -5px;
- writing-mode: vertical-rl;
- }
- ${BDFDB.dotCN.settingstablecard} {
- height: 60px;
- padding: 0 10px;
- margin-bottom: 10px;
- }
- ${BDFDB.dotCNS.settingstablecard + BDFDB.dotCN.settingstablecardlabel} {
- padding-right: 10px;
- }
- ${BDFDB.dotCNS.settingstablecard + BDFDB.dotCN.settingstablecardlabel},
- ${BDFDB.dotCNS.settingstablecard + BDFDB.dotCN.settingstablecardconfigs} {
- margin: 0;
- }
- ${BDFDB.dotCN.settingstableheaders} {
- margin-right: 10px;
- }
-
- ${BDFDB.dotCNS.popoutwrapper + BDFDB.dotCN.messagespopouttabbarheader} {
- flex: 1 0 auto;
- align-items: center;
- height: unset;
- min-height: 56px;
- }
- ${BDFDB.dotCNS.popoutwrapper + BDFDB.dotCNS.messagespopouttabbarheader + BDFDB.dotCN.messagespopouttabbar} {
- min-height: 32px;
- }
-
- ${BDFDB.dotCNS.themelight + BDFDB.dotCN.quickselectpopoutwrapper},
- ${BDFDB.dotCNS.themedark + BDFDB.dotCN.quickselectpopoutwrapper} {
- border-radius: 4px;
- padding: 6px 8px;
- cursor: default;
- background-color: var(--background-floating);
- box-sizing: border-box;
- box-shadow: var(--elevation-high);
- }
- ${BDFDB.dotCNS.quickselectpopoutwrapper + BDFDB.dotCN.quickselectpopoutoption} {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- align-items: center;
- position: relative;
- font-weight: 500;
- box-sizing: border-box;
- margin-top: 2px;
- margin-bottom: 2px;
- padding: 0 8px;
- font-size: 14px;
- line-height: 18px;
- min-height: 32px;
- border-radius: 2px;
- color: var(--interactive-normal);
- }
- ${BDFDB.dotCNS.quickselectpopoutwrapper + BDFDB.dotCN.quickselectpopoutoption}:hover {
- color: var(--interactive-hover);
- background-color: var(--background-modifier-hover);
- }
- ${BDFDB.dotCNS.quickselectpopoutwrapper + BDFDB.dotCN.quickselectpopoutoption + BDFDB.dotCN.quickselectpopoutoptionselected} {
- color: var(--interactive-active);
- background-color: var(--background-modifier-selected);
- }
-
- ${BDFDB.dotCN.charcounter} {
- color: var(--channels-default);
- }
-
- ${BDFDB.dotCN.inputnumberwrapper} {
- position: relative;
- }
- ${BDFDB.dotCN.inputnumberbuttons}:hover + ${BDFDB.dotCN.input + BDFDB.notCN.inputfocused + BDFDB.notCN.inputerror + BDFDB.notCN.inputsuccess + BDFDB.notCN.inputdisabled}:not(:focus) {
- border-color: #040405;
- }
- ${BDFDB.dotCNS.inputnumberwrapperdefault + BDFDB.dotCN.input} {
- padding-right: 25px;
- }
- ${BDFDB.dotCNS.inputnumberwrappermini + BDFDB.dotCN.input} {
- padding-left: 6px;
- padding-right: 17px;
- }
- ${BDFDB.dotCNS.inputnumberwrapper + BDFDB.dotCN.input}::-webkit-inner-spin-button,
- ${BDFDB.dotCNS.inputnumberwrapper + BDFDB.dotCN.input}::-webkit-outer-spin-button{
- -webkit-appearance: none !important;
- }
- ${BDFDB.dotCN.inputnumberbuttons} {
- position: absolute;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: space-around;
- height: 110%;
- top: -2%;
- }
- ${BDFDB.dotCNS.inputnumberwrapperdefault + BDFDB.dotCN.inputnumberbuttons} {
- right: 8px;
- }
- ${BDFDB.dotCNS.inputnumberwrappermini + BDFDB.dotCN.inputnumberbuttons} {
- right: 4px;
- }
- ${BDFDB.dotCN.inputnumberbutton} {
- cursor: pointer;
- border: transparent solid 5px;
- border-top-width: 2.5px;
- display: inline-block;
- }
- ${BDFDB.dotCNS.themelight + BDFDB.dotCN.inputnumberbutton} {
- border-bottom-color: #dcddde;
- }
- ${BDFDB.dotCNS.themelight + BDFDB.dotCN.inputnumberbutton}:hover {
- border-bottom-color: #4f545c;
- }
- ${BDFDB.dotCNS.themedark + BDFDB.dotCN.inputnumberbutton} {
- border-bottom-color: #72767d;
- }
- ${BDFDB.dotCNS.themedark + BDFDB.dotCN.inputnumberbutton}:hover {
- border-bottom-color: #f6f6f7;
- }
- ${BDFDB.dotCN.inputnumberbuttondown} {
- transform: rotate(180deg);
- }
-
- ${BDFDB.dotCN.guildupperleftbadge} {
- top: 0;
- }
- ${BDFDB.dotCN.guildlowerleftbadge} {
- bottom: 0;
- }
- ${BDFDB.dotCNC.guildlowerleftbadge + BDFDB.dotCN.guildupperleftbadge} {
- pointer-events: none;
- position: absolute;
- left: 0;
- }
-
- ${BDFDB.dotCN.svgicon} {
- color: var(--interactive-normal);
- }
- ${BDFDB.dotCN.svgicon}:hover {
- color: var(--interactive-hover);
- }
- ${BDFDB.dotCN.svgicon}:active {
- color: var(--interactive-active);
- }
-
- ${BDFDB.dotCN.modalsubinnerscrollerless} {
- padding-bottom: 10px;
- overflow: visible;
- }
- ${BDFDB.dotCN.modaltabcontent} {
- margin-top: 10px;
- }
- ${BDFDB.dotCNS.listscroller + BDFDB.dotCN.modaltabcontent} {
- margin-top: 0;
- }
- ${BDFDB.dotCNS.modalwrapper + BDFDB.dotCN.modalheader + BDFDB.dotCN.modalheaderhassibling} {
- padding-bottom: 10px;
- }
- ${BDFDB.dotCNS.modalwrapper + BDFDB.dotCN.tabbarcontainer} {
- background: rgba(0, 0, 0, 0.1);
- border: none;
- box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.05);
- padding-right: 12px;
- }
- ${BDFDB.dotCNS.themedark + BDFDB.dotCNS.modalwrapper + BDFDB.dotCN.tabbarcontainer} {
- background: rgba(0, 0, 0, 0.2);
- box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.1);
- }
-
- ${BDFDB.dotCN.popoutthemedpopout} {
- background-color: #fff;
- border: 1px solid hsla(0,0%,74.9%,.3);
- -webkit-box-shadow: 0 2px 10px 0 rgba(0,0,0,.1);
- box-shadow: 0 2px 10px 0 rgba(0,0,0,.1);
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- border-radius: 5px;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -ms-flex-direction: column;
- flex-direction: column;
- }
- ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutthemedpopout} {
- background-color: #2f3136;
- border: 1px solid rgba(28,36,43,.6);
- -webkit-box-shadow: 0 2px 10px 0 rgba(0,0,0,20%);
- box-shadow: 0 2px 10px 0 rgba(0,0,0,.2);
- }
-
- #bd-settingspane-container .ui-form-title {
- display: inline-block;
- }
- #bd-settingspane-container ${BDFDB.dotCN._repofolderbutton} {
- position: static;
- margin-bottom: 0;
- border-radius: 5px;
- display: inline-block;
- margin-left: 10px;
- }
- #bd-settingspane-container ${BDFDB.dotCN._repoupdatebutton}[style] {
- display: none !important;
- }
- ${BDFDB.dotCNS._repolist + BDFDB.dotCN._repocontrols} {
- display: flex;
- justify-content: center;
- align-items: center;
- }
- ${BDFDB.dotCNS._repolist + BDFDB.dotCNS._repofooter + BDFDB.dotCN._repolinks} + * {
- margin-left: auto;
- }
- ${BDFDB.dotCNS._repolist + BDFDB.dotCN._repocontrols} > *,
- ${BDFDB.dotCNS._repolist + BDFDB.dotCNS._repofooter} button + button,
- ${BDFDB.dotCNS._repolist + BDFDB.dotCNS._repofooter + BDFDB.dotCN._repolinks} + * ~ * {
- margin-left: 8px;
- }
- ${BDFDB.dotCN._repoicon} {
- color: var(--interactive-active);
- }
-
- ${BDFDB.dotCN.noticewrapper} {
- transition: height 0.5s ease !important;
- border-radius: 0 !important;
- }
- ${BDFDB.dotCNS.noticewrapper + BDFDB.dotCN.noticeplatformicon} {
- margin-top: -7px;
- }
- ${BDFDB.dotCNS.noticewrapper + BDFDB.dotCN.noticeplatformicon} svg {
- max-height: 28px;
- }
- ${BDFDB.dotCN.noticesurvey} {
- background-color: #222;
- }
-
- ${BDFDB.dotCN.tooltip + BDFDB.dotCNS.tooltipcustom + BDFDB.dotCN.tooltippointer} {
- border-top-color: inherit !important;
- }
-
- ${BDFDB.dotCN.colorpickerswatchsingle} {
- height: 30px;
- width: 30px;
- }
- ${BDFDB.dotCN.colorpickerswatches + BDFDB.dotCN.colorpickerswatchesdisabled} {
- cursor: no-drop;
- filter: grayscale(70%) brightness(50%);
- }
- ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchnocolor + BDFDB.notCN.colorpickerswatchdefault + BDFDB.notCN.colorpickerswatchdisabled} {
- overflow: hidden;
- }
- ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchnocolor + BDFDB.notCN.colorpickerswatchdefault + BDFDB.notCN.colorpickerswatchdisabled}:after {
- content: "";
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: -1;
- }
- ${BDFDB.dotCN.colorpickerswatch + BDFDB.dotCN.colorpickerswatchcustom}[style*="background"] {
- border: none;
- }
- ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchdefault}:after {
- border-radius: 3px;
- }
- ${BDFDB.dotCN.colorpickerswatch + BDFDB.dotCN.colorpickerswatchcustom + BDFDB.notCN.colorpickerswatchdefault}:after {
- border-radius: 5px;
- }
- ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchnocolor + BDFDB.notCN.colorpickerswatchdefault + BDFDB.notCN.colorpickerswatchdisabled}:after {
- background: url('data:image/svg+xml; utf8, ') center repeat;
- }
-
- ${BDFDB.dotCN.colorpickeralpha} {
- position: relative;
- height: 8px;
- margin: 16px 0 8px;
- }
- ${BDFDB.dotCN.colorpickergradient} {
- position: relative;
- height: 8px;
- margin: 27px 2px 2px 2px;
- }
- ${BDFDB.dotCN.colorpickeralpha} > div > div > div > div {
- height: 16px !important;
- width: 8px !important;
- margin-top: -3px !important;
- border-radius: 3px !important;
- }
- ${BDFDB.dotCNS.themelight + BDFDB.dotCN.colorpickersaturation} > div > div > div > div {
- box-shadow: rgb(200, 200, 200) 0px 0px 0px 1.5px, rgba(0, 0, 0, 0.6) 0px 0px 1px 1px inset, rgba(0, 0, 0, 0.6) 0px 0px 1px 2px !important;
- }
- ${BDFDB.dotCNS.themelight + BDFDB.dotCN.colorpickerhue} > div > div > div > div,
- ${BDFDB.dotCNS.themelight + BDFDB.dotCN.colorpickeralpha} > div > div > div > div {
- background: rgb(200, 200, 200) !important;
- box-shadow: rgba(0, 0, 0, 1) 0px 0px 2px !important;
- }
- ${BDFDB.dotCN.colorpickeralpha} > div > div,
- ${BDFDB.dotCN.colorpickergradient} > div > div {
- border-radius: 3px;
- }
- ${BDFDB.dotCNS.colorpickeralpha + BDFDB.dotCN.colorpickeralphacheckered},
- ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcheckered},
- ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div:after {
- background: url('data:image/svg+xml; utf8, ') center repeat;
- }
- ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div {
- height: 8px;
- width: 8px;
- margin-top: -15px;
- border: 1px solid rgb(128, 128, 128);
- border-radius: 3px;
- transform: translateX(-5px);
- transform-style: preserve-3d;
- }
- ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div:after {
- content: "";
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: -1;
- border-radius: 3px;
- transform: translateZ(-1px);
- }
- ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div:before {
- content: "";
- position: absolute;
- border: 3px solid transparent;
- border-top-width: 5px;
- border-top-color: rgb(128, 128, 128);
- width: 0;
- height: 0;
- top: 100%;
- left: -50%;
- transform: translateX(5px);
- }
- ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursoredge} > div:before {
- border-right-width: 0;
- border-left-width: 5px;
- }
- ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursoredge} ~ ${BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursoredge} > div:before {
- border-right-width: 5px;
- border-left-width: 0;
- }
- ${BDFDB.dotCNS.themelight + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div {
- border-color: rgb(55, 55, 55);
- }
- ${BDFDB.dotCNS.themelight + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div:before {
- border-top-color: rgb(55, 55, 55);
- }
- ${BDFDB.dotCNS.themedark + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div {
- border-color: rgb(200, 200, 200);
- }
- ${BDFDB.dotCNS.themedark + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div:before {
- border-top-color: rgb(200, 200, 200);
- }
- ${BDFDB.dotCN.colorpickergradientbutton} {
- color: var(--interactive-normal);
- opacity: 0.6;
- margin-left: 6px;
- transition: color 200ms ease, opactity 200ms ease;
- }
- ${BDFDB.dotCN.colorpickergradientbutton}:hover {
- color: var(--interactive-hover);
- opacity: 1;
- }
- ${BDFDB.dotCN.colorpickergradientbutton + BDFDB.dotCN.colorpickergradientbuttonenabled},
- ${BDFDB.dotCN.colorpickergradientbutton + BDFDB.dotCN.colorpickergradientbuttonenabled}:hover {
- color: var(--interactive-active);
- opacity: 1;
- }
-
- ${BDFDB.dotCNC.layermodallarge + BDFDB.dotCN.modalsizelarge} {
- max-height: 95vh;
- }
- @media only screen and (max-height: 900px) {
- ${BDFDB.dotCNC.layermodalmedium + BDFDB.dotCN.modalsizemedium} {
- max-height: 75vh;
- }
- }
-
- #pluginNotice #outdatedPlugins span {
- -webkit-app-region: no-drag;
- color: #FFF;
- cursor: pointer;
- }
- #pluginNotice #outdatedPlugins span:hover {
- text-decoration: underline;
- }
-
- .toasts {
- position: fixed;
- display: flex;
- top: 0;
- flex-direction: column;
- align-items: center;
- justify-content: flex-end;
- pointer-events: none;
- z-index: 4000;
- }
- @keyframes toast-up {
- from {
- transform: translateY(0);
- opacity: 0;
- }
- }
- .toast {
- animation: toast-up 300ms ease;
- transform: translateY(-10px);
- background-color: #36393F;
- padding: 10px;
- border-radius: 5px;
- box-shadow: 0 0 0 1px rgba(32,34,37,.6), 0 2px 10px 0 rgba(0,0,0,.2);
- font-weight: 500;
- color: #fff;
- user-select: text;
- font-size: 14px;
- opacity: 1;
- margin-top: 10px;
- pointer-events: auto;
- }
- @keyframes toast-down {
- to {
- transform: translateY(0px);
- opacity: 0;
- }
- }
- .toast.closing {
- animation: toast-down 200ms ease;
- animation-fill-mode: forwards;
- opacity: 1;
- transform: translateY(-10px);
- }
- .toast .toast-inner {
- display: flex;
- align-items: center;
- }
- .toast .toast-avatar {
- margin-right: 5px;
- width: 25px;
- height: 25px;
- flex: 0 0 auto;
- background-size: cover;
- background-position: center;
- border-radius: 50%;
- }
- .toast.icon {
- padding-left: 30px;
- background-position: 6px 50%;
- background-size: 20px 20px;
- background-repeat: no-repeat;
- }
- .toast.toast-brand {
- background-color: #7289DA;
- }
- .toast.toast-brand.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9IjI3IDI3IDExNSAxMTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMTEuMywxMjQuMWMwLDAtMy40LTQuMS02LjMtNy43YzEyLjYtMy41LDE3LjQtMTEuMywxNy40LTExLjMgYy00LDIuNi03LjcsNC40LTExLjEsNS42Yy00LjgsMi05LjUsMy4zLTE0LDQuMWMtOS4yLDEuNy0xNy42LDEuMy0yNC45LTAuMWMtNS41LTEtMTAuMi0yLjUtMTQuMS00LjFjLTIuMi0wLjgtNC42LTEuOS03LjEtMy4zIGMtMC4zLTAuMi0wLjYtMC4zLTAuOS0wLjVjLTAuMS0wLjEtMC4zLTAuMi0wLjQtMC4yYy0xLjctMS0yLjYtMS42LTIuNi0xLjZzNC42LDcuNiwxNi44LDExLjJjLTIuOSwzLjYtNi40LDcuOS02LjQsNy45IGMtMjEuMi0wLjYtMjkuMy0xNC41LTI5LjMtMTQuNWMwLTMwLjYsMTMuOC01NS40LDEzLjgtNTUuNGMxMy44LTEwLjMsMjYuOS0xMCwyNi45LTEwbDEsMS4xQzUyLjgsNTAuMyw0NSw1Ny45LDQ1LDU3LjkgczIuMS0xLjIsNS43LTIuN2MxMC4zLTQuNSwxOC40LTUuNywyMS44LTZjMC41LTAuMSwxLjEtMC4yLDEuNi0wLjJjNS45LTAuNywxMi41LTAuOSwxOS40LTAuMmM5LjEsMSwxOC45LDMuNywyOC45LDkuMSBjMCwwLTcuNS03LjItMjMuOS0xMi4xbDEuMy0xLjVjMCwwLDEzLjEtMC4zLDI2LjksMTBjMCwwLDEzLjgsMjQuOCwxMy44LDU1LjRDMTQwLjYsMTA5LjYsMTMyLjUsMTIzLjUsMTExLjMsMTI0LjF6IE0xMDEuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzExMS41LDg0LjQsMTA3LjEsNzkuNywxMDEuNyw3OS43eiBNNjYuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzc2LjUsODQuNCw3Mi4xLDc5LjcsNjYuNyw3OS43eiIvPjwvc3ZnPg==);
- }
- .toast.toast-danger,
- .toast.toast-error {
- background-color: #F04747;
- }
- .toast.toast-danger.icon,
- .toast.toast-error.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+);
- }
- .toast.toast-default {
- background-color: #F26522;
- }
- .toast.toast-default.icon {
- padding-left: 10px;
- }
- .toast.toast-facebook {
- background-color: #355089;
- }
- .toast.toast-facebook.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9Ii01IC01IDEwMCAxMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggaWQ9IkZhY2Vib29rX194MjhfYWx0X3gyOV8iIGQ9Ik05MCwxNS4wMDFDOTAsNy4xMTksODIuODg0LDAsNzUsMEgxNUM3LjExNiwwLDAsNy4xMTksMCwxNS4wMDF2NTkuOTk4ICAgQzAsODIuODgxLDcuMTE2LDkwLDE1LjAwMSw5MEg0NVY1NkgzNFY0MWgxMXYtNS44NDRDNDUsMjUuMDc3LDUyLjU2OCwxNiw2MS44NzUsMTZINzR2MTVINjEuODc1QzYwLjU0OCwzMSw1OSwzMi42MTEsNTksMzUuMDI0VjQxICAgaDE1djE1SDU5djM0aDE2YzcuODg0LDAsMTUtNy4xMTksMTUtMTUuMDAxVjE1LjAwMXoiIGZpbGw9IndoaXRlIi8+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPg==);
- }
- .toast.toast-info {
- background-color: #4A90E2;
- }
- .toast.toast-info.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=);
- }
- .toast.toast-premium {
- background-color: #202225;
- }
- .toast.toast-premium.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDMiIGhlaWdodD0iMjYiPiAgPHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOTYuMjgyNiA4LjYwMjc4ODI0bC0xLjIxNTUgOC4zOTAzNTI5NmMtLjI3NzUgMS45ODI2Mjc0LTIuNDY1NSAyLjkwMzMzMzMtNC40NzkgMi45MDMzMzMzLTEuODc1IDAtMy43MTU1LS45MjA3MDU5LTMuNDcyNS0yLjcyNTkyMTZsMS4yMTU1LTguNTY3NzY0NjZjLjI3NzUtMS44NzY1ODgyNCAyLjQ2NTUtMi44MzI0NzA2IDQuNDc5LTIuODMyNDcwNiAyLjAxNCAwIDMuNzUuOTU1ODgyMzYgMy40NzI1IDIuODMyNDcwNk05My43NzIxLjAwMzkyNTVsLjAwMDUtLjAwNDA3ODQ0aC0xMy4wODRjLS4zMzQgMC0uNjE4LjI1MDMxMzcyLS42NjYuNTg3Mjk0MTJsLS42MzY1IDQuNDMyMjM1M2MtLjA1OTUuNDE0NDcwNTguMjU2Ljc4NjExNzY0LjY2NjUuNzg2MTE3NjRoMi4zODk1Yy4yNCAwIC40MDQ1LjI0OTgwMzkyLjMxLjQ3NTY0NzA2LS4yOTguNzEyMTk2MDctLjUxNTUgMS40ODYwNzg0My0uNjM2IDIuMzIxNjQ3MDZsLTEuMjE1NSA4LjU2Nzc2NDY2Yy0uNzk5IDUuNzM1Mjk0MiAzLjg4OSA4LjYwMjQzMTQgOC45OTMgOC42MDI0MzE0IDUuMzQ3NSAwIDEwLjU5MDUtMi44NjcxMzcyIDExLjM4OS04LjYwMjQzMTRsMS4yMTUtOC41Njc3NjQ2NmMuNzgzLTUuNjIyMTE3NjUtMy43Mzk1LTguNDg4MjM1My04LjcyNTUtOC41OTg4NjI3NW0tNzguNTk1MjUgMTEuNzI4NjUxbC4wNjcgNC4xNTg5ODA0Yy4wMDE1LjA4NTEzNzItLjA1NS4xNjA1ODgyLS4xMzYuMTgxNDkwMmgtLjAwMDVsLTEuMzg1NS01LjAxNjQ3MDZjLS4wMDItLjAwNzY0NzEtLjAwNS0uMDE0Nzg0My0uMDA4LS4wMjI0MzE0TDkuNDE0MzUuNzcwNzcyNTNjLS4xMDYtLjI1Mjg2Mjc1LS4zNDk1LS40MTY1MDk4LS42MTk1LS40MTY1MDk4aC00Ljg3MjVjLS4zMzYgMC0uNjIwNS4yNTIzNTI5NC0uNjY3LjU5MTM3MjU0TC4wMDY4NSAyNC42MzcyNDMxYy0uMDU3LjQxMzQ1MS4yNTc1Ljc4MjAzOTMuNjY2NS43ODIwMzkzaDQuODU0Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybDEuMjcyLTkuNDEyNTA5OGMuMDAxNS0uMDA5MTc2NS4wMDItLjAxODM1My4wMDItLjAyNzUyOTRsLS4wNjk1LTQuODM2NTA5OC4xMzg1LS4wMzUxNzY1IDEuNDU1NSA1LjAxNjQ3MDZjLjAwMjUuMDA3MTM3Mi4wMDUuMDEzNzY0Ny4wMDc1LjAyMDkwMmw0LjAyMTUgOS40NTM4MDM5Yy4xMDY1LjI1MDgyMzUuMzQ5NS40MTM0NTEuNjE3NS40MTM0NTFoNS4yNTY1Yy4zMzYgMCAuNjIwNS0uMjUyMzUzLjY2Ny0uNTkxODgyNGwzLjI0OTUtMjMuNjkxNjA3ODRjLjA1NjUtLjQxMjk0MTE4LS4yNTgtLjc4MTUyOTQyLS42NjctLjc4MTUyOTQyaC00LjgyMDVjLS4zMzYgMC0uNjIwNS4yNTE4NDMxNC0uNjY3LjU5MDg2Mjc1bC0xLjQ4IDEwLjc1ODkwMmMtLjAwMS4wMDkxNzY0LS4wMDE1LjAxODg2MjctLjAwMTUuMDI4NTQ5bTkuMzk0IDEzLjY4NjYwMzloNC44NTVjLjMzNiAwIC42MjA1LS4yNTIzNTI5LjY2Ny0uNTkxMzcyNmwzLjI0OS0yMy42OTIxMTc2Yy4wNTY1LS40MTI5NDEyLS4yNTgtLjc4MTUyOTQ0LS42NjctLjc4MTUyOTQ0aC00Ljg1NWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTVsLTMuMjQ5IDIzLjY5MjExNzY4Yy0uMDU2NS40MTI5NDEyLjI1OC43ODE1Mjk0LjY2Ny43ODE1Mjk0TTM2LjYyMTE1LjkwNjA3NDVsLS42MzYgNC40MzIyMzUzYy0uMDU5NS40MTQ0NzA2LjI1NTUuNzg2MTE3NjUuNjY2Ljc4NjExNzY1aDUuMDgwNWMuNDA4NSAwIC43MjMuMzY3NTY4NjMuNjY3NS43ODA1MDk4bC0yLjM5MzUgMTcuNzM0MDM5MjVjLS4wNTU1LjQxMjQzMTMuMjU4NS43OC42NjcuNzhoNC45MjU1Yy4zMzY1IDAgLjYyMS0uMjUyODYyOC42NjctLjU5MjkwMmwyLjQ0NC0xOC4xMDg3NDUxYy4wNDYtLjMzOTUyOTQuMzMwNS0uNTkyOTAxOTUuNjY3LS41OTI5MDE5NWg1LjQ2MjVjLjMzNCAwIC42MTgtLjI0OTgwMzkyLjY2Ni0uNTg3Mjk0MTJsLjYzNy00LjQzMjIzNTNjLjA1OTUtLjQxNDQ3MDU4LS4yNTU1LS43ODYxMTc2NC0uNjY2NS0uNzg2MTE3NjRoLTE4LjE4NzVjLS4zMzQ1IDAtLjYxOC4yNTAzMTM3LS42NjY1LjU4NzI5NDFNNzEuMDM4NyA5LjA5ODM2ODZjLS4xNzQgMS40NTE0MTE3Ny0xLjI4NDUgMi45MDI4MjM1Ny0zLjE5NSAyLjkwMjgyMzU3aC0yLjg2OTVjLS40MSAwLS43MjQ1LS4zNjk2MDc5LS42NjctLjc4MzA1ODlsLjYwNzUtNC4zNjE4ODIzM2MuMDQ3LS4zMzg1MDk4LjMzMTUtLjU5MDM1Mjk0LjY2Ny0uNTkwMzUyOTRoMy4wNjFjMS44NDA1IDAgMi41Njk1IDEuMzEwMTk2MDggMi4zOTYgMi44MzI0NzA2TTY5LjMzNzIuMzU0MjExNzZoLTkuMjQwNWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTRsLTMuMjQ5IDIzLjY5MjExNzdjLS4wNTY1LjQxMjk0MTEuMjU4Ljc4MTUyOTQuNjY3Ljc4MTUyOTRoNC45MjM1Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybC45NTYtNy4wNzY1ODgyYy4wMjMtLjE2OTc2NDcuMTY1LS4yOTYxOTYxLjMzMzUtLjI5NjE5NjFoLjYzM2MuMTE0NSAwIC4yMjE1LjA1OTY0NzEuMjgzNS4xNTgwMzkybDQuNzAyIDcuNDkxMDU4OGMuMTI0LjE5NzI5NDIuMzM3NS4zMTY1ODgzLjU2NzUuMzE2NTg4M2g2LjA4MWMuNTQ1IDAgLjg2NDUtLjYyNTAxOTYuNTUyLTEuMDgwMjc0NWwtNC45MzQ1LTcuMTkxODA0Yy0uMTE4LS4xNzI4MjM1LS4wNTc1LS40MTI0MzEzLjEyOC0uNTA0NzA1OCAzLjE1MDUtMS41Njk2ODYzIDQuOTc5NS0zLjE3ODExNzcgNS41ODMtNy42NTAxMTc3LjY5MzUtNS44NzcwMTk2LTIuOTE3LTguNjM4MTE3NjMtNy45ODY1LTguNjM4MTE3NjMiLz48L3N2Zz4=);
- background-size: 63px 16px;
- padding-left: 73px;
- }
- .toast.toast-spotify {
- background-color: #1DB954;
- }
- .toast.toast-spotify.icon {
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUwOC41MiA1MDguNTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUwOC41MiA1MDguNTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KPGc+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZD0iTTI1NC4yNiwwQzExMy44NDUsMCwwLDExMy44NDUsMCwyNTQuMjZzMTEzLjg0NSwyNTQuMjYsMjU0LjI2LDI1NC4yNiAgICAgczI1NC4yNi0xMTMuODQ1LDI1NC4yNi0yNTQuMjZTMzk0LjY3NSwwLDI1NC4yNiwweiBNMzcxLjY5Niw0MDMuMjg4Yy0zLjE3OCw1LjgxNi05LjEyMiw5LjA1OC0xNS4yODcsOS4wNTggICAgIGMtMi44NiwwLTUuNzIxLTAuNjY3LTguNDIyLTIuMTI5Yy00MC43MTMtMjIuNDM4LTg2Ljk1Ny0zNC4yOTMtMTMzLjY3Ny0zNC4yOTNjLTI4LDAtNTUuNjUxLDQuMTYzLTgyLjEyNiwxMi4zNjMgICAgIGMtOS4yMTcsMi44Ni0xOS4wMDYtMi4yODgtMjEuODM1LTExLjUzN2MtMi44Ni05LjE4NSwyLjI4OC0yOC43LDExLjUzNy0zMS41OTJjMjkuODQ0LTkuMjQ5LDYwLjk1OS0xMy45MjEsOTIuNDU1LTEzLjkyMSAgICAgYzUyLjU2OCwwLDEwNC42NiwxMy4zNDksMTUwLjUyMiwzOC42MTZDMzczLjMxNywzNzQuNDYxLDM3Ni40LDM5NC44NjYsMzcxLjY5Niw0MDMuMjg4eiBNNDA0LjAxOSwzMDcuNTI3ICAgICBjLTMuNjIzLDcuMDI0LTEwLjc0MiwxOC4zMzgtMTguMDg0LDE4LjMzOGMtMy4yMSwwLTYuMzg4LTAuNjk5LTkuMzc2LTIuMzJjLTUwLjQ3MS0yNi4xODktMTA1LjA0MS0zOS40NzQtMTYyLjIxOC0zOS40NzQgICAgIGMtMzEuNDk2LDAtNjIuNzcsNC4xMzItOTIuOTY0LDEyLjQ1OWMtMTAuOTAxLDIuOTU2LTIyLjA4OS0zLjQwMS0yNS4wNDUtMTQuMzAyYy0yLjkyNC0xMC45MDEsMy40NjQtMjkuNDMxLDE0LjMzNC0zMi4zODYgICAgIGMzMy42ODktOS4xODUsNjguNTg3LTEzLjg1NywxMDMuNjc0LTEzLjg1N2M2Mi44OTgsMCwxMjUuNDQ1LDE1LjI1NiwxODAuOTM4LDQ0LjExNCAgICAgQzQwNS4yOSwyODUuMjQ4LDQwOS4xOTksMjk3LjUxNiw0MDQuMDE5LDMwNy41Mjd6IE00MTcuNTI2LDIzMC44MzZjLTMuNDY0LDAtNy4wMjQtMC43OTUtMTAuMzYxLTIuNDQ3ICAgICBjLTYwLjIyOC0zMC4wMzQtMTI1LjA5Ni00NS4yMjYtMTkyLjc2MS00NS4yMjZjLTM1LjI3OSwwLTcwLjQzLDQuMjkxLTEwNC41MzMsMTIuNzEzYy0xMi41MjIsMy4wODMtMjUuMTQtNC41MTMtMjguMjIzLTE3LjAwNCAgICAgYy0zLjExNS0xMi40NTksNC41MTMtMjcuNTU1LDE3LjAwNC0zMC42MzhjMzcuNzI2LTkuMzc2LDc2LjY1OS0xNC4xMTEsMTE1LjcyLTE0LjExMWM3NC45NzUsMCwxNDYuODY3LDE2Ljg3NywyMTMuNTc4LDUwLjEyMSAgICAgYzExLjUzNyw1Ljc1MywxNi4yNDEsMTkuNzM3LDEwLjQ4OCwzMS4yNDJDNDM0LjMwOCwyMjMuNjUzLDQyNi4xMDgsMjMwLjgzNiw0MTcuNTI2LDIzMC44MzZ6IiBmaWxsPSIjRkZGRkZGIi8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=);
- }
- .toast.toast-streamermode {
- background-color: #593695;
- }
- .toast.toast-streamermode.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSItMjUgLTI1IDU0MiA1NDIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ5MiA0OTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiPjxwYXRoIGQ9Ik00ODguMywxNDIuNXYyMDMuMWMwLDE1LjctMTcsMjUuNS0zMC42LDE3LjdsLTg0LjYtNDguOHYxMy45YzAsNDEuOC0zMy45LDc1LjctNzUuNyw3NS43SDc1LjdDMzMuOSw0MDQuMSwwLDM3MC4yLDAsMzI4LjQgICBWMTU5LjljMC00MS44LDMzLjktNzUuNyw3NS43LTc1LjdoMjIxLjhjNDEuOCwwLDc1LjcsMzMuOSw3NS43LDc1Ljd2MTMuOWw4NC42LTQ4LjhDNDcxLjMsMTE3LDQ4OC4zLDEyNi45LDQ4OC4zLDE0Mi41eiIgZmlsbD0iI0ZGRkZGRiIvPjwvc3ZnPg==);
- }
- .toast.toast-success {
- background-color: #43B581;
- }
- .toast.toast-success.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=);
- }
- .toast.toast-warning,
- .toast.toast-warn {
- background-color: #FFA600;
- }
- .toast.toast-warning.icon,
- .toast.toast-warn.icon {
- background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==);
- }`);
-
- var KeyDownTimeouts = {};
- BDFDB.ListenerUtils.add(BDFDB, document, "keydown.BDFDBPressedKeys", e => {
- if (!BDFDB.InternalData.pressedKeys.includes(e.which)) {
- BDFDB.TimeUtils.clear(KeyDownTimeouts[e.which]);
- BDFDB.InternalData.pressedKeys.push(e.which);
- KeyDownTimeouts[e.which] = BDFDB.TimeUtils.timeout(_ => {
- BDFDB.ArrayUtils.remove(BDFDB.InternalData.pressedKeys, e.which, true);
- },60000);
- }
- });
- BDFDB.ListenerUtils.add(BDFDB, document, "keyup.BDFDBPressedKeys", e => {
- BDFDB.TimeUtils.clear(KeyDownTimeouts[e.which]);
- BDFDB.ArrayUtils.remove(BDFDB.InternalData.pressedKeys, e.which, true);
- });
- BDFDB.ListenerUtils.add(BDFDB, document, "mousedown.BDFDBMousePosition", e => {
- BDFDB.InternalData.mousePosition = e;
- });
- BDFDB.ListenerUtils.add(BDFDB, window, "focus.BDFDBPressedKeysReset", e => {
- BDFDB.InternalData.pressedKeys = [];
- });
-
- /* unavailable */
-
- InternalBDFDB.patchedModules = {
- before: {
- MessageContent: "type",
- },
- after: {
- DiscordTag: "default",
- Mention: "default",
- Message: "default",
- MessageHeader: "default",
- MemberListItem: "componentDidMount",
- UserPopout: "componentDidMount",
- UserProfile: "componentDidMount",
- V2C_ContentColumn: "render",
- V2C_PluginCard: "render",
- V2C_ThemeCard: "render"
- }
- };
-
- InternalBDFDB.processV2CContentColumn = function (e) {
- if (window.PluginUpdates && window.PluginUpdates.plugins && typeof e.instance.props.title == "string" && e.instance.props.title.toUpperCase().indexOf("PLUGINS") == 0) {
- let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {key: "folder-button"});
- if (index > -1) children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, {
- text: "Only checks for updates of plugins, which support the updatecheck. Rightclick for a list of supported plugins. (Listed ≠ Outdated)",
- tooltipConfig: {
- selector: "update-button-tooltip",
- style: "max-width: 420px"
- },
- children: BDFDB.ReactUtils.createElement("button", {
- className: `${BDFDB.disCNS._repobutton + BDFDB.disCN._repofolderbutton} bd-updatebtn`,
- onClick: _ => {
- let toast = BDFDB.NotificationUtils.toast("Plugin update check in progress.", {type: "info", timeout: 0});
- BDFDB.PluginUtils.checkAllUpdates().then(outdated => {
- toast.close();
- if (outdated > 0) BDFDB.NotificationUtils.toast(`Plugin update check complete. ${outdated} outdated!`, {type: "error"});
- else BDFDB.NotificationUtils.toast(`Plugin update check complete.`, {type: "success"});
- });
- },
- onContextMenu: e => {
- if (window.PluginUpdates && window.PluginUpdates.plugins && !document.querySelector(".update-list-tooltip")) BDFDB.TooltipUtils.create(e.currentTarget, BDFDB.ObjectUtils.toArray(window.PluginUpdates.plugins).map(p => p.name).filter(n => n).sort().join(", "), {type: "bottom", selector: "update-list-tooltip", style: "max-width: 420px"});
- },
- children: "Check for Updates"
- })
- }));
- }
- };
-
- InternalBDFDB._processCard = function (e, data) {
- if (e.instance.state && !e.instance.state.settings) {
- if (BDFDB.ObjectUtils.toArray(BDFDB.myPlugins).some(n => n == data)) {
- let children, index;
- if (data.changelog) {
- [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {props: [["className", BDFDB.disCN._repocontrols]]});
- if (index > -1) children[index].props.children.unshift(BDFDB.ReactUtils.createElement("div", {
- className: BDFDB.disCN._repocontrolsbutton,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, {
- text: BDFDB.LanguageUtils.LanguageStrings.CHANGE_LOG,
- children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, {
- name: InternalComponents.LibraryComponents.SvgIcon.Names.CHANGELOG,
- className: BDFDB.disCN._repoicon,
- onClick: _ => {BDFDB.PluginUtils.openChangeLog(data);}
- })
- })
- }));
- }
- [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {props: [["className", BDFDB.disCN._repofooter]]});
- if (index == -1) {
- let footer = BDFDB.ReactUtils.createElement("div", {className: BDFDB.disCN._repofooter, children: []});
- e.returnvalue.props.children.push(footer);
- children = footer.props.children;
- }
- else {
- children[index].props.children = [children[index].props.children].flat();
- children = children[index].props.children;
- }
- children.splice(children.length - 1, 0, BDFDB.ReactUtils.createElement("button", {
- className: BDFDB.disCNS._repobutton + BDFDB.disCN._reposettingsbutton,
- children: "Library Settings",
- onClick: event => {
- let wrapper = BDFDB.DOMUtils.getParent(BDFDB.dotCN._reposettingsclosed, event.currentTarget);
- if (wrapper) {
- let settingsPanel = InternalBDFDB.createLibrarySettings();
- if (settingsPanel) {
- BDFDB.DOMUtils.addClass(wrapper, BDFDB.disCN._reposettingsopen);
- BDFDB.DOMUtils.removeClass(wrapper, BDFDB.disCN._reposettingsclosed);
- let children = [];
- while (wrapper.childElementCount) {
- children.push(wrapper.firstChild);
- wrapper.firstChild.remove();
- }
- let closeButton = BDFDB.DOMUtils.create(``);
- wrapper.appendChild(closeButton);
- closeButton.addEventListener("click", _ => {
- BDFDB.DOMUtils.removeClass(wrapper, BDFDB.disCN._reposettingsopen);
- BDFDB.DOMUtils.addClass(wrapper, BDFDB.disCN._reposettingsclosed);
- while (wrapper.childElementCount) wrapper.firstChild.remove();
- while (children.length) wrapper.appendChild(children.shift());
- });
- wrapper.appendChild(settingsPanel);
- }
- }
- }
- }));
- }
- }
- };
- InternalBDFDB.processV2CPluginCard = function (e) {InternalBDFDB._processCard(e, e.instance.props.addon && e.instance.props.addon.plugin);};
- InternalBDFDB.processV2CThemeCard = function (e) {InternalBDFDB._processCard(e, e.instance.props.addon && !e.instance.props.addon.plugin && e.instance.props.addon.css);};
-
- InternalBDFDB.createLibrarySettings = function () {
- if (!window.BDFDB || typeof BDFDB != "object" || !BDFDB.loaded) return;
- let settings = BDFDB.DataUtils.get(BDFDB, "settings");
- let settingsPanel, settingsItems = [];
-
- let bdToastSetting = BDFDB.BDUtils.getSettings("fork-ps-2");
- for (let key in settings) settingsItems.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsSaveItem, {
- className: BDFDB.disCN.marginbottom8,
- type: "Switch",
- plugin: BDFDB,
- disabled: key == "showToasts" && bdToastSetting,
- keys: ["settings", key],
- label: InternalBDFDB.defaults.settings[key].description,
- note: key == "showToasts" && bdToastSetting && "Disable BBDs general 'Show Toast' setting before disabling this",
- dividerbottom: true,
- value: settings[key] || key == "showToasts" && bdToastSetting
- }));
-
- return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(BDFDB, settingsItems);
- };
-
- let MessageHeaderExport = BDFDB.ModuleUtils.findByProperties("MessageTimestamp", false);
- if (MessageHeaderExport) InternalBDFDB.processMessage = function (e) {
- if (BDFDB.ReactUtils.getValue(e, "instance.props.childrenHeader.type.type.name") && BDFDB.ReactUtils.getValue(e, "instance.props.childrenHeader.props.message")) {
- e.instance.props.childrenHeader.type = MessageHeaderExport.exports.default;
- }
- };
-
- const BDFDB_Patrons = [
- "363785301195358221",
- "443943393660239872"
- ];
- InternalBDFDB._processAvatarRender = function (user, avatar) {
- if (BDFDB.ReactUtils.isValidElement(avatar) && BDFDB.ObjectUtils.is(user)) {
- let changed = false;
- if (avatar.type == "img") avatar = BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Avatar, Object.assign({}, avatar.props, {
- className: BDFDB.DOMUtils.formatClassName((avatar.props.className || "").replace(BDFDB.disCN.avatar, "")),
- size: InternalComponents.LibraryComponents.Avatar.Sizes.SIZE_40
- }));
- avatar.props["user_by_BDFDB"] = user.id;
- if (BDFDB_Patrons.includes(user.id)) {
- changed = true;
- avatar.props.className = BDFDB.DOMUtils.formatClassName(avatar.props.className, BDFDB.disCN.bdfdbbadge, BDFDB.disCN.bdfdbsupporter);
- }
- if (user.id == "278543574059057154") {
- changed = true;
- avatar.props.className = BDFDB.DOMUtils.formatClassName(avatar.props.className, BDFDB.disCN.bdfdbbadge, BDFDB.disCN.bdfdbdev);
- }
- if (changed && BDFDB.DataUtils.get(BDFDB, "settings", "showSupportBadges")) return avatar;
- }
- };
- InternalBDFDB._processAvatarMount = function (user, avatar) {
- if (Node.prototype.isPrototypeOf(avatar) && BDFDB.ObjectUtils.is(user)) {
- avatar.setAttribute("user_by_BDFDB", user.id);
- if (BDFDB_Patrons.includes(user.id) && BDFDB.DataUtils.get(BDFDB, "settings", "showSupportBadges")) BDFDB.DOMUtils.addClass(avatar, BDFDB.disCN.bdfdbbadge, BDFDB.disCN.bdfdbsupporter);
- if (user.id == "278543574059057154") BDFDB.DOMUtils.addClass(avatar, BDFDB.disCN.bdfdbbadge, BDFDB.disCN.bdfdbdev);
- let status = avatar.querySelector(BDFDB.dotCN.avatarpointerevents);
- if (status) {
- status.addEventListener("mouseenter", _ => {BDFDB.DOMUtils.addClass(avatar, BDFDB.disCN.avatarstatushovered)});
- status.addEventListener("mouseleave", _ => {BDFDB.DOMUtils.removeClass(avatar, BDFDB.disCN.avatarstatushovered)});
- }
- }
- };
- InternalBDFDB.processMessageHeader = function (e) {
- if (e.instance.props.message && e.instance.props.message.author) {
- let avatarWrapper = BDFDB.ReactUtils.getValue(e, "returnvalue.props.children.0");
- if (avatarWrapper && avatarWrapper.props && typeof avatarWrapper.props.children == "function") {
- let renderChildren = avatarWrapper.props.children;
- avatarWrapper.props.children = (...args) => {
- let renderedChildren = renderChildren(...args);
- return InternalBDFDB._processAvatarRender(e.instance.props.message.author, renderedChildren) || renderedChildren;
- };
- }
- else if (avatarWrapper && avatarWrapper.type == "img") e.returnvalue.props.children[0] = InternalBDFDB._processAvatarRender(e.instance.props.message.author, avatarWrapper) || avatarWrapper;
- }
- };
- InternalBDFDB.processMemberListItem = function (e) {
- InternalBDFDB._processAvatarMount(e.instance.props.user, e.node.querySelector(BDFDB.dotCN.avatarwrapper));
- };
- InternalBDFDB.processUserPopout = function (e) {
- InternalBDFDB._processAvatarMount(e.instance.props.user, e.node.querySelector(BDFDB.dotCN.userpopoutavatarwrapper));
- };
- InternalBDFDB.processUserProfile = function (e) {
- InternalBDFDB._processAvatarMount(e.instance.props.user, e.node.querySelector(BDFDB.dotCN.avatarwrapper));
- };
- InternalBDFDB.processDiscordTag = function (e) {
- if (e.instance && e.instance.props && e.instance.props.user && e.returnvalue) e.returnvalue.props.user = e.instance.props.user;
- };
- InternalBDFDB.processMessageContent = function (e) {
- if (BDFDB.ArrayUtils.is(e.instance.props.content)) for (let ele of e.instance.props.content) InternalBDFDB._processMessageContentEle(ele);
- };
- InternalBDFDB._processMessageContentEle = function (ele) {
- if (BDFDB.ReactUtils.isValidElement(ele)) {
- if (typeof ele.props.render == "function" && BDFDB.ReactUtils.getValue(ele, "props.children.type.displayName") == "Mention") {
- let userId = BDFDB.ReactUtils.getValue(ele.props.render(), "props.userId");
- if (userId && !ele.props.children.props.userId) ele.props.children.props.userId = userId;
- }
- else if (BDFDB.ReactUtils.isValidElement(ele.props.children)) InternalBDFDB._processMessageContentEle(ele.props.children);
- else if (BDFDB.ArrayUtils.is(ele.props.children)) for (let child of ele.props.children) InternalBDFDB._processMessageContentEle(child);
- }
- else if (BDFDB.ArrayUtils.is(ele)) for (let child of ele) InternalBDFDB._processMessageContentEle(child);
- };
- InternalBDFDB.processMention = function (e) {
- delete e.returnvalue.props.userId;
- };
-
- InternalBDFDB.patchPlugin(BDFDB);
-
- let BasePopout = BDFDB.ModuleUtils.findByName("BasePopout"), ReferencePositionLayer = BDFDB.ModuleUtils.findByName("ReferencePositionLayer");
- if (BasePopout && ReferencePositionLayer) BDFDB.ModuleUtils.patch(BDFDB, BasePopout.prototype, "renderLayer", {after: e => {
- if (e.returnValue && e.thisObject.isBDFDBpopout) {
- e.returnValue = BDFDB.ReactUtils.createPortal(BDFDB.ReactUtils.createElement(ReferencePositionLayer, e.returnValue.props), document.querySelector(BDFDB.dotCN.appmount + " > " + BDFDB.dotCN.itemlayercontainer));
- }
- }});
-
- if (InternalComponents.LibraryComponents.GuildComponents.BlobMask) {
- let newBadges = ["lowerLeftBadge", "upperLeftBadge"];
- BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "render", {
- before: e => {
- e.thisObject.props = Object.assign({}, InternalComponents.LibraryComponents.GuildComponents.BlobMask.defaultProps, e.thisObject.props);
- for (let type of newBadges) if (!e.thisObject.state[`${type}Mask`]) e.thisObject.state[`${type}Mask`] = new InternalComponents.LibraryComponents.Animations.Controller({spring: 0});
- },
- after: e => {
- let [children, index] = BDFDB.ReactUtils.findChildren(e.returnValue, {name: "TransitionGroup"});
- if (index > -1) {
- children[index].props.children.push(!e.thisObject.props.lowerLeftBadge ? null : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.BadgeAnimationContainer, {
- className: BDFDB.disCN.guildlowerleftbadge,
- key: "lower-left-badge",
- animatedStyle: e.thisObject.getLowerLeftBadgeStyles(),
- children: e.thisObject.props.lowerLeftBadge
- }));
- children[index].props.children.push(!e.thisObject.props.upperLeftBadge ? null : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.BadgeAnimationContainer, {
- className: BDFDB.disCN.guildupperleftbadge,
- key: "upper-left-badge",
- animatedStyle: e.thisObject.getUpperLeftBadgeStyles(),
- children: e.thisObject.props.upperLeftBadge
- }));
- }
- [children, index] = BDFDB.ReactUtils.findChildren(e.returnValue, {name: "mask"});
- if (index > -1) {
- children[index].props.children.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Animations.animated.rect, {
- x: -4,
- y: -4,
- width: e.thisObject.props.upperLeftBadgeWidth + 8,
- height: 24,
- rx: 12,
- ry: 12,
- transform: e.thisObject.getLeftBadgePositionInterpolation(e.thisObject.state.upperLeftBadgeMask, -1),
- fill: "black"
- }));
- children[index].props.children.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Animations.animated.rect, {
- x: -4,
- y: 28,
- width: e.thisObject.props.lowerLeftBadgeWidth + 8,
- height: 24,
- rx: 12,
- ry: 12,
- transform: e.thisObject.getLeftBadgePositionInterpolation(e.thisObject.state.lowerLeftBadgeMask),
- fill: "black"
- }));
- }
- }
- });
- BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "componentDidMount", {
- after: e => {
- for (let type of newBadges) e.thisObject.state[`${type}Mask`].update({
- spring: e.thisObject.props[type] != null ? 1 : 0,
- immediate: true
- }).start();
- }
- });
- BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "componentWillUnmount", {
- after: e => {
- for (let type of newBadges) if (e.thisObject.state[`${type}Mask`]) e.thisObject.state[`${type}Mask`].destroy();
- }
- });
- BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "componentDidUpdate", {
- after: e => {
- for (let type of newBadges) if (e.thisObject.props[type] != null && e.methodArguments[0][type] == null) {
- e.thisObject.state[`${type}Mask`].update({
- spring: 1,
- immediate: !document.hasFocus(),
- config: {friction: 30, tension: 900, mass: 1}
- }).start();
- }
- else if (e.thisObject.props[type] == null && e.methodArguments[0][type] != null) {
- e.thisObject.state[`${type}Mask`].update({
- spring: 0,
- immediate: !document.hasFocus(),
- config: {duration: 150, friction: 10, tension: 100, mass: 1}
- }).start();
- }
- }
- });
- InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype.getLeftBadgePositionInterpolation = function (e, t) {
- return void 0 === t && (t = 1), e.animated.spring.to([0, 1], [20, 0]).to(function (e) {
- return "translate(" + e * -1 + " " + e * t + ")";
- });
- };
- InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype.getLowerLeftBadgeStyles = function () {
- var e = this.state.lowerLeftBadgeMask.animated.spring;
- return {
- opacity: e.to([0, .5, 1], [0, 0, 1]),
- transform: e.to(function (e) {
- return "translate(" + -1 * (16 - 16 * e) + "px, " + (16 - 16 * e) + "px)";
- })
- };
- };
- InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype.getUpperLeftBadgeStyles = function () {
- var e = this.state.upperLeftBadgeMask.animated.spring;
- return {
- opacity: e.to([0, .5, 1], [0, 0, 1]),
- transform: e.to(function (e) {
- return "translate(" + -1 * (16 - 16 * e) + "px, " + -1 * (16 - 16 * e) + "px)";
- })
- };
- };
- let extraDefaultProps = {};
- for (let type of newBadges) extraDefaultProps[`${type}Width`] = 16;
- InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.GuildComponents.BlobMask, extraDefaultProps);
- }
-
- BDFDB.ModuleUtils.patch(BDFDB, LibraryModules.GuildStore, "getGuild", {after: e => {
- if (e.returnValue && e.methodArguments[0] == "410787888507256842" && !e.returnValue.banner) {
- e.returnValue.banner = "data:image/png;base64,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W7fu537u5xYtWjQ9Pd3tdp/VUxEPTsLqdruVSmVqaurgJKzJycnp6enp6empqamD/xwbG9u6dWtPT8/Y2Nj+/fsPHDhw4MCBvXv3HjhwIMuy4eHhOT0kzzzzzDe84Q2XXnrpypUri//dbt26dWhoyA8SAOY6BRYA80R7bGd7bGeBCyxm1H/ceyjmsZvHpP3vu1yFJEm+vwFWVksrPUmyIOtdFpaelMSYhCR2252p4c7Ens7Yzu7U/uaBzc2990zvuDUmMcm7sduOSRJCJWSVws7PCiF0u90777xz06ZNX/7yl9/whje84Q1v6O/vn7kjDg4O/tCvxMcsko0xhhA6nc7ExMTU1NTExMTY2NjExESe5/v379+5c+fu3bu3bt360EMPNZvNRx55JE3T4q9JXLFixVvf+taf+ImfOO644+bKe+O+++5rtVp+RgAw5+/2ivmoFAA4/GtauuyF/33hGW+UBIcgJo9ZhBi+/7DCENIkhBjz2J7OO9N5a6w9um161x2TO+9ojzzSbY51J3bnnWaa1UNWSUL6w8VZEf5iMR5czddoNNavX/+2t73tFa94xbJlywr1TeZ53ul0frDqcHp6evPmzTfeeOPevXs3bdq0c+fOiYmJ4eHhPM8PLlEsgtWrV1966aU/8zM/s3bt2izL5spA37Zt2y//8i/fcsst3vMAzPmbfQUWAPPGglN/atlFvxVST/rjGd0dJckPiq0kJiGENIQsbw5P73twavut0/vua+3f0BzaHNtTIasmSZqkaQhp0f4aBxf6tdvtCy644E1vetOll166bNmywj4mL8/zg9OvYoy7du168MEH77vvvna7fccdd2zatGl6enrv3r3dbvcHf2zWNBqN00477cUvfvFrX/vaY489dg5VVwddd911v/qrv7p7925vbADm/C2aAguAeaO2+IRVL/tobdEJomAGbprSNKuFak/eHGsNb2kNbZ7edcfE1htaBzbmnWbsNkOShqz6/Q2zCmRiYiLGeP755//Mz/zMq171qqLNxnoSMcY9e/bs27dvcnLy/vvvv/feezdv3rxly5bx8fGpqamDs7dm7ugLFy487bTTfvqnf/olL3nJ4sVzcm1yjPEv/uIv/viP/9jbF4D5cC+mwAJgPln143/Uf8JLC7iwi3khJjEJWRayRsiqeWe62xzpjGwf33z1xJbvdMZ2tUa3J3k3hJCkWUirSZol8chv6pSmaafTGRsby7Ls/PPP/y//5b9ccsklc+4OsNvtNpvNgztqbdy48aabbtq2bdsdd9yxb9++vXv3PosH6unpWbFixYUXXvjKV176nOecOzAwMHfH6+jo6K/92q9deeWV3roAzAMKLADmlQWnvnbZRb8VKrWk8LtBM5fFJCZJloW0FkKapFnenmruuXt807fbw5un9tzTHn4ktqdjkqS13pDVkhiP+L7vIYSDu011u92LL774DW94w+te97of3YV9brnrrrs2bdp0991333bbbXv37t2+ffv09PTTW2NYr9ePPvro5z3veeecc875559/4oknzoNheu+9977jHe/YuHGjdywA84ACC4B5JetZctxPfyHrXxo7TWkw82KSJElIk5CmWU9a6+lM7G0deGhq5+0Tm/9tatc9nYm9eXs8q/WHal8ROqwkSfI8HxkZybLsTW960y//8i+fc845c/0cdDqdRx55ZGpq6vrrr7/hhhu2bNmyc+fOoaGhQ/naarV63HHHPec5z7noogtPOunk0047bT6Nzv/zf/7P7/zO73S7XW9UAOYBBRYA86tOiPGoSz/ev+4/xU77iPcFlHAAhqye1vpizLsTe5tDmye3XDe1/XvTu+9pj24Ntf600jh4A3ZkB2eaps1mc2JiYv369a9//et/6qd+6tRTT50H6U9PT4+Pj2/fvv2WW27ZuXPnTTfddN99942Njf3on+zv7z/llFNOP/30008//eyzzz7uuON6enrm2VgcHR39rd/6rX/5l3/xtgRgflBgATC/+oPO9ILTX7/qP304xjzm5h1wREZhTNIsrfYmaZp0u92p/dO7757cftPo/f/a3P9gWqknIQtpLQlHuMbK83x8fDxJktNOO+3d7373ZZddNm/OQLfbTdP0vvvu27hx49VXX33fffc9/PDDK1asWLVq1bnnnnv00UevXLnyhBNOWLlyZbU6bx9aes8997z+9a8fHh72jgRgflBgATC/qoNOs7Zk3dGv/l/VhcfETksgHMHBmCTh4FbuIYTYabVGt03vunP0wa9Obb+p2xpLut202nPEH1nYbrdbrVZfX9+ll176u7/7uyecMN8e4jk8PDw6OtpsNnt7e3t6ehYuXJim6fwffDH+7d/+7fve9z7vQwDmjWxOP1oFAH5YSLuT+6qDR/WsPj/J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1q37+Mc//tKXvrRsyW/evPn973//1VdffXD3egDg2aLAAgCYT2JaX9Cd3L/vux8/cOv/TpKQNgafyZbth9VehRCGhobWr1//8Y9//Md+7MfKFv23vvWtv/qrv/rud79rFALAs06BBUA5hVnbxxpmU1YfnN53/95rPzZ2/78kWS2t9SVx9qYCjYyMrF+//s///M/LtnJwdHT0//7f//u5z31u48aNBiEAzAQFFgAlFC0hZP6N6pBWQ6Uxvunbe6//2NSOW0O1L1Rqs9lejY+Pr1279uMf/3jZ2qtOp/PHf/zHX/jCF0ZHRw1EAJghCiwASiiYgcX8EtNab2y3DnzvU/tv+mRneiSt9iYhm832anJy8oQTTviTP/mTl7zkJSXKPcY777zz05/+9Je+9CVbtgPAjFJgAQDMXTEJWVrva+3ftO+7fzn2wL/GmKeV+ixXtNPT08cff/zHPvaxUu3a3m63v/KVr/z5n//5xo0bY1SIA8DMUmABAMxRIVTqSZqNP/iNvdf98dTue9JaX0hn++7u4NyrP/3TPy1Pe5Xn+Z49ez7/+c9/8pOfnJycNBABYBYosAAA5pwY0mrIap2JvUO3f+7AbZ/pTh7IGoOzubNbCCHP87GxsbVr1/7Zn/1Zefa9mp6evummm/78z//8pptusmwQAGaNAgsAYA6JSRLSal8SwvSOm/dc9xdjG67IGguyngWzuatbCCHGODw8fOKJJ5aqvdq2bdvf/d3ffeELX9i1a5exCACzSYEFQDkrAE8hZE4O3ZBWs8aC9viu0Xv++cBt/7u5f2Olb+mjg3q2HJx7tW/fvlNOOeXP//zPS7JycHR09K677vrkJz95ww03TE1NGYsAMMsUWACUkKcQMufEJMa01hey2thD3zxw299NPHRlzDtZY9Esj+QQQqvVGh4ePu+88z760Y++6EUvmvfRt9vtbdu2ffKTn7zxxhs3btxoLALAEaHAAqCUXYAZWMwtaTWrDXTHdx644/89cOtnOuO700pPWuud/faq2WzGGH/+53/+3e9+94knnjjvg5+env7c5z73xS9+8YEHHpienjYSAeBIUWABUEJmYDGHRmtIK715d3r47n88cOtnmnvujt1OVh9IQjbLYzhN08nJyb6+vne/+90///M/PzAwML+Dn56evvXWWz/96U9ff/31IyMjRiIAHFkKLACAYgqhUg8hTO28dd+Nn5zYdFUSQhLStNabJMnsN7AjIyOrVq36zd/8zbe+9a2Vyny+hxwZGdm1a9dnP/vZK664Yv/+/e1221gEgCNOgQVAOVlCSIGFNKRZkmatvRuG7/3C2IOXt0e2h2pPCOkR+XY6nU673X7hC1/427/92y960YvSNJ2fPxRi7HQ6d9xxxz//8z9fe+21W7Zs6XQ6BiMAFIQCC4CSNgSWEFLIgZmFrJrEbnt0x8g9Xxi771+aw5uTtJrW+md/xB582uD09HQI4Wd/9md/53d+Z9WqVfM1+MnJyTvvvPPyyy//5je/uWPHDrOuAKBoFFgAlJMZWBRqPMaQVUOlkSTd1tAjYxu/PnTH/9sZ3hKTJK31f3/Ezrbp6elWq3XMMcf81//6X3/pl36pVqvNy+wnJyfvvvvur3zlK1ddddWmTZsMRgAoJgUWAOVkBhbFEGPIammtL8ZOe2jL2MYrhu/6x+ndd6eVRqj0hnDEBur4+HiM8ZJLLnnPe97z3Oc+d/4F3263W63W1Vdffc0111xzzTWqKwAoOAUWACWtDczA4ogPwpBW0/pAbE9P77l7YvN3Ru/94tSuO2PMs57F3x+lR6a9GhkZOeqoo375l3/5Z37mZ5YtWzbPcp+cnBwaGrrqqqtuueWW66+/ftu2bcYiABSfAgsAYDbFJKQhrWS1gW5zZHzTVRMPXz3+0DdbBzbnncmsvjDJqknMj8h3FkLodrtDQ0Pnn3/++9///pe97GXzLPqhoaENGzZ885vfvO222+6///6RkRHbtAPAXKHAAqCcLCFk1j260VVPDDGf3D9y1z+Obf5Wc8+97bEdSZ6HrJr1Lk1iPCLtVZqmnU5nYmKiXq+/5S1veec733nyySfPp+z37Nlz/fXXf+lLX3rggQf27t07OTlpPALA3KLAAgCYaTFktVDti82R6Z23jj989djGbzT3PxTbEyGrhKweqlmShCQesVJ1fHw8SZK1a9f+6q/+6hvf+MaBgYF5EHqz2Txw4MDtt9/+3e9+9zvf+c7+/fv3799vLALAHKXAAqCkhYI9sJgNIYRQSauN1vju6Y3/Nv7Q10c3Xhk7zSRJkpCmtd7HjMMj017FGCcmJlatWvXWt771zW9+8+rVq9M0ndOR53m+adOmrVu33nnnnZdffvnevXuHhoZarZbBCABzmgILgJL2CpYQMlNDK4QQQpKEGJIkxtbQ5tENV0w+cl1z912d5lha7QtpJQlHviTK87zdbscYX/KSl3zgAx84++yz52511el08jw/uE7whhtueOCBB7Zu3To6OnrwL2hQAsA8oMACAHiGYpKEkFaSkIU0xJh3p0Y7k3um99w9vuHKqV13dif3xryTVhpZ/cgvzQshdDqddrtdrVbPPvvsX/7lX375y1/e398/F3Nvt9v79u2bmpq65ZZbbr311quvvnr//v1jY2NGJADMPwosAICnJcYkSUJWDZV6SEKM3e70cHP/xube+ya23Ti19cbOxJ4krYYQQloLWeOIT/oLIeR5PjEx0el0li1b9vM///O/8iu/snTp0rmSd57neZ6HEMbGxrZt27Z79+4NGzZ8/etfHxoaevDBB41HAJjfFFgAAIfl4HyralrrSdJa3p7oTu5vHtg8ueOW6R03Te+5t3VgU5KEtN6f1vqSJHx/veqRbK9CCEmSjI2NtVqt5cuX//iP//hrXvOaV77ylcXPut1uT05OdjqdycnJTZs23XPPPdPT0w8//PCGDRv27t27Y8cOwxEASkKBBQDwJA4WTyEJIUlCyKpppRHSandqqLn3gebww9N77p3a9r3W/g3t8d15azyt9WWNhUmaPuaRgke4uooxNpvNkZGRFStWXHrppZdddtnFF1/caDQKm3in0zlw4MDevXsnJyc3b958++2379q1a3R0dMeOHQe3Y5+amjIuAaBsFFgAAI8VH22c0jSELAlZkmYhJElIY0y6o9vH99w3vefOzsiO6X33tfZvzLvTsdNKQkgrPZX+5Uk8+ApHfuPwg9XV1NTU9PT0ggUL3va2t73+9a9/wQteUMzqqtVq7dix49577x0bG9u0adOWLVs2btw4OTm5a9euH2w2b2gCQJkpsAAop5gkQQr8+3iISZIkIU2TtBayakirMe/E9lTsTHSb463hh5u7757YcVNnbGd3Yl97fGcSkySkIYQQKmmjJwkhiUlSmJIlTdOJiYlWq7VgwYLLLrvszW9+8/nnn9/b23ukvp88zw8+KLDT6SRJ0u12x8bGDhw48Mgjj9xzzz179+7dvn37/v379+zZ0263h4aGjEgA4IcosAAop3DEd9SmICMhpFmSVkNWC1kltic6kwe6k/s643taI4+09j/UPLChNbQ5tqfyznTemUxiEtJKWmkkSUhC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";
- }
- }});
-
- BDFDB.ModuleUtils.patch(BDFDB, LibraryModules.IconUtils, "getGuildBannerURL", {instead: e => {
- return e.methodArguments[0].id == "410787888507256842" ? e.methodArguments[0].banner : e.callOriginalMethod();
- }});
-
- for (let type of ComponentTypeData.NormalContextMenus) InternalBDFDB.patchContextMenuLib(InternalComponents.LibraryComponents.ContextMenus[type], false);
- for (let type of ComponentTypeData.FluxContextMenus) {
- if (!BDFDB.InternalData.componentPatchQueries[type]) BDFDB.InternalData.componentPatchQueries[type] = {query:[], module:null};
- InternalBDFDB.patchContextMenuLib(InternalComponents.LibraryComponents.ContextMenus[type], true);
- }
- for (let type of ComponentTypeData.QueuedComponents) if (!BDFDB.InternalData.componentPatchQueries[type]) BDFDB.InternalData.componentPatchQueries[type] = {query:[], module:null};
- if (ComponentTypeData.NonRenderContextMenus.length) BDFDB.ModuleUtils.patch(BDFDB, LibraryModules.ContextMenuUtils, "openContextMenu", {before: e => {
- let menu = e.methodArguments[1]();
- if (BDFDB.ObjectUtils.is(menu)) {
- let type = InternalBDFDB.getContextMenuType(menu.type && menu.type.displayName || menu.props && menu.props.type, menu);
- if (type && ComponentTypeData.NonRenderContextMenus.includes(type)) InternalBDFDB.patchExportedContextMenuLib(menu, type, false);
- }
- }});
- if (ComponentTypeData.ObservedContextMenus.length) BDFDB.ObserverUtils.connect(BDFDB, BDFDB.dotCN.appmount + " > " + BDFDB.dotCN.itemlayercontainer, {name:"contextMenuObserver", instance:(new MutationObserver(changes => {changes.forEach(change => {change.addedNodes.forEach(node => {
- let menu = node && node.nodeType != Node.TEXT_NODE && (BDFDB.ReactUtils.getInstance(node.querySelector(BDFDB.dotCN.contextmenu)) || {}).return;
- if (BDFDB.ObjectUtils.is(menu)) {
- let type = InternalBDFDB.getContextMenuType(menu.type && menu.type.displayName || menu.props && menu.props.type, menu);
- if (type && ComponentTypeData.ObservedContextMenus.includes(type)) InternalBDFDB.patchExportedContextMenuLib(menu, type, true);
- }
- });});}))}, {childList: true});
- BDFDB.ModuleUtils.patch(BDFDB, BDFDB.ReactUtils.getValue(BDFDB.ModuleUtils.findByString("renderReactions", "canAddNewReactions", "showMoreUtilities", false), "exports.default"), "type", {after: e => {
- if (document.querySelector(BDFDB.dotCN.emojipicker)) return; // avoid multi react EmojiPicker rerender
- let toolbar = BDFDB.ReactUtils.findChild(e.returnValue, {filter: c => c && c.props && c.props.showMoreUtilities != undefined && c.props.showEmojiPicker != undefined && c.props.setPopout != undefined});
- if (toolbar) BDFDB.ModuleUtils.patch(BDFDB, toolbar, "type", {after: e2 => {
- let menu = BDFDB.ReactUtils.findChild(e2.returnValue, {filter: c => c && c.props && typeof c.props.onRequestClose == "function" && c.props.onRequestClose.toString().indexOf("moreUtilities") > -1});
- InternalBDFDB.executeExtraPatchedPatches("MessageOptionToolbar", {instance:{props:Object.assign({}, e2.methodArguments[0], {hasMorePopout: !!menu})}, returnvalue:e2.returnValue, methodname:"default"});
- if (false && menu && typeof menu.props.renderPopout == "function") {
- let renderPopout = menu.props.renderPopout;
- menu.props.renderPopout = (...args) => {
- let renderedPopout = renderPopout(...args);
- BDFDB.ModuleUtils.patch(BDFDB, renderedPopout, "type", {after: e3 => {
- InternalBDFDB.executeExtraPatchedPatches("MessageOptionContextMenu", {instance:{props:e3.methodArguments[0]}, returnvalue:e3.returnValue, methodname:"default"});
- }}, {noCache: true});
- return renderedPopout;
- }
- }
- }}, {once: true});
- }});
-
- BDFDB.ModuleUtils.forceAllUpdates(BDFDB);
-
- InternalBDFDB.addContextListeners(BDFDB);
-
- if (BDFDB.UserUtils.me.id == "278543574059057154") {
- let cachedGuilds = {};
- InternalBDFDB.cacheGuilds = function () {
- cachedGuilds = Object.assign(cachedGuilds, {
- "86004744966914048": {
- default_message_notifications: 1,
- icon: "292e7f6bfff2b71dfd13e508a859aedd",
- id: "86004744966914048",
- joined_at: Date.now(),
- name: "BetterDiscord",
- owner_id: "81388395867156480"
- },
- "280806472928198656": {
- default_message_notifications: 1,
- icon: "cbdda04c041699d80689b99c4e5e89dc",
- id: "280806472928198656",
- joined_at: Date.now(),
- name: "BetterDiscord2",
- owner_id: "81388395867156480"
- }
- }, BDFDB.ObjectUtils.map(BDFDB.LibraryModules.GuildStore.getGuilds(), guild => {
- return {
- default_message_notifications: guild.defaultMessageNotifications,
- icon: guild.icon,
- id: guild.id,
- joined_at: guild.joinedAt,
- name: guild.name,
- owner_id: guild.ownerId
- };
- }));
- };
- InternalBDFDB.guildStoreChanged = function () {
- InternalBDFDB.cacheGuilds();
- BDFDB.LibraryModules.DispatchApiUtils.wait(_ => {
- for (let guildId of BDFDB.LibraryModules.GuildUnavailableStore.unavailableGuilds) if (cachedGuilds[guildId] && !BDFDB.LibraryModules.GuildStore.getGuild(guildId)) {
- BDFDB.LibraryModules.DispatchApiUtils.dispatch({
- type: "GUILD_CREATE",
- guild: Object.assign({
- channels: [],
- icon: null,
- members: [],
- presences: [],
- roles: {},
- unavailable: true
- }, cachedGuilds[guildId])
- });
- BDFDB.LibraryModules.DispatchApiUtils.dispatch({
- type: "GUILD_UNAVAILABLE",
- guildId: guildId
- });
- }
- });
- };
- BDFDB.ListenerUtils.add(BDFDB, BDFDB.LibraryModules.GuildStore, InternalBDFDB.guildStoreChanged);
- InternalBDFDB.guildStoreChanged();
-
- for (let module in DiscordClassModules) if (!DiscordClassModules[module]) BDFDB.LogUtils.warn(module + " not initialized in DiscordClassModules");
- for (let obj in DiscordObjects) if (!DiscordObjects[obj]) BDFDB.LogUtils.warn(obj + " not initialized in DiscordObjects");
- for (let require in LibraryRequires) if (!LibraryRequires[require]) BDFDB.LogUtils.warn(require + " not initialized in LibraryRequires");
- for (let module in LibraryModules) if (!LibraryModules[module]) BDFDB.LogUtils.warn(module + " not initialized in LibraryModules");
- for (let component in InternalComponents.NativeSubComponents) if (!InternalComponents.NativeSubComponents[component]) BDFDB.LogUtils.warn(component + " not initialized in NativeSubComponents");
- for (let component in InternalComponents.LibraryComponents) if (!InternalComponents.LibraryComponents[component]) BDFDB.LogUtils.warn(component + " not initialized in LibraryComponents");
-
- BDFDB.ModuleUtils.DevFuncs = {};
- BDFDB.ModuleUtils.DevFuncs.generateClassId = function (index) {
- let chars = "0123456789ABCDEFGHIJKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split("");
- let id = "";
- while (id.length < 6) id += chars[Math.floor(Math.random() * chars.length)];
- return id;
- };
- BDFDB.ModuleUtils.DevFuncs.findByIndex = function (index) {
- return BDFDB.ModuleUtils.DevFuncs.req.c[index];
- };
- BDFDB.ModuleUtils.DevFuncs.findPropAny = function (...strings) {
- window.t = {"$filter":(prop => [...strings].flat(10).filter(n => typeof n == "string").every(string => prop.toLowerCase().indexOf(string.toLowerCase()) > -1))};
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) {
- let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports;
- if (m && typeof m == "object") for (let j in m) if (window.t.$filter(j)) window.t[j + "_" + i] = m;
- if (m && typeof m == "object" && typeof m.default == "object") for (let j in m.default) if (window.t.$filter(j)) window.t[j + "_default_" + i] = m.default;
- }
- console.clear();
- console.log(window.t);
- };
- BDFDB.ModuleUtils.DevFuncs.findPropFunc = function (...strings) {
- window.t = {"$filter":(prop => [...strings].flat(10).filter(n => typeof n == "string").every(string => prop.toLowerCase().indexOf(string.toLowerCase()) > -1))};
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) {
- let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports;
- if (m && typeof m == "object") for (let j in m) if (window.t.$filter(j) && typeof m[j] != "string") window.t[j + "_" + i] = m;
- if (m && typeof m == "object" && typeof m.default == "object") for (let j in m.default) if (window.t.$filter(j) && typeof m.default[j] != "string") window.t[j + "_default_" + i] = m.default;
- }
- console.clear();
- console.log(window.t);
- };
- BDFDB.ModuleUtils.DevFuncs.findPropStringLib = function (...strings) {
- window.t = {"$filter":(prop => [...strings].flat(10).filter(n => typeof n == "string").every(string => prop.toLowerCase().indexOf(string.toLowerCase()) > -1))};
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) {
- let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports;
- if (m && typeof m == "object") for (let j in m) if (window.t.$filter(j) && typeof m[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m[j])) window.t[j + "_" + i] = m;
- if (m && typeof m == "object" && typeof m.default == "object") for (let j in m.default) if (window.t.$filter(j) && typeof m.default[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m.default[j])) window.t[j + "_default_" + i] = m.default;
- }
- console.clear();
- console.log(window.t);
- };
- BDFDB.ModuleUtils.DevFuncs.findNameAny = function (...strings) {
- window.t = {"$filter":(modu => [...strings].flat(10).filter(n => typeof n == "string").some(string => typeof modu.displayName == "string" && modu.displayName.toLowerCase().indexOf(string.toLowerCase()) > -1 || modu.name == "string" && modu.name.toLowerCase().indexOf(string.toLowerCase()) > -1))};
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) {
- let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports;
- if (m && (typeof m == "object" || typeof m == "function") && window.t.$filter(m)) window.t[(m.displayName || m.name) + "_" + i] = m;
- if (m && (typeof m == "object" || typeof m == "function") && m.default && (typeof m.default == "object" || typeof m.default == "function") && window.t.$filter(m.default)) window.t[(m.default.displayName || m.default.name) + "_" + i] = m.default;
- }
- console.clear();
- console.log(window.t);
- };
- BDFDB.ModuleUtils.DevFuncs.findCodeAny = function (...strings) {
- window.t = {"$filter":(m => [...strings].flat(10).filter(n => typeof n == "string").map(string => string.toLowerCase()).every(string => typeof m == "function" && (m.toString().toLowerCase().indexOf(string) > -1 || typeof m.__originalMethod == "function" && m.__originalMethod.toString().toLowerCase().indexOf(string) > -1 || typeof m.__originalFunction == "function" && m.__originalFunction.toString().toLowerCase().indexOf(string) > -1) || BDFDB.ObjectUtils.is(m) && typeof m.type == "function" && m.type.toString().toLowerCase().indexOf(string) > -1))};
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) {
- let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports;
- if (m && typeof m == "function" && window.t.$filter(m)) window.t["module_" + i] = {string:m.toString(), func:m};
- if (m && m.__esModule) {
- for (let j in m) if (m[j] && typeof m[j] == "function" && window.t.$filter(m[j])) window.t[j + "_module_" + i] = {string:m[j].toString(), func:m[j], module:m};
- if (m.default && (typeof m.default == "object" || typeof m.default == "function")) for (let j in m.default) if (m.default[j] && typeof m.default[j] == "function" && window.t.$filter(m.default[j])) window.t[j + "_module_" + i + "_default"] = {string:m.default[j].toString(), func:m.default[j], module:m};
- }
- }
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.m) if (typeof BDFDB.ModuleUtils.DevFuncs.req.m[i] == "function" && window.t.$filter(BDFDB.ModuleUtils.DevFuncs.req.m[i])) window.t["funtion_" + i] = {string:BDFDB.ModuleUtils.DevFuncs.req.m[i].toString(), func:BDFDB.ModuleUtils.DevFuncs.req.m[i]};
- console.clear();
- console.log(window.t);
- };
- BDFDB.ModuleUtils.DevFuncs.getAllModules = function () {
- window.t = {};
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) {
- let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports;
- if (m && typeof m == "object") window.t[i] = m;
- }
- console.clear();
- console.log(window.t);
- };
- BDFDB.ModuleUtils.DevFuncs.getAllStringLibs = function () {
- window.t = [];
- for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) {
- let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports;
- if (m && typeof m == "object" && !BDFDB.ArrayUtils.is(m) && Object.keys(m).length) {
- var string = true, stringlib = false;
- for (let j in m) {
- if (typeof m[j] != "string") string = false;
- if (typeof m[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m[j])) stringlib = true;
- }
- if (string && stringlib) window.t.push(m);
- }
- if (m && typeof m == "object" && m.default && typeof m.default == "object" && !BDFDB.ArrayUtils.is(m.default) && Object.keys(m.default).length) {
- var string = true, stringlib = false;
- for (let j in m.default) {
- if (typeof m.default[j] != "string") string = false;
- if (typeof m.default[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m.default[j])) stringlib = true;
- }
- if (string && stringlib) window.t.push(m.default);
- }
- }
- console.clear();
- console.log(window.t);
- };
- BDFDB.ModuleUtils.DevFuncs.listen = function (strings) {
- strings = BDFDB.ArrayUtils.is(strings) ? strings : Array.from(arguments);
- BDFDB.ModuleUtils.DevFuncs.listenstop();
- BDFDB.ModuleUtils.DevFuncs.listen.p = BDFDB.ModuleUtils.patch("WebpackSearch", BDFDB.ModuleUtils.findByProperties(strings), strings[0], {after: e => {
- console.log(e);
- }});
- };
- BDFDB.ModuleUtils.DevFuncs.listenstop = function () {
- if (typeof BDFDB.ModuleUtils.DevFuncs.listen.p == "function") BDFDB.ModuleUtils.DevFuncs.listen.p();
- };
- BDFDB.ModuleUtils.DevFuncs.req = InternalBDFDB.getWebModuleReq();
- }
- for (let obj in DiscordObjects) if (!DiscordObjects[obj]) {
- DiscordObjects[obj] = function () {};
- BDFDB.DiscordObjects[obj] = function () {};
- }
- for (let component in InternalComponents.NativeSubComponents) if (!InternalComponents.NativeSubComponents[component]) InternalComponents.NativeSubComponents[component] = "div";
- for (let component in InternalComponents.LibraryComponents) if (!InternalComponents.LibraryComponents[component]) {
- InternalComponents.LibraryComponents[component] = "div";
- BDFDB.LibraryComponents[component] = "div";
- }
-
- BDFDB.loaded = true;
- window.BDFDB = BDFDB;
- InternalBDFDB.reloadLib = _ => {
- let libraryScript = document.querySelector("head script#BDFDBLibraryScript");
- if (libraryScript) libraryScript.remove();
- libraryScript = document.createElement("script");
- libraryScript.setAttribute("id", "BDFDBLibraryScript");
- libraryScript.setAttribute("type", "text/javascript");
- libraryScript.setAttribute("src", "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.min.js");
- libraryScript.setAttribute("date", performance.now());
- document.head.appendChild(libraryScript);
- };
- let libKeys = Object.keys(BDFDB).length - 10, crashInterval = BDFDB.TimeUtils.interval(_ => {
- if (!window.BDFDB || typeof BDFDB != "object" || Object.keys(BDFDB).length < libKeys || !BDFDB.InternalData.loadId) {
- BDFDB.LogUtils.warn("Reloading library due to internal error.");
- BDFDB.TimeUtils.clear(crashInterval);
- InternalBDFDB.reloadLib();
- }
- else if (BDFDB.InternalData.loadId != loadId) {
- BDFDB.TimeUtils.clear(crashInterval);
- }
- else if (!BDFDB.InternalData.creationTime || performance.now() - BDFDB.InternalData.creationTime > 18000000) {
- BDFDB.TimeUtils.clear(crashInterval);
- InternalBDFDB.reloadLib();
- }
- }, 10000);
-})();
+(a=>{if(window['BDFDB']&&window['BDFDB']['ListenerUtils']&&typeof window['BDFDB']['ListenerUtils']['remove']=='function')window['BDFDB']['ListenerUtils']['remove'](window['BDFDB']);if(window['BDFDB']&&window['BDFDB']['StoreChangeUtils']&&typeof window['BDFDB']['StoreChangeUtils']['remove']=='function')window['BDFDB']['StoreChangeUtils']['remove'](window['BDFDB']);if(window['BDFDB']&&window['BDFDB']['ObserverUtils']&&typeof window['BDFDB']['ObserverUtils']['disconnect']=='function')window['BDFDB']['ObserverUtils']['disconnect'](window['BDFDB']);if(window['BDFDB']&&window['BDFDB']['ModuleUtils']&&typeof window['BDFDB']['ModuleUtils']['unpatch']=='function')window['BDFDB']['ModuleUtils']['unpatch'](window['BDFDB']);if(window['BDFDB']&&window['BDFDB']['WindowUtils']&&typeof window['BDFDB']['WindowUtils']['closeAll']=='function')window['BDFDB']['WindowUtils']['closeAll'](window['BDFDB']);if(window['BDFDB']&&window['BDFDB']['WindowUtils']&&typeof window['BDFDB']['WindowUtils']['removeListener']=='function')window['BDFDB']['WindowUtils']['removeListener'](window['BDFDB']);const b={'myPlugins':Object['assign']({},window['BDFDB']&&window['BDFDB']['myPlugins']),'InternalData':Object['assign']({'pressedKeys':[],'mousePosition':{'pageX':0x0,'pageY':0x0},'componentPatchQueries':{}},window['BDFDB']&&window['BDFDB']['InternalData'],{'creationTime':performance['now']()}),'BDv2Api':window['BDFDB']&&window['BDFDB']['BDv2Api']||undefined,'name':'BDFDB'};const c={'name':'BDFDB','patchPriority':0x0};const d=Math['round'](Math['random']()*0x2386f26fc10000);b['InternalData']['loadId']=d;if(typeof Array['prototype']['flat']!='function')Array['prototype']['flat']=function(){return this;};c['defaults']={'settings':{'showToasts':{'value':!![],'description':'Show\x20Plugin\x20start\x20and\x20stop\x20Toasts'},'showSupportBadges':{'value':!![],'description':'Show\x20little\x20Badges\x20for\x20Users\x20who\x20support\x20my\x20Patreon'}}};b['LogUtils']={};b['LogUtils']['log']=function(B,C){console['log']('%c['+(typeof C=='string'&&C||'BDFDB')+']','color:\x20#3a71c1;\x20font-weight:\x20700;',(typeof B=='string'&&B||'')['trim']());};b['LogUtils']['warn']=function(B,C){console['warn']('%c['+(typeof C=='string'&&C||'BDFDB')+']','color:\x20#3a71c1;\x20font-weight:\x20700;',(typeof B=='string'&&B||'')['trim']());};b['LogUtils']['error']=function(B,C){console['error']('%c['+(typeof C=='string'&&C||'BDFDB')+']','color:\x20#3a71c1;\x20font-weight:\x20700;','Fatal\x20Error:\x20'+(typeof B=='string'&&B||'')['trim']());};b['LogUtils']['log']('Loading\x20library.');b['PluginUtils']={};b['PluginUtils']['init']=b['loadMessage']=function(B){B['name']=B['name']||(typeof B['getName']=='function'?B['getName']():null);B['version']=B['version']||(typeof B['getVersion']=='function'?B['getVersion']():null);B['author']=B['author']||(typeof B['getAuthor']=='function'?B['getAuthor']():null);B['description']=B['description']||(typeof B['getDescription']=='function'?B['getDescription']():null);let C=b['LanguageUtils']['LibraryStringsFormat']('toast_plugin_started','v'+B['version']);b['LogUtils']['log'](C,B['name']);if(!b['BDUtils']['getSettings']('fork-ps-2')&&b['DataUtils']['get'](b,'settings','showToasts'))b['NotificationUtils']['toast'](B['name']+'\x20'+C,{'nopointer':!![],'selector':'plugin-started-toast'});let D=typeof B['getRawUrl']=='function'&&typeof B['getRawUrl']()=='string'?B['getRawUrl']():'https://mwittrien.github.io/BetterDiscordAddons/Plugins/'+B['name']+'/'+B['name']+'.plugin.js';b['PluginUtils']['checkUpdate'](B['name'],D);if(typeof B['initConstructor']==='function')b['TimeUtils']['suppress'](B['initConstructor']['bind'](B),'Could\x20not\x20initiate\x20constructor!',B['name'])();if(typeof B['css']==='string')b['DOMUtils']['appendLocalStyle'](B['name'],B['css']);c['patchPlugin'](B);c['addSpecialListeners'](B);b['PluginUtils']['translate'](B);b['PluginUtils']['checkChangeLog'](B);if(!window['PluginUpdates']||typeof window['PluginUpdates']!=='object')window['PluginUpdates']={'plugins':{}};window['PluginUpdates']['plugins'][D]={'name':B['name'],'raw':D,'version':B['version']};if(typeof window['PluginUpdates']['interval']==='undefined')window['PluginUpdates']['interval']=b['TimeUtils']['interval'](E=>{b['PluginUtils']['checkAllUpdates']();},0x3e8*0x3c*0x3c*0x2);B['started']=!![];delete B['stopping'];for(let E in b['myPlugins'])if(!b['myPlugins'][E]['started']&&typeof b['myPlugins'][E]['initialize']=='function')setImmediate(F=>{b['TimeUtils']['suppress'](b['myPlugins'][E]['initialize']['bind'](b['myPlugins'][E]),'Could\x20not\x20initiate\x20plugin!',E)();});};b['PluginUtils']['clear']=b['unloadMessage']=function(B){c['clearStartTimeout'](B);delete b['myPlugins'][B['name']];let C=b['LanguageUtils']['LibraryStringsFormat']('toast_plugin_stopped','v'+B['version']);b['LogUtils']['log'](C,B['name']);if(!b['BDUtils']['getSettings']('fork-ps-2')&&b['DataUtils']['get'](b,'settings','showToasts'))b['NotificationUtils']['toast'](B['name']+'\x20'+C,{'nopointer':!![],'selector':'plugin-stopped-toast'});let D=typeof B['getRawUrl']=='function'&&typeof B['getRawUrl']()=='string'?B['getRawUrl']():'https://mwittrien.github.io/BetterDiscordAddons/Plugins/'+B['name']+'/'+B['name']+'.plugin.js';if(typeof B['css']==='string')b['DOMUtils']['removeLocalStyle'](B['name']);b['ModuleUtils']['unpatch'](B);b['ListenerUtils']['remove'](B);b['StoreChangeUtils']['remove'](B);b['ObserverUtils']['disconnect'](B);b['WindowUtils']['closeAll'](B);b['WindowUtils']['removeListener'](B);for(let E in b['InternalData']['componentPatchQueries'])b['ArrayUtils']['remove'](b['InternalData']['componentPatchQueries'][E]['query'],B,!![]);for(let F of document['querySelectorAll']('.'+B['name']+'-modal,\x20.'+B['name']['toLowerCase']()+'-modal,\x20.'+B['name']+'-settingsmodal,\x20.'+B['name']['toLowerCase']()+'-settingsmodal')){let G=F['querySelector'](b['dotCN']['modalclose']);if(G)G['click']();}delete b['DataUtils']['cached'][B['name']];delete window['PluginUpdates']['plugins'][D];delete B['started'];b['TimeUtils']['timeout'](H=>{delete B['stopping'];});};b['PluginUtils']['translate']=function(B){B['labels']={};if(typeof B['setLabelsByLanguage']==='function'||typeof B['changeLanguageStrings']==='function'){if(document['querySelector']('html')['lang'])C();else{let D=b['TimeUtils']['interval'](E=>{if(document['querySelector']('html')['lang']){b['TimeUtils']['clear'](D);C();}},0x64);}function C(){let E=b['LanguageUtils']['getLanguage']();if(typeof B['setLabelsByLanguage']==='function')B['labels']=B['setLabelsByLanguage'](E['id']);if(typeof B['changeLanguageStrings']==='function')B['changeLanguageStrings']();b['LogUtils']['log'](b['LanguageUtils']['LibraryStringsFormat']('toast_plugin_translated',E['ownlang']),B['name']);}}};b['PluginUtils']['checkUpdate']=function(B,C){if(B&&C)return new Promise(D=>{j['request'](C,(E,F,G)=>{if(E)return D(null);let H=G['match'](/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i);if(!H)return D(null);if(b['NumberUtils']['getVersionDifference'](H[0x0],window['PluginUpdates']['plugins'][C]['version'])>0.2){b['NotificationUtils']['toast'](B+'\x20will\x20be\x20force\x20updated,\x20because\x20your\x20version\x20is\x20heavily\x20outdated.',{'type':'warn','nopointer':!![],'selector':'plugin-forceupdate-toast'});b['PluginUtils']['downloadUpdate'](B,C);return D(0x2);}else if(b['NumberUtils']['compareVersions'](H[0x0],window['PluginUpdates']['plugins'][C]['version'])){b['PluginUtils']['showUpdateNotice'](B,C);return D(0x1);}else{b['PluginUtils']['removeUpdateNotice'](B);return D(0x0);}});});return new Promise(D=>{callback(null);});};b['PluginUtils']['checkAllUpdates']=function(){return new Promise(B=>{let C=0x0,D=0x0;for(let E in window['PluginUpdates']['plugins']){let F=window['PluginUpdates']['plugins'][E];if(F)b['PluginUtils']['checkUpdate'](F['name'],F['raw'])['then'](G=>{C++;if(G==0x1)D++;if(C>=Object['keys'](window['PluginUpdates']['plugins'])['length'])B(D);});}});};b['PluginUtils']['showUpdateNotice']=function(B,C){if(!B||!C)return;let D=document['querySelector']('#pluginNotice');if(!D){D=b['NotificationUtils']['notice']('The\x20following\x20plugins\x20need\x20to\x20be\x20updated: ',{'html':!![],'id':'pluginNotice','type':'info','btn':!b['BDUtils']['isAutoLoadEnabled']()?'Reload':'','customicon':' '});D['style']['setProperty']('display','block','important');D['style']['setProperty']('visibility','visible','important');D['style']['setProperty']('opacity','1','important');D['querySelector'](b['dotCN']['noticedismiss'])['addEventListener']('click',F=>{b['DOMUtils']['remove']('.update-clickme-tooltip');});let E=D['querySelector'](b['dotCN']['noticebutton']);if(E){b['DOMUtils']['toggle'](E,!![]);E['addEventListener']('click',F=>{j['electron']['remote']['getCurrentWindow']()['reload']();});E['addEventListener']('mouseenter',F=>{if(window['PluginUpdates']['downloaded'])b['TooltipUtils']['create'](E,window['PluginUpdates']['downloaded']['join'](',\x20'),{'type':'bottom','selector':'update-notice-tooltip','style':'max-width:\x20420px'});});}}if(D){let F=D['querySelector']('#outdatedPlugins');if(F&&!F['querySelector']('#'+B+'-notice')){if(F['querySelector']('span'))F['appendChild'](b['DOMUtils']['create'](',\x20 '));let G=b['DOMUtils']['create'](''+B+' ');G['addEventListener']('click',H=>{b['PluginUtils']['downloadUpdate'](B,C);});F['appendChild'](G);if(!document['querySelector']('.update-clickme-tooltip'))b['TooltipUtils']['create'](F,'Click\x20us!',{'type':'bottom','selector':'update-clickme-tooltip','delay':0x1f4});}}};b['PluginUtils']['removeUpdateNotice']=function(B,C=document['querySelector']('#pluginNotice')){if(!B||!C)return;let D=C['querySelector']('#outdatedPlugins');if(D){let E=D['querySelector']('#'+B+'-notice');if(E){let F=E['nextSibling'];let G=E['prevSibling'];if(F&&b['DOMUtils']['containsClass'](F,'separator'))F['remove']();else if(G&&b['DOMUtils']['containsClass'](G,'separator'))G['remove']();E['remove']();}if(!D['querySelector']('span')){let H=C['querySelector'](b['dotCN']['noticebutton']);if(H){C['querySelector']('.notice-message')['innerText']='To\x20finish\x20updating\x20you\x20need\x20to\x20reload.';b['DOMUtils']['toggle'](H,![]);}else C['querySelector'](b['dotCN']['noticedismiss'])['click']();}}};b['PluginUtils']['downloadUpdate']=function(B,C){if(!B||!C)return;j['request'](C,(D,E,F)=>{if(D)return b['LogUtils']['warn']('Unable\x20to\x20get\x20update\x20for\x20'+B);b['InternalData']['creationTime']=0x0;let G=F['match'](/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i);G=G['toString']()['replace'](/['"]/g,'');j['fs']['writeFileSync'](j['path']['join'](b['BDUtils']['getPluginsFolder'](),C['split']('/')['slice'](-0x1)[0x0]),F);b['NotificationUtils']['toast'](B+'\x20v'+window['PluginUpdates']['plugins'][C]['version']+'\x20has\x20been\x20replaced\x20by\x20'+B+'\x20v'+G+'.',{'nopointer':!![],'selector':'plugin-updated-toast'});let H=document['querySelector']('#pluginNotice');if(H){if(H['querySelector'](b['dotCN']['noticebutton'])){window['PluginUpdates']['plugins'][C]['version']=G;if(!window['PluginUpdates']['downloaded'])window['PluginUpdates']['downloaded']=[];if(!window['PluginUpdates']['downloaded']['includes'](B))window['PluginUpdates']['downloaded']['push'](B);}b['PluginUtils']['removeUpdateNotice'](B,H);}});};b['PluginUtils']['checkChangeLog']=function(B){if(!b['ObjectUtils']['is'](B)||!B['changelog'])return;let C=b['DataUtils']['load'](B,'changelog');if(!C['currentversion']||b['NumberUtils']['compareVersions'](B['version'],C['currentversion'])){C['currentversion']=B['version'];b['DataUtils']['save'](C,B,'changelog');b['PluginUtils']['openChangeLog'](B);}};b['PluginUtils']['openChangeLog']=function(B){if(!b['ObjectUtils']['is'](B)||!B['changelog'])return;let C='',D={'added':'New\x20Features','fixed':'Bug\x20Fixes','improved':'Improvements','progress':'Progress'};for(let E in B['changelog']){E=E['toLowerCase']();let F=b['disCN']['changelog'+E];if(F){C+=''+D[E]+' ';for(let G of B['changelog'][E])C+=''+G[0x0]+' '+(G[0x1]?':\x20'+G[0x1]+'.':'')+' ';C+=' ';}}if(C)b['ModalUtils']['open'](B,{'header':B['name']+'\x20'+b['LanguageUtils']['LanguageStrings']['CHANGE_LOG'],'subheader':'Version\x20'+B['version'],'children':b['ReactUtils']['elementToReact'](b['DOMUtils']['create'](C)),'className':b['disCN']['modalchangelogmodal'],'contentClassName':b['disCNS']['changelogcontainer']+b['disCN']['modalminicontent']});};b['PluginUtils']['addLoadingIcon']=function(B){if(!Node['prototype']['isPrototypeOf'](B))return;b['DOMUtils']['addClass'](B,b['disCN']['loadingicon']);let C=document['querySelector'](b['dotCN']['app']+'>'+b['dotCN']['loadingiconwrapper']);if(!C){C=b['DOMUtils']['create']('
');document['querySelector'](b['dotCN']['app'])['appendChild'](C);let D=new MutationObserver(E=>{if(!C['firstElementChild'])b['DOMUtils']['remove'](C);});D['observe'](C,{'childList':!![]});}C['appendChild'](B);};b['PluginUtils']['createSettingsPanel']=function(B,C){if(!b['ObjectUtils']['is'](B)||!C||!b['ReactUtils']['isValidElement'](C)&&!b['ArrayUtils']['is'](C)||b['ArrayUtils']['is'](C)&&!C['length'])return;let D=b['DOMUtils']['create']('
');b['ReactUtils']['render'](b['ReactUtils']['createElement'](s['LibraryComponents']['SettingsPanel'],{'key':B['name']+'-settingsPanel','title':B['name'],'children':C}),D);return D;};b['PluginUtils']['refreshSettingsPanel']=function(B,C,...D){if(!b['ObjectUtils']['is'](B)||typeof B['getSettingsPanel']!='function'||!Node['prototype']['isPrototypeOf'](C)||!C['parentElement'])return;C['parentElement']['appendChild'](B['getSettingsPanel'](...D));C['remove']();};c['clearStartTimeout']=function(B){if(!b['ObjectUtils']['is'](B))return;b['TimeUtils']['clear'](B['startTimeout'],B['libLoadTimeout']);delete B['startTimeout'];delete B['libLoadTimeout'];};c['addSpecialListeners']=function(B){if(b['ObjectUtils']['is'](B)){if(typeof B['onSettingsClosed']==='function'){let C=b['ModuleUtils']['findByName']('StandardSidebarView');if(C)b['ModuleUtils']['patch'](B,C['prototype'],'componentWillUnmount',{'after':D=>{B['onSettingsClosed']();}});}if(typeof B['onSwitch']==='function'){let D=document['querySelector'](b['dotCN']['guildswrapper']+'\x20~\x20*\x20>\x20'+b['dotCN']['chatspacer']);if(D){let E=new MutationObserver(G=>{G['forEach'](H=>{if(H['target']&&b['DOMUtils']['containsClass'](H['target'],b['disCN']['nochannel']))B['onSwitch']();});});b['ObserverUtils']['connect'](B,D['querySelector'](b['dotCNC']['chat']+b['dotCN']['nochannel']),{'name':'switchFixNoChannelObserver','instance':E},{'attributes':!![]});let F=new MutationObserver(G=>{G['forEach'](H=>{if(H['addedNodes']){H['addedNodes']['forEach'](I=>{if(b['DOMUtils']['containsClass'](I,b['disCN']['chat'],b['disCN']['nochannel'],![])){b['ObserverUtils']['connect'](B,I,{'name':'switchFixNoChannelObserver','instance':E},{'attributes':!![]});}});}});});b['ObserverUtils']['connect'](B,D,{'name':'switchFixSpacerObserver','instance':F},{'childList':!![]});}}c['addContextListeners'](B);}};b['ObserverUtils']={};b['ObserverUtils']['connect']=function(B,C,D,E={'childList':!![]}){B=B==b&&c||B;if(!b['ObjectUtils']['is'](B)||!C||!D)return;if(b['ObjectUtils']['isEmpty'](B['observers']))B['observers']={};if(!b['ArrayUtils']['is'](B['observers'][D['name']]))B['observers'][D['name']]=[];if(!D['multi'])for(let G of B['observers'][D['name']])G['disconnect']();if(D['instance'])B['observers'][D['name']]['push'](D['instance']);let F=B['observers'][D['name']][B['observers'][D['name']]['length']-0x1];if(F){let H=Node['prototype']['isPrototypeOf'](C)?C:typeof C==='string'?document['querySelector'](C):null;if(H)F['observe'](H,E);}};b['ObserverUtils']['disconnect']=function(B,C){B=B==b&&c||B;if(b['ObjectUtils']['is'](B)&&!b['ObjectUtils']['isEmpty'](B['observers'])){let D=typeof C=='string'?C:b['ObjectUtils']['is'](C)?C['name']:null;if(!D){for(let E in B['observers'])for(let F of B['observers'][E])F['disconnect']();delete B['observers'];}else if(!b['ArrayUtils']['is'](B['observers'][D])){for(let G of B['observers'][D])G['disconnect']();delete B['observers'][D];}}};b['StoreChangeUtils']={};b['StoreChangeUtils']['add']=function(B,C,D){B=B==b&&c||B;if(!b['ObjectUtils']['is'](B)||!b['ObjectUtils']['is'](C)||typeof C['addChangeListener']!='function'||typeof D!='function')return;b['ListenerUtils']['remove'](B,C,D);if(!b['ArrayUtils']['is'](B['changeListeners']))B['changeListeners']=[];B['changeListeners']['push']({'store':C,'callback':D});C['addChangeListener'](D);};b['StoreChangeUtils']['remove']=function(B,C,D){B=B==b&&c||B;if(!b['ObjectUtils']['is'](B)||!b['ArrayUtils']['is'](B['changeListeners']))return;if(!C){while(B['changeListeners']['length']){let E=B['changeListeners']['pop']();E['store']['removeChangeListener'](E['callback']);}}else if(b['ObjectUtils']['is'](C)&&typeof C['addChangeListener']=='function'){if(!D){for(let F of B['changeListeners']){let G=[];if(F['store']==C){F['store']['removeChangeListener'](F['callback']);G['push'](F);}if(G['length'])B['changeListeners']=B['changeListeners']['filter'](H=>!G['includes'](H));}}else if(typeof D=='function'){C['removeChangeListener'](D);B['changeListeners']=B['changeListeners']['filter'](H=>H['store']==C&&H['callback']==D);}}};b['ListenerUtils']={};b['ListenerUtils']['add']=function(B,C,D,E,F){B=B==b&&c||B;if(!b['ObjectUtils']['is'](B)||!Node['prototype']['isPrototypeOf'](C)&&C!==window||!D)return;let G=typeof E=='function';let H=G?undefined:E;let I=G?E:F;if(typeof I!='function')return;b['ListenerUtils']['remove'](B,C,D,H);for(let J of D['split']('\x20')){J=J['split']('.');let K=J['shift']()['toLowerCase']();if(!K)return;let L=K;K=K=='mouseenter'||K=='mouseleave'?'mouseover':K;let M=(J['join']('.')||'')+B['name'];if(!b['ArrayUtils']['is'](B['eventListeners']))B['eventListeners']=[];let N=null;if(H){if(L=='mouseenter'||L=='mouseleave'){N=O=>{for(let P of O['path'])if(typeof P['matches']=='function'&&P['matches'](H)&&!P[M+'BDFDB'+L]){P[M+'BDFDB'+L]=!![];if(L=='mouseenter')I(b['ListenerUtils']['copyEvent'](O,P));let Q=R=>{if(R['target']['contains'](P)||R['target']==P||!P['contains'](R['target'])){if(L=='mouseleave')I(b['ListenerUtils']['copyEvent'](O,P));delete P[M+'BDFDB'+L];document['removeEventListener']('mouseout',Q);}};document['addEventListener']('mouseout',Q);break;}};}else{N=O=>{for(let P of O['path'])if(typeof P['matches']=='function'&&P['matches'](H)){I(b['ListenerUtils']['copyEvent'](O,P));break;}};}}else N=O=>{I(b['ListenerUtils']['copyEvent'](O,C));};B['eventListeners']['push']({'ele':C,'eventname':K,'origeventname':L,'namespace':M,'selector':H,'eventcallback':N});C['addEventListener'](K,N,!![]);}};b['ListenerUtils']['remove']=function(B,C,D='',E){B=B==b&&c||B;if(!b['ObjectUtils']['is'](B)||!b['ArrayUtils']['is'](B['eventListeners']))return;if(!C){while(B['eventListeners']['length']){let F=B['eventListeners']['pop']();F['ele']['removeEventListener'](F['eventname'],F['eventcallback'],!![]);}}else if(Node['prototype']['isPrototypeOf'](C)||C===window){for(let G of D['split']('\x20')){G=G['split']('.');let H=G['shift']()['toLowerCase']();let I=(G['join']('.')||'')+B['name'];for(let J of B['eventListeners']){let K=[];if(J['ele']==C&&(!H||J['origeventname']==H)&&J['namespace']==I&&(E===undefined||J['selector']==E)){J['ele']['removeEventListener'](J['eventname'],J['eventcallback'],!![]);K['push'](J);}if(K['length'])B['eventListeners']=B['eventListeners']['filter'](L=>!K['includes'](L));}}}};b['ListenerUtils']['multiAdd']=function(B,C,D){if(!Node['prototype']['isPrototypeOf'](B)||!C||typeof D!='function')return;for(let E of C['trim']()['split']('\x20')['filter'](F=>F))B['addEventListener'](E,D,!![]);};b['ListenerUtils']['multiRemove']=function(B,C,D){if(!Node['prototype']['isPrototypeOf'](B)||!C||typeof D!='function')return;for(let E of C['trim']()['split']('\x20')['filter'](F=>F))B['removeEventListener'](E,D,!![]);};b['ListenerUtils']['addToChildren']=function(B,C,D,E){if(!Node['prototype']['isPrototypeOf'](B)||!C||!D||!D['trim']()||typeof E!='function')return;for(let F of C['trim']()['split']('\x20')['filter'](G=>G)){let G=E;if(F=='mouseenter'||F=='mouseleave')G=H=>{if(H['target']['matches'](D))E(H);};B['querySelectorAll'](D['trim']())['forEach'](H=>{H['addEventListener'](F,G,!![]);});}};b['ListenerUtils']['copyEvent']=function(B,C){if(!B||!B['constructor']||!B['type'])return B;let D=new B['constructor'](B['type'],B);Object['defineProperty'](D,'originalEvent',{'value':B});Object['defineProperty'](D,'which',{'value':B['which']});Object['defineProperty'](D,'keyCode',{'value':B['keyCode']});Object['defineProperty'](D,'path',{'value':B['path']});Object['defineProperty'](D,'relatedTarget',{'value':B['relatedTarget']});Object['defineProperty'](D,'srcElement',{'value':B['srcElement']});Object['defineProperty'](D,'target',{'value':B['target']});Object['defineProperty'](D,'toElement',{'value':B['toElement']});if(C)Object['defineProperty'](D,'currentTarget',{'value':C});return D;};b['ListenerUtils']['stopEvent']=function(B){if(b['ObjectUtils']['is'](B)){if(typeof B['preventDefault']=='function')B['preventDefault']();if(typeof B['stopPropagation']=='function')B['stopPropagation']();if(typeof B['stopImmediatePropagation']=='function')B['stopImmediatePropagation']();if(b['ObjectUtils']['is'](B['originalEvent'])){if(typeof B['originalEvent']['preventDefault']=='function')B['originalEvent']['preventDefault']();if(typeof B['originalEvent']['stopPropagation']=='function')B['originalEvent']['stopPropagation']();if(typeof B['originalEvent']['stopImmediatePropagation']=='function')B['originalEvent']['stopImmediatePropagation']();}}};var e=[],f={'queue':[],'running':![]};b['NotificationUtils']={};b['NotificationUtils']['toast']=function(B,C={}){let D=document['querySelector']('.toasts,\x20.bd-toasts');if(!D){let F=document['querySelector'](b['dotCN']['channels']+'\x20+\x20div');let G=F?b['DOMUtils']['getRects'](F):null;let H=F?F['querySelector'](b['dotCN']['memberswrap']):null;let I=G?G['left']:0x136;let J=G?H?G['width']-b['DOMUtils']['getRects'](H)['width']:G['width']:window['outerWidth']-0x0;let K=F?F['querySelector']('form'):null;let L=K?b['DOMUtils']['getRects'](K)['height']:0x50;D=b['DOMUtils']['create']('
');(document['querySelector'](b['dotCN']['app'])||document['body'])['appendChild'](D);}const {type='',icon=!![],timeout=0xbb8,html=![],selector='',nopointer=![],color=''}=C;let E=b['DOMUtils']['create'](''+(html===!![]?B:b['StringUtils']['htmlEscape'](B))+'
');if(type){b['DOMUtils']['addClass'](E,'toast-'+type);if(icon)b['DOMUtils']['addClass'](E,'icon');}else if(color){let M=b['ColorUtils']['convert'](color,'RGB');if(M)E['style']['setProperty']('background-color',M);}b['DOMUtils']['addClass'](E,selector);D['appendChild'](E);E['close']=N=>{if(document['contains'](E)){b['DOMUtils']['addClass'](E,'closing');E['style']['setProperty']('pointer-events','none','important');b['TimeUtils']['timeout'](O=>{E['remove']();if(!D['querySelectorAll']('.toast,\x20.bd-toast')['length'])D['remove']();},0xbb8);}};if(nopointer)E['style']['setProperty']('pointer-events','none','important');else E['addEventListener']('click',E['close']);b['TimeUtils']['timeout'](N=>{E['close']();},timeout>0x0?timeout:0x927c0);return E;};b['NotificationUtils']['desktop']=function(B,C={}){const D=G=>{f['queue']['push']({'parsedcontent':B,'parsedoptions':C});E();};const E=G=>{if(!f['running']){let H=f['queue']['shift']();if(H)F(H['parsedcontent'],H['parsedoptions']);}};const F=(G,H)=>{f['running']=!![];let I=H['silent'];H['silent']=H['silent']||H['sound']?!![]:![];let J=new Notification(G,H);let K=new Audio();let L=b['TimeUtils']['timeout'](N=>{M();},H['timeout']?H['timeout']:0xbb8);if(typeof H['click']=='function')J['onclick']=N=>{b['TimeUtils']['clear'](L);M();H['click']();};if(!I&&H['sound']){K['src']=H['sound'];K['play']();}const M=N=>{K['pause']();J['close']();f['running']=![];b['TimeUtils']['timeout'](O=>{E();},0x3e8);};};if(!('Notification'in window)){}else if(Notification['permission']==='granted')D();else if(Notification['permission']!=='denied')Notification['requestPermission'](function(G){if(G==='granted')D();});};b['NotificationUtils']['notice']=function(B,C={}){if(!B)return;let D=document['querySelector'](b['dotCN']['layers']);if(!D)return;let E=b['NumberUtils']['generateId'](e);let F=b['DOMUtils']['create']('');D['parentElement']['insertBefore'](F,D);let G=F['querySelector']('.notice-message');if(C['platform'])for(let J of C['platform']['split']('\x20'))if(p['noticeicon'+J]){let K=b['DOMUtils']['create'](' ');b['DOMUtils']['addClass'](K,b['disCN']['noticeplatformicon']);b['DOMUtils']['removeClass'](K,b['disCN']['noticeicon']);F['insertBefore'](K,G);}if(C['customicon']){let L=b['DOMUtils']['create'](C['customicon']);let M=b['DOMUtils']['create'](' ');if(L['tagName']=='span'&&!L['firstElementChild'])M['style']['setProperty']('background','url('+C['customicon']+')\x20center/cover\x20no-repeat');else M['appendChild'](L);b['DOMUtils']['addClass'](M,b['disCN']['noticeplatformicon']);b['DOMUtils']['removeClass'](M,b['disCN']['noticeicon']);F['insertBefore'](M,G);}if(C['btn']||C['button'])F['appendChild'](b['DOMUtils']['create'](''+(C['btn']||C['button'])+' '));if(C['id'])F['id']=C['id']['split']('\x20')['join']('');if(C['selector'])b['DOMUtils']['addClass'](F,C['selector']);if(C['css'])b['DOMUtils']['appendLocalStyle']('BDFDBcustomNotificationBar'+E,C['css']);if(C['style'])F['style']=C['style'];if(C['html']===!![])G['innerHTML']=B;else{let N=document['createElement']('a');let O=[];for(let P of B['split']('\x20')){let Q=b['StringUtils']['htmlEscape'](P);N['href']=P;O['push'](N['host']&&N['host']!==window['location']['host']?''+Q+' ':Q);}G['innerHTML']=O['join']('\x20');}let H=null;if(C['type']&&!document['querySelector'](b['dotCNS']['chatbase']+b['dotCN']['noticestreamer'])){if(H=b['disCN']['notice'+C['type']])b['DOMUtils']['addClass'](F,H);if(C['type']=='premium'){let R=F['querySelector'](b['dotCN']['noticebutton']);if(R)b['DOMUtils']['addClass'](R,b['disCN']['noticepremiumaction']);b['DOMUtils']['addClass'](G,b['disCN']['noticepremiumtext']);F['insertBefore'](b['DOMUtils']['create'](' '),G);}}if(!H){let S=b['ColorUtils']['convert'](C['color'],'RGBCOMP');if(S){let T=S[0x0]>0xb4&&S[0x1]>0xb4&&S[0x2]>0xb4?'#000':'#FFF';let U=b['ColorUtils']['convert'](S,'HEX');let V=S[0x0]>0xb4&&S[0x1]>0xb4&&S[0x2]>0xb4?'brightness(0%)':'brightness(100%)';b['DOMUtils']['appendLocalStyle']('BDFDBcustomNotificationBarColorCorrection'+E,b['dotCN']['noticewrapper']+'[notice-id=\x22'+E+'\x22]{background-color:'+U+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+E+'\x22]\x20.notice-message\x20{color:'+T+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+E+'\x22]\x20'+b['dotCN']['noticebutton']+'\x20{color:'+T+'\x20!important;border-color:'+b['ColorUtils']['setAlpha'](T,0.25,'RGBA')+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+E+'\x22]\x20'+b['dotCN']['noticebutton']+':hover\x20{color:'+U+'\x20!important;background-color:'+T+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+E+'\x22]\x20'+b['dotCN']['noticedismiss']+'\x20{filter:'+V+'\x20!important;}');}else b['DOMUtils']['addClass'](F,b['disCN']['noticedefault']);}F['style']['setProperty']('height','36px','important');F['style']['setProperty']('min-width','70vw','important');F['style']['setProperty']('left','unset','important');F['style']['setProperty']('right','unset','important');let I=(b['DOMUtils']['getWidth'](document['body']['firstElementChild'])-b['DOMUtils']['getWidth'](F))/0x2;F['style']['setProperty']('left',I+'px','important');F['style']['setProperty']('right',I+'px','important');F['style']['setProperty']('min-width','unset','important');F['style']['setProperty']('width','unset','important');F['style']['setProperty']('max-width','calc(100vw\x20-\x20'+I*0x2+'px)','important');F['querySelector'](b['dotCN']['noticedismiss'])['addEventListener']('click',W=>{F['style']['setProperty']('overflow','hidden','important');F['style']['setProperty']('height','0px','important');b['TimeUtils']['timeout'](X=>{b['ArrayUtils']['remove'](e,E);b['DOMUtils']['removeLocalStyle']('BDFDBcustomNotificationBar'+E);b['DOMUtils']['removeLocalStyle']('BDFDBcustomNotificationBarColorCorrection'+E);F['remove']();},0x1f4);});return F;};b['NotificationUtils']['alert']=function(B,C){if(typeof B=='string'&&typeof B=='string'&&window['BdApi']&&typeof BdApi['alert']=='function')BdApi['alert'](B,C);};var g=[];b['TooltipUtils']={};b['TooltipUtils']['create']=function(B,C,D={}){let E=document['querySelector'](b['dotCN']['appmount']+'\x20>\x20'+b['dotCN']['itemlayercontainer']);if(!E||typeof C!='string'&&!b['ObjectUtils']['is'](D['guild'])||!Node['prototype']['isPrototypeOf'](B)||!document['contains'](B))return null;let F=b['NumberUtils']['generateId'](g);let G=b['DOMUtils']['create']('');E['appendChild'](G);let H=G['firstElementChild'];if(D['id'])H['id']=D['id']['split']('\x20')['join']('');if(typeof D['type']!='string'||!b['disCN']['tooltip'+D['type']['toLowerCase']()])D['type']='top';let I=D['type']['toLowerCase']();b['DOMUtils']['addClass'](H,b['disCN']['tooltip'+I]);let J=![],K=![],L='';if(D['style'])L+=D['style'];if(D['fontColor']){J=b['ObjectUtils']['is'](D['fontColor']);if(!J)L=(L?L+'\x20':'')+('color:\x20'+b['ColorUtils']['convert'](D['fontColor'],'RGBA')+'\x20!important;');}if(D['backgroundColor']){K=!![];let O=b['ObjectUtils']['is'](D['backgroundColor']);let P=!O?b['ColorUtils']['convert'](D['backgroundColor'],'RGBA'):b['ColorUtils']['createGradient'](D['backgroundColor']);L=(L?L+'\x20':'')+('background:\x20'+P+'\x20!important;\x20border-color:\x20'+(O?b['ColorUtils']['convert'](D['backgroundColor'][I=='left'?0x64:0x0],'RGBA'):P)+'\x20!important;');}if(L)H['style']=L;if(typeof D['zIndex']=='number'){G['style']['setProperty']('z-index',D['zIndex'],'important');H['style']['setProperty']('z-index',D['zIndex'],'important');}if(K)b['DOMUtils']['addClass'](H,b['disCN']['tooltipcustom']);else if(D['color']&&b['disCN']['tooltip'+D['color']['toLowerCase']()])b['DOMUtils']['addClass'](H,b['disCN']['tooltip'+D['color']['toLowerCase']()]);else b['DOMUtils']['addClass'](H,b['disCN']['tooltipblack']);if(D['list']||b['ObjectUtils']['is'](D['guild']))b['DOMUtils']['addClass'](H,b['disCN']['tooltiplistitem']);if(D['selector'])b['DOMUtils']['addClass'](H,D['selector']);if(b['ObjectUtils']['is'](D['guild'])){let Q=k['StreamUtils']['getAllApplicationStreams']()['filter'](U=>U['guildId']===D['guild']['id'])['map'](U=>U['ownerId']);let R=Q['map'](U=>k['UserStore']['getUser'](U))['filter'](U=>U);let S=Object['keys'](k['VoiceUtils']['getVoiceStates'](D['guild']['id']))['map'](U=>!Q['includes'](U)&&b['LibraryModules']['UserStore']['getUser'](U))['filter'](U=>U);let T=C||D['guild']['toString']();if(J)T=''+b['StringUtils']['htmlEscape'](T)+' ';b['ReactUtils']['render'](b['ReactUtils']['createElement'](b['ReactUtils']['Fragment'],{'children':[b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['tooltiprow'],b['disCN']['tooltiprowguildname']),'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['GuildComponents']['Badge'],{'guild':D['guild'],'size':k['StringUtils']['cssValueToNumber'](o['TooltipGuild']['iconSize']),'className':b['disCN']['tooltiprowicon']}),b['ReactUtils']['createElement']('span',{'className':b['DOMUtils']['formatClassName'](b['disCN']['tooltipguildnametext'],(S['length']||R['length'])&&b['disCN']['tooltipguildnametextlimitedsize']),'children':J||D['html']?b['ReactUtils']['elementToReact'](b['DOMUtils']['create'](T)):T})]}),S['length']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['tooltiprow'],'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'name':s['LibraryComponents']['SvgIcon']['Names']['SPEAKER'],'className':b['disCN']['tooltipactivityicon']}),b['ReactUtils']['createElement'](s['LibraryComponents']['UserSummaryItem'],{'users':S,'max':0x6})]}):null,R['length']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['tooltiprow'],'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'name':s['LibraryComponents']['SvgIcon']['Names']['STREAM'],'className':b['disCN']['tooltipactivityicon']}),b['ReactUtils']['createElement'](s['LibraryComponents']['UserSummaryItem'],{'users':R,'max':0x6})]}):null]['filter'](U=>U)}),H);}else{if(J)H['innerHTML']=''+b['StringUtils']['htmlEscape'](C)+' ';else if(D['html']===!![])H['innerHTML']=C;else H['innerText']=C;}H['appendChild'](b['DOMUtils']['create']('
'));if(D['hide'])b['DOMUtils']['appendLocalStyle']('BDFDBhideOtherTooltips'+F,'#app-mount\x20'+b['dotCN']['tooltip']+':not([tooltip-id=\x22'+F+'\x22])\x20{display:\x20none\x20!important;}',E);let M=U=>{b['DOMUtils']['remove'](G);};B['addEventListener']('mouseleave',M);let N=new MutationObserver(U=>U['forEach'](V=>{let W=Array['from'](V['removedNodes']);if(W['indexOf'](G)>-0x1||W['indexOf'](B)>-0x1||W['some'](X=>X['contains'](B))){b['ArrayUtils']['remove'](g,F);N['disconnect']();b['DOMUtils']['remove'](G);b['DOMUtils']['removeLocalStyle']('BDFDBhideOtherTooltips'+F,E);B['removeEventListener']('mouseleave',M);}}));N['observe'](document['body'],{'subtree':!![],'childList':!![]});(H['update']=U=>{let V=H['querySelector'](b['dotCN']['tooltippointer']);let W,X,Y=b['DOMUtils']['getRects'](B),Z=b['DOMUtils']['getRects'](G),a0=b['DOMUtils']['getRects'](document['querySelector'](b['dotCN']['appmount'])),a1={'height':0xa,'width':0xa},a2=typeof D['offset']=='number'?D['offset']:0x0;switch(I){case'top':X=Y['top']-Z['height']-a1['height']+0x2-a2;W=Y['left']+(Y['width']-Z['width'])/0x2;break;case'bottom':X=Y['top']+Y['height']+a1['height']-0x2+a2;W=Y['left']+(Y['width']-Z['width'])/0x2;break;case'left':X=Y['top']+(Y['height']-Z['height'])/0x2;W=Y['left']-Z['width']-a1['width']+0x2-a2;break;case'right':X=Y['top']+(Y['height']-Z['height'])/0x2;W=Y['left']+Y['width']+a1['width']-0x2+a2;break;}G['style']['setProperty']('top',X+'px');G['style']['setProperty']('left',W+'px');V['style']['removeProperty']('margin-left');V['style']['removeProperty']('margin-top');if(I=='top'||I=='bottom'){if(W<0x0){G['style']['setProperty']('left','5px');V['style']['setProperty']('margin-left',W-0xa+'px');}else{let a3=a0['width']-(W+Z['width']);if(a3<0x0){G['style']['setProperty']('left',a0['width']-Z['width']-0x5+'px');V['style']['setProperty']('margin-left',-0x1*a3+'px');}}}else if(I=='left'||I=='right'){if(X<0x0){G['style']['setProperty']('top','5px');V['style']['setProperty']('margin-top',X-0xa+'px');}else{let a4=a0['height']-(X+Z['height']);if(a4<0x0){G['style']['setProperty']('top',a0['height']-Z['height']-0x5+'px');V['style']['setProperty']('margin-top',-0x1*a4+'px');}}}})();if(D['delay']){b['DOMUtils']['toggle'](G);b['TimeUtils']['timeout'](U=>{b['DOMUtils']['toggle'](G);},D['delay']);}return G;};b['ObjectUtils']={};b['ObjectUtils']['is']=function(B){return B&&Object['prototype']['isPrototypeOf'](B)&&!Array['prototype']['isPrototypeOf'](B);};b['ObjectUtils']['extract']=function(B,...C){let D={};if(b['ObjectUtils']['is'](B))for(let E of C['flat'](0xa)['filter'](F=>F))if(B[E])D[E]=B[E];return D;};b['ObjectUtils']['exclude']=function(B,...C){let D=Object['assign']({},B);b['ObjectUtils']['delete'](D,...C);return D;};b['ObjectUtils']['delete']=function(B,...C){if(b['ObjectUtils']['is'](B))for(let D of C['flat'](0xa)['filter'](E=>E))delete B[D];};b['ObjectUtils']['sort']=function(B,C,D){if(!b['ObjectUtils']['is'](B))return{};let E={};if(C===undefined||!C)for(let F of Object['keys'](B)['sort']())E[F]=B[F];else{let G=[];for(let H in B)G['push'](B[H]);G=b['ArrayUtils']['keySort'](G,C,D);for(let I of G)for(let J in B)if(b['equals'](I,B[J])){E[J]=I;break;}}return E;};b['ObjectUtils']['reverse']=function(B,C){if(!b['ObjectUtils']['is'](B))return{};let D={};for(let E of C===undefined||!C?Object['keys'](B)['reverse']():Object['keys'](B)['sort']()['reverse']())D[E]=B[E];return D;};b['ObjectUtils']['filter']=function(B,C,D=![]){if(!b['ObjectUtils']['is'](B))return{};if(typeof C!='function')return B;return Object['keys'](B)['filter'](E=>C(D?E:B[E]))['reduce']((E,F)=>(E[F]=B[F],E),{});};b['ObjectUtils']['push']=function(B,C){if(b['ObjectUtils']['is'](B))B[Object['keys'](B)['length']]=C;};b['ObjectUtils']['pop']=function(B,C){if(b['ObjectUtils']['is'](B)){let D=Object['keys'](B);if(!D['length'])return;let E=B[D[D['length']-0x1]];delete B[D[D['length']-0x1]];return E;}};b['ObjectUtils']['map']=function(B,C){if(!b['ObjectUtils']['is'](B))return{};if(typeof C!='string'&&typeof C!='function')return B;let D={};for(let E in B)if(b['ObjectUtils']['is'](B[E]))D[E]=typeof C=='string'?B[E][C]:C(B[E],E);return D;};b['ObjectUtils']['toArray']=function(B){if(!b['ObjectUtils']['is'](B))return[];return Object['entries'](B)['map'](C=>C[0x1]);};b['ObjectUtils']['deepAssign']=function(B,...C){if(!C['length'])return B;let D=C['shift']();if(b['ObjectUtils']['is'](B)&&b['ObjectUtils']['is'](D)){for(let E in D){if(b['ObjectUtils']['is'](D[E])){if(!B[E])Object['assign'](B,{[E]:{}});b['ObjectUtils']['deepAssign'](B[E],D[E]);}else Object['assign'](B,{[E]:D[E]});}}return b['ObjectUtils']['deepAssign'](B,...C);};b['ObjectUtils']['isEmpty']=function(B){return!b['ObjectUtils']['is'](B)||Object['getOwnPropertyNames'](B)['length']==0x0;};b['ArrayUtils']={};b['ArrayUtils']['is']=function(B){return B&&Array['isArray'](B);};b['ArrayUtils']['sum']=function(B){return Array['isArray'](B)?B['reduce']((C,D)=>C+Math['round'](D),0x0):0x0;};b['ArrayUtils']['keySort']=function(B,C,D){if(!b['ArrayUtils']['is'](B))return[];if(C==null)return B;if(D===undefined)D=null;return B['sort']((E,F)=>{let G=E[C],H=F[C];if(G!==D)return GH?0x1:0x0;});};b['ArrayUtils']['numSort']=function(B){return B['sort']((C,D)=>{return CD?0x1:0x0;});};b['ArrayUtils']['includes']=function(B,...C){if(!b['ArrayUtils']['is'](B))return null;if(!B['length'])return![];let D=C['pop']();if(typeof D!='boolean'){C['push'](D);D=!![];}if(!C['length'])return![];let E=undefined;for(let F of C){if(E===undefined)E=D;if(D&&!B['includes'](F))E=![];if(!D&&B['includes'](F))E=!![];}return E;};b['ArrayUtils']['remove']=function(B,C,D=![]){if(!b['ArrayUtils']['is'](B))return[];if(!B['includes'](C))return B;if(!D)B['splice'](B['indexOf'](C),0x1);else while(B['indexOf'](C)>-0x1)B['splice'](B['indexOf'](C),0x1);return B;};b['ArrayUtils']['getAllIndexes']=function(B,C){if(!b['ArrayUtils']['is'](B)&&typeof B!='string')return[];var D=[],E=-0x1;while((E=B['indexOf'](C,E+0x1))!==-0x1)D['push'](E);return D;};b['ArrayUtils']['removeCopies']=function(B){if(!b['ArrayUtils']['is'](B))return[];return[...new Set(B)];};b['ModuleUtils']={};b['ModuleUtils']['cached']=window['BDFDB']&&window['BDFDB']['ModuleUtils']&&window['BDFDB']['ModuleUtils']['cached']||{};b['ModuleUtils']['find']=function(B,C){C=typeof C!='boolean'?!![]:C;let D=c['getWebModuleReq']();for(let E in D['c'])if(D['c']['hasOwnProperty'](E)){let F=D['c'][E]['exports'];if(F&&(typeof F=='object'||typeof F=='function')&&B(F))return C?F:D['c'][E];if(F&&F['__esModule']){for(let G in F)if(F[G]&&(typeof F[G]=='object'||typeof F[G]=='function')&&B(F[G]))return C?F[G]:D['c'][E];if(F['default']&&(typeof F['default']=='object'||typeof F['default']=='function'))for(let H in F['default'])if(F['default'][H]&&(typeof F['default'][H]=='object'||typeof F['default'][H]=='function')&&B(F['default'][H]))return C?F['default'][H]:D['c'][E];}}for(let I in D['m'])if(D['m']['hasOwnProperty'](I)){let J=D['m'][I];if(J&&typeof J=='function'&&B(J)){if(D['c'][I])return C?D['c'][I]['exports']:D['c'][I];else{let K={};D['m'][I](K,null,D);return C?K['exports']:K;}}}};b['ModuleUtils']['findByProperties']=function(...B){B=B['flat'](0xa);let C=B['pop']();if(typeof C!='boolean'){B['push'](C);C=!![];}return c['findModule']('prop',JSON['stringify'](B),D=>B['every'](E=>D[E]!==undefined),C);};b['ModuleUtils']['findByName']=function(B,C){return c['findModule']('name',JSON['stringify'](B),D=>D['displayName']===B||D['render']&&D['render']['displayName']===B,typeof C!='boolean'?!![]:C);};b['ModuleUtils']['findByString']=function(...B){B=B['flat'](0xa);let C=B['pop']();if(typeof C!='boolean'){B['push'](C);C=!![];}return c['findModule']('string',JSON['stringify'](B),D=>B['every'](E=>typeof D=='function'&&(D['toString']()['indexOf'](E)>-0x1||typeof D['__originalMethod']=='function'&&D['__originalMethod']['toString']()['indexOf'](E)>-0x1||typeof D['__originalFunction']=='function'&&D['__originalFunction']['toString']()['indexOf'](E)>-0x1)||b['ObjectUtils']['is'](D)&&typeof D['type']=='function'&&D['type']['toString']()['indexOf'](E)>-0x1),C);};b['ModuleUtils']['findByPrototypes']=function(...B){B=B['flat'](0xa);let C=B['pop']();if(typeof C!='boolean'){B['push'](C);C=!![];}return c['findModule']('proto',JSON['stringify'](B),D=>D['prototype']&&B['every'](E=>D['prototype'][E]!==undefined),C);};c['findModule']=function(B,C,D,E){if(!b['ObjectUtils']['is'](b['ModuleUtils']['cached'][B]))b['ModuleUtils']['cached'][B]={'module':{},'export':{}};if(E&&b['ModuleUtils']['cached'][B]['export'][C])return b['ModuleUtils']['cached'][B]['export'][C];else if(!E&&b['ModuleUtils']['cached'][B]['module'][C])return b['ModuleUtils']['cached'][B]['module'][C];else{var F=b['ModuleUtils']['find'](D,E);if(F){if(E)b['ModuleUtils']['cached'][B]['export'][C]=F;else b['ModuleUtils']['cached'][B]['module'][C]=F;return F;}else b['LogUtils']['warn'](C+'\x20['+B+']\x20not\x20found\x20in\x20WebModules');}};c['getWebModuleReq']=function(){if(!c['getWebModuleReq']['req']){const B='BDFDB-WebModules';const C=window['webpackJsonp']['push']([[],{[B]:(D,E,F)=>D['exports']=F},[[B]]]);delete C['m'][B];delete C['c'][B];c['getWebModuleReq']['req']=C;}return c['getWebModuleReq']['req'];};var h={};h['PatchTypes']=['before','instead','after'];h['PatchMap']={'BannedCard':'BannedUser','ChannelWindow':'Channel','InvitationCard':'InviteRow','InviteCard':'InviteRow','MemberCard':'Member','PopoutContainer':'Popout','QuickSwitchResult':'Result','UserProfile':'UserProfileBody','WebhookCard':'Webhook'};h['ForceObserve']=['DirectMessage','GuildIcon'];h['MemoComponent']=['ExpressionPicker','ExpressionEmojiPicker','GuildFolder','MessageContent','NowPlayingHeader'];h['NonRender']=b['ArrayUtils']['removeCopies']([]['concat'](h['MemoComponent'],['Attachment','ConnectedPrivateChannelsList','ContextMenuItem','DiscordTag','InviteModalUserRow','Mention','Message','MessageTimestamp','NameTag','NowPlayingItem','PrivateChannelEmptyMessage','RecentsHeader','SystemMessage','SimpleMessageAccessories','UserInfo']));h['LoadedInComponents']={'AutocompleteChannelResult':'LibraryComponents.AutocompleteItems.Channel','AutocompleteUserResult':'LibraryComponents.AutocompleteItems.User','ContextMenuItem':'NativeSubComponents.ContextMenuItem','QuickSwitchChannelResult':'LibraryComponents.QuickSwitchItems.Channel','QuickSwitchGroupDMResult':'LibraryComponents.QuickSwitchItems.GroupDM','QuickSwitchGuildResult':'LibraryComponents.QuickSwitchItems.Guild','QuickSwitchUserResult':'LibraryComponents.QuickSwitchItems.User'};h['SpecialFilter']={'V2C_ContentColumn':B=>B&&B['return']&&B['return']['stateNode']&&B['return']['stateNode']['props']&&typeof B['return']['stateNode']['props']['title']=='string'&&(B['return']['stateNode']['props']['title']['toUpperCase']()['indexOf']('PLUGINS')==0x0||B['return']['stateNode']['props']['title']['toUpperCase']()['indexOf']('THEMES')==0x0)&&B['return']['type'],'V2C_PluginCard':B=>B&&B['return']&&B['return']['stateNode']&&B['return']['stateNode']['props']&&B['return']['stateNode']['props']['addon']&&B['return']['stateNode']['props']['addon']['plugin']&&B['return']['type'],'V2C_ThemeCard':B=>B&&B['return']&&B['return']['stateNode']&&B['return']['stateNode']['props']&&B['return']['stateNode']['props']['addon']&&B['return']['stateNode']['props']['addon']['css']&&B['return']['type'],'GuildFolder':B=>B&&B['return']&&B['return']['memoizedProps']&&B['return']['memoizedProps']['folderId']&&B['return']['memoizedProps']['guildIds']&&B['return']['type']};h['PatchFinder']={'Account':'accountinfo','App':'app','AppSkeleton':'app','AppView':'appcontainer','AuthWrapper':'loginscreen','BannedCard':'guildsettingsbannedcard','Category':'categorycontainerdefault','ChannelCall':'callcurrentcontainer','ChannelMember':'member','Channels':'guildchannels','ChannelTextAreaForm':'chatform','ChannelWindow':'chatcontent','DirectMessage':'guildouter','EmojiPicker':'emojipicker','Guild':'guildouter','GuildFolder':'guildfolderwrapper','GuildIcon':'avataricon','Guilds':'guildswrapper','GuildSettingsBans':'guildsettingsbannedcard','GuildSettingsEmoji':'guildsettingsemojicard','GuildSettingsMembers':'guildsettingsmembercard','GuildSidebar':'guildchannels','I18nLoaderWrapper':'app','InstantInviteModal':'invitemodalwrapper','InvitationCard':'invitemodalinviterow','InviteCard':'guildsettingsinvitecard','MemberCard':'guildsettingsmembercard','Messages':'messages','MessagesPopout':'messagespopout','ModalLayer':'layermodal','MutualGuilds':'userprofilebody','MutualFriends':'userprofilebody','Note':'usernote','PopoutContainer':'popout','Popouts':'popouts','PrivateChannelCall':'callcurrentcontainer','PrivateChannelCallParticipants':'callcurrentcontainer','PrivateChannelRecipientsInvitePopout':'searchpopoutdmaddpopout','PrivateChannelsList':'dmchannelsscroller','QuickSwitchChannelResult':'quickswitchresult','QuickSwitchGuildResult':'quickswitchresult','QuickSwitchResult':'quickswitchresult','SearchResults':'searchresultswrap','TypingUsers':'typing','UnreadDMs':'guildsscroller','Upload':'uploadmodal','UserHook':'auditloguserhook','UserPopout':'userpopout','UserProfile':'userprofile','V2C_ContentColumn':'contentcolumn','V2C_PluginCard':'_repocard','V2C_ThemeCard':'_repocard'};h['CodeFinder']={'ExpressionEmojiPicker':['allowManagedEmojis','EMOJI_PICKER_TAB_PANEL_ID','diversitySelector']};h['PropsFinder']={'MessageHeader':'MessageTimestamp','UnavailableGuildsButton':'UnavailableGuildsButton'};h['NonPrototype']=b['ArrayUtils']['removeCopies']([]['concat'](h['NonRender'],Object['keys'](h['CodeFinder']),Object['keys'](h['PropsFinder']),['ChannelTextAreaContainer']));b['ModuleUtils']['isPatched']=function(B,C,D){B=B==b&&c||B;if(!B||!b['ObjectUtils']['is'](C)||!C['BDFDBpatch']||!D)return![];const E=(typeof B==='string'?B:B['name'])['toLowerCase']();return E&&C[D]&&C[D]['__isBDFDBpatched']&&C['BDFDBpatch'][D]&&b['ObjectUtils']['toArray'](C['BDFDBpatch'][D])['some'](F=>b['ObjectUtils']['toArray'](F)['some'](G=>Object['keys'](G)['includes'](E)));};b['ModuleUtils']['patch']=function(B,C,D,E,F={}){B=B==b&&c||B;if(!B||!b['ObjectUtils']['is'](C)||!D||!b['ObjectUtils']['is'](E))return null;E=b['ObjectUtils']['filter'](E,K=>h['PatchTypes']['includes'](K),!![]);if(b['ObjectUtils']['isEmpty'](E))return null;const G=typeof B==='string'?B:B['name'];const H=G['toLowerCase']();const I=b['ObjectUtils']['is'](B)&&!isNaN(B['patchPriority'])?B['patchPriority']<0x0?0x0:B['patchPriority']>0xa?0xa:Math['round'](B['patchPriority']):0x5;if(!b['ObjectUtils']['is'](C['BDFDBpatch']))C['BDFDBpatch']={};D=[D]['flat'](0xa)['filter'](K=>K);let J=K=>{b['ModuleUtils']['unpatch'](B,C,D);};for(let K of D)if(C[K]==null||typeof C[K]=='function'){let L=0x0;if(!C['BDFDBpatch'][K]||F['force']&&(!C[K]||!C[K]['__isBDFDBpatched'])){if(!C['BDFDBpatch'][K]){C['BDFDBpatch'][K]={};for(let N of h['PatchTypes'])C['BDFDBpatch'][K][N]={};}if(!C[K])C[K]=O=>{};const M=C[K];C['BDFDBpatch'][K]['originalMethod']=M;C[K]=function(){let O=![],P=![];const Q={'thisObject':this,'methodArguments':arguments,'originalMethod':M,'originalMethodName':K,'callOriginalMethod':R=>{if(!P)Q['returnValue']=Q['originalMethod']['apply'](Q['thisObject'],Q['methodArguments']);},'callOriginalMethodAfterwards':R=>{O=!![];},'stopOriginalMethodCall':R=>{P=!![];}};if(C['BDFDBpatch']&&C['BDFDBpatch'][K]){for(let S in C['BDFDBpatch'][K]['before'])for(let T in b['ObjectUtils']['sort'](C['BDFDBpatch'][K]['before'][S])){b['TimeUtils']['suppress'](C['BDFDBpatch'][K]['before'][S][T],'\x22before\x22\x20callback\x20of\x20'+K+'\x20in\x20'+(C['constructor']?C['constructor']['displayName']||C['constructor']['name']:'module'),C['BDFDBpatch'][K]['before'][S][T]['pluginName'])(Q);}let R=b['ObjectUtils']['toArray'](C['BDFDBpatch'][K]['instead'])['some'](U=>!b['ObjectUtils']['isEmpty'](U));if(R)for(let U in C['BDFDBpatch'][K]['instead'])for(let V in b['ObjectUtils']['sort'](C['BDFDBpatch'][K]['instead'][U])){let W=b['TimeUtils']['suppress'](C['BDFDBpatch'][K]['instead'][U][V],'\x22instead\x22\x20callback\x20of\x20'+K+'\x20in\x20'+(C['constructor']?C['constructor']['displayName']||C['constructor']['name']:'module'),C['BDFDBpatch'][K]['instead'][U][V]['pluginName'])(Q);if(W!==undefined)Q['returnValue']=W;}if((!R||O)&&!P)b['TimeUtils']['suppress'](Q['callOriginalMethod'],'originalMethod\x20of\x20'+K+'\x20in\x20'+(C['constructor']?C['constructor']['displayName']||C['constructor']['name']:'module'))();for(let X in C['BDFDBpatch'][K]['after'])for(let Y in b['ObjectUtils']['sort'](C['BDFDBpatch'][K]['after'][X])){let Z=b['TimeUtils']['suppress'](C['BDFDBpatch'][K]['after'][X][Y],'\x22after\x22\x20callback\x20of\x20'+K+'\x20in\x20'+(C['constructor']?C['constructor']['displayName']||C['constructor']['name']:'module'),C['BDFDBpatch'][K]['after'][X][Y]['pluginName'])(Q);if(Z!==undefined)Q['returnValue']=Z;}}else b['TimeUtils']['suppress'](Q['callOriginalMethod'],'originalMethod\x20of\x20'+K+'\x20in\x20'+(C['constructor']?C['constructor']['displayName']||C['constructor']['name']:'module'))();O=![],P=![];return K=='render'&&Q['returnValue']===undefined?null:Q['returnValue'];};for(let O of Object['keys'](M))C[K][O]=M[O];if(!C[K]['__originalFunction']){let P=M['__originalMethod']||M['__originalFunction']||M;if(typeof P=='function'){C[K]['__originalFunction']=P;C[K]['toString']=Q=>P['toString']();}}C[K]['__isBDFDBpatched']=!![];}for(let Q in E)if(typeof E[Q]=='function'){if(!b['ObjectUtils']['is'](C['BDFDBpatch'][K][Q][I]))C['BDFDBpatch'][K][Q][I]={};C['BDFDBpatch'][K][Q][I][H]=(...R)=>{if(F['once'])J();return E[Q](...R);};C['BDFDBpatch'][K][Q][I][H]['pluginName']=G;}}if(b['ObjectUtils']['is'](B)&&!F['once']&&!F['noCache']){if(!b['ArrayUtils']['is'](B['patchCancels']))B['patchCancels']=[];B['patchCancels']['push'](J);}return J;};b['ModuleUtils']['unpatch']=function(B,C,D){B=B==b&&c||B;if(!C&&!D){if(b['ObjectUtils']['is'](B)&&b['ArrayUtils']['is'](B['patchCancels']))while(B['patchCancels']['length'])B['patchCancels']['pop']()();}else{if(!b['ObjectUtils']['is'](C)||!C['BDFDBpatch'])return;const F=!B?null:(typeof B==='string'?B:B['name'])['toLowerCase']();if(D){for(let G of[D]['flat'](0xa)['filter'](H=>H))if(C[G]&&C['BDFDBpatch'][G])E(G,F);}else for(let H of C['BDFDBpatch'])E(H,F);}function E(I,J){for(let K of h['PatchTypes']){if(J)for(let L in C['BDFDBpatch'][I][K]){delete C['BDFDBpatch'][I][K][L][J];if(b['ObjectUtils']['isEmpty'](C['BDFDBpatch'][I][K][L]))delete C['BDFDBpatch'][I][K][L];}else delete C['BDFDBpatch'][I][K];}if(b['ObjectUtils']['isEmpty'](b['ObjectUtils']['filter'](C['BDFDBpatch'][I],M=>h['PatchTypes']['includes'](M)&&!b['ObjectUtils']['isEmpty'](C['BDFDBpatch'][I][M]),!![]))){C[I]=C['BDFDBpatch'][I]['originalMethod'];delete C['BDFDBpatch'][I];if(b['ObjectUtils']['isEmpty'](C['BDFDBpatch']))delete C['BDFDBpatch'];}}};b['ModuleUtils']['forceAllUpdates']=function(B,C){B=B==b&&c||B;if(b['ObjectUtils']['is'](B)&&b['ObjectUtils']['is'](B['patchedModules'])){const D=document['querySelector'](b['dotCN']['app']);const E=document['querySelector']('#bd-settingspane-container\x20>\x20*');if(D){C=[C]['flat'](0xa)['filter'](I=>I)['map'](I=>I&&h['PatchMap'][I]?h['PatchMap'][I]+'\x20_\x20_\x20'+I:I);let F=[],G=[],H={};for(let I in B['patchedModules'])for(let J in B['patchedModules'][I]){let K=[B['patchedModules'][I][J]]['flat'](0xa)['filter'](L=>L);if(b['ArrayUtils']['includes'](K,'componentDidMount','componentDidUpdate','render',![])&&(!C['length']||C['includes'](J))){let L=J['split']('\x20_\x20_\x20')[0x1]||J;let M=h['PatchFinder'][L];let N=h['SpecialFilter'][L];if(M&&p[M]&&typeof N=='function'){for(let P of document['querySelectorAll'](b['dotCN'][M])){let Q=N(b['ReactUtils']['getInstance'](P));if(Q){G['push']([J,Q]);break;}}}else F['push'](J);let O=J['split']('\x20_\x20_\x20')[0x0];if(!H[O])H[O]=[];H[O]['push'](I);}}if(F['length']||G['length']){F=b['ArrayUtils']['removeCopies'](F);G=b['ArrayUtils']['removeCopies'](G);try{const R=b['ReactUtils']['findOwner'](D,{'name':F,'type':G,'all':!![],'group':!![],'unlimited':!![]});const S=b['ReactUtils']['findOwner'](D,{'name':F,'type':G,'all':!![],'group':!![],'unlimited':!![],'up':!![]});for(let T in R)for(let U of R[T])c['forceInitiateProcess'](B,U,T,H[T]);for(let V in S)for(let W of S[V])c['forceInitiateProcess'](B,W,V,H[V]);if(E){const X=b['ReactUtils']['findOwner'](E,{'name':F,'type':G,'all':!![],'unlimited':!![]});if(X['length']){const Y=b['ReactUtils']['findOwner'](b['ReactUtils']['getInstance'](document['querySelector']('#bd-settingspane-container\x20>\x20*')),{'props':'onChange','up':!![]});if(Y&&Y['props']&&typeof Y['props']['onChange']=='function')Y['props']['onChange'](Y['props']['type']);}}}catch(Z){b['LogUtils']['error']('Could\x20not\x20force\x20update\x20components!\x20'+Z,B['name']);}}}}};c['forceInitiateProcess']=function(B,C,D,E){B=B==b&&c||B;if(!B||!C||!D)return;let F=[];for(let G in B['patchedModules'])if(B['patchedModules'][G][D])F['push'](B['patchedModules'][G][D]);F=b['ArrayUtils']['removeCopies'](F)['flat'](0xa)['filter'](H=>H);if(F['includes']('componentDidMount'))c['initiateProcess'](B,D,{'instance':C,'methodname':'componentDidMount','patchtypes':E});if(F['includes']('render'))b['ReactUtils']['forceUpdate'](C);else if(F['includes']('componentDidUpdate'))c['initiateProcess'](B,D,{'instance':C,'methodname':'componentDidUpdate','patchtypes':E});};c['initiateProcess']=function(B,C,D){B=B==b&&c||B;if(b['ObjectUtils']['is'](B)&&!B['stopping']&&D['instance']){C=k['StringUtils']['upperCaseFirstChar'](C['split']('\x20_\x20_\x20')[0x1]||C)['replace'](/[^A-z0-9]|_/g,'');if(typeof B['process'+C]=='function'){if(typeof D['methodname']=='string'&&(D['methodname']['indexOf']('componentDid')==0x0||D['methodname']['indexOf']('componentWill')==0x0)){D['node']=b['ReactUtils']['findDOMNode'](D['instance']);if(D['node'])return B['process'+C](D);else b['TimeUtils']['timeout'](E=>{D['node']=b['ReactUtils']['findDOMNode'](D['instance']);if(D['node'])return B['process'+C](D);});}else if(D['returnvalue']||D['patchtypes']['includes']('before'))return B['process'+C](D);}}};c['patchPlugin']=function(B){B=B==b&&c||B;if(!b['ObjectUtils']['is'](B)||!b['ObjectUtils']['is'](B['patchedModules']))return;b['ModuleUtils']['unpatch'](B);for(let G in B['patchedModules'])for(let H in B['patchedModules'][G]){let I=H['split']('\x20_\x20_\x20')[0x1]||H;let J=h['LoadedInComponents'][H]&&b['ReactUtils']['getValue'](s,h['LoadedInComponents'][H]);if(J)C(h['NonRender']['includes'](I)?(b['ModuleUtils']['find'](K=>K==J,![])||{})['exports']:J,H,G);else{let K=h['PatchFinder'][I];let L=h['CodeFinder'][I];let M=h['PropsFinder'][I];let N=h['PatchMap'][H];let O=N?N+'\x20_\x20_\x20'+H:H;let P=O['split']('\x20_\x20_\x20')[0x0];if(N){B['patchedModules'][G][O]=B['patchedModules'][G][H];delete B['patchedModules'][G][H];}if(K&&p[K])E(K,O,G,h['ForceObserve']['includes'](I));else if(L){let Q=(b['ModuleUtils']['findByString'](L,![])||{})['exports'];C(Q&&h['MemoComponent']['includes'](I)?Q['default']:Q,O,G,!![]);}else if(M){let R=(b['ModuleUtils']['findByProperties'](M,![])||{})['exports'];C(R&&h['MemoComponent']['includes'](I)?R['default']:R,O,G,!![]);}else if(h['NonRender']['includes'](I)){let S=(b['ModuleUtils']['findByName'](P,![])||{})['exports'];C(S&&h['MemoComponent']['includes'](I)?S['default']:S,O,G,!![]);}else C(b['ModuleUtils']['findByName'](P),O,G);}}function C(T,U,V,W){if(T){let X=U['split']('\x20_\x20_\x20')[0x0];T=T['_reactInternalFiber']&&T['_reactInternalFiber']['type']?T['_reactInternalFiber']['type']:T;T=W||c['isInstanceCorrect'](T,X)||h['LoadedInComponents'][U]?T:b['ReactUtils']['findConstructor'](T,X)||b['ReactUtils']['findConstructor'](T,X,{'up':!![]});if(T){T=T['_reactInternalFiber']&&T['_reactInternalFiber']['type']?T['_reactInternalFiber']['type']:T;let Y={};Y[V]=Z=>{return c['initiateProcess'](B,U,{'instance':window!=Z['thisObject']?Z['thisObject']:{'props':Z['methodArguments'][0x0]},'returnvalue':Z['returnValue'],'methodname':Z['originalMethodName'],'patchtypes':[V]});};b['ModuleUtils']['patch'](B,h['NonPrototype']['includes'](X)?T:T['prototype'],B['patchedModules'][V][U],Y);}}}function D(T,U,V,W){let X=U['split']('\x20_\x20_\x20')[0x1]||U;let Y=b['ReactUtils']['getInstance'](T);let Z=h['SpecialFilter'][X];if(typeof Z=='function'){let a0=Z(Y);if(a0){if(h['NonRender']['includes'](X)){let a1=(b['ModuleUtils']['find'](a2=>a2==a0,![])||{})['exports'];C(a1&&h['MemoComponent']['includes'](X)?a1['default']:a1,U,V,!![]);}else C(a0,U,V,!![]);b['ModuleUtils']['forceAllUpdates'](B,U);return!![];}}else if(F(Y,U)){C(Y,U,V);b['ModuleUtils']['forceAllUpdates'](B,U);return!![];}return![];}function E(T,U,V,W){const X=document['querySelector'](b['dotCN']['app']),Y=document['querySelector']('#bd-settingspane-container\x20'+b['dotCN']['scrollerwrap']);let Z=![];if(!W){if(X){let a0=b['ReactUtils']['findConstructor'](X,U,{'unlimited':!![]})||b['ReactUtils']['findConstructor'](X,U,{'unlimited':!![],'up':!![]});if(a0&&(Z=!![]))C(a0,U,V);}if(!Z&&Y){let a1=b['ReactUtils']['findConstructor'](Y,U,{'unlimited':!![]});if(a1&&(Z=!![]))C(a1,U,V);}}if(!Z){let a2=![],a3=b['disCN'][T],a4=b['dotCN'][T];for(let a5 of document['querySelectorAll'](a4)){a2=D(a5,U,V);if(a2)break;}if(!a2){let a6=new MutationObserver(a7=>{a7['forEach'](a8=>{a8['addedNodes']['forEach'](a9=>{if(a2||!a9||!a9['tagName'])return;let aa=null;if((aa=b['DOMUtils']['containsClass'](a9,a3)?a9:a9['querySelector'](a4))!=null){a2=D(aa,U,V);if(a2)a6['disconnect']();}});});});b['ObserverUtils']['connect'](B,b['dotCN']['appmount'],{'name':'checkForinstanceObserver','instance':a6,'multi':!![]},{'childList':!![],'subtree':!![]});}}}function F(T,U){if(!T)return![];T=T['_reactInternalFiber']&&T['_reactInternalFiber']['type']?T['_reactInternalFiber']['type']:T;T=c['isInstanceCorrect'](T,U)?T:b['ReactUtils']['findConstructor'](T,U)||b['ReactUtils']['findConstructor'](T,U,{'up':!![]});return!!T;}};c['isInstanceCorrect']=function(B,C){return B&&(B['type']&&(B['type']['render']&&B['type']['render']['displayName']===C||B['type']['displayName']===C||B['type']['name']===C||B['type']===C)||B['render']&&(B['render']['displayName']===C||B['render']['name']===C)||B['displayName']==C||B['name']===C);};c['addContextListeners']=function(B){B=B==b&&c||B;for(let C of u['NormalContextMenus'])if(typeof B['on'+C]==='function')c['patchContextMenuPlugin'](B,C,s['LibraryComponents']['ContextMenus'][C]);for(let D of u['FluxContextMenus'])if(typeof B['on'+D]==='function'){if(b['InternalData']['componentPatchQueries'][D]['module'])c['patchContextMenuPlugin'](B,D,b['InternalData']['componentPatchQueries'][D]['module']);else{b['InternalData']['componentPatchQueries'][D]['query']['push'](B);b['InternalData']['componentPatchQueries'][D]['query']['sort']((E,F)=>{return E['name']F['name']?0x1:0x0;});}}for(let E of u['QueuedComponents'])if(typeof B['on'+E]==='function'){if(b['InternalData']['componentPatchQueries'][E]['module'])c['patchExportedContextMenuPlugin'](B,E,b['InternalData']['componentPatchQueries'][E]['module']);else{b['InternalData']['componentPatchQueries'][E]['query']['push'](B);b['InternalData']['componentPatchQueries'][E]['query']['sort']((F,G)=>{return F['name']G['name']?0x1:0x0;});}}};c['patchContextMenuPlugin']=function(B,C,D){B=B==b&&c||B;if(D&&D['prototype'])b['ModuleUtils']['patch'](B,D['prototype'],'render',{'after':E=>{if(E['thisObject']&&E['returnValue']&&typeof B['on'+C]==='function')B['on'+C]({'instance':E['thisObject'],'returnvalue':E['returnValue'],'methodname':'render'});}});};c['patchExportedContextMenuPlugin']=function(B,C,D){B=B==b&&c||B;if(D&&D['exports'])b['ModuleUtils']['patch'](B,D['exports'],'default',{'after':E=>{if(E['returnValue']&&typeof B['on'+C]==='function')B['on'+C]({'instance':{'props':E['methodArguments'][0x0]},'returnvalue':E['returnValue'],'methodname':'default'});}});};c['executeExtraPatchedPatches']=function(B,C){if(b['ObjectUtils']['is'](b['InternalData']['componentPatchQueries'][B])&&b['ArrayUtils']['is'](b['InternalData']['componentPatchQueries'][B]['query']))for(let D of b['InternalData']['componentPatchQueries'][B]['query'])if(C['returnvalue']&&typeof D['on'+B]==='function')D['on'+B](C);};c['patchContextMenuLib']=function(B,C){if(B&&B['prototype']){b['ModuleUtils']['patch'](b,B['prototype'],'render',{'after':D=>{if(D['thisObject']['props']['BDFDBcontextMenu']&&D['thisObject']['props']['children']&&D['returnValue']&&D['returnValue']['props']){D['returnValue']['props']['children']=D['thisObject']['props']['children'];delete D['thisObject']['props']['value'];delete D['thisObject']['props']['children'];delete D['thisObject']['props']['BDFDBcontextMenu'];}if(C){let E=b['ReactUtils']['getValue'](D,'thisObject._reactInternalFiber.child.type');if(E&&E['displayName']&&b['InternalData']['componentPatchQueries'][E['displayName']]&&!b['InternalData']['componentPatchQueries'][E['displayName']]['module']){b['InternalData']['componentPatchQueries'][E['displayName']]['module']=E;c['patchContextMenuLib'](E,![]);while(b['InternalData']['componentPatchQueries'][E['displayName']]['query']['length'])c['patchContextMenuPlugin'](b['InternalData']['componentPatchQueries'][E['displayName']]['query']['pop'](),E['displayName'],E);}}}});}};c['patchExportedContextMenuLib']=function(B,C,D){let E=b['ModuleUtils']['find'](F=>F==B['type'],![]);if(E&&E['exports']&&E['exports']['default']){if(!s['LibraryComponents']['ContextMenus'][C]){s['LibraryComponents']['ContextMenus'][C]=E['exports']['default'];b['LibraryComponents']['ContextMenus'][C]=E['exports']['default'];}if(!s['LibraryComponents']['ContextMenus']['_Exports'][C]){s['LibraryComponents']['ContextMenus']['_Exports'][C]=E['exports'];b['LibraryComponents']['ContextMenus']['_Exports'][C]=E['exports'];}if(b['InternalData']['componentPatchQueries'][C]&&!b['InternalData']['componentPatchQueries'][C]['module']){b['InternalData']['componentPatchQueries'][C]['module']=E;while(b['InternalData']['componentPatchQueries'][C]['query']['length'])c['patchExportedContextMenuPlugin'](b['InternalData']['componentPatchQueries'][C]['query']['pop'](),C,E);let F=D&&b['ReactUtils']['getValue'](B,'memoizedProps.onClose');if(typeof F=='function')F();}if(!E['exports']['default']['displayName'])E['exports']['default']['displayName']=C;}};c['getContextMenuType']=function(B,C){if(B){if(B=='MessageContextMenu'&&C&&C['type']!=s['LibraryComponents']['ContextMenus']['MessageContextMenu'])return'MessageOptionContextMenu';else if(B['endsWith']('ContextMenu'))return B;else if(s['LibraryComponents']['ContextMenus']['_Types']['includes'](B)){if(B['indexOf']('USER_')==0x0)return'UserContextMenu';else if(B['indexOf']('CHANNEL_')==0x0)return'ChannelContextMenu';else if(B['indexOf']('GUILD_')==0x0)return'GuildContextMenu';else if(B['indexOf']('MESSAGE_')==0x0)return'MessageContextMenu';}}return null;};b['DiscordConstants']=b['ModuleUtils']['findByProperties']('Permissions','ActivityTypes');var i={};i['Channel']=b['ModuleUtils']['findByPrototypes']('getRecipientId','isManaged','getGuildId');i['Guild']=b['ModuleUtils']['findByPrototypes']('getIconURL','getMaxEmojiSlots','getRole');i['Invite']=b['ModuleUtils']['findByPrototypes']('getExpiresAt','isExpired');i['Message']=b['ModuleUtils']['findByPrototypes']('getReaction','getAuthorName','getChannelId');i['Messages']=b['ModuleUtils']['findByPrototypes']('jumpToMessage','hasAfterCached','forEach');i['Timestamp']=b['ModuleUtils']['findByPrototypes']('add','dayOfYear','hasAlignedHourOffset');i['User']=b['ModuleUtils']['findByPrototypes']('hasFlag','isLocalBot','isClaimed');b['DiscordObjects']=Object['assign']({},i);var j={};for(let B of['child_process','electron','fs','path','process','request']){try{j[B]=require(B);}catch(C){}}b['LibraryRequires']=Object['assign']({},j);var k={};k['AckUtils']=b['ModuleUtils']['findByProperties']('localAck','bulkAck');k['APIUtils']=b['ModuleUtils']['findByProperties']('getAPIBaseURL');k['AnalyticsUtils']=b['ModuleUtils']['findByProperties']('isThrottled','track');k['AnimationUtils']=b['ModuleUtils']['findByProperties']('spring','decay');k['BadgeUtils']=b['ModuleUtils']['findByProperties']('getBadgeCountString','getBadgeWidthForValue');k['CallUtils']=b['ModuleUtils']['findByProperties']('getCalls','isCallActive');k['CategoryCollapseStore']=b['ModuleUtils']['findByProperties']('getCollapsedCategories','isCollapsed');k['CategoryCollapseUtils']=b['ModuleUtils']['findByProperties']('categoryCollapse','categoryCollapseAll');k['ChannelStore']=b['ModuleUtils']['findByProperties']('getChannel','getChannels');k['ColorUtils']=b['ModuleUtils']['findByProperties']('hex2int','hex2rgb');k['ContextMenuUtils']=b['ModuleUtils']['findByProperties']('closeContextMenu','openContextMenu');k['CopyLinkUtils']=b['ModuleUtils']['findByProperties']('SUPPORTS_COPY','copy');k['CurrentUserStore']=b['ModuleUtils']['findByProperties']('getCurrentUser');k['CurrentVoiceUtils']=b['ModuleUtils']['findByProperties']('getAveragePing','isConnected');k['DirectMessageStore']=b['ModuleUtils']['findByProperties']('getPrivateChannelIds','getPrivateChannelTimestamps');k['DirectMessageUnreadStore']=b['ModuleUtils']['findByProperties']('getUnreadPrivateChannelIds');k['DispatchApiUtils']=b['ModuleUtils']['findByProperties']('dirtyDispatch','isDispatching');k['DispatchUtils']=b['ModuleUtils']['findByProperties']('ComponentDispatch');k['DirectMessageUtils']=b['ModuleUtils']['findByProperties']('addRecipient','openPrivateChannel');k['EmojiUtils']=b['ModuleUtils']['findByProperties']('translateInlineEmojiToSurrogates','translateSurrogatesToInlineEmoji');k['EmojiStateUtils']=b['ModuleUtils']['findByProperties']('getURL','isEmojiDisabled');k['FriendUtils']=b['ModuleUtils']['findByProperties']('getFriendIDs','getRelationships');k['FolderStore']=b['ModuleUtils']['findByProperties']('getGuildFolderById','getFlattenedGuilds');k['FolderUtils']=b['ModuleUtils']['findByProperties']('isFolderExpanded','getExpandedFolders');k['GuildBoostUtils']=b['ModuleUtils']['findByProperties']('getTierName','getUserLevel');k['GuildChannelStore']=b['ModuleUtils']['findByProperties']('getChannels','getDefaultChannel');k['GuildEmojiStore']=b['ModuleUtils']['findByProperties']('getGuildEmoji','getDisambiguatedEmojiContext');k['GuildSettingsUtils']=b['ModuleUtils']['findByProperties']('updateChannelOverrideSettings','updateNotificationSettings');k['GuildStore']=b['ModuleUtils']['findByProperties']('getGuild','getGuilds');k['GuildUnavailableStore']=b['ModuleUtils']['findByProperties']('isUnavailable','totalUnavailableGuilds');k['GuildUtils']=b['ModuleUtils']['findByProperties']('transitionToGuildSync');k['HistoryUtils']=b['ModuleUtils']['findByProperties']('transitionTo','replaceWith','getHistory');;k['IconUtils']=b['ModuleUtils']['findByProperties']('getGuildIconURL','getGuildBannerURL');k['InviteUtils']=b['ModuleUtils']['findByProperties']('acceptInvite','createInvite');k['KeyCodeUtils']=Object['assign']({},b['ModuleUtils']['findByProperties']('toCombo','keyToCode'));k['KeyCodeUtils']['getString']=function(D){return k['KeyCodeUtils']['toString']([D]['flat'](0xa)['filter'](E=>E)['map'](E=>[b['DiscordConstants']['KeyboardDeviceTypes']['KEYBOARD_KEY'],E,b['DiscordConstants']['KeyboardEnvs']['BROWSER']]),!![]);};k['KeyEvents']=b['ModuleUtils']['findByProperties']('aliases','code','codes');k['LanguageStore']=b['ModuleUtils']['findByProperties']('getLanguages','Messages');k['LastChannelStore']=b['ModuleUtils']['findByProperties']('getLastSelectedChannelId');k['LastGuildStore']=b['ModuleUtils']['findByProperties']('getLastSelectedGuildId');k['LoginUtils']=b['ModuleUtils']['findByProperties']('login','logout');k['MemberStore']=b['ModuleUtils']['findByProperties']('getMember','getMembers');k['MentionUtils']=b['ModuleUtils']['findByProperties']('isRawMessageMentioned','isMentioned');k['MessagePinUtils']=b['ModuleUtils']['findByProperties']('pinMessage','unpinMessage');k['MessageStore']=b['ModuleUtils']['findByProperties']('getMessage','getMessages');k['MessageUtils']=b['ModuleUtils']['findByProperties']('receiveMessage','editMessage');k['ModalUtils']=b['ModuleUtils']['findByProperties']('openModal','hasModalOpen');k['MutedUtils']=b['ModuleUtils']['findByProperties']('isGuildOrCategoryOrChannelMuted');k['NoteStore']=b['ModuleUtils']['findByProperties']('getNote');k['NotificationSettingsStore']=b['ModuleUtils']['findByProperties']('getDesktopType','getTTSType');k['NotificationSettingsUtils']=b['ModuleUtils']['findByProperties']('setDesktopType','setTTSType');k['NotificationUtils']=b['ModuleUtils']['findByProperties']('makeTextChatNotification','shouldNotify');k['PlatformUtils']=b['ModuleUtils']['findByProperties']('isWindows','isLinux');k['PermissionUtils']=b['ModuleUtils']['findByProperties']('getChannelPermissions','canUser');k['PermissionRoleUtils']=b['ModuleUtils']['findByProperties']('getHighestRole','can');k['QuoteUtils']=b['ModuleUtils']['findByProperties']('canQuote','createQuotedText');k['ReactionUtils']=b['ModuleUtils']['findByProperties']('addReaction','removeReaction');k['RecentMentionUtils']=b['ModuleUtils']['findByProperties']('deleteRecentMention','fetchRecentMentions');k['SearchPageUtils']=b['ModuleUtils']['findByProperties']('searchNextPage','searchPreviousPage');k['SelectChannelUtils']=b['ModuleUtils']['findByProperties']('selectChannel','selectPrivateChannel');k['SettingsUtils']=b['ModuleUtils']['findByProperties']('updateRemoteSettings','updateLocalSettings');k['SoundStateUtils']=b['ModuleUtils']['findByProperties']('isSoundDisabled','getDisabledSounds');k['SoundUtils']=b['ModuleUtils']['findByProperties']('playSound','createSound');k['SpellCheckUtils']=b['ModuleUtils']['findByProperties']('learnWord','toggleSpellcheck');k['SlateUtils']=b['ModuleUtils']['findByProperties']('serialize','deserialize');k['SlateSelectionUtils']=b['ModuleUtils']['findByProperties']('serialize','serializeSelection');k['StateStoreUtils']=b['ModuleUtils']['findByProperties']('useStateFromStores','useStateFromStoresArray');k['StatusMetaUtils']=b['ModuleUtils']['findByProperties']('getApplicationActivity','getStatus');k['StoreChangeUtils']=b['ModuleUtils']['findByProperties']('get','set','clear','remove');k['StreamerModeStore']=b['ModuleUtils']['findByProperties']('disableSounds','hidePersonalInformation');k['StreamUtils']=b['ModuleUtils']['findByProperties']('getStreamForUser','getActiveStream');k['StringUtils']=b['ModuleUtils']['findByProperties']('cssValueToNumber','upperCaseFirstChar');k['UnreadGuildUtils']=b['ModuleUtils']['findByProperties']('hasUnread','getUnreadGuilds');k['UnreadChannelUtils']=b['ModuleUtils']['findByProperties']('getUnreadCount','getOldestUnreadMessageId');k['UploadUtils']=b['ModuleUtils']['findByProperties']('upload','instantBatchUpload');k['UserNameUtils']=b['ModuleUtils']['findByProperties']('getName','getNickname');k['UserStore']=b['ModuleUtils']['findByProperties']('getUser','getUsers');k['Utilities']=b['ModuleUtils']['findByProperties']('flatMap','cloneDeep');k['VoiceUtils']=b['ModuleUtils']['findByProperties']('getAllVoiceStates','getVoiceStatesForChannel');k['ZoomUtils']=b['ModuleUtils']['findByProperties']('setZoom','setFontSize');b['LibraryModules']=Object['assign']({},k);k['React']=b['ModuleUtils']['findByProperties']('createElement','cloneElement');k['ReactDOM']=b['ModuleUtils']['findByProperties']('render','findDOMNode');b['ReactUtils']=Object['assign']({},k['React'],k['ReactDOM']);b['ReactUtils']['childrenToArray']=function(D){if(D&&D['props']&&D['props']['children']&&!b['ArrayUtils']['is'](D['props']['children'])){var E=D['props']['children'];D['props']['children']=[];D['props']['children']['push'](E);}return D['props']['children'];};b['ReactUtils']['createElement']=function(D,E){if(D&&D['defaultProps'])for(let F in D['defaultProps'])if(E[F]==null)E[F]=D['defaultProps'][F];try{return k['React']['createElement'](D||'div',E||{})||null;}catch(G){b['LogUtils']['error']('Could\x20not\x20create\x20react\x20element!\x20'+G);}return null;};b['ReactUtils']['elementToReact']=function(D,E){if(b['ReactUtils']['isValidElement'](D))return D;else if(!Node['prototype']['isPrototypeOf'](D))return null;else if(D['nodeType']==Node['TEXT_NODE'])return D['nodeValue'];let F={},G=[];if(typeof E=='function')F['ref']=E;for(let I of D['attributes'])F[I['name']]=I['value'];if(D['attributes']['style'])F['style']=b['ObjectUtils']['filter'](D['style'],J=>D['style'][J]&&isNaN(parseInt(J)),!![]);F['children']=[];if(D['style']&&D['style']['cssText'])for(let J of D['style']['cssText']['split'](';'))if(J['endsWith']('!important')){let K=J['split'](':')[0x0];let L=K['replace'](/-([a-z]?)/g,(M,N)=>N['toUpperCase']());if(F['style'][L]!=null)G['push'](K);}for(let M of D['childNodes'])F['children']['push'](b['ReactUtils']['elementToReact'](M));F['className']=b['DOMUtils']['formatClassName'](F['className'],F['class']);delete F['class'];let H=b['ReactUtils']['createElement'](D['tagName'],F);b['ReactUtils']['forceStyle'](H,G);return H;};b['ReactUtils']['forceStyle']=function(D,E){if(!b['ReactUtils']['isValidElement'](D)||!b['ObjectUtils']['is'](D['props']['style'])||!b['ArrayUtils']['is'](E)||!E['length'])return;let F=D['ref'];D['ref']=G=>{if(typeof F=='function')F(G);let H=b['ReactUtils']['findDOMNode'](G);if(Node['prototype']['isPrototypeOf'](H))for(let I of E){let J=D['props']['style'][I['replace'](/-([a-z]?)/g,(K,L)=>L['toUpperCase']())];if(J!=null)H['style']['setProperty'](I,J,'important');}};};b['ReactUtils']['findChild']=function(D,E){if(!D||!b['ObjectUtils']['is'](E)||!E['name']&&!E['key']&&!E['props']&&!E['filter'])return null;let F=Node['prototype']['isPrototypeOf'](D)?b['ReactUtils']['getInstance'](D):D;if(!b['ObjectUtils']['is'](F)&&!b['ArrayUtils']['is'](F))return null;E['name']=E['name']&&[E['name']]['flat']()['filter'](N=>N);E['key']=E['key']&&[E['key']]['flat']()['filter'](N=>N);E['props']=E['props']&&[E['props']]['flat']()['filter'](N=>N);E['filter']=typeof E['filter']=='function'&&E['filter'];let G=-0x1;let H=performance['now']();let I=E['unlimited']?0x3b9ac9ff:E['depth']===undefined?0x1e:E['depth'];let J=E['unlimited']?0x3b9ac9ff:E['time']===undefined?0x96:E['time'];return K(F);function K(N){let O=null;if(!N||G>=I&&performance['now']()-H>=J)return O;if(!b['ArrayUtils']['is'](N)){if(L(N))O=N;else if(N['props']&&N['props']['children']){G++;O=K(N['props']['children']);G--;}}else{for(let P of N)if(P){if(b['ArrayUtils']['is'](P))O=K(P);else if(L(P))O=P;else if(P['props']&&P['props']['children']){G++;O=K(P['props']['children']);G--;}}}return O;}function L(N){if(!N)return![];let O=N['stateNode']?N['stateNode']['props']:N['props'];return N['type']&&E['name']&&E['name']['some'](P=>c['isInstanceCorrect'](N,P))||E['key']&&E['key']['some'](P=>N['key']==P)||O&&E['props']&&E['props'][E['someProps']?'some':'every'](P=>b['ArrayUtils']['is'](P)?b['ArrayUtils']['is'](P[0x1])?P[0x1]['some'](Q=>M(O,P[0x0],Q)):M(O,P[0x0],P[0x1]):O[P]!==undefined)||E['filter']&&E['filter'](N);}function M(N,O,P){return O!=null&&N[O]!=null&&P!=null&&(O=='className'?('\x20'+N[O]+'\x20')['indexOf']('\x20'+P+'\x20')>-0x1:b['equals'](N[O],P));}};b['ReactUtils']['findChildren']=function(D,E){if(!D||!b['ObjectUtils']['is'](E)||!E['name']&&!E['key']&&!E['props']&&!E['filter'])return[null,-0x1];let F=Node['prototype']['isPrototypeOf'](D)?b['ReactUtils']['getInstance'](D):D;if(!b['ObjectUtils']['is'](F)&&!b['ArrayUtils']['is'](F))return[null,-0x1];E['name']=E['name']&&[E['name']]['flat']()['filter'](L=>L);E['key']=E['key']&&[E['key']]['flat']()['filter'](L=>L);E['props']=E['props']&&[E['props']]['flat']()['filter'](L=>L);E['filter']=typeof E['filter']=='function'&&E['filter'];let G=firstArray=F;while(!b['ArrayUtils']['is'](firstArray)&&firstArray['props']&&firstArray['props']['children'])firstArray=firstArray['props']['children'];if(!b['ArrayUtils']['is'](firstArray)){if(G&&G['props']){G['props']['children']=[G['props']['children']];firstArray=G['props']['children'];}else firstArray=[];}return H(F);function H(L){let M=[firstArray,-0x1];if(!L)return M;if(!b['ArrayUtils']['is'](L)){if(J(L))M=I(L);else if(L['props']&&L['props']['children']){G=L;M=H(L['props']['children']);}}else{for(let N=0x0;M[0x1]==-0x1&&Nc['isInstanceCorrect'](L,N))||E['key']&&E['key']['some'](N=>L['key']==N)||M&&E['props']&&E['props'][E['someProps']?'some':'every'](N=>b['ArrayUtils']['is'](N)?b['ArrayUtils']['is'](N[0x1])?N[0x1]['some'](O=>K(M,N[0x0],O)):K(M,N[0x0],N[0x1]):M[N]!==undefined)||E['filter']&&E['filter'](L);}function K(L,M,N){return M!=null&&L[M]!=null&&N!=null&&(M=='className'?('\x20'+L[M]+'\x20')['indexOf']('\x20'+N+'\x20')>-0x1:b['equals'](L[M],N));}};b['ReactUtils']['setChild']=function(D,E){if(!b['ReactUtils']['isValidElement'](D)||!b['ReactUtils']['isValidElement'](E)&&typeof E!='string'&&!b['ArrayUtils']['is'](E))return;let F=![];G(D);function G(I){if(F)return;if(!b['ArrayUtils']['is'](I))H(I);else for(let J of I)H(J);}function H(I){if(!b['ReactUtils']['isValidElement'](I))return;if(b['ReactUtils']['isValidElement'](I['props']['children']))G(I['props']['children']);else if(b['ArrayUtils']['is'](I['props']['children'])){if(I['props']['children']['every'](J=>!J||typeof J=='string')){F=!![];I['props']['children']=[E]['flat'](0xa);}else G(I['props']['children']);}else{F=!![];I['props']['children']=E;}}};b['ReactUtils']['findConstructor']=function(D,E,F={}){if(!b['ObjectUtils']['is'](F))return null;if(!D||!E)return F['all']?F['group']?{}:[]:null;let G=Node['prototype']['isPrototypeOf'](D)?b['ReactUtils']['getInstance'](D):D;if(!b['ObjectUtils']['is'](G))return F['all']?F['group']?{}:[]:null;E=E&&[E]['flat'](0xa)['filter'](P=>typeof P=='string');if(!E['length'])return F['all']?F['group']?{}:[]:null;;let H=-0x1;let I=performance['now']();let J=F['unlimited']?0x3b9ac9ff:F['depth']===undefined?0x1e:F['depth'];let K=F['unlimited']?0x3b9ac9ff:F['time']===undefined?0x96:F['time'];let L=F['up']?{'return':!![],'sibling':!![],'default':!![],'_reactInternalFiber':!![]}:{'child':!![],'sibling':!![],'default':!![],'_reactInternalFiber':!![]};let M=F['group']?{}:[];let N=O(G);if(F['all']){for(let P in M){if(F['group'])for(let Q in M[P])delete M[P][Q]['BDFDBreactSearch'];else delete M[P]['BDFDBreactSearch'];}return M;}else return N;function O(R){H++;let S=undefined;if(R&&!Node['prototype']['isPrototypeOf'](R)&&!b['ReactUtils']['getInstance'](R)&&Hc['isInstanceCorrect'](R,T['split']('\x20_\x20_\x20')[0x0]))){if(F['all']===undefined||!F['all'])S=R['type'];else if(F['all']){if(!R['type']['BDFDBreactSearch']){R['type']['BDFDBreactSearch']=!![];if(F['group']){if(R['type']&&(R['type']['render']&&R['type']['render']['displayName']||R['type']['displayName']||R['type']['name'])){let T=F['name']['find'](U=>(R['type']['render']&&R['type']['render']['displayName']||R['type']['displayName']||R['type']['name']||R['type'])==U['split']('\x20_\x20_\x20')[0x0])||'Default';if(!b['ArrayUtils']['is'](M[T]))M[T]=[];M[T]['push'](R['stateNode']);}}else M['push'](R['type']);}}}if(S===undefined){let U=Object['getOwnPropertyNames'](R);for(let V=0x0;S===undefined&&VO);E['type']=E['type']&&[E['type']]['flat']()['filter'](O=>O);E['key']=E['key']&&[E['key']]['flat']()['filter'](O=>O);E['props']=E['props']&&[E['props']]['flat']()['filter'](O=>O);let G=-0x1;let H=performance['now']();let I=E['unlimited']?0x3b9ac9ff:E['depth']===undefined?0x1e:E['depth'];let J=E['unlimited']?0x3b9ac9ff:E['time']===undefined?0x96:E['time'];let K=E['up']?{'return':!![],'sibling':!![],'_reactInternalFiber':!![]}:{'child':!![],'sibling':!![],'_reactInternalFiber':!![]};let L=E['group']?{}:[];let M=N(F);if(E['all']){for(let O in L){if(E['group'])for(let P in L[O])delete L[O][P]['BDFDBreactSearch'];else delete L[O]['BDFDBreactSearch'];}return L;}else return M;function N(Q){G++;let R=undefined;if(Q&&!Node['prototype']['isPrototypeOf'](Q)&&!b['ReactUtils']['getInstance'](Q)&&Gc['isInstanceCorrect'](Q,T['split']('\x20_\x20_\x20')[0x0]))||Q['type']&&E['type']&&E['type']['some'](T=>b['ArrayUtils']['is'](T)?Q['type']===T[0x1]:Q['type']===T)||Q['key']&&E['key']&&E['key']['some'](T=>Q['key']==T)||S&&E['props']&&E['props']['every'](T=>b['ArrayUtils']['is'](T)?b['ArrayUtils']['is'](T[0x1])?T[0x1]['some'](U=>b['equals'](S[T[0x0]],U)):b['equals'](S[T[0x0]],T[0x1]):S[T]!==undefined))){if(E['all']===undefined||!E['all'])R=Q['stateNode'];else if(E['all']){if(!Q['stateNode']['BDFDBreactSearch']){Q['stateNode']['BDFDBreactSearch']=!![];if(E['group']){if(E['name']&&Q['type']&&(Q['type']['render']&&Q['type']['render']['displayName']||Q['type']['displayName']||Q['type']['name']||Q['type'])){let T=E['name']['find'](U=>(Q['type']['render']&&Q['type']['render']['displayName']||Q['type']['displayName']||Q['type']['name']||Q['type'])==U['split']('\x20_\x20_\x20')[0x0])||'Default';if(!b['ArrayUtils']['is'](L[T]))L[T]=[];L[T]['push'](Q['stateNode']);}if(E['type']&&Q['type']){let U=[E['type']['find'](V=>b['ArrayUtils']['is'](V)&&Q['type']===V[0x1])]['flat'](0xa)[0x0]||'Default';if(!b['ArrayUtils']['is'](L[U]))L[U]=[];L[U]['push'](Q['stateNode']);}}else L['push'](Q['stateNode']);}}}if(R===undefined){let V=Object['getOwnPropertyNames'](Q);for(let W=0x0;R===undefined&&WM);E['key']=E['key']&&[E['key']]['flat']()['filter'](M=>M);let G=-0x1;let H=performance['now']();let I=E['unlimited']?0x3b9ac9ff:E['depth']===undefined?0x1e:E['depth'];let J=E['unlimited']?0x3b9ac9ff:E['time']===undefined?0x96:E['time'];let K=E['up']?{'return':!![],'sibling':!![],'_reactInternalFiber':!![]}:{'child':!![],'sibling':!![],'_reactInternalFiber':!![]};return L(F);function L(M){G++;let N=undefined;if(M&&!Node['prototype']['isPrototypeOf'](M)&&!b['ReactUtils']['getInstance'](M)&&Gc['isInstanceCorrect'](M,O['split']('\x20_\x20_\x20')[0x0]))||E['key']&&E['key']['some'](O=>M['key']==O)))N=M['memoizedProps'];if(N===undefined){let O=Object['getOwnPropertyNames'](M);for(let P=0x0;N===undefined&&PF))if(E['updater']&&typeof E['updater']['isMounted']=='function'&&E['updater']['isMounted'](E))E['forceUpdate']();};b['ReactUtils']['getInstance']=function(D){if(!b['ObjectUtils']['is'](D))return null;return D[Object['keys'](D)['find'](E=>E['startsWith']('__reactInternalInstance'))];};b['ReactUtils']['getValue']=function(D,E){if(!D||!E)return null;let F=Node['prototype']['isPrototypeOf'](D)?b['ReactUtils']['getInstance'](D):D;if(!b['ObjectUtils']['is'](F))return null;let G=F,H=E['split']('.')['filter'](I=>I);for(value of H){if(!G)return null;G=G[value];}return G;};b['ReactUtils']['render']=function(D,E){if(!b['ReactUtils']['isValidElement'](D)||!Node['prototype']['isPrototypeOf'](E))return;try{k['ReactDOM']['render'](D,E);let F=new MutationObserver(G=>G['forEach'](H=>{let I=Array['from'](H['removedNodes']);if(I['indexOf'](E)>-0x1||I['some'](J=>J['contains'](E))){F['disconnect']();b['ReactUtils']['unmountComponentAtNode'](E);}}));F['observe'](document['body'],{'subtree':!![],'childList':!![]});}catch(G){b['LogUtils']['error']('Could\x20not\x20render\x20react\x20element!\x20'+G);}};c['setDefaultProps']=function(D,E){if(b['ObjectUtils']['is'](D))D['defaultProps']=Object['assign']({},D['defaultProps'],E);};c['loadPatchedComp']=function(D){let E=b['ReactUtils']['getValue'](window['BDFDB'],'LibraryComponents.'+D);if(E&&E['prototype']&&E['prototype']['BDFDBpatch'])return E;};b['sameProto']=function(D,E){if(D!=null&&typeof D=='object')return D['constructor']&&D['constructor']['prototype']&&typeof D['constructor']['prototype']['isPrototypeOf']=='function'&&D['constructor']['prototype']['isPrototypeOf'](E);else return typeof D==typeof E;};b['equals']=function(D,E,F){var G=-0x1;if(F===undefined||typeof F!=='boolean')F=![];return H(D,E);function H(I,J){G++;var K=!![];if(G>0x3e8)K=null;else{if(typeof I!==typeof J)K=![];else if(typeof I==='function')K=I['toString']()==J['toString']();else if(typeof I==='undefined')K=!![];else if(typeof I==='symbol')K=!![];else if(typeof I==='boolean')K=I==J;else if(typeof I==='string')K=I==J;else if(typeof I==='number'){if(isNaN(I)||isNaN(J))K=isNaN(I)==isNaN(J);else K=I==J;}else if(!I&&!J)K=!![];else if(!I||!J)K=![];else if(typeof I==='object'){var L=Object['getOwnPropertyNames'](I);var M=Object['getOwnPropertyNames'](J);if(L['length']!==M['length'])K=![];else for(let N=0x0;K===!![]&&N{let E=b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['app']),{'name':'Messages','unlimited':!![]});let F=b['ReactUtils']['getValue'](E,'_reactInternalFiber.type.prototype');if(E&&F){b['ModuleUtils']['patch'](b,F,'render',{'after':G=>{let [H,I]=b['ReactUtils']['findChildren'](G['returnValue'],{'props':['message','channel']});if(I>-0x1)for(let J of H)if(J['props']['message'])J['props']['message']=new b['DiscordObjects']['Message'](J['props']['message']);}},{'once':!![]});b['ReactUtils']['forceUpdate'](E);}},0x3e8);};b['UserUtils']={};b['UserUtils']['is']=function(D){return D&&D instanceof b['DiscordObjects']['User'];};var m=k['CurrentUserStore']&&k['CurrentUserStore']['getCurrentUser']();b['UserUtils']['me']=new Proxy(m||{},{'get':function(D,E){return(m=k['CurrentUserStore']['getCurrentUser']())&&m[E];}});b['UserUtils']['getStatus']=function(D=b['UserUtils']['me']['id']){D=typeof D=='number'?D['toFixed']():D;let E=b['UserUtils']['getActivitiy'](D);return E&&E['type']==b['DiscordConstants']['ActivityTypes']['STREAMING']?'streaming':k['StatusMetaUtils']['getStatus'](D);};b['UserUtils']['getStatusColor']=function(D){D=typeof D=='string'?D['toLowerCase']():null;switch(D){case'online':return b['DiscordConstants']['Colors']['STATUS_GREEN'];case'mobile':return b['DiscordConstants']['Colors']['STATUS_GREEN'];case'idle':return b['DiscordConstants']['Colors']['STATUS_YELLOW'];case'dnd':return b['DiscordConstants']['Colors']['STATUS_RED'];case'playing':return b['DiscordConstants']['Colors']['BRAND'];case'listening':return b['DiscordConstants']['Colors']['SPOTIFY'];case'streaming':return b['DiscordConstants']['Colors']['TWITCH'];default:return b['DiscordConstants']['Colors']['STATUS_GREY'];}};b['UserUtils']['getActivitiy']=function(D=b['UserUtils']['me']['id']){for(let E of k['StatusMetaUtils']['getActivities'](D))if(E['type']!=b['DiscordConstants']['ActivityTypes']['CUSTOM_STATUS'])return E;return null;};b['UserUtils']['getAvatar']=function(D=b['UserUtils']['me']['id']){var E=k['UserStore']['getUser'](typeof D=='number'?D['toFixed']():D);if(!E)return window['location']['origin']+'/assets/322c936a8c8be1b803cd94861bdfa868.png';else return((E['avatar']?'':window['location']['origin'])+k['IconUtils']['getUserAvatarURL'](E))['split']('?')[0x0];};b['UserUtils']['can']=function(D,E=b['UserUtils']['me']['id'],F=k['LastChannelStore']['getChannelId']()){if(!b['DiscordConstants']['Permissions'][D])b['LogUtils']['warn'](D+'\x20not\x20found\x20in\x20Permissions');else{var G=k['ChannelStore']['getChannel'](F);if(G)return k['PermissionUtils']['canUser'](E,b['DiscordConstants']['Permissions'][D],G);}return![];};let n;b['GuildUtils']={};b['GuildUtils']['is']=function(D){if(!b['ObjectUtils']['is'](D))return![];let E=Object['keys'](D);return D instanceof b['DiscordObjects']['Guild']||Object['keys'](new b['DiscordObjects']['Guild']({}))['every'](F=>E['indexOf'](F)>-0x1);};b['GuildUtils']['getIcon']=function(D){let E=k['GuildStore']['getGuild'](typeof D=='number'?D['toFixed']():D);if(!E||!E['icon'])return null;return k['IconUtils']['getGuildIconURL'](E)['split']('?')[0x0];};b['GuildUtils']['getBanner']=function(D){let E=k['GuildStore']['getGuild'](typeof D=='number'?D['toFixed']():D);if(!E||!E['banner'])return null;return k['IconUtils']['getGuildBannerURL'](E)['split']('?')[0x0];};b['GuildUtils']['getFolder']=function(D){return b['LibraryModules']['FolderStore']['guildFolders']['filter'](E=>E['folderId'])['find'](E=>E['guildIds']['includes'](D));};b['GuildUtils']['getId']=function(D){if(!Node['prototype']['isPrototypeOf'](D)||!b['ReactUtils']['getInstance'](D))return;let E=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],D);if(!E)return;let F=E['querySelector'](b['dotCN']['guildiconwrapper']);let G=F&&F['href']?F['href']['split']('/')['slice'](-0x2)[0x0]:null;return G&&!isNaN(parseInt(G))?G['toString']():null;};b['GuildUtils']['getData']=function(D){if(!D)return null;let E=Node['prototype']['isPrototypeOf'](D)?b['GuildUtils']['getId'](D):typeof D=='object'?D['id']:D;E=typeof E=='number'?E['toFixed']():E;for(let F of b['GuildUtils']['getAll']())if(F&&F['id']==E)return F;return null;};b['GuildUtils']['getAll']=function(){let D=[],E=[];for(let F of b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['guilds']),{'name':['Guild','GuildIcon'],'all':!![],'unlimited':!![]})){if(F['props']&&F['props']['guild'])E['push'](Object['assign'](new F['props']['guild']['constructor'](F['props']['guild']),{'div':F['handleContextMenu']&&b['ReactUtils']['findDOMNode'](F),'instance':F}));}for(let G of b['LibraryModules']['FolderStore']['getFlattenedGuildIds']()){let H=null;for(let I of E)if(I['id']==G){H=I;break;}if(H)D['push'](H);else{let J=b['LibraryModules']['GuildStore']['getGuild'](G);if(J)D['push'](Object['assign'](new J['constructor'](J),{'div':null,'instance':null}));}}return D;};b['GuildUtils']['getUnread']=function(D){let E=[];for(let F of D===undefined||!b['ArrayUtils']['is'](D)?b['GuildUtils']['getAll']():D){if(!F)return null;let G=Node['prototype']['isPrototypeOf'](F)?b['GuildUtils']['getId'](F):typeof F=='object'?F['id']:F;G=typeof G=='number'?G['toFixed']():G;if(G&&(k['UnreadGuildUtils']['hasUnread'](G)||k['UnreadGuildUtils']['getMentionCount'](G)>0x0))E['push'](F);}return E;};b['GuildUtils']['getPinged']=function(D){let E=[];for(let F of D===undefined||!b['ArrayUtils']['is'](D)?b['GuildUtils']['getAll']():D){if(!F)return null;let G=Node['prototype']['isPrototypeOf'](F)?b['GuildUtils']['getId'](F):typeof F=='object'?F['id']:F;G=typeof G=='number'?G['toFixed']():G;if(G&&k['UnreadGuildUtils']['getMentionCount'](G)>0x0)E['push'](F);}return E;};b['GuildUtils']['getMuted']=function(D){let E=[];for(let F of D===undefined||!b['ArrayUtils']['is'](D)?b['GuildUtils']['getAll']():D){if(!F)return null;let G=Node['prototype']['isPrototypeOf'](F)?b['GuildUtils']['getId'](F):typeof F=='object'?F['id']:F;G=typeof G=='number'?G['toFixed']():G;if(G&&k['MutedUtils']['isGuildOrCategoryOrChannelMuted'](G))E['push'](F);}return E;};b['GuildUtils']['getSelected']=function(){let D=k['GuildStore']['getGuild'](k['LastGuildStore']['getGuildId']());if(D)return b['GuildUtils']['getData'](D['id'])||Object['assign'](new D['constructor'](D),{'div':null,'instance':null});else return null;};b['GuildUtils']['openMenu']=function(D,E=b['InternalData']['mousePosition']){if(!D)return;let F=Node['prototype']['isPrototypeOf'](D)?b['GuildUtils']['getId'](D):typeof D=='object'?D['id']:D;let G=k['GuildStore']['getGuild'](F);if(G)k['ContextMenuUtils']['openContextMenu'](E,function(H){return b['ReactUtils']['createElement'](s['LibraryComponents']['ContextMenus']['_Exports']['GuildContextMenu']&&s['LibraryComponents']['ContextMenus']['_Exports']['GuildContextMenu']['default'],Object['assign']({},H,{'type':b['DiscordConstants']['ContextMenuTypes']['GUILD_ICON_BAR'],'guild':G,'badge':k['UnreadGuildUtils']['getMentionCount'](G['id']),'link':b['DiscordConstants']['Routes']['CHANNEL'](G['id'],k['LastChannelStore']['getChannelId'](G['id'])),'selected':G['id']==k['LastGuildStore']['getGuildId']()}));});};b['GuildUtils']['markAsRead']=function(D){if(!D)return;let E=[];for(let F of b['ArrayUtils']['is'](D)?D:typeof D=='string'||typeof D=='number'?Array['of'](D):Array['from'](D)){let G=Node['prototype']['isPrototypeOf'](F)?b['GuildUtils']['getId'](F):F&&typeof F=='object'?F['id']:F;let H=G&&k['GuildChannelStore']['getChannels'](G);if(H)for(let I in H)if(b['ArrayUtils']['is'](H[I]))for(let J of H[I])E['push'](J['channel']['id']);}if(E['length'])b['ChannelUtils']['markAsRead'](E);};b['GuildUtils']['rerenderAll']=function(){b['TimeUtils']['clear'](n);n=b['TimeUtils']['timeout'](D=>{let E=b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['app']),{'name':'Guilds','unlimited':!![]});let F=b['ReactUtils']['getValue'](E,'_reactInternalFiber.type.prototype');if(E&&F){b['ModuleUtils']['patch'](b,F,'render',{'after':G=>{let [H,I]=b['ReactUtils']['findChildren'](G['returnValue'],{'name':'ConnectedUnreadDMs'});if(I>-0x1)H['splice'](I+0x1,0x0,b['ReactUtils']['createElement']('div',{}));b['ReactUtils']['forceUpdate'](E);}},{'once':!![]});b['ReactUtils']['forceUpdate'](E);}},0x3e8);};b['FolderUtils']={};b['FolderUtils']['getId']=function(D){if(!Node['prototype']['isPrototypeOf'](D)||!b['ReactUtils']['getInstance'](D))return;D=b['DOMUtils']['getParent'](b['dotCN']['guildfolderwrapper'],D);if(!D)return;return b['ReactUtils']['findValue'](D,'folderId',{'up':!![]});};b['FolderUtils']['getDefaultName']=function(D){let E=b['LibraryModules']['FolderStore']['getGuildFolderById'](D);if(!E)return'';let F=0x2*b['DiscordConstants']['MAX_GUILD_FOLDER_NAME_LENGTH'];let G=[],H=E['guildIds']['map'](I=>(b['LibraryModules']['GuildStore']['getGuild'](I)||{})['name'])['filter'](I=>I);for(let I of H)if(I['length']E['indexOf'](F)>-0x1);};b['ChannelUtils']['isTextChannel']=function(D){let E=typeof D=='string'?k['ChannelStore']['getChannel'](D):D;return b['ObjectUtils']['is'](E)&&(E['type']==b['DiscordConstants']['ChannelTypes']['GUILD_TEXT']||E['type']==b['DiscordConstants']['ChannelTypes']['GUILD_STORE']||E['type']==b['DiscordConstants']['ChannelTypes']['GUILD_ANNOUNCEMENT']);};b['ChannelUtils']['getId']=function(D){if(!Node['prototype']['isPrototypeOf'](D)||!b['ReactUtils']['getInstance'](D))return;D=b['DOMUtils']['getParent'](b['dotCNC']['categorycontainerdefault']+b['dotCNC']['channelcontainerdefault']+b['dotCN']['dmchannel'],D);if(!D)return;let E=b['ReactUtils']['findValue'](D,'channel');return E?E['id']['toString']():null;};b['ChannelUtils']['getDiv']=function(D){if(!D)return null;let E=b['ChannelUtils']['getData'](D);return E?E['div']:null;};b['ChannelUtils']['getData']=function(D){if(!D)return null;let E=Node['prototype']['isPrototypeOf'](D)?b['ChannelUtils']['getId'](D):typeof D=='object'?D['id']:D;E=typeof E=='number'?E['toFixed']():E;for(let F of b['ChannelUtils']['getAll']())if(F&&F['id']==E)return F;return null;};b['ChannelUtils']['getName']=function(D,E){let F=b['LibraryModules']['ChannelStore']['getChannel'](D);if(!F)return'';switch(F['type']){case b['DiscordConstants']['ChannelTypes']['DM']:let G=F['recipients']['map'](b['LibraryModules']['UserStore']['getUser'])['filter'](I=>I)[0x0];return(E&&'@'||'')+(G&&G['toString']()||'');case b['DiscordConstants']['ChannelTypes']['GROUP_DM']:if(F['name'])return F['name'];let H=F['recipients']['map'](b['LibraryModules']['UserStore']['getUser'])['filter'](I=>I);return H['length']>0x0?H['map'](I=>I['toString'])['join'](',\x20'):b['LanguageUtils']['LanguageStrings']['UNNAMED'];case b['DiscordConstants']['ChannelTypes']['GUILD_ANNOUNCEMENT']:case b['DiscordConstants']['ChannelTypes']['GUILD_TEXT']:return(E&&'#'||'')+F['name'];default:return F['name'];}};b['ChannelUtils']['getAll']=function(){let D=[];for(let F of b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['channels']),{'name':['ChannelCategoryItem','ChannelItem','PrivateChannel'],'all':!![],'unlimited':!![]}))if(F['props']&&!F['props']['ispin']&&F['props']['channel']&&F['_reactInternalFiber']['return']){var E=b['ReactUtils']['findDOMNode'](F);E=E&&b['DOMUtils']['containsClass'](E['parentElement'],b['disCN']['categorycontainerdefault'],b['disCN']['channelcontainerdefault'],![])?E['parentElement']:E;D['push'](Object['assign'](new F['props']['channel']['constructor'](F['props']['channel']),{'div':E,'instance':F}));}return D;};b['ChannelUtils']['getSelected']=function(){let D=k['ChannelStore']['getChannel'](k['LastChannelStore']['getChannelId']());if(D)return b['ChannelUtils']['getData'](D['id'])||Object['assign'](new D['constructor'](D),{'div':null,'instance':null});else return null;};b['ChannelUtils']['openMenu']=function(D,E=b['InternalData']['mousePosition']){if(!D)return;let F=Node['prototype']['isPrototypeOf'](D)?b['ChannelUtils']['getId'](D):typeof D=='object'?D['id']:D;let G=k['ChannelStore']['getChannel'](F);if(G){let H=null;for(let I in b['DiscordConstants']['ChannelTypes'])if(b['DiscordConstants']['ChannelTypes'][I]==G['type']){H=b['DiscordConstants']['ContextMenuTypes'][(I=='GUILD_CATEGORY'?'CHANNEL_':'CHANNEL_LIST_')+I['replace']('GUILD_','')];break;}if(H)k['ContextMenuUtils']['openContextMenu'](E,function(J){return b['ReactUtils']['createElement'](s['LibraryComponents']['ContextMenus']['_Exports']['ChannelContextMenu']&&s['LibraryComponents']['ContextMenus']['_Exports']['ChannelContextMenu']['default'],Object['assign']({},J,{'type':H,'channel':G,'guild':k['GuildStore']['getGuild'](G['guild_id']),'selected':G['id']==k['LastChannelStore']['getChannelId']()}));});}};b['ChannelUtils']['markAsRead']=function(D){if(!D)return;let E=[];for(let F of D=b['ArrayUtils']['is'](D)?D:typeof D=='string'||typeof D=='number'?Array['of'](D):Array['from'](D)){let G=Node['prototype']['isPrototypeOf'](F)?b['ChannelUtils']['getId'](F):F&&typeof F=='object'?F['id']:F;if(G&&b['ChannelUtils']['isTextChannel'](G))E['push']({'channelId':G,'messageId':k['UnreadChannelUtils']['lastMessageId'](G)});}if(E['length'])k['AckUtils']['bulkAck'](E);};b['DMUtils']={};b['DMUtils']['isDMChannel']=function(D){let E=typeof D=='string'?k['ChannelStore']['getChannel'](D):D;return b['ObjectUtils']['is'](E)&&(E['type']==b['DiscordConstants']['ChannelTypes']['DM']||E['type']==b['DiscordConstants']['ChannelTypes']['GROUP_DM']);};b['DMUtils']['getIcon']=function(D){let E=k['ChannelStore']['getChannel'](D=typeof D=='number'?D['toFixed']():D);if(!E)return null;if(!E['icon'])return E['type']==0x1?b['UserUtils']['getAvatar'](E['recipients'][0x0]):E['type']==0x3?window['location']['origin']+k['IconUtils']['getChannelIconURL'](E)['split']('?')[0x0]:null;return k['IconUtils']['getChannelIconURL'](E)['split']('?')[0x0];};b['DMUtils']['getId']=function(D){if(!Node['prototype']['isPrototypeOf'](D)||!b['ReactUtils']['getInstance'](D))return;let E=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],D);if(!E)return;let F=E['querySelector'](b['dotCN']['guildiconwrapper']);let G=F&&F['href']?F['href']['split']('/')['slice'](-0x1)[0x0]:null;return G&&!isNaN(parseInt(G))?G['toString']():null;};b['DMUtils']['getDiv']=function(D){if(!D)return null;if(Node['prototype']['isPrototypeOf'](D)){var E=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],D);return E?E['parentElement']:E;}else{let F=typeof D=='object'?D['id']:D;if(F){var E=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],document['querySelector'](b['dotCNS']['guilds']+b['dotCN']['dmpill']+'\x20+\x20*\x20'+b['dotCN']['guildiconwrapper']+'[href*=\x22/channels/@me/'+F+'\x22]'));return E&&b?E['parentElement']:E;}}return null;};b['DMUtils']['getData']=function(D){if(!D)return null;let E=Node['prototype']['isPrototypeOf'](D)?b['BDFDB']['DMUtils']['getId'](D):typeof D=='object'?D['id']:D;E=typeof E=='number'?E['toFixed']():E;for(let F of b['DMUtils']['getAll']())if(F&&F['id']==E)return F;return null;};b['DMUtils']['getAll']=function(){let D=[];for(let E of b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['guilds']),{'name':'DirectMessage','all':!![],'unlimited':!![]})){if(E['props']&&E['props']['channel'])D['push'](Object['assign'](new E['props']['channel']['constructor'](E['props']['channel']),{'div':b['ReactUtils']['findDOMNode'](E),'instance':E}));}return D;};b['DMUtils']['openMenu']=function(D,E=b['InternalData']['mousePosition']){if(!D)return;let F=Node['prototype']['isPrototypeOf'](D)?b['ChannelUtils']['getId'](D):typeof D=='object'?D['id']:D;let G=k['ChannelStore']['getChannel'](F);if(G){if(G['isMultiUserDM']())k['ContextMenuUtils']['openContextMenu'](E,function(H){return b['ReactUtils']['createElement'](s['LibraryComponents']['ContextMenus']['GroupDMContextMenu'],Object['assign']({},H,{'channelId':G['id'],'selected':G['id']==k['LastChannelStore']['getChannelId']()}));},{'noBlurEvent':!![]});else k['ContextMenuUtils']['openContextMenu'](E,function(H){return b['ReactUtils']['createElement'](s['LibraryComponents']['ContextMenus']['_Exports']['UserContextMenu']&&s['LibraryComponents']['ContextMenus']['_Exports']['UserContextMenu']['default'],Object['assign']({},H,{'type':b['DiscordConstants']['ContextMenuTypes']['USER_PRIVATE_CHANNELS'],'user':k['UserStore']['getUser'](G['recipients'][0x0]),'channelId':G['id'],'selected':G['id']==k['LastChannelStore']['getChannelId']()}));});}};b['DMUtils']['markAsRead']=function(D){if(!D)return;let E=[];for(let F of D=b['ArrayUtils']['is'](D)?D:typeof D=='string'||typeof D=='number'?Array['of'](D):Array['from'](D)){let G=Node['prototype']['isPrototypeOf'](F)?b['BDFDB']['DMUtils']['getId'](F):F&&typeof F=='object'?F['id']:F;if(G)E['push'](G);}for(let H in E)b['TimeUtils']['timeout'](I=>{k['AckUtils']['ack'](E[H]);},H*0x3e8);};b['DataUtils']={};b['DataUtils']['cached']=window['BDFDB']&&window['BDFDB']['DataUtils']&&window['BDFDB']['DataUtils']['cached']||{};b['DataUtils']['save']=function(D,E,F,G){E=E==b&&c||E;let H=typeof E==='string'?E:E['name'];let I=j['path']['join'](b['BDUtils']['getPluginsFolder'](),H+'.config.json');let J=b['DataUtils']['cached'][H]!==undefined?b['DataUtils']['cached'][H]:c['readConfig'](I)||{};if(F===undefined)J=b['ObjectUtils']['is'](D)?b['ObjectUtils']['sort'](D):D;else{if(G===undefined)J[F]=b['ObjectUtils']['is'](D)?b['ObjectUtils']['sort'](D):D;else{if(!b['ObjectUtils']['is'](J[F]))J[F]={};J[F][G]=b['ObjectUtils']['is'](D)?b['ObjectUtils']['sort'](D):D;}}let K=b['ObjectUtils']['is'](J);if(F!==undefined&&K&&b['ObjectUtils']['is'](J[F])&&b['ObjectUtils']['isEmpty'](J[F]))delete J[F];if(b['ObjectUtils']['isEmpty'](J)){delete b['DataUtils']['cached'][H];if(j['fs']['existsSync'](I))j['fs']['unlinkSync'](I);}else{if(K)J=b['ObjectUtils']['sort'](J);b['DataUtils']['cached'][H]=K?b['ObjectUtils']['deepAssign']({},J):J;j['fs']['writeFileSync'](I,JSON['stringify'](J,null,'\x09'));}};b['DataUtils']['load']=function(D,E,F){D=D==b&&c||D;let G=typeof D==='string'?D:D['name'];let H=j['path']['join'](b['BDUtils']['getPluginsFolder'](),G+'.config.json');let I=b['DataUtils']['cached'][G]!==undefined?b['DataUtils']['cached'][G]:c['readConfig'](H)||{};let J=b['ObjectUtils']['is'](I);b['DataUtils']['cached'][G]=J?b['ObjectUtils']['deepAssign']({},I):I;if(E===undefined)return I;else{let K=J?b['ObjectUtils']['is'](I[E])||I[E]==undefined?b['ObjectUtils']['deepAssign']({},I[E]):I[E]:null;if(F===undefined)return K;else return!b['ObjectUtils']['is'](K)||K[F]===undefined?null:K[F];}};b['DataUtils']['remove']=function(D,E,F){D=D==b&&c||D;let G=typeof D==='string'?D:D['name'];let H=j['path']['join'](b['BDUtils']['getPluginsFolder'](),G+'.config.json');let I=b['DataUtils']['cached'][G]!==undefined?b['DataUtils']['cached'][G]:c['readConfig'](H)||{};let J=b['ObjectUtils']['is'](I);if(E===undefined||!J)I={};else{if(F===undefined)delete I[E];else if(b['ObjectUtils']['is'](I[E]))delete I[E][F];}if(b['ObjectUtils']['is'](I[E])&&b['ObjectUtils']['isEmpty'](I[E]))delete I[E];if(b['ObjectUtils']['isEmpty'](I)){delete b['DataUtils']['cached'][G];if(j['fs']['existsSync'](H))j['fs']['unlinkSync'](H);}else{if(J)I=b['ObjectUtils']['sort'](I);b['DataUtils']['cached'][G]=J?b['ObjectUtils']['deepAssign']({},I):I;j['fs']['writeFileSync'](H,JSON['stringify'](I,null,'\x09'));}};b['DataUtils']['get']=function(D,E,F){D=D==b&&c||D;D=typeof D=='string'?b['BDUtils']['getPlugin'](D):D;if(!b['ObjectUtils']['is'](D))return F===undefined?{}:null;let G=D['defaults'];if(!b['ObjectUtils']['is'](G)||!G[E])return F===undefined?{}:null;let H=b['DataUtils']['load'](D,E),I={},J=![];for(let K in G[E]){let L=b['ObjectUtils']['is'](G[E][K]['value']);if(H[K]==null||L&&(!b['ObjectUtils']['is'](H[K])||Object['keys'](G[E][K]['value'])['some'](M=>G[E][K]['value'][M]!=null&&!b['sameProto'](G[E][K]['value'][M],H[K][M])))){I[K]=L?b['ObjectUtils']['deepAssign']({},G[E][K]['value']):G[E][K]['value'];J=!![];}else I[K]=H[K];}if(J)b['DataUtils']['save'](I,D,E);if(F===undefined)return I;else return I[F]===undefined?null:I[F];};c['readConfig']=function(D){try{return JSON['parse'](j['fs']['readFileSync'](D));}catch(E){return{};}};b['ColorUtils']={};b['ColorUtils']['convert']=function(D,E,F){if(b['ObjectUtils']['is'](D)){var G={};for(let a4 in D)G[a4]=b['ColorUtils']['convert'](D[a4],E,F);return G;}else{E=E===undefined||!E?E='RGBCOMP':E['toUpperCase']();F=F===undefined||!F||!['RGB','RGBA','RGBCOMP','HSL','HSLA','HSLCOMP','HEX','HEXA','INT']['includes'](F['toUpperCase']())?b['ColorUtils']['getType'](D):F['toUpperCase']();if(E=='RGBCOMP'){switch(F){case'RGBCOMP':if(D['length']==0x3)return Z(D);else if(D['length']==0x4){let a7=a0(D['pop']());return Z(D)['concat'](a7);}break;case'RGB':return Z(D['replace'](/\s/g,'')['slice'](0x4,-0x1)['split'](','));case'RGBA':let a5=D['replace'](/\s/g,'')['slice'](0x5,-0x1)['split'](',');let a6=a0(a5['pop']());return Z(a5)['concat'](a6);case'HSLCOMP':if(D['length']==0x3)return b['ColorUtils']['convert']('hsl('+a2(D)['join'](',')+')','RGBCOMP');else if(D['length']==0x4){let a8=a0(D['pop']());return b['ColorUtils']['convert']('hsl('+a2(D)['join'](',')+')','RGBCOMP')['concat'](a8);}break;case'HSL':var H=a2(D['replace'](/\s/g,'')['slice'](0x4,-0x1)['split'](','));var I,J,K,L,M,N,O,P;var Q=H[0x0]/0x168,R=parseInt(H[0x1])/0x64,S=parseInt(H[0x2])/0x64;L=Math['floor'](Q*0x6);M=Q*0x6-L;N=S*(0x1-R);O=S*(0x1-M*R);P=S*(0x1-(0x1-M)*R);switch(L%0x6){case 0x0:I=S,J=P,K=N;break;case 0x1:I=O,J=S,K=N;break;case 0x2:I=N,J=S,K=P;break;case 0x3:I=N,J=O,K=S;break;case 0x4:I=P,J=N,K=S;break;case 0x5:I=S,J=N,K=O;break;}return[Math['round'](I*0xff),Math['round'](J*0xff),Math['round'](K*0xff)];case'HSLA':var H=D['replace'](/\s/g,'')['slice'](0x5,-0x1)['split'](',');return b['ColorUtils']['convert']('hsl('+H['slice'](0x0,0x3)['join'](',')+')','RGBCOMP')['concat'](a0(H['pop']()));case'HEX':var T=/^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i['exec'](D);return[parseInt(T[0x1]+T[0x1]||T[0x4],0x10)['toString'](),parseInt(T[0x2]+T[0x2]||T[0x5],0x10)['toString'](),parseInt(T[0x3]+T[0x3]||T[0x6],0x10)['toString']()];case'HEXA':var T=/^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i['exec'](D);return[parseInt(T[0x1]+T[0x1]||T[0x5],0x10)['toString'](),parseInt(T[0x2]+T[0x2]||T[0x6],0x10)['toString'](),parseInt(T[0x3]+T[0x3]||T[0x7],0x10)['toString'](),Math['floor'](b['NumberUtils']['mapRange']([0x0,0xff],[0x0,0x64],parseInt(T[0x4]+T[0x4]||T[0x8],0x10)['toString']()))/0x64];case'INT':D=a3(D);return[(D>>0x10&0xff)['toString'](),(D>>0x8&0xff)['toString'](),(D&0xff)['toString']()];default:return null;}}else{if(E&&F&&E['indexOf']('HSL')==0x0&&F['indexOf']('HSL')==0x0){if(F=='HSLCOMP'){switch(E){case'HSLCOMP':if(D['length']==0x3)return a2(D);else if(D['length']==0x4){var U=a0(D['pop']());return a2(D)['concat'](U);}break;case'HSL':return'hsl('+a2(D['slice'](0x0,0x3))['join'](',')+')';case'HSLA':D=D['slice'](0x0,0x4);var U=D['length']==0x4?a0(D['pop']()):0x1;return'hsla('+a2(D)['concat'](U)['join'](',')+')';}}else return b['ColorUtils']['convert'](D['replace'](/\s/g,'')['slice'](D['toLowerCase']()['indexOf']('hsla')==0x0?0x5:0x4,-0x1)['split'](','),E,'HSLCOMP');}else{let a9=F=='RGBCOMP'?D:b['ColorUtils']['convert'](D,'RGBCOMP',F);if(a9)switch(E){case'RGB':return'rgb('+Z(a9['slice'](0x0,0x3))['join'](',')+')';case'RGBA':a9=a9['slice'](0x0,0x4);var U=a9['length']==0x4?a0(a9['pop']()):0x1;return'rgba('+Z(a9)['concat'](U)['join'](',')+')';case'HSLCOMP':var U=a9['length']==0x4?a0(a9['pop']()):null;var H=a2(b['ColorUtils']['convert'](a9,'HSL')['replace'](/\s/g,'')['split'](','));return U!=null?H['concat'](U):H;case'HSL':var I=Y(a9[0x0]),J=Y(a9[0x1]),K=Y(a9[0x2]);var V=Math['max'](I,J,K),W=Math['min'](I,J,K),X=V-W,Q,R=V===0x0?0x0:X/V,S=V/0xff;switch(V){case W:Q=0x0;break;case I:Q=J-K+X*(J0xff?0xff:aa<0x0?0x0:aa;}};function Z(aa){return aa['map'](ab=>{return Y(ab);});};function a0(aa){if(aa==null){return 0x1;}else{aa=aa['toString']();aa=(aa['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(aa['replace'](/[^0-9\.\-]/g,''));return isNaN(aa)||aa>0x1?0x1:aa<0x0?0x0:aa;}};function a1(aa){if(aa==null){return'100%';}else{aa=parseFloat(aa['toString']()['replace'](/[^0-9\.\-]/g,''));return(isNaN(aa)||aa>0x64?0x64:aa<0x0?0x0:aa)+'%';}};function a2(aa){let ab=parseFloat(aa['shift']()['toString']()['replace'](/[^0-9\.\-]/g,''));ab=isNaN(ab)||ab>0x168?0x168:ab<0x0?0x0:ab;return[ab]['concat'](aa['map'](ac=>{return a1(ac);}));};function a3(aa){if(aa==null){return 0xffffff;}else{aa=parseInt(aa['toString']()['replace'](/[^0-9]/g,''));return isNaN(aa)||aa>0xffffff?0xffffff:aa<0x0?0x0:aa;}};};b['ColorUtils']['setAlpha']=function(D,E,F){if(b['ObjectUtils']['is'](D)){var G={};for(let I in D)G[I]=b['ColorUtils']['setAlpha'](D[I],E,F);return G;}else{var H=b['ColorUtils']['convert'](D,'RGBCOMP');if(H){E=E['toString']();E=(E['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(E['replace'](/[^0-9\.\-]/g,''));E=isNaN(E)||E>0x1?0x1:E<0x0?0x0:E;H[0x3]=E;F=(F||b['ColorUtils']['getType'](D))['toUpperCase']();F=F=='RGB'||F=='HSL'||F=='HEX'?F+'A':F;return b['ColorUtils']['convert'](H,F);}}return null;};b['ColorUtils']['getAlpha']=function(D){var E=b['ColorUtils']['convert'](D,'RGBCOMP');if(E){if(E['length']==0x3)return 0x1;else if(E['length']==0x4){let F=E[0x3]['toString']();F=(F['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(F['replace'](/[^0-9\.\-]/g,''));return isNaN(F)||F>0x1?0x1:F<0x0?0x0:F;}}return null;};b['ColorUtils']['change']=function(D,E,F){E=parseFloat(E);if(D!=null&&typeof E=='number'&&!isNaN(E)){if(b['ObjectUtils']['is'](D)){var G={};for(let I in D)G[I]=b['ColorUtils']['change'](D[I],E,F);return G;}else{var H=b['ColorUtils']['convert'](D,'RGBCOMP');if(H){if(parseInt(E)!==E){E=E['toString']();E=(E['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(E['replace'](/[^0-9\.\-]/g,''));E=isNaN(E)?0x0:E;return b['ColorUtils']['convert']([Math['round'](H[0x0]*(0x1+E)),Math['round'](H[0x1]*(0x1+E)),Math['round'](H[0x2]*(0x1+E))],F||b['ColorUtils']['getType'](D));}else return b['ColorUtils']['convert']([Math['round'](H[0x0]+E),Math['round'](H[0x1]+E),Math['round'](H[0x2]+E)],F||b['ColorUtils']['getType'](D));}}}return null;};b['ColorUtils']['invert']=function(D,E){if(b['ObjectUtils']['is'](D)){var F={};for(let H in D)F[H]=b['ColorUtils']['invert'](D[H],E);return F;}else{var G=b['ColorUtils']['convert'](D,'RGBCOMP');if(G)return b['ColorUtils']['convert']([0xff-G[0x0],0xff-G[0x1],0xff-G[0x2]],E||b['ColorUtils']['getType'](D));}return null;};b['ColorUtils']['compare']=function(D,E){if(D&&E){D=b['ColorUtils']['convert'](D,'RGBA');E=b['ColorUtils']['convert'](E,'RGBA');if(D&&E)return b['equals'](D,E);}return null;};b['ColorUtils']['isBright']=function(D,E=0xa0){D=b['ColorUtils']['convert'](D,'RGBCOMP');if(!D)return![];return parseInt(E)-0x1&&D<0x1000000)return'INT';}return null;function F(H){return H['slice'](0x0,0x3)['every'](I=>I['toString']()['indexOf']('%')==-0x1&&parseFloat(I)==parseInt(I));};function G(H){return H['slice'](0x1,0x3)['every'](I=>I['toString']()['indexOf']('%')==I['length']-0x1);};};b['ColorUtils']['createGradient']=function(D,E='to\x20right'){var F={};var G='linear-gradient('+E;for(let H of Object['keys'](D)['sort']()){let I=b['ColorUtils']['convert'](D[H],'RGBA');G+=I?',\x20'+I+'\x20'+H*0x64+'%':'';}return G+=')';};b['ColorUtils']['getSwatchColor']=function(D,E){if(!Node['prototype']['isPrototypeOf'](D))return;let F=D['querySelector'](b['dotCN']['colorpickerswatches']+'[number=\x22'+E+'\x22],\x20'+b['dotCN']['colorpickerswatch']+'[number=\x22'+E+'\x22]');if(!F)return null;return b['ColorUtils']['convert'](b['ReactUtils']['findValue'](b['ReactUtils']['getInstance'](F),'selectedColor',{'up':!![],'blacklist':{'props':!![]}}));};b['DOMUtils']={};b['DOMUtils']['getSelection']=function(){let D=document['getSelection']();return D&&D['anchorNode']?D['getRangeAt'](0x0)['toString']():'';};b['DOMUtils']['addClass']=function(D,...E){if(!D||!E)return;for(let G of[D]['flat'](0xa)['filter'](H=>H)){if(Node['prototype']['isPrototypeOf'](G))F(G);else if(NodeList['prototype']['isPrototypeOf'](G))for(let H of G)F(H);else if(typeof G=='string')for(let I of G['split'](','))if(I&&(I=I['trim']()))for(let J of document['querySelectorAll'](I))F(J);}function F(K){if(K&&K['classList'])for(let L of E)for(let M of[L]['flat'](0xa)['filter'](N=>N))if(typeof M=='string')for(let N of M['split']('\x20'))if(N)K['classList']['add'](N);}};b['DOMUtils']['removeClass']=function(D,...E){if(!D||!E)return;for(let G of[D]['flat'](0xa)['filter'](H=>H)){if(Node['prototype']['isPrototypeOf'](G))F(G);else if(NodeList['prototype']['isPrototypeOf'](G))for(let H of G)F(H);else if(typeof G=='string')for(let I of G['split'](','))if(I&&(I=I['trim']()))for(let J of document['querySelectorAll'](I))F(J);}function F(K){if(K&&K['classList'])for(let L of E)for(let M of[L]['flat'](0xa)['filter'](N=>N))if(typeof M=='string')for(let N of M['split']('\x20'))if(N)K['classList']['remove'](N);}};b['DOMUtils']['toggleClass']=function(D,...E){if(!D||!E)return;var F=E['pop']();if(typeof F!='boolean'){E['push'](F);F=undefined;}if(!E['length'])return;for(let H of[D]['flat'](0xa)['filter'](I=>I)){if(!H){}else if(Node['prototype']['isPrototypeOf'](H))G(H);else if(NodeList['prototype']['isPrototypeOf'](H))for(let I of H)G(I);else if(typeof H=='string')for(let J of H['split'](','))if(J&&(J=J['trim']()))for(let K of document['querySelectorAll'](J))G(K);}function G(L){if(L&&L['classList'])for(let M of E)for(let N of[M]['flat'](0xa)['filter'](O=>O))if(typeof N=='string')for(let O of N['split']('\x20'))if(O)L['classList']['toggle'](O,F);}};b['DOMUtils']['containsClass']=function(D,...E){if(!D||!E)return;var F=E['pop']();if(typeof F!='boolean'){E['push'](F);F=!![];}if(!E['length'])return;var G=undefined;for(let I of b['ArrayUtils']['is'](D)?D:Array['of'](D)){if(!I){}else if(Node['prototype']['isPrototypeOf'](I))H(I);else if(NodeList['prototype']['isPrototypeOf'](I))for(let J of I)H(J);else if(typeof I=='string')for(let K of I['split'](','))if(K&&(K=K['trim']()))for(let L of document['querySelectorAll'](K))H(L);}return G;function H(M){if(M&&M['classList'])for(let N of E)if(typeof N=='string')for(let O of N['split']('\x20'))if(O){if(G===undefined)G=F;if(F&&!M['classList']['contains'](O))G=![];if(!F&&M['classList']['contains'](O))G=!![];}}};b['DOMUtils']['replaceClass']=function(D,E,F){if(!D||typeof E!='string'||typeof F!='string')return;for(let H of[D]['flat'](0xa)['filter'](I=>I)){if(Node['prototype']['isPrototypeOf'](H))G(H);else if(NodeList['prototype']['isPrototypeOf'](H))for(let I of H)G(I);else if(typeof H=='string')for(let J of H['split'](','))if(J&&(J=J['trim']()))for(let K of document['querySelectorAll'](J))G(K);}function G(L){if(L&&L['tagName']&&L['className'])L['className']=L['className']['replace'](new RegExp(E,'g'),F)['trim']();}};b['DOMUtils']['formatClassName']=function(...D){return b['ArrayUtils']['removeCopies'](D['flat'](0xa)['filter'](E=>E)['join']('\x20')['split']('\x20'))['join']('\x20')['trim']();};b['DOMUtils']['removeClassFromDOM']=function(...D){for(let E of D['flat'](0xa)['filter'](F=>F))if(typeof E=='string')for(let F of E['split'](','))if(F&&(F=F['replace'](/\.|\s/g,'')))b['DOMUtils']['removeClass'](document['querySelectorAll']('.'+F),F);};b['DOMUtils']['show']=function(...D){b['DOMUtils']['toggle'](...D,!![]);};b['DOMUtils']['hide']=function(...D){b['DOMUtils']['toggle'](...D,![]);};b['DOMUtils']['toggle']=function(...D){if(!D)return;var E=D['pop']();if(typeof E!='boolean'){D['push'](E);E=undefined;}if(!D['length'])return;for(let G of D['flat'](0xa)['filter'](H=>H)){if(Node['prototype']['isPrototypeOf'](G))F(G);else if(NodeList['prototype']['isPrototypeOf'](G))for(let H of G)F(H);else if(typeof G=='string')for(let I of G['split'](','))if(I&&(I=I['trim']()))for(let J of document['querySelectorAll'](I))F(J);}function F(K){if(!K||!Node['prototype']['isPrototypeOf'](K))return;var L=E===undefined?!b['DOMUtils']['isHidden'](K):!E;if(L)K['style']['setProperty']('display','none','important');else K['style']['removeProperty']('display');}};b['DOMUtils']['isHidden']=function(D){if(Node['prototype']['isPrototypeOf'](D)&&D['nodeType']!=Node['TEXT_NODE'])return getComputedStyle(D,null)['getPropertyValue']('display')=='none';};b['DOMUtils']['remove']=function(...D){for(let E of D['flat'](0xa)['filter'](F=>F)){if(Node['prototype']['isPrototypeOf'](E))E['remove']();else if(NodeList['prototype']['isPrototypeOf'](E)){let F=Array['from'](E);while(F['length'])F['shift']()['remove']();}else if(typeof E=='string')for(let G of E['split'](','))if(G&&(G=G['trim']())){let H=Array['from'](document['querySelectorAll'](G));while(H['length'])H['shift']()['remove']();}}};b['DOMUtils']['create']=function(D){if(typeof D!='string'||!D['trim']())return null;let E=document['createElement']('template');try{E['innerHTML']=D['replace'](/(?[\t\r\n]+<(?!pre)/g,'><');}catch(F){E['innerHTML']=D['replace'](/>[\t\r\n]+<(?!pre)/g,'><');}if(E['content']['childNodes']['length']==0x1)return E['content']['firstElementChild'];else{let G=document['createElement']('span');let H=Array['from'](E['content']['childNodes']);while(H['length'])G['appendChild'](H['shift']());return G;}};b['DOMUtils']['getParent']=function(D,E){let F=null;if(Node['prototype']['isPrototypeOf'](E)&&D){let G=NodeList['prototype']['isPrototypeOf'](D)?D:typeof D=='string'?document['querySelectorAll'](D):null;if(G)for(let H of G)if(H['contains'](E)){F=H;break;}}return F;};b['DOMUtils']['setText']=function(D,E){if(!D||!Node['prototype']['isPrototypeOf'](D))return;let F=D['nodeType']==Node['TEXT_NODE']?D:null;if(!F)for(let G of D['childNodes'])if(G['nodeType']==Node['TEXT_NODE']||b['DOMUtils']['containsClass'](G,'BDFDB-textnode')){F=G;break;}if(F){if(Node['prototype']['isPrototypeOf'](E)&&E['nodeType']!=Node['TEXT_NODE']){b['DOMUtils']['addClass'](E,'BDFDB-textnode');D['replaceChild'](E,F);}else if(Node['prototype']['isPrototypeOf'](F)&&F['nodeType']!=Node['TEXT_NODE'])D['replaceChild'](document['createTextNode'](E),F);else F['textContent']=E;}else D['appendChild'](Node['prototype']['isPrototypeOf'](E)?E:document['createTextNode'](E));};b['DOMUtils']['getText']=function(D){if(!D||!Node['prototype']['isPrototypeOf'](D))return;for(let E of D['childNodes'])if(E['nodeType']==Node['TEXT_NODE'])return E['textContent'];};b['DOMUtils']['getRects']=function(D){let E={};if(Node['prototype']['isPrototypeOf'](D)&&D['nodeType']!=Node['TEXT_NODE']){let F=D;while(F){let G=b['DOMUtils']['isHidden'](F);if(G){b['DOMUtils']['toggle'](F,!![]);F['BDFDBgetRectsHidden']=!![];}F=F['parentElement'];}E=D['getBoundingClientRect']();F=D;while(F){if(F['BDFDBgetRectsHidden']){b['DOMUtils']['toggle'](F,![]);delete F['BDFDBgetRectsHidden'];}F=F['parentElement'];}}return E;};b['DOMUtils']['getHeight']=function(D){if(Node['prototype']['isPrototypeOf'](D)&&D['nodeType']!=Node['TEXT_NODE']){let E=b['DOMUtils']['getRects'](D);let F=getComputedStyle(D);return E['height']+parseInt(F['marginTop'])+parseInt(F['marginBottom']);}return 0x0;};b['DOMUtils']['getInnerHeight']=function(D){if(Node['prototype']['isPrototypeOf'](D)&&D['nodeType']!=Node['TEXT_NODE']){let E=b['DOMUtils']['getRects'](D);let F=getComputedStyle(D);return E['height']-parseInt(F['paddingTop'])-parseInt(F['paddingBottom']);}return 0x0;};b['DOMUtils']['getWidth']=function(D){if(Node['prototype']['isPrototypeOf'](D)&&D['nodeType']!=Node['TEXT_NODE']){let E=b['DOMUtils']['getRects'](D);let F=getComputedStyle(D);return E['width']+parseInt(F['marginLeft'])+parseInt(F['marginRight']);}return 0x0;};b['DOMUtils']['getInnerWidth']=function(D){if(Node['prototype']['isPrototypeOf'](D)&&D['nodeType']!=Node['TEXT_NODE']){let E=b['DOMUtils']['getRects'](D);let F=getComputedStyle(D);return E['width']-parseInt(F['paddingLeft'])-parseInt(F['paddingRight']);}return 0x0;};b['DOMUtils']['appendWebScript']=function(D,E){if(!E&&!document['head']['querySelector']('bd-head\x20bd-scripts'))document['head']['appendChild'](b['DOMUtils']['create'](' '));E=E||document['head']['querySelector']('bd-head\x20bd-scripts')||document['head'];E=Node['prototype']['isPrototypeOf'](E)?E:document['head'];b['DOMUtils']['removeWebScript'](D,E);let F=document['createElement']('script');F['src']=D;E['appendChild'](F);};b['DOMUtils']['removeWebScript']=function(D,E){E=E||document['head']['querySelector']('bd-head\x20bd-scripts')||document['head'];E=Node['prototype']['isPrototypeOf'](E)?E:document['head'];b['DOMUtils']['remove'](E['querySelectorAll']('script[src=\x22'+D+'\x22]'));};b['DOMUtils']['appendWebStyle']=function(D,E){if(!E&&!document['head']['querySelector']('bd-head\x20bd-styles'))document['head']['appendChild'](b['DOMUtils']['create'](' '));E=E||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];E=Node['prototype']['isPrototypeOf'](E)?E:document['head'];b['DOMUtils']['removeWebStyle'](D,E);E['appendChild'](b['DOMUtils']['create'](' '));};b['DOMUtils']['removeWebStyle']=function(D,E){E=E||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];E=Node['prototype']['isPrototypeOf'](E)?E:document['head'];b['DOMUtils']['remove'](E['querySelectorAll']('link[href=\x22'+D+'\x22]'));};b['DOMUtils']['appendLocalStyle']=function(D,E,F){if(!F&&!document['head']['querySelector']('bd-head\x20bd-styles'))document['head']['appendChild'](b['DOMUtils']['create'](' '));F=F||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];F=Node['prototype']['isPrototypeOf'](F)?F:document['head'];b['DOMUtils']['removeLocalStyle'](D,F);F['appendChild'](b['DOMUtils']['create'](''));};b['DOMUtils']['removeLocalStyle']=function(D,E){E=E||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];E=Node['prototype']['isPrototypeOf'](E)?E:document['head'];b['DOMUtils']['remove'](E['querySelectorAll']('style[id=\x22'+D+'CSS\x22]'));};b['ModalUtils']={};b['ModalUtils']['open']=function(D,E){if(!b['ObjectUtils']['is'](D)||!b['ObjectUtils']['is'](E))return;let F,G,H,I=[],J=N=>{if(b['ObjectUtils']['is'](H)&&typeof H['onClose']=='function')H['onClose']();};let K=[],L=[],M=[];if(typeof E['text']=='string'){L['push'](b['ReactUtils']['createElement'](s['LibraryComponents']['TextElement'],{'children':E['text']}));}if(E['children']){let N=[];for(let O of[E['children']]['flat'](0xa)['filter'](P=>P))if(k['React']['isValidElement'](O)){if(O['type']==s['LibraryComponents']['ModalComponents']['ModalTabContent']){if(!N['length'])O['props']['open']=!![];else delete O['props']['open'];N['push']({'value':O['props']['tab']});}L['push'](O);}if(N['length'])K['push'](b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['tabbarcontainer'],'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['TabBar'],{'className':b['disCN']['tabbar'],'itemClassName':b['disCN']['tabbaritem'],'type':s['LibraryComponents']['TabBar']['Types']['TOP'],'items':N,'onItemSelect':(P,Q)=>{let R=b['ReactUtils']['findOwner'](F,{'name':'BDFDB_ModalTabContent','all':!![],'unlimited':!![]});for(let S of R){if(S['props']['tab']==P)S['props']['open']=!![];else delete S['props']['open'];}b['ReactUtils']['forceUpdate'](R);}}),E['tabBarChildren']]['flat'](0xa)['filter'](P=>P)}));}if(b['ArrayUtils']['is'](E['buttons']))for(let P of E['buttons']){let Q=typeof P['contents']=='string'&&P['contents'];if(Q){let R=typeof P['color']=='string'&&s['LibraryComponents']['Button']['Colors'][P['color']['toUpperCase']()];let S=typeof P['look']=='string'&&s['LibraryComponents']['Button']['Looks'][P['look']['toUpperCase']()];let T=typeof P['click']=='function'?P['click']:typeof P['onClick']=='function'?P['onClick']:U=>{};if(P['cancel'])I['push'](T);M['push'](b['ReactUtils']['createElement'](s['LibraryComponents']['Button'],b['ObjectUtils']['exclude'](Object['assign']({},P,{'look':S||(R?s['LibraryComponents']['Button']['Looks']['FILLED']:s['LibraryComponents']['Button']['Looks']['LINK']),'color':R||s['LibraryComponents']['Button']['Colors']['PRIMARY'],'onClick':U=>{if(P['close'])J();if(!(P['close']&&P['cancel']))T(F,G);},'children':Q}),'click','close','cancel','contents')));}}L=L['concat'](E['contentChildren'])['filter'](U=>U&&(typeof U=='string'||b['ReactUtils']['isValidElement'](U)));K=K['concat'](E['headerChildren'])['filter'](U=>U&&(typeof U=='string'||b['ReactUtils']['isValidElement'](U)));M=M['concat'](E['footerChildren'])['filter'](U=>U&&(typeof U=='string'||b['ReactUtils']['isValidElement'](U)));if(L['length']){if(typeof E['onClose']!='function')E['onClose']=W=>{};if(typeof E['onOpen']!='function')E['onOpen']=W=>{};let U=D['name']||(typeof D['getName']=='function'?D['getName']():null);U=typeof U=='string'?U:null;let V=0x0;k['ModalUtils']['openModal'](W=>{H=W;return b['ReactUtils']['createElement'](class BDFDB_Modal extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['ModalComponents']['ModalRoot'],{'className':b['DOMUtils']['formatClassName'](U&&U+'-modal',b['disCN']['modalwrapper'],E['className']),'size':typeof E['size']=='string'&&s['LibraryComponents']['ModalComponents']['ModalSize'][E['size']['toUpperCase']()]||s['LibraryComponents']['ModalComponents']['ModalSize']['SMALL'],'transitionState':W['transitionState'],'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['ModalComponents']['ModalHeader'],{'className':b['DOMUtils']['formatClassName'](E['headerClassName'],K['length']&&b['disCN']['modalheaderhassibling']),'separator':E['headerSeparator']||![],'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormTitle'],{'tag':s['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H4'],'children':E['header']}),b['ReactUtils']['createElement'](s['LibraryComponents']['TextElement'],{'size':s['LibraryComponents']['TextElement']['Sizes']['SIZE_12'],'children':typeof E['subheader']=='string'||b['ReactUtils']['isValidElement'](E['subheader'])?E['subheader']:U||''})]}),b['ReactUtils']['createElement'](s['LibraryComponents']['ModalComponents']['ModalCloseButton'],{'onClick':J})]}),K['length']?b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'grow':0x0,'shrink':0x0,'children':K}):null,b['ReactUtils']['createElement'](s['LibraryComponents']['ModalComponents']['ModalContent'],{'className':E['contentClassName'],'scroller':E['scroller'],'children':L}),M['length']?b['ReactUtils']['createElement'](s['LibraryComponents']['ModalComponents']['ModalFooter'],{'className':E['footerClassName'],'children':M}):null]});}['componentDidMount'](){G=this;F=b['ReactUtils']['findDOMNode'](this);F=F&&F['parentElement']?F['parentElement']['querySelector'](b['dotCN']['modalwrapper']):null;if(F&&W['transitionState']==0x1&&W['transitionState']>V)E['onOpen'](F,this);V=W['transitionState'];}['componentWillUnmount'](){if(F&&W['transitionState']==0x3){for(let X of I)X(F);E['onClose'](F,this);}}},W);},{'onCloseRequest':J});}};b['ModalUtils']['confirm']=function(D,E,F){if(!b['ObjectUtils']['is'](D)||typeof E!='string')return;b['ModalUtils']['open'](D,{'text':E,'header':'Are\x20you\x20sure?','className':b['disCN']['modalconfirmmodal'],'scroller':![],'buttons':[{'contents':b['LanguageUtils']['LanguageStrings']['OKAY'],'close':!![],'color':'RED','click':typeof F=='function'?F:G=>{}},{'contents':b['LanguageUtils']['LanguageStrings']['CANCEL'],'close':!![]}]});};b['ContextMenuUtils']={};b['ContextMenuUtils']['open']=function(D,E,F){k['ContextMenuUtils']['openContextMenu'](E,function(G){return b['ReactUtils']['createElement'](s['LibraryComponents']['ContextMenus']['NativeContextMenu'],Object['assign']({},G,{'BDFDBcontextMenu':!![],'type':b['DiscordConstants']['ContextMenuTypes']['NATIVE_TEXT'],'value':'','className':b['disCN']['contextmenu'],'children':F}));});};b['ContextMenuUtils']['close']=function(D){if(!b['ObjectUtils']['is'](D))return;var E=b['ReactUtils']['findOwner'](D,{'props':'closeContextMenu','up':!![]});if(b['ObjectUtils']['is'](E)&&E['props']&&typeof E['props']['closeContextMenu']=='function')E['props']['closeContextMenu']();else b['LibraryModules']['ContextMenuUtils']['closeContextMenu']();};b['TimeUtils']={};b['TimeUtils']['interval']=function(D,E){if(typeof D!='function'||typeof E!='number'||E<0x1)return;else return setInterval(F=>{b['TimeUtils']['suppress'](D,'Interval')();},E);};b['TimeUtils']['timeout']=function(D,E){if(typeof D!='function')return;else if(typeof E!='number'||E<0x1)return setImmediate(F=>{b['TimeUtils']['suppress'](D,'Immediate')();});else return setTimeout(F=>{b['TimeUtils']['suppress'](D,'Timeout')();},E);};b['TimeUtils']['clear']=function(...D){for(let E of D['flat'](0xa)['filter'](F=>F)){if(typeof E=='number'){clearInterval(E);clearTimeout(E);}else if(typeof E=='object')clearImmediate(E);}};b['TimeUtils']['suppress']=function(D,E,F){return function(...G){try{return D(...G);}catch(H){if(typeof E!='string')E='';b['LogUtils']['error'](E+'\x20'+H,F);}};};b['StringUtils']={};b['StringUtils']['htmlEscape']=function(D){var E=document['createElement']('div');E['innerText']=D;return E['innerHTML'];};b['StringUtils']['regEscape']=function(D){return typeof D=='string'&&D['replace'](/([\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}])/g,'\x5c$1');};b['StringUtils']['insertNRST']=function(D){return typeof D=='string'&&D['replace'](/\\r/g,'\x0d')['replace'](/\\n/g,'\x0a')['replace'](/\\t/g,'\x09')['replace'](/\\s/g,'\x20');};b['StringUtils']['highlight']=function(D,E,F='',G=' '){if(typeof D!='string'||!E||E['length']<0x1)return D;var H=0x0,I=D;b['ArrayUtils']['getAllIndexes'](D['toUpperCase'](),E['toUpperCase']())['forEach'](J=>{var K=H*(F['length']+G['length']);J=J+K;var L=J+E['length'];var M=[-0x1]['concat'](b['ArrayUtils']['getAllIndexes'](D['substring'](0x0,J),'<'));var N=[-0x1]['concat'](b['ArrayUtils']['getAllIndexes'](D['substring'](0x0,J),'>'));if(M[M['length']-0x1]>N[N['length']-0x1])return;D=D['substring'](0x0,J)+F+D['substring'](J,L)+G+D['substring'](L);H++;});return D||I;};b['SlateUtils']={};b['SlateUtils']['isRichValue']=function(D){return b['ObjectUtils']['is'](D)&&k['SlateUtils']['deserialize']('')['constructor']['prototype']['isPrototypeOf'](D);};b['SlateUtils']['copyRichValue']=function(D,E){let F=k['SlateUtils']['deserialize'](D);if(b['SlateUtils']['isRichValue'](E)&&E['_map']&&E['_map']['_root']&&b['ArrayUtils']['is'](E['_map']['_root']['entries'])){for(let G in E['_map']['_root']['entries'])if(E['_map']['_root']['entries'][G][0x0]=='selection'){F['_map']['_root']['entries'][G]=E['_map']['_root']['entries'][G];break;}}return F;};b['SlateUtils']['hasOpenPlainTextCodeBlock']=function(D){let E=b['ReactUtils']['getValue'](D,'props.richValue');if(!b['SlateUtils']['isRichValue'](E))return![];let F=b['LibraryModules']['SlateSelectionUtils']['serializeSelection'](E['document'],{'start':{'key':E['document']['getFirstText']()['key'],'offset':0x0},'end':E['selection']['start']},'raw')['match'](/```/g);return F&&F['length']&&F['length']%0x2!=0x0;};b['SlateUtils']['getCurrentWord']=function(D){let E=b['ReactUtils']['getValue'](D,'props.richValue');if(!b['SlateUtils']['isRichValue'](E)||!E['selection']['isCollapsed']||b['SlateUtils']['hasOpenPlainTextCodeBlock'](D)||E['document']['text']['trim']()['length']==0x0)return{'word':null,'isAtStart':![]};if(D['props']['useSlate']){if(E['document']['text']['startsWith']('/giphy\x20')||E['document']['text']['startsWith']('/tenor\x20')){let K=E['document']['getNode'](E['selection']['start']['key']);if(K)return{'word':K['text']['substring'](0x0,E['selection']['start']['offset']),'isAtStart':!![]};}let F=E['document']['getNode'](E['selection']['start']['key']);if(F==null)return{'word':null,'isAtStart':![]};let G='',H=![];let I=E['selection']['start']['offset'];let J=E['document']['getClosestBlock'](F['key']);while(!![]){if(--I<0x0){if(F=J['getPreviousNode'](F['key'])==null){H=!![];break;}if(F['object']!=='text')break;I=F['text']['length']-0x1;}if(F['object']!=='text')break;let L=F['text'][I];if(/(\t|\s)/['test'](L))break;G=L+G;}return{'word':!G?null:G,'isAtStart':H&&J['type']=='line'&&E['document']['nodes']['get'](0x0)===J};}else{let M=b['ReactUtils']['findDOMNode'](D['ref']['current']);if(!Node['prototype']['isPrototypeOf'](M)||M['tagName']!='TEXTAREA'||!M['value']['length']||/\s/['test'](M['value']['slice'](M['selectionStart'],M['selectionEnd'])))return{'word':null,'isAtStart':!![]};else{if(M['selectionEnd']==M['value']['length']){let N=M['value']['split'](/\s/)['reverse']();return{'word':!N[0x0]?null:N[0x0],'isAtStart':N['length']>0x1};}else{let O=M['value']['split'](''),P='',Q='',R=![],S=!![];for(let T in O){if(T==M['selectionStart'])R=!![];if(/\s/['test'](O[T])){P='';S=Q['length']>0x0&&S||![];R=![];}else{P+=O[T];if(R)Q=P;}}return{'word':!Q?null:Q,'isAtStart':S};}}}};b['NumberUtils']={};b['NumberUtils']['formatBytes']=function(D,E){D=parseInt(D);if(isNaN(D)||D<0x0)return'0\x20Bytes';if(D==0x1)return'1\x20Byte';let F=Math['floor'](Math['log'](D)/Math['log'](0x400));return parseFloat((D/Math['pow'](0x400,F))['toFixed'](E<0x1?0x0:E>0x14?0x14:E||0x2))+'\x20'+['Bytes','KB','MB','GB','TB','PB','EB','ZB','YB'][F];};b['NumberUtils']['mapRange']=function(D,E,F){if(parseFloat(F)parseFloat(D[0x1]))return parseFloat(E[0x1]);else return parseFloat(E[0x0])+(parseFloat(F)-parseFloat(D[0x0]))*(parseFloat(E[0x1])-parseFloat(E[0x0]))/(parseFloat(D[0x1])-parseFloat(D[0x0]));};b['NumberUtils']['generateId']=function(D){D=b['ArrayUtils']['is'](D)?D:[];let E=Math['floor'](Math['random']()*0x2386f26fc10000);if(D['includes'](E))return b['NumberUtils']['generateId'](D);else{D['push'](E);return E;}};b['NumberUtils']['compareVersions']=function(D,E){if(!D||!E)return!![];D=D['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](H=>parseInt(H))['filter'](H=>(H||H==0x0)&&!isNaN(H));E=E['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](H=>parseInt(H))['filter'](H=>(H||H==0x0)&&!isNaN(H));var F=Math['max'](D['length'],E['length']);if(!F)return!![];if(D['length']>E['length']){var G=new Array(D['length']-E['length']);for(let H=0x0;HE[L])return!![];}return![];};b['NumberUtils']['getVersionDifference']=function(D,E){if(!D||!E)return![];D=D['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](J=>parseInt(J))['filter'](J=>(J||J==0x0)&&!isNaN(J));E=E['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](J=>parseInt(J))['filter'](J=>(J||J==0x0)&&!isNaN(J));var F=Math['max'](D['length'],E['length']);if(!F)return![];if(D['length']>E['length']){var G=new Array(D['length']-E['length']);for(let J=0x0;J0x12c?'stable':da>0xc8?'canary':'ptb';else D='stable';}else D='stable';}}b['DiscordUtils']['getBuilt']['built']=D;return D;}};b['DiscordUtils']['getVersion']=function(){if(b['DiscordUtils']['getBuilt']['version'])return b['DiscordUtils']['getBuilt']['version'];else{let D=null;try{D=j['electron']['remote']['app']['getVersion']();}catch(E){D='';}b['DiscordUtils']['getBuilt']['version']=D;return D;}};b['DiscordUtils']['isDevModeEnabled']=function(){return k['StoreChangeUtils']['get']('UserSettingsStore')['developerMode'];};b['DiscordUtils']['getTheme']=function(){return k['StoreChangeUtils']['get']('UserSettingsStore')['theme']=='dark'?b['disCN']['themedark']:b['disCN']['themelight'];};b['DiscordUtils']['getMode']=function(){return k['StoreChangeUtils']['get']('UserSettingsStore')['message_display_compact']?'compact':'cozy';};b['DiscordUtils']['getZoomFactor']=function(){let D=b['DOMUtils']['getRects'](document['querySelector'](b['dotCN']['appmount']));let E=Math['round'](0x64*window['outerWidth']/D['width']);let F=Math['round'](0x64*window['outerHeight']/D['height']);return E{G['onLoad'](...I);});if(typeof H['removeMenu']=='function')H['removeMenu']();else H['setMenu'](null);H['loadURL'](E);H['executeJavaScriptSafe']=I=>{if(!H['isDestroyed']())H['webContents']['executeJavaScript']('(_\x20=>\x20{'+I+'})();');};D['browserWindows']['push'](H);return H;};b['WindowUtils']['close']=function(D){if(b['ObjectUtils']['is'](D)&&!D['isDestroyed']()&&D['isClosable']())D['close']();};b['WindowUtils']['closeAll']=function(D){D=D==b&&c||D;if(b['ObjectUtils']['is'](D)&&b['ArrayUtils']['is'](D['browserWindows']))while(D['browserWindows']['length'])b['WindowUtils']['close'](D['browserWindows']['pop']());};b['WindowUtils']['addListener']=function(D,E,F){D=D==b&&c||D;if(!b['ObjectUtils']['is'](D)||!E||typeof F!='function')return;b['WindowUtils']['removeListener'](D,E);for(let G of E['split']('\x20')){G=G['split']('.');let H=G['shift']();if(!H)return;let I=(G['join']('.')||'')+D['name'];if(!b['ArrayUtils']['is'](D['ipcListeners']))D['ipcListeners']=[];D['ipcListeners']['push']({'eventname':H,'namespace':I,'callback':F});j['electron']['ipcRenderer']['on'](H,F);}};b['WindowUtils']['removeListener']=function(D,E=''){D=D==b&&c||D;if(!b['ObjectUtils']['is'](D)||!b['ArrayUtils']['is'](D['ipcListeners']))return;if(E){for(let F of E['split']('\x20')){F=F['split']('.');let G=F['shift']();let H=(F['join']('.')||'')+D['name'];for(let I of D['ipcListeners']){let J=[];if(I['eventname']==G&&I['namespace']==H){j['electron']['ipcRenderer']['off'](I['eventname'],I['callback']);J['push'](I);}if(J['length'])D['ipcListeners']=D['ipcListeners']['filter'](K=>{return J['indexOf'](K)<0x0;});}}}else{for(let K of D['ipcListeners'])j['electron']['ipcRenderer']['off'](K['eventname'],K['callback']);D['ipcListeners']=[];}};b['BDUtils']={};b['BDUtils']['getPluginsFolder']=function(){if(j['process']['env']['injDir'])return j['path']['resolve'](j['process']['env']['injDir'],'plugins/');switch(j['process']['platform']){case'win32':return j['path']['resolve'](j['process']['env']['appdata'],'BetterDiscord/plugins/');case'darwin':return j['path']['resolve'](j['process']['env']['HOME'],'Library/Preferences/BetterDiscord/plugins/');default:if(j['process']['env']['XDG_CONFIG_HOME'])return j['path']['resolve'](j['process']['env']['XDG_CONFIG_HOME'],'BetterDiscord/plugins/');else return j['path']['resolve'](j['process']['env']['HOME'],'.config/BetterDiscord/plugins/');}};b['BDUtils']['getThemesFolder']=function(){if(j['process']['env']['injDir'])return j['path']['resolve'](j['process']['env']['injDir'],'plugins/');switch(j['process']['platform']){case'win32':return j['path']['resolve'](j['process']['env']['appdata'],'BetterDiscord/themes/');case'darwin':return j['path']['resolve'](j['process']['env']['HOME'],'Library/Preferences/BetterDiscord/themes/');default:if(j['process']['env']['XDG_CONFIG_HOME'])return j['path']['resolve'](j['process']['env']['XDG_CONFIG_HOME'],'BetterDiscord/themes/');else return j['path']['resolve'](j['process']['env']['HOME'],'.config/BetterDiscord/themes/');}};b['BDUtils']['checkRepoPage']=function(D=document['querySelector'](b['dotCN']['layer']+'[layer-id=\x22user-settings\x22]')){if(!D)return;let E=D['querySelector'](b['dotCN']['_repofolderbutton']);if(!E)return;let F=E['parentElement']['querySelector']('h2');if(F&&F['innerText']){let G=F['innerText']['toLowerCase']();if(G==='plugins'||G==='themes')return G;}};b['BDUtils']['isPluginEnabled']=function(D){if(BdApi['Plugins']&&typeof BdApi['Plugins']['Plugins']=='function')return BdApi['Plugins']['isEnabled'](D);else if(typeof BdApi['isPluginEnabled']=='function')return BdApi['isPluginEnabled'](D);};b['BDUtils']['enablePlugin']=function(D){if(BdApi['Plugins']&&typeof BdApi['Plugins']['enable']=='function')BdApi['Plugins']['enable'](D);else if(window['pluginModule'])window['pluginModule']['startPlugin'](D);};b['BDUtils']['disablePlugin']=function(D){if(BdApi['Plugins']&&typeof BdApi['Plugins']['disable']=='function')BdApi['Plugins']['disable'](D);else if(window['pluginModule'])window['pluginModule']['stopPlugin'](D);};b['BDUtils']['getPlugin']=function(D,E=![],F=![]){if(!E||b['BDUtils']['isPluginEnabled'](D)){if(BdApi['Plugins']['get']&&typeof BdApi['Plugins']['get']=='function'){let G=BdApi['Plugins']['get'](D);if(F)return G?{'filename':j['fs']['existsSync'](j['path']['join'](b['BDUtils']['getPluginsFolder'](),D+'.plugin.js'))?D+'.plugin.js':null,'id':D,'name':D,'plugin':G}:null;else return G;}else if(window['bdplugins'])F?window['bdplugins'][D]:(window['bdplugins'][D]||{})['plugin'];}return null;};b['BDUtils']['isThemeEnabled']=function(D){if(BdApi['Themes']&&typeof BdApi['Themes']['isEnabled']=='function')return BdApi['Themes']['isEnabled'](D);else if(typeof BdApi['isThemeEnabled']=='function')return BdApi['isThemeEnabled'](D);};b['BDUtils']['enableTheme']=function(D){if(BdApi['Themes']&&typeof BdApi['Themes']['enable']=='function')BdApi['Themes']['enable'](D);else if(window['themeModule'])window['themeModule']['enableTheme'](D);};b['BDUtils']['disableTheme']=function(D){if(BdApi['Themes']&&typeof BdApi['Themes']['disable']=='function')BdApi['Themes']['disable'](D);else if(window['themeModule'])window['themeModule']['disableTheme'](D);};b['BDUtils']['getTheme']=function(D,E=![]){if(!E||b['BDUtils']['isThemeEnabled'](D)){if(BdApi['Themes']&&typeof BdApi['Themes']['get']=='function')return BdApi['Themes']['get'](D);else if(window['bdthemes'])window['bdthemes'][D];}return null;};b['BDUtils']['getSettings']=function(D){if(D)return BdApi['isSettingEnabled'](D);else return b['ReactUtils']['getValue'](BdApi['getBDData']('settings'),b['DiscordUtils']['getBuilt']()+'.settings');};b['BDUtils']['isAutoLoadEnabled']=function(){return b['BDUtils']['getSettings']('fork-ps-5')===!![]||b['BDUtils']['isPluginEnabled']('Restart-No-More')||b['BDUtils']['isPluginEnabled']('Restart\x20No\x20More');};var o={};o['BDFDB']={'BDFDBundefined':'BDFDB_undefined','avatarStatusHovered':'statusHovered-gF2976','badge':'badge-7R_W4s','bdaRepoEntry':'entry-9JnAPs','cardInner':'inner-OP_8zd','cardWrapper':'card-rT4Wbb','charCounter':'counter-uAzbKp','changeLogModal':'changeLogModal-ny_dHC','collapseContainer':'container-fAVkOf','collapseContainerArrow':'arrow-uglXxc','collapseContainerCollapsed':'collapsed-2BUBZm','collapseContainerHeader':'header-2s6x-5','collapseContainerInner':'inner-TkGytd','collapseContainerMini':'container-fAVkOf\x20containerMini-_k6Rts','collapseContainerTitle':'title-ROsJi-','colorPicker':'colorPicker-h5sF8g','colorPickerAlpha':'alpha-VcPGeR','colorPickerAlphaCheckered':'alpha-checkered','colorPickerAlphaCursor':'alpha-cursor','colorPickerAlphaHorizontal':'alpha-horizontal','colorPickerGradient':'gradient-TJOYTr','colorPickerGradientCheckered':'gradient-checkered','colorPickerGradientCursor':'gradient-cursor','colorPickerGradientCursorEdge':'gradient-cursor-edge','colorPickerGradientCursorSelected':'gradient-cursor-selected','colorPickerGradientHorizontal':'gradient-horizontal','colorPickerGradientButton':'gradientButton-eBBuwD','colorPickerGradientButtonEnabled':'enabled-MypHME','colorPickerSwatches':'swatches-QxZw_N','colorPickerSwatchesDisabled':'disabled-2JgNxl','colorPickerSwatchSingle':'single-Fbb1wB','colorPickerSwatchSelected':'selected-f5IVXN','confirmModal':'confirmModal-t-WDWJ','dev':'dev-A7f2Rx','favButtonContainer':'favbutton-8Fzu45','guild':'guild-r3yAE_','guildLowerLeftBadge':'lowerLeftBadge-zr4T_9','guildUpperLeftBadge':'upperLeftBadge-e35IpL','hotkeyResetButton':'resetButton-hI9Ax7','hotkeyWrapper':'recorder-can0vx','inputNumberButton':'button-J9muv5','inputNumberButtonDown':'down-cOY7Qp\x20button-J9muv5','inputNumberButtonUp':'up-mUs_72\x20button-J9muv5','inputNumberButtons':'buttons-our3p-','inputNumberWrapper':'numberInputWrapper-j4svZS','inputNumberWrapperDefault':'numberInputWrapperDefault-gRxcuK\x20numberInputWrapper-j4svZS','inputNumberWrapperMini':'numberInputWrapperMini-wtUU31\x20numberInputWrapper-j4svZS','loadingIcon':'loadingIcon-cOYMPl','loadingIconWrapper':'loadingIconWrapper-PsVJ9m','overflowEllipsis':'ellipsis-qlo9sA','popoutWrapper':'popout-xwjvsX','quickSelectWrapper':'quickSelectWrapper-UCfTKz','quickSelectPopoutWrapper':'quickSelectPopout-u2dtIf','modalHeaderHasSibling':'hasSiblings-fRyjyl','modalInnerScrollerLess':'inner-YgPpF3','modalTabContent':'tabContent-nZ-1U5','modalTabContentOpen':'open-yICTYu','modalWrapper':'modal-6GHvdM','noticeWrapper':'noticeWrapper-8z511t','selectWrapper':'selectWrapper-yPjeij','settingsGuild':'guild-J3Egt5','settingsGuildDisabled':'disabled-b2o83O','settingsPanel':'settingsPanel-w2ySNR','settingsPanelInner':'settingsInner-zw1xAY','settingsPanelList':'settingsList-eZjkXj','settingsPanelTitle':'title-GTF_8J','settingsTableCard':'settingsTableCard-628t52','settingsTableCardConfigs':'settingsTableCardConfigs-w5X9-Z','settingsTableCardLabel':'settingsTableCardLabel-MElgIg','settingsTableHeaders':'settingsTableHeaders-WKzw9_','settingsTableHeaderVertical':'headerVertical-4MNxqk','settingsTableList':'settingsTableList-f6sW2y','supporter':'supporter-Z3FfwL','svgIcon':'icon-GhnIRB','table':'table-moqjM0','tableBodyCell':'bodyCell-dQam9V','tableHeader':'header-g67q9_','tableHeaderCell':'headerCell-T6Fo3K','tableHeaderCellSorted':'headerCellSorted-FMjMWK','tableHeaderSortIcon':'sortIcon-WZjMja','tableRow':'row-_9Ehcp','tableStickyHeader':'stickyHeader-JabwjW\x20header-g67q9_','textScroller':'textScroller-dc9_kz','themedPopout':'themedPopout-1TrfdI','tooltipCustom':'tooltipCustom-hH39_Z'};o['BDrepo']={'bdAddonCard':'bd-card\x20bd-addon-card','bdButton':'bd-button','bdaAuthor':'author\x20bda-author','bdaControls':'bd-addon-controls\x20bda-controls','bdaControlsButton':'bd-addon-button','bdaDescription':'bd-addon-description\x20bda-description','bdaDescriptionWrap':'bda-description-wrap','bdaFooter':'bd-card-footer\x20bda-footer','bdaHeader':'bd-addon-header\x20bda-header','bdaHeaderTitle':'bd-card-title\x20bda-header-title','bdaLink':'bda-link','bdaLinks':'bd-addon-links\x20bda-links','bdaName':'name\x20bda-name','bdaSettingsButton':'bda-settings-button','bdaSlist':'bda-slist\x20bd-addon-list','bdaVersion':'version\x20bda-version','bdGuild':'bd-guild','bdGuildAnimatable':'bd-animatable','bdGuildAudio':'bd-audio','bdGuildSelected':'bd-selected','bdGuildSeparator':'bd-guild-separator','bdGuildUnread':'bd-unread','bdGuildVideo':'bd-video','bdIcon':'bd-icon','bdPillSelected':'bd-selected','bdPillUnread':'bd-unread','bdPfbtn':'bd-pfbtn','bdSwitch':'bd-switch','bdSwitchChecked':'bd-switch-checked','bdSwitchInner':'bd-checkbox','bdUpdatebtn':'bd-updatebtn','settingsOpen':'settings-open','settingsClosed':'settings-closed','switch':'ui-switch','switchCheckbox':'ui-switch-checkbox','switchChecked':'checked','switchItem':'ui-switch-item','switchWrapper':'ui-switch-wrapper'};o['BetterNsfwTag']={'nsfwTag':'nsfwTag-666omg'};o['ChatFilter']={'blocked':'blocked-jUhayi','blockedStamp':'blockedStamp-ijVeNn','censored':'censored-UYfeYg','censoredStamp':'censoredStamp-fb2cYb'};o['CharCounter']={'charCounter':'charCounter-7fw40k\x20charcounter','counterAdded':'counterAdded-zz9O4t'};o['DisplayLargeMessages']={'injectButton':'injectButton-8eKqGu'};o['DisplayServersAsChannels']={'badge':'badge-fxFrUP','name':'name-z5133D','styled':'styledGuildsAsChannels-DNHtg_'};o['EmojiStatistics']={'statisticsButton':'statisticsButton-nW2KoM','amountCell':'amountCell-g_W6Rx','iconCell':'iconCell--wniOu','nameCell':'nameCell-xyXENZ'};o['FriendNotifications']={'friendsOnline':'friendsOnline-2JkivW'};o['GoogleTranslateOption']={'reverseButton':'reverseButton-5S47qV','translateButton':'translateButton-DhP9x8','translated':'translated-5YO8i3','translating':'translating-Yi-YxC'};o['ImageGallery']={'details':'details-9dkFPc','detailsLabel':'label-mrlccN','detailsWrapper':'detailsWrapper-TE1mu5','gallery':'gallery-JViwKR','icon':'icon-QY6cR4','next':'next-SHEZrz','previous':'previous-xsNq6B','sibling':'sibling-6vI7Pu'};o['ImageZoom']={'backdrop':'lenseBackdrop-yEm7Om','lense':'zoomLense-uOK8xV','modal':'imageModal-8J0ttB','operations':'operations-3V47CY'};o['OldTitleBar']={'oldTitleBarEnabled':'oldTitleBarEnabled-D8ppJQ','settingsToolbar':'settingsToolbar-wu4yfQ','toolbar':'toolbar-hRzFw-'};o['PinDMs']={'dragPreview':'dragPreview-nXiByA','dmChannelPinned':'pinned-0lM4wD','dmChannelPlaceholder':'placeholder-7bhR5s','pinnedChannelsHeaderAmount':'headerAmount-_-7GrS','pinnedChannelsHeaderArrow':'pinnedChannelsHeaderArrow-44rrTz','pinnedChannelsHeaderCollapsed':'collapsed-3w_-ff','pinnedChannelsHeaderColored':'colored-oIzG5s','pinnedChannelsHeaderContainer':'pinnedChannelsHeaderContainer-89Gjv4','recentPinned':'pinned-jHvFrr','recentPlaceholder':'placeholder-Uff-gH','unpinButton':'unpinButton-z3-UVO','unpinIcon':'unpinIcon-79ZnEr'};o['ReadAllNotificationsButton']={'button':'button-Jt-tIg','frame':'frame-oXWS21','innerFrame':'innerFrame-8Hg64E'};o['ServerFolders']={'dragPreview':'dragPreview-nXiByA','guildPlaceholder':'placeholder-7bhR5s','folderContent':'content-Pph8t6','folderContentClosed':'closed-j55_T-','folderContentIsOpen':'folderContentIsOpen-zz6FgW','iconSwatch':'iconSwatch-_78Ghj','iconSwatchInner':'iconInner-aOY-qk','iconSwatchPreview':'preview-Bbg_24','iconSwatchSelected':'selected-P5oePO'};o['ShowImageDetails']={'details':'details-1t6Zms','detailsAdded':'detailsAdded-SAy48f'};o['SpellCheck']={'error':'error-k9z2IV','overlay':'spellCheckOverlay-cNSap5'};o['TimedLightDarkMode']={'dateGrabber':'dateGrabber-QrRkIX','timerGrabber':'timerGrabber-zpRAIk','timerSettings':'timerSettings-wkvEfF'};o['TopRolesEverywhere']={'badgeStyle':'badgeStyle-tFiEQ8','chatTag':'chatTag-Y-5TDc','memberTag':'memberTag-QVWzGc','roleStyle':'roleStyle-jQ7KI2','tag':'tag-wWVHyf'};o['NotFound']={'_':'','badgeWrapper':'wrapper-232cHJ','channelPanelTitle':'title-eS5yk3','emoji':'emoji','guildChannels':'container-PNkimc','highlight':'highlight','hoverCardButton':'button-2CgfFz','loginScreen':'wrapper-3Q5DdO','mention':'mention','mentionInteractive':'interactive','mentionWrapper':'wrapper-3WhCwL','nameContainerNameContainer':'container-2ax-kl','quickSelectPopoutOptionSelected':'selected','hueCursor':'hue-cursor','hueHorizontal':'hue-horizontal','hueVertical':'hue-vertical','saturationBlack':'saturation-black','saturationColor':'saturation-color','saturationCursor':'saturation-cursor','saturationWhite':'saturation-white','splashBackground':'splashBackground-1FRCko','stopAnimations':'stop-animations','subtext':'subtext-3CDbHg','themeDark':'theme-dark','themeLight':'theme-light','themeUndefined':'theme-undefined','voiceDraggable':'draggable-1KoBzC'};o['AccountDetails']=b['ModuleUtils']['findByProperties']('usernameContainer','container');o['AccountDetailsButtons']=b['ModuleUtils']['findByProperties']('button','enabled','disabled');o['Anchor']=b['ModuleUtils']['findByProperties']('anchor','anchorUnderlineOnHover');o['AnimationContainer']=b['ModuleUtils']['findByProperties']('animatorLeft','didRender');o['AppBase']=b['ModuleUtils']['findByProperties']('container','base');o['AppInner']=b['ModuleUtils']['findByProperties']('app','layers');o['AppMount']=b['ModuleUtils']['findByProperties']('appMount');o['ApplicationStore']=b['ModuleUtils']['findByProperties']('applicationStore','navigation');o['AppOuter']=b['ModuleUtils']['find'](D=>typeof D['app']=='string'&&Object['keys'](D)['length']==0x1);o['AuditLog']=b['ModuleUtils']['findByProperties']('auditLog');o['AuthBox']=b['ModuleUtils']['findByProperties']('authBox');o['Autocomplete']=b['ModuleUtils']['findByProperties']('autocomplete','autocompleteRow');o['Avatar']=b['ModuleUtils']['findByProperties']('avatar','mask','wrapper');o['AvatarIcon']=b['ModuleUtils']['findByProperties']('iconActiveLarge','iconActiveMedium');o['Backdrop']=b['ModuleUtils']['findByProperties']('backdrop','backdropWithLayer');o['Badge']=b['ModuleUtils']['findByProperties']('numberBadge','textBadge','iconBadge');o['BotTag']=b['ModuleUtils']['findByProperties']('botTag','botTagInvert');o['Button']=b['ModuleUtils']['findByProperties']('colorBlack','button');o['CallCurrent']=b['ModuleUtils']['findByProperties']('wrapper','fullScreen');o['CallDetails']=b['ModuleUtils']['findByProperties']('container','hotspot');o['CallIncoming']=b['ModuleUtils']['findByProperties']('incomingCall','container');o['CallIncomingInner']=b['ModuleUtils']['findByProperties']('incomingCallInner','members');o['Card']=b['ModuleUtils']['findByProperties']('card','cardBrand');o['CardStatus']=b['ModuleUtils']['findByProperties']('reset','error','card');o['Category']=b['ModuleUtils']['findByProperties']('wrapper','children','muted');o['CategoryContainer']=b['ModuleUtils']['findByProperties']('addButtonIcon','containerDefault');o['ChangeLog']=b['ModuleUtils']['findByProperties']('added','fixed','improved','progress');o['Channel']=b['ModuleUtils']['findByProperties']('wrapper','content','modeSelected');o['ChannelContainer']=b['ModuleUtils']['findByProperties']('actionIcon','containerDefault');o['ChannelLimit']=b['ModuleUtils']['findByProperties']('users','total','wrapper');o['ChannelTextArea']=b['ModuleUtils']['findByProperties']('textArea','buttons');o['ChannelTextAreaAttachButton']=b['ModuleUtils']['findByProperties']('attachButton','attachWrapper');o['ChannelTextAreaButton']=b['ModuleUtils']['findByProperties']('buttonWrapper','active');o['ChannelTextAreaCharCounter']=b['ModuleUtils']['findByProperties']('characterCount','error');o['ChannelTextAreaSlate']=b['ModuleUtils']['findByProperties']('slateContainer','placeholder');o['ChatWindow']=b['ModuleUtils']['findByProperties']('chat','channelTextArea');o['Checkbox']=b['ModuleUtils']['findByProperties']('checkboxWrapper','round');o['ColorPicker']=b['ModuleUtils']['findByProperties']('colorPickerCustom','customColorPickerInput');o['ColorPickerInner']=b['ModuleUtils']['findByProperties']('saturation','hue','wrapper');o['ContextMenu']=b['ModuleUtils']['findByProperties']('contextMenu','itemGroup');o['ContextMenuCheckbox']=b['ModuleUtils']['findByProperties']('checkboxInner','checkboxElement');o['ContextMenuReactButton']=b['ModuleUtils']['find'](D=>typeof D['wrapper']=='string'&&typeof D['button']=='string'&&typeof D['icon']=='string'&&Object['keys'](D)['length']==0x3);o['CtaVerification']=b['ModuleUtils']['findByProperties']('attendeeCTA','verificationNotice');o['Cursor']=b['ModuleUtils']['findByProperties']('cursorDefault','userSelectNone');o['CustomStatusIcon']=b['ModuleUtils']['findByProperties']('textRuler','emoji','icon');o['DmAddPopout']=b['ModuleUtils']['findByProperties']('popout','searchBarComponent');o['DmAddPopoutItems']=b['ModuleUtils']['findByProperties']('friendSelected','friendWrapper');o['DownloadLink']=b['ModuleUtils']['findByProperties']('downloadLink');o['Embed']=b['ModuleUtils']['findByProperties']('embed','embedAuthorIcon');o['EmbedActions']=b['ModuleUtils']['findByProperties']('iconPlay','iconWrapperActive');o['Emoji']=b['ModuleUtils']['find'](D=>typeof D['emoji']=='string'&&Object['keys'](D)['length']==0x1);o['EmojiButton']=b['ModuleUtils']['findByProperties']('emojiButton','sprite');o['EmojiInput']=b['ModuleUtils']['findByProperties']('inputContainer','emojiButton');o['EmojiPicker']=b['ModuleUtils']['findByProperties']('emojiPicker','categories');o['ExpressionPicker']=b['ModuleUtils']['findByProperties']('contentWrapper','navButton','navList');o['ExpressionEmojiPicker']=b['ModuleUtils']['findByProperties']('emojiPicker','inspector');o['ExpressionEmojiPickerDiversitySelector']=b['ModuleUtils']['findByProperties']('diversityEmojiItemImage','diversitySelectorPopout');o['ExpressionEmojiPickerItem']=b['ModuleUtils']['findByProperties']('emojiItemImage','emojiItemImageLoading');o['ExpressionEmojiPickerInspector']=b['ModuleUtils']['findByProperties']('inspector','glyphEmoji');o['File']=b['ModuleUtils']['findByProperties']('downloadButton','fileNameLink');o['Flex']=b['ModuleUtils']['findByProperties']('alignBaseline','alignCenter');o['FlexChild']=b['ModuleUtils']['findByProperties']('flexChild','flex');o['FlowerStar']=b['ModuleUtils']['findByProperties']('flowerStarContainer','flowerStar');o['FormText']=b['ModuleUtils']['findByProperties']('description','modeDefault');o['Game']=b['ModuleUtils']['findByProperties']('game','gameName');o['GameIcon']=b['ModuleUtils']['findByProperties']('gameIcon','small','xsmall');o['GameLibraryTable']=b['ModuleUtils']['findByProperties']('stickyHeader','emptyStateText');o['GifFavoriteButton']=b['ModuleUtils']['findByProperties']('gifFavoriteButton','showPulse');o['GoLiveDetails']=b['ModuleUtils']['findByProperties']('panel','gameWrapper');o['Guild']=b['ModuleUtils']['findByProperties']('wrapper','lowerBadge','svg');o['GuildChannels']=b['ModuleUtils']['findByProperties']('positionedContainer','unreadBar');o['GuildDiscovery']=b['ModuleUtils']['findByProperties']('pageWrapper','guildCard');o['GuildDm']=b['ModuleUtils']['find'](D=>typeof D['pill']=='string'&&Object['keys'](D)['length']==0x1);o['GuildEdges']=b['ModuleUtils']['findByProperties']('wrapper','edge','autoPointerEvents');o['GuildFolder']=b['ModuleUtils']['findByProperties']('folder','expandedFolderIconWrapper');o['GuildHeader']=b['ModuleUtils']['findByProperties']('header','name','bannerImage');o['GuildHeaderButton']=b['ModuleUtils']['findByProperties']('button','open');o['GuildIcon']=b['ModuleUtils']['findByProperties']('acronym','selected','wrapper');o['GuildInvite']=b['ModuleUtils']['findByProperties']('wrapper','guildIconJoined');o['GuildSettingsBanned']=b['ModuleUtils']['findByProperties']('bannedUser','bannedUserAvatar');o['GuildSettingsEmoji']=b['ModuleUtils']['findByProperties']('emojiRow','emojiAliasPlaceholder');o['GuildSettingsInvite']=b['ModuleUtils']['findByProperties']('countdownColumn','inviteSettingsInviteRow');o['GuildSettingsMember']=b['ModuleUtils']['findByProperties']('member','membersFilterPopout');o['GuildServer']=b['ModuleUtils']['findByProperties']('blobContainer','pill');o['GuildsItems']=b['ModuleUtils']['findByProperties']('guildSeparator','guildsError');o['GuildsWrapper']=b['ModuleUtils']['findByProperties']('scrollerWrap','unreadMentionsBar','wrapper');o['HeaderBar']=b['ModuleUtils']['findByProperties']('container','children','toolbar');o['HeaderBarExtras']=b['ModuleUtils']['findByProperties']('headerBarLoggedOut','search');o['HeaderBarSearch']=b['ModuleUtils']['findByProperties']('search','searchBar','open');o['HeaderBarTopic']=b['ModuleUtils']['findByProperties']('topic','expandable','content');o['HomeIcon']=b['ModuleUtils']['findByProperties']('homeIcon');o['HotKeyRecorder']=b['ModuleUtils']['findByProperties']('editIcon','recording');o['HoverCard']=b['ModuleUtils']['findByProperties']('card','active');o['IconDirection']=b['ModuleUtils']['findByProperties']('directionDown','directionUp');o['ImageWrapper']=b['ModuleUtils']['findByProperties']('clickable','imageWrapperBackground');o['InviteModal']=b['ModuleUtils']['findByProperties']('inviteRow','modal');o['Item']=b['ModuleUtils']['findByProperties']('item','side','header');o['ItemRole']=b['ModuleUtils']['findByProperties']('role','dragged');o['ItemLayerContainer']=b['ModuleUtils']['findByProperties']('layer','layerContainer');o['Input']=b['ModuleUtils']['findByProperties']('inputMini','inputDefault');o['LayerModal']=b['ModuleUtils']['findByProperties']('root','small','medium');o['Layers']=b['ModuleUtils']['findByProperties']('layer','layers');o['LiveTag']=b['ModuleUtils']['findByProperties']('liveLarge','live');o['LoadingScreen']=b['ModuleUtils']['findByProperties']('container','problemsText','problems');o['Margins']=b['ModuleUtils']['findByProperties']('marginBottom4','marginCenterHorz');o['Menu']=b['ModuleUtils']['findByProperties']('menu','styleFlexible','item');o['Member']=b['ModuleUtils']['findByProperties']('member','ownerIcon');o['MembersWrap']=b['ModuleUtils']['findByProperties']('membersWrap','membersGroup');o['Message']=b['ModuleUtils']['findByProperties']('message','mentioned');o['MessageAccessory']=b['ModuleUtils']['findByProperties']('embedWrapper','gifFavoriteButton');o['MessageBlocked']=b['ModuleUtils']['findByProperties']('blockedMessageText','expanded');o['MessageBody']=b['ModuleUtils']['findByProperties']('markupRtl','edited');o['MessageDivider']=b['ModuleUtils']['findByProperties']('isUnread','divider');o['MessageElements']=b['ModuleUtils']['findByProperties']('messageGroupBlockedBtn','dividerRed');o['MessageFile']=b['ModuleUtils']['findByProperties']('cancelButton','filenameLinkWrapper');o['MessageLocalBot']=b['ModuleUtils']['find'](D=>typeof D['localBotMessage']=='string'&&Object['keys'](D)['length']==0x1);o['MessageMarkup']=b['ModuleUtils']['findByProperties']('markup');o['MessageOperations']=b['ModuleUtils']['find'](D=>typeof D['operations']=='string'&&Object['keys'](D)['length']==0x1);o['MessageSystem']=b['ModuleUtils']['findByProperties']('container','actionAnchor');o['MessageToolbar']=b['ModuleUtils']['findByProperties']('container','icon','isHeader');o['MessageToolbarItems']=b['ModuleUtils']['findByProperties']('wrapper','button','separator');o['MessagesPopout']=b['ModuleUtils']['findByProperties']('messagesPopoutWrap','jumpButton');o['MessagesPopoutButtons']=b['ModuleUtils']['findByProperties']('secondary','tertiary','button');o['MessagesPopoutTabBar']=b['ModuleUtils']['findByProperties']('header','tabBar','active');o['MessagesWelcome']=b['ModuleUtils']['findByProperties']('welcomeMessage','h1');o['MessagesWrap']=b['ModuleUtils']['findByProperties']('messagesWrapper','messageGroupBlocked');o['Modal']=b['ModuleUtils']['findByProperties']('modal','sizeLarge');o['ModalDivider']=b['ModuleUtils']['find'](D=>typeof D['divider']=='string'&&Object['keys'](D)['length']==0x1);o['ModalItems']=b['ModuleUtils']['findByProperties']('guildName','checkboxContainer');o['ModalMiniContent']=b['ModuleUtils']['find'](D=>typeof D['modal']=='string'&&typeof D['content']=='string'&&Object['keys'](D)['length']==0x2);o['ModalWrap']=b['ModuleUtils']['find'](D=>typeof D['modal']=='string'&&typeof D['inner']=='string'&&Object['keys'](D)['length']==0x2);o['NameContainer']=o['ContextMenu']['subMenuContext']?b['ModuleUtils']['findByProperties']('nameAndDecorators','name'):{};o['NameTag']=b['ModuleUtils']['findByProperties']('bot','nameTag');o['NitroStore']=b['ModuleUtils']['findByProperties']('applicationStore','marketingHeader');o['Note']=b['ModuleUtils']['find'](D=>typeof D['note']=='string'&&Object['keys'](D)['length']==0x1);o['Notice']=b['ModuleUtils']['findByProperties']('notice','noticeFacebook');o['Peoples']=b['ModuleUtils']['findByProperties']('peopleColumn','tabBar');o['PictureInPicture']=b['ModuleUtils']['findByProperties']('pictureInPicture','pictureInPictureWindow');o['PillWrapper']=b['ModuleUtils']['find'](D=>typeof D['item']=='string'&&typeof D['wrapper']=='string'&&Object['keys'](D)['length']==0x2);o['PrivateChannel']=b['ModuleUtils']['findByProperties']('channel','closeButton');o['PrivateChannelList']=b['ModuleUtils']['findByProperties']('privateChannels','searchBar');o['PrivateChannelListScroller']=b['ModuleUtils']['findByProperties']('scroller','empty');o['Popout']=b['ModuleUtils']['findByProperties']('popout','arrowAlignmentTop');o['PopoutActivity']=b['ModuleUtils']['findByProperties']('ellipsis','activityActivityFeed');o['QuickMessage']=b['ModuleUtils']['findByProperties']('quickMessage','isBlocked');o['QuickSelect']=b['ModuleUtils']['findByProperties']('quickSelectArrow','selected');o['QuickSwitch']=b['ModuleUtils']['findByProperties']('resultFocused','guildIconContainer');o['QuickSwitchWrap']=b['ModuleUtils']['findByProperties']('container','miscContainer');o['Reactions']=b['ModuleUtils']['findByProperties']('reactionBtn','reaction');o['RecentMentions']=b['ModuleUtils']['findByProperties']('recentMentionsPopout');o['Role']=b['ModuleUtils']['findByProperties']('roleCircle','roleName','roleRemoveIcon');o['Scrollbar']=b['ModuleUtils']['findByProperties']('scrollbar','scrollbarGhost');o['Scroller']=b['ModuleUtils']['findByProperties']('scrollerThemed','scroller');o['SearchBar']=b['ModuleUtils']['findByProperties']('clear','container','pointer');o['SearchPopout']=b['ModuleUtils']['findByProperties']('datePicker','searchResultChannelIconBackground');o['SearchPopoutWrap']=b['ModuleUtils']['findByProperties']('container','queryContainer');o['SearchResults']=b['ModuleUtils']['findByProperties']('messageGroupCozy','searchResultsWrap');o['Select']=b['ModuleUtils']['findByProperties']('select','error','errorMessage');o['SettingsCloseButton']=b['ModuleUtils']['findByProperties']('closeButton','keybind');o['SettingsItems']=b['ModuleUtils']['findByProperties']('dividerMini','note');o['SettingsTable']=b['ModuleUtils']['findByProperties']('headerOption','headerName');o['SettingsWindow']=b['ModuleUtils']['findByProperties']('contentRegion','standardSidebarView');o['Slider']=b['ModuleUtils']['findByProperties']('slider','grabber');o['Spoiler']=b['ModuleUtils']['findByProperties']('spoilerContainer','hidden');o['SpoilerEmbed']=b['ModuleUtils']['findByProperties']('hiddenSpoilers','spoiler');o['Switch']=b['ModuleUtils']['findByProperties']('switchDisabled','valueChecked');o['Table']=b['ModuleUtils']['findByProperties']('stickyHeader','sortIcon');o['Text']=b['ModuleUtils']['findByProperties']('defaultColor','defaultMarginh1');o['TextColor']=b['ModuleUtils']['findByProperties']('colorStandard','colorMuted','colorError');o['TextColor2']=b['ModuleUtils']['findByProperties']('muted','wrapper','base');o['TextSize']=b['ModuleUtils']['findByProperties']('size10','size14','size20');o['TextStyle']=b['ModuleUtils']['findByProperties']('strikethrough','underline','bold');o['Tip']=b['ModuleUtils']['findByProperties']('pro','inline');o['Title']=b['ModuleUtils']['findByProperties']('title','size18');o['TitleBar']=b['ModuleUtils']['findByProperties']('titleBar','wordmark');o['Tooltip']=b['ModuleUtils']['findByProperties']('tooltip','tooltipTop');o['TooltipGuild']=b['ModuleUtils']['findByProperties']('rowIcon','rowGuildName');o['Typing']=b['ModuleUtils']['findByProperties']('cooldownWrapper','typing');o['UnreadBar']=b['ModuleUtils']['findByProperties']('active','bar','unread');o['UploadModal']=b['ModuleUtils']['findByProperties']('uploadModal','bgScale');o['UserInfo']=b['ModuleUtils']['findByProperties']('userInfo','discordTag');o['UserPopout']=b['ModuleUtils']['findByProperties']('userPopout','headerPlaying');o['UserProfile']=b['ModuleUtils']['findByProperties']('topSectionNormal','tabBarContainer');o['Video']=b['ModuleUtils']['findByProperties']('video','fullScreen');o['VoiceChannel']=b['ModuleUtils']['findByProperties']('avatarSpeaking','voiceUser');o['VoiceChannelList']=b['ModuleUtils']['findByProperties']('list','collapsed');o['VoiceDetails']=b['ModuleUtils']['findByProperties']('container','customStatusContainer');o['VoiceDetailsPing']=b['ModuleUtils']['findByProperties']('rtcConnectionQualityBad','rtcConnectionQualityFine');b['DiscordClassModules']=Object['assign']({},o);var p={'_bdguild':['BDrepo','bdGuild'],'_bdguildanimatable':['BDrepo','bdGuildAnimatable'],'_bdguildaudio':['BDrepo','bdGuildAudio'],'_bdguildselected':['BDrepo','bdGuildSelected'],'_bdguildseparator':['BDrepo','bdGuildSeparator'],'_bdguildunread':['BDrepo','bdGuildUnread'],'_bdguildvideo':['BDrepo','bdGuildVideo'],'_bdpillselected':['BDrepo','bdPillSelected'],'_bdpillunread':['BDrepo','bdPillUnread'],'_betternsfwtagtag':['BetterNsfwTag','nsfwTag'],'_chatfilterblocked':['ChatFilter','blocked'],'_chatfilterblockedstamp':['ChatFilter','blockedStamp'],'_chatfiltercensored':['ChatFilter','censored'],'_chatfiltercensoredstamp':['ChatFilter','censoredStamp'],'_charcountercounter':['CharCounter','charCounter'],'_charcountercounteradded':['CharCounter','counterAdded'],'_displaylargemessagesinjectbutton':['DisplayLargeMessages','injectButton'],'_displayserversaschannelsbadge':['DisplayServersAsChannels','badge'],'_displayserversaschannelsname':['DisplayServersAsChannels','name'],'_displayserversaschannelsstyled':['DisplayServersAsChannels','styled'],'_emojistatisticsstatisticsbutton':['EmojiStatistics','statisticsButton'],'_emojistatisticsamountcell':['EmojiStatistics','amountCell'],'_emojistatisticsiconcell':['EmojiStatistics','iconCell'],'_emojistatisticsnamecell':['EmojiStatistics','nameCell'],'_imagegallerydetails':['ImageGallery','details'],'_imagegallerydetailslabel':['ImageGallery','detailsLabel'],'_imagegallerydetailswrapper':['ImageGallery','detailsWrapper'],'_imagegallerygallery':['ImageGallery','gallery'],'_imagegalleryicon':['ImageGallery','icon'],'_imagegallerynext':['ImageGallery','next'],'_imagegalleryprevious':['ImageGallery','previous'],'_imagegallerysibling':['ImageGallery','sibling'],'_imagezoombackdrop':['ImageZoom','backdrop'],'_imagezoomimagemodal':['ImageZoom','modal'],'_imagezoomlense':['ImageZoom','lense'],'_imagezoomoperations':['ImageZoom','operations'],'_friendnotificationsfriendsonline':['FriendNotifications','friendsOnline'],'_googletranslateoptionreversebutton':['GoogleTranslateOption','reverseButton'],'_googletranslateoptiontranslatebutton':['GoogleTranslateOption','translateButton'],'_googletranslateoptiontranslated':['GoogleTranslateOption','translated'],'_googletranslateoptiontranslating':['GoogleTranslateOption','translating'],'_oldtitlebarenabled':['OldTitleBar','oldTitleBarEnabled'],'_oldtitlebarsettingstoolbar':['OldTitleBar','settingsToolbar'],'_oldtitlebartoolbar':['OldTitleBar','toolbar'],'_pindmsdragpreview':['PinDMs','dragPreview'],'_pindmsdmchannelpinned':['PinDMs','dmChannelPinned'],'_pindmsdmchannelplaceholder':['PinDMs','dmChannelPlaceholder'],'_pindmspinnedchannelsheaderamount':['PinDMs','pinnedChannelsHeaderAmount'],'_pindmspinnedchannelsheaderarrow':['PinDMs','pinnedChannelsHeaderArrow'],'_pindmspinnedchannelsheadercollapsed':['PinDMs','pinnedChannelsHeaderCollapsed'],'_pindmspinnedchannelsheadercolored':['PinDMs','pinnedChannelsHeaderColored'],'_pindmspinnedchannelsheadercontainer':['PinDMs','pinnedChannelsHeaderContainer'],'_pindmsrecentpinned':['PinDMs','recentPinned'],'_pindmsrecentplaceholder':['PinDMs','recentPlaceholder'],'_pindmsunpinbutton':['PinDMs','unpinButton'],'_pindmsunpinicon':['PinDMs','unpinIcon'],'_readallnotificationsbuttonbutton':['ReadAllNotificationsButton','button'],'_readallnotificationsbuttonframe':['ReadAllNotificationsButton','frame'],'_readallnotificationsbuttoninner':['ReadAllNotificationsButton','innerFrame'],'_serverfoldersdragpreview':['ServerFolders','dragPreview'],'_serverfoldersfoldercontent':['ServerFolders','folderContent'],'_serverfoldersfoldercontentclosed':['ServerFolders','folderContentClosed'],'_serverfoldersfoldercontentisopen':['ServerFolders','folderContentIsOpen'],'_serverfoldersguildplaceholder':['ServerFolders','guildPlaceholder'],'_serverfoldersiconswatch':['ServerFolders','iconSwatch'],'_serverfoldersiconswatchinner':['ServerFolders','iconSwatchInner'],'_serverfoldersiconswatchpreview':['ServerFolders','iconSwatchPreview'],'_serverfoldersiconswatchselected':['ServerFolders','iconSwatchSelected'],'_showimagedetailsdetails':['ShowImageDetails','details'],'_spellcheckerror':['SpellCheck','error'],'_spellcheckoverlay':['SpellCheck','overlay'],'_timedlightdarkmodedategrabber':['TimedLightDarkMode','dateGrabber'],'_timedlightdarkmodetimergrabber':['TimedLightDarkMode','timerGrabber'],'_timedlightdarkmodetimersettings':['TimedLightDarkMode','timerSettings'],'_toproleseverywherebadgestyle':['TopRolesEverywhere','badgeStyle'],'_toproleseverywherechattag':['TopRolesEverywhere','chatTag'],'_toproleseverywheremembertag':['TopRolesEverywhere','memberTag'],'_toproleseverywhererolestyle':['TopRolesEverywhere','roleStyle'],'_toproleseverywheretag':['TopRolesEverywhere','tag'],'_repoauthor':['BDrepo','bdaAuthor'],'_repobutton':['BDrepo','bdButton'],'_repocard':['BDrepo','bdAddonCard'],'_repocheckbox':['BDrepo','switchCheckbox'],'_repocheckboxchecked':['BDrepo','switchChecked'],'_repocheckboxinner':['BDrepo','switch'],'_repocheckboxitem':['BDrepo','switchItem'],'_repocheckboxwrap':['BDrepo','switchWrapper'],'_repocontrols':['BDrepo','bdaControls'],'_repocontrolsbutton':['BDrepo','bdaControlsButton'],'_repodescription':['BDrepo','bdaDescription'],'_repodescriptionwrap':['BDrepo','bdaDescriptionWrap'],'_repoentry':['BDFDB','bdaRepoEntry'],'_repofolderbutton':['BDrepo','bdPfbtn'],'_repofooter':['BDrepo','bdaFooter'],'_repoheader':['BDrepo','bdaHeader'],'_repoheadertitle':['BDrepo','bdaHeaderTitle'],'_repoicon':['BDrepo','bdIcon'],'_repolist':['BDrepo','bdaSlist'],'_repolink':['BDrepo','bdaLink'],'_repolinks':['BDrepo','bdaLinks'],'_reponame':['BDrepo','bdaName'],'_reposettingsbutton':['BDrepo','bdaSettingsButton'],'_reposettingsopen':['BDrepo','settingsOpen'],'_reposettingsclosed':['BDrepo','settingsClosed'],'_reposwitch':['BDrepo','bdSwitch'],'_reposwitchchecked':['BDrepo','bdSwitchChecked'],'_reposwitchinner':['BDrepo','bdSwitchInner'],'_repoupdatebutton':['BDrepo','bdUpdatebtn'],'_repoversion':['BDrepo','bdaVersion'],'accountinfo':['AccountDetails','container'],'accountinfoavatar':['AccountDetails','avatar'],'accountinfoavatarwrapper':['AccountDetails','avatarWrapper'],'accountinfobutton':['AccountDetailsButtons','button'],'accountinfobuttondisabled':['AccountDetailsButtons','disabled'],'accountinfobuttonenabled':['AccountDetailsButtons','enabled'],'accountinfodetails':['AccountDetails','usernameContainer'],'accountinfonametag':['AccountDetails','nameTag'],'alignbaseline':['Flex','alignBaseline'],'aligncenter':['Flex','alignCenter'],'alignend':['Flex','alignEnd'],'alignstart':['Flex','alignStart'],'alignstretch':['Flex','alignStretch'],'anchor':['Anchor','anchor'],'anchorunderlineonhover':['Anchor','anchorUnderlineOnHover'],'animationcontainerbottom':['AnimationContainer','animatorBottom'],'animationcontainerleft':['AnimationContainer','animatorLeft'],'animationcontainerright':['AnimationContainer','animatorRight'],'animationcontainertop':['AnimationContainer','animatorTop'],'animationcontainerrender':['AnimationContainer','didRender'],'animationcontainerscale':['AnimationContainer','scale'],'animationcontainertranslate':['AnimationContainer','translate'],'app':['AppOuter','app'],'appcontainer':['AppBase','container'],'appmount':['AppMount','appMount'],'applayers':['AppInner','layers'],'applicationstore':['ApplicationStore','applicationStore'],'appold':['AppInner','app'],'auditlog':['AuditLog','auditLog'],'auditlogoverflowellipsis':['AuditLog','overflowEllipsis'],'auditloguserhook':['AuditLog','userHook'],'authbox':['AuthBox','authBox'],'autocomplete':['Autocomplete','autocomplete'],'autocompletecontent':['Autocomplete','content'],'autocompletecontenttitle':['Autocomplete','contentTitle'],'autocompletedescription':['Autocomplete','description'],'autocompletedescriptiondiscriminator':['Autocomplete','descriptionDiscriminator'],'autocompletedescriptionusername':['Autocomplete','descriptionUsername'],'autocompleteicon':['Autocomplete','icon'],'autocompleteiconforeground':['Autocomplete','iconForeground'],'autocompleteinner':['Autocomplete','autocompleteInner'],'autocompleterow':['Autocomplete','autocompleteRow'],'autocompleterowhorizontal':['Autocomplete','autocompleteRowHorizontal'],'autocompleterowvertical':['Autocomplete','autocompleteRowVertical'],'autocompleteselectable':['Autocomplete','selectable'],'autocompleteselected':['Autocomplete','selectorSelected'],'autocompleteselector':['Autocomplete','selector'],'avatar':['Avatar','avatar'],'avatarcursordefault':['Avatar','cursorDefault'],'avataricon':['AvatarIcon','icon'],'avatariconactivelarge':['AvatarIcon','iconActiveLarge'],'avatariconactivemedium':['AvatarIcon','iconActiveMedium'],'avatariconactivemini':['AvatarIcon','iconActiveMini'],'avatariconactivesmall':['AvatarIcon','iconActiveSmall'],'avatariconactivexlarge':['AvatarIcon','iconActiveXLarge'],'avatariconinactive':['AvatarIcon','iconInactive'],'avatariconsizelarge':['AvatarIcon','iconSizeLarge'],'avatariconsizemedium':['AvatarIcon','iconSizeMedium'],'avatariconsizemini':['AvatarIcon','iconSizeMini'],'avatariconsizesmol':['AvatarIcon','iconSizeSmol'],'avatariconsizesmall':['AvatarIcon','iconSizeSmall'],'avatariconsizexlarge':['AvatarIcon','iconSizeXLarge'],'avatarmask':['Avatar','mask'],'avatarnoicon':['AvatarIcon','noIcon'],'avatarpointer':['Avatar','pointer'],'avatarpointerevents':['Avatar','pointerEvents'],'avatarstatushovered':['BDFDB','avatarStatusHovered'],'avatarwrapper':['Avatar','wrapper'],'backdrop':['Backdrop','backdrop'],'backdropwithlayer':['Backdrop','backdropWithLayer'],'badgebase':['Badge','base'],'badgeicon':['Badge','icon'],'badgeiconbadge':['Badge','iconBadge'],'badgenumberbadge':['Badge','numberBadge'],'badgetextbadge':['Badge','textBadge'],'badgewrapper':['NotFound','badgeWrapper'],'bdfdbbadge':['BDFDB','badge'],'bdfdbdev':['BDFDB','dev'],'bdfdbsupporter':['BDFDB','supporter'],'bold':['TextStyle','bold'],'bottag':['BotTag','botTag'],'bottaginvert':['BotTag','botTagInvert'],'bottagmember':['Member','botTag'],'bottagnametag':['NameTag','bot'],'bottagpx':['BotTag','px'],'bottagregular':['BotTag','botTagRegular'],'bottagrem':['BotTag','rem'],'bottagtext':['BotTag','botText'],'bottagverified':['BotTag','botTagVerified'],'button':['Button','button'],'buttoncolorblack':['Button','colorBlack'],'buttoncolorbrand':['Button','colorBrand'],'buttoncolorgreen':['Button','colorGreen'],'buttoncolorgrey':['Button','colorGrey'],'buttoncolorlink':['Button','colorLink'],'buttoncolorprimary':['Button','colorPrimary'],'buttoncolorred':['Button','colorRed'],'buttoncolortransparent':['Button','colorTransparent'],'buttoncolorwhite':['Button','colorWhite'],'buttoncoloryellow':['Button','colorYellow'],'buttoncontents':['Button','contents'],'buttondisabledoverlay':['Button','disabledButtonOverlay'],'buttondisabledwrapper':['Button','disabledButtonWrapper'],'buttonfullwidth':['Button','fullWidth'],'buttongrow':['Button','grow'],'buttonhashover':['Button','hasHover'],'buttonhoverblack':['Button','hoverBlack'],'buttonhoverbrand':['Button','hoverBrand'],'buttonhovergreen':['Button','hoverGreen'],'buttonhovergrey':['Button','hoverGrey'],'buttonhoverlink':['Button','hoverLink'],'buttonhoverprimary':['Button','hoverPrimary'],'buttonhoverred':['Button','hoverRed'],'buttonhovertransparent':['Button','hoverTransparent'],'buttonhoverwhite':['Button','hoverWhite'],'buttonhoveryellow':['Button','hoverYellow'],'buttonlookblank':['Button','lookBlank'],'buttonlookfilled':['Button','lookFilled'],'buttonlookghost':['Button','lookGhost'],'buttonlookinverted':['Button','lookInverted'],'buttonlooklink':['Button','lookLink'],'buttonlookoutlined':['Button','lookOutlined'],'buttonsizeicon':['Button','sizeIcon'],'buttonsizelarge':['Button','sizeLarge'],'buttonsizemax':['Button','sizeMax'],'buttonsizemedium':['Button','sizeMedium'],'buttonsizemin':['Button','sizeMin'],'buttonsizesmall':['Button','sizeSmall'],'buttonsizexlarge':['Button','sizeXlarge'],'buttonspinner':['Button','spinner'],'buttonspinneritem':['Button','spinnerItem'],'buttonsubmitting':['Button','submitting'],'callcurrentcontainer':['CallCurrent','wrapper'],'callcurrentdetails':['CallDetails','container'],'callcurrentvideo':['Video','video'],'callincoming':['CallIncoming','incomingCall'],'callincomingcontainer':['CallIncoming','container'],'callincominginner':['CallIncomingInner','incomingCallInner'],'callmembers':['CallIncomingInner','members'],'card':['Card','card'],'cardbrand':['Card','cardBrand'],'cardbrandoutline':['Card','cardBrandOutline'],'carddanger':['Card','cardDanger'],'carddangeroutline':['Card','cardDangerOutline'],'carderror':['CardStatus','error'],'cardprimary':['Card','cardPrimary'],'cardprimaryeditable':['Card','cardPrimaryEditable'],'cardprimaryoutline':['Card','cardPrimaryOutline'],'cardprimaryoutlineeditable':['Card','cardPrimaryOutlineEditable'],'cardreset':['CardStatus','reset'],'cardsuccess':['Card','cardSuccess'],'cardsuccessoutline':['Card','cardSuccessOutline'],'cardwarning':['Card','cardWarning'],'cardwarningoutline':['Card','cardWarningOutline'],'categoryaddbutton':['CategoryContainer','addButton'],'categoryaddbuttonicon':['CategoryContainer','addButtonIcon'],'categorychildren':['Category','children'],'categoryclickable':['Category','clickable'],'categorycollapsed':['Category','collapsed'],'categorycontainerdefault':['CategoryContainer','containerDefault'],'categoryforcevisible':['CategoryContainer','forceVisible'],'categoryicon':['Category','icon'],'categoryiconvisibility':['CategoryContainer','iconVisibility'],'categorymuted':['Category','muted'],'categoryname':['Category','name'],'categorywrapper':['Category','wrapper'],'changelogadded':['ChangeLog','added'],'changelogcontainer':['ChangeLog','container'],'changelogfixed':['ChangeLog','fixed'],'changelogimproved':['ChangeLog','improved'],'changelogprogress':['ChangeLog','added'],'changelogtitle':['ChangeLog','title'],'channelactionicon':['ChannelContainer','actionIcon'],'channelchildicon':['ChannelContainer','iconItem'],'channelchildiconbase':['ChannelContainer','iconBase'],'channelchildren':['Channel','children'],'channelcontainerdefault':['ChannelContainer','containerDefault'],'channelcontent':['Channel','content'],'channeldisabled':['ChannelContainer','disabled'],'channelheaderchannelname':['ChatWindow','channelName'],'channelheaderchildren':['HeaderBar','children'],'channelheaderdivider':['HeaderBar','divider'],'channelheaderheaderbar':['HeaderBar','container'],'channelheaderheaderbarthemed':['HeaderBar','themed'],'channelheaderheaderbartitle':['HeaderBar','title'],'channelheadericon':['HeaderBar','icon'],'channelheadericonbadge':['HeaderBar','iconBadge'],'channelheadericonclickable':['HeaderBar','clickable'],'channelheadericonselected':['HeaderBar','selected'],'channelheadericonwrapper':['HeaderBar','iconWrapper'],'channelheadertitle':['ChatWindow','title'],'channelheadertitlewrapper':['ChatWindow','titleWrapper'],'channelheadersearch':['HeaderBarExtras','search'],'channelheadersearchbar':['HeaderBarSearch','searchBar'],'channelheadersearchicon':['HeaderBarSearch','icon'],'channelheadersearchinner':['HeaderBarSearch','search'],'channelheadertoolbar':['HeaderBar','toolbar'],'channelheadertoolbar2':['HeaderBarExtras','toolbar'],'channelheadertopic':['HeaderBarTopic','topic'],'channelheadertopicexpandable':['HeaderBarTopic','expandable'],'channelicon':['Channel','icon'],'channeliconvisibility':['ChannelContainer','iconVisibility'],'channelmentionsbadge':['ChannelContainer','mentionsBadge'],'channelmodeconnected':['Channel','modeConnected'],'channelmodelocked':['Channel','modeLocked'],'channelmodemuted':['Channel','modeMuted'],'channelmodeselected':['Channel','modeSelected'],'channelmodeunread':['Channel','modeUnread'],'channelname':['Channel','name'],'channelpanel':['AppBase','activityPanel'],'channelpaneltitle':['NotFound','channelPanelTitle'],'channelpanels':['AppBase','panels'],'channels':['AppBase','sidebar'],'channelselected':['ChannelContainer','selected'],'channelsscroller':['GuildChannels','scroller'],'channelsunreadbar':['GuildChannels','unreadBar'],'channelsunreadbarcontainer':['GuildChannels','positionedContainer'],'channelsunreadbarbottom':['GuildChannels','unreadBottom'],'channelsunreadbarunread':['GuildChannels','unread'],'channelsunreadbartop':['GuildChannels','unreadTop'],'channelunread':['Channel','unread'],'channeluserlimit':['ChannelLimit','wrapper'],'channeluserlimitcontainer':['ChannelContainer','userLimit'],'channeluserlimittotal':['ChannelLimit','total'],'channeluserlimitusers':['ChannelLimit','users'],'channelwrapper':['Channel','wrapper'],'charcounter':['BDFDB','charCounter'],'chat':['ChatWindow','chat'],'chatbase':['AppBase','base'],'chatcontent':['ChatWindow','chatContent'],'chatform':['ChatWindow','form'],'chatinner':['ChatWindow','content'],'chatspacer':['AppBase','content'],'checkbox':['Checkbox','checkbox'],'checkboxchecked':['Checkbox','checked'],'checkboxcontainer':['ModalItems','checkboxContainer'],'checkboxinput':['Checkbox','input'],'checkboxinputdefault':['Checkbox','inputDefault'],'checkboxinputdisabled':['Checkbox','inputDisabled'],'checkboxround':['Checkbox','round'],'checkboxwrapper':['Checkbox','checkboxWrapper'],'checkboxwrapperdisabled':['Checkbox','checkboxWrapperDisabled'],'collapsecontainer':['BDFDB','collapseContainer'],'collapsecontainerarrow':['BDFDB','collapseContainerArrow'],'collapsecontainercollapsed':['BDFDB','collapseContainerCollapsed'],'collapsecontainerheader':['BDFDB','collapseContainerHeader'],'collapsecontainerinner':['BDFDB','collapseContainerInner'],'collapsecontainermini':['BDFDB','collapseContainerMini'],'collapsecontainertitle':['BDFDB','collapseContainerTitle'],'colorbase':['TextColor2','base'],'colorbrand':['TextColor','colorBrand'],'colorerror':['TextColor','colorError'],'colormuted':['TextColor','colorMuted'],'colorgreen':['TextColor','colorStatusGreen'],'colorpicker':['ColorPicker','colorPickerCustom'],'colorpickeralpha':['BDFDB','colorPickerAlpha'],'colorpickeralphacheckered':['BDFDB','colorPickerAlphaCheckered'],'colorpickeralphacursor':['BDFDB','colorPickerAlphaCursor'],'colorpickeralphahorizontal':['BDFDB','colorPickerAlphaHorizontal'],'colorpickergradient':['BDFDB','colorPickerGradient'],'colorpickergradientbutton':['BDFDB','colorPickerGradientButton'],'colorpickergradientbuttonenabled':['BDFDB','colorPickerGradientButtonEnabled'],'colorpickergradientcheckered':['BDFDB','colorPickerGradientCheckered'],'colorpickergradientcursor':['BDFDB','colorPickerGradientCursor'],'colorpickergradientcursoredge':['BDFDB','colorPickerGradientCursorEdge'],'colorpickergradientcursorselected':['BDFDB','colorPickerGradientCursorSelected'],'colorpickergradienthorizontal':['BDFDB','colorPickerGradientHorizontal'],'colorpickerhexinput':['ColorPicker','customColorPickerInput'],'colorpickerhue':['ColorPickerInner','hue'],'colorpickerhuecursor':['NotFound','hueCursor'],'colorpickerhuehorizontal':['NotFound','hueHorizontal'],'colorpickerhuevertical':['NotFound','hueVertical'],'colorpickerinner':['ColorPickerInner','wrapper'],'colorpickerrow':['ColorPicker','colorPickerRow'],'colorpickersaturation':['ColorPickerInner','saturation'],'colorpickersaturationblack':['NotFound','saturationBlack'],'colorpickersaturationcolor':['NotFound','saturationColor'],'colorpickersaturationcursor':['NotFound','saturationCursor'],'colorpickersaturationwhite':['NotFound','saturationWhite'],'colorpickerswatch':['ColorPicker','colorPickerSwatch'],'colorpickerswatches':['BDFDB','colorPickerSwatches'],'colorpickerswatchesdisabled':['BDFDB','colorPickerSwatchesDisabled'],'colorpickerswatchcustom':['ColorPicker','custom'],'colorpickerswatchdefault':['ColorPicker','default'],'colorpickerswatchdisabled':['ColorPicker','disabled'],'colorpickerswatchdropper':['ColorPicker','colorPickerDropper'],'colorpickerswatchdropperfg':['ColorPicker','colorPickerDropperFg'],'colorpickerswatchnocolor':['ColorPicker','noColor'],'colorpickerswatchselected':['BDFDB','colorPickerSwatchSelected'],'colorpickerswatchsingle':['BDFDB','colorPickerSwatchSingle'],'colorpickerwrapper':['BDFDB','colorPicker'],'colorprimary':['TextColor','colorHeaderPrimary'],'colorred':['TextColor','colorStatusRed'],'colorsecondary':['TextColor','colorHeaderSecondary'],'colorselectable':['TextColor','selectable'],'colorstandard':['TextColor','colorStandard'],'coloryellow':['TextColor','colorStatusYellow'],'contentcolumn':['SettingsWindow','contentColumn'],'contentregion':['SettingsWindow','contentRegion'],'contextmenu':['ContextMenu','contextMenu'],'contextmenucheckbox':['ContextMenuCheckbox','checkbox'],'contextmenucheckbox2':['ContextMenu','checkbox'],'contextmenucheckboxdisabled':['ContextMenuCheckbox','disabled'],'contextmenucheckboxinner':['ContextMenuCheckbox','checkboxInner'],'contextmenucheckboxelement':['ContextMenuCheckbox','checkboxElement'],'contextmenuhint':['ContextMenu','hint'],'contextmenuimage':['ContextMenu','image'],'contextmenuitem':['ContextMenu','item'],'contextmenuitembrand':['ContextMenu','brand'],'contextmenuitemclickable':['ContextMenu','clickable'],'contextmenuitemdanger':['ContextMenu','danger'],'contextmenuitemdisabled':['ContextMenu','disabled'],'contextmenuitemgroup':['ContextMenu','itemGroup'],'contextmenuitemtoggle':['ContextMenu','itemToggle'],'contextmenuitemselected':['ContextMenu','selected'],'contextmenuitemslider':['ContextMenu','itemSlider'],'contextmenuitemsubmenu':['ContextMenu','itemSubMenu'],'contextmenuitemsubmenucaret':['ContextMenu','caret'],'contextmenulabel':['ContextMenu','label'],'contextmenureactbutton':['ContextMenuReactButton','button'],'contextmenureactbuttonicon':['ContextMenuReactButton','icon'],'contextmenureactbuttons':['ContextMenuReactButton','wrapper'],'contextmenuscroller':['ContextMenu','scroller'],'contextmenuslider':['ContextMenu','slider'],'contextmenusubcontext':['ContextMenu','subMenuContext'],'cursordefault':['Cursor','cursorDefault'],'cursorpointer':['Cursor','cursorPointer'],'customstatusemoji':['CustomStatusIcon','emoji'],'customstatusicon':['CustomStatusIcon','icon'],'defaultcolor':['Text','defaultColor'],'description':['FormText','description'],'directioncolumn':['Flex','directionColumn'],'directiondown':['IconDirection','directionDown'],'directionleft':['IconDirection','directionLeft'],'directionright':['IconDirection','directionRight'],'directionrow':['Flex','directionRow'],'directionrowreverse':['Flex','directionRowReverse'],'directionup':['IconDirection','directionUp'],'directiontransition':['IconDirection','transition'],'disabled':['SettingsItems','disabled'],'discriminator':['NameTag','discriminator'],'divider':['ModalDivider','divider'],'dividerdefault':['SettingsItems','dividerDefault'],'dividermini':['SettingsItems','dividerMini'],'dmchannel':['PrivateChannel','channel'],'dmchannelactivity':['PrivateChannel','activity'],'dmchannelactivityemoji':['PrivateChannel','activityEmoji'],'dmchannelactivitytext':['PrivateChannel','activityText'],'dmchannelclose':['PrivateChannel','closeButton'],'dmchannelheadercontainer':['PrivateChannelListScroller','privateChannelsHeaderContainer'],'dmchannelheadertext':['PrivateChannelListScroller','headerText'],'dmchannels':['PrivateChannelList','privateChannels'],'dmchannelsempty':['PrivateChannelListScroller','empty'],'dmchannelsscroller':['PrivateChannelListScroller','scroller'],'dmpill':['GuildDm','pill'],'downloadlink':['DownloadLink','downloadLink'],'ellipsis':['PopoutActivity','ellipsis'],'embed':['Embed','embed'],'embedauthor':['Embed','embedAuthor'],'embedauthoricon':['Embed','embedAuthorIcon'],'embedauthorname':['Embed','embedAuthorName'],'embedauthornamelink':['Embed','embedAuthorNameLink'],'embedcentercontent':['Embed','centerContent'],'embeddescription':['Embed','embedDescription'],'embedfield':['Embed','embedField'],'embedfieldname':['Embed','embedFieldName'],'embedfields':['Embed','embedFields'],'embedfieldvalue':['Embed','embedFieldValue'],'embedfooter':['Embed','embedFooter'],'embedfootericon':['Embed','embedFooterIcon'],'embedfooterseparator':['Embed','embedFooterSeparator'],'embedfootertext':['Embed','embedFooterText'],'embedfull':['Embed','embedFull'],'embedgiftag':['Embed','embedGIFTag'],'embedgrid':['Embed','grid'],'embedhasthumbnail':['Embed','hasThumbnail'],'embedhiddenspoiler':['Embed','hiddenSpoiler'],'embediframe':['Embed','embedIframe'],'embedimage':['Embed','embedImage'],'embedlink':['Embed','embedLink'],'embedmargin':['Embed','embedMargin'],'embedmedia':['Embed','embedMedia'],'embedprovider':['Embed','embedProvider'],'embedspoilerattachment':['Embed','spoilerAttachment'],'embedspoilerembed':['Embed','spoilerEmbed'],'embedspotify':['Embed','embedSpotify'],'embedthumbnail':['Embed','embedThumbnail'],'embedtitle':['Embed','embedTitle'],'embedtitlelink':['Embed','embedTitleLink'],'embedvideo':['Embed','embedVideo'],'embedvideoaction':['Embed','embedVideoAction'],'embedvideoactions':['Embed','embedVideoActions'],'embedvideoimagecomponent':['Embed','embedVideoImageComponent'],'embedvideoimagecomponentinner':['Embed','embedVideoImageComponentInner'],'embedwrapper':['MessageAccessory','embedWrapper'],'emoji':['Emoji','emoji'],'emojiold':['NotFound','emoji'],'emojibutton':['EmojiButton','emojiButton'],'emojibuttonhovered':['EmojiButton','emojiButtonHovered'],'emojibuttonnormal':['EmojiButton','emojiButtonNormal'],'emojibuttonsprite':['EmojiButton','sprite'],'emojiinput':['EmojiInput','input'],'emojiinputbutton':['EmojiInput','emojiButton'],'emojiinputbuttoncontainer':['EmojiInput','emojiButtonContainer'],'emojiinputclearbutton':['EmojiInput','clearButton'],'emojiinputclearicon':['EmojiInput','clearIcon'],'emojiinputcontainer':['EmojiInput','inputContainer'],'emojipicker':['EmojiPicker','emojiPicker'],'emojipickerbutton':['Reactions','reactionBtn'],'emojipickercategories':['EmojiPicker','categories'],'emojipickercategory':['EmojiPicker','category'],'emojipickerdisabled':['EmojiPicker','disabled'],'emojipickerdiversityselector':['EmojiPicker','diversitySelector'],'emojipickerdiversityselectoritem':['EmojiPicker','item'],'emojipickeremojiitem':['EmojiPicker','emojiItem'],'emojipickerheader':['EmojiPicker','header'],'emojipickerinfobar':['EmojiPicker','infoBar'],'emojipickerinfobaremoji':['EmojiPicker','infoBarEmoji'],'emojipickerpopout':['EmojiPicker','popout'],'emojipickerpremiumpromo':['EmojiPicker','premiumPromo'],'emojipickerpremiumpromoclose':['EmojiPicker','premiumPromoClose'],'emojipickerpremiumpromodescription':['EmojiPicker','premiumPromoDescription'],'emojipickerpremiumpromoimage':['EmojiPicker','premiumPromoImage'],'emojipickerpremiumpromotitle':['EmojiPicker','premiumPromoTitle'],'emojipickerrow':['EmojiPicker','row'],'emojipickersearchbar':['EmojiPicker','searchBar'],'emojipickerscroller':['EmojiPicker','scroller'],'emojipickerscrollerwrap':['EmojiPicker','scrollerWrap'],'emojipickerselected':['EmojiPicker','selected'],'emojipickerspriteitem':['EmojiPicker','spriteItem'],'emojipickerstickyheader':['EmojiPicker','stickyHeader'],'expressionemojipicker':['ExpressionEmojiPicker','emojiPicker'],'expressionemojipickerdiversityemojiitem':['ExpressionEmojiPickerDiversitySelector','diversityEmojiItem'],'expressionemojipickerdiversityemojiitemimage':['ExpressionEmojiPickerDiversitySelector','diversityEmojiItemImage'],'expressionemojipickerdiversityselector':['ExpressionEmojiPickerDiversitySelector','diversitySelector'],'expressionemojipickerdiversityselectorpopout':['ExpressionEmojiPickerDiversitySelector','diversitySelectorPopout'],'expressionemojipickerdiversityselectorwrapper':['ExpressionEmojiPicker','diversitySelector'],'expressionemojipickeremojiitemimage':['ExpressionEmojiPickerItem','emojiItemImage'],'expressionemojipickeremojiitemimageloading':['ExpressionEmojiPickerItem','emojiItemImageLoading'],'expressionemojipickerheader':['ExpressionEmojiPicker','header'],'expressionemojipickerinspector':['ExpressionEmojiPickerInspector','inspector'],'expressionemojipickerinspectoremoji':['ExpressionEmojiPickerInspector','emoji'],'expressionpicker':['ExpressionPicker','contentWrapper'],'expressionpickernav':['ExpressionPicker','nav'],'expressionpickernavbutton':['ExpressionPicker','navButton'],'expressionpickernavbuttonactive':['ExpressionPicker','navButtonActive'],'expressionpickernavitem':['ExpressionPicker','navItem'],'expressionpickernavlist':['ExpressionPicker','navList'],'favbuttoncontainer':['BDFDB','favButtonContainer'],'fileattachment':['File','attachment'],'fileattachmentinner':['File','attachmentInner'],'filecancelbutton':['File','cancelButton'],'filedownloadbutton':['File','downloadButton'],'filename':['File','filename'],'filenamelink':['File','fileNameLink'],'filenamelinkwrapper':['File','filenameLinkWrapper'],'filenamewrapper':['File','filenameWrapper'],'flex':['FlexChild','flex'],'flex2':['Flex','flex'],'flexcenter':['Flex','flexCenter'],'flexchild':['FlexChild','flexChild'],'flexmarginreset':['FlexChild','flexMarginReset'],'flexspacer':['Flex','spacer'],'flowerstar':['FlowerStar','flowerStar'],'flowerstarchild':['FlowerStar','childContainer'],'flowerstarcontainer':['FlowerStar','flowerStarContainer'],'formtext':['FormText','formText'],'game':['Game','game'],'gameicon':['GameIcon','gameIcon'],'gameiconlarge':['GameIcon','large'],'gameiconmedium':['GameIcon','medium'],'gameiconsmall':['GameIcon','small'],'gameiconxsmall':['GameIcon','xsmall'],'gamelibrarytable':['GameLibraryTable','table'],'gamelibrarytableheader':['GameLibraryTable','header'],'gamelibrarytableheadercell':['GameLibraryTable','headerCell'],'gamelibrarytableheadercellsorted':['GameLibraryTable','headerCellSorted'],'gamelibrarytablerow':['GameLibraryTable','row'],'gamelibrarytablerowwrapper':['GameLibraryTable','rowWrapper'],'gamelibrarytablestickyheader':['GameLibraryTable','stickyHeader'],'gamename':['Game','gameName'],'gamenameinput':['Game','gameNameInput'],'giffavoritebutton':['MessageAccessory','gifFavoriteButton'],'giffavoritecolor':['GifFavoriteButton','gifFavoriteButton'],'giffavoriteicon':['GifFavoriteButton','icon'],'giffavoriteshowpulse':['GifFavoriteButton','showPulse'],'giffavoritesize':['GifFavoriteButton','size'],'giffavoriteselected':['GifFavoriteButton','selected'],'goliveactions':['GoLiveDetails','actions'],'golivebody':['GoLiveDetails','body'],'goliveclickablegamewrapper':['GoLiveDetails','clickableGameWrapper'],'golivegameicon':['GoLiveDetails','gameIcon'],'golivegamename':['GoLiveDetails','gameName'],'golivegamewrapper':['GoLiveDetails','gameWrapper'],'goliveinfo':['GoLiveDetails','info'],'golivepanel':['GoLiveDetails','panel'],'guild':['BDFDB','guild'],'guildbuttoncontainer':['GuildsItems','circleButtonMask'],'guildbuttoninner':['GuildsItems','circleIconButton'],'guildbuttonicon':['GuildsItems','circleIcon'],'guildbuttonpill':['GuildsItems','pill'],'guildbuttonselected':['GuildsItems','selected'],'guildchannels':['NotFound','guildChannels'],'guildcontainer':['GuildServer','blobContainer'],'guilddiscovery':['GuildDiscovery','pageWrapper'],'guildedge':['GuildEdges','edge'],'guildedgehalf':['GuildEdges','half'],'guildedgehigher':['GuildEdges','higher'],'guildedgemiddle':['GuildEdges','middle'],'guildedgewrapper':['GuildEdges','wrapper'],'guildserror':['GuildsItems','guildsError'],'guildserrorinner':['GuildsItems','errorInner'],'guildfolder':['GuildFolder','folder'],'guildfolderexpandedbackground':['GuildFolder','expandedFolderBackground'],'guildfolderexpandedbackgroundcollapsed':['GuildFolder','collapsed'],'guildfolderexpandedbackgroundhover':['GuildFolder','hover'],'guildfolderguildicon':['GuildFolder','guildIcon'],'guildfoldericonwrapper':['GuildFolder','folderIconWrapper'],'guildfoldericonwrapperclosed':['GuildFolder','closedFolderIconWrapper'],'guildfoldericonwrapperexpanded':['GuildFolder','expandedFolderIconWrapper'],'guildfolderwrapper':['GuildFolder','wrapper'],'guildheader':['GuildHeader','container'],'guildheaderbannerimage':['GuildHeader','bannerImage'],'guildheaderbannerimagecontainer':['GuildHeader','animatedContainer'],'guildheaderbannervisible':['GuildHeader','bannerVisible'],'guildheaderbutton':['GuildHeaderButton','button'],'guildheaderbuttonopen':['GuildHeaderButton','open'],'guildheaderclickable':['GuildHeader','clickable'],'guildheaderhasbanner':['GuildHeader','hasBanner'],'guildheadericoncontainer':['GuildHeader','guildIconContainer'],'guildheadericonbgtiernone':['GuildHeader','iconBackgroundTierNone'],'guildheadericonbgtierone':['GuildHeader','iconBackgroundTierOne'],'guildheadericonbgtierthree':['GuildHeader','iconBackgroundTierThree'],'guildheadericonbgtiertwo':['GuildHeader','iconBackgroundTierTwo'],'guildheadericonpremiumgem':['GuildHeader','premiumGuildIconGem'],'guildheadericontiernone':['GuildHeader','iconTierNone'],'guildheadericontierone':['GuildHeader','iconTierOne'],'guildheadericontierthree':['GuildHeader','iconTierThree'],'guildheadericontiertwo':['GuildHeader','iconTierTwo'],'guildheaderheader':['GuildHeader','header'],'guildheadername':['GuildHeader','name'],'guildicon':['GuildIcon','icon'],'guildiconacronym':['GuildIcon','acronym'],'guildiconbadge':['GuildsItems','iconBadge'],'guildiconchildwrapper':['GuildIcon','childWrapper'],'guildiconselected':['GuildIcon','selected'],'guildiconwrapper':['GuildIcon','wrapper'],'guildinner':['Guild','wrapper'],'guildinnerwrapper':['GuildsItems','listItemWrapper'],'guildlowerbadge':['Guild','lowerBadge'],'guildlowerleftbadge':['BDFDB','guildLowerLeftBadge'],'guildouter':['GuildsItems','listItem'],'guildpill':['GuildServer','pill'],'guildpillitem':['PillWrapper','item'],'guildpillwrapper':['PillWrapper','wrapper'],'guildplaceholder':['GuildsItems','dragInner'],'guildplaceholdermask':['GuildsItems','placeholderMask'],'guilds':['AppBase','guilds'],'guildseparator':['GuildsItems','guildSeparator'],'guildserror':['GuildsItems','guildsError'],'guildsettingsbannedcard':['GuildSettingsBanned','bannedUser'],'guildsettingsbanneddiscrim':['GuildSettingsBanned','discrim'],'guildsettingsbannedusername':['GuildSettingsBanned','username'],'guildsettingsemojicard':['GuildSettingsEmoji','emojiRow'],'guildsettingsinvitecard':['GuildSettingsInvite','inviteSettingsInviteRow'],'guildsettingsinvitechannelname':['GuildSettingsInvite','channelName'],'guildsettingsinviteusername':['GuildSettingsInvite','username'],'guildsettingsmembercard':['GuildSettingsMember','member'],'guildsettingsmembername':['GuildSettingsMember','name'],'guildsettingsmembernametag':['GuildSettingsMember','nameTag'],'guildsscroller':['GuildsWrapper','scroller'],'guildsscrollerwrap':['GuildsWrapper','scrollerWrap'],'guildsvg':['Guild','svg'],'guildswrapper':['GuildsWrapper','wrapper'],'guildswrapperunreadmentionsbar':['GuildsWrapper','unreadMentionsBar'],'guildswrapperunreadmentionsbarbottom':['GuildsWrapper','unreadMentionsIndicatorBottom'],'guildswrapperunreadmentionsbartop':['GuildsWrapper','unreadMentionsIndicatorTop'],'guildtutorialcontainer':['GuildsItems','tutorialContainer'],'guildupperbadge':['Guild','upperBadge'],'guildupperleftbadge':['BDFDB','guildUpperLeftBadge'],'h1':['Text','h1'],'h1defaultmargin':['Text','defaultMarginh1'],'h2':['Text','h2'],'h2defaultmargin':['Text','defaultMarginh2'],'h3':['Text','h3'],'h3defaultmargin':['Text','defaultMarginh3'],'h4':['Text','h4'],'h4defaultmargin':['Text','defaultMarginh4'],'h5':['Text','h5'],'h5defaultmargin':['Text','defaultMarginh5'],'headertitle':['Text','title'],'height12':['UserPopout','height12'],'height16':['File','height16'],'height24':['Title','height24'],'height36':['Notice','height36'],'highlight':['NotFound','highlight'],'homebuttonicon':['HomeIcon','homeIcon'],'homebuttonpill':['HomeIcon','pill'],'horizontal':['FlexChild','horizontal'],'horizontal2':['NotFound','_'],'horizontalreverse':['FlexChild','horizontalReverse'],'horizontalreverse2':['NotFound','_'],'hotkeybase':['NotFound','_'],'hotkeybutton':['HotKeyRecorder','button'],'hotkeybutton2':['NotFound','_'],'hotkeycontainer':['HotKeyRecorder','container'],'hotkeycontainer2':['NotFound','_'],'hotkeydisabled':['HotKeyRecorder','disabled'],'hotkeydisabled2':['NotFound','_'],'hotkeyediticon':['HotKeyRecorder','editIcon'],'hotkeyhasvalue':['HotKeyRecorder','hasValue'],'hotkeyinput':['HotKeyRecorder','input'],'hotkeyinput2':['HotKeyRecorder','input'],'hotkeylayout':['HotKeyRecorder','layout'],'hotkeylayout2':['HotKeyRecorder','layout'],'hotkeyrecording':['HotKeyRecorder','recording'],'hotkeyresetbutton':['BDFDB','hotkeyResetButton'],'hotkeyshadowpulse':['HotKeyRecorder','shadowPulse'],'hotkeytext':['HotKeyRecorder','text'],'hotkeywrapper':['BDFDB','hotkeyWrapper'],'hovercard':['HoverCard','card'],'hovercardbutton':['NotFound','hoverCardButton'],'hovercardinner':['BDFDB','cardInner'],'hovercardwrapper':['BDFDB','cardWrapper'],'icon':['EmbedActions','icon'],'iconactionswrapper':['EmbedActions','wrapper'],'iconexternal':['EmbedActions','iconExternal'],'iconexternalmargins':['EmbedActions','iconExternalMargins'],'iconplay':['EmbedActions','iconPlay'],'iconwrapper':['EmbedActions','iconWrapper'],'iconwrapperactive':['EmbedActions','iconWrapperActive'],'imageaccessory':['ImageWrapper','imageAccessory'],'imageclickable':['ImageWrapper','clickable'],'imageerror':['ImageWrapper','imageError'],'imageplaceholder':['ImageWrapper','imagePlaceholder'],'imageplaceholderoverlay':['ImageWrapper','imagePlaceholderOverlay'],'imagewrapper':['ImageWrapper','imageWrapper'],'imagewrapperbackground':['ImageWrapper','imageWrapperBackground'],'imagewrapperinner':['ImageWrapper','imageWrapperInner'],'imagezoom':['ImageWrapper','imageZoom'],'itemlayer':['ItemLayerContainer','layer'],'itemlayercontainer':['ItemLayerContainer','layerContainer'],'itemlayerdisabledpointerevents':['ItemLayerContainer','disabledPointerEvents'],'input':['Input','input'],'inputdefault':['Input','inputDefault'],'inputdisabled':['Input','disabled'],'inputeditable':['Input','editable'],'inputerror':['Input','error'],'inputfocused':['Input','focused'],'inputmini':['Input','inputMini'],'inputprefix':['Input','inputPrefix'],'inputsuccess':['Input','success'],'inputwrapper':['Input','inputWrapper'],'inputnumberbutton':['BDFDB','inputNumberButton'],'inputnumberbuttondown':['BDFDB','inputNumberButtonDown'],'inputnumberbuttonup':['BDFDB','inputNumberButtonUp'],'inputnumberbuttons':['BDFDB','inputNumberButtons'],'inputnumberwrapper':['BDFDB','inputNumberWrapper'],'inputnumberwrapperdefault':['BDFDB','inputNumberWrapperDefault'],'inputnumberwrappermini':['BDFDB','inputNumberWrapperMini'],'invite':['GuildInvite','wrapper'],'invitebutton':['GuildInvite','button'],'invitebuttonfornonmember':['GuildInvite','buttonForNonMember'],'invitebuttonresolving':['GuildInvite','invite-button-resolving'],'invitebuttonsize':['GuildInvite','buttonSize'],'invitechannel':['GuildInvite','channel'],'invitechannelicon':['GuildInvite','channelIcon'],'invitechannelname':['GuildInvite','channelName'],'invitecontent':['GuildInvite','content'],'invitecount':['GuildInvite','count'],'invitecursordefault':['GuildInvite','cursorDefault'],'invitedestination':['GuildInvite','inviteDestination'],'invitedestinationexpired':['GuildInvite','inviteDestinationExpired'],'invitedestinationjoined':['GuildInvite','inviteDestinationJoined'],'inviteguildbadge':['GuildInvite','guildBadge'],'inviteguilddetail':['GuildInvite','guildDetail'],'inviteguildicon':['GuildInvite','guildIcon'],'inviteguildiconexpired':['GuildInvite','guildIconExpired'],'inviteguildiconimage':['GuildInvite','guildIconImage'],'inviteguildiconimagejoined':['GuildInvite','guildIconImageJoined'],'inviteguildiconjoined':['GuildInvite','guildIconJoined'],'inviteguildinfo':['GuildInvite','guildInfo'],'inviteguildname':['GuildInvite','guildName'],'inviteguildnamewrapper':['GuildInvite','guildNameWrapper'],'inviteheader':['GuildInvite','header'],'invitemodal':['InviteModal','modal'],'invitemodalinviterow':['InviteModal','inviteRow'],'invitemodalinviterowname':['InviteModal','inviteRowName'],'invitemodalwrapper':['InviteModal','wrapper'],'invitesplash':['GuildInvite','inviteSplash'],'invitesplashimage':['GuildInvite','inviteSplashImage'],'invitesplashimageloaded':['GuildInvite','inviteSplashImageLoaded'],'inviteresolving':['GuildInvite','resolving'],'inviteresolvingbackground':['GuildInvite','resolvingBackground'],'invitestatus':['GuildInvite','status'],'invitestatuscounts':['GuildInvite','statusCounts'],'invitestatusoffline':['GuildInvite','statusOffline'],'invitestatusonline':['GuildInvite','statusOnline'],'inviteuserselectnone':['GuildInvite','userSelectNone'],'italics':['TextStyle','italics'],'justifycenter':['Flex','justifyCenter'],'justifyend':['Flex','justifyEnd'],'justifystart':['Flex','justifyStart'],'layermodal':['LayerModal','root'],'layermodallarge':['LayerModal','large'],'layermodalmedium':['LayerModal','medium'],'layermodalsmall':['LayerModal','small'],'layer':['Layers','layer'],'layerbase':['Layers','baseLayer'],'layers':['Layers','layers'],'layersbg':['Layers','bg'],'listavatar':['UserProfile','listAvatar'],'listdiscriminator':['UserProfile','listDiscriminator'],'listname':['UserProfile','listName'],'listrow':['UserProfile','listRow'],'listrowcontent':['UserProfile','listRowContent'],'listscroller':['UserProfile','listScroller'],'livetag':['LiveTag','live'],'livetaggrey':['LiveTag','grey'],'livetaglarge':['LiveTag','liveLarge'],'livetagsmall':['LiveTag','liveSmall'],'loadingicon':['BDFDB','loadingIcon'],'loadingiconwrapper':['BDFDB','loadingIconWrapper'],'loadingscreen':['LoadingScreen','container'],'loginscreen':['NotFound','loginScreen'],'marginbottom4':['Margins','marginBottom4'],'marginbottom8':['Margins','marginBottom8'],'marginbottom20':['Margins','marginBottom20'],'marginbottom40':['Margins','marginBottom40'],'marginbottom60':['Margins','marginBottom60'],'margincenterhorz':['Margins','marginCenterHorz'],'marginleft4':['Autocomplete','marginLeft4'],'marginleft8':['Autocomplete','marginLeft8'],'marginreset':['Margins','marginReset'],'margintop4':['Margins','marginTop4'],'margintop8':['Margins','marginTop8'],'margintop20':['Margins','marginTop20'],'margintop40':['Margins','marginTop40'],'margintop60':['Margins','marginTop60'],'member':['Member','member'],'memberactivity':['Member','activity'],'membericon':['Member','icon'],'memberoffline':['Member','offline'],'memberownericon':['Member','ownerIcon'],'memberpremiumicon':['Member','premiumIcon'],'members':['MembersWrap','members'],'membersgroup':['MembersWrap','membersGroup'],'memberswrap':['MembersWrap','membersWrap'],'memberusername':['Member','roleColor'],'mention':['NotFound','mention'],'mentioninteractive':['NotFound','mentionInteractive'],'mentionwrapper':['NotFound','mentionWrapper'],'menumenu':['Menu','menu'],'menuaccommodatescrollbar':['Menu','accommodateScrollbar'],'menucaret':['Menu','caret'],'menucheck':['Menu','check'],'menucheckbox':['Menu','checkbox'],'menucolorbrand':['Menu','colorBrand'],'menucolordanger':['Menu','colorDanger'],'menucolordefault':['Menu','colorDefault'],'menucolorpremium':['Menu','colorPremium'],'menucustomitem':['Menu','customItem'],'menudisabled':['Menu','disabled'],'menufocused':['Menu','focused'],'menuhideinteraction':['Menu','hideInteraction'],'menuhintcontainer':['Menu','hintContainer'],'menuicon':['Menu','icon'],'menuiconcontainer':['Menu','iconContainer'],'menuimage':['Menu','image'],'menuimagecontainer':['Menu','imageContainer'],'menuitem':['Menu','item'],'menulabel':['Menu','label'],'menulabelcontainer':['Menu','labelContainer'],'menuscroller':['Menu','scroller'],'menuseparator':['Menu','separator'],'menustylefixed':['Menu','styleFixed'],'menustyleflexible':['Menu','styleFlexible'],'menusubmenu':['Menu','submenu'],'menusubmenucontainer':['Menu','submenuContainer'],'menusubtext':['Menu','subtext'],'message':['Message','message'],'messageaccessory':['MessageAccessory','container'],'messageavatar':['MessageBody','avatar'],'messageavatarclickable':['MessageBody','clickable'],'messagebackgroundflash':['Message','backgroundFlash'],'messagebarbase':['MessageElements','barBase'],'messagebarbuttonalt':['MessageElements','barButtonAlt'],'messagebarbuttonbase':['MessageElements','barButtonBase'],'messagebarbuttonicon':['MessageElements','barButtonIcon'],'messagebarbuttonmain':['MessageElements','barButtonMain'],'messagebarhasmore':['MessageElements','hasMore'],'messagebarjumptopresentbar':['MessageElements','jumpToPresentBar'],'messagebarloadingmore':['MessageElements','loadingMore'],'messagebarnewmessagesbar':['MessageElements','newMessagesBar'],'messagebarspan':['MessageElements','span'],'messagebarspinner':['MessageElements','spinner'],'messagebarspinneritem':['MessageElements','spinnerItem'],'messagebeforegroup':['Message','beforeGroup'],'messageblockedaction':['MessageBlocked','blockedAction'],'messageblockedcontainer':['MessageBlocked','container'],'messageblockedexpanded':['MessageBlocked','expanded'],'messageblockedicon':['MessageBlocked','blockedIcon'],'messageblockedsystemmessage':['MessageBlocked','blockedSystemMessage'],'messageblockedtext':['MessageBlocked','blockedMessageText'],'messageblockquotecontainer':['MessageMarkup','blockquoteContainer'],'messageblockquotedivider':['MessageMarkup','blockquoteDivider'],'messagebottag':['MessageBody','botTag'],'messagebottagcompact':['MessageBody','botTagCompact'],'messagebottagcozy':['MessageBody','botTagCozy'],'messagebuttoncontainer':['MessageBody','buttonContainer'],'messagebuttons':['Message','buttons'],'messagechanneltextarea':['Message','channelTextArea'],'messagecompact':['MessageBody','compact'],'messagecontents':['MessageBody','contents'],'messagecozy':['MessageBody','cozy'],'messagecozymessage':['Message','cozyMessage'],'messagedisableinteraction':['Message','disableInteraction'],'messagedivider':['Message','divider'],'messagedividerhascontent':['Message','hasContent'],'messageedited':['MessageBody','edited'],'messagegroupstart':['Message','groupStart'],'messagegroupblocked':['MessageElements','messageGroupBlocked'],'messagegroupblockedbtn':['MessageElements','messageGroupBlockedBtn'],'messagegroupblockedrevealed':['MessageElements','revealed'],'messageheader':['MessageBody','header'],'messagelocalbot':['Message','localBot'],'messagelocalbotoperations':['MessageLocalBot','localBotMessage'],'messagemarkup':['MessageMarkup','markup'],'messagemarkupcompact':['MessageBody','compact'],'messagemarkupcontent':['MessageBody','messageContent'],'messagemarkupcozy':['MessageBody','cozy'],'messagemarkupisfailed':['MessageBody','isFailed'],'messagemarkupissending':['MessageBody','isSending'],'messagemarkuprtl':['MessageBody','markupRtl'],'messagementioned':['Message','mentioned'],'messageoperations':['MessageOperations','operations'],'messageselected':['Message','selected'],'messages':['MessagesWrap','messages'],'messagesdivider':['MessagesWrap','divider'],'messagespopout':['MessagesPopout','messagesPopout'],'messagespopoutactionbuttons':['MessagesPopout','actionButtons'],'messagespopoutbody':['MessagesPopout','body'],'messagespopoutbottom':['MessagesPopout','bottom'],'messagespopoutbutton':['MessagesPopoutButtons','button'],'messagespopoutbuttonsecondary':['MessagesPopoutButtons','secondary'],'messagespopoutbuttontertiary':['MessagesPopoutButtons','tertiary'],'messagespopoutchannelname':['MessagesPopout','channelName'],'messagespopoutchannelseparator':['MessagesPopout','channelSeparator'],'messagespopoutclosebutton':['MessagesPopout','closeIcon'],'messagespopoutemptyplaceholder':['MessagesPopout','emptyPlaceholder'],'messagespopoutfooter':['MessagesPopout','footer'],'messagespopoutguildname':['MessagesPopout','guildName'],'messagespopoutgroupcozy':['MessagesPopout','messageGroupCozy'],'messagespopoutgroupwrapper':['MessagesPopout','messageGroupWrapper'],'messagespopouthasmore':['MessagesPopout','hasMore'],'messagespopouthasmorebutton':['MessagesPopout','hasMoreButton'],'messagespopoutheader':['MessagesPopout','header'],'messagespopoutimage':['MessagesPopout','image'],'messagespopoutjumpbutton':['MessagesPopout','jumpButton'],'messagespopoutloading':['MessagesPopout','loading'],'messagespopoutloadingmore':['MessagesPopout','loadingMore'],'messagespopoutloadingplaceholder':['MessagesPopout','loadingPlaceholder'],'messagespopoutscroller':['MessagesPopout','scroller'],'messagespopoutscrollingfooterwrap':['MessagesPopout','scrollingFooterWrap'],'messagespopoutspinner':['MessagesPopout','spinner'],'messagespopouttabbar':['MessagesPopoutTabBar','tabBar'],'messagespopouttabbarheader':['MessagesPopoutTabBar','header'],'messagespopouttabbartab':['MessagesPopoutTabBar','tab'],'messagespopouttabbartabactive':['MessagesPopoutTabBar','active'],'messagespopouttitle':['MessagesPopout','title'],'messagespopoutvisible':['MessagesPopout','visible'],'messagespopoutwrap':['MessagesPopout','messagesPopoutWrap'],'messagesscroller':['MessagesWrap','scroller'],'messagesscrollerinner':['MessagesWrap','scrollerInner'],'messagesscrollerwrapper':['MessagesWrap','scrollerWrap'],'messageswelcomemessage':['MessagesWelcome','welcomeMessage'],'messageswelcomemessageheader':['MessagesWelcome','h1'],'messageswrapper':['MessagesWrap','messagesWrapper'],'messageswrapperplaceholder':['MessagesWrap','placeholder'],'messagesystem':['Message','systemMessage'],'messagesystemaccessories':['MessageBody','systemMessageAccessories'],'messagesystemcontainer':['MessageSystem','container'],'messagesystemcontent':['MessageSystem','content'],'messagesystemicon':['MessageSystem','icon'],'messagesystemiconcontainer':['MessageSystem','iconContainer'],'messagesystemiconsize':['MessageSystem','iconSize'],'messagetimedivider':['MessageDivider','divider'],'messagetimedividercontent':['MessageDivider','content'],'messagetimedividerhascontent':['MessageDivider','hasContent'],'messagetimedividerisunread':['MessageDivider','isUnread'],'messagetimedividerunreadpill':['MessageDivider','unreadPill'],'messagetimedividerunreadpillcap':['MessageDivider','unreadPillCap'],'messagetimedividerunreadpillcapstroke':['MessageDivider','unreadPillCapStroke'],'messagetimestampasiancompact':['MessageBody','asianCompactTimeStamp'],'messagetimestamp':['MessageBody','timestamp'],'messagetimestampalt':['MessageBody','alt'],'messagetimestamplatin12compact':['MessageBody','latin12CompactTimeStamp'],'messagetimestamplatin24compact':['MessageBody','latin24CompactTimeStamp'],'messagetimestampseparator':['MessageBody','separator'],'messagetimestampsystem':['MessageSystem','timestamp'],'messagetimestamptooltip':['MessageBody','timestampTooltip'],'messagetimestampvisibleonhover':['MessageBody','timestampVisibleOnHover'],'messagetoolbar':['MessageToolbar','container'],'messagetoolbarbutton':['MessageToolbarItems','button'],'messagetoolbarbuttondisabled':['MessageToolbarItems','disabled'],'messagetoolbarbuttonselected':['MessageToolbarItems','selected'],'messagetoolbaricon':['MessageToolbar','icon'],'messagetoolbarinner':['MessageToolbarItems','wrapper'],'messagetoolbarisheader':['MessageToolbar','isHeader'],'messagetoolbarseparator':['MessageToolbarItems','separator'],'messageuploadcancel':['MessageFile','cancelButton'],'messageusername':['MessageBody','username'],'messagewrapper':['MessageBody','wrapper'],'messagezalgo':['MessageBody','zalgo'],'modal':['ModalWrap','modal'],'modalclose':['Modal','close'],'modalchangelogmodal':['BDFDB','changeLogModal'],'modalconfirmmodal':['BDFDB','confirmModal'],'modalcontent':['Modal','content'],'modalfooter':['Modal','footer'],'modalguildname':['ModalItems','guildName'],'modalheader':['Modal','header'],'modalheaderhassibling':['BDFDB','modalHeaderHasSibling'],'modalinner':['ModalWrap','inner'],'modalmini':['ModalMiniContent','modal'],'modalminicontent':['ModalMiniContent','content'],'modalminitext':['HeaderBarTopic','content'],'modalseparator':['Modal','separator'],'modalsizelarge':['Modal','sizeLarge'],'modalsizemedium':['Modal','sizeMedium'],'modalsizesmall':['Modal','sizeSmall'],'modalsub':['Modal','modal'],'modalsubinner':['Modal','inner'],'modalsubinnerscrollerless':['BDFDB','modalInnerScrollerLess'],'modaltabcontent':['BDFDB','modalTabContent'],'modaltabcontentopen':['BDFDB','modalTabContentOpen'],'modalwrapper':['BDFDB','modalWrapper'],'modedefault':['FormText','modeDefault'],'modedisabled':['FormText','modeDisabled'],'modeselectable':['FormText','modeSelectable'],'namecontainer':['NameContainer','container'],'namecontaineravatar':['NameContainer','avatar'],'namecontainerchildren':['NameContainer','children'],'namecontainerclickable':['NameContainer','clickable'],'namecontainercontent':['NameContainer','content'],'namecontainerlayout':['NameContainer','layout'],'namecontainername':['NameContainer','name'],'namecontainernamecontainer':['NotFound','nameContainerNameContainer'],'namecontainernamewrapper':['NameContainer','nameAndDecorators'],'namecontainerselected':['NameContainer','selected'],'namecontainersubtext':['NameContainer','subText'],'nametag':['NameTag','nameTag'],'nitrostore':['NitroStore','applicationStore'],'nochannel':['ChatWindow','noChannel'],'notice':['Notice','notice'],'noticebrand':['Notice','noticeBrand'],'noticebutton':['Notice','button'],'noticedanger':['Notice','noticeDanger'],'noticedefault':['Notice','noticeDefault'],'noticedownload':['Notice','noticeDownload'],'noticedismiss':['Notice','dismiss'],'noticefacebook':['Notice','noticeFacebook'],'noticeicon':['Notice','icon'],'noticeiconandroid':['Notice','iconAndroid'],'noticeiconapple':['Notice','iconApple'],'noticeiconwindows':['Notice','iconWindows'],'noticeinfo':['Notice','noticeInfo'],'noticenotification':['Notice','noticeNotification'],'noticeplatformicon':['Notice','platformIcon'],'noticepremium':['Notice','noticePremium'],'noticepremiumaction':['Notice','premiumAction'],'noticepremiumlogo':['Notice','premiumLogo'],'noticepremiumtext':['Notice','premiumText'],'noticepremiumtier1':['Notice','noticePremiumTier1'],'noticepremiumtier2':['Notice','noticePremiumTier2'],'noticerichpresence':['Notice','noticeRichPresence'],'noticespotify':['Notice','noticeSpotify'],'noticestreamer':['Notice','noticeStreamerMode'],'noticesuccess':['Notice','noticeSuccess'],'noticesurvey':['Notice','noticeSurvey'],'noticewrapper':['BDFDB','noticeWrapper'],'note':['SettingsItems','note'],'nowrap':['Flex','noWrap'],'overflowellipsis':['BDFDB','overflowEllipsis'],'peoples':['Peoples','container'],'peoplesbadge':['Peoples','badge'],'peoplesnowplayingcolumn':['Peoples','nowPlayingColumn'],'peoplespeoplecolumn':['Peoples','peopleColumn'],'peoplestabbar':['Peoples','tabBar'],'pictureinpicture':['PictureInPicture','pictureInPicture'],'pictureinpicturewindow':['PictureInPicture','pictureInPictureWindow'],'popout':['Popout','popout'],'popoutarrowalignmentmiddle':['Popout','arrowAlignmentMiddle'],'popoutarrowalignmenttop':['Popout','arrowAlignmentTop'],'popoutbottom':['Popout','popoutBottom'],'popoutbottomleft':['Popout','popoutBottomLeft'],'popoutbottomright':['Popout','popoutBottomRight'],'popoutinvert':['Popout','popoutInvert'],'popoutleft':['Popout','popoutLeft'],'popoutnoarrow':['Popout','noArrow'],'popoutnoshadow':['Popout','noShadow'],'popoutright':['Popout','popoutRight'],'popouts':['Popout','popouts'],'popoutthemedpopout':['BDFDB','themedPopout'],'popouttop':['Popout','popoutTop'],'popouttopleft':['Popout','popoutTopLeft'],'popouttopright':['Popout','popoutTopRight'],'popoutwrapper':['BDFDB','popoutWrapper'],'quickmessage':['QuickMessage','quickMessage'],'quickmessagepopout':['UserPopout','quickMessage'],'quickselect':['QuickSelect','quickSelect'],'quickselectarrow':['QuickSelect','quickSelectArrow'],'quickselectclick':['QuickSelect','quickSelectClick'],'quickselectlabel':['QuickSelect','quickSelectLabel'],'quickselectpopout':['QuickSelect','quickSelectPopout'],'quickselectpopoutoption':['QuickSelect','quickSelectPopoutOption'],'quickselectpopoutoptionselected':['NotFound','quickSelectPopoutOptionSelected'],'quickselectpopoutscroll':['QuickSelect','quickSelectPopoutScroll'],'quickselectpopoutwrapper':['BDFDB','quickSelectPopoutWrapper'],'quickselectscroller':['QuickSelect','quickSelectScroller'],'quickselectselected':['QuickSelect','selected'],'quickselectvalue':['QuickSelect','quickSelectValue'],'quickselectwrapper':['BDFDB','quickSelectWrapper'],'quickswitcher':['QuickSwitchWrap','quickswitcher'],'quickswitchresult':['QuickSwitch','result'],'quickswitchresultfocused':['QuickSwitch','resultFocused'],'quickswitchresultguildicon':['QuickSwitch','guildIcon'],'quickswitchresulticon':['QuickSwitch','icon'],'quickswitchresulticoncontainer':['QuickSwitch','iconContainer'],'quickswitchresultmatch':['QuickSwitch','match'],'quickswitchresultmisccontainer':['QuickSwitchWrap','miscContainer'],'quickswitchresultname':['QuickSwitch','name'],'quickswitchresultnote':['QuickSwitch','note'],'quickswitchresultusername':['QuickSwitch','username'],'recentmentionsclosebutton':['RecentMentions','closeButton'],'recentmentionsfilterpopout':['RecentMentions','recentMentionsFilterPopout'],'recentmentionsheader':['RecentMentions','header'],'recentmentionsjumpbutton':['RecentMentions','jumpButton'],'recentmentionsmentionfilter':['RecentMentions','mentionFilter'],'recentmentionsmentionfilterlabel':['RecentMentions','label'],'recentmentionsmentionfiltervalue':['RecentMentions','value'],'recentmentionspopout':['RecentMentions','recentMentionsPopout'],'recentmentionstabbar':['RecentMentions','tabBar'],'recentmentionstabbaritem':['RecentMentions','tabBarItem'],'recentmentionstabbarwrapper':['RecentMentions','headerTabBarWrapper'],'scrollbar':['Scrollbar','scrollbar'],'scrollbardefault':['Scrollbar','scrollbarDefault'],'scrollbarghost':['Scrollbar','scrollbarGhost'],'scrollbarghosthairline':['Scrollbar','scrollbarGhostHairline'],'scroller':['Scroller','scroller'],'scrollerfade':['Scroller','scrollerFade'],'scrollersystempad':['Scroller','systemPad'],'scrollerthemed':['Scroller','scrollerThemed'],'scrollerthemedwithtrack':['Scroller','themedWithTrack'],'scrollerthemeghost':['Scroller','themeGhost'],'scrollerthemeghosthairline':['Scroller','themeGhostHairline'],'scrollerthemeghosthairlinechannels':['Scroller','themeGhostHairlineChannels'],'scrollerwrap':['Scroller','scrollerWrap'],'searchbar':['SearchBar','container'],'searchbarclear':['SearchBar','clear'],'searchbarclose':['SearchBar','close'],'searchbaricon':['SearchBar','icon'],'searchbariconlayout':['SearchBar','iconLayout'],'searchbariconwrap':['SearchBar','iconContainer'],'searchbarinner':['SearchBar','inner'],'searchbarinput':['SearchBar','input'],'searchbarlarge':['SearchBar','large'],'searchbarmedium':['SearchBar','medium'],'searchbarsmall':['SearchBar','small'],'searchbartag':['SearchBar','tag'],'searchbarvisible':['SearchBar','visible'],'searchpopout':['SearchPopoutWrap','container'],'searchpopoutanswer':['SearchPopout','answer'],'searchpopoutdatepicker':['SearchPopout','datePicker'],'searchpopoutdatepickerhint':['SearchPopout','datePickerHint'],'searchpopoutdmaddpopout':['DmAddPopout','popout'],'searchpopoutddmadddiscordtag':['DmAddPopoutItems','discordTag'],'searchpopoutddmaddfriend':['DmAddPopoutItems','friend'],'searchpopoutddmaddfriendwrapper':['DmAddPopoutItems','friendWrapper'],'searchpopoutddmaddnickname':['DmAddPopoutItems','nickname'],'searchpopoutdisplayavatar':['SearchPopout','displayAvatar'],'searchpopoutdisplayusername':['SearchPopout','displayUsername'],'searchpopoutdisplayednick':['SearchPopout','displayedNick'],'searchpopoutfilter':['SearchPopout','filter'],'searchpopoutheader':['SearchPopout','header'],'searchpopouthint':['SearchPopout','hint'],'searchpopouthintvalue':['SearchPopout','hintValue'],'searchpopoutlinksource':['SearchPopout','linkSource'],'searchpopoutnontext':['SearchPopout','nonText'],'searchpopoutoption':['SearchPopout','option'],'searchpopoutplusicon':['SearchPopout','plusIcon'],'searchpopoutresultchannel':['SearchPopout','resultChannel'],'searchpopoutresultsgroup':['SearchPopout','resultsGroup'],'searchpopoutsearchclearhistory':['SearchPopout','searchClearHistory'],'searchpopoutsearchlearnmore':['SearchPopout','searchLearnMore'],'searchpopoutsearchoption':['SearchPopout','searchOption'],'searchpopoutsearchresultchannelcategory':['SearchPopout','searchResultChannelCategory'],'searchpopoutsearchresultchannelicon':['SearchPopout','searchResultChannelIcon'],'searchpopoutsearchresultchanneliconbackground':['SearchPopout','searchResultChannelIconBackground'],'searchpopoutselected':['SearchPopout','selected'],'searchpopoutuser':['SearchPopout','user'],'searchresultsafter':['SearchResults','after'],'searchresultsalt':['SearchResults','alt'],'searchresultsbefore':['SearchResults','before'],'searchresultschannelname':['SearchResults','channelName'],'searchresultschannelSeparator':['SearchResults','channelSeparator'],'searchresultsexpanded':['SearchResults','expanded'],'searchresultsgroupcozy':['SearchResults','messageGroupCozy'],'searchresultshit':['SearchResults','hit'],'searchresultspagination':['SearchResults','pagination'],'searchresultspaginationbutton':['SearchResults','paginationButton'],'searchresultspaginationdisabled':['SearchResults','disabled'],'searchresultspaginationicon':['SearchResults','icon'],'searchresultssearchheader':['SearchResults','searchHeader'],'searchresultswrap':['SearchResults','searchResultsWrap'],'select':['Select','select'],'selectwrapper':['BDFDB','selectWrapper'],'settingsclosebutton':['SettingsCloseButton','closeButton'],'settingsclosebuttoncontainer':['SettingsCloseButton','container'],'settingsguild':['BDFDB','settingsGuild'],'settingsguilddisabled':['BDFDB','settingsGuildDisabled'],'settingsheader':['Item','header'],'settingsitem':['Item','item'],'settingsitemdragged':['ItemRole','dragged'],'settingsitemdlock':['ItemRole','lock'],'settingsitemrole':['ItemRole','role'],'settingsitemroleinner':['ItemRole','roleInner'],'settingsitemselected':['Item','selected'],'settingsitemthemed':['Item','themed'],'settingsPanel':['BDFDB','settingsPanel'],'settingspanelinner':['BDFDB','settingsPanelInner'],'settingspanellist':['BDFDB','settingsPanelList'],'settingspaneltitle':['BDFDB','settingsPanelTitle'],'settingsseparator':['Item','separator'],'settingstableheader':['SettingsTable','header'],'settingstableheadername':['SettingsTable','headerName'],'settingstableheaderoption':['SettingsTable','headerOption'],'settingstableheaders':['BDFDB','settingsTableHeaders'],'settingstableheadervertical':['BDFDB','settingsTableHeaderVertical'],'settingstablecard':['BDFDB','settingsTableCard'],'settingstablecardconfigs':['BDFDB','settingsTableCardConfigs'],'settingstablecardlabel':['BDFDB','settingsTableCardLabel'],'settingstablelist':['BDFDB','settingsTableList'],'sidebarregion':['SettingsWindow','sidebarRegion'],'size10':['TextSize','size10'],'size12':['TextSize','size12'],'size14':['TextSize','size14'],'size16':['TextSize','size16'],'size20':['TextSize','size20'],'size24':['TextSize','size24'],'size32':['TextSize','size32'],'slider':['Slider','slider'],'sliderbar':['Slider','bar'],'sliderbarfill':['Slider','barFill'],'sliderbubble':['Slider','bubble'],'sliderdisabled':['Slider','disabled'],'slidergrabber':['Slider','grabber'],'sliderinput':['Slider','input'],'slidermark':['Slider','mark'],'slidermarkdash':['Slider','markDash'],'slidermarkdashsimple':['Slider','markDashSimple'],'slidermarkvalue':['Slider','markValue'],'slidermini':['Slider','mini'],'slidertrack':['Slider','track'],'spoilercontainer':['Spoiler','spoilerContainer'],'spoilerembed':['SpoilerEmbed','spoiler'],'spoilerembedhidden':['SpoilerEmbed','hiddenSpoilers'],'spoilerembedinline':['SpoilerEmbed','inline'],'spoilerhidden':['Spoiler','hidden'],'spoilertext':['Spoiler','spoilerText'],'spoilerwarning':['Spoiler','spoilerWarning'],'splashbackground':['NotFound','splashBackground'],'standardsidebarview':['SettingsWindow','standardSidebarView'],'strikethrough':['TextStyle','strikeThrough'],'status':['Avatar','status'],'stopanimations':['NotFound','stopAnimations'],'subtext':['NotFound','subtext'],'svgicon':['BDFDB','svgIcon'],'switch':['Switch','switch'],'switchdisabled':['Switch','switchDisabled'],'switchenabled':['Switch','switchEnabled'],'switchinner':['Switch','checkbox'],'switchinnerdisabled':['Switch','checkboxDisabled'],'switchinnerenabled':['Switch','checkboxEnabled'],'switchsize':['Switch','size'],'switchsizedefault':['Switch','sizeDefault'],'switchsizemini':['Switch','sizeMini'],'switchthemeclear':['Switch','themeClear'],'switchthemedefault':['Switch','themeDefault'],'switchvalue':['Switch','value'],'switchvaluechecked':['Switch','valueChecked'],'switchvalueunchecked':['Switch','valueUnchecked'],'systempad':['Scroller','systemPad'],'tabbar':['UserProfile','tabBar'],'tabbarcontainer':['UserProfile','tabBarContainer'],'tabbaritem':['UserProfile','tabBarItem'],'tabbartop':['Item','top'],'table':['BDFDB','table'],'tablebodycell':['BDFDB','tableBodyCell'],'tableheader':['BDFDB','tableHeader'],'tableheadercell':['BDFDB','tableHeaderCellSorted'],'tableheadercellsorted':['BDFDB','tableHeaderCell'],'tableheadersorticon':['BDFDB','tableHeaderSortIcon'],'tablerow':['BDFDB','tableRow'],'tablestickyheader':['BDFDB','tableStickyHeader'],'textarea':['ChannelTextArea','textArea'],'textareaattachbutton':['ChannelTextAreaAttachButton','attachButton'],'textareaattachbuttoninner':['ChannelTextAreaAttachButton','attachButtonInner'],'textareaattachbuttonplus':['ChannelTextAreaAttachButton','attachButtonPlus'],'textareaattachwrapper':['ChannelTextAreaAttachButton','attachWrapper'],'textareabutton':['ChannelTextAreaButton','button'],'textareabuttonactive':['ChannelTextAreaButton','active'],'textareabuttonpulse':['ChannelTextAreaButton','pulseButton'],'textareabuttonwrapper':['ChannelTextAreaButton','buttonWrapper'],'textareacharcounter':['ChannelTextAreaCharCounter','characterCount'],'textareacharcountererror':['ChannelTextAreaCharCounter','error'],'textareadisabled':['ChannelTextArea','textAreaDisabled'],'textareafontsize12padding':['ChannelTextArea','fontSize12Padding'],'textareafontsize14padding':['ChannelTextArea','fontSize14Padding'],'textareafontsize15padding':['ChannelTextArea','fontSize15Padding'],'textareafontsize16padding':['ChannelTextArea','fontSize16Padding'],'textareafontsize18padding':['ChannelTextArea','fontSize18Padding'],'textareafontsize20padding':['ChannelTextArea','fontSize20Padding'],'textareafontsize24padding':['ChannelTextArea','fontSize24Padding'],'textareahasautocomplete':['ChannelTextArea','hasAutocomplete'],'textareaicon':['ChannelTextAreaButton','icon'],'textareaiconpulse':['ChannelTextAreaButton','pulseIcon'],'textareainner':['ChannelTextArea','inner'],'textareainnerdisabled':['ChannelTextArea','innerDisabled'],'textareapickerbutton':['ChannelTextArea','button'],'textareapickerbuttoncontainer':['ChannelTextArea','buttonContainer'],'textareapickerbuttons':['ChannelTextArea','buttons'],'textareascrollablecontainer':['ChannelTextArea','scrollableContainer'],'textareaslate':['ChannelTextArea','textAreaSlate'],'textareaslatemarkup':['ChannelTextAreaSlate','slateTextArea'],'textareaslatecontainer':['ChannelTextAreaSlate','slateContainer'],'textareaslateplaceholder':['ChannelTextAreaSlate','placeholder'],'textareauploadinput':['ChannelTextAreaAttachButton','uploadInput'],'textareawebkit':['ChannelTextArea','webkit'],'textareawrapall':['ChannelTextArea','channelTextArea'],'textareawrapchat':['ChatWindow','channelTextArea'],'textareawrapdisabled':['ChannelTextArea','channelTextAreaDisabled'],'textlink':['Notice','textLink'],'textrow':['PopoutActivity','textRow'],'textscroller':['BDFDB','textScroller'],'themedark':['NotFound','themeDark'],'themeghosthairline':['Scroller','themeGhostHairline'],'themelight':['NotFound','themeLight'],'themeundefined':['NotFound','themeUndefined'],'tip':['Tip','tip'],'tipblock':['Tip','block'],'tippro':['Tip','pro'],'tipinline':['Tip','inline'],'title':['SettingsItems','title'],'titlebar':['TitleBar','titleBar'],'titlebarmac':['TitleBar','typeMacOS'],'titlebarmacbutton':['TitleBar','macButton'],'titlebarmacbuttonclose':['TitleBar','macButtonClose'],'titlebarmacbuttonmin':['TitleBar','macButtonMinimize'],'titlebarmacbuttonmax':['TitleBar','macButtonMaximize'],'titlebarmacbuttons':['TitleBar','macButtons'],'titlebarmacwithframe':['TitleBar','typeMacOSWithFrame'],'titlebarwinbutton':['TitleBar','winButton'],'titlebarwinbuttonclose':['TitleBar','winButtonClose'],'titlebarwinbuttonminmax':['TitleBar','winButtonMinMax'],'titlebarwindows':['TitleBar','typeWindows'],'titlebarwithframe':['TitleBar','withFrame'],'titlebarwordmark':['TitleBar','wordmark'],'titlebarwordmarkmac':['TitleBar','wordmarkMacOS'],'titlebarwordmarkwindows':['TitleBar','wordmarkWindows'],'titledefault':['SettingsItems','titleDefault'],'titlemini':['SettingsItems','titleMini'],'titlesize10':['UserPopout','size10'],'titlesize12':['UserPopout','size12'],'titlesize14':['UserPopout','size14'],'titlesize16':['UserPopout','size16'],'titlesize18':['Title','size18'],'tooltip':['Tooltip','tooltip'],'tooltipactivityicon':['TooltipGuild','activityIcon'],'tooltipblack':['Tooltip','tooltipBlack'],'tooltipbottom':['Tooltip','tooltipBottom'],'tooltipbrand':['Tooltip','tooltipBrand'],'tooltipcustom':['BDFDB','tooltipCustom'],'tooltipgreen':['Tooltip','tooltipGreen'],'tooltipgrey':['Tooltip','tooltipGrey'],'tooltipguildnametext':['TooltipGuild','guildNameText'],'tooltipguildnametextlimitedsize':['TooltipGuild','guildNameTextLimitedSize'],'tooltipleft':['Tooltip','tooltipLeft'],'tooltiplistitem':['GuildsItems','listItemTooltip'],'tooltippointer':['Tooltip','tooltipPointer'],'tooltipred':['Tooltip','tooltipRed'],'tooltipright':['Tooltip','tooltipRight'],'tooltiprow':['TooltipGuild','row'],'tooltiprowguildname':['TooltipGuild','rowGuildName'],'tooltiprowicon':['TooltipGuild','rowIcon'],'tooltiptop':['Tooltip','tooltipTop'],'tooltipyellow':['Tooltip','tooltipYellow'],'typing':['Typing','typing'],'typingcooldownwrapper':['Typing','cooldownWrapper'],'typingtext':['Typing','text'],'underline':['TextStyle','underline'],'unreadbar':['UnreadBar','bar'],'unreadbaractive':['UnreadBar','active'],'unreadbarcontainer':['UnreadBar','container'],'unreadbaricon':['UnreadBar','icon'],'unreadbarmention':['UnreadBar','mention'],'unreadbartext':['UnreadBar','text'],'unreadbarunread':['UnreadBar','unread'],'uploadmodal':['UploadModal','uploadModal'],'userinfo':['UserInfo','userInfo'],'userinfoavatar':['UserInfo','avatar'],'userinfodiscordtag':['UserInfo','discordTag'],'userinfodiscriminator':['UserInfo','discriminator'],'userinfohovered':['UserInfo','hovered'],'userinfosubtext':['UserInfo','subtext'],'userinfotext':['UserInfo','text'],'userinfousername':['UserInfo','username'],'userpopout':['UserPopout','userPopout'],'userpopoutavatarhint':['UserPopout','avatarHint'],'userpopoutavatarhintinner':['UserPopout','avatarHintInner'],'userpopoutavatarwrapper':['UserPopout','avatarWrapper'],'userpopoutavatarwrappernormal':['UserPopout','avatarWrapperNormal'],'userpopoutbody':['UserPopout','body'],'userpopoutbodyinner':['UserPopout','bodyInner'],'userpopoutbodytitle':['UserPopout','bodyTitle'],'userpopoutcustomstatus':['UserPopout','customStatus'],'userpopoutcustomstatusemoji':['UserPopout','customStatusEmoji'],'userpopoutcustomstatussoloemoji':['UserPopout','customStatusSoloEmoji'],'userpopoutcustomstatustext':['UserPopout','customStatusText'],'userpopoutendbodysection':['UserPopout','endBodySection'],'userpopoutfooter':['UserPopout','footer'],'userpopoutheader':['UserPopout','header'],'userpopoutheaderbottagwithnickname':['UserPopout','headerBotTagWithNickname'],'userpopoutheadernamewrapper':['UserPopout','headerNameWrapper'],'userpopoutheadernickname':['UserPopout','headerName'],'userpopoutheadernormal':['UserPopout','headerNormal'],'userpopoutheaderplaying':['UserPopout','headerPlaying'],'userpopoutheaderspotify':['UserPopout','headerSpotify'],'userpopoutheaderstreaming':['UserPopout','headerStreaming'],'userpopoutheadertag':['UserPopout','headerTag'],'userpopoutheadertagnonickname':['UserPopout','headerTagNoNickname'],'userpopoutheadertagusernamenonickname':['UserPopout','headerTagUsernameNoNickname'],'userpopoutheadertagwithnickname':['UserPopout','headerTagWithNickname'],'userpopoutheadertext':['UserPopout','headerText'],'userpopoutheadertop':['UserPopout','headerTop'],'userpopoutprotip':['UserPopout','protip'],'userpopoutrole':['Role','role'],'userpopoutrolecircle':['Role','roleCircle'],'userpopoutrolelist':['UserPopout','rolesList'],'userpopoutrolename':['Role','roleName'],'userpopoutroles':['Role','root'],'userprofile':['UserProfile','root'],'userprofilebody':['UserProfile','body'],'userprofilebottag':['UserProfile','botTag'],'userprofilecustomstatus':['UserProfile','customStatusText'],'userprofilecustomstatusemoji':['UserProfile','customStatusEmoji'],'userprofileheader':['UserProfile','header'],'userprofileheaderfill':['UserProfile','headerFill'],'userprofileheaderinfo':['UserProfile','headerInfo'],'userprofilelistavatar':['UserProfile','listAvatar'],'userprofilelistguildavatarwithouticon':['UserProfile','guildAvatarWithoutIcon'],'userprofilenametag':['UserProfile','nameTag'],'userprofiletopsectionnormal':['UserProfile','topSectionNormal'],'userprofiletopsectionplaying':['UserProfile','topSectionPlaying'],'userprofiletopsectionspotify':['UserProfile','topSectionSpotify'],'userprofiletopsectionstreaming':['UserProfile','topSectionStreaming'],'userprofiletopsectionxbox':['UserProfile','topSectionXbox'],'userprofileusername':['UserProfile','username'],'username':['NameTag','username'],'usernote':['Note','note'],'usernotepopout':['UserPopout','note'],'usernoteprofile':['UserProfile','note'],'vertical':['Flex','vertical'],'voiceavatar':['VoiceChannel','avatar'],'voiceavatarcontainer':['VoiceChannel','avatarContainer'],'voiceavatarlarge':['VoiceChannel','avatarLarge'],'voiceavatarsmall':['VoiceChannel','avatarSmall'],'voiceavatarspeaking':['VoiceChannel','avatarSpeaking'],'voiceclickable':['VoiceChannel','clickable'],'voicecontent':['VoiceChannel','content'],'voicedetails':['VoiceDetails','container'],'voicedetailschannel':['VoiceDetails','channel'],'voicedetailscustomstatuscontainer':['VoiceDetails','customStatusContainer'],'voicedetailshotspot':['VoiceDetails','hotspot'],'voicedetailsinactive':['VoiceDetailsPing','inactive'],'voicedetailsinner':['VoiceDetails','inner'],'voicedetailslabelwrapper':['VoiceDetailsPing','labelWrapper'],'voicedetailsping':['VoiceDetailsPing','ping'],'voicedetailspingforeground':['VoiceDetailsPing','pingForeground'],'voicedetailsqualityaverage':['VoiceDetailsPing','rtcConnectionQualityAverage'],'voicedetailsqualitybad':['VoiceDetailsPing','rtcConnectionQualityBad'],'voicedetailsqualityfine':['VoiceDetailsPing','rtcConnectionQualityFine'],'voicedetailsstatus':['VoiceDetailsPing','rtcConnectionStatus'],'voicedetailsstatusconnected':['VoiceDetailsPing','rtcConnectionStatusConnected'],'voicedetailsstatusconnecting':['VoiceDetailsPing','rtcConnectionStatusConnecting'],'voicedetailsstatuserror':['VoiceDetailsPing','rtcConnectionStatusError'],'voicedetailsstatuswithpopout':['VoiceDetails','statusWithPopout'],'voicedraggable':['NotFound','voiceDraggable'],'voiceflipped':['VoiceChannel','flipped'],'voiceicon':['VoiceChannel','icon'],'voiceicons':['VoiceChannel','icons'],'voiceiconspacing':['VoiceChannel','iconSpacing'],'voicelist':['VoiceChannel','list'],'voicelist2':['VoiceChannelList','list'],'voicelistcollapsed':['VoiceChannel','listCollapse'],'voicelistcollapsed2':['VoiceChannelList','collapsed'],'voicelistdefault':['VoiceChannel','listDefault'],'voiceliveicon':['VoiceChannel','liveIcon'],'voicename':['VoiceChannel','username'],'voicenamefont':['VoiceChannel','usernameFont'],'voicenamespeaking':['VoiceChannel','usernameSpeaking'],'voiceselected':['VoiceChannel','selected'],'voiceuser':['VoiceChannel','voiceUser'],'voiceuserlarge':['VoiceChannel','userLarge'],'voiceusersmall':['VoiceChannel','userSmall'],'wrap':['Flex','wrap'],'wrapreverse':['Flex','wrapReverse']};b['DiscordClasses']=Object['assign']({},p);c['getDiscordClass']=(D,E)=>{let F=o['BDFDB']['BDFDBundefined'];if(p[D]===undefined){b['LogUtils']['warn'](D+'\x20not\x20found\x20in\x20DiscordClasses');return F;}else if(!b['ArrayUtils']['is'](p[D])||p[D]['length']!=0x2){b['LogUtils']['warn'](D+'\x20is\x20not\x20an\x20Array\x20of\x20Length\x202\x20in\x20DiscordClasses');return F;}else if(o[p[D][0x0]]===undefined){b['LogUtils']['warn'](p[D][0x0]+'\x20not\x20found\x20in\x20DiscordClassModules');return F;}else if(o[p[D][0x0]][p[D][0x1]]===undefined){b['LogUtils']['warn'](p[D][0x1]+'\x20not\x20found\x20in\x20'+p[D][0x0]+'\x20in\x20DiscordClassModules');return F;}else{F=o[p[D][0x0]][p[D][0x1]];if(E){F=F['split']('\x20')['filter'](G=>G['indexOf']('da-')!=0x0)['join'](E?'.':'\x20');F=F||o['BDFDB']['BDFDBundefined'];}return F;}};b['disCN']=new Proxy(p,{'get':function(D,E){return c['getDiscordClass'](E,![])['replace']('#','');}});b['disCNS']=new Proxy(p,{'get':function(D,E){return c['getDiscordClass'](E,![])['replace']('#','')+'\x20';}});b['disCNC']=new Proxy(p,{'get':function(D,E){return c['getDiscordClass'](E,![])['replace']('#','')+',';}});b['dotCN']=new Proxy(p,{'get':function(D,E){let F=c['getDiscordClass'](E,!![]);return(F['indexOf']('#')==0x0?'':'.')+F;}});b['dotCNS']=new Proxy(p,{'get':function(D,E){let F=c['getDiscordClass'](E,!![]);return(F['indexOf']('#')==0x0?'':'.')+F+'\x20';}});b['dotCNC']=new Proxy(p,{'get':function(D,E){let F=c['getDiscordClass'](E,!![]);return(F['indexOf']('#')==0x0?'':'.')+F+',';}});b['notCN']=new Proxy(p,{'get':function(D,E){return':not(.'+c['getDiscordClass'](E,!![])['split']('.')[0x0]+')';}});b['notCNS']=new Proxy(p,{'get':function(D,E){return':not(.'+c['getDiscordClass'](E,!![])['split']('.')[0x0]+')\x20';}});b['notCNC']=new Proxy(p,{'get':function(D,E){return':not(.'+c['getDiscordClass'](E,!![])['split']('.')[0x0]+'),';}});var q=k['LanguageStore']&&k['LanguageStore']['_proxyContext']?Object['assign']({},k['LanguageStore']['_proxyContext']['defaultMessages']):{};b['LanguageUtils']={};b['LanguageUtils']['languages']={'$discord':{'name':'Discord\x20(English))','id':'en','ownlang':'English','integrated':![],'dic':![]},'af':{'name':'Afrikaans','id':'af','ownlang':'Afrikaans','integrated':![],'dic':!![]},'sq':{'name':'Albanian','id':'sq','ownlang':'Shqiptar','integrated':![],'dic':![]},'am':{'name':'Amharic','id':'am','ownlang':'አማርኛ','integrated':![],'dic':![]},'ar':{'name':'Arabic','id':'ar','ownlang':'اللغة\x20العربية','integrated':![],'dic':![]},'hy':{'name':'Armenian','id':'hy','ownlang':'Հայերեն','integrated':![],'dic':![]},'az':{'name':'Azerbaijani','id':'az','ownlang':'آذربایجان\x20دیلی','integrated':![],'dic':![]},'ba':{'name':'Bashkir','id':'ba','ownlang':'Башҡорт','integrated':![],'dic':![]},'eu':{'name':'Basque','id':'eu','ownlang':'Euskara','integrated':![],'dic':![]},'be':{'name':'Belarusian','id':'be','ownlang':'Беларуская','integrated':![],'dic':![]},'bn':{'name':'Bengali','id':'bn','ownlang':'বাংলা','integrated':![],'dic':![]},'bs':{'name':'Bosnian','id':'bs','ownlang':'Босански','integrated':![],'dic':![]},'bg':{'name':'Bulgarian','id':'bg','ownlang':'български','integrated':!![],'dic':![]},'my':{'name':'Burmese','id':'my','ownlang':'မြန်မာစာ','integrated':![],'dic':![]},'ca':{'name':'Catalan','id':'ca','ownlang':'Català','integrated':![],'dic':![]},'ceb':{'name':'Cebuano','id':'ceb','ownlang':'Bisaya','integrated':![],'dic':![]},'ny':{'name':'Chichewa','id':'ny','ownlang':'Nyanja','integrated':![],'dic':![]},'zh':{'name':'Chinese','id':'zh','ownlang':'中文','integrated':![],'dic':![]},'zh-HK':{'name':'Chinese\x20(Hong\x20Kong)','id':'zh-HK','ownlang':'香港中文','integrated':![],'dic':![]},'zh-CN':{'name':'Chinese\x20(Simplified)','id':'zh-CN','ownlang':'简体中文','integrated':![],'dic':![]},'zh-TW':{'name':'Chinese\x20(Traditional)','id':'zh-TW','ownlang':'繁體中文','integrated':!![],'dic':![]},'co':{'name':'Corsican','id':'co','ownlang':'Corsu','integrated':![],'dic':![]},'hr':{'name':'Croatian','id':'hr','ownlang':'Hrvatski','integrated':!![],'dic':![]},'cs':{'name':'Czech','id':'cs','ownlang':'Čeština','integrated':!![],'dic':![]},'da':{'name':'Danish','id':'da','ownlang':'Dansk','integrated':!![],'dic':!![]},'nl':{'name':'Dutch','id':'nl','ownlang':'Nederlands','integrated':!![],'dic':!![]},'en':{'name':'English','id':'en','ownlang':'English','integrated':![],'dic':!![]},'en-GB':{'name':'English\x20(UK)','id':'en-GB','ownlang':'English\x20(UK)','integrated':!![],'dic':!![]},'en-US':{'name':'English\x20(US)','id':'en-US','ownlang':'English\x20(US)','integrated':!![],'dic':!![]},'eo':{'name':'Esperanto','id':'eo','ownlang':'Esperanto','integrated':![],'dic':![]},'et':{'name':'Estonian','id':'et','ownlang':'Eesti','integrated':![],'dic':![]},'fil':{'name':'Filipino','id':'fil','ownlang':'Wikang\x20Filipino','integrated':![],'dic':![]},'fi':{'name':'Finnish','id':'fi','ownlang':'Suomi','integrated':!![],'dic':![]},'fr':{'name':'French','id':'fr','ownlang':'Français','integrated':!![],'dic':!![]},'fr-CA':{'name':'French\x20(Canadian)','id':'fr-CA','ownlang':'Français\x20Canadien','integrated':![],'dic':![]},'fy':{'name':'Frisian','id':'fy','ownlang':'Frysk','integrated':![],'dic':![]},'gl':{'name':'Galician','id':'gl','ownlang':'Galego','integrated':![],'dic':![]},'ka':{'name':'Georgian','id':'ka','ownlang':'ქართული','integrated':![],'dic':![]},'de':{'name':'German','id':'de','ownlang':'Deutsch','integrated':!![],'dic':!![]},'de-AT':{'name':'German\x20(Austria)','id':'de-AT','ownlang':'Österreichisch\x20Deutsch','integrated':![],'dic':![]},'de-CH':{'name':'German\x20(Switzerland)','id':'de-CH','ownlang':'Schweizerdeutsch','integrated':![],'dic':![]},'el':{'name':'Greek','id':'el','ownlang':'Ελληνικά','integrated':![],'dic':![]},'gu':{'name':'Gujarati','id':'gu','ownlang':'ગુજરાતી','integrated':![],'dic':![]},'ht':{'name':'Haitian\x20Creole','id':'ht','ownlang':'Kreyòl\x20Ayisyen','integrated':![],'dic':![]},'ha':{'name':'Hausa','id':'ha','ownlang':'حَوْسَ','integrated':![],'dic':![]},'haw':{'name':'Hawaiian','id':'haw','ownlang':'ʻŌlelo\x20Hawaiʻi','integrated':![],'dic':![]},'he':{'name':'Hebrew','id':'he','ownlang':'עברית','integrated':![],'dic':![]},'iw':{'name':'Hebrew\x20(Israel)','id':'iw','ownlang':'עברית','integrated':![],'dic':![]},'hi':{'name':'Hindi','id':'hi','ownlang':'हिन्दी','integrated':![],'dic':![]},'hmn':{'name':'Hmong','id':'hmn','ownlang':'lol\x20Hmongb','integrated':![],'dic':![]},'hu':{'name':'Hungarian','id':'hu','ownlang':'Magyar','integrated':![],'dic':![]},'is':{'name':'Icelandic','id':'is','ownlang':'Íslenska','integrated':![],'dic':![]},'ig':{'name':'Igbo','id':'ig','ownlang':'Asụsụ\x20Igbo','integrated':![],'dic':![]},'id':{'name':'Indonesian','id':'id','ownlang':'Bahasa\x20Indonesia','integrated':![],'dic':![]},'ga':{'name':'Irish','id':'ga','ownlang':'Gaeilge','integrated':![],'dic':![]},'it':{'name':'Italian','id':'it','ownlang':'Italiano','integrated':!![],'dic':!![]},'ja':{'name':'Japanese','id':'ja','ownlang':'日本語','integrated':!![],'dic':![]},'jv':{'name':'Javanese','id':'jv','ownlang':'ꦧꦱꦗꦮ','integrated':![],'dic':![]},'jw':{'name':'Javanese\x20(Javanese)','id':'jw','ownlang':'ꦧꦱꦗꦮ','integrated':![],'dic':![]},'kn':{'name':'Kannada','id':'kn','ownlang':'ಕನ್ನಡ','integrated':![],'dic':![]},'kk':{'name':'Kazakh','id':'kk','ownlang':'Қазақ\x20Tілі','integrated':![],'dic':![]},'km':{'name':'Khmer','id':'km','ownlang':'ភាសាខ្មែរ','integrated':![],'dic':![]},'rw':{'name':'Kinyarwanda','id':'rw','ownlang':'Ikinyarwanda','integrated':![],'dic':![]},'ko':{'name':'Korean','id':'ko','ownlang':'한국어','integrated':!![],'dic':![]},'ku':{'name':'Kurdish','id':'ku','ownlang':'کوردی','integrated':![],'dic':![]},'ky':{'name':'Kyrgyz','id':'ky','ownlang':'кыргызча','integrated':![],'dic':![]},'lo':{'name':'Lao','id':'lo','ownlang':'ພາສາລາວ','integrated':![],'dic':![]},'la':{'name':'Latin','id':'la','ownlang':'Latina','integrated':![],'dic':![]},'lv':{'name':'Latvian','id':'lv','ownlang':'Latviešu','integrated':![],'dic':![]},'lt':{'name':'Lithuanian','id':'lt','ownlang':'Lietuvių','integrated':![],'dic':![]},'lb':{'name':'Luxembourgish','id':'lb','ownlang':'Lëtzebuergesch','integrated':![],'dic':![]},'mk':{'name':'Macedonian','id':'mk','ownlang':'Mакедонски','integrated':![],'dic':![]},'mg':{'name':'Malagasy','id':'mg','ownlang':'Malagasy','integrated':![],'dic':![]},'ms':{'name':'Malay','id':'ms','ownlang':'بهاس\x20ملايو','integrated':![],'dic':![]},'ml':{'name':'Malayalam','id':'ml','ownlang':'മലയാളം','integrated':![],'dic':![]},'mt':{'name':'Maltese','id':'mt','ownlang':'Malti','integrated':![],'dic':![]},'mi':{'name':'Maori','id':'mi','ownlang':'te\x20Reo\x20Māori','integrated':![],'dic':![]},'mr':{'name':'Marathi','id':'mr','ownlang':'मराठी','integrated':![],'dic':![]},'mhr':{'name':'Mari','id':'mhr','ownlang':'марий\x20йылме','integrated':![],'dic':![]},'mn':{'name':'Mongolian','id':'mn','ownlang':'Монгол\x20Хэл','integrated':![],'dic':![]},'my':{'name':'Myanmar\x20(Burmese)','id':'my','ownlang':'မြန်မာл\x20Хэл','integrated':![],'dic':![]},'ne':{'name':'Nepali','id':'ne','ownlang':'नेपाली','integrated':![],'dic':![]},'no':{'name':'Norwegian','id':'no','ownlang':'Norsk','integrated':!![],'dic':![]},'or':{'name':'Odia','id':'or','ownlang':'ଓଡ଼ିଆ','integrated':![],'dic':![]},'pap':{'name':'Papiamento','id':'pap','ownlang':'Papiamentu','integrated':![],'dic':![]},'ps':{'name':'Pashto','id':'ps','ownlang':'پښتو','integrated':![],'dic':![]},'fa':{'name':'Persian','id':'fa','ownlang':'فارسی','integrated':![],'dic':![]},'pl':{'name':'Polish','id':'pl','ownlang':'Polski','integrated':!![],'dic':!![]},'pt':{'name':'Portuguese','id':'pt','ownlang':'Português','integrated':![],'dic':!![]},'pt-BR':{'name':'Portuguese\x20(Brazil)','id':'pt-BR','ownlang':'Português\x20do\x20Brasil','integrated':!![],'dic':!![]},'pt-PT':{'name':'Portuguese\x20(Portugal)','id':'pt-PT','ownlang':'Português\x20do\x20Portugal','integrated':![],'dic':![]},'pa':{'name':'Punjabi','id':'pa','ownlang':'पंजाबी','integrated':![],'dic':![]},'ro':{'name':'Romanian','id':'ro','ownlang':'Română','integrated':![],'dic':![]},'ru':{'name':'Russian','id':'ru','ownlang':'Pусский','integrated':!![],'dic':!![]},'sm':{'name':'Samoan','id':'sm','ownlang':'Gagana\x20Sāmoa','integrated':![],'dic':![]},'gd':{'name':'Scottish\x20Gaelic','id':'gd','ownlang':'Gàidhlig','integrated':![],'dic':![]},'sr':{'name':'Serbian','id':'sr','ownlang':'Српски','integrated':![],'dic':![]},'st':{'name':'Sesotho','id':'st','ownlang':'Sesotho','integrated':![],'dic':![]},'sn':{'name':'Shona','id':'sn','ownlang':'Shona','integrated':![],'dic':![]},'sd':{'name':'Sindhi','id':'sd','ownlang':'سنڌي','integrated':![],'dic':![]},'si':{'name':'Sinhala','id':'si','ownlang':'සිංහල','integrated':![],'dic':![]},'sk':{'name':'Slovak','id':'sk','ownlang':'Slovenčina','integrated':![],'dic':![]},'sl':{'name':'Slovenian','id':'sl','ownlang':'Slovenščina','integrated':![],'dic':![]},'so':{'name':'Somali','id':'so','ownlang':'Soomaali','integrated':![],'dic':![]},'es':{'name':'Spanish','id':'es','ownlang':'Español','integrated':!![],'dic':!![]},'es-419':{'name':'Spanish\x20(Latin\x20America)','id':'es-419','ownlang':'Español\x20latinoamericano','integrated':![],'dic':![]},'su':{'name':'Sundanese','id':'su','ownlang':'Basa\x20Sunda','integrated':![],'dic':![]},'sw':{'name':'Swahili','id':'sw','ownlang':'Kiswahili','integrated':![],'dic':![]},'sv':{'name':'Swedish','id':'sv','ownlang':'Svenska','integrated':!![],'dic':!![]},'tl':{'name':'Tagalog','id':'tl','ownlang':'Wikang\x20Tagalog','integrated':![],'dic':![]},'tg':{'name':'Tajik','id':'tg','ownlang':'тоҷикӣ','integrated':![],'dic':![]},'ta':{'name':'Tamil','id':'ta','ownlang':'தமிழ்','integrated':![],'dic':![]},'tt':{'name':'Tatar','id':'tt','ownlang':'татарча','integrated':![],'dic':![]},'te':{'name':'Telugu','id':'te','ownlang':'తెలుగు','integrated':![],'dic':![]},'th':{'name':'Thai','id':'th','ownlang':'ภาษาไทย','integrated':![],'dic':![]},'tr':{'name':'Turkish','id':'tr','ownlang':'Türkçe','integrated':!![],'dic':![]},'tk':{'name':'Turkmen','id':'tk','ownlang':'Türkmençe','integrated':![],'dic':![]},'udm':{'name':'Udmurt','id':'udm','ownlang':'удмурт\x20кыл','integrated':![],'dic':![]},'uk':{'name':'Ukrainian','id':'uk','ownlang':'Yкраїнський','integrated':!![],'dic':![]},'ur':{'name':'Urdu','id':'ur','ownlang':'اُردُو','integrated':![],'dic':![]},'ug':{'name':'Uyghur','id':'ug','ownlang':'ئۇيغۇر\x20تىلى','integrated':![],'dic':![]},'uz':{'name':'Uzbek','id':'uz','ownlang':'اوزبیک','integrated':![],'dic':![]},'vi':{'name':'Vietnamese','id':'vi','ownlang':'Tiếng\x20Việt\x20Nam','integrated':![],'dic':![]},'cy':{'name':'Welsh','id':'cy','ownlang':'Cymraeg','integrated':![],'dic':![]},'xh':{'name':'Xhosa','id':'xh','ownlang':'Xhosa','integrated':![],'dic':![]},'yi':{'name':'Yiddish','id':'yi','ownlang':'ייִדיש\x20ייִדיש','integrated':![],'dic':![]},'yo':{'name':'Yoruba','id':'yo','ownlang':'Èdè\x20Yorùbá','integrated':![],'dic':![]},'zu':{'name':'Zulu','id':'zu','ownlang':'Zulu','integrated':![],'dic':![]}};c['LibraryStrings']={'hr':{'toast_plugin_started':'{{var0}}\x20je\x20započeo.','toast_plugin_stopped':'{{var0}}\x20zaustavljen.','toast_plugin_translated':'prijevod\x20na\x20{{var0}}.','file_navigator_text':'Pregledajte\x20datoteku'},'da':{'toast_plugin_started':'{{var0}}\x20er\x20startet.','toast_plugin_stopped':'{{var0}}\x20er\x20stoppet.','toast_plugin_translated':'oversat\x20til\x20{{var0}}.','file_navigator_text':'Gennemse\x20fil'},'de':{'toast_plugin_started':'{{var0}}\x20wurde\x20gestartet.','toast_plugin_stopped':'{{var0}}\x20wurde\x20gestoppt.','toast_plugin_translated':'auf\x20{{var0}}\x20übersetzt.','file_navigator_text':'Datei\x20durchsuchen'},'es':{'toast_plugin_started':'{{var0}}\x20se\x20guilddiv\x20iniciado.','toast_plugin_stopped':'{{var0}}\x20se\x20guilddiv\x20detenido.','toast_plugin_translated':'traducido\x20a\x20{{var0}}.','file_navigator_text':'Buscar\x20archivo'},'fr':{'toast_plugin_started':'{{var0}}\x20a\x20été\x20démarré.','toast_plugin_stopped':'{{var0}}\x20a\x20été\x20arrêté.','toast_plugin_translated':'traduit\x20en\x20{{var0}}.','file_navigator_text':'Parcourir\x20le\x20fichier'},'it':{'toast_plugin_started':'{{var0}}\x20è\x20stato\x20avviato.','toast_plugin_stopped':'{{var0}}\x20è\x20stato\x20interrotto.','toast_plugin_translated':'tradotto\x20in\x20{{var0}}.','file_navigator_text':'Sfoglia\x20file'},'nl':{'toast_plugin_started':'{{var0}}\x20is\x20gestart.','toast_plugin_stopped':'{{var0}}\x20is\x20gestopt.','toast_plugin_translated':'vertaald\x20naar\x20{{var0}}.','file_navigator_text':'Bestand\x20zoeken'},'no':{'toast_plugin_started':'{{var0}}\x20er\x20startet.','toast_plugin_stopped':'{{var0}}\x20er\x20stoppet.','toast_plugin_translated':'oversatt\x20til\x20{{var0}}.','file_navigator_text':'Bla\x20gjennom\x20fil'},'pl':{'toast_plugin_started':'{{var0}}\x20został\x20uruchomiony.','toast_plugin_stopped':'{{var0}}\x20został\x20zatrzymany.','toast_plugin_translated':'przetłumaczono\x20na\x20{{var0}}.','file_navigator_text':'Przeglądać\x20plik'},'pt-BR':{'toast_plugin_started':'{{var0}}\x20foi\x20iniciado.','toast_plugin_stopped':'{{var0}}\x20foi\x20interrompido.','toast_plugin_translated':'traduzido\x20para\x20{{var0}}.','file_navigator_text':'Procurar\x20arquivo'},'fi':{'toast_plugin_started':'{{var0}}\x20on\x20käynnistetty.','toast_plugin_stopped':'{{var0}}\x20on\x20pysäytetty.','toast_plugin_translated':'käännetty\x20osoitteeseen\x20{{var0}}.','file_navigator_text':'Selaa\x20tiedostoa'},'sv':{'toast_plugin_started':'{{var0}}\x20har\x20startats.','toast_plugin_stopped':'{{var0}}\x20har\x20blivit\x20stoppad.','toast_plugin_translated':'översatt\x20till\x20{{var0}}.','file_navigator_text':'Bläddra\x20i\x20fil'},'tr':{'toast_plugin_started':'{{var0}}\x20başlatıldı.','toast_plugin_stopped':'{{var0}}\x20durduruldu.','toast_plugin_translated':'{{var0}}\x20olarak\x20çevrildi.','file_navigator_text':'Dosyaya\x20gözat'},'cs':{'toast_plugin_started':'{{var0}}\x20byl\x20spuštěn.','toast_plugin_stopped':'{{var0}}\x20byl\x20zastaven.','toast_plugin_translated':'přeložen\x20do\x20{{var0}}.','file_navigator_text':'Procházet\x20soubor'},'bg':{'toast_plugin_started':'{{var0}}\x20е\x20стартиран.','toast_plugin_stopped':'{{var0}}\x20е\x20спрян.','toast_plugin_translated':'преведена\x20на\x20{{var0}}.','file_navigator_text':'Прегледайте\x20файла'},'ru':{'toast_plugin_started':'{{var0}}\x20запущен.','toast_plugin_stopped':'{{var0}}\x20остановлен.','toast_plugin_translated':'переведен\x20на\x20{{var0}}.','file_navigator_text':'Просмотр\x20файла'},'uk':{'toast_plugin_started':'{{var0}}\x20було\x20запущено.','toast_plugin_stopped':'{{var0}}\x20було\x20зупинено.','toast_plugin_translated':'перекладено\x20{{var0}}.','file_navigator_text':'Перегляньте\x20файл'},'ja':{'toast_plugin_started':'{{var0}}が開始されました.','toast_plugin_stopped':'{{var0}}が停止しました.','toast_plugin_translated':'は{{var0}}に翻訳されました.','file_navigator_text':'ファイルを参照'},'zh-TW':{'toast_plugin_started':'{{var0}}已經啟動.','toast_plugin_stopped':'{{var0}}已停止.','toast_plugin_translated':'翻譯為{{var0}}.','file_navigator_text':'瀏覽文件'},'ko':{'toast_plugin_started':'{{var0}}\x20시작되었습니다.','toast_plugin_stopped':'{{var0}}\x20중지되었습니다.','toast_plugin_translated':'{{var0}}\x20로\x20번역되었습니다.','file_navigator_text':'파일\x20찾아보기'},'default':{'toast_plugin_started':'{{var0}}\x20has\x20been\x20started.','toast_plugin_stopped':'{{var0}}\x20has\x20been\x20stopped.','toast_plugin_translated':'translated\x20to\x20{{var0}}.','file_navigator_text':'Browse\x20File'}};b['LanguageUtils']['getLanguage']=function(){let D=document['querySelector']('html')['lang']||'en';if(D=='en-GB'||D=='en-US')D='en';let E=D['split']('-');let F=E[0x0];let G=E[0x1]||'';D=G&&F['toUpperCase']()!==G['toUpperCase']()?F+'-'+G:F;return b['LanguageUtils']['languages'][D]||b['LanguageUtils']['languages'][F]||b['LanguageUtils']['languages']['en'];};b['LanguageUtils']['LanguageStrings']=new Proxy(q,{'get':function(D,E){let F=k['LanguageStore']['Messages'][E];if(!F)b['LogUtils']['warn'](E+'\x20not\x20found\x20in\x20BDFDB.LanguageUtils.LanguageStrings');else{if(F&&typeof F=='object'&&typeof F['format']=='function')return b['LanguageUtils']['LanguageStringsFormat'](E);else return F;}return'';}});b['LanguageUtils']['LanguageStringsCheck']=new Proxy(q,{'get':function(D,E){return!!k['LanguageStore']['Messages'][E];}});b['LanguageUtils']['LanguageStringsFormat']=function(D,...E){if(D){let F=k['LanguageStore']['Messages'][D];if(F&&typeof F=='object'&&typeof F['format']=='function'){let G=0x0,H,I={};while(!H&&G<0xa){G++;try{H=F['format'](I);}catch(J){H=null;let K=E['shift']();I[J['toString']()['split']('for:\x20')[0x1]]=K!=null?K===0x0?'0':K:'undefined';}}if(H){if(b['ArrayUtils']['is'](H)){let L='';for(let M of H){if(typeof M=='string')L+=b['StringUtils']['htmlEscape'](M);else if(b['ObjectUtils']['is'](M)&&M['props'])L+='<'+M['type']+'>'+b['StringUtils']['htmlEscape'](M['props']['children'][0x0]['toString']())+''+M['type']+'>';}return L;}return H;}else{b['LogUtils']['warn'](D+'\x20failed\x20to\x20format\x20string\x20in\x20BDFDB.LanguageUtils.LanguageStrings');return'';}}else return b['LanguageUtils']['LanguageStrings'][D];}else b['LogUtils']['warn'](D+'\x20enter\x20a\x20valid\x20key\x20to\x20format\x20the\x20string\x20in\x20BDFDB.LanguageUtils.LanguageStrings');return'';};b['LanguageUtils']['LibraryStrings']=new Proxy(c['LibraryStrings']['default'],{'get':function(D,E){let F=b['LanguageUtils']['getLanguage']()['id'];if(c['LibraryStrings'][F]&&c['LibraryStrings'][F][E])return c['LibraryStrings'][F][E];else if(c['LibraryStrings']['default'][E])return c['LibraryStrings']['default'][E];else b['LogUtils']['warn'](E+'\x20not\x20found\x20in\x20BDFDB.LanguageUtils.LibraryStrings');return'';}});b['LanguageUtils']['LibraryStringsCheck']=new Proxy(q,{'get':function(D,E){return!!c['LibraryStrings']['default'][E];}});b['LanguageUtils']['LibraryStringsFormat']=function(D,...E){if(D&&E['length']){let F=b['LanguageUtils']['getLanguage']()['id'],G=null;if(c['LibraryStrings'][F]&&c['LibraryStrings'][F][D])G=c['LibraryStrings'][F][D];else if(c['LibraryStrings']['default'][D])G=c['LibraryStrings']['default'][D];if(G){for(let H=0x0;H{if(document['querySelector']('html')['lang']){b['TimeUtils']['clear'](r);var E=b['LanguageUtils']['getLanguage']();b['LanguageUtils']['languages']['$discord']['name']='Discord\x20('+E['name']+')';b['LanguageUtils']['languages']['$discord']['id']=E['id'];b['LanguageUtils']['languages']['$discord']['google']=E['google'];b['LanguageUtils']['languages']['$discord']['ownlang']=E['ownlang'];}},0x64);var s={'NativeSubComponents':{},'LibraryComponents':{}},t=k['React']&&k['React']['Component'];s['NativeSubComponents']['Button']=b['ModuleUtils']['findByProperties']('Colors','Hovers','Looks');s['NativeSubComponents']['Checkbox']=b['ModuleUtils']['findByName']('Checkbox');s['NativeSubComponents']['Clickable']=b['ModuleUtils']['findByName']('Clickable');s['NativeSubComponents']['ContextMenuItem']=b['ModuleUtils']['findByString']('default.item','default.hint','danger','brand');s['NativeSubComponents']['ContextMenuSliderItem']=b['ModuleUtils']['findByName']('SliderMenuItem');s['NativeSubComponents']['ContextMenuToggleItem']=b['ModuleUtils']['findByName']('ToggleMenuItem');s['NativeSubComponents']['FavButton']=b['ModuleUtils']['findByName']('GIFFavButton');s['NativeSubComponents']['KeybindRecorder']=b['ModuleUtils']['findByName']('KeybindRecorder');s['NativeSubComponents']['PopoutContainer']=b['ModuleUtils']['findByName']('Popout');s['NativeSubComponents']['QuickSelect']=b['ModuleUtils']['findByName']('QuickSelectWrapper');s['NativeSubComponents']['RadioGroup']=b['ModuleUtils']['findByName']('RadioGroup');s['NativeSubComponents']['SearchBar']=b['ModuleUtils']['find'](D=>D&&D['displayName']=='SearchBar'&&D['defaultProps']['placeholder']==b['LanguageUtils']['LanguageStrings']['SEARCH']);s['NativeSubComponents']['Select']=b['ModuleUtils']['findByName']('SelectTempWrapper');s['NativeSubComponents']['Slider']=b['ModuleUtils']['findByName']('Slider');s['NativeSubComponents']['Switch']=b['ModuleUtils']['findByName']('Switch');s['NativeSubComponents']['TabBar']=b['ModuleUtils']['findByName']('TabBar');s['NativeSubComponents']['Table']=b['ModuleUtils']['findByName']('Table');s['NativeSubComponents']['TextArea']=b['ModuleUtils']['findByName']('TextArea');s['NativeSubComponents']['TextInput']=b['ModuleUtils']['findByName']('TextInput');s['NativeSubComponents']['TooltipContainer']=b['ModuleUtils']['findByName']('Tooltip');s['LibraryComponents']['AddonCard']=c['loadPatchedComp']('AddonCard')||t&&class BDFDB_AddonCard extends k['React']['Component']{['render'](){return!b['ObjectUtils']['is'](this['props']['data'])?null:b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['_repoentry'],this['props']['className'],b['disCN']['_repocard'],b['disCN']['_reposettingsclosed'],b['disCN']['_repocheckboxitem']),'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repoheader'],'style':{'overflow':'visible'},'children':[b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repoheadertitle'],'children':[b['ReactUtils']['createElement']('span',{'className':b['disCN']['_reponame'],'children':this['props']['data']['name']}),'\x20v',b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repoversion'],'children':this['props']['data']['version']}),'\x20by\x20',b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repoauthor'],'children':this['props']['data']['author']})]}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repocontrols'],'children':this['props']['controls']})]}),b['ReactUtils']['createElement'](s['LibraryComponents']['ScrollerVertical'],{'outerClassName':b['disCNS']['_repodescriptionwrap'],'className':b['disCNS']['_repodescription'],'children':this['props']['data']['description']}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repofooter'],'children':[b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repolinks'],'children':[]['concat'](this['props']['links'])['map']((D,E)=>b['ObjectUtils']['is'](D)&&[E>0x0&&'\x20|\x20',b['ReactUtils']['createElement']('a',{'className':b['DOMUtils']['formatClassName'](b['disCN']['_repolink'],typeof D['label']=='string'&&b['disCN']['_repolink']+'-'+D['label']['toLowerCase']()['replace'](/\s/g,'')),'href':D['href'],'children':D['label']})])['flat'](0xa)['filter'](D=>D)}),this['props']['buttons']]['flat'](0xa)['filter'](D=>D)})]});}};s['LibraryComponents']['Anchor']=b['ModuleUtils']['findByName']('Anchor');s['LibraryComponents']['Animations']=Object['assign']({},b['ModuleUtils']['findByProperties']('Controller','Spring'));s['LibraryComponents']['AutocompleteItems']=b['ModuleUtils']['findByProperties']('Generic','User','Command');s['LibraryComponents']['AutocompleteMenu']=b['ModuleUtils']['findByName']('Autocomplete');s['LibraryComponents']['Avatar']=(b['ModuleUtils']['findByProperties']('AnimatedAvatar')||{})['default'];s['LibraryComponents']['BadgeAnimationContainer']=c['loadPatchedComp']('BadgeAnimationContainer')||t&&class BDFDB_BadgeAnimationContainer extends k['React']['Component']{['componentDidMount'](){b['ReactUtils']['forceUpdate'](this);}['componentWillAppear'](D){if(typeof D=='function')D();}['componentWillEnter'](D){if(typeof D=='function')D();}['componentWillLeave'](D){if(typeof D=='function')this['timeoutId']=setTimeout(D,0x12c);}['componentWillUnmount'](){clearTimeout(this['timeoutId']);}['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['Animations']['animated']['div'],{'className':this['props']['className'],'style':this['props']['animatedStyle'],'children':this['props']['children']});}};s['LibraryComponents']['Badges']=Object['assign']({},b['ModuleUtils']['findByProperties']('IconBadge','NumberBadge'));s['LibraryComponents']['Badges']['IconBadge']=c['loadPatchedComp']('Badges.IconBadge')||t&&class BDFDB_IconBadge extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['badgeiconbadge'],this['props']['className']),'style':Object['assign']({'backgroundColor':this['props']['disableColor']?null:this['props']['color']||b['DiscordConstants']['Colors']['STATUS_RED']},this['props']['style']),'children':b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'className':b['disCN']['badgeicon'],'name':this['props']['icon']})});}};s['LibraryComponents']['BotTag']=c['loadPatchedComp']('BotTag')||t&&class BDFDB_BotTag extends k['React']['Component']{['handleClick'](D){if(typeof this['props']['onClick']=='function')this['props']['onClick'](D,this);}['handleContextMenu'](D){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](D,this);}['render'](){return b['ReactUtils']['createElement']('span',{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['invertColor']?b['disCN']['bottaginvert']:b['disCN']['bottagregular'],this['props']['useRemSizes']?b['disCN']['bottagrem']:b['disCN']['bottagpx']),'style':this['props']['style'],'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'children':b['ReactUtils']['createElement']('span',{'className':b['disCN']['bottagtext'],'children':this['props']['tag']||b['LanguageUtils']['LanguageStrings']['BOT_TAG_BOT']})});}};s['LibraryComponents']['Button']=c['loadPatchedComp']('Button')||t&&class BDFDB_Button extends k['React']['Component']{['handleClick'](D){if(typeof this['props']['onClick']=='function')this['props']['onClick'](D,this);}['handleContextMenu'](D){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](D,this);}['handleMouseDown'](D){if(typeof this['props']['onMouseDown']=='function')this['props']['onMouseDown'](D,this);}['handleMouseUp'](D){if(typeof this['props']['onMouseUp']=='function')this['props']['onMouseUp'](D,this);}['handleMouseEnter'](D){if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](D,this);}['handleMouseLeave'](D){if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](D,this);}['render'](){let D=(this['props']['disabled']||this['props']['submitting'])&&(null!=this['props']['onMouseEnter']||null!=this['props']['onMouseLeave']);let E=b['ObjectUtils']['exclude'](this['props'],'look','color','hover','size','fullWidth','grow','disabled','submitting','type','style','wrapperClassName','className','innerClassName','onClick','onContextMenu','onMouseDown','onMouseUp','onMouseEnter','onMouseLeave','children','rel');let F=b['ReactUtils']['createElement']('button',Object['assign']({},!this['props']['disabled']&&!this['props']['submitting']&&E,{'className':b['DOMUtils']['formatClassName'](this['props']['className'],b['disCN']['button'],this['props']['look']!=null?this['props']['look']:s['LibraryComponents']['Button']['Looks']['FILLED'],this['props']['color']!=null?this['props']['color']:s['LibraryComponents']['Button']['Colors']['BRAND'],this['props']['hover'],this['props']['size']!=null?this['props']['size']:s['LibraryComponents']['Button']['Sizes']['MEDIUM'],D&&this['props']['wrapperClassName'],this['props']['fullWidth']&&b['disCN']['buttonfullwidth'],(this['props']['grow']===undefined||this['props']['grow'])&&b['disCN']['buttongrow'],this['props']['hover']&&this['props']['hover']!==s['LibraryComponents']['Button']['Hovers']['DEFAULT']&&b['disCN']['buttonhashover'],this['props']['submitting']&&b['disCN']['buttonsubmitting']),'onClick':this['props']['disabled']||this['props']['submitting']?G=>{return G['preventDefault']();}:this['handleClick']['bind'](this),'onContextMenu':this['props']['disabled']||this['props']['submitting']?G=>{return G['preventDefault']();}:this['handleContextMenu']['bind'](this),'onMouseUp':!this['props']['disabled']&&this['handleMouseDown']['bind'](this),'onMouseDown':!this['props']['disabled']&&this['handleMouseUp']['bind'](this),'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'type':this['props']['type']==='undefined'?'button':this['props']['type'],'disabled':this['props']['disabled'],'style':this['props']['style'],'rel':this['props']['rel'],'children':[this['props']['submitting']&&!this['props']['disabled']?b['ReactUtils']['createElement'](s['LibraryComponents']['Spinner'],{'type':s['LibraryComponents']['Spinner']['Type']['PULSING_ELLIPSIS'],'className':b['disCN']['buttonspinner'],'itemClassName':b['disCN']['buttonspinneritem']}):null,b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['buttoncontents'],this['props']['innerClassName']),'children':this['props']['children']})]}));return!D?F:b['ReactUtils']['createElement']('span',{'className':b['DOMUtils']['formatClassName'](b['disCN']['buttondisabledwrapper'],this['props']['wrapperClassName'],this['props']['size']!=null?this['props']['size']:s['LibraryComponents']['Button']['Sizes']['MEDIUM'],this['props']['fullWidth']&&b['disCN']['buttonfullwidth'],(this['props']['grow']===undefined||this['props']['grow'])&&b['disCN']['buttongrow']),'children':[F,b['ReactUtils']['createElement']('span',{'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'className':b['disCN']['buttondisabledoverlay']})]});}};s['LibraryComponents']['Card']=c['loadPatchedComp']('Card')||t&&class BDFDB_Card extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['hovercardwrapper'],this['props']['backdrop']&&b['disCN']['hovercard'],this['props']['className']),'onMouseEnter':D=>{if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](D,this);},'onMouseLeave':D=>{if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](D,this);},'onClick':D=>{if(typeof this['props']['onClick']=='function')this['props']['onClick'](D,this);},'onContextMenu':D=>{if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](D,this);},'children':[!this['props']['noRemove']?b['ReactUtils']['createElement'](s['LibraryComponents']['CardRemoveButton'],{'onClick':D=>{if(typeof this['props']['onRemove']=='function')this['props']['onRemove'](D,this);b['ListenerUtils']['stopEvent'](D);}}):null,typeof this['props']['children']=='string'?b['ReactUtils']['createElement'](s['LibraryComponents']['TextElement'],{'className':b['disCN']['hovercardinner'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['TextScroller'],{'children':this['props']['children']})}):this['props']['children']]['flat'](0xa)['filter'](D=>D)}),'backdrop','noRemove'));}};c['setDefaultProps'](s['LibraryComponents']['Card'],{'backdrop':!![],'noRemove':![]});s['LibraryComponents']['CardRemoveButton']=b['ModuleUtils']['findByName']('RemoveButton');s['LibraryComponents']['ChannelTextAreaButton']=c['loadPatchedComp']('ChannelTextAreaButton')||t&&class BDFDB_ChannelTextAreaButton extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['Button'],{'look':s['LibraryComponents']['Button']['Looks']['BLANK'],'size':s['LibraryComponents']['Button']['Sizes']['NONE'],'aria-label':this['props']['label'],'tabIndex':this['props']['tabIndex'],'className':b['DOMUtils']['formatClassName'](b['disCN']['textareabuttonwrapper'],this['props']['isActive']&&b['disCN']['textareabuttonactive']),'innerClassName':b['DOMUtils']['formatClassName'](b['disCN']['textareabutton'],this['props']['className'],this['props']['pulse']&&b['disCN']['textareaattachbuttonplus']),'onClick':this['props']['onClick'],'onContextMenu':this['props']['onContextMenu'],'onMouseEnter':this['props']['onMouseEnter'],'onMouseLeave':this['props']['onMouseLeave'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'name':this['props']['iconName'],'iconSVG':this['props']['iconSVG'],'className':b['DOMUtils']['formatClassName'](b['disCN']['textareaicon'],this['props']['iconClassName'],this['props']['pulse']&&b['disCN']['textareaiconpulse'])})});}};s['LibraryComponents']['CharCounter']=c['loadPatchedComp']('CharCounter')||t&&class BDFDB_CharCounter extends k['React']['Component']{['getCounterString'](){let D=this['refElement']||{},E='';if(b['DOMUtils']['containsClass'](this['refElement'],b['disCN']['textarea'])){let L=b['ReactUtils']['findOwner'](D,{'name':'ChannelEditorContainer','up':!![]});if(L)E=L['props']['textValue'];else E=D['value']||D['textContent']||'';}else E=D['value']||D['textContent']||'';let F=D['selectionStart']||0x0,G=D['selectionEnd']||0x0,H=G-F,I=b['DOMUtils']['getSelection']();let J=!H&&!I?0x0:H||I['length'];J=!J?0x0:J>E['length']?G||F?E['length']-(E['length']-G-F):E['length']:J;let K=[typeof this['props']['renderPrefix']=='function'&&this['props']['renderPrefix'](E['length']),''+E['length']+(!this['props']['max']?'':'/'+this['props']['max'])+(!J?'':'\x20('+J+')'),typeof this['props']['renderSuffix']=='function'&&this['props']['renderSuffix'](E['length'])]['filter'](M=>M);return K['length']==0x1?K[0x0]:b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'children':K});}['updateCounter'](){if(!this['refElement'])return;b['TimeUtils']['clear'](this['updateTimeout']);this['updateTimeout']=b['TimeUtils']['timeout'](this['forceUpdateCounter']['bind'](this),0x64);}['forceUpdateCounter'](){if(!this['refElement'])return;this['props']['children']=this['getCounterString']();b['ReactUtils']['forceUpdate'](this);}['handleSelection'](){if(!this['refElement'])return;let D=G=>{b['TimeUtils']['timeout'](this['forceUpdateCounter']['bind'](this),0xa);};let E=G=>{document['removeEventListener']('mousemove',D);document['removeEventListener']('mouseup',E);if(this['refElement']['selectionEnd']-this['refElement']['selectionStart'])b['TimeUtils']['timeout'](H=>{document['addEventListener']('click',F);});};let F=G=>{var H=b['ReactUtils']['getValue'](document['querySelector'](b['dotCN']['contextmenu']),'return.stateNode.props.type');if(!H||!H['startsWith']('CHANNEL_TEXT_AREA'))this['forceUpdateCounter']();b['TimeUtils']['timeout'](this['forceUpdateCounter']['bind'](this),0x64);document['removeEventListener']('mousemove',D);document['removeEventListener']('mouseup',E);document['removeEventListener']('click',F);};document['addEventListener']('mousemove',D);document['addEventListener']('mouseup',E);}['componentDidMount'](){if(this['props']['refClass']){let D=b['ReactUtils']['findDOMNode'](this);if(D&&D['parentElement']){this['refElement']=D['parentElement']['querySelector'](this['props']['refClass']);if(this['refElement']){if(!this['_updateCounter'])this['_updateCounter']=E=>{if(!document['contains'](D))b['ListenerUtils']['multiRemove'](this['refElement'],'keydown\x20click\x20change',this['_updateCounter']);else this['updateCounter']();};if(!this['_handleSelection'])this['_handleSelection']=E=>{if(!document['contains'](D))b['ListenerUtils']['multiRemove'](this['refElement'],'mousedown',this['_handleSelection']);else this['handleSelection']();};b['ListenerUtils']['multiRemove'](this['refElement'],'mousedown',this['_handleSelection']);b['ListenerUtils']['multiAdd'](this['refElement'],'mousedown',this['_handleSelection']);if(this['refElement']['tagName']=='INPUT'||this['refElement']['tagName']=='TEXTAREA'){b['ListenerUtils']['multiRemove'](this['refElement'],'keydown\x20click\x20change',this['_updateCounter']);b['ListenerUtils']['multiAdd'](this['refElement'],'keydown\x20click\x20change',this['_updateCounter']);}else{if(!this['_mutationObserver'])this['_mutationObserver']=new MutationObserver(E=>{if(!document['contains'](D))this['_mutationObserver']['disconnect']();else this['updateCounter']();});else this['_mutationObserver']['disconnect']();this['_mutationObserver']['observe'](this['refElement'],{'childList':!![],'subtree':!![]});}this['updateCounter']();}else b['LogUtils']['warn']('could\x20not\x20find\x20referenceElement\x20for\x20BDFDB_CharCounter');}}else b['LogUtils']['warn']('refClass\x20can\x20not\x20be\x20undefined\x20for\x20BDFDB_CharCounter');}['render'](){let D=this['getCounterString']();b['TimeUtils']['timeout'](E=>{if(D!=this['getCounterString']())b['ReactUtils']['forceUpdate'](this);});return b['ReactUtils']['createElement']('div',b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['charcounter'],this['props']['className']),'children':D}),'parsing','max','refClass','renderPrefix','renderSuffix'));}};s['LibraryComponents']['Checkbox']=c['loadPatchedComp']('Checkbox')||t&&class BDFDB_Checkbox extends k['React']['Component']{['handleChange'](){this['props']['value']=!this['props']['value'];if(typeof this['props']['onChange']=='function')this['props']['onChange'](this['props']['value'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](s['NativeSubComponents']['Checkbox'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}));}};s['LibraryComponents']['Clickable']=c['loadPatchedComp']('Clickable')||t&&class BDFDB_Clickable extends k['React']['Component']{['handleClick'](D){if(typeof this['props']['onClick']=='function')this['props']['onClick'](D,this);}['handleContextMenu'](D){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](D,this);}['handleMouseDown'](D){if(typeof this['props']['onMouseDown']=='function')this['props']['onMouseDown'](D,this);}['handleMouseUp'](D){if(typeof this['props']['onMouseUp']=='function')this['props']['onMouseUp'](D,this);}['handleMouseEnter'](D){if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](D,this);}['handleMouseLeave'](D){if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](D,this);}['render'](){return b['ReactUtils']['createElement'](s['NativeSubComponents']['Clickable'],Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],b['disCN']['cursorpointer']),'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'onMouseUp':this['handleMouseDown']['bind'](this),'onMouseDown':!this['props']['disabled']&&this['handleMouseUp']['bind'](this),'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this)}));}};s['LibraryComponents']['CollapseContainer']=c['loadPatchedComp']('CollapseContainer')||t&&class BDFDB_CollapseContainer extends k['React']['Component']{['render'](){if(!b['ObjectUtils']['is'](this['props']['collapseStates']))this['props']['collapseStates']={};this['props']['collapsed']=this['props']['collapsed']&&(this['props']['collapseStates'][this['props']['title']]||this['props']['collapseStates'][this['props']['title']]==undefined);this['props']['collapseStates'][this['props']['title']]=this['props']['collapsed'];return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['collapsed']&&b['disCN']['collapsecontainercollapsed'],this['props']['mini']?b['disCN']['collapsecontainermini']:b['disCN']['collapsecontainer'],this['props']['className']),'id':this['props']['id'],'children':[this['props']['dividertop']?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormDivider'],{'className':this['props']['mini']?b['disCN']['marginbottom8']:b['disCN']['marginbottom20']}):null,b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCNS']['collapsecontainerheader']+b['disCN']['cursorpointer'],'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'onClick':D=>{this['props']['collapsed']=!this['props']['collapsed'];this['props']['collapseStates'][this['props']['title']]=this['props']['collapsed'];if(typeof this['props']['onClick']=='function')this['props']['onClick'](this['props']['collapsed'],this);b['ReactUtils']['forceUpdate'](this);},'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['collapsecontainerarrow']}),b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormTitle'],{'tag':s['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H2'],'className':b['disCNS']['collapsecontainertitle']+b['disCN']['cursorpointer'],'children':this['props']['title']})]}),!this['props']['collapsed']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['collapsecontainerinner'],'children':this['props']['children']}):null,this['props']['dividerbottom']?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormDivider'],{'className':this['props']['mini']?b['disCN']['margintop8']:b['disCN']['margintop20']}):null]});}};c['setDefaultProps'](s['LibraryComponents']['CollapseContainer'],{'collapsed':!![],'mini':!![]});s['LibraryComponents']['ColorPicker']=c['loadPatchedComp']('ColorPicker')||t&&class BDFDB_ColorPicker extends k['React']['Component']{constructor(D){super(D);if(!this['state'])this['state']={};this['state']['isGradient']=D['gradient']&&D['color']&&b['ObjectUtils']['is'](D['color']);this['state']['gradientBarEnabled']=this['state']['isGradient'];this['state']['draggingAlphaCursor']=![];this['state']['draggingGradientCursor']=![];this['state']['selectedGradientCursor']=0x0;}['handleColorChange'](D){let E=![];if(D!=null){E=!b['equals'](this['state']['isGradient']?this['props']['color'][this['state']['selectedGradientCursor']]:this['props']['color'],D);if(this['state']['isGradient'])this['props']['color'][this['state']['selectedGradientCursor']]=D;else this['props']['color']=D;}else E=!![];if(E){if(typeof this['props']['onColorChange']=='function')this['props']['onColorChange'](this['props']['color']);b['ReactUtils']['forceUpdate'](this);}}['componentDidMount'](){this['domElementRef']={'current':b['DOMUtils']['getParent'](b['dotCN']['itemlayer'],b['ReactUtils']['findDOMNode'](this))};let D=b['ReactUtils']['findOwner'](this['domElementRef']['current'],{'name':'BDFDB_PopoutContainer','up':!![],'unlimited':!![]});if(D){let E=F=>{if(!this['domElementRef']['current']||!document['contains'](this['domElementRef']['current']))document['removeEventListener']('mousedown',E);else if(!this['domElementRef']['current']['contains'](F['target'])){let G=H=>{if(!this['domElementRef']['current']||!document['contains'](this['domElementRef']['current'])){document['removeEventListener']('mousedown',E);document['removeEventListener']('mouseup',G);}else if(!this['domElementRef']['current']['contains'](H['target'])){document['removeEventListener']('mousedown',E);document['removeEventListener']('mouseup',G);D['handleClick'](H);}};document['addEventListener']('mouseup',G);}};document['addEventListener']('mousedown',E);}}['render'](){if(this['state']['isGradient'])this['props']['color']=Object['assign']({},this['props']['color']);let D=this['props']['alpha']?'HSLA':'HSL';let E=this['props']['alpha']?/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i:/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;let F=b['ColorUtils']['convert'](this['state']['isGradient']?this['props']['color'][this['state']['selectedGradientCursor']]:this['props']['color'],D)||b['ColorUtils']['convert']('#000000FF',D);let G=this['state']['isGradient']?Object['entries'](this['props']['color'],D):[[0x0,F],[0x1,F]];let [H,I,J]=b['ColorUtils']['convert'](F,'HSLCOMP');let K=b['ColorUtils']['getAlpha'](F);K=K==null?0x1:K;return b['ReactUtils']['createElement'](s['LibraryComponents']['PopoutFocusLock'],{'className':b['disCNS']['colorpickerwrapper']+b['disCN']['colorpicker'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerinner'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturation'],'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationcolor'],'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0,'cursor':'crosshair','backgroundColor':b['ColorUtils']['convert']([H,'100%','100%'],'RGB')},'onClick':L=>{let M=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickersaturationcolor'],L['target']));let N=b['NumberUtils']['mapRange']([M['left'],M['left']+M['width']],[0x0,0x64],L['clientX'])+'%';let O=b['NumberUtils']['mapRange']([M['top'],M['top']+M['height']],[0x64,0x0],L['clientY'])+'%';this['handleColorChange'](b['ColorUtils']['convert']([H,N,O,K],D));},'onMouseDown':L=>{let M=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickersaturationcolor'],L['target']));let N=P=>{document['removeEventListener']('mouseup',N);document['removeEventListener']('mousemove',O);};let O=P=>{let Q=b['NumberUtils']['mapRange']([M['left'],M['left']+M['width']],[0x0,0x64],P['clientX'])+'%';let R=b['NumberUtils']['mapRange']([M['top'],M['top']+M['height']],[0x64,0x0],P['clientY'])+'%';this['handleColorChange'](b['ColorUtils']['convert']([H,Q,R,K],D));};document['addEventListener']('mouseup',N);document['addEventListener']('mousemove',O);},'children':[b['ReactUtils']['createElement']('style',{'children':b['dotCN']['colorpickersaturationwhite']+'\x20{background:\x20-webkit-linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));background:\x20linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));}'+b['dotCN']['colorpickersaturationblack']+'\x20{background:\x20-webkit-linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));background:\x20linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));}'}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationwhite'],'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationblack'],'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0}}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationcursor'],'style':{'position':'absolute','cursor':'crosshair','left':I,'top':b['NumberUtils']['mapRange']([0x0,0x64],[0x64,0x0],parseFloat(J))+'%'},'children':b['ReactUtils']['createElement']('div',{'style':{'width':0x4,'height':0x4,'boxShadow':'rgb(255,\x20255,\x20255)\x200px\x200px\x200px\x201.5px,\x20rgba(0,\x200,\x200,\x200.3)\x200px\x200px\x201px\x201px\x20inset,\x20rgba(0,\x200,\x200,\x200.4)\x200px\x200px\x201px\x202px','borderRadius':'50%','transform':'translate(-2px,\x20-2px)'}})})]})]})}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerhue'],'children':b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerhuehorizontal'],'style':{'padding':'0px\x202px','position':'relative','height':'100%'},'onClick':L=>{let M=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickerhuehorizontal'],L['target']));let N=b['NumberUtils']['mapRange']([M['left'],M['left']+M['width']],[0x0,0x168],L['clientX']);this['handleColorChange'](b['ColorUtils']['convert']([N,I,J,K],D));},'onMouseDown':L=>{let M=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickerhuehorizontal'],L['target']));let N=P=>{document['removeEventListener']('mouseup',N);document['removeEventListener']('mousemove',O);};let O=P=>{let Q=b['NumberUtils']['mapRange']([M['left'],M['left']+M['width']],[0x0,0x168],P['clientX']);this['handleColorChange'](b['ColorUtils']['convert']([Q,I,J,K],D));};document['addEventListener']('mouseup',N);document['addEventListener']('mousemove',O);},'children':[b['ReactUtils']['createElement']('style',{'children':b['dotCN']['colorpickerhuehorizontal']+'\x20{background:\x20linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);background:\x20-webkit-linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);}'+b['dotCN']['colorpickerhuevertical']+'\x20{background:\x20linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);background:\x20-webkit-linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);}'}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerhuecursor'],'style':{'position':'absolute','cursor':'ew-resize','left':b['NumberUtils']['mapRange']([0x0,0x168],[0x0,0x64],H)+'%'},'children':b['ReactUtils']['createElement']('div',{'style':{'marginTop':0x1,'width':0x4,'borderRadius':0x1,'height':0x8,'boxShadow':'rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x202px','background':'rgb(255,\x20255,\x20255)','transform':'translateX(-2px)'}})})]})})}),this['props']['alpha']&&b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralpha'],'children':[b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralphacheckered'],'style':{'padding':'0px\x202px','position':'relative','height':'100%'}})}),b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralphahorizontal'],'style':{'padding':'0px\x202px','position':'relative','height':'100%','background':'linear-gradient(to\x20right,\x20'+b['ColorUtils']['setAlpha']([H,I,J],0x0,'RGBA')+',\x20'+b['ColorUtils']['setAlpha']([H,I,J],0x1,'RGBA')},'onClick':L=>{let M=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickeralphahorizontal'],L['target']));let N=b['NumberUtils']['mapRange']([M['left'],M['left']+M['width']],[0x0,0x1],L['clientX']);this['handleColorChange'](b['ColorUtils']['setAlpha'](F,N,D));},'onMouseDown':L=>{let M=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickeralphahorizontal'],L['target']));let N=P=>{document['removeEventListener']('mouseup',N);document['removeEventListener']('mousemove',O);this['state']['draggingAlphaCursor']=![];b['ReactUtils']['forceUpdate'](this);};let O=P=>{this['state']['draggingAlphaCursor']=!![];let Q=b['NumberUtils']['mapRange']([M['left'],M['left']+M['width']],[0x0,0x1],P['clientX']);this['handleColorChange'](b['ColorUtils']['setAlpha'](F,Q,D));};document['addEventListener']('mouseup',N);document['addEventListener']('mousemove',O);},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralphacursor'],'style':{'position':'absolute','cursor':'ew-resize','left':K*0x64+'%'},'children':[b['ReactUtils']['createElement']('div',{'style':{'marginTop':0x1,'width':0x4,'borderRadius':0x1,'height':0x8,'boxShadow':'rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x202px','background':'rgb(255,\x20255,\x20255)','transform':'translateX(-2px)'}}),this['state']['draggingAlphaCursor']&&b['ReactUtils']['createElement']('span',{'className':b['disCN']['sliderbubble'],'style':{'opacity':0x1,'visibility':'visible','left':0x2},'children':Math['floor'](K*0x64)+'%'})]['filter'](L=>L)})})})]}),this['state']['gradientBarEnabled']&&b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickergradient'],'children':[b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickergradientcheckered'],'style':{'padding':'0px\x202px','position':'relative','height':'100%'}})}),b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickergradienthorizontal'],'style':{'padding':'0px\x202px','position':'relative','cursor':'copy','height':'100%','background':b['ColorUtils']['createGradient'](G['reduce']((L,M)=>(L[M[0x0]]=M[0x1],L),{}))},'onClick':L=>{let M=b['DOMUtils']['getRects'](L['target']);let N=b['NumberUtils']['mapRange']([M['left'],M['left']+M['width']],[0.01,0.99],L['clientX']);if(Object['keys'](this['props']['color'])['indexOf'](N)==-0x1){this['props']['color'][N]=b['ColorUtils']['convert']('#000000FF',D);this['state']['selectedGradientCursor']=N;this['handleColorChange']();}},'children':G['map'](L=>b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickergradientcursor'],(L[0x0]==0x0||L[0x0]==0x1)&&b['disCNS']['colorpickergradientcursoredge'],this['state']['selectedGradientCursor']==L[0x0]&&b['disCN']['colorpickergradientcursorselected']),'style':{'position':'absolute','cursor':'pointer','left':L[0x0]*0x64+'%'},'onMouseDown':L[0x0]==0x0||L[0x0]==0x1?M=>{}:M=>{M=M['nativeEvent']||M;let N=P=>{if(Math['sqrt']((M['pageX']-P['pageX'])**0x2)>0xa){document['removeEventListener']('mousemove',N);document['removeEventListener']('mouseup',O);this['state']['draggingGradientCursor']=!![];let Q=b['DOMUtils']['getParent'](b['dotCN']['colorpickergradientcursor'],M['target']);let R=b['DOMUtils']['getRects'](Q['parentElement']);let S=U=>{document['removeEventListener']('mousemove',T);document['removeEventListener']('mouseup',S);b['TimeUtils']['timeout'](V=>{this['state']['draggingGradientCursor']=![];});};let T=U=>{let V=b['NumberUtils']['mapRange']([R['left'],R['left']+R['width']],[0.01,0.99],U['clientX']);if(Object['keys'](this['props']['color'])['indexOf'](V)==-0x1){delete this['props']['color'][L[0x0]];L[0x0]=V;this['props']['color'][V]=L[0x1];this['state']['selectedGradientCursor']=V;this['handleColorChange']();}};document['addEventListener']('mousemove',T);document['addEventListener']('mouseup',S);}};let O=P=>{document['removeEventListener']('mousemove',N);document['removeEventListener']('mouseup',O);};document['addEventListener']('mousemove',N);document['addEventListener']('mouseup',O);},'onClick':M=>{b['ListenerUtils']['stopEvent'](M);if(!this['state']['draggingGradientCursor']){this['state']['selectedGradientCursor']=L[0x0];b['ReactUtils']['forceUpdate'](this);}},'onContextMenu':L[0x0]==0x0||L[0x0]==0x1?M=>{}:M=>{b['ListenerUtils']['stopEvent'](M);delete this['props']['color'][L[0x0]];this['state']['selectedGradientCursor']=0x0;this['handleColorChange']();},'children':b['ReactUtils']['createElement']('div',{'style':{'background':b['ColorUtils']['convert'](L[0x1],'RGBA')}})}))})})]})]['filter'](L=>L)}),b['ReactUtils']['createElement'](s['LibraryComponents']['TextInput'],{'className':b['disCNS']['colorpickerhexinput']+b['disCN']['margintop8'],'maxLength':this['props']['alpha']?0x9:0x7,'valuePrefix':'#','value':b['ColorUtils']['convert'](F,this['props']['alpha']?'HEXA':'HEX'),'autoFocus':!![],'onChange':L=>{if(E['test'](L))this['handleColorChange'](L);},'inputChildren':this['props']['gradient']&&b['ReactUtils']['createElement'](s['LibraryComponents']['TooltipContainer'],{'text':'Gradient','children':b['ReactUtils']['createElement'](s['LibraryComponents']['Clickable'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickergradientbutton'],this['state']['gradientBarEnabled']&&b['disCN']['colorpickergradientbuttonenabled']),'children':b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'nativeClass':!![],'width':0x1c,'height':0x1c,'name':s['LibraryComponents']['SvgIcon']['Names']['GRADIENT']}),'onClick':L=>{this['state']['gradientBarEnabled']=!this['state']['gradientBarEnabled'];if(this['state']['gradientBarEnabled']&&!this['state']['isGradient'])this['props']['color']={0:F,1:F};else if(!this['state']['gradientBarEnabled']&&this['state']['isGradient'])this['props']['color']=F;this['state']['isGradient']=this['props']['color']&&b['ObjectUtils']['is'](this['props']['color']);this['handleColorChange']();}})})}),b['ReactUtils']['createElement']('div',{'className':'move-corners','children':[{'top':0x0,'left':0x0},{'top':0x0,'right':0x0},{'bottom':0x0,'right':0x0},{'bottom':0x0,'left':0x0}]['map'](L=>b['ReactUtils']['createElement']('div',{'className':'move-corner','onMouseDown':M=>{if(!this['domElementRef']['current'])return;let N=b['DOMUtils']['getRects'](this['domElementRef']['current']);let O=N['left'],P=N['top'];let Q=M['pageX'],R=M['pageY'];let S=U=>{document['removeEventListener']('mouseup',S);document['removeEventListener']('mousemove',T);};let T=U=>{O=O-(Q-U['pageX']),P=P-(R-U['pageY']);Q=U['pageX'],R=U['pageY'];this['domElementRef']['current']['style']['setProperty']('left',O+'px','important');this['domElementRef']['current']['style']['setProperty']('top',P+'px','important');};document['addEventListener']('mouseup',S);document['addEventListener']('mousemove',T);},'style':Object['assign']({},L,{'width':0xa,'height':0xa,'cursor':'move','position':'absolute'})}))})]});}};s['LibraryComponents']['ColorSwatches']=c['loadPatchedComp']('ColorSwatches')||t&&class BDFDB_ColorSwatches extends k['React']['Component']{constructor(D){super(D);D['selectedColor']=b['ObjectUtils']['is'](D['color'])?D['color']:b['ColorUtils']['convert'](D['color'],'RGBA');D['colors']=(b['ArrayUtils']['is'](D['colors'])?D['colors']:[null,0x52e91e,0x2ecc71,0x1abc9c,0x3498db,0x3454db,0x861ee9,0x9b59b6,0xe91e63,0xe9411e,0xe74c3c,0xe67e22,0xf1c40f,0xc7cccd,0x708088,0x636363,0xffffff,0x3bad14,0x1f8b4c,0x11806a,0x206694,0x203994,0x6d14ad,0x71368a,0xad1457,0xad2014,0x992d22,0xa84300,0xc27c0e,0x979c9f,0x5d686d,0x2c2c2c])['map'](F=>b['ColorUtils']['convert'](F,'RGBA'));D['colorRows']=D['colors']['length']?[D['colors']['slice'](0x0,parseInt(D['colors']['length']/0x2)),D['colors']['slice'](parseInt(D['colors']['length']/0x2))]:[];D['customColor']=D['selectedColor']!=null?D['colors']['indexOf'](D['selectedColor'])>-0x1?null:D['selectedColor']:null;D['customSelected']=!!D['customColor'];D['pickerConfig']=b['ObjectUtils']['is'](D['pickerConfig'])?D['pickerConfig']:{'gradient':!![],'alpha':!![]};this['state']=D;var E=this;this['ColorSwatch']=class BDFDB_ColorSwatch extends k['React']['Component']{['render'](){let F=!b['ColorUtils']['isBright'](this['props']['color']);let G=b['ReactUtils']['createElement']('button',{'type':'button','className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickerswatch'],this['props']['isSingle']&&b['disCN']['colorpickerswatchsingle'],this['props']['isDisabled']&&b['disCN']['colorpickerswatchdisabled'],this['props']['isSelected']&&b['disCN']['colorpickerswatchselected'],this['props']['isCustom']&&b['disCN']['colorpickerswatchcustom'],this['props']['color']==null&&b['disCN']['colorpickerswatchnocolor']),'number':this['props']['number'],'disabled':this['props']['isDisabled'],'onClick':H=>{if(!this['props']['isSelected']){let I=this['props']['isCustom']&&this['props']['color']==null?'rgba(0,\x200,\x200,\x201)':this['props']['color'];if(typeof E['props']['onColorChange']=='function')E['props']['onColorChange'](b['ColorUtils']['convert'](I,'RGBA'));E['setState']({'selectedColor':I,'customColor':this['props']['isCustom']?I:E['state']['customColor'],'customSelected':this['props']['isCustom']});}},'style':Object['assign']({},this['props']['style'],{'background':b['ObjectUtils']['is'](this['props']['color'])?b['ColorUtils']['createGradient'](this['props']['color']):b['ColorUtils']['convert'](this['props']['color'],'RGBA')}),'children':[this['props']['isCustom']||this['props']['isSingle']?b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'className':b['disCN']['colorpickerswatchdropper'],'foreground':b['disCN']['colorpickerswatchdropperfg'],'name':s['LibraryComponents']['SvgIcon']['Names']['DROPPER'],'width':this['props']['isCustom']?0xe:0xa,'height':this['props']['isCustom']?0xe:0xa,'color':F?b['DiscordConstants']['Colors']['WHITE']:b['DiscordConstants']['Colors']['BLACK']}):null,this['props']['isSelected']&&!this['props']['isSingle']?b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'name':s['LibraryComponents']['SvgIcon']['Names']['CHECKMARK'],'width':this['props']['isCustom']?0x20:0x10,'height':this['props']['isCustom']?0x18:0x10,'color':F?b['DiscordConstants']['Colors']['WHITE']:b['DiscordConstants']['Colors']['BLACK']}):null]});if(this['props']['isCustom']||this['props']['isSingle']||this['props']['color']==null)G=b['ReactUtils']['createElement'](s['LibraryComponents']['TooltipContainer'],{'text':this['props']['isCustom']||this['props']['isSingle']?b['LanguageUtils']['LanguageStrings']['CUSTOM_COLOR']:b['LanguageUtils']['LanguageStrings']['DEFAULT'],'tooltipConfig':{'type':this['props']['isSingle']?'top':'bottom'},'children':G});if(this['props']['isCustom']||this['props']['isSingle'])G=b['ReactUtils']['createElement'](s['LibraryComponents']['PopoutContainer'],{'children':G,'wrap':![],'popoutClassName':b['disCNS']['colorpickerwrapper']+b['disCN']['colorpicker'],'animation':s['LibraryComponents']['PopoutContainer']['Animation']['TRANSLATE'],'position':s['LibraryComponents']['PopoutContainer']['Positions']['BOTTOM'],'align':s['LibraryComponents']['PopoutContainer']['Align']['CENTER'],'renderPopout':H=>{return b['ReactUtils']['createElement'](s['LibraryComponents']['ColorPicker'],Object['assign']({'color':this['props']['color'],'onColorChange':I=>{if(typeof E['props']['onColorChange']=='function')E['props']['onColorChange'](b['ColorUtils']['convert'](I,'RGBA'));this['props']['color']=I;E['setState']({'selectedColor':I,'customColor':I,'customSelected':!![]});}},D['pickerConfig']));}});return G;}};}['renderRow'](D){return b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['colorpickerrow'],'wrap':s['LibraryComponents']['Flex']['Wrap']['WRAP'],'children':D['map'](E=>{return b['ReactUtils']['createElement'](this['ColorSwatch'],{'color':E,'isCustom':![],'isSelected':!this['state']['customSelected']&&E===this['state']['selectedColor'],'isDisabled':this['state']['disabled']});})});}['render'](){let D=b['ReactUtils']['createElement'](this['ColorSwatch'],{'number':!this['state']['colors']['length']?this['props']['number']!=null?this['props']['number']:0x0:null,'color':this['state']['customColor'],'isSingle':!this['state']['colors']['length'],'isCustom':this['state']['colors']['length'],'isSelected':this['state']['customSelected'],'isDisabled':this['state']['disabled'],'style':{'margin':0x0}});return!this['state']['colors']['length']?D:b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickerswatches'],this['state']['disabled']&&b['disCN']['colorpickerswatchesdisabled']),'number':this['props']['number']!=null?this['props']['number']:0x0,'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'className':b['disCN']['marginreset'],'shrink':0x0,'grow':0x0,'children':D}),b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'className':b['disCN']['flexmarginreset'],'grow':0x1,'children':[this['renderRow'](this['state']['colorRows'][0x0]),this['renderRow'](this['state']['colorRows'][0x1])]})]});}};s['LibraryComponents']['Connectors']=Object['assign']({},b['ModuleUtils']['findByProperties']('Router','Link'));s['LibraryComponents']['ContextMenuItems']={};s['LibraryComponents']['ContextMenuItems']['Group']=b['ModuleUtils']['findByString']('\x22div\x22,{className','default.itemGroup}');s['LibraryComponents']['ContextMenuItems']['Hint']=c['loadPatchedComp']('ContextMenuItems.Hint')||t&&class BDFDB_ContextMenuItemHint extends k['React']['Component']{['render'](){let D=typeof this['props']['hint']=='string';return b['ReactUtils']['createElement']('div',{'className':b['disCN']['contextmenuhint'],'style':D?{'width':0x2a,'maxWidth':0x2a,'marginLeft':0x8}:{},'children':D?b['ReactUtils']['createElement'](s['LibraryComponents']['TextScroller'],{'speed':0x2,'children':this['props']['hint']}):this['props']['hint']||null});}};s['LibraryComponents']['ContextMenuItems']['Item']=c['loadPatchedComp']('ContextMenuItems.Item')||t&&class BDFDB_ContextMenuItem extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['Clickable'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['contextmenuitem'],!this['props']['disabled']&&b['disCN']['contextmenuitemclickable'],this['props']['danger']&&b['disCN']['contextmenuitemdanger'],this['props']['disabled']&&b['disCN']['contextmenuitemdisabled'],this['props']['brand']&&b['disCN']['contextmenuitembrand'],this['props']['className']),'style':this['props']['style'],'role':'menuitem','onClick':this['props']['disabled']||typeof this['props']['action']!='function'?null:this['props']['action'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['contextmenulabel'],'children':this['props']['label']}),b['ReactUtils']['createElement'](s['LibraryComponents']['ContextMenuItems']['Hint'],{'hint':this['props']['hint']}),this['props']['children']]});}};s['LibraryComponents']['ContextMenuItems']['Slider']=c['loadPatchedComp']('ContextMenuItems.Slider')||t&&class BDFDB_ContextMenuSliderItem extends k['React']['Component']{['handleValueChange'](D){let E=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange']([0x0,0x64],this['props']['edges'],D):D;if(typeof this['props']['digits']=='number')E=Math['round'](E*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);this['props']['defaultValue']=E;if(typeof this['props']['onValueChange']=='function')this['props']['onValueChange'](E,this);b['ReactUtils']['forceUpdate'](this);}['handleValueRender'](D){let E=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange']([0x0,0x64],this['props']['edges'],D):D;if(typeof this['props']['digits']=='number')E=Math['round'](E*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);if(typeof this['props']['renderLabel']=='function')this['props']['label']=this['props']['renderLabel'](E);if(typeof this['props']['onValueRender']=='function'){let F=this['props']['onValueRender'](E,this);if(F!=undefined)E=F;}return E;}['render'](){let D=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange'](this['props']['edges'],[0x0,0x64],this['props']['defaultValue']):this['props']['defaultValue'];if(typeof this['props']['digits']=='number')D=Math['round'](D*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);return b['ReactUtils']['createElement'](s['NativeSubComponents']['ContextMenuSliderItem'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'defaultValue':D,'label':typeof this['props']['renderLabel']=='function'?this['props']['renderLabel'](this['props']['defaultValue']):this['props']['label'],'onValueChange':this['handleValueChange']['bind'](this),'onValueRender':this['handleValueRender']['bind'](this)}),'digits','edges','renderLabel'));}};s['LibraryComponents']['ContextMenuItems']['Sub']=b['ModuleUtils']['findByName']('FluxContainer(SubMenuItem)');s['LibraryComponents']['ContextMenuItems']['Toggle']=c['loadPatchedComp']('ContextMenuItems.Toggle')||t&&class BDFDB_ContextMenuToggleItem extends k['React']['Component']{['handleToggle'](){this['props']['active']=!this['props']['active'];if(typeof this['props']['action']=='function')this['props']['action'](this['props']['active']);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](s['NativeSubComponents']['ContextMenuToggleItem'],Object['assign']({},this['props'],{'action':this['handleToggle']['bind'](this)}));}};var u={};u['NormalContextMenus']=['DeveloperContextMenu','NativeContextMenu','UserSettingsCogContextMenu'];u['FluxContextMenus']=['ApplicationContextMenu','GroupDMContextMenu'];u['NonRenderContextMenus']=['ChannelContextMenu','GuildContextMenu','MessageContextMenu','SlateContextMenu','UserContextMenu'];u['ObservedContextMenus']=[];u['ExtraPatchedComponents']=['MessageOptionContextMenu','MessageOptionToolbar'];u['QueuedComponents']=[]['concat'](u['NonRenderContextMenus'],u['ObservedContextMenus'],u['ExtraPatchedComponents']);s['LibraryComponents']['ContextMenus']={};s['LibraryComponents']['ContextMenus']['_Exports']={};s['LibraryComponents']['ContextMenus']['_Types']=Object['entries'](b['DiscordConstants']['ContextMenuTypes'])['map'](D=>D[0x1]);s['LibraryComponents']['ContextMenus']['ApplicationContextMenu']=b['ModuleUtils']['findByName']('FluxContainer(ApplicationContextMenu)');s['LibraryComponents']['ContextMenus']['ChannelContextMenu']=b['ModuleUtils']['findByString']('Error\x20-\x20no\x20such\x20ctx\x20menu\x20type',b['DiscordConstants']['ContextMenuTypes']['CHANNEL_LIST_TEXT']);s['LibraryComponents']['ContextMenus']['_Exports']['ChannelContextMenu']=(b['ModuleUtils']['findByString']('Error\x20-\x20no\x20such\x20ctx\x20menu\x20type',b['DiscordConstants']['ContextMenuTypes']['CHANNEL_LIST_TEXT'],![])||{})['exports'];s['LibraryComponents']['ContextMenus']['DeveloperContextMenu']=b['ModuleUtils']['findByName']('DeveloperContextMenu');s['LibraryComponents']['ContextMenus']['GroupDMContextMenu']=b['ModuleUtils']['findByName']('FluxContainer(GroupDMContextMenu)');s['LibraryComponents']['ContextMenus']['GuildContextMenu']=b['ModuleUtils']['findByString']('Error\x20-\x20no\x20such\x20ctx\x20menu\x20type',b['DiscordConstants']['ContextMenuTypes']['GUILD_CHANNEL_LIST']);s['LibraryComponents']['ContextMenus']['_Exports']['GuildContextMenu']=(b['ModuleUtils']['findByString']('Error\x20-\x20no\x20such\x20ctx\x20menu\x20type',b['DiscordConstants']['ContextMenuTypes']['GUILD_CHANNEL_LIST'],![])||{})['exports'];s['LibraryComponents']['ContextMenus']['MessageContextMenu']=b['ModuleUtils']['findByString']('message','target',b['DiscordConstants']['ContextMenuTypes']['MESSAGE_MAIN']);s['LibraryComponents']['ContextMenus']['_Exports']['MessageContextMenu']=(b['ModuleUtils']['findByString']('message','target',b['DiscordConstants']['ContextMenuTypes']['MESSAGE_MAIN'],![])||{})['exports'];s['LibraryComponents']['ContextMenus']['NativeContextMenu']=b['ModuleUtils']['findByName']('NativeContextMenu');s['LibraryComponents']['ContextMenus']['SlateContextMenu']=b['ModuleUtils']['findByName']('SlateContextMenu');s['LibraryComponents']['ContextMenus']['_Exports']['SlateContextMenu']=b['ModuleUtils']['findByName']('SlateContextMenu',![]);s['LibraryComponents']['ContextMenus']['UserContextMenu']=b['ModuleUtils']['findByString']('Error\x20-\x20no\x20such\x20ctx\x20menu\x20type',b['DiscordConstants']['ContextMenuTypes']['USER_CHANNEL_MEMBERS']);s['LibraryComponents']['ContextMenus']['_Exports']['UserContextMenu']=(b['ModuleUtils']['findByString']('Error\x20-\x20no\x20such\x20ctx\x20menu\x20type',b['DiscordConstants']['ContextMenuTypes']['USER_CHANNEL_MEMBERS'],![])||{})['exports'];s['LibraryComponents']['ContextMenus']['UserSettingsCogContextMenu']=b['ModuleUtils']['findByName']('UserSettingsCogContextMenu');s['LibraryComponents']['DiscordTag']=b['ModuleUtils']['findByName']('DiscordTag');s['LibraryComponents']['Emoji']=b['ModuleUtils']['findByName']('Emoji');s['LibraryComponents']['EmojiButton']=b['ModuleUtils']['findByName']('EmojiButton');s['LibraryComponents']['EmojiPicker']=b['ModuleUtils']['findByString']('allowManagedEmojis','theme');s['LibraryComponents']['EmojiPickerButton']=c['loadPatchedComp']('EmojiPickerButton')||t&&class BDFDB_EmojiPickerButton extends k['React']['Component']{['handleEmojiChange'](D){if(D!=null){this['props']['emoji']=D['id']?{'id':D['id'],'name':D['name'],'animated':D['animated']}:{'id':null,'name':D['optionallyDiverseSequence'],'animated':![]};if(typeof this['props']['onSelect']=='function')this['props']['onSelect'](this['props']['emoji'],this);b['ReactUtils']['forceUpdate'](this);}}['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['PopoutContainer'],{'children':b['ReactUtils']['createElement'](s['LibraryComponents']['EmojiButton'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],b['disCN']['emojiinputbutton']),'renderButtonContents':this['props']['emoji']?D=>b['ReactUtils']['createElement'](s['LibraryComponents']['Emoji'],{'className':b['disCN']['emoji'],'emoji':this['props']['emoji']}):null}),'wrap':![],'animation':s['LibraryComponents']['PopoutContainer']['Animation']['NONE'],'position':s['LibraryComponents']['PopoutContainer']['Positions']['TOP'],'align':s['LibraryComponents']['PopoutContainer']['Align']['LEFT'],'renderPopout':D=>{return b['ReactUtils']['createElement'](s['LibraryComponents']['EmojiPicker'],{'closePopout':D['close'],'onSelectEmoji':this['handleEmojiChange']['bind'](this),'allowManagedEmojis':![]});}});}};s['LibraryComponents']['FavButton']=c['loadPatchedComp']('FavButton')||t&&class BDFDB_FavButton extends k['React']['Component']{['handleClick'](){this['props']['isFavorite']=!this['props']['isFavorite'];if(typeof this['props']['onClick']=='function')this['props']['onClick'](this['props']['isFavorite'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['favbuttoncontainer'],this['props']['className']),'children':b['ReactUtils']['createElement'](s['NativeSubComponents']['FavButton'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'onClick':this['handleClick']['bind'](this)}),'className'))});}};s['LibraryComponents']['FileButton']=c['loadPatchedComp']('FileButton')||t&&class BDFDB_FileButton extends k['React']['Component']{['render'](){let D=this['props']['filter']&&[this['props']['filter']]['flat'](0xa)['filter'](E=>typeof E=='string')||[];return b['ReactUtils']['createElement'](s['LibraryComponents']['Button'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'onClick':E=>{E['currentTarget']['querySelector']('input')['click']();},'children':[b['LanguageUtils']['LibraryStrings']['file_navigator_text'],b['ReactUtils']['createElement']('input',{'type':'file','accept':D['length']&&D['join']('/*,')+'/*','style':{'display':'none'},'onChange':E=>{let F=E['currentTarget']['files'][0x0];if(this['refInput']&&F&&(!D['length']||D['some'](G=>F['type']['indexOf'](G)==0x0))){this['refInput']['props']['value']=''+(this['props']['mode']=='url'?'url(\x27':'')+(this['props']['useFilePath']||this['props']['useFilepath']?F['path']:'data:'+F['type']+';base64,'+b['LibraryRequires']['fs']['readFileSync'](F['path'])['toString']('base64'))+(this['props']['mode']?'\x27)':'');b['ReactUtils']['forceUpdate'](this['refInput']);this['refInput']['handleChange'](this['refInput']['props']['value']);}}})]}),'filter','mode','useFilePath','useFilepath'));}};s['LibraryComponents']['Flex']=b['ModuleUtils']['findByProperties']('Wrap','Direction','Child');s['LibraryComponents']['FlowerStarIcon']=b['ModuleUtils']['findByName']('FlowerStarIcon');s['LibraryComponents']['FormComponents']=Object['assign']({},b['ModuleUtils']['findByProperties']('FormSection','FormText'));s['LibraryComponents']['FormComponents']['FormItem']=c['loadPatchedComp']('FormComponents.FormItem')||t&&class BDFDB_FormItem extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':this['props']['className'],'style':this['props']['style'],'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'align':s['LibraryComponents']['Flex']['Align']['BASELINE'],'children':[this['props']['title']!=null||this['props']['error']!=null?b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'wrap':!![],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormTitle'],{'tag':this['props']['tag']||s['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H5'],'disabled':this['props']['disabled'],'required':this['props']['required'],'error':this['props']['error'],'className':this['props']['titleClassName'],'children':this['props']['title']})}):null]['concat']([this['props']['titlechildren']]['flat'](0xa))['filter'](D=>D)})]['concat'](this['props']['children'])});}};s['LibraryComponents']['GuildComponents']={};s['LibraryComponents']['GuildComponents']['Badge']=b['ModuleUtils']['findByName']('GuildBadge');s['LibraryComponents']['GuildComponents']['BlobMask']=b['ModuleUtils']['findByName']('BlobMask');s['LibraryComponents']['GuildComponents']['Guild']=c['loadPatchedComp']('GuildComponents.Guild')||t&&class BDFDB_Guild extends k['React']['Component']{constructor(D){super(D);this['state']={'hovered':![]};}['handleMouseEnter'](D){if(!this['props']['sorting'])this['setState']({'hovered':!![]});if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](D,this);}['handleMouseLeave'](D){if(!this['props']['sorting'])this['setState']({'hovered':![]});if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](D,this);}['handleMouseDown'](D){if(!this['props']['unavailable']&&this['props']['guild']&&this['props']['selectedChannelId'])k['DirectMessageUtils']['preload'](this['props']['guild']['id'],this['props']['selectedChannelId']);if(D['button']==0x0&&typeof this['props']['onMouseDown']=='function')this['props']['onMouseDown'](D,this);}['handleMouseUp'](D){if(D['button']==0x0&&typeof this['props']['onMouseUp']=='function')this['props']['onMouseUp'](D,this);}['handleClick'](D){if(typeof this['props']['onClick']=='function')this['props']['onClick'](D,this);}['handleContextMenu'](D){if(this['props']['menu'])b['GuildUtils']['openMenu'](this['props']['guild'],D);if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](D,this);}['setRef'](D){if(typeof this['props']['setRef']=='function')this['props']['setRef'](this['props']['guild']['id'],D);}['componentDidMount'](){let D=b['ReactUtils']['findDOMNode'](this);if(D)for(let E of D['querySelectorAll']('a'))E['setAttribute']('draggable',![]);}['render'](){if(!this['props']['guild'])return null;this['props']['guildId']=this['props']['guild']['id'];this['props']['selectedChannelId']=k['LastChannelStore']['getChannelId'](this['props']['guild']['id']);this['props']['selected']=this['props']['state']?k['LastGuildStore']['getGuildId']()==this['props']['guild']['id']:![];this['props']['unread']=this['props']['state']?k['UnreadGuildUtils']['hasUnread'](this['props']['guild']['id']):![];this['props']['badge']=this['props']['state']?k['UnreadGuildUtils']['getMentionCount'](this['props']['guild']['id']):0x0;this['props']['audio']=this['props']['state']?(k['ChannelStore']['getChannel'](k['LastChannelStore']['getVoiceChannelId']())||{})['guild_id']==this['props']['guild']['id']:![];this['props']['video']=this['props']['state']?(k['StreamUtils']['getActiveStream']()||{})['guildId']==this['props']['guild']['id']:![];this['props']['screenshare']=this['props']['state']?!!k['StreamUtils']['getAllApplicationStreams']()['filter'](G=>G['guildId']==this['props']['guild']['id'])[0x0]:![];this['props']['isCurrentUserInThisGuildVoice']=this['props']['state']?!k['CurrentVoiceUtils']['isDisabled']()&&k['CurrentVoiceUtils']['getGuildId']()==this['props']['guild']['id']:![];this['props']['animatable']=this['props']['state']?k['IconUtils']['hasAnimatedGuildIcon'](this['props']['guild']):![];this['props']['unavailable']=this['props']['state']?k['GuildUnavailableStore']['unavailableGuilds']['includes'](this['props']['guild']['id']):![];var D=this['props']['draggingGuildId']===this['props']['guild']['id'];let E=D?b['ReactUtils']['createElement']('div',{'children':b['ReactUtils']['createElement'](s['LibraryComponents']['GuildComponents']['Items']['DragPlaceholder'],{})}):b['ReactUtils']['createElement']('div',{'className':b['disCN']['guildcontainer'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['GuildComponents']['BlobMask'],{'selected':this['state']['isDropHovering']||this['props']['selected']||this['state']['hovered'],'upperBadge':this['props']['unavailable']?s['LibraryComponents']['GuildComponents']['Items']['renderUnavailableBadge']():s['LibraryComponents']['GuildComponents']['Items']['renderIconBadge'](this['props']['audio'],this['props']['video'],this['props']['screenshare'],this['props']['isCurrentUserInThisGuildVoice']),'lowerBadge':this['props']['badge']>0x0?s['LibraryComponents']['GuildComponents']['Items']['renderMentionBadge'](this['props']['badge']):null,'lowerBadgeWidth':s['LibraryComponents']['Badges']['getBadgeWidthForValue'](this['props']['badge']),'children':b['ReactUtils']['createElement'](s['LibraryComponents']['NavItem'],{'to':{'pathname':b['DiscordConstants']['Routes']['CHANNEL'](this['props']['guild']['id'],this['props']['selectedChannelId']),'state':{'analyticsSource':{'page':b['DiscordConstants']['AnalyticsPages']['GUILD_CHANNEL'],'section':b['DiscordConstants']['AnalyticsSections']['CHANNEL_LIST'],'object':b['DiscordConstants']['AnalyticsObjects']['CHANNEL']}}},'name':this['props']['guild']['name'],'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'onMouseDown':this['handleMouseDown']['bind'](this),'onMouseUp':this['handleMouseUp']['bind'](this),'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'icon':this['props']['guild']['getIconURL'](this['state']['hovered']&&this['props']['animatable']?'gif':'jpg'),'selected':this['props']['selected']||this['state']['hovered']})})});if(this['props']['draggable']&&typeof this['props']['connectDragSource']=='function')E=this['props']['connectDragSource'](E);let F=[this['props']['list']||this['props']['pill']?b['ReactUtils']['createElement'](s['LibraryComponents']['GuildComponents']['Pill'],{'hovered':!D&&this['state']['hovered'],'selected':!D&&this['props']['selected'],'unread':!D&&this['props']['unread'],'className':b['disCN']['guildpill']}):null,!this['props']['tooltip']?E:b['ReactUtils']['createElement'](s['LibraryComponents']['TooltipContainer'],{'tooltipConfig':Object['assign']({'type':'right'},this['props']['tooltipConfig'],{'guild':this['props']['list']&&this['props']['guild']}),'children':E})]['filter'](G=>G);return this['props']['list']?s['LibraryComponents']['GuildComponents']['Items']['renderListItem'](b['ReactUtils']['createElement'](b['ReactUtils']['Fragment'],{'children':F}),null!=this['props']['setRef']?this['setRef']:null):b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['guild'],this['props']['className']),'children':F});}};c['setDefaultProps'](s['LibraryComponents']['GuildComponents']['Guild'],{'menu':!![],'tooltip':!![],'list':![],'state':![],'draggable':![],'sorting':![]});s['LibraryComponents']['GuildComponents']['Icon']=b['ModuleUtils']['findByName']('GuildIconWrapper');s['LibraryComponents']['GuildComponents']['Items']=b['ModuleUtils']['findByProperties']('Separator','DragPlaceholder');s['LibraryComponents']['GuildComponents']['Pill']=b['ModuleUtils']['findByString']('opacity:1,height:','20:8','default.item');s['LibraryComponents']['HeaderBarComponents']=b['ModuleUtils']['findByName']('HeaderBarContainer');s['LibraryComponents']['KeybindRecorder']=c['loadPatchedComp']('KeybindRecorder')||t&&class BDFDB_KeybindRecorder extends k['React']['Component']{['handleChange'](D){if(typeof this['props']['onChange']=='function')this['props']['onChange'](D['map'](E=>k['KeyEvents']['codes'][b['LibraryModules']['KeyCodeUtils']['codeToKey'](E)]||E[0x1]),this);}['handleReset'](){this['props']['defaultValue']=[];let D=b['ReactUtils']['findOwner'](this,{'name':'KeybindRecorder'});if(D)D['setState']({'codes':[]});if(typeof this['props']['onChange']=='function')this['props']['onChange']([],this);if(typeof this['props']['onReset']=='function')this['props']['onReset'](this);}['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['hotkeywrapper'],'direction':s['LibraryComponents']['Flex']['Direction']['HORIZONTAL'],'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'children':[b['ReactUtils']['createElement'](s['NativeSubComponents']['KeybindRecorder'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'defaultValue':[this['props']['defaultValue']]['flat'](0xa)['filter'](D=>D)['map'](D=>[b['DiscordConstants']['KeyboardDeviceTypes']['KEYBOARD_KEY'],D,b['DiscordConstants']['KeyboardEnvs']['BROWSER']]),'onChange':this['handleChange']['bind'](this)}),'reset','onReset')),this['props']['reset']||this['props']['onReset']?b['ReactUtils']['createElement'](s['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LanguageStrings']['REMOVE_KEYBIND'],'tooltipConfig':{'type':'top'},'children':b['ReactUtils']['createElement'](s['LibraryComponents']['Clickable'],{'className':b['disCN']['hotkeyresetbutton'],'onClick':this['handleReset']['bind'](this),'children':b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'iconSVG':' '})})}):null]['filter'](D=>D)});}};s['LibraryComponents']['LazyImage']=b['ModuleUtils']['findByName']('LazyImage');s['LibraryComponents']['ListHeader']=b['ModuleUtils']['findByName']('ListSectionItem');s['LibraryComponents']['ListRow']=c['loadPatchedComp']('ListRow')||t&&class BDFDB_ListRow extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['listrow'],this['props']['className']),'children':[this['props']['prefix'],b['ReactUtils']['createElement']('div',{'className':b['disCN']['listrowcontent'],'style':{'flex':'1\x201\x20auto'},'children':[b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['listname'],this['props']['labelClassName']),'style':{'flex':'1\x201\x20auto'},'children':this['props']['label']}),typeof this['props']['note']=='string'?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormText'],{'type':s['LibraryComponents']['FormComponents']['FormText']['Types']['DESCRIPTION'],'children':this['props']['note']}):null]['filter'](D=>D)}),this['props']['suffix']]['filter'](D=>D)});}};s['LibraryComponents']['MemberRole']=c['loadPatchedComp']('MemberRole')||t&&class BDFDB_MemberRole extends k['React']['Component']{['handleClick'](D){if(typeof this['props']['onClick']=='function')this['props']['onClick'](D,this);}['handleContextMenu'](D){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](D,this);}['render'](){let D=b['ColorUtils']['convert'](this['props']['role']['colorString']||b['DiscordConstants']['Colors']['PRIMARY_DARK_300'],'RGB');return b['ReactUtils']['createElement']('li',{'className':b['DOMUtils']['formatClassName'](b['disCN']['userpopoutrole'],this['props']['className']),'style':{'borderColor':b['ColorUtils']['setAlpha'](D,0.6)},'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'children':[!this['props']['noCircle']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['userpopoutrolecircle'],'style':{'backgroundColor':D}}):null,b['ReactUtils']['createElement']('div',{'className':b['disCN']['userpopoutrolename'],'children':this['props']['role']['name']})]['filter'](E=>E)});}};s['LibraryComponents']['MenuItems']=b['ModuleUtils']['findByProperties']('MenuItem','MenuGroup');s['LibraryComponents']['MessageGroup']=b['ModuleUtils']['findByName']('ChannelMessage');s['LibraryComponents']['MessagesPopoutComponents']=b['ModuleUtils']['findByProperties']('Header','EmptyStateBottom');s['LibraryComponents']['ModalComponents']=Object['assign']({},b['ModuleUtils']['findByProperties']('ModalContent','ModalFooter'));s['LibraryComponents']['ModalComponents']['ModalContent']=c['loadPatchedComp']('ModalComponents.ModalContent')||t&&class BDFDB_ModalContent extends k['React']['Component']{['render'](){return this['props']['scroller']?b['ReactUtils']['createElement'](s['LibraryComponents']['ScrollerVertical'],{'outerClassName':b['disCN']['modalcontent'],'className':b['DOMUtils']['formatClassName'](b['disCN']['modalsubinner'],this['props']['className']),'theme':s['LibraryComponents']['ScrollerVertical']['Themes']['GHOST_HAIRLINE'],'ref':this['props']['scrollerRef'],'children':this['props']['children']}):b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['modalcontent'],'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'align':s['LibraryComponents']['Flex']['Align']['STRETCH'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['modalsubinner'],b['disCN']['modalsubinnerscrollerless'],this['props']['className']),'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'align':s['LibraryComponents']['Flex']['Align']['STRETCH'],'children':this['props']['children']})});}};c['setDefaultProps'](s['LibraryComponents']['ModalComponents']['ModalContent'],{'scroller':!![]});s['LibraryComponents']['ModalComponents']['ModalTabContent']=c['loadPatchedComp']('ModalComponents.ModalTabContent')||t&&class BDFDB_ModalTabContent extends k['React']['Component']{['render'](){let D=Object['assign']({},this['props']);b['ObjectUtils']['delete'](D,'open');return b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],Object['assign']({'tab':'unnamed'},D,{'className':b['DOMUtils']['formatClassName'](b['disCN']['modaltabcontent'],this['props']['open']&&b['disCN']['modaltabcontentopen'],this['props']['className']),'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'align':s['LibraryComponents']['Flex']['Align']['STRETCH'],'style':Object['assign']({},D['style'],{'display':this['props']['open']?null:'none'})}));}};s['LibraryComponents']['NavItem']=b['ModuleUtils']['findByName']('NavItem');s['LibraryComponents']['Popout']=c['loadPatchedComp']('Popout')||t&&class BDFDB_Popout extends k['React']['Component']{['componentWillUnmount'](){delete this['props']['containerInstance']['popout'];if(typeof this['props']['onClose']=='function')this['props']['onClose'](this['props']['containerInstance'],this);}['render'](){let D=typeof this['props']['position']=='string'?this['props']['position']['toLowerCase']():null;let E=D&&p['popout'+D]?b['disCN']['popout'+D]:b['disCN']['popouttop'];let F=!this['props']['arrow']?b['disCN']['popoutnoarrow']:D&&D['indexOf']('top')>-0x1&&D!='top'?b['disCN']['popoutarrowalignmenttop']:b['disCN']['popoutarrowalignmentmiddle'];return b['ReactUtils']['createElement'](s['LibraryComponents']['PopoutFocusLock'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['popoutwrapper'],b['disCN']['popout'],E,this['props']['invert']&&D&&D!='bottom'&&b['disCN']['popoutinvert'],F,!this['props']['shadow']&&b['disCN']['popoutnoshadow']),'id':this['props']['id'],'onClick':G=>{G['stopPropagation']();},'style':Object['assign']({},this['props']['style'],{'position':this['props']['isChild']?'relative':'absolute'}),'children':b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['themed']&&b['disCN']['popoutthemedpopout']),'style':b['ObjectUtils']['extract'](this['props'],'padding','height','maxHeight','minHeight','width','maxWidth','minWidth'),'children':this['props']['children']})});}};c['setDefaultProps'](s['LibraryComponents']['Popout'],{'themed':!![]});s['LibraryComponents']['PopoutContainer']=c['loadPatchedComp']('PopoutContainer')||t&&class BDFDB_PopoutContainer extends k['React']['Component']{['handleRender'](D){let E=typeof this['props']['renderPopout']=='function'?this['props']['renderPopout'](this):null;return this['popout']=!E?null:!this['props']['wrap']?E:b['ReactUtils']['createElement'](s['LibraryComponents']['Popout'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':this['props']['popoutClassName'],'containerInstance':this,'isChild':!![],'position':D['position'],'style':this['props']['popoutStyle'],'onClose':typeof this['props']['onClose']=='function'?this['props']['onClose']['bind'](this):F=>{},'children':E}),'popoutStyle','popoutClassName'));}['componentDidMount'](){let D=b['ReactUtils']['findOwner'](this,{'name':'BasePopout'});if(!D||!D['handleClick'])return;D['isBDFDBpopout']=!![];this['handleClick']=E=>{return D['handleClick'](b['ObjectUtils']['is'](E)?E:new MouseEvent({}));};this['close']=D['close'];this['domElementRef']=D['domElementRef'];}['render'](){let D=(b['ArrayUtils']['is'](this['props']['children'])?this['props']['children'][0x0]:this['props']['children'])||b['ReactUtils']['createElement']('div',{'style':{'height':'100%','width':'100%'}});D['props']['className']=b['DOMUtils']['formatClassName'](D['props']['className'],this['props']['className']);let E=D['props']['onClick'],F=D['props']['onContextMenu'];D['props']['onClick']=(G,H)=>{if(!this['domElementRef']['current']||this['domElementRef']['current']['contains'](G['target'])){if((this['props']['openOnClick']||this['props']['openOnClick']===undefined)&&typeof this['handleClick']=='function')this['handleClick'](G);if(typeof this['props']['onClick']=='function')this['props']['onClick'](G,this);if(typeof E=='function')E(G,H);}else G['stopPropagation']();};D['props']['onContextMenu']=(G,H)=>{if(!this['domElementRef']['current']||this['domElementRef']['current']['contains'](G['target'])){if(this['props']['openOnContextMenu']&&typeof this['handleClick']=='function')this['handleClick'](G);if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](G,this);if(typeof F=='function')F(G,H);}else G['stopPropagation']();};return b['ReactUtils']['createElement'](k['React']['Fragment'],{'children':b['ReactUtils']['createElement'](s['NativeSubComponents']['PopoutContainer'],Object['assign']({},this['props'],{'children':G=>{return D;},'renderPopout':this['handleRender']['bind'](this)}))});}};c['setDefaultProps'](s['LibraryComponents']['PopoutContainer'],{'wrap':!![]});s['LibraryComponents']['PopoutFocusLock']=b['ModuleUtils']['findByString']('useFocusLock','useImperativeHandle');s['LibraryComponents']['PrivateChannelItems']=b['ModuleUtils']['findByProperties']('DirectMessage','GroupDM');s['LibraryComponents']['QuickSelect']=c['loadPatchedComp']('QuickSelect')||t&&class BDFDB_QuickSelect extends k['React']['Component']{['handleChange'](D){this['props']['value']=D;if(typeof this['props']['onChange']=='function')this['props']['onChange'](D['value']||D['key'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){let D=(b['ArrayUtils']['is'](this['props']['options'])?this['props']['options']:[{}])['filter'](F=>F);let E=b['ObjectUtils']['is'](this['props']['value'])?this['props']['value']:D[0x0]||{};return b['ReactUtils']['createElement'](s['LibraryComponents']['PopoutContainer'],Object['assign']({},this['props'],{'children':b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['className'],b['disCN']['quickselectwrapper']),'children':b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['quickselect'],'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['quickselectlabel'],'children':this['props']['label']}),b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'className':b['disCN']['quickselectclick'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['quickselectvalue'],'children':typeof this['props']['renderValue']=='function'?this['props']['renderValue'](this['props']['value']):this['props']['value']['label']}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['quickselectarrow']})]})]})}),'popoutClassName':b['DOMUtils']['formatClassName'](b['disCN']['quickselectpopout'],this['props']['popoutClassName'],b['disCN']['contextmenu'],b['disCN']['quickselectpopoutwrapper'],this['props']['scroller']&&b['disCN']['quickselectpopoutscroll']),'themed':![],'animation':s['LibraryComponents']['PopoutContainer']['Animation']['TRANSLATE'],'position':s['LibraryComponents']['PopoutContainer']['Positions']['BOTTOM'],'align':s['LibraryComponents']['PopoutContainer']['Align']['RIGHT'],'renderPopout':F=>{let G=D['map'](H=>{let I=H['value']&&H['value']===E['value']||H['key']&&H['key']===E['key'];return typeof this['props']['renderOption']=='function'?this['props']['renderOption'](H):b['ReactUtils']['createElement'](s['LibraryComponents']['ContextMenuItems']['Item'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['quickselectpopoutoption'],I&&b['disCN']['quickselectpopoutoptionselected']),'action':I?null:J=>{F['close']();this['handleChange']['bind'](this)(H);},'label':H['label']});});return this['props']['scroller']?b['ReactUtils']['createElement'](s['LibraryComponents']['ScrollerVertical'],{'className':b['disCN']['quickselectscroller'],'children':G}):G;}}));}};s['LibraryComponents']['QuickSwitchItems']=b['ModuleUtils']['findByProperties']('Channel','GroupDM','Header');s['LibraryComponents']['QuickSwitchMenu']=b['ModuleUtils']['findByName']('QuickSwitcher');s['LibraryComponents']['RadioGroup']=c['loadPatchedComp']('RadioGroup')||t&&class BDFDB_RadioGroup extends k['React']['Component']{['handleChange'](D){this['props']['value']=D['value'];if(typeof this['props']['onChange']=='function')this['props']['onChange'](D,this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](s['NativeSubComponents']['RadioGroup'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}));}};s['LibraryComponents']['ScrollerHorizontal']=b['ModuleUtils']['findByName']('HorizontalScroller');s['LibraryComponents']['ScrollerVertical']=b['ModuleUtils']['findByName']('VerticalScroller');s['LibraryComponents']['SearchBar']=c['loadPatchedComp']('SearchBar')||t&&class BDFDB_SearchBar extends k['React']['Component']{['handleChange'](D){this['props']['query']=D;if(typeof this['props']['onChange']=='function')this['props']['onChange'](D,this);b['ReactUtils']['forceUpdate'](this);}['handleClear'](){this['props']['query']='';if(this['props']['changeOnClear']&&typeof this['props']['onChange']=='function')this['props']['onChange']('',this);if(typeof this['props']['onClear']=='function')this['props']['onClear'](this);b['ReactUtils']['forceUpdate'](this);}['render'](){let D=Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this),'onClear':this['handleClear']['bind'](this)});if(typeof D['query']!='string')D['query']='';return b['ReactUtils']['createElement'](s['NativeSubComponents']['SearchBar'],D);}};s['LibraryComponents']['Select']=c['loadPatchedComp']('Select')||t&&class BDFDB_Select extends k['React']['Component']{['handleChange'](D){this['props']['value']=D;if(typeof this['props']['onChange']=='function')this['props']['onChange'](D,this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['selectwrapper'],'direction':s['LibraryComponents']['Flex']['Direction']['HORIZONTAL'],'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'children':b['ReactUtils']['createElement'](s['NativeSubComponents']['Select'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}))});}};s['LibraryComponents']['SettingsGuildList']=c['loadPatchedComp']('SettingsGuildList')||t&&class BDFDB_SettingsGuildList extends k['React']['Component']{['render'](){this['props']['disabled']=b['ArrayUtils']['is'](this['props']['disabled'])?this['props']['disabled']:[];return b['ReactUtils']['createElement'](b['LibraryComponents']['Flex'],{'className':this['props']['className'],'wrap':b['LibraryComponents']['Flex']['Wrap']['WRAP'],'children':[this['props']['includeDMs']&&{'name':'Direct\x20Messages','acronym':'DMs','id':b['DiscordConstants']['ME'],'getIconURL':D=>{}}]['concat'](b['LibraryModules']['FolderStore']['getFlattenedGuilds']())['filter'](D=>D)['map'](D=>b['ReactUtils']['createElement'](b['LibraryComponents']['TooltipContainer'],{'text':D['name'],'children':b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['guildClassName'],b['disCN']['settingsguild'],this['props']['disabled']['includes'](D['id'])&&b['disCN']['settingsguilddisabled']),'children':b['ReactUtils']['createElement'](b['LibraryComponents']['GuildComponents']['Icon'],{'guild':D,'size':this['props']['size']||b['LibraryComponents']['GuildComponents']['Icon']['Sizes']['MEDIUM']}),'onClick':E=>{let F=this['props']['disabled']['includes'](D['id']);if(F)b['ArrayUtils']['remove'](this['props']['disabled'],D['id'],!![]);else this['props']['disabled']['push'](D['id']);if(typeof this['props']['onClick']=='function')this['props']['onClick'](this['props']['disabled'],this);b['ReactUtils']['forceUpdate'](this);}})}))});}};s['LibraryComponents']['SettingsPanel']=c['loadPatchedComp']('SettingsPanel')||t&&class BDFDB_SettingsPanel extends k['React']['Component']{['render'](){return this['props']['children']?b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'grow':0x1,'children':[typeof this['props']['title']=='string'?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormTitle'],{'className':b['disCN']['settingspaneltitle'],'tag':s['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H2'],'children':this['props']['title']}):null,typeof this['props']['title']=='string'?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormDivider'],{'className':b['disCNS']['margintop4']+b['disCN']['marginbottom8']}):null,b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['settingspanelinner'],'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'children':this['props']['children']})]}):null;}};s['LibraryComponents']['SettingsPanelInner']=c['loadPatchedComp']('SettingsPanelInner')||t&&class BDFDB_SettingsPanelInner extends k['React']['Component']{['render'](){return this['props']['children']?b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':this['props']['className'],'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'children':[!this['props']['first']?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormDivider'],{'className':b['disCN']['marginbottom8']}):null,typeof this['props']['title']=='string'?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormTitle'],{'className':b['disCN']['marginbottom4'],'tag':s['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H3'],'children':this['props']['title']}):null,b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['settingspanellist'],'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'children':this['props']['children']}),!this['props']['last']?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormDivider'],{'className':b['disCN']['marginbottom20']}):null]}):null;}};s['LibraryComponents']['SettingsItem']=c['loadPatchedComp']('SettingsItem')||t&&class BDFDB_SettingsItem extends k['React']['Component']{['handleChange'](D){if(typeof this['props']['onChange']=='function')this['props']['onChange'](D,this);}['render'](){if(typeof this['props']['type']!='string'||!['BUTTON','SELECT','SWITCH','TEXTINPUT']['includes'](this['props']['type']['toUpperCase']()))return null;let D=s['LibraryComponents'][this['props']['type']];if(!D)return null;if(this['props']['mini']&&D['Sizes'])this['props']['size']=D['Sizes']['MINI']||D['Sizes']['MIN'];return b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['disabled']&&b['disCN']['disabled']),'id':this['props']['id'],'direction':s['LibraryComponents']['Flex']['Direction']['VERTICAL'],'align':s['LibraryComponents']['Flex']['Align']['STRETCH'],'grow':this['props']['grow'],'stretch':this['props']['stretch'],'children':[this['props']['dividertop']?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormDivider'],{'className':this['props']['mini']?b['disCN']['marginbottom4']:b['disCN']['marginbottom8']}):null,b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'children':[this['props']['label']?this['props']['tag']?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormTitle'],{'className':b['DOMUtils']['formatClassName'](this['props']['labelClassName'],b['disCN']['marginreset']),'tag':this['props']['tag'],'children':this['props']['label']}):b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'children':b['ReactUtils']['createElement'](s['LibraryComponents']['SettingsLabel'],{'className':this['props']['labelClassName'],'mini':this['props']['mini'],'label':this['props']['label']})}):null,this['props']['labelchildren'],b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'grow':0x0,'shrink':this['props']['basis']?0x0:0x1,'basis':this['props']['basis'],'wrap':!![],'children':b['ReactUtils']['createElement'](D,b['ObjectUtils']['exclude'](Object['assign'](b['ObjectUtils']['exclude'](this['props'],'className','id','type'),this['props']['childProps'],{'onChange':this['handleChange']['bind'](this)}),'grow','stretch','basis','dividerbottom','dividertop','label','labelClassName','labelchildren','tag','mini','note','childProps'))})]['flat'](0xa)['filter'](E=>E)}),typeof this['props']['note']=='string'?b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'className':b['disCN']['note'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormText'],{'disabled':this['props']['disabled'],'type':s['LibraryComponents']['FormComponents']['FormText']['Types']['DESCRIPTION'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['TextScroller'],{'speed':0x2,'children':this['props']['note']})})}):null,this['props']['dividerbottom']?b['ReactUtils']['createElement'](s['LibraryComponents']['FormComponents']['FormDivider'],{'className':this['props']['mini']?b['disCN']['margintop4']:b['disCN']['margintop8']}):null]});}};s['LibraryComponents']['SettingsLabel']=c['loadPatchedComp']('SettingsLabel')||t&&class BDFDB_SettingsLabel extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement'](s['LibraryComponents']['TextScroller'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['mini']?b['disCN']['titlemini']:b['disCN']['titledefault'],b['disCN']['cursordefault']),'speed':0x2,'children':this['props']['label']});}};s['LibraryComponents']['SettingsList']=c['loadPatchedComp']('SettingsList')||t&&class BDFDB_SettingsList extends k['React']['Component']{['componentDidMount'](){let D=b['ReactUtils']['findDOMNode'](this);if(D&&!this['props']['maxWidth']){let E=Array['from'](D['querySelectorAll'](b['dotCN']['settingstableheader']));E['shift']();if(b['DOMUtils']['getRects'](E[0x0])['width']==0x0)b['TimeUtils']['timeout'](F=>{this['resizeList'](D,E);});else this['resizeList'](D,E);}}['resizeList'](D,E){let F=0x0,G=0x0;if(!F){for(let H of E){H['style']='';let I=b['DOMUtils']['getRects'](H)['width'];F=I>F?I:F;}F+=0x4;G=F;}if(E['length']*F>0x12c){this['props']['vertical']=!![];F=parseInt(0x122/E['length']);}else if(F<0x24){F=0x24;G=F;}this['props']['maxWidth']=F;this['props']['biggestWidth']=G;this['props']['fullWidth']=b['DOMUtils']['getRects'](D)['width'];b['ReactUtils']['forceUpdate'](this);}['render'](){this['props']['settings']=b['ArrayUtils']['is'](this['props']['settings'])?this['props']['settings']:[];this['props']['renderLabel']=typeof this['props']['renderLabel']=='function'?this['props']['renderLabel']:G=>G['label'];let D=this['props']['maxWidth']&&this['props']['fullWidth']&&this['props']['fullWidth']-0x14-this['props']['maxWidth']*this['props']['settings']['length'];let E=this['props']['maxWidth']&&this['props']['maxWidth']*this['props']['settings']['length'];let F=typeof this['props']['onHeaderClick']=='function'||typeof this['props']['onHeaderContextMenu']=='function';return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['settingstablelist'],this['props']['className']),'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['settingstableheaders'],'align':s['LibraryComponents']['Flex']['Align']['STRETCH'],'style':this['props']['vertical']&&this['props']['biggestWidth']?{'marginTop':this['props']['biggestWidth']-0xf||0x0}:{},'children':[]['concat'](this['props']['title']||'',this['props']['settings'])['map']((G,H)=>b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](H==0x0?b['disCN']['settingstableheadername']:b['disCN']['settingstableheaderoption'],H!=0x0&&this['props']['vertical']&&b['disCN']['settingstableheadervertical'],b['disCN']['colorbase'],b['disCN']['size10'],F&&b['disCN']['cursorpointer']),'onClick':I=>{if(typeof this['props']['onHeaderClick']=='function')this['props']['onHeaderClick'](G,this);},'onContextMenu':I=>{if(typeof this['props']['onHeaderContextMenu']=='function')this['props']['onHeaderContextMenu'](G,this);},'style':H!=0x0&&this['props']['maxWidth']?{'maxWidth':this['props']['maxWidth'],'width':this['props']['maxWidth'],'flex':'0\x200\x20'+this['props']['maxWidth']+'px'}:{},'children':b['ReactUtils']['createElement']('span',{'children':G})}))}),(b['ArrayUtils']['is'](this['props']['data'])?this['props']['data']:[{}])['filter'](G=>G)['map'](G=>b['ReactUtils']['createElement'](s['LibraryComponents']['Card'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName']([this['props']['cardClassName'],G['className']]['filter'](H=>H)['join']('\x20')['indexOf'](b['disCN']['card'])==-0x1&&b['disCN']['cardprimaryoutline'],b['disCN']['settingstablecard'],this['props']['cardClassName'],G['className']),'cardId':G['key'],'backdrop':![],'style':Object['assign']({},this['props']['cardStyle'],G['style']),'children':[b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['settingstablecardlabel'],'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'grow':0x0,'shrink':0x0,'basis':D||'auto','style':{'maxWidth':D||null},'children':this['props']['renderLabel'](G)}),b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'className':b['disCN']['settingstablecardconfigs'],'justify':s['LibraryComponents']['Flex']['Justify']['AROUND'],'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'grow':0x0,'shrink':0x0,'basis':E||'auto','style':{'maxWidth':E||null},'children':this['props']['settings']['map'](H=>b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'className':b['disCN']['checkboxcontainer'],'grow':0x0,'shrink':0x0,'wrap':!![],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['Checkbox'],{'disabled':G['disabled'],'cardId':G['key'],'settingId':H,'shape':s['LibraryComponents']['Checkbox']['Shapes']['ROUND'],'type':s['LibraryComponents']['Checkbox']['Types']['INVERTED'],'value':G[H],'onChange':this['props']['onCheckboxChange']})}))['flat'](0xa)['filter'](H=>H)})]}),'title','data','settings','renderLabel','cardClassName','cardStyle','onCheckboxChange','maxWidth','fullWidth')))]});}};s['LibraryComponents']['SettingsSaveItem']=c['loadPatchedComp']('SettingsSaveItem')||t&&class BDFDB_SettingsSaveItem extends k['React']['Component']{['saveSettings'](D){if(!b['ArrayUtils']['is'](this['props']['keys'])||!b['ObjectUtils']['is'](this['props']['plugin']))return;let E=this['props']['keys']['filter'](G=>G);let F=E['shift']();if(b['ObjectUtils']['is'](this['props']['plugin'])&&F){let G=b['DataUtils']['load'](this['props']['plugin'],F);let H='';for(let K of E)H+='{\x22'+K+'\x22:';D=D!=null&&D['value']!=null?D['value']:D;let I=typeof D=='string';let J=I?'\x22':'';H+=J+(I?D['replace'](/\\/g,'\x5c\x5c'):D)+J+'}'['repeat'](E['length']);H=JSON['parse'](H);b['DataUtils']['save'](b['ObjectUtils']['is'](H)?b['ObjectUtils']['deepAssign']({},G,H):H,this['props']['plugin'],F);this['props']['plugin']['SettingsUpdated']=!![];}if(typeof this['props']['onChange']=='function')this['props']['onChange'](D,this);}['render'](){if(typeof this['props']['type']!='string'||!['SELECT','SWITCH','TEXTINPUT']['includes'](this['props']['type']['toUpperCase']()))return null;return b['ReactUtils']['createElement'](s['LibraryComponents']['SettingsItem'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'onChange':this['saveSettings']['bind'](this)}),'keys','plugin'));}};s['LibraryComponents']['Slider']=c['loadPatchedComp']('Slider')||t&&class BDFDB_Slider extends k['React']['Component']{['handleValueChange'](D){let E=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange']([0x0,0x64],this['props']['edges'],D):D;if(typeof this['props']['digits']=='number')E=Math['round'](E*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);this['props']['defaultValue']=E;if(typeof this['props']['onValueChange']=='function')this['props']['onValueChange'](E,this);b['ReactUtils']['forceUpdate'](this);}['handleValueRender'](D){let E=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange']([0x0,0x64],this['props']['edges'],D):D;if(typeof this['props']['digits']=='number')E=Math['round'](E*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);if(typeof this['props']['onValueRender']=='function'){let F=this['props']['onValueRender'](E,this);if(F!=undefined)E=F;}return E;}['render'](){let D=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange'](this['props']['edges'],[0x0,0x64],this['props']['defaultValue']):this['props']['defaultValue'];if(typeof this['props']['digits']=='number')D=Math['round'](D*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);return b['ReactUtils']['createElement'](s['NativeSubComponents']['Slider'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'initialValue':D,'onValueChange':this['handleValueChange']['bind'](this),'onValueRender':this['handleValueRender']['bind'](this)}),'digits','edges'));}};s['LibraryComponents']['Spinner']=b['ModuleUtils']['findByName']('Spinner');s['LibraryComponents']['SvgIcon']=c['loadPatchedComp']('SvgIcon')||t&&class BDFDB_Icon extends k['React']['Component']{['render'](){if(b['ObjectUtils']['is'](this['props']['name'])){if(this['props']['className'])this['props']['nativeClass']=!![];this['props']['iconSVG']=this['props']['name']['icon'];let D=Object['assign']({'width':0x18,'height':0x18,'color':'currentColor'},this['props']['name']['defaultProps'],this['props']);for(let E in D)this['props']['iconSVG']=this['props']['iconSVG']['replace'](new RegExp('%%'+E,'g'),D[E]);}if(this['props']['iconSVG']){let F=b['ReactUtils']['elementToReact'](b['DOMUtils']['create'](this['props']['iconSVG']));if(b['ReactUtils']['isValidElement'](F)){F['props']['className']=b['DOMUtils']['formatClassName'](!this['props']['nativeClass']&&b['disCN']['svgicon'],F['props']['className'],this['props']['className']);F['props']['style']=Object['assign']({},F['props']['style'],this['props']['style']);F['props']=Object['assign']({},b['ObjectUtils']['extract'](this['props'],'onClick','onContextMenu','onMouseDown','onMouseUp','onMouseEnter','onMouseLeave'),F['props']);return F;}}return null;}};s['LibraryComponents']['SvgIcon']['Names']={'CHANGELOG':{'icon':' '},'CHECKMARK':{'defaultProps':{'width':0x12,'height':0x12},'icon':' '},'CLOSE':{'defaultProps':{'width':0xc,'height':0xc},'icon':' '},'CLOSE_CIRCLE':{'icon':' '},'CROWN':{'icon':' '},'DROPPER':{'defaultProps':{'width':0x10,'height':0x10,'foreground':''},'icon':' '},'FOLDER':{'icon':' '},'GITHUB':{'icon':' '},'GRADIENT':{'defaultProps':{'width':0x24,'height':0x24},'icon':' '},'LEFT_CARET':{'icon':' '},'LOCK_CLOSED':{'icon':' '},'NOVA_AT':{'icon':' '},'NOVA_PIN':{'icon':' '},'NOVA_TRASH':{'icon':' '},'PENCIL':{'defaultProps':{'width':0x10,'height':0x10},'icon':' '},'PIN':{'defaultProps':{'width':0x10,'height':0x10},'icon':' '},'RAW_TEXT':{'icon':' '},'RIGHT_CARET':{'icon':' '},'SPEAKER':{'icon':' '},'STREAM':{'icon':' '}};s['LibraryComponents']['Switch']=c['loadPatchedComp']('Switch')||t&&class BDFDB_Switch extends k['React']['Component']{['handleChange'](){this['props']['value']=!this['props']['value'];if(typeof this['props']['onChange']=='function')this['props']['onChange'](this['props']['value'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](s['NativeSubComponents']['Switch'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}));}};s['LibraryComponents']['TabBar']=c['loadPatchedComp']('TabBar')||t&&class BDFDB_TabBar extends k['React']['Component']{['handleItemSelect'](D){this['props']['selectedItem']=D;if(typeof this['props']['onItemSelect']=='function')this['props']['onItemSelect'](D,this);b['ReactUtils']['forceUpdate'](this);}['render'](){let D=(b['ArrayUtils']['is'](this['props']['items'])?this['props']['items']:[{}])['filter'](F=>F);let E=this['props']['selectedItem']||(D[0x0]||{})['value'];return b['ReactUtils']['createElement'](s['NativeSubComponents']['TabBar'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'selectedItem':E,'onItemSelect':this['handleItemSelect']['bind'](this),'children':D['map'](F=>{return b['ReactUtils']['createElement'](s['LibraryComponents']['TabBar']['Item'],{'className':b['DOMUtils']['formatClassName'](this['props']['itemClassName'],E==F['value']&&this['props']['itemSelectedClassName']),'itemType':this['props']['type'],'id':F['value'],'children':F['label']||F['value'],'aria-label':F['label']||F['value']});})}),'itemClassName','items'));}};s['LibraryComponents']['Table']=c['loadPatchedComp']('Table')||t&&class BDFDB_Table extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement'](s['NativeSubComponents']['Table'],Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['table'],this['props']['className']),'headerClassName':b['DOMUtils']['formatClassName'](this['props']['stickyHeader']?b['disCN']['tablestickyheader']:b['disCN']['tableheader'],this['props']['headerClassName']),'headerCellClassName':b['DOMUtils']['formatClassName'](b['disCN']['tableheadercell'],this['props']['headerCellClassName']),'sortedHeaderCellClassName':b['DOMUtils']['formatClassName'](b['disCN']['tableheadercellsorted'],this['props']['sortedHeaderCellClassName']),'bodyCellClassName':b['DOMUtils']['formatClassName'](b['disCN']['tablebodycell'],this['props']['bodyCellClassName']),'rowClassName':b['DOMUtils']['formatClassName'](b['disCN']['tablerow'],this['props']['rowClassName']),'onSort':(D,E)=>{this['props']['sortDirection']=this['props']['sortKey']!=D&&E==s['LibraryComponents']['Table']['SortDirection']['ASCENDING']&&this['props']['columns']['filter'](F=>F['key']==D)[0x0]['reverse']?s['LibraryComponents']['Table']['SortDirection']['DESCENDING']:E;this['props']['sortKey']=D;this['props']['data']=b['ArrayUtils']['keySort'](this['props']['data'],this['props']['sortKey']);if(this['props']['sortDirection']==s['LibraryComponents']['Table']['SortDirection']['DESCENDING'])this['props']['data']['reverse']();if(typeof this['props']['onSort']=='function')this['props']['onSort'](this['props']['sortKey'],this['props']['sortDirection']);b['ReactUtils']['forceUpdate'](this);}}));}};s['LibraryComponents']['TextArea']=c['loadPatchedComp']('TextArea')||t&&class BDFDB_TextArea extends k['React']['Component']{['handleChange'](D){this['props']['value']=D;if(typeof this['props']['onChange']=='function')this['props']['onChange'](D,this);b['ReactUtils']['forceUpdate'](this);}['handleBlur'](D){if(typeof this['props']['onBlur']=='function')this['props']['onBlur'](D,this);}['handleFocus'](D){if(typeof this['props']['onFocus']=='function')this['props']['onFocus'](D,this);}['render'](){return b['ReactUtils']['createElement'](s['NativeSubComponents']['TextArea'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this),'onBlur':this['handleBlur']['bind'](this),'onFocus':this['handleFocus']['bind'](this)}));}};s['LibraryComponents']['TextElement']=b['ModuleUtils']['findByName']('Text');s['LibraryComponents']['TextGradientElement']=c['loadPatchedComp']('TextGradientElement')||t&&class BDFDB_TextGradientElement extends k['React']['Component']{['render'](){if(this['props']['gradient']&&this['props']['children'])return b['ReactUtils']['createElement']('span',{'children':this['props']['children'],'ref':D=>{let E=b['ReactUtils']['findDOMNode'](D);if(E){E['style']['setProperty']('background-image',this['props']['gradient'],'important');E['style']['setProperty']('color','transparent','important');E['style']['setProperty']('-webkit-background-clip','text','important');}}});return this['props']['children']||null;}};s['LibraryComponents']['TextInput']=c['loadPatchedComp']('TextInput')||t&&class BDFDB_TextInput extends k['React']['Component']{['handleChange'](D){let E=D=b['ObjectUtils']['is'](D)?D['currentTarget']['value']:D;this['props']['value']=this['props']['valuePrefix']&&!E['startsWith'](this['props']['valuePrefix'])?this['props']['valuePrefix']+E:E;if(typeof this['props']['onChange']=='function')this['props']['onChange'](this['props']['value'],this);b['ReactUtils']['forceUpdate'](this);}['handleInput'](D){if(typeof this['props']['onInput']=='function')this['props']['onInput'](b['ObjectUtils']['is'](D)?D['currentTarget']['value']:D,this);}['handleKeyDown'](D){if(typeof this['props']['onKeyDown']=='function')this['props']['onKeyDown'](D,this);}['handleBlur'](D){if(typeof this['props']['onBlur']=='function')this['props']['onBlur'](D,this);}['handleFocus'](D){if(typeof this['props']['onFocus']=='function')this['props']['onFocus'](D,this);}['handleMouseEnter'](D){if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](D,this);}['handleMouseLeave'](D){if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](D,this);}['handleNumberButton'](D,E){b['TimeUtils']['clear'](D['pressedTimeout']);D['pressedTimeout']=b['TimeUtils']['timeout'](F=>{delete this['props']['focused'];b['ReactUtils']['forceUpdate'](this);},0x3e8);this['props']['focused']=!![];this['handleChange']['bind'](this)(E);this['handleInput']['bind'](this)(E);}['componentDidMount'](){if(this['props']['type']=='file'){let E=b['ReactUtils']['findOwner'](this,{'name':'BDFDB_FileButton'});if(E)E['refInput']=this;}let D=b['ReactUtils']['findDOMNode'](this);if(!D)return;D=D['querySelector']('input')||D;if(D&&!D['patched']){D['addEventListener']('keydown',F=>{this['handleKeyDown']['bind'](this)(F);F['stopImmediatePropagation']();});D['patched']=!![];}}['render'](){let D=[b['ReactUtils']['createElement']('input',b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](this['props']['size']&&s['LibraryComponents']['TextInput']['Sizes'][this['props']['size']['toUpperCase']()]&&b['disCN']['input'+this['props']['size']['toLowerCase']()]||b['disCN']['inputdefault'],this['props']['inputClassName'],this['props']['focused']&&b['disCN']['inputfocused'],this['props']['error']||this['props']['errorMessage']?b['disCN']['inputerror']:this['props']['success']&&b['disCN']['inputsuccess'],this['props']['disabled']&&b['disCN']['inputdisabled'],this['props']['editable']&&b['disCN']['inputeditable']),'type':this['props']['type']=='color'||this['props']['type']=='file'?'text':this['props']['type'],'onChange':this['handleChange']['bind'](this),'onInput':this['handleInput']['bind'](this),'onKeyDown':this['handleKeyDown']['bind'](this),'onBlur':this['handleBlur']['bind'](this),'onFocus':this['handleFocus']['bind'](this),'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'maxLength':this['props']['type']=='file'?![]:this['props']['maxLength'],'ref':this['props']['inputRef']}),'errorMessage','focused','error','success','inputClassName','inputChildren','valuePrefix','inputPrefix','size','editable','inputRef','style','mode','filter','useFilePath','useFilepath')),this['props']['inputChildren'],this['props']['type']=='color'?b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'wrap':!![],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['ColorSwatches'],{'colors':[],'color':this['props']['value']&&this['props']['mode']=='comp'?b['ColorUtils']['convert'](this['props']['value']['split'](','),'RGB'):this['props']['value'],'onColorChange':E=>{this['handleChange'](!E?'':this['props']['mode']=='comp'?b['ColorUtils']['convert'](E,'RGBCOMP')['slice'](0x0,0x3)['join'](','):E);},'pickerConfig':{'gradient':![],'alpha':this['props']['mode']!='comp'}})}):null,this['props']['type']=='file'?b['ReactUtils']['createElement'](s['LibraryComponents']['FileButton'],{'filter':this['props']['filter'],'mode':this['props']['mode'],'useFilePath':this['props']['useFilePath']||this['props']['useFilepath']}):null]['flat'](0xa)['filter'](E=>E);return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['inputwrapper'],this['props']['type']=='number'&&(this['props']['size']&&s['LibraryComponents']['TextInput']['Sizes'][this['props']['size']['toUpperCase']()]&&b['disCN']['inputnumberwrapper'+this['props']['size']['toLowerCase']()]||b['disCN']['inputnumberwrapperdefault']),this['props']['className']),'style':this['props']['style'],'children':[this['props']['inputPrefix']?b['ReactUtils']['createElement']('span',{'className':b['disCN']['inputprefix']}):null,this['props']['type']=='number'?b['ReactUtils']['createElement']('div',{'className':b['disCN']['inputnumberbuttons'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['inputnumberbuttonup'],'onClick':E=>{let F=parseInt(this['props']['min']);let G=parseInt(this['props']['max']);let H=parseInt(this['props']['value'])+0x1||F||0x0;if(isNaN(G)||!isNaN(G)&&H<=G)this['handleNumberButton']['bind'](this)(E['_targetInst'],isNaN(F)||!isNaN(F)&&H>=F?H:F);}}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['inputnumberbuttondown'],'onClick':E=>{let F=parseInt(this['props']['min']);let G=parseInt(this['props']['max']);let H=parseInt(this['props']['value'])-0x1||F||0x0;if(isNaN(F)||!isNaN(F)&&H>=F)this['handleNumberButton']['bind'](this)(E['_targetInst'],isNaN(G)||!isNaN(G)&&H<=G?H:G);}})]}):null,D['length']==0x1?D[0x0]:b['ReactUtils']['createElement'](s['LibraryComponents']['Flex'],{'align':s['LibraryComponents']['Flex']['Align']['CENTER'],'children':D['map']((E,F)=>F!=0x0?b['ReactUtils']['createElement'](s['LibraryComponents']['Flex']['Child'],{'shrink':0x0,'children':E}):E)}),this['props']['errorMessage']?b['ReactUtils']['createElement'](s['LibraryComponents']['TextElement'],{'className':b['disCN']['carderror'],'size':s['LibraryComponents']['TextElement']['Sizes']['SIZE_12'],'color':s['LibraryComponents']['TextElement']['Colors']['STATUS_RED'],'children':this['props']['errorMessage']}):null]['filter'](E=>E)});}};s['LibraryComponents']['TextScroller']=c['loadPatchedComp']('TextScroller')||t&&class BDFDB_TextScroller extends k['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['textscroller'],this['props']['className']),'style':Object['assign']({},this['props']['style'],{'position':'relative','display':'block','overflow':'hidden'}),'ref':D=>{let E=b['ReactUtils']['findDOMNode'](D);if(E&&E['parentElement']){let F=b['DOMUtils']['getInnerWidth'](E['parentElement']);if(F>0x32)E['style']['setProperty']('max-width',F+'px');b['TimeUtils']['timeout'](H=>{if(document['contains'](E['parentElement'])){let I=b['DOMUtils']['getInnerWidth'](E['parentElement']);if(I>F)E['style']['setProperty']('max-width',I+'px');}},0xbb8);let G=new k['AnimationUtils']['Value'](0x0);G['interpolate']({'inputRange':[0x0,0x1],'outputRange':[0x0,(b['DOMUtils']['getRects'](E['firstElementChild'])['width']-b['DOMUtils']['getRects'](E)['width'])*-0x1]})['addListener'](H=>{E['firstElementChild']['style']['setProperty']('left',H['value']+'px','important');});this['scroll']=H=>{let I=H+parseFloat(E['firstElementChild']['style']['getPropertyValue']('left'))/(b['DOMUtils']['getRects'](E['firstElementChild'])['width']-b['DOMUtils']['getRects'](E)['width']);I=isNaN(I)||!isFinite(I)?H:I;I*=b['DOMUtils']['getRects'](E['firstElementChild'])['width']/(b['DOMUtils']['getRects'](E)['width']*0x2);k['AnimationUtils']['parallel']([k['AnimationUtils']['timing'](G,{'toValue':H,'duration':Math['sqrt'](I**0x2)*0xfa0/(parseInt(this['props']['speed'])||0x1)})])['start']();};}},'onClick':D=>{if(typeof this['props']['onClick']=='function')this['props']['onClick'](D,this);},'onMouseEnter':D=>{if(b['DOMUtils']['getRects'](D['currentTarget'])['width']{if(this['scrolling']){delete this['scrolling'];D['currentTarget']['firstElementChild']['style']['setProperty']('display','inline','important');this['scroll'](0x0);}},'children':b['ReactUtils']['createElement']('div',{'style':{'left':'0','position':'relative','display':'inline','whiteSpace':'nowrap'},'children':this['props']['children']})});}};s['LibraryComponents']['TooltipContainer']=c['loadPatchedComp']('TooltipContainer')||t&&class BDFDB_TooltipContainer extends k['React']['Component']{['render'](){let D=(b['ArrayUtils']['is'](this['props']['children'])?this['props']['children'][0x0]:this['props']['children'])||b['ReactUtils']['createElement']('div',{});D['props']['className']=b['DOMUtils']['formatClassName'](D['props']['className'],this['props']['className']);let E=D['props']['onMouseEnter'],F=D['props']['onMouseLeave'],G=D['props']['onClick'],H=D['props']['onContextMenu'];let I=![];D['props']['onMouseEnter']=(J,K)=>{if(!I){I=!![];b['TooltipUtils']['create'](J['currentTarget'],this['props']['text'],Object['assign']({'delay':this['props']['delay']},this['props']['tooltipConfig']));if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](J,this);if(typeof E=='function')E(J,K);}};D['props']['onMouseLeave']=(J,K)=>{I=![];if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](J,this);if(typeof F=='function')F(J,K);};D['props']['onClick']=(J,K)=>{if(typeof this['props']['onClick']=='function')this['props']['onClick'](J,this);if(typeof G=='function')G(J,K);};D['props']['onContextMenu']=(J,K)=>{if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](J,this);if(typeof H=='function')H(J,K);};return b['ReactUtils']['createElement'](k['React']['Fragment'],{'children':D});}};s['LibraryComponents']['UserSummaryItem']=b['ModuleUtils']['findByName']('UserSummaryItem');for(let D in s['NativeSubComponents'])if(s['LibraryComponents'][D])for(let E in s['NativeSubComponents'][D])if(E!='displayName'&&E!='name'&&(typeof s['NativeSubComponents'][D][E]!='function'||E['charAt'](0x0)==E['charAt'](0x0)['toUpperCase']())){if(E=='defaultProps')s['LibraryComponents'][D][E]=Object['assign']({},s['LibraryComponents'][D][E],s['NativeSubComponents'][D][E]);else s['LibraryComponents'][D][E]=s['NativeSubComponents'][D][E];}b['LibraryComponents']=Object['assign']({},s['LibraryComponents']);b['DOMUtils']['appendLocalStyle']('BDFDB','\x0a\x09\x09@import\x20url(https://mwittrien.github.io/BetterDiscordAddons/Themes/SupporterBadge.css);\x0a\x09\x09\x0a\x09\x09img:not([src]),\x20img[src=\x22\x22],\x20img[src=\x22null\x22]\x20{\x0a\x09\x09\x09opacity:\x200;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['loadingiconwrapper']+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09\x09right:\x200;\x0a\x09\x09\x09z-index:\x201000;\x0a\x09\x09\x09animation:\x20loadingwrapper-fade\x203s\x20infinite\x20ease;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['loadingiconwrapper']+b['dotCN']['loadingicon'])+'\x20{\x0a\x09\x09\x09margin:\x200\x205px;\x0a\x09\x09}\x0a\x09\x09@keyframes\x20loadingwrapper-fade\x20{\x0a\x09\x09\x09from\x20{opacity:\x200.1;}\x0a\x09\x09\x0950%\x20{opacity:\x200.9;}\x0a\x09\x09\x09to\x20{opacity:\x200.1;}\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['settingspanelinner']+'\x20{\x0a\x09\x09\x09padding-left:\x2015px;\x0a\x09\x09\x09padding-right:\x205px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingspanellist']+'\x20{\x0a\x09\x09\x09padding-left:\x2015px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['collapsecontainer']+'\x20{\x0a\x09\x09\x09margin-bottom:\x2020px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainermini']+'\x20{\x0a\x09\x09\x09margin-bottom:\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainerinner']+'\x20{\x0a\x09\x09\x09padding-left:\x2015px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['settingspanelinner']+b['dotCN']['collapsecontainerheader'])+'\x20{\x0a\x09\x09\x09margin-left:\x20-16px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainerarrow']+'\x20{\x0a\x09\x09\x09background:\x20url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K)\x20center/cover\x20no-repeat;\x0a\x09\x09\x09height:\x2016px;\x0a\x09\x09\x09width:\x2016px;\x0a\x09\x09\x09transition:\x20transform\x20.3s\x20ease;\x0a\x09\x09\x09transform:\x20rotate(0);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['collapsecontainercollapsed']+b['dotCN']['collapsecontainerarrow'])+'\x20{\x0a\x09\x09\x09transform:\x20rotate(-90deg);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['settingsguild']+'\x20{\x0a\x09\x09\x09border-radius:\x2050%;\x0a\x09\x09\x09border:\x203px\x20solid\x20'+b['DiscordConstants']['Colors']['STATUS_GREEN']+';\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09\x09margin:\x203px;\x0a\x09\x09\x09overflow:\x20hidden;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingsguilddisabled']+'\x20{\x0a\x09\x09\x09border-color:\x20'+b['DiscordConstants']['Colors']['STATUS_GREY']+';\x0a\x09\x09\x09filter:\x20grayscale(100%)\x20brightness(50%);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['overflowellipsis']+'\x20{\x0a\x09\x09\x09overflow:\x20hidden;\x0a\x09\x09\x09text-overflow:\x20ellipsis;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCN']['messageavatar']+b['dotCN']['bdfdbbadge'])+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09overflow:\x20visible;\x0a\x09\x09\x09border-radius:\x200;\x0a\x09\x09}\x0a\x0a\x09\x09'+b['dotCN']['favbuttoncontainer']+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09}\x0a\x0a\x09\x09'+b['dotCN']['cursordefault']+'\x20{\x0a\x09\x09\x09cursor:\x20default\x20!important;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['cursorpointer']+'\x20{\x0a\x09\x09\x09cursor:\x20pointer\x20!important;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['selectwrapper']+b['dotCN']['select'])+'\x20{\x0a\x09\x09\x09flex:\x201\x201\x20auto;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['selectwrapper']+'\x20[class*=\x22css-\x22][class*=\x22-container\x22]\x20>\x20[class*=\x22css-\x22][class*=\x22-menu\x22]\x20{\x0a\x09\x09\x09z-index:\x203;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['hotkeywrapper']+b['dotCN']['hotkeycontainer'])+'\x20{\x0a\x09\x09\x09flex:\x201\x201\x20auto;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['hotkeyresetbutton']+'\x20{\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09\x09margin-left:\x205px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['hotkeyresetbutton']+b['dotCN']['svgicon'])+':hover\x20{\x0a\x09\x09\x09color:\x20'+b['DiscordConstants']['Colors']['STATUS_RED']+';\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09\x0a\x09\x09'+(b['dotCNC']['hovercardwrapper']+b['dotCN']['hovercardinner'])+'\x20{\x0a\x09\x09\x09min-height:\x2028px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['hovercardinner']+'\x20{\x0a\x09\x09\x09width:\x20100%;\x0a\x09\x09\x09padding-right:\x205px;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09z-index:\x201;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['hovercardwrapper']+b['dotCN']['hovercardbutton'])+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09top:\x20-6px;\x0a\x09\x09\x09right:\x20-6px;\x0a\x09\x09\x09opacity:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['hovercardwrapper']+b['dotCNS']['hovercard']+b['dotCN']['hovercardbutton'])+'\x20{\x0a\x09\x09\x09right:\x20-25px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['hovercardwrapper']+':hover\x20'+b['dotCN']['hovercardbutton']+'\x20{\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['table']+'\x20{\x0a\x09\x09\x09width:\x20100%;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheader']+'\x20{\x0a\x09\x09\x09padding:\x200px\x2012px\x208px\x200;\x0a\x09\x09\x09margin-bottom:\x205px;\x0a\x09\x09\x09font-size:\x2012px;\x0a\x09\x09\x09font-weight:\x20600;\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09background-color:\x20var(--background-primary);\x0a\x09\x09\x09border-bottom:\x201px\x20solid\x20var(--background-modifier-accent);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tablestickyheader']+':first-child\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09width:\x20100%;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['modalsubinner']+b['dotCN']['tablestickyheader'])+':first-child\x20{\x0a\x09\x09\x09padding-left:\x2020px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercell']+'\x20{\x0a\x09\x09\x09text-transform:\x20uppercase;\x0a\x09\x09\x09color:\x20var(--interactive-normal);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercell']+',\x0a\x09\x09'+b['dotCN']['tablebodycell']+'\x20{\x0a\x09\x09\x09border-left:\x201px\x20solid\x20var(--background-modifier-accent);\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09padding:\x200\x2012px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercell']+':first-child,\x0a\x09\x09'+b['dotCN']['tablebodycell']+':first-child\x20{\x0a\x09\x09\x09border-left:\x20none;\x0a\x09\x09\x09padding-left:\x200;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercellsorted']+',\x0a\x09\x09'+b['dotCN']['tableheadercellsorted']+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadersorticon']+'\x20{\x0a\x09\x09\x09width:\x2018px;\x0a\x09\x09\x09height:\x2018px;\x0a\x09\x09\x09margin-left:\x204px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tablerow']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09margin-bottom:\x205px;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09color:\x20var(--header-secondary);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tablebodycell']+'\x20{\x0a\x09\x09\x09font-size:\x2015px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['settingstablelist']+b['dotCN']['checkboxcontainer'])+':before\x20{\x0a\x09\x09\x09display:\x20none;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['settingstablelist']+b['dotCN']['settingstableheader'])+'\x20{\x0a\x09\x09\x09min-height:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['settingstablelist']+b['dotCN']['settingstableheaderoption'])+'\x20{\x0a\x09\x09\x09width:\x20unset;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstableheadervertical']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstableheadervertical']+'\x20>\x20span\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09bottom:\x2050%;\x0a\x09\x09\x09right:\x20calc(50%\x20-\x205px);\x0a\x09\x09\x09margin-bottom:\x20-5px;\x0a\x09\x09\x09writing-mode:\x20vertical-rl;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstablecard']+'\x20{\x0a\x09\x09\x09height:\x2060px;\x0a\x09\x09\x09padding:\x200\x2010px;\x0a\x09\x09\x09margin-bottom:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['settingstablecard']+b['dotCN']['settingstablecardlabel'])+'\x20{\x0a\x09\x09\x09padding-right:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['settingstablecard']+b['dotCN']['settingstablecardlabel'])+',\x0a\x09\x09'+(b['dotCNS']['settingstablecard']+b['dotCN']['settingstablecardconfigs'])+'\x20{\x0a\x09\x09\x09margin:\x200;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstableheaders']+'\x20{\x0a\x09\x09\x09margin-right:\x2010px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['popoutwrapper']+b['dotCN']['messagespopouttabbarheader'])+'\x20{\x0a\x09\x09\x09flex:\x201\x200\x20auto;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09height:\x20unset;\x0a\x09\x09\x09min-height:\x2056px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['popoutwrapper']+b['dotCNS']['messagespopouttabbarheader']+b['dotCN']['messagespopouttabbar'])+'\x20{\x0a\x09\x09\x09min-height:\x2032px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['quickselectpopoutwrapper'])+',\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['quickselectpopoutwrapper'])+'\x20{\x0a\x09\x09\x09border-radius:\x204px;\x0a\x09\x09\x09padding:\x206px\x208px;\x0a\x09\x09\x09cursor:\x20default;\x0a\x09\x09\x09background-color:\x20var(--background-floating);\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09box-shadow:\x20var(--elevation-high);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['quickselectpopoutwrapper']+b['dotCN']['quickselectpopoutoption'])+'\x20{\x0a\x09\x09\x09white-space:\x20nowrap;\x0a\x09\x09\x09text-overflow:\x20ellipsis;\x0a\x09\x09\x09overflow:\x20hidden;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09font-weight:\x20500;\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09margin-top:\x202px;\x0a\x09\x09\x09margin-bottom:\x202px;\x0a\x09\x09\x09padding:\x200\x208px;\x0a\x09\x09\x09font-size:\x2014px;\x0a\x09\x09\x09line-height:\x2018px;\x0a\x09\x09\x09min-height:\x2032px;\x0a\x09\x09\x09border-radius:\x202px;\x0a\x09\x09\x09color:\x20var(--interactive-normal);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['quickselectpopoutwrapper']+b['dotCN']['quickselectpopoutoption'])+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-hover);\x0a\x09\x09\x09background-color:\x20var(--background-modifier-hover);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['quickselectpopoutwrapper']+b['dotCN']['quickselectpopoutoption']+b['dotCN']['quickselectpopoutoptionselected'])+'\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09\x09background-color:\x20var(--background-modifier-selected);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['charcounter']+'\x20{\x0a\x09\x09\x09color:\x20var(--channels-default);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['inputnumberwrapper']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbuttons']+':hover\x20+\x20'+(b['dotCN']['input']+b['notCN']['inputfocused']+b['notCN']['inputerror']+b['notCN']['inputsuccess']+b['notCN']['inputdisabled'])+':not(:focus)\x20{\x0a\x09\x09\x09border-color:\x20#040405;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapperdefault']+b['dotCN']['input'])+'\x20{\x0a\x09\x09\x09padding-right:\x2025px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrappermini']+b['dotCN']['input'])+'\x20{\x0a\x09\x09\x09padding-left:\x206px;\x0a\x09\x09\x09padding-right:\x2017px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapper']+b['dotCN']['input'])+'::-webkit-inner-spin-button,\x20\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapper']+b['dotCN']['input'])+'::-webkit-outer-spin-button{\x0a\x09\x09\x09-webkit-appearance:\x20none\x20!important;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbuttons']+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09flex-direction:\x20column;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09justify-content:\x20space-around;\x0a\x09\x09\x09height:\x20110%;\x0a\x09\x09\x09top:\x20-2%;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapperdefault']+b['dotCN']['inputnumberbuttons'])+'\x20{\x0a\x09\x09\x09right:\x208px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrappermini']+b['dotCN']['inputnumberbuttons'])+'\x20{\x0a\x09\x09\x09right:\x204px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbutton']+'\x20{\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09\x09border:\x20transparent\x20solid\x205px;\x0a\x09\x09\x09border-top-width:\x202.5px;\x0a\x09\x09\x09display:\x20inline-block;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['inputnumberbutton'])+'\x20{\x0a\x09\x09\x09border-bottom-color:\x20#dcddde;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['inputnumberbutton'])+':hover\x20{\x0a\x09\x09\x09border-bottom-color:\x20#4f545c;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['inputnumberbutton'])+'\x20{\x0a\x09\x09\x09border-bottom-color:\x20#72767d;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['inputnumberbutton'])+':hover\x20{\x0a\x09\x09\x09border-bottom-color:\x20#f6f6f7;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbuttondown']+'\x20{\x0a\x09\x09\x09transform:\x20rotate(180deg);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['guildupperleftbadge']+'\x20{\x0a\x09\x09\x09top:\x200;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['guildlowerleftbadge']+'\x20{\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNC']['guildlowerleftbadge']+b['dotCN']['guildupperleftbadge'])+'\x20{\x0a\x09\x09\x09pointer-events:\x20none;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09left:\x200;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['svgicon']+'\x20{\x0a\x09\x09\x09color:\x20var(--interactive-normal);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['svgicon']+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-hover);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['svgicon']+':active\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['modalsubinnerscrollerless']+'\x20{\x0a\x09\x09\x09padding-bottom:\x2010px;\x0a\x09\x09\x09overflow:\x20visible;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['modaltabcontent']+'\x20{\x0a\x09\x09\x09margin-top:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['listscroller']+b['dotCN']['modaltabcontent'])+'\x20{\x0a\x09\x09\x09margin-top:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['modalwrapper']+b['dotCN']['modalheader']+b['dotCN']['modalheaderhassibling'])+'\x20{\x0a\x09\x09\x09padding-bottom:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['modalwrapper']+b['dotCN']['tabbarcontainer'])+'\x20{\x0a\x09\x09\x09background:\x20rgba(0,\x200,\x200,\x200.1);\x0a\x09\x09\x09border:\x20none;\x0a\x09\x09\x09box-shadow:\x200\x202px\x203px\x200\x20rgba(0,\x200,\x200,\x200.05);\x0a\x09\x09\x09padding-right:\x2012px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCNS']['modalwrapper']+b['dotCN']['tabbarcontainer'])+'\x20{\x0a\x09\x09\x09background:\x20rgba(0,\x200,\x200,\x200.2);\x0a\x09\x09\x09box-shadow:\x200\x202px\x203px\x200\x20rgba(0,\x200,\x200,\x200.1);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['popoutthemedpopout']+'\x20{\x0a\x09\x09\x09background-color:\x20#fff;\x0a\x09\x09\x09border:\x201px\x20solid\x20hsla(0,0%,74.9%,.3);\x0a\x09\x09\x09-webkit-box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,.1);\x0a\x09\x09\x09box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,.1);\x0a\x09\x09\x09-webkit-box-sizing:\x20border-box;\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09\x09display:\x20-webkit-box;\x0a\x09\x09\x09display:\x20-ms-flexbox;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09-webkit-box-orient:\x20vertical;\x0a\x09\x09\x09-webkit-box-direction:\x20normal;\x0a\x09\x09\x09-ms-flex-direction:\x20column;\x0a\x09\x09\x09flex-direction:\x20column;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutthemedpopout'])+'\x20{\x0a\x09\x09\x09background-color:\x20#2f3136;\x0a\x09\x09\x09border:\x201px\x20solid\x20rgba(28,36,43,.6);\x0a\x09\x09\x09-webkit-box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,20%);\x0a\x09\x09\x09box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,.2);\x0a\x09\x09}\x0a\x0a\x09\x09#bd-settingspane-container\x20.ui-form-title\x20{\x0a\x09\x09\x09display:\x20inline-block;\x0a\x09\x09}\x0a\x09\x09#bd-settingspane-container\x20'+b['dotCN']['_repofolderbutton']+'\x20{\x0a\x09\x09\x09position:\x20static;\x0a\x09\x09\x09margin-bottom:\x200;\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09\x09display:\x20inline-block;\x0a\x09\x09\x09margin-left:\x2010px;\x0a\x09\x09}\x0a\x09\x09#bd-settingspane-container\x20'+b['dotCN']['_repoupdatebutton']+'[style]\x20{\x0a\x09\x09\x09display:\x20none\x20!important;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolist']+b['dotCN']['_repocontrols'])+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09justify-content:\x20center;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolist']+b['dotCNS']['_repofooter']+b['dotCN']['_repolinks'])+'\x20+\x20*\x20{\x0a\x09\x09\x09margin-left:\x20auto;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolist']+b['dotCN']['_repocontrols'])+'\x20>\x20*,\x0a\x09\x09'+(b['dotCNS']['_repolist']+b['dotCNS']['_repofooter'])+'\x20button\x20+\x20button,\x0a\x09\x09'+(b['dotCNS']['_repolist']+b['dotCNS']['_repofooter']+b['dotCN']['_repolinks'])+'\x20+\x20*\x20~\x20*\x20{\x0a\x09\x09\x09margin-left:\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['_repoicon']+'\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['noticewrapper']+'\x20{\x0a\x09\x09\x09transition:\x20height\x200.5s\x20ease\x20!important;\x0a\x09\x09\x09border-radius:\x200\x20!important;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['noticewrapper']+b['dotCN']['noticeplatformicon'])+'\x20{\x0a\x09\x09\x09margin-top:\x20-7px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['noticewrapper']+b['dotCN']['noticeplatformicon'])+'\x20svg\x20{\x0a\x09\x09\x09max-height:\x2028px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['noticesurvey']+'\x20{\x0a\x09\x09\x09background-color:\x20#222;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCN']['tooltip']+b['dotCNS']['tooltipcustom']+b['dotCN']['tooltippointer'])+'\x20{\x0a\x09\x09\x09border-top-color:\x20inherit\x20!important;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['colorpickerswatchsingle']+'\x20{\x0a\x09\x09\x09height:\x2030px;\x0a\x09\x09\x09width:\x2030px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatches']+b['dotCN']['colorpickerswatchesdisabled'])+'\x20{\x0a\x09\x09\x09cursor:\x20no-drop;\x0a\x09\x09\x09filter:\x20grayscale(70%)\x20brightness(50%);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchnocolor']+b['notCN']['colorpickerswatchdefault']+b['notCN']['colorpickerswatchdisabled'])+'\x20{\x0a\x09\x09\x09overflow:\x20hidden;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchnocolor']+b['notCN']['colorpickerswatchdefault']+b['notCN']['colorpickerswatchdisabled'])+':after\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09top:\x200;\x0a\x09\x09\x09right:\x200;\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09\x09left:\x200;\x0a\x09\x09\x09z-index:\x20-1;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['dotCN']['colorpickerswatchcustom'])+'[style*=\x22background\x22]\x20{\x0a\x09\x09\x09border:\x20none;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchdefault'])+':after\x20{\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['dotCN']['colorpickerswatchcustom']+b['notCN']['colorpickerswatchdefault'])+':after\x20{\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchnocolor']+b['notCN']['colorpickerswatchdefault']+b['notCN']['colorpickerswatchdisabled'])+':after\x20{\x0a\x09\x09\x09background:\x20url(\x27data:image/svg+xml;\x20utf8,\x20 \x27)\x20center\x20repeat;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['colorpickeralpha']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09height:\x208px;\x0a\x09\x09\x09margin:\x2016px\x200\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickergradient']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09height:\x208px;\x0a\x09\x09\x09margin:\x2027px\x202px\x202px\x202px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickeralpha']+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09height:\x2016px\x20!important;\x0a\x09\x09\x09width:\x208px\x20!important;\x0a\x09\x09\x09margin-top:\x20-3px\x20!important;\x0a\x09\x09\x09border-radius:\x203px\x20!important;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['colorpickersaturation'])+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09box-shadow:\x20rgb(200,\x20200,\x20200)\x200px\x200px\x200px\x201.5px,\x20rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x201px\x201px\x20inset,\x20rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x201px\x202px\x20!important;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['colorpickerhue'])+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div,\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['colorpickeralpha'])+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09background:\x20rgb(200,\x20200,\x20200)\x20!important;\x0a\x09\x09\x09box-shadow:\x20rgba(0,\x200,\x200,\x201)\x200px\x200px\x202px\x20!important;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickeralpha']+'\x20>\x20div\x20>\x20div,\x0a\x09\x09'+b['dotCN']['colorpickergradient']+'\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickeralpha']+b['dotCN']['colorpickeralphacheckered'])+',\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcheckered'])+',\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div:after\x20{\x0a\x09\x09\x09background:\x20url(\x27data:image/svg+xml;\x20utf8,\x20 \x27)\x20center\x20repeat;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div\x20{\x0a\x09\x09\x09height:\x208px;\x0a\x09\x09\x09width:\x208px;\x0a\x09\x09\x09margin-top:\x20-15px;\x0a\x09\x09\x09border:\x201px\x20solid\x20rgb(128,\x20128,\x20128);\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09\x09transform:\x20translateX(-5px);\x0a\x09\x09\x09transform-style:\x20preserve-3d;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div:after\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09top:\x200;\x0a\x09\x09\x09right:\x200;\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09\x09left:\x200;\x0a\x09\x09\x09z-index:\x20-1;\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09\x09transform:\x20translateZ(-1px);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09border:\x203px\x20solid\x20transparent;\x0a\x09\x09\x09border-top-width:\x205px;\x0a\x09\x09\x09border-top-color:\x20rgb(128,\x20128,\x20128);\x0a\x09\x09\x09width:\x200;\x0a\x09\x09\x09height:\x200;\x0a\x09\x09\x09top:\x20100%;\x0a\x09\x09\x09left:\x20-50%;\x0a\x09\x09\x09transform:\x20translateX(5px);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursoredge'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-right-width:\x200;\x0a\x09\x09\x09border-left-width:\x205px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursoredge'])+'\x20~\x20'+(b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursoredge'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-right-width:\x205px;\x0a\x09\x09\x09border-left-width:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div\x20{\x0a\x09\x09\x09border-color:\x20rgb(55,\x2055,\x2055);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-top-color:\x20rgb(55,\x2055,\x2055);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div\x20{\x0a\x09\x09\x09border-color:\x20rgb(200,\x20200,\x20200);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-top-color:\x20rgb(200,\x20200,\x20200);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickergradientbutton']+'\x20{\x0a\x09\x09\x09color:\x20var(--interactive-normal);\x0a\x09\x09\x09opacity:\x200.6;\x0a\x09\x09\x09margin-left:\x206px;\x0a\x09\x09\x09transition:\x20color\x20200ms\x20ease,\x20opactity\x20200ms\x20ease;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickergradientbutton']+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-hover);\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickergradientbutton']+b['dotCN']['colorpickergradientbuttonenabled'])+',\x0a\x09\x09'+(b['dotCN']['colorpickergradientbutton']+b['dotCN']['colorpickergradientbuttonenabled'])+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNC']['layermodallarge']+b['dotCN']['modalsizelarge'])+'\x20{\x0a\x09\x09\x09max-height:\x2095vh;\x0a\x09\x09}\x0a\x09\x09@media\x20only\x20screen\x20and\x20(max-height:\x20900px)\x20{\x0a\x09\x09\x09'+(b['dotCNC']['layermodalmedium']+b['dotCN']['modalsizemedium'])+'\x20{\x0a\x09\x09\x09\x09max-height:\x2075vh;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09#pluginNotice\x20#outdatedPlugins\x20span\x20{\x0a\x09\x09\x09-webkit-app-region:\x20no-drag;\x0a\x09\x09\x09color:\x20#FFF;\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09}\x0a\x09\x09#pluginNotice\x20#outdatedPlugins\x20span:hover\x20{\x0a\x09\x09\x09text-decoration:\x20underline;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09.toasts\x20{\x0a\x09\x09\x09position:\x20fixed;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09top:\x200;\x0a\x09\x09\x09flex-direction:\x20column;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09justify-content:\x20flex-end;\x0a\x09\x09\x09pointer-events:\x20none;\x0a\x09\x09\x09z-index:\x204000;\x0a\x09\x09}\x0a\x09\x09@keyframes\x20toast-up\x20{\x0a\x09\x09\x09from\x20{\x0a\x09\x09\x09\x09transform:\x20translateY(0);\x0a\x09\x09\x09\x09opacity:\x200;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09.toast\x20{\x0a\x09\x09\x09animation:\x20toast-up\x20300ms\x20ease;\x0a\x09\x09\x09transform:\x20translateY(-10px);\x0a\x09\x09\x09background-color:\x20#36393F;\x0a\x09\x09\x09padding:\x2010px;\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09\x09box-shadow:\x200\x200\x200\x201px\x20rgba(32,34,37,.6),\x200\x202px\x2010px\x200\x20rgba(0,0,0,.2);\x0a\x09\x09\x09font-weight:\x20500;\x0a\x09\x09\x09color:\x20#fff;\x0a\x09\x09\x09user-select:\x20text;\x0a\x09\x09\x09font-size:\x2014px;\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09\x09margin-top:\x2010px;\x0a\x09\x09\x09pointer-events:\x20auto;\x0a\x09\x09}\x0a\x09\x09@keyframes\x20toast-down\x20{\x0a\x09\x09\x09to\x20{\x0a\x09\x09\x09\x09transform:\x20translateY(0px);\x0a\x09\x09\x09\x09opacity:\x200;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09.toast.closing\x20{\x0a\x09\x09\x09animation:\x20toast-down\x20200ms\x20ease;\x0a\x09\x09\x09animation-fill-mode:\x20forwards;\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09\x09transform:\x20translateY(-10px);\x0a\x09\x09}\x0a\x09\x09.toast\x20.toast-inner\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09}\x0a\x09\x09.toast\x20.toast-avatar\x20{\x0a\x09\x09\x09margin-right:\x205px;\x0a\x09\x09\x09width:\x2025px;\x0a\x09\x09\x09height:\x2025px;\x0a\x09\x09\x09flex:\x200\x200\x20auto;\x0a\x09\x09\x09background-size:\x20cover;\x0a\x09\x09\x09background-position:\x20center;\x0a\x09\x09\x09border-radius:\x2050%;\x0a\x09\x09}\x0a\x09\x09.toast.icon\x20{\x0a\x09\x09\x09padding-left:\x2030px;\x0a\x09\x09\x09background-position:\x206px\x2050%;\x0a\x09\x09\x09background-size:\x2020px\x2020px;\x0a\x09\x09\x09background-repeat:\x20no-repeat;\x0a\x09\x09}\x0a\x09\x09.toast.toast-brand\x20{\x0a\x09\x09\x09background-color:\x20#7289DA;\x0a\x09\x09}\x0a\x09\x09.toast.toast-brand.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9IjI3IDI3IDExNSAxMTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMTEuMywxMjQuMWMwLDAtMy40LTQuMS02LjMtNy43YzEyLjYtMy41LDE3LjQtMTEuMywxNy40LTExLjMgYy00LDIuNi03LjcsNC40LTExLjEsNS42Yy00LjgsMi05LjUsMy4zLTE0LDQuMWMtOS4yLDEuNy0xNy42LDEuMy0yNC45LTAuMWMtNS41LTEtMTAuMi0yLjUtMTQuMS00LjFjLTIuMi0wLjgtNC42LTEuOS03LjEtMy4zIGMtMC4zLTAuMi0wLjYtMC4zLTAuOS0wLjVjLTAuMS0wLjEtMC4zLTAuMi0wLjQtMC4yYy0xLjctMS0yLjYtMS42LTIuNi0xLjZzNC42LDcuNiwxNi44LDExLjJjLTIuOSwzLjYtNi40LDcuOS02LjQsNy45IGMtMjEuMi0wLjYtMjkuMy0xNC41LTI5LjMtMTQuNWMwLTMwLjYsMTMuOC01NS40LDEzLjgtNTUuNGMxMy44LTEwLjMsMjYuOS0xMCwyNi45LTEwbDEsMS4xQzUyLjgsNTAuMyw0NSw1Ny45LDQ1LDU3LjkgczIuMS0xLjIsNS43LTIuN2MxMC4zLTQuNSwxOC40LTUuNywyMS44LTZjMC41LTAuMSwxLjEtMC4yLDEuNi0wLjJjNS45LTAuNywxMi41LTAuOSwxOS40LTAuMmM5LjEsMSwxOC45LDMuNywyOC45LDkuMSBjMCwwLTcuNS03LjItMjMuOS0xMi4xbDEuMy0xLjVjMCwwLDEzLjEtMC4zLDI2LjksMTBjMCwwLDEzLjgsMjQuOCwxMy44LDU1LjRDMTQwLjYsMTA5LjYsMTMyLjUsMTIzLjUsMTExLjMsMTI0LjF6IE0xMDEuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzExMS41LDg0LjQsMTA3LjEsNzkuNywxMDEuNyw3OS43eiBNNjYuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzc2LjUsODQuNCw3Mi4xLDc5LjcsNjYuNyw3OS43eiIvPjwvc3ZnPg==);\x0a\x09\x09}\x0a\x09\x09.toast.toast-danger,\x20\x0a\x09\x09.toast.toast-error\x20{\x0a\x09\x09\x09background-color:\x20#F04747;\x0a\x09\x09}\x0a\x09\x09.toast.toast-danger.icon,\x0a\x09\x09.toast.toast-error.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+);\x0a\x09\x09}\x0a\x09\x09.toast.toast-default\x20{\x0a\x09\x09\x09background-color:\x20#F26522;\x0a\x09\x09}\x0a\x09\x09.toast.toast-default.icon\x20{\x0a\x09\x09\x09padding-left:\x2010px;\x0a\x09\x09}\x0a\x09\x09.toast.toast-facebook\x20{\x0a\x09\x09\x09background-color:\x20#355089;\x0a\x09\x09}\x0a\x09\x09.toast.toast-facebook.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9Ii01IC01IDEwMCAxMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggaWQ9IkZhY2Vib29rX194MjhfYWx0X3gyOV8iIGQ9Ik05MCwxNS4wMDFDOTAsNy4xMTksODIuODg0LDAsNzUsMEgxNUM3LjExNiwwLDAsNy4xMTksMCwxNS4wMDF2NTkuOTk4ICAgQzAsODIuODgxLDcuMTE2LDkwLDE1LjAwMSw5MEg0NVY1NkgzNFY0MWgxMXYtNS44NDRDNDUsMjUuMDc3LDUyLjU2OCwxNiw2MS44NzUsMTZINzR2MTVINjEuODc1QzYwLjU0OCwzMSw1OSwzMi42MTEsNTksMzUuMDI0VjQxICAgaDE1djE1SDU5djM0aDE2YzcuODg0LDAsMTUtNy4xMTksMTUtMTUuMDAxVjE1LjAwMXoiIGZpbGw9IndoaXRlIi8+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPg==);\x0a\x09\x09}\x0a\x09\x09.toast.toast-info\x20{\x0a\x09\x09\x09background-color:\x20#4A90E2;\x0a\x09\x09}\x0a\x09\x09.toast.toast-info.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=);\x0a\x09\x09}\x0a\x09\x09.toast.toast-premium\x20{\x0a\x09\x09\x09background-color:\x20#202225;\x0a\x09\x09}\x0a\x09\x09.toast.toast-premium.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDMiIGhlaWdodD0iMjYiPiAgPHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOTYuMjgyNiA4LjYwMjc4ODI0bC0xLjIxNTUgOC4zOTAzNTI5NmMtLjI3NzUgMS45ODI2Mjc0LTIuNDY1NSAyLjkwMzMzMzMtNC40NzkgMi45MDMzMzMzLTEuODc1IDAtMy43MTU1LS45MjA3MDU5LTMuNDcyNS0yLjcyNTkyMTZsMS4yMTU1LTguNTY3NzY0NjZjLjI3NzUtMS44NzY1ODgyNCAyLjQ2NTUtMi44MzI0NzA2IDQuNDc5LTIuODMyNDcwNiAyLjAxNCAwIDMuNzUuOTU1ODgyMzYgMy40NzI1IDIuODMyNDcwNk05My43NzIxLjAwMzkyNTVsLjAwMDUtLjAwNDA3ODQ0aC0xMy4wODRjLS4zMzQgMC0uNjE4LjI1MDMxMzcyLS42NjYuNTg3Mjk0MTJsLS42MzY1IDQuNDMyMjM1M2MtLjA1OTUuNDE0NDcwNTguMjU2Ljc4NjExNzY0LjY2NjUuNzg2MTE3NjRoMi4zODk1Yy4yNCAwIC40MDQ1LjI0OTgwMzkyLjMxLjQ3NTY0NzA2LS4yOTguNzEyMTk2MDctLjUxNTUgMS40ODYwNzg0My0uNjM2IDIuMzIxNjQ3MDZsLTEuMjE1NSA4LjU2Nzc2NDY2Yy0uNzk5IDUuNzM1Mjk0MiAzLjg4OSA4LjYwMjQzMTQgOC45OTMgOC42MDI0MzE0IDUuMzQ3NSAwIDEwLjU5MDUtMi44NjcxMzcyIDExLjM4OS04LjYwMjQzMTRsMS4yMTUtOC41Njc3NjQ2NmMuNzgzLTUuNjIyMTE3NjUtMy43Mzk1LTguNDg4MjM1My04LjcyNTUtOC41OTg4NjI3NW0tNzguNTk1MjUgMTEuNzI4NjUxbC4wNjcgNC4xNTg5ODA0Yy4wMDE1LjA4NTEzNzItLjA1NS4xNjA1ODgyLS4xMzYuMTgxNDkwMmgtLjAwMDVsLTEuMzg1NS01LjAxNjQ3MDZjLS4wMDItLjAwNzY0NzEtLjAwNS0uMDE0Nzg0My0uMDA4LS4wMjI0MzE0TDkuNDE0MzUuNzcwNzcyNTNjLS4xMDYtLjI1Mjg2Mjc1LS4zNDk1LS40MTY1MDk4LS42MTk1LS40MTY1MDk4aC00Ljg3MjVjLS4zMzYgMC0uNjIwNS4yNTIzNTI5NC0uNjY3LjU5MTM3MjU0TC4wMDY4NSAyNC42MzcyNDMxYy0uMDU3LjQxMzQ1MS4yNTc1Ljc4MjAzOTMuNjY2NS43ODIwMzkzaDQuODU0Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybDEuMjcyLTkuNDEyNTA5OGMuMDAxNS0uMDA5MTc2NS4wMDItLjAxODM1My4wMDItLjAyNzUyOTRsLS4wNjk1LTQuODM2NTA5OC4xMzg1LS4wMzUxNzY1IDEuNDU1NSA1LjAxNjQ3MDZjLjAwMjUuMDA3MTM3Mi4wMDUuMDEzNzY0Ny4wMDc1LjAyMDkwMmw0LjAyMTUgOS40NTM4MDM5Yy4xMDY1LjI1MDgyMzUuMzQ5NS40MTM0NTEuNjE3NS40MTM0NTFoNS4yNTY1Yy4zMzYgMCAuNjIwNS0uMjUyMzUzLjY2Ny0uNTkxODgyNGwzLjI0OTUtMjMuNjkxNjA3ODRjLjA1NjUtLjQxMjk0MTE4LS4yNTgtLjc4MTUyOTQyLS42NjctLjc4MTUyOTQyaC00LjgyMDVjLS4zMzYgMC0uNjIwNS4yNTE4NDMxNC0uNjY3LjU5MDg2Mjc1bC0xLjQ4IDEwLjc1ODkwMmMtLjAwMS4wMDkxNzY0LS4wMDE1LjAxODg2MjctLjAwMTUuMDI4NTQ5bTkuMzk0IDEzLjY4NjYwMzloNC44NTVjLjMzNiAwIC42MjA1LS4yNTIzNTI5LjY2Ny0uNTkxMzcyNmwzLjI0OS0yMy42OTIxMTc2Yy4wNTY1LS40MTI5NDEyLS4yNTgtLjc4MTUyOTQ0LS42NjctLjc4MTUyOTQ0aC00Ljg1NWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTVsLTMuMjQ5IDIzLjY5MjExNzY4Yy0uMDU2NS40MTI5NDEyLjI1OC43ODE1Mjk0LjY2Ny43ODE1Mjk0TTM2LjYyMTE1LjkwNjA3NDVsLS42MzYgNC40MzIyMzUzYy0uMDU5NS40MTQ0NzA2LjI1NTUuNzg2MTE3NjUuNjY2Ljc4NjExNzY1aDUuMDgwNWMuNDA4NSAwIC43MjMuMzY3NTY4NjMuNjY3NS43ODA1MDk4bC0yLjM5MzUgMTcuNzM0MDM5MjVjLS4wNTU1LjQxMjQzMTMuMjU4NS43OC42NjcuNzhoNC45MjU1Yy4zMzY1IDAgLjYyMS0uMjUyODYyOC42NjctLjU5MjkwMmwyLjQ0NC0xOC4xMDg3NDUxYy4wNDYtLjMzOTUyOTQuMzMwNS0uNTkyOTAxOTUuNjY3LS41OTI5MDE5NWg1LjQ2MjVjLjMzNCAwIC42MTgtLjI0OTgwMzkyLjY2Ni0uNTg3Mjk0MTJsLjYzNy00LjQzMjIzNTNjLjA1OTUtLjQxNDQ3MDU4LS4yNTU1LS43ODYxMTc2NC0uNjY2NS0uNzg2MTE3NjRoLTE4LjE4NzVjLS4zMzQ1IDAtLjYxOC4yNTAzMTM3LS42NjY1LjU4NzI5NDFNNzEuMDM4NyA5LjA5ODM2ODZjLS4xNzQgMS40NTE0MTE3Ny0xLjI4NDUgMi45MDI4MjM1Ny0zLjE5NSAyLjkwMjgyMzU3aC0yLjg2OTVjLS40MSAwLS43MjQ1LS4zNjk2MDc5LS42NjctLjc4MzA1ODlsLjYwNzUtNC4zNjE4ODIzM2MuMDQ3LS4zMzg1MDk4LjMzMTUtLjU5MDM1Mjk0LjY2Ny0uNTkwMzUyOTRoMy4wNjFjMS44NDA1IDAgMi41Njk1IDEuMzEwMTk2MDggMi4zOTYgMi44MzI0NzA2TTY5LjMzNzIuMzU0MjExNzZoLTkuMjQwNWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTRsLTMuMjQ5IDIzLjY5MjExNzdjLS4wNTY1LjQxMjk0MTEuMjU4Ljc4MTUyOTQuNjY3Ljc4MTUyOTRoNC45MjM1Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybC45NTYtNy4wNzY1ODgyYy4wMjMtLjE2OTc2NDcuMTY1LS4yOTYxOTYxLjMzMzUtLjI5NjE5NjFoLjYzM2MuMTE0NSAwIC4yMjE1LjA1OTY0NzEuMjgzNS4xNTgwMzkybDQuNzAyIDcuNDkxMDU4OGMuMTI0LjE5NzI5NDIuMzM3NS4zMTY1ODgzLjU2NzUuMzE2NTg4M2g2LjA4MWMuNTQ1IDAgLjg2NDUtLjYyNTAxOTYuNTUyLTEuMDgwMjc0NWwtNC45MzQ1LTcuMTkxODA0Yy0uMTE4LS4xNzI4MjM1LS4wNTc1LS40MTI0MzEzLjEyOC0uNTA0NzA1OCAzLjE1MDUtMS41Njk2ODYzIDQuOTc5NS0zLjE3ODExNzcgNS41ODMtNy42NTAxMTc3LjY5MzUtNS44NzcwMTk2LTIuOTE3LTguNjM4MTE3NjMtNy45ODY1LTguNjM4MTE3NjMiLz48L3N2Zz4=);\x0a\x09\x09\x09background-size:\x2063px\x2016px;\x0a\x09\x09\x09padding-left:\x2073px;\x0a\x09\x09}\x0a\x09\x09.toast.toast-spotify\x20{\x0a\x09\x09\x09background-color:\x20#1DB954;\x0a\x09\x09}\x0a\x09\x09.toast.toast-spotify.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUwOC41MiA1MDguNTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUwOC41MiA1MDguNTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KPGc+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZD0iTTI1NC4yNiwwQzExMy44NDUsMCwwLDExMy44NDUsMCwyNTQuMjZzMTEzLjg0NSwyNTQuMjYsMjU0LjI2LDI1NC4yNiAgICAgczI1NC4yNi0xMTMuODQ1LDI1NC4yNi0yNTQuMjZTMzk0LjY3NSwwLDI1NC4yNiwweiBNMzcxLjY5Niw0MDMuMjg4Yy0zLjE3OCw1LjgxNi05LjEyMiw5LjA1OC0xNS4yODcsOS4wNTggICAgIGMtMi44NiwwLTUuNzIxLTAuNjY3LTguNDIyLTIuMTI5Yy00MC43MTMtMjIuNDM4LTg2Ljk1Ny0zNC4yOTMtMTMzLjY3Ny0zNC4yOTNjLTI4LDAtNTUuNjUxLDQuMTYzLTgyLjEyNiwxMi4zNjMgICAgIGMtOS4yMTcsMi44Ni0xOS4wMDYtMi4yODgtMjEuODM1LTExLjUzN2MtMi44Ni05LjE4NSwyLjI4OC0yOC43LDExLjUzNy0zMS41OTJjMjkuODQ0LTkuMjQ5LDYwLjk1OS0xMy45MjEsOTIuNDU1LTEzLjkyMSAgICAgYzUyLjU2OCwwLDEwNC42NiwxMy4zNDksMTUwLjUyMiwzOC42MTZDMzczLjMxNywzNzQuNDYxLDM3Ni40LDM5NC44NjYsMzcxLjY5Niw0MDMuMjg4eiBNNDA0LjAxOSwzMDcuNTI3ICAgICBjLTMuNjIzLDcuMDI0LTEwLjc0MiwxOC4zMzgtMTguMDg0LDE4LjMzOGMtMy4yMSwwLTYuMzg4LTAuNjk5LTkuMzc2LTIuMzJjLTUwLjQ3MS0yNi4xODktMTA1LjA0MS0zOS40NzQtMTYyLjIxOC0zOS40NzQgICAgIGMtMzEuNDk2LDAtNjIuNzcsNC4xMzItOTIuOTY0LDEyLjQ1OWMtMTAuOTAxLDIuOTU2LTIyLjA4OS0zLjQwMS0yNS4wNDUtMTQuMzAyYy0yLjkyNC0xMC45MDEsMy40NjQtMjkuNDMxLDE0LjMzNC0zMi4zODYgICAgIGMzMy42ODktOS4xODUsNjguNTg3LTEzLjg1NywxMDMuNjc0LTEzLjg1N2M2Mi44OTgsMCwxMjUuNDQ1LDE1LjI1NiwxODAuOTM4LDQ0LjExNCAgICAgQzQwNS4yOSwyODUuMjQ4LDQwOS4xOTksMjk3LjUxNiw0MDQuMDE5LDMwNy41Mjd6IE00MTcuNTI2LDIzMC44MzZjLTMuNDY0LDAtNy4wMjQtMC43OTUtMTAuMzYxLTIuNDQ3ICAgICBjLTYwLjIyOC0zMC4wMzQtMTI1LjA5Ni00NS4yMjYtMTkyLjc2MS00NS4yMjZjLTM1LjI3OSwwLTcwLjQzLDQuMjkxLTEwNC41MzMsMTIuNzEzYy0xMi41MjIsMy4wODMtMjUuMTQtNC41MTMtMjguMjIzLTE3LjAwNCAgICAgYy0zLjExNS0xMi40NTksNC41MTMtMjcuNTU1LDE3LjAwNC0zMC42MzhjMzcuNzI2LTkuMzc2LDc2LjY1OS0xNC4xMTEsMTE1LjcyLTE0LjExMWM3NC45NzUsMCwxNDYuODY3LDE2Ljg3NywyMTMuNTc4LDUwLjEyMSAgICAgYzExLjUzNyw1Ljc1MywxNi4yNDEsMTkuNzM3LDEwLjQ4OCwzMS4yNDJDNDM0LjMwOCwyMjMuNjUzLDQyNi4xMDgsMjMwLjgzNiw0MTcuNTI2LDIzMC44MzZ6IiBmaWxsPSIjRkZGRkZGIi8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=);\x0a\x09\x09}\x0a\x09\x09.toast.toast-streamermode\x20{\x0a\x09\x09\x09background-color:\x20#593695;\x0a\x09\x09}\x0a\x09\x09.toast.toast-streamermode.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSItMjUgLTI1IDU0MiA1NDIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ5MiA0OTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiPjxwYXRoIGQ9Ik00ODguMywxNDIuNXYyMDMuMWMwLDE1LjctMTcsMjUuNS0zMC42LDE3LjdsLTg0LjYtNDguOHYxMy45YzAsNDEuOC0zMy45LDc1LjctNzUuNyw3NS43SDc1LjdDMzMuOSw0MDQuMSwwLDM3MC4yLDAsMzI4LjQgICBWMTU5LjljMC00MS44LDMzLjktNzUuNyw3NS43LTc1LjdoMjIxLjhjNDEuOCwwLDc1LjcsMzMuOSw3NS43LDc1Ljd2MTMuOWw4NC42LTQ4LjhDNDcxLjMsMTE3LDQ4OC4zLDEyNi45LDQ4OC4zLDE0Mi41eiIgZmlsbD0iI0ZGRkZGRiIvPjwvc3ZnPg==);\x0a\x09\x09}\x0a\x09\x09.toast.toast-success\x20{\x0a\x09\x09\x09background-color:\x20#43B581;\x0a\x09\x09}\x0a\x09\x09.toast.toast-success.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=);\x0a\x09\x09}\x0a\x09\x09.toast.toast-warning,\x0a\x09\x09.toast.toast-warn\x20{\x0a\x09\x09\x09background-color:\x20#FFA600;\x0a\x09\x09}\x0a\x09\x09.toast.toast-warning.icon,\x0a\x09\x09.toast.toast-warn.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==);\x0a\x09\x09}');var v={};b['ListenerUtils']['add'](b,document,'keydown.BDFDBPressedKeys',F=>{if(!b['InternalData']['pressedKeys']['includes'](F['which'])){b['TimeUtils']['clear'](v[F['which']]);b['InternalData']['pressedKeys']['push'](F['which']);v[F['which']]=b['TimeUtils']['timeout'](G=>{b['ArrayUtils']['remove'](b['InternalData']['pressedKeys'],F['which'],!![]);},0xea60);}});b['ListenerUtils']['add'](b,document,'keyup.BDFDBPressedKeys',F=>{b['TimeUtils']['clear'](v[F['which']]);b['ArrayUtils']['remove'](b['InternalData']['pressedKeys'],F['which'],!![]);});b['ListenerUtils']['add'](b,document,'mousedown.BDFDBMousePosition',F=>{b['InternalData']['mousePosition']=F;});b['ListenerUtils']['add'](b,window,'focus.BDFDBPressedKeysReset',F=>{b['InternalData']['pressedKeys']=[];});c['patchedModules']={'before':{'MessageContent':'type'},'after':{'DiscordTag':'default','Mention':'default','Message':'default','MessageHeader':'default','MemberListItem':'componentDidMount','UserPopout':'componentDidMount','UserProfile':'componentDidMount','V2C_ContentColumn':'render','V2C_PluginCard':'render','V2C_ThemeCard':'render'}};c['processV2CContentColumn']=function(F){if(window['PluginUpdates']&&window['PluginUpdates']['plugins']&&typeof F['instance']['props']['title']=='string'&&F['instance']['props']['title']['toUpperCase']()['indexOf']('PLUGINS')==0x0){let [G,H]=b['ReactUtils']['findChildren'](F['returnvalue'],{'key':'folder-button'});if(H>-0x1)G['splice'](H+0x1,0x0,b['ReactUtils']['createElement'](s['LibraryComponents']['TooltipContainer'],{'text':'Only\x20checks\x20for\x20updates\x20of\x20plugins,\x20which\x20support\x20the\x20updatecheck.\x20Rightclick\x20for\x20a\x20list\x20of\x20supported\x20plugins.\x20(Listed\x20≠\x20Outdated)','tooltipConfig':{'selector':'update-button-tooltip','style':'max-width:\x20420px'},'children':b['ReactUtils']['createElement']('button',{'className':b['disCNS']['_repobutton']+b['disCN']['_repofolderbutton']+'\x20bd-updatebtn','onClick':I=>{let J=b['NotificationUtils']['toast']('Plugin\x20update\x20check\x20in\x20progress.',{'type':'info','timeout':0x0});b['PluginUtils']['checkAllUpdates']()['then'](K=>{J['close']();if(K>0x0)b['NotificationUtils']['toast']('Plugin\x20update\x20check\x20complete.\x20'+K+'\x20outdated!',{'type':'error'});else b['NotificationUtils']['toast']('Plugin\x20update\x20check\x20complete.',{'type':'success'});});},'onContextMenu':I=>{if(window['PluginUpdates']&&window['PluginUpdates']['plugins']&&!document['querySelector']('.update-list-tooltip'))b['TooltipUtils']['create'](I['currentTarget'],b['ObjectUtils']['toArray'](window['PluginUpdates']['plugins'])['map'](J=>J['name'])['filter'](J=>J)['sort']()['join'](',\x20'),{'type':'bottom','selector':'update-list-tooltip','style':'max-width:\x20420px'});},'children':'Check\x20for\x20Updates'})}));}};c['_processCard']=function(F,G){if(F['instance']['state']&&!F['instance']['state']['settings']){if(b['ObjectUtils']['toArray'](b['myPlugins'])['some'](H=>H==G)){let H,I;if(G['changelog']){[H,I]=b['ReactUtils']['findChildren'](F['returnvalue'],{'props':[['className',b['disCN']['_repocontrols']]]});if(I>-0x1)H[I]['props']['children']['unshift'](b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repocontrolsbutton'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LanguageStrings']['CHANGE_LOG'],'children':b['ReactUtils']['createElement'](s['LibraryComponents']['SvgIcon'],{'name':s['LibraryComponents']['SvgIcon']['Names']['CHANGELOG'],'className':b['disCN']['_repoicon'],'onClick':J=>{b['PluginUtils']['openChangeLog'](G);}})})}));}[H,I]=b['ReactUtils']['findChildren'](F['returnvalue'],{'props':[['className',b['disCN']['_repofooter']]]});if(I==-0x1){let J=b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repofooter'],'children':[]});F['returnvalue']['props']['children']['push'](J);H=J['props']['children'];}else{H[I]['props']['children']=[H[I]['props']['children']]['flat']();H=H[I]['props']['children'];}H['splice'](H['length']-0x1,0x0,b['ReactUtils']['createElement']('button',{'className':b['disCNS']['_repobutton']+b['disCN']['_reposettingsbutton'],'children':'Library\x20Settings','onClick':K=>{let L=b['DOMUtils']['getParent'](b['dotCN']['_reposettingsclosed'],K['currentTarget']);if(L){let M=c['createLibrarySettings']();if(M){b['DOMUtils']['addClass'](L,b['disCN']['_reposettingsopen']);b['DOMUtils']['removeClass'](L,b['disCN']['_reposettingsclosed']);let N=[];while(L['childElementCount']){N['push'](L['firstChild']);L['firstChild']['remove']();}let O=b['DOMUtils']['create']('');L['appendChild'](O);O['addEventListener']('click',P=>{b['DOMUtils']['removeClass'](L,b['disCN']['_reposettingsopen']);b['DOMUtils']['addClass'](L,b['disCN']['_reposettingsclosed']);while(L['childElementCount'])L['firstChild']['remove']();while(N['length'])L['appendChild'](N['shift']());});L['appendChild'](M);}}}}));}}};c['processV2CPluginCard']=function(F){c['_processCard'](F,F['instance']['props']['addon']&&F['instance']['props']['addon']['plugin']);};c['processV2CThemeCard']=function(F){c['_processCard'](F,F['instance']['props']['addon']&&!F['instance']['props']['addon']['plugin']&&F['instance']['props']['addon']['css']);};c['createLibrarySettings']=function(){if(!window['BDFDB']||typeof b!='object'||!b['loaded'])return;let F=b['DataUtils']['get'](b,'settings');let G,H=[];let I=b['BDUtils']['getSettings']('fork-ps-2');for(let J in F)H['push'](b['ReactUtils']['createElement'](s['LibraryComponents']['SettingsSaveItem'],{'className':b['disCN']['marginbottom8'],'type':'Switch','plugin':b,'disabled':J=='showToasts'&&I,'keys':['settings',J],'label':c['defaults']['settings'][J]['description'],'note':J=='showToasts'&&I&&'Disable\x20BBDs\x20general\x20\x27Show\x20Toast\x27\x20setting\x20before\x20disabling\x20this','dividerbottom':!![],'value':F[J]||J=='showToasts'&&I}));return G=b['PluginUtils']['createSettingsPanel'](b,H);};let w=b['ModuleUtils']['findByProperties']('MessageTimestamp',![]);if(w)c['processMessage']=function(F){if(b['ReactUtils']['getValue'](F,'instance.props.childrenHeader.type.type.name')&&b['ReactUtils']['getValue'](F,'instance.props.childrenHeader.props.message')){F['instance']['props']['childrenHeader']['type']=w['exports']['default'];}};const BDFDB_Patrons=['363785301195358221','443943393660239872'];c['_processAvatarRender']=function(F,G){if(b['ReactUtils']['isValidElement'](G)&&b['ObjectUtils']['is'](F)){let H=![];if(G['type']=='img')G=b['ReactUtils']['createElement'](s['LibraryComponents']['Avatar'],Object['assign']({},G['props'],{'className':b['DOMUtils']['formatClassName']((G['props']['className']||'')['replace'](b['disCN']['avatar'],'')),'size':s['LibraryComponents']['Avatar']['Sizes']['SIZE_40']}));G['props']['user_by_BDFDB']=F['id'];if(BDFDB_Patrons['includes'](F['id'])){H=!![];G['props']['className']=b['DOMUtils']['formatClassName'](G['props']['className'],b['disCN']['bdfdbbadge'],b['disCN']['bdfdbsupporter']);}if(F['id']=='278543574059057154'){H=!![];G['props']['className']=b['DOMUtils']['formatClassName'](G['props']['className'],b['disCN']['bdfdbbadge'],b['disCN']['bdfdbdev']);}if(H&&b['DataUtils']['get'](b,'settings','showSupportBadges'))return G;}};c['_processAvatarMount']=function(F,G){if(Node['prototype']['isPrototypeOf'](G)&&b['ObjectUtils']['is'](F)){G['setAttribute']('user_by_BDFDB',F['id']);if(BDFDB_Patrons['includes'](F['id'])&&b['DataUtils']['get'](b,'settings','showSupportBadges'))b['DOMUtils']['addClass'](G,b['disCN']['bdfdbbadge'],b['disCN']['bdfdbsupporter']);if(F['id']=='278543574059057154')b['DOMUtils']['addClass'](G,b['disCN']['bdfdbbadge'],b['disCN']['bdfdbdev']);let H=G['querySelector'](b['dotCN']['avatarpointerevents']);if(H){H['addEventListener']('mouseenter',I=>{b['DOMUtils']['addClass'](G,b['disCN']['avatarstatushovered']);});H['addEventListener']('mouseleave',I=>{b['DOMUtils']['removeClass'](G,b['disCN']['avatarstatushovered']);});}}};c['processMessageHeader']=function(F){if(F['instance']['props']['message']&&F['instance']['props']['message']['author']){let G=b['ReactUtils']['getValue'](F,'returnvalue.props.children.0');if(G&&G['props']&&typeof G['props']['children']=='function'){let H=G['props']['children'];G['props']['children']=(...I)=>{let J=H(...I);return c['_processAvatarRender'](F['instance']['props']['message']['author'],J)||J;};}else if(G&&G['type']=='img')F['returnvalue']['props']['children'][0x0]=c['_processAvatarRender'](F['instance']['props']['message']['author'],G)||G;}};c['processMemberListItem']=function(F){c['_processAvatarMount'](F['instance']['props']['user'],F['node']['querySelector'](b['dotCN']['avatarwrapper']));};c['processUserPopout']=function(F){c['_processAvatarMount'](F['instance']['props']['user'],F['node']['querySelector'](b['dotCN']['userpopoutavatarwrapper']));};c['processUserProfile']=function(F){c['_processAvatarMount'](F['instance']['props']['user'],F['node']['querySelector'](b['dotCN']['avatarwrapper']));};c['processDiscordTag']=function(F){if(F['instance']&&F['instance']['props']&&F['instance']['props']['user']&&F['returnvalue'])F['returnvalue']['props']['user']=F['instance']['props']['user'];};c['processMessageContent']=function(F){if(b['ArrayUtils']['is'](F['instance']['props']['content']))for(let G of F['instance']['props']['content'])c['_processMessageContentEle'](G);};c['_processMessageContentEle']=function(F){if(b['ReactUtils']['isValidElement'](F)){if(typeof F['props']['render']=='function'&&b['ReactUtils']['getValue'](F,'props.children.type.displayName')=='Mention'){let G=b['ReactUtils']['getValue'](F['props']['render'](),'props.userId');if(G&&!F['props']['children']['props']['userId'])F['props']['children']['props']['userId']=G;}else if(b['ReactUtils']['isValidElement'](F['props']['children']))c['_processMessageContentEle'](F['props']['children']);else if(b['ArrayUtils']['is'](F['props']['children']))for(let H of F['props']['children'])c['_processMessageContentEle'](H);}else if(b['ArrayUtils']['is'](F))for(let I of F)c['_processMessageContentEle'](I);};c['processMention']=function(F){delete F['returnvalue']['props']['userId'];};c['patchPlugin'](b);let x=b['ModuleUtils']['findByName']('BasePopout'),y=b['ModuleUtils']['findByName']('ReferencePositionLayer');if(x&&y)b['ModuleUtils']['patch'](b,x['prototype'],'renderLayer',{'after':F=>{if(F['returnValue']&&F['thisObject']['isBDFDBpopout']){F['returnValue']=b['ReactUtils']['createPortal'](b['ReactUtils']['createElement'](y,F['returnValue']['props']),document['querySelector'](b['dotCN']['appmount']+'\x20>\x20'+b['dotCN']['itemlayercontainer']));}}});if(s['LibraryComponents']['GuildComponents']['BlobMask']){let F=['lowerLeftBadge','upperLeftBadge'];b['ModuleUtils']['patch'](b,s['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'render',{'before':H=>{H['thisObject']['props']=Object['assign']({},s['LibraryComponents']['GuildComponents']['BlobMask']['defaultProps'],H['thisObject']['props']);for(let I of F)if(!H['thisObject']['state'][I+'Mask'])H['thisObject']['state'][I+'Mask']=new s['LibraryComponents']['Animations']['Controller']({'spring':0x0});},'after':H=>{let [I,J]=b['ReactUtils']['findChildren'](H['returnValue'],{'name':'TransitionGroup'});if(J>-0x1){I[J]['props']['children']['push'](!H['thisObject']['props']['lowerLeftBadge']?null:b['ReactUtils']['createElement'](s['LibraryComponents']['BadgeAnimationContainer'],{'className':b['disCN']['guildlowerleftbadge'],'key':'lower-left-badge','animatedStyle':H['thisObject']['getLowerLeftBadgeStyles'](),'children':H['thisObject']['props']['lowerLeftBadge']}));I[J]['props']['children']['push'](!H['thisObject']['props']['upperLeftBadge']?null:b['ReactUtils']['createElement'](s['LibraryComponents']['BadgeAnimationContainer'],{'className':b['disCN']['guildupperleftbadge'],'key':'upper-left-badge','animatedStyle':H['thisObject']['getUpperLeftBadgeStyles'](),'children':H['thisObject']['props']['upperLeftBadge']}));}[I,J]=b['ReactUtils']['findChildren'](H['returnValue'],{'name':'mask'});if(J>-0x1){I[J]['props']['children']['push'](b['ReactUtils']['createElement'](s['LibraryComponents']['Animations']['animated']['rect'],{'x':-0x4,'y':-0x4,'width':H['thisObject']['props']['upperLeftBadgeWidth']+0x8,'height':0x18,'rx':0xc,'ry':0xc,'transform':H['thisObject']['getLeftBadgePositionInterpolation'](H['thisObject']['state']['upperLeftBadgeMask'],-0x1),'fill':'black'}));I[J]['props']['children']['push'](b['ReactUtils']['createElement'](s['LibraryComponents']['Animations']['animated']['rect'],{'x':-0x4,'y':0x1c,'width':H['thisObject']['props']['lowerLeftBadgeWidth']+0x8,'height':0x18,'rx':0xc,'ry':0xc,'transform':H['thisObject']['getLeftBadgePositionInterpolation'](H['thisObject']['state']['lowerLeftBadgeMask']),'fill':'black'}));}}});b['ModuleUtils']['patch'](b,s['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'componentDidMount',{'after':H=>{for(let I of F)H['thisObject']['state'][I+'Mask']['update']({'spring':H['thisObject']['props'][I]!=null?0x1:0x0,'immediate':!![]})['start']();}});b['ModuleUtils']['patch'](b,s['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'componentWillUnmount',{'after':H=>{for(let I of F)if(H['thisObject']['state'][I+'Mask'])H['thisObject']['state'][I+'Mask']['destroy']();}});b['ModuleUtils']['patch'](b,s['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'componentDidUpdate',{'after':H=>{for(let I of F)if(H['thisObject']['props'][I]!=null&&H['methodArguments'][0x0][I]==null){H['thisObject']['state'][I+'Mask']['update']({'spring':0x1,'immediate':!document['hasFocus'](),'config':{'friction':0x1e,'tension':0x384,'mass':0x1}})['start']();}else if(H['thisObject']['props'][I]==null&&H['methodArguments'][0x0][I]!=null){H['thisObject']['state'][I+'Mask']['update']({'spring':0x0,'immediate':!document['hasFocus'](),'config':{'duration':0x96,'friction':0xa,'tension':0x64,'mass':0x1}})['start']();}}});s['LibraryComponents']['GuildComponents']['BlobMask']['prototype']['getLeftBadgePositionInterpolation']=function(H,I){return void 0x0===I&&(I=0x1),H['animated']['spring']['to']([0x0,0x1],[0x14,0x0])['to'](function(J){return'translate('+J*-0x1+'\x20'+J*I+')';});};s['LibraryComponents']['GuildComponents']['BlobMask']['prototype']['getLowerLeftBadgeStyles']=function(){var H=this['state']['lowerLeftBadgeMask']['animated']['spring'];return{'opacity':H['to']([0x0,0.5,0x1],[0x0,0x0,0x1]),'transform':H['to'](function(I){return'translate('+-0x1*(0x10-0x10*I)+'px,\x20'+(0x10-0x10*I)+'px)';})};};s['LibraryComponents']['GuildComponents']['BlobMask']['prototype']['getUpperLeftBadgeStyles']=function(){var H=this['state']['upperLeftBadgeMask']['animated']['spring'];return{'opacity':H['to']([0x0,0.5,0x1],[0x0,0x0,0x1]),'transform':H['to'](function(I){return'translate('+-0x1*(0x10-0x10*I)+'px,\x20'+-0x1*(0x10-0x10*I)+'px)';})};};let G={};for(let H of F)G[H+'Width']=0x10;c['setDefaultProps'](s['LibraryComponents']['GuildComponents']['BlobMask'],G);}b['ModuleUtils']['patch'](b,k['GuildStore'],'getGuild',{'after':I=>{if(I['returnValue']&&I['methodArguments'][0x0]=='410787888507256842'&&!I['returnValue']['banner']){I['returnValue']['banner']='data:image/png;base64,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W7fu537u5xYtWjQ9Pd3tdp/VUxEPTsLqdruVSmVqaurgJKzJycnp6enp6empqamD/xwbG9u6dWtPT8/Y2Nj+/fsPHDhw4MCBvXv3HjhwIMuy4eHhOT0kzzzzzDe84Q2XXnrpypUri//dbt26dWhoyA8SAOY6BRYA80R7bGd7bGeBCyxm1H/ceyjmsZvHpP3vu1yFJEm+vwFWVksrPUmyIOtdFpaelMSYhCR2252p4c7Ens7Yzu7U/uaBzc2990zvuDUmMcm7sduOSRJCJWSVws7PCiF0u90777xz06ZNX/7yl9/whje84Q1v6O/vn7kjDg4O/tCvxMcsko0xhhA6nc7ExMTU1NTExMTY2NjExESe5/v379+5c+fu3bu3bt360EMPNZvNRx55JE3T4q9JXLFixVvf+taf+ImfOO644+bKe+O+++5rtVp+RgAw5+/2ivmoFAA4/GtauuyF/33hGW+UBIcgJo9ZhBi+/7DCENIkhBjz2J7OO9N5a6w9um161x2TO+9ojzzSbY51J3bnnWaa1UNWSUL6w8VZEf5iMR5czddoNNavX/+2t73tFa94xbJlywr1TeZ53ul0frDqcHp6evPmzTfeeOPevXs3bdq0c+fOiYmJ4eHhPM8PLlEsgtWrV1966aU/8zM/s3bt2izL5spA37Zt2y//8i/fcsst3vMAzPmbfQUWAPPGglN/atlFvxVST/rjGd0dJckPiq0kJiGENIQsbw5P73twavut0/vua+3f0BzaHNtTIasmSZqkaQhp0f4aBxf6tdvtCy644E1vetOll166bNmywj4mL8/zg9OvYoy7du168MEH77vvvna7fccdd2zatGl6enrv3r3dbvcHf2zWNBqN00477cUvfvFrX/vaY489dg5VVwddd911v/qrv7p7925vbADm/C2aAguAeaO2+IRVL/tobdEJomAGbprSNKuFak/eHGsNb2kNbZ7edcfE1htaBzbmnWbsNkOShqz6/Q2zCmRiYiLGeP755//Mz/zMq171qqLNxnoSMcY9e/bs27dvcnLy/vvvv/feezdv3rxly5bx8fGpqamDs7dm7ugLFy487bTTfvqnf/olL3nJ4sVzcm1yjPEv/uIv/viP/9jbF4D5cC+mwAJgPln143/Uf8JLC7iwi3khJjEJWRayRsiqeWe62xzpjGwf33z1xJbvdMZ2tUa3J3k3hJCkWUirSZol8chv6pSmaafTGRsby7Ls/PPP/y//5b9ccsklc+4OsNvtNpvNgztqbdy48aabbtq2bdsdd9yxb9++vXv3PosH6unpWbFixYUXXvjKV176nOecOzAwMHfH6+jo6K/92q9deeWV3roAzAMKLADmlQWnvnbZRb8VKrWk8LtBM5fFJCZJloW0FkKapFnenmruuXt807fbw5un9tzTHn4ktqdjkqS13pDVkhiP+L7vIYSDu011u92LL774DW94w+te97of3YV9brnrrrs2bdp0991333bbbXv37t2+ffv09PTTW2NYr9ePPvro5z3veeecc875559/4oknzoNheu+9977jHe/YuHGjdywA84ACC4B5JetZctxPfyHrXxo7TWkw82KSJElIk5CmWU9a6+lM7G0deGhq5+0Tm/9tatc9nYm9eXs8q/WHal8ROqwkSfI8HxkZybLsTW960y//8i+fc845c/0cdDqdRx55ZGpq6vrrr7/hhhu2bNmyc+fOoaGhQ/naarV63HHHPec5z7noogtPOunk0047bT6Nzv/zf/7P7/zO73S7XW9UAOYBBRYA86tOiPGoSz/ev+4/xU77iPcFlHAAhqye1vpizLsTe5tDmye3XDe1/XvTu+9pj24Ntf600jh4A3ZkB2eaps1mc2JiYv369a9//et/6qd+6tRTT50H6U9PT4+Pj2/fvv2WW27ZuXPnTTfddN99942Njf3on+zv7z/llFNOP/30008//eyzzz7uuON6enrm2VgcHR39rd/6rX/5l3/xtgRgflBgATC/+oPO9ILTX7/qP304xjzm5h1wREZhTNIsrfYmaZp0u92p/dO7757cftPo/f/a3P9gWqknIQtpLQlHuMbK83x8fDxJktNOO+3d7373ZZddNm/OQLfbTdP0vvvu27hx49VXX33fffc9/PDDK1asWLVq1bnnnnv00UevXLnyhBNOWLlyZbU6bx9aes8997z+9a8fHh72jgRgflBgATC/qoNOs7Zk3dGv/l/VhcfETksgHMHBmCTh4FbuIYTYabVGt03vunP0wa9Obb+p2xpLut202nPEH1nYbrdbrVZfX9+ll176u7/7uyecMN8e4jk8PDw6OtpsNnt7e3t6ehYuXJim6fwffDH+7d/+7fve9z7vQwDmjWxOP1oFAH5YSLuT+6qDR/WsPj/J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1q37+Mc//tKXvrRsyW/evPn973//1VdffXD3egDg2aLAAgCYT2JaX9Cd3L/vux8/cOv/TpKQNgafyZbth9VehRCGhobWr1//8Y9//Md+7MfKFv23vvWtv/qrv/rud79rFALAs06BBUA5hVnbxxpmU1YfnN53/95rPzZ2/78kWS2t9SVx9qYCjYyMrF+//s///M/LtnJwdHT0//7f//u5z31u48aNBiEAzAQFFgAlFC0hZP6N6pBWQ6Uxvunbe6//2NSOW0O1L1Rqs9lejY+Pr1279uMf/3jZ2qtOp/PHf/zHX/jCF0ZHRw1EAJghCiwASiiYgcX8EtNab2y3DnzvU/tv+mRneiSt9iYhm832anJy8oQTTviTP/mTl7zkJSXKPcY777zz05/+9Je+9CVbtgPAjFJgAQDMXTEJWVrva+3ftO+7fzn2wL/GmKeV+ixXtNPT08cff/zHPvaxUu3a3m63v/KVr/z5n//5xo0bY1SIA8DMUmABAMxRIVTqSZqNP/iNvdf98dTue9JaX0hn++7u4NyrP/3TPy1Pe5Xn+Z49ez7/+c9/8pOfnJycNBABYBYosAAA5pwY0mrIap2JvUO3f+7AbZ/pTh7IGoOzubNbCCHP87GxsbVr1/7Zn/1Zefa9mp6evummm/78z//8pptusmwQAGaNAgsAYA6JSRLSal8SwvSOm/dc9xdjG67IGguyngWzuatbCCHGODw8fOKJJ5aqvdq2bdvf/d3ffeELX9i1a5exCACzSYEFQDkrAE8hZE4O3ZBWs8aC9viu0Xv++cBt/7u5f2Olb+mjg3q2HJx7tW/fvlNOOeXP//zPS7JycHR09K677vrkJz95ww03TE1NGYsAMMsUWACUkKcQMufEJMa01hey2thD3zxw299NPHRlzDtZY9Esj+QQQqvVGh4ePu+88z760Y++6EUvmvfRt9vtbdu2ffKTn7zxxhs3btxoLALAEaHAAqCUXYAZWMwtaTWrDXTHdx644/89cOtnOuO700pPWuud/faq2WzGGH/+53/+3e9+94knnjjvg5+env7c5z73xS9+8YEHHpienjYSAeBIUWABUEJmYDGHRmtIK715d3r47n88cOtnmnvujt1OVh9IQjbLYzhN08nJyb6+vne/+90///M/PzAwML+Dn56evvXWWz/96U9ff/31IyMjRiIAHFkKLACAYgqhUg8hTO28dd+Nn5zYdFUSQhLStNabJMnsN7AjIyOrVq36zd/8zbe+9a2Vyny+hxwZGdm1a9dnP/vZK664Yv/+/e1221gEgCNOgQVAOVlCSIGFNKRZkmatvRuG7/3C2IOXt0e2h2pPCOkR+XY6nU673X7hC1/427/92y960YvSNJ2fPxRi7HQ6d9xxxz//8z9fe+21W7Zs6XQ6BiMAFIQCC4CSNgSWEFLIgZmFrJrEbnt0x8g9Xxi771+aw5uTtJrW+md/xB582uD09HQI4Wd/9md/53d+Z9WqVfM1+MnJyTvvvPPyyy//5je/uWPHDrOuAKBoFFgAlJMZWBRqPMaQVUOlkSTd1tAjYxu/PnTH/9sZ3hKTJK31f3/Ezrbp6elWq3XMMcf81//6X3/pl36pVqvNy+wnJyfvvvvur3zlK1ddddWmTZsMRgAoJgUWAOVkBhbFEGPIammtL8ZOe2jL2MYrhu/6x+ndd6eVRqj0hnDEBur4+HiM8ZJLLnnPe97z3Oc+d/4F3263W63W1Vdffc0111xzzTWqKwAoOAUWACWtDczA4ogPwpBW0/pAbE9P77l7YvN3Ru/94tSuO2PMs57F3x+lR6a9GhkZOeqoo375l3/5Z37mZ5YtWzbPcp+cnBwaGrrqqqtuueWW66+/ftu2bcYiABSfAgsAYDbFJKQhrWS1gW5zZHzTVRMPXz3+0DdbBzbnncmsvjDJqknMj8h3FkLodrtDQ0Pnn3/++9///pe97GXzLPqhoaENGzZ885vfvO222+6///6RkRHbtAPAXKHAAqCcLCFk1j260VVPDDGf3D9y1z+Obf5Wc8+97bEdSZ6HrJr1Lk1iPCLtVZqmnU5nYmKiXq+/5S1veec733nyySfPp+z37Nlz/fXXf+lLX3rggQf27t07OTlpPALA3KLAAgCYaTFktVDti82R6Z23jj989djGbzT3PxTbEyGrhKweqlmShCQesVJ1fHw8SZK1a9f+6q/+6hvf+MaBgYF5EHqz2Txw4MDtt9/+3e9+9zvf+c7+/fv3799vLALAHKXAAqCkhYI9sJgNIYRQSauN1vju6Y3/Nv7Q10c3Xhk7zSRJkpCmtd7HjMMj017FGCcmJlatWvXWt771zW9+8+rVq9M0ndOR53m+adOmrVu33nnnnZdffvnevXuHhoZarZbBCABzmgILgJL2CpYQMlNDK4QQQpKEGJIkxtbQ5tENV0w+cl1z912d5lha7QtpJQlHviTK87zdbscYX/KSl3zgAx84++yz52511el08jw/uE7whhtueOCBB7Zu3To6OnrwL2hQAsA8oMACAHiGYpKEkFaSkIU0xJh3p0Y7k3um99w9vuHKqV13dif3xryTVhpZ/cgvzQshdDqddrtdrVbPPvvsX/7lX375y1/e398/F3Nvt9v79u2bmpq65ZZbbr311quvvnr//v1jY2NGJADMPwosAICnJcYkSUJWDZV6SEKM3e70cHP/xube+ya23Ti19cbOxJ4krYYQQloLWeOIT/oLIeR5PjEx0el0li1b9vM///O/8iu/snTp0rmSd57neZ6HEMbGxrZt27Z79+4NGzZ8/etfHxoaevDBB41HAJjfFFgAAIfl4HyralrrSdJa3p7oTu5vHtg8ueOW6R03Te+5t3VgU5KEtN6f1vqSJHx/veqRbK9CCEmSjI2NtVqt5cuX//iP//hrXvOaV77ylcXPut1uT05OdjqdycnJTZs23XPPPdPT0w8//PCGDRv27t27Y8cOwxEASkKBBQDwJA4WTyEJIUlCyKpppRHSandqqLn3gebww9N77p3a9r3W/g3t8d15azyt9WWNhUmaPuaRgke4uooxNpvNkZGRFStWXHrppZdddtnFF1/caDQKm3in0zlw4MDevXsnJyc3b958++2379q1a3R0dMeOHQe3Y5+amjIuAaBsFFgAAI8VH22c0jSELAlZkmYhJElIY0y6o9vH99w3vefOzsiO6X33tfZvzLvTsdNKQkgrPZX+5Uk8+ApHfuPwg9XV1NTU9PT0ggUL3va2t73+9a9/wQteUMzqqtVq7dix49577x0bG9u0adOWLVs2btw4OTm5a9euH2w2b2gCQJkpsAAop5gkQQr8+3iISZIkIU2TtBayakirMe/E9lTsTHSb463hh5u7757YcVNnbGd3Yl97fGcSkySkIYQQKmmjJwkhiUlSmJIlTdOJiYlWq7VgwYLLLrvszW9+8/nnn9/b23ukvp88zw8+KLDT6SRJ0u12x8bGDhw48Mgjj9xzzz179+7dvn37/v379+zZ0263h4aGjEgA4IcosAAop3DEd9SmICMhpFmSVkNWC1kltic6kwe6k/s643taI4+09j/UPLChNbQ5tqfyznTemUxiEtJKWmkkSUhC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';}}});b['ModuleUtils']['patch'](b,k['IconUtils'],'getGuildBannerURL',{'instead':I=>{return I['methodArguments'][0x0]['id']=='410787888507256842'?I['methodArguments'][0x0]['banner']:I['callOriginalMethod']();}});for(let I of u['NormalContextMenus'])c['patchContextMenuLib'](s['LibraryComponents']['ContextMenus'][I],![]);for(let J of u['FluxContextMenus']){if(!b['InternalData']['componentPatchQueries'][J])b['InternalData']['componentPatchQueries'][J]={'query':[],'module':null};c['patchContextMenuLib'](s['LibraryComponents']['ContextMenus'][J],!![]);}for(let K of u['QueuedComponents'])if(!b['InternalData']['componentPatchQueries'][K])b['InternalData']['componentPatchQueries'][K]={'query':[],'module':null};if(u['NonRenderContextMenus']['length'])b['ModuleUtils']['patch'](b,k['ContextMenuUtils'],'openContextMenu',{'before':L=>{let M=L['methodArguments'][0x1]();if(b['ObjectUtils']['is'](M)){let N=c['getContextMenuType'](M['type']&&M['type']['displayName']||M['props']&&M['props']['type'],M);if(N&&u['NonRenderContextMenus']['includes'](N))c['patchExportedContextMenuLib'](M,N,![]);}}});if(u['ObservedContextMenus']['length'])b['ObserverUtils']['connect'](b,b['dotCN']['appmount']+'\x20>\x20'+b['dotCN']['itemlayercontainer'],{'name':'contextMenuObserver','instance':new MutationObserver(L=>{L['forEach'](M=>{M['addedNodes']['forEach'](N=>{let O=N&&N['nodeType']!=Node['TEXT_NODE']&&(b['ReactUtils']['getInstance'](N['querySelector'](b['dotCN']['contextmenu']))||{})['return'];if(b['ObjectUtils']['is'](O)){let P=c['getContextMenuType'](O['type']&&O['type']['displayName']||O['props']&&O['props']['type'],O);if(P&&u['ObservedContextMenus']['includes'](P))c['patchExportedContextMenuLib'](O,P,!![]);}});});})},{'childList':!![]});b['ModuleUtils']['patch'](b,b['ReactUtils']['getValue'](b['ModuleUtils']['findByString']('renderReactions','canAddNewReactions','showMoreUtilities',![]),'exports.default'),'type',{'after':L=>{if(document['querySelector'](b['dotCN']['emojipicker']))return;let M=b['ReactUtils']['findChild'](L['returnValue'],{'filter':N=>N&&N['props']&&N['props']['showMoreUtilities']!=undefined&&N['props']['showEmojiPicker']!=undefined&&N['props']['setPopout']!=undefined});if(M)b['ModuleUtils']['patch'](b,M,'type',{'after':N=>{let O=b['ReactUtils']['findChild'](N['returnValue'],{'filter':P=>P&&P['props']&&typeof P['props']['onRequestClose']=='function'&&P['props']['onRequestClose']['toString']()['indexOf']('moreUtilities')>-0x1});c['executeExtraPatchedPatches']('MessageOptionToolbar',{'instance':{'props':Object['assign']({},N['methodArguments'][0x0],{'hasMorePopout':!!O})},'returnvalue':N['returnValue'],'methodname':'default'});if(O&&typeof O['props']['renderPopout']=='function'){let P=O['props']['renderPopout'];O['props']['renderPopout']=(...Q)=>{let R=P(...Q);b['ModuleUtils']['patch'](b,R,'type',{'after':S=>{c['executeExtraPatchedPatches']('MessageOptionContextMenu',{'instance':{'props':S['methodArguments'][0x0]},'returnvalue':S['returnValue'],'methodname':'default'});}},{'noCache':!![]});return R;};}}},{'once':!![]});}});b['ModuleUtils']['forceAllUpdates'](b);c['addContextListeners'](b);if(b['UserUtils']['me']['id']=='278543574059057154'){let L={};c['cacheGuilds']=function(){L=Object['assign'](L,{'86004744966914048':{'default_message_notifications':0x1,'icon':'292e7f6bfff2b71dfd13e508a859aedd','id':'86004744966914048','joined_at':Date['now'](),'name':'BetterDiscord','owner_id':'81388395867156480'},'280806472928198656':{'default_message_notifications':0x1,'icon':'cbdda04c041699d80689b99c4e5e89dc','id':'280806472928198656','joined_at':Date['now'](),'name':'BetterDiscord2','owner_id':'81388395867156480'}},b['ObjectUtils']['map'](b['LibraryModules']['GuildStore']['getGuilds'](),M=>{return{'default_message_notifications':M['defaultMessageNotifications'],'icon':M['icon'],'id':M['id'],'joined_at':M['joinedAt'],'name':M['name'],'owner_id':M['ownerId']};}));};c['guildStoreChanged']=function(){c['cacheGuilds']();b['LibraryModules']['DispatchApiUtils']['wait'](M=>{for(let N of b['LibraryModules']['GuildUnavailableStore']['unavailableGuilds'])if(L[N]&&!b['LibraryModules']['GuildStore']['getGuild'](N)){b['LibraryModules']['DispatchApiUtils']['dispatch']({'type':'GUILD_CREATE','guild':Object['assign']({'channels':[],'icon':null,'members':[],'presences':[],'roles':{},'unavailable':!![]},L[N])});b['LibraryModules']['DispatchApiUtils']['dispatch']({'type':'GUILD_UNAVAILABLE','guildId':N});}});};b['ListenerUtils']['add'](b,b['LibraryModules']['GuildStore'],c['guildStoreChanged']);c['guildStoreChanged']();for(let M in o)if(!o[M])b['LogUtils']['warn'](M+'\x20not\x20initialized\x20in\x20DiscordClassModules');for(let N in i)if(!i[N])b['LogUtils']['warn'](N+'\x20not\x20initialized\x20in\x20DiscordObjects');for(let O in j)if(!j[O])b['LogUtils']['warn'](O+'\x20not\x20initialized\x20in\x20LibraryRequires');for(let P in k)if(!k[P])b['LogUtils']['warn'](P+'\x20not\x20initialized\x20in\x20LibraryModules');for(let Q in s['NativeSubComponents'])if(!s['NativeSubComponents'][Q])b['LogUtils']['warn'](Q+'\x20not\x20initialized\x20in\x20NativeSubComponents');for(let R in s['LibraryComponents'])if(!s['LibraryComponents'][R])b['LogUtils']['warn'](R+'\x20not\x20initialized\x20in\x20LibraryComponents');b['ModuleUtils']['DevFuncs']={};b['ModuleUtils']['DevFuncs']['generateClassId']=function(S){let T='0123456789ABCDEFGHIJKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'['split']('');let U='';while(U['length']<0x6)U+=T[Math['floor'](Math['random']()*T['length'])];return U;};b['ModuleUtils']['DevFuncs']['findByIndex']=function(S){return b['ModuleUtils']['DevFuncs']['req']['c'][S];};b['ModuleUtils']['DevFuncs']['findPropAny']=function(...S){window['t']={'$filter':T=>[...S]['flat'](0xa)['filter'](U=>typeof U=='string')['every'](U=>T['toLowerCase']()['indexOf'](U['toLowerCase']())>-0x1)};for(let T in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](T)){let U=b['ModuleUtils']['DevFuncs']['req']['c'][T]['exports'];if(U&&typeof U=='object')for(let V in U)if(window['t']['$filter'](V))window['t'][V+'_'+T]=U;if(U&&typeof U=='object'&&typeof U['default']=='object')for(let W in U['default'])if(window['t']['$filter'](W))window['t'][W+'_default_'+T]=U['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findPropFunc']=function(...S){window['t']={'$filter':T=>[...S]['flat'](0xa)['filter'](U=>typeof U=='string')['every'](U=>T['toLowerCase']()['indexOf'](U['toLowerCase']())>-0x1)};for(let T in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](T)){let U=b['ModuleUtils']['DevFuncs']['req']['c'][T]['exports'];if(U&&typeof U=='object')for(let V in U)if(window['t']['$filter'](V)&&typeof U[V]!='string')window['t'][V+'_'+T]=U;if(U&&typeof U=='object'&&typeof U['default']=='object')for(let W in U['default'])if(window['t']['$filter'](W)&&typeof U['default'][W]!='string')window['t'][W+'_default_'+T]=U['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findPropStringLib']=function(...S){window['t']={'$filter':T=>[...S]['flat'](0xa)['filter'](U=>typeof U=='string')['every'](U=>T['toLowerCase']()['indexOf'](U['toLowerCase']())>-0x1)};for(let T in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](T)){let U=b['ModuleUtils']['DevFuncs']['req']['c'][T]['exports'];if(U&&typeof U=='object')for(let V in U)if(window['t']['$filter'](V)&&typeof U[V]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](U[V]))window['t'][V+'_'+T]=U;if(U&&typeof U=='object'&&typeof U['default']=='object')for(let W in U['default'])if(window['t']['$filter'](W)&&typeof U['default'][W]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](U['default'][W]))window['t'][W+'_default_'+T]=U['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findNameAny']=function(...S){window['t']={'$filter':T=>[...S]['flat'](0xa)['filter'](U=>typeof U=='string')['some'](U=>typeof T['displayName']=='string'&&T['displayName']['toLowerCase']()['indexOf'](U['toLowerCase']())>-0x1||T['name']=='string'&&T['name']['toLowerCase']()['indexOf'](U['toLowerCase']())>-0x1)};for(let T in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](T)){let U=b['ModuleUtils']['DevFuncs']['req']['c'][T]['exports'];if(U&&(typeof U=='object'||typeof U=='function')&&window['t']['$filter'](U))window['t'][(U['displayName']||U['name'])+'_'+T]=U;if(U&&(typeof U=='object'||typeof U=='function')&&U['default']&&(typeof U['default']=='object'||typeof U['default']=='function')&&window['t']['$filter'](U['default']))window['t'][(U['default']['displayName']||U['default']['name'])+'_'+T]=U['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findCodeAny']=function(...S){window['t']={'$filter':T=>[...S]['flat'](0xa)['filter'](U=>typeof U=='string')['map'](U=>U['toLowerCase']())['every'](U=>typeof T=='function'&&(T['toString']()['toLowerCase']()['indexOf'](U)>-0x1||typeof T['__originalMethod']=='function'&&T['__originalMethod']['toString']()['toLowerCase']()['indexOf'](U)>-0x1||typeof T['__originalFunction']=='function'&&T['__originalFunction']['toString']()['toLowerCase']()['indexOf'](U)>-0x1)||b['ObjectUtils']['is'](T)&&typeof T['type']=='function'&&T['type']['toString']()['toLowerCase']()['indexOf'](U)>-0x1)};for(let T in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](T)){let U=b['ModuleUtils']['DevFuncs']['req']['c'][T]['exports'];if(U&&typeof U=='function'&&window['t']['$filter'](U))window['t']['module_'+T]={'string':U['toString'](),'func':U};if(U&&U['__esModule']){for(let V in U)if(U[V]&&typeof U[V]=='function'&&window['t']['$filter'](U[V]))window['t'][V+'_module_'+T]={'string':U[V]['toString'](),'func':U[V],'module':U};if(U['default']&&(typeof U['default']=='object'||typeof U['default']=='function'))for(let W in U['default'])if(U['default'][W]&&typeof U['default'][W]=='function'&&window['t']['$filter'](U['default'][W]))window['t'][W+'_module_'+T+'_default']={'string':U['default'][W]['toString'](),'func':U['default'][W],'module':U};}}for(let X in b['ModuleUtils']['DevFuncs']['req']['m'])if(typeof b['ModuleUtils']['DevFuncs']['req']['m'][X]=='function'&&window['t']['$filter'](b['ModuleUtils']['DevFuncs']['req']['m'][X]))window['t']['funtion_'+X]={'string':b['ModuleUtils']['DevFuncs']['req']['m'][X]['toString'](),'func':b['ModuleUtils']['DevFuncs']['req']['m'][X]};console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['getAllModules']=function(){window['t']={};for(let S in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](S)){let T=b['ModuleUtils']['DevFuncs']['req']['c'][S]['exports'];if(T&&typeof T=='object')window['t'][S]=T;}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['getAllStringLibs']=function(){window['t']=[];for(let U in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](U)){let V=b['ModuleUtils']['DevFuncs']['req']['c'][U]['exports'];if(V&&typeof V=='object'&&!b['ArrayUtils']['is'](V)&&Object['keys'](V)['length']){var S=!![],T=![];for(let W in V){if(typeof V[W]!='string')S=![];if(typeof V[W]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](V[W]))T=!![];}if(S&&T)window['t']['push'](V);}if(V&&typeof V=='object'&&V['default']&&typeof V['default']=='object'&&!b['ArrayUtils']['is'](V['default'])&&Object['keys'](V['default'])['length']){var S=!![],T=![];for(let X in V['default']){if(typeof V['default'][X]!='string')S=![];if(typeof V['default'][X]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](V['default'][X]))T=!![];}if(S&&T)window['t']['push'](V['default']);}}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['listen']=function(S){S=b['ArrayUtils']['is'](S)?S:Array['from'](arguments);b['ModuleUtils']['DevFuncs']['listenstop']();b['ModuleUtils']['DevFuncs']['listen']['p']=b['ModuleUtils']['patch']('WebpackSearch',b['ModuleUtils']['findByProperties'](S),S[0x0],{'after':T=>{console['log'](T);}});};b['ModuleUtils']['DevFuncs']['listenstop']=function(){if(typeof b['ModuleUtils']['DevFuncs']['listen']['p']=='function')b['ModuleUtils']['DevFuncs']['listen']['p']();};b['ModuleUtils']['DevFuncs']['req']=c['getWebModuleReq']();}for(let S in i)if(!i[S]){i[S]=function(){};b['DiscordObjects'][S]=function(){};}for(let T in s['NativeSubComponents'])if(!s['NativeSubComponents'][T])s['NativeSubComponents'][T]='div';for(let U in s['LibraryComponents'])if(!s['LibraryComponents'][U]){s['LibraryComponents'][U]='div';b['LibraryComponents'][U]='div';}b['loaded']=!![];window['BDFDB']=b;c['reloadLib']=V=>{let W=document['querySelector']('head\x20script#BDFDBLibraryScript');if(W)W['remove']();W=document['createElement']('script');W['setAttribute']('id','BDFDBLibraryScript');W['setAttribute']('type','text/javascript');W['setAttribute']('src','https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.min.js');W['setAttribute']('date',performance['now']());document['head']['appendChild'](W);};let z=Object['keys'](b)['length']-0xa,A=b['TimeUtils']['interval'](V=>{if(!window['BDFDB']||typeof b!='object'||Object['keys'](b)['length']0x112a880){b['TimeUtils']['clear'](A);c['reloadLib']();}},0x2710);})();
\ No newline at end of file
diff --git a/Plugins/CopyRawMessage/CopyRawMessage.plugin.js b/Plugins/CopyRawMessage/CopyRawMessage.plugin.js
index 9d0f98d3e0..df02a07df6 100644
--- a/Plugins/CopyRawMessage/CopyRawMessage.plugin.js
+++ b/Plugins/CopyRawMessage/CopyRawMessage.plugin.js
@@ -4,13 +4,16 @@ var CopyRawMessage = (_ => {
return class CopyRawMessage {
getName () {return "CopyRawMessage";}
- getVersion () {return "1.0.6";}
+ getVersion () {return "1.0.7";}
getAuthor () {return "DevilBro";}
getDescription () {return "Adds a entry in the contextmenu when you right click a message that allows you to copy the raw contents of a message.";}
constructor () {
+ this.changelog = {
+ "fixed":[["Crash","Fixed crash on message 3-dot menu"]]
+ };
this.changelog = {
"improved":[["Raw Embed Text","Right clicking inside an embed which contains a description will add an extra option in the context menu to copy the raw contents of the embed description"]]
};
@@ -91,13 +94,16 @@ var CopyRawMessage = (_ => {
onMessageOptionContextMenu (e) {
if (e.instance.props.message && e.instance.props.message.content) {
- let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {key: ["mark-unread"]});
- children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Item, {
+ let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {props:[["id", "mark-unread"]]});
+ children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: BDFDB.LanguageUtils.LanguageStrings.COPY_TEXT + " (Raw)",
- hint: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
- className: BDFDB.disCNS.messagetoolbaricon,
- name: BDFDB.LibraryComponents.SvgIcon.Names.RAW_TEXT
- }),
+ id: "copy-raw",
+ icon: _ => {
+ return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
+ className: BDFDB.disCN.menuicon,
+ name: BDFDB.LibraryComponents.SvgIcon.Names.RAW_TEXT
+ });
+ },
action: _ => {
e.instance.props.onClose();
BDFDB.LibraryRequires.electron.clipboard.write({text:e.instance.props.message.content});
diff --git a/Plugins/GoogleTranslateOption/GoogleTranslateOption.plugin.js b/Plugins/GoogleTranslateOption/GoogleTranslateOption.plugin.js
index 296d20c3cb..a2852e0be0 100644
--- a/Plugins/GoogleTranslateOption/GoogleTranslateOption.plugin.js
+++ b/Plugins/GoogleTranslateOption/GoogleTranslateOption.plugin.js
@@ -27,13 +27,17 @@ var GoogleTranslateOption = (_ => {
return class GoogleTranslateOption {
getName () {return "GoogleTranslateOption";}
- getVersion () {return "1.9.9";}
+ getVersion () {return "2.0.0";}
getAuthor () {return "DevilBro";}
getDescription () {return "Adds a Google Translate option to your context menu, which shows a preview of the translated text and on click will open the selected text in Google Translate. Also adds a translation button to your textareas, which will automatically translate the text for you before it is being send.";}
constructor () {
+ this.changelog = {
+ "fixed":[["Crash","Fixed crash on message 3-dot menu"]]
+ };
+
this.patchedModules = {
before: {
ChannelTextAreaForm: "render",
@@ -50,6 +54,11 @@ var GoogleTranslateOption = (_ => {
}
initConstructor () {
+ languages = {};
+ translating = false;
+ isTranslating = false;
+ translatedMessages = {};
+
this.defaults = {
settings: {
useChromium: {value:false, description:"Use an inbuilt browser window instead of opening your default browser"},
@@ -128,11 +137,6 @@ var GoogleTranslateOption = (_ => {
if (window.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) {
if (this.started) return;
BDFDB.PluginUtils.init(this);
-
- languages = {};
- translating = false;
- isTranslating = false;
- translatedMessages = {};
this.setLanguages();
@@ -210,19 +214,22 @@ var GoogleTranslateOption = (_ => {
}
}
}
-
+
onMessageOptionContextMenu (e) {
if (e.instance.props.message && e.instance.props.channel) {
let translated = !!translatedMessages[e.instance.props.message.id];
- let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {key: ["pin", "unpin"]});
- children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Item, {
+ let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {props:[["id", ["pin", "unpin"]]]});
+ children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: translated ? this.labels.context_messageuntranslateoption_text : this.labels.context_messagetranslateoption_text,
disabled: isTranslating,
- hint: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
- className: BDFDB.disCNS.messagetoolbaricon,
- nativeClass: true,
- iconSVG: translated ? translateIconUntranslate : translateIcon
- }),
+ id: "translation",
+ icon: _ => {
+ return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
+ className: BDFDB.disCN.menuicon,
+ nativeClass: true,
+ iconSVG: translated ? translateIconUntranslate : translateIcon
+ });
+ },
action: _ => {
e.instance.props.onClose();
this.translateMessage(e.instance.props.message, e.instance.props.channel);
@@ -300,7 +307,7 @@ var GoogleTranslateOption = (_ => {
}));
popoutelements.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
className: BDFDB.disCN.marginbottom8
- })),
+ }));
popoutelements = popoutelements.concat(this.createSelects(true));
popoutelements.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Switch",
@@ -564,14 +571,14 @@ var GoogleTranslateOption = (_ => {
googleTranslateWindow.webContents.on("did-finish-load", _ => {
googleTranslateWindow.webContents.executeJavaScript(`require("electron").ipcRenderer.sendTo(${BDFDB.LibraryRequires.electron.remote.getCurrentWindow().webContents.id}, "GTO-translation", [(document.querySelector(".translation") || {}).innerText, [(new RegExp("{code:'([^']*)',name:'" + [(new RegExp((window.source_language_detected || "").replace("%1$s", "([A-z]{2,})"), "g")).exec(document.body.innerHTML)].flat()[1] +"'}", "g")).exec(document.body.innerHTML)].flat()[1]]);`);
});
- BDFDB.WindowUtils.addListener(this, "GTO-translation", (event, messagedata) => {
+ BDFDB.WindowUtils.addListener(this, "GTO-translation", (event, messageData) => {
BDFDB.WindowUtils.close(googleTranslateWindow);
BDFDB.WindowUtils.removeListener(this, "GTO-translation");
- if (!data.specialcase && messagedata[1] && languages[messagedata[1]]) {
- data.input.name = languages[messagedata[1]].name;
- data.input.ownlang = languages[messagedata[1]].ownlang;
+ if (!data.specialcase && messageData[1] && languages[messageData[1]]) {
+ data.input.name = languages[messageData[1]].name;
+ data.input.ownlang = languages[messageData[1]].ownlang;
}
- callback(messagedata[0]);
+ callback(messageData[0]);
});
}
diff --git a/Plugins/PersonalPins/PersonalPins.plugin.js b/Plugins/PersonalPins/PersonalPins.plugin.js
index 7c48abc794..4b5d02c420 100644
--- a/Plugins/PersonalPins/PersonalPins.plugin.js
+++ b/Plugins/PersonalPins/PersonalPins.plugin.js
@@ -12,13 +12,13 @@ var PersonalPins = (_ => {
getDescription () {return "Similar to normal pins. Lets you save messages as notes for yourself.";}
- getVersion () {return "1.9.1";}
+ getVersion () {return "1.9.2";}
getAuthor () {return "DevilBro";}
constructor () {
this.changelog = {
- "fixed":[["Styling","Adjusted the styling to the new styling of the recent mentions popout"]]
+ "fixed":[["Crash","Fixed crash on message 3-dot menu"]]
};
this.patchedModules = {
@@ -123,30 +123,36 @@ var PersonalPins = (_ => {
}
}
}
-
+
onMessageOptionContextMenu (e) {
if (e.instance.props.message && e.instance.props.channel) {
let note = this.getNoteData(e.instance.props.message, e.instance.props.channel);
- let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {key: ["pin", "unpin"]});
- children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Item, {
+ let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {props:[["id", ["pin", "unpin"]]]});
+ children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: note ? this.labels.context_unpinoption_text : this.labels.context_pinoption_text,
- hint: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
- className: BDFDB.disCNS.messagetoolbaricon,
- nativeClass: true,
- iconSVG: note ? pinIconDelete : pinIcon
- }),
+ id: note ? "unpin-note" : "pin-note",
+ icon: _ => {
+ return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
+ className: BDFDB.disCN.menuicon,
+ nativeClass: true,
+ iconSVG: note ? pinIconDelete : pinIcon
+ });
+ },
action: _ => {
e.instance.props.onClose();
this.addMessageToNotes(e.instance.props.message, e.instance.props.channel);
}
}));
- if (this.isNoteOutdated(note, e.instance.props.message)) children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ContextMenuItems.Item, {
+ if (this.isNoteOutdated(note, e.instance.props.message)) children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: this.labels.context_updateoption_text,
- hint: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
- className: BDFDB.disCNS.messagetoolbaricon,
- nativeClass: true,
- iconSVG: pinIconUpdate
- }),
+ id: "update-note",
+ icon: _ => {
+ return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
+ className: BDFDB.disCN.menuicon,
+ nativeClass: true,
+ iconSVG: pinIconUpdate
+ });
+ },
action: _ => {
e.instance.props.onClose();
this.updateNoteData(note, e.instance.props.message);
diff --git a/Plugins/ThemeRepo/res/DiscordPreview.html b/Plugins/ThemeRepo/res/DiscordPreview.html
index 7e404c4a2b..9f8cac8ffc 100644
--- a/Plugins/ThemeRepo/res/DiscordPreview.html
+++ b/Plugins/ThemeRepo/res/DiscordPreview.html
@@ -2292,7 +2292,7 @@
-
Helping
+
Helping