From 56fc757650468f7e3a49b18f279f932d09c17818 Mon Sep 17 00:00:00 2001 From: Strencher <46447572+Strencher@users.noreply.github.com> Date: Fri, 24 Jul 2020 10:59:16 +0200 Subject: [PATCH 1/4] fix stuff --- dist/index.js | 40 +++++- src/builtins/emotes/emotemenu.js | 214 +++++------------------------- src/builtins/emotes/tabs.js | 25 ++++ src/modules/pluginapi.js | 6 +- src/styles/builtins/emotemenu.css | 3 + src/ui/emoteicon.jsx | 30 +++++ src/ui/emotemenucard.jsx | 13 ++ 7 files changed, 145 insertions(+), 186 deletions(-) create mode 100644 src/builtins/emotes/tabs.js create mode 100644 src/ui/emoteicon.jsx create mode 100644 src/ui/emotemenucard.jsx diff --git a/dist/index.js b/dist/index.js index c4b02905..320d7b88 100644 --- a/dist/index.js +++ b/dist/index.js @@ -202,7 +202,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _emotes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\n\n\nconst headerHTML = `
\n \n \n
`;\nconst twitchEmoteHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\nconst favoritesHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\n\nconst makeEmote = (emote, url, options = {}) => {\n const {\n onContextMenu,\n onClick\n } = options;\n const emoteContainer = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n \"${emote}\"\n
`);\n if (onContextMenu) emoteContainer.addEventListener(\"contextmenu\", onContextMenu);\n emoteContainer.addEventListener(\"click\", onClick);\n return emoteContainer;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n this.lastTab = \"bd-qem-emojis\";\n this.qmeHeader = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(headerHTML);\n\n for (const button of this.qmeHeader.getElementsByTagName(\"button\")) button.addEventListener(\"click\", this.switchMenu.bind(this));\n\n this.teContainer = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(twitchEmoteHTML);\n this.teContainerInner = this.teContainer.querySelector(\".emote-menu-inner\");\n this.faContainer = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(favoritesHTML);\n this.faContainerInner = this.faContainer.querySelector(\".emote-menu-inner\");\n this.observer = new MutationObserver(mutations => {\n for (const mutation of mutations) this.observe(mutation);\n });\n this.enableHideEmojis = this.enableHideEmojis.bind(this);\n this.disableHideEmojis = this.disableHideEmojis.bind(this);\n this.updateTwitchEmotes = this.updateTwitchEmotes.bind(this);\n }\n\n async enabled() {\n // Temporary measure, so not using Strings/translation\n return _ui_modals__WEBPACK_IMPORTED_MODULE_2__[\"default\"].alert(\"Emote Menu Broken\", \"Emote Menu is currently broken, it is recommended to disable this until it is fixed.\"); // this.log(\"Starting to observe\");\n // this.observer.observe(document.getElementById(\"app-mount\"), {\n // childList: true,\n // subtree: true\n // });\n // this.hideEmojiCancel = this.registerSetting(this.hideEmojisID, this.enableHideEmojis, this.disableHideEmojis);\n // if (this.hideEmojis) this.enableHideEmojis();\n // if (EmoteModule.emotesLoaded) this.updateTwitchEmotes();\n // this.updateFavorites();\n // Events.on(\"emotes-loaded\", this.updateTwitchEmotes);\n }\n\n disabled() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].off(\"emotes-loaded\", this.updateTwitchEmotes);\n this.observer.disconnect();\n this.disableHideEmojis();\n if (this.hideEmojiCancel) this.hideEmojiCancel();\n }\n\n enableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.add(\"bd-qme-hidden\");\n }\n\n disableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.remove(\"bd-qme-hidden\");\n }\n\n insertEmote(emote) {\n const ta = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getTextArea();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].insertText(ta[0], ta.val().slice(-1) == \" \" ? ta.val() + emote : ta.val() + \" \" + emote);\n }\n\n favContext(e) {\n e.stopPropagation();\n const em = e.target.closest(\".emote-container\").children[0];\n const menu = $(`
Remove
`);\n menu.css({\n top: e.pageY - $(\"#bd-qem-favourite-container\").offset().top,\n left: e.pageX - $(\"#bd-qem-favourite-container\").offset().left\n });\n $(em).parent().append(menu);\n menu.on(\"click\", event => {\n event.preventDefault();\n event.stopPropagation();\n $(em).remove();\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeFavorite($(em).attr(\"title\"));\n this.updateFavorites();\n $(document).off(\"mousedown.emotemenu\");\n });\n $(document).on(\"mousedown.emotemenu\", function (event) {\n if (event.target.id == \"removemenu\") return;\n $(\"#removemenu\").remove();\n $(document).off(\"mousedown.emotemenu\");\n });\n }\n\n switchMenu(e) {\n let id = typeof e == \"string\" ? e : e.target.id;\n if (id == \"bd-qem-emojis\" && this.hideEmojis) id = \"bd-qem-favourite\";\n const twitch = $(\"#bd-qem-twitch\");\n const fav = $(\"#bd-qem-favourite\");\n const emojis = $(\"#bd-qem-emojis\");\n twitch.removeClass(\"active\");\n fav.removeClass(\"active\");\n emojis.removeClass(\"active\");\n $(\".emojiPicker-3m1S-j\").hide();\n $(\"#bd-qem-favourite-container\").hide();\n $(\"#bd-qem-twitch-container\").hide();\n\n switch (id) {\n case \"bd-qem-twitch\":\n twitch.addClass(\"active\");\n $(\"#bd-qem-twitch-container\").show();\n break;\n\n case \"bd-qem-favourite\":\n fav.addClass(\"active\");\n $(\"#bd-qem-favourite-container\").show();\n break;\n\n case \"bd-qem-emojis\":\n emojis.addClass(\"active\");\n $(\".emojiPicker-3m1S-j\").show();\n $(\".emojiPicker-3m1S-j input\").focus();\n break;\n }\n\n if (id) this.lastTab = id;\n }\n\n observe(mutation) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) return;\n const node = mutation.addedNodes[0]; // if (!node.classList.contains(\"popout-2iWAc-\") || node.classList.contains(\"popoutLeft-30WmrD\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length) return;\n\n if (!node.classList.contains(\"layer-v9HyYc\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length || node.querySelector(\".emojiPicker-3m1S-j\").parentElement.classList.contains(\"animatorLeft-1EQxU0\")) return;\n const e = $(node);\n if (this.hideEmojis) e.addClass(\"bd-qme-hidden\");else e.removeClass(\"bd-qme-hidden\");\n e.prepend(this.qmeHeader);\n e.append(this.teContainer);\n e.append(this.faContainer);\n this.switchMenu(this.lastTab);\n }\n\n updateTwitchEmotes() {\n while (this.teContainerInner.firstChild) this.teContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\")) {\n if (!_emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\").hasOwnProperty(emote)) continue;\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getUrl(\"TwitchGlobal\", emote);\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote)\n });\n this.teContainerInner.append(emoteElement);\n }\n }\n\n updateFavorites() {\n while (this.faContainerInner.firstChild) this.faContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites) {\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites[emote];\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote),\n onContextMenu: this.favContext.bind(this)\n });\n this.faContainerInner.append(emoteElement);\n }\n\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].saveFavorites();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbImhlYWRlckhUTUwiLCJ0d2l0Y2hFbW90ZUhUTUwiLCJmYXZvcml0ZXNIVE1MIiwibWFrZUVtb3RlIiwiZW1vdGUiLCJ1cmwiLCJvcHRpb25zIiwib25Db250ZXh0TWVudSIsIm9uQ2xpY2siLCJlbW90ZUNvbnRhaW5lciIsIkRPTSIsImNyZWF0ZUVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiRW1vdGVNZW51IiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImhpZGVFbW9qaXNJRCIsImhpZGVFbW9qaXMiLCJnZXQiLCJjb25zdHJ1Y3RvciIsImxhc3RUYWIiLCJxbWVIZWFkZXIiLCJidXR0b24iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN3aXRjaE1lbnUiLCJiaW5kIiwidGVDb250YWluZXIiLCJ0ZUNvbnRhaW5lcklubmVyIiwicXVlcnlTZWxlY3RvciIsImZhQ29udGFpbmVyIiwiZmFDb250YWluZXJJbm5lciIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm11dGF0aW9uIiwib2JzZXJ2ZSIsImVuYWJsZUhpZGVFbW9qaXMiLCJkaXNhYmxlSGlkZUVtb2ppcyIsInVwZGF0ZVR3aXRjaEVtb3RlcyIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsImRpc2FibGVkIiwiRXZlbnRzIiwib2ZmIiwiZGlzY29ubmVjdCIsImhpZGVFbW9qaUNhbmNlbCIsInBpY2tlciIsImRvY3VtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5zZXJ0RW1vdGUiLCJ0YSIsIlV0aWxpdGllcyIsImdldFRleHRBcmVhIiwiaW5zZXJ0VGV4dCIsInZhbCIsInNsaWNlIiwiZmF2Q29udGV4dCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJlbSIsInRhcmdldCIsImNsb3Nlc3QiLCJjaGlsZHJlbiIsIm1lbnUiLCIkIiwiY3NzIiwidG9wIiwicGFnZVkiLCJvZmZzZXQiLCJsZWZ0IiwicGFnZVgiLCJwYXJlbnQiLCJhcHBlbmQiLCJvbiIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJFbW90ZU1vZHVsZSIsInJlbW92ZUZhdm9yaXRlIiwiYXR0ciIsInVwZGF0ZUZhdm9yaXRlcyIsInR3aXRjaCIsImZhdiIsImVtb2ppcyIsInJlbW92ZUNsYXNzIiwiaGlkZSIsImFkZENsYXNzIiwic2hvdyIsImZvY3VzIiwiYWRkZWROb2RlcyIsImxlbmd0aCIsIkVsZW1lbnQiLCJub2RlIiwiY29udGFpbnMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicGFyZW50RWxlbWVudCIsInByZXBlbmQiLCJmaXJzdENoaWxkIiwiZ2V0Q2F0ZWdvcnkiLCJoYXNPd25Qcm9wZXJ0eSIsImdldFVybCIsImVtb3RlRWxlbWVudCIsImZhdm9yaXRlcyIsInNhdmVGYXZvcml0ZXMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBLE1BQU1BLFVBQVUsR0FBSTs7OztPQUFwQjtBQU1BLE1BQU1DLGVBQWUsR0FBSTs7Ozs7Ozs7T0FBekI7QUFVQSxNQUFNQyxhQUFhLEdBQUk7Ozs7Ozs7O09BQXZCOztBQVVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBYUMsT0FBTyxHQUFHLEVBQXZCLEtBQThCO0FBQzVDLFFBQU07QUFBQ0MsaUJBQUQ7QUFBZ0JDO0FBQWhCLE1BQTJCRixPQUFqQztBQUNBLFFBQU1HLGNBQWMsR0FBR0MsdURBQUcsQ0FBQ0MsYUFBSixDQUFtQjt1Q0FDUFAsS0FBTSxVQUFTQyxHQUFJLFlBQVdELEtBQU07V0FEaEQsQ0FBdkI7QUFHQSxNQUFJRyxhQUFKLEVBQW1CRSxjQUFjLENBQUNHLGdCQUFmLENBQWdDLGFBQWhDLEVBQStDTCxhQUEvQztBQUNuQkUsZ0JBQWMsQ0FBQ0csZ0JBQWYsQ0FB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QnFFLFVBQXRCLENBQWlDaEQsTUFBakM7O0FBQ3pDLFNBQUssTUFBTWxELEtBQVgsSUFBb0I4RSwrQ0FBVyxDQUFDeUIsU0FBaEMsRUFBMkM7QUFDdkMsWUFBTXRHLEdBQUcsR0FBRzZFLCtDQUFXLENBQUN5QixTQUFaLENBQXNCdkcsS0FBdEIsQ0FBWjtBQUNBLFlBQU1zRyxZQUFZLEdBQUd2RyxTQUFTLENBQUNDLEtBQUQsRUFBUUMsR0FBUixFQUFhO0FBQUNHLGVBQU8sRUFBRSxLQUFLK0MsV0FBTCxDQUFpQjNCLElBQWpCLENBQXNCLElBQXRCLEVBQTRCeEIsS0FBNUIsQ0FBVjtBQUE4Q0cscUJBQWEsRUFBRSxLQUFLdUQsVUFBTCxDQUFnQmxDLElBQWhCLENBQXFCLElBQXJCO0FBQTdELE9BQWIsQ0FBOUI7QUFDQSxXQUFLSyxnQkFBTCxDQUFzQjZDLE1BQXRCLENBQTZCNEIsWUFBN0I7QUFDSDs7QUFDRHhCLG1EQUFXLENBQUMwQixhQUFaO0FBQ0g7O0FBM0o4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZW1lbnUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7VXRpbGl0aWVzLCBFdmVudHMsIERPTX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcblxyXG5pbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcblxyXG5jb25zdCBoZWFkZXJIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW1cIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJhY3RpdmVcIiBpZD1cImJkLXFlbS10d2l0Y2hcIj5Ud2l0Y2g8L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJiZC1xZW0tZmF2b3VyaXRlXCI+RmF2b3VyaXRlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiYmQtcWVtLWVtb2ppc1wiPkVtb2ppczwvYnV0dG9uZD5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IHR3aXRjaEVtb3RlSFRNTCA9IGA8ZGl2IGlkPVwiYmQtcWVtLXR3aXRjaC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIHNjcm9sbGVyV3JhcC0ybEpFa2QgZmFkZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlciBzY3JvbGxlci0yRktGUEdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtb3RlLW1lbnUtaW5uZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PmA7XHJcblxyXG5jb25zdCBmYXZvcml0ZXNIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgc2Nyb2xsZXJXcmFwLTJsSkVrZCBmYWRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyIHNjcm9sbGVyLTJGS0ZQR1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1vdGUtbWVudS1pbm5lclwiPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IG1ha2VFbW90ZSA9IChlbW90ZSwgdXJsLCBvcHRpb25zID0ge30pID0+IHtcclxuICAgIGNvbnN0IHtvbkNvbnRleHRNZW51LCBvbkNsaWNrfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBlbW90ZUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZW1vdGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImVtb3RlLWljb25cIiBhbHQ9XCIke2Vtb3RlfVwiIHNyYz1cIiR7dXJsfVwiIHRpdGxlPVwiJHtlbW90ZX1cIj5cclxuICAgIDwvZGl2PmApO1xyXG4gICAgaWYgKG9uQ29udGV4dE1lbnUpIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCBvbkNvbnRleHRNZW51KTtcclxuICAgIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsaWNrKTtcclxuICAgIHJldHVybiBlbW90ZUNvbnRhaW5lcjtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBFbW90ZU1lbnUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIkVtb3RlTWVudVwiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3RlTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzSUQoKSB7cmV0dXJuIFwiaGlkZUVtb2ppTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzKCkge3JldHVybiB0aGlzLmdldCh0aGlzLmhpZGVFbW9qaXNJRCk7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5sYXN0VGFiID0gXCJiZC1xZW0tZW1vamlzXCI7XHJcblxyXG4gICAgICAgIHRoaXMucW1lSGVhZGVyID0gRE9NLmNyZWF0ZUVsZW1lbnQoaGVhZGVySFRNTCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5xbWVIZWFkZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJidXR0b25cIikpIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5zd2l0Y2hNZW51LmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVyID0gRE9NLmNyZWF0ZUVsZW1lbnQodHdpdGNoRW1vdGVIVE1MKTtcclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVySW5uZXIgPSB0aGlzLnRlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vdGUtbWVudS1pbm5lclwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5mYUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGZhdm9yaXRlc0hUTUwpO1xyXG4gICAgICAgIHRoaXMuZmFDb250YWluZXJJbm5lciA9IHRoaXMuZmFDb250YWluZXIucXVlcnlTZWxlY3RvcihcIi5lbW90ZS1tZW51LWlubmVyXCIpO1xyXG5cclxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykgdGhpcy5vYnNlcnZlKG11dGF0aW9uKTt9KTtcclxuICAgICAgICB0aGlzLmVuYWJsZUhpZGVFbW9qaXMgPSB0aGlzLmVuYWJsZUhpZGVFbW9qaXMuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzID0gdGhpcy5kaXNhYmxlSGlkZUVtb2ppcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzID0gdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbmFibGVkKCkge1xyXG4gICAgICAgIC8vIFRlbXBvcmFyeSBtZWFzdXJlLCBzbyBub3QgdXNpbmcgU3RyaW5ncy90cmFuc2xhdGlvblxyXG4gICAgICAgIHJldHVybiBNb2RhbHMuYWxlcnQoXCJFbW90ZSBNZW51IEJyb2tlblwiLCBcIkVtb3RlIE1lbnUgaXMgY3VycmVudGx5IGJyb2tlbiwgaXQgaXMgcmVjb21tZW5kZWQgdG8gZGlzYWJsZSB0aGlzIHVudGlsIGl0IGlzIGZpeGVkLlwiKTtcclxuICAgICAgICAvLyB0aGlzLmxvZyhcIlN0YXJ0aW5nIHRvIG9ic2VydmVcIik7XHJcbiAgICAgICAgLy8gdGhpcy5vYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwLW1vdW50XCIpLCB7XHJcbiAgICAgICAgLy8gICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgc3VidHJlZTogdHJ1ZVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vIHRoaXMuaGlkZUVtb2ppQ2FuY2VsID0gdGhpcy5yZWdpc3RlclNldHRpbmcodGhpcy5oaWRlRW1vamlzSUQsIHRoaXMuZW5hYmxlSGlkZUVtb2ppcywgdGhpcy5kaXNhYmxlSGlkZUVtb2ppcyk7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuaGlkZUVtb2ppcykgdGhpcy5lbmFibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgLy8gaWYgKEVtb3RlTW9kdWxlLmVtb3Rlc0xvYWRlZCkgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMoKTtcclxuICAgICAgICAvLyB0aGlzLnVwZGF0ZUZhdm9yaXRlcygpO1xyXG4gICAgICAgIC8vIEV2ZW50cy5vbihcImVtb3Rlcy1sb2FkZWRcIiwgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtbG9hZGVkXCIsIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZUVtb2ppQ2FuY2VsKSB0aGlzLmhpZGVFbW9qaUNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZUhpZGVFbW9qaXMoKSB7XHJcbiAgICAgICAgY29uc3QgcGlja2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lbW9qaVBpY2tlci0zbTFTLWpcIik7XHJcbiAgICAgICAgaWYgKHBpY2tlcikgcGlja2VyLmNsYXNzTGlzdC5hZGQoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVIaWRlRW1vamlzKCkge1xyXG4gICAgICAgIGNvbnN0IHBpY2tlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpO1xyXG4gICAgICAgIGlmIChwaWNrZXIpIHBpY2tlci5jbGFzc0xpc3QucmVtb3ZlKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRFbW90ZShlbW90ZSkge1xyXG4gICAgICAgIGNvbnN0IHRhID0gVXRpbGl0aWVzLmdldFRleHRBcmVhKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLmluc2VydFRleHQodGFbMF0sIHRhLnZhbCgpLnNsaWNlKC0xKSA9PSBcIiBcIiA/IHRhLnZhbCgpICsgZW1vdGUgOiB0YS52YWwoKSArIFwiIFwiICsgZW1vdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZhdkNvbnRleHQoZSkge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgZW0gPSBlLnRhcmdldC5jbG9zZXN0KFwiLmVtb3RlLWNvbnRhaW5lclwiKS5jaGlsZHJlblswXTtcclxuICAgICAgICBjb25zdCBtZW51ID0gJChgPGRpdiBpZD1cInJlbW92ZW1lbnVcIiBjbGFzcz1cImJkLWNvbnRleHQtbWVudSBjb250ZXh0LW1lbnUgdGhlbWUtZGFya1wiPlJlbW92ZTwvZGl2PmApO1xyXG4gICAgICAgIG1lbnUuY3NzKHtcclxuICAgICAgICAgICAgdG9wOiBlLnBhZ2VZIC0gJChcIiNiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiKS5vZmZzZXQoKS50b3AsXHJcbiAgICAgICAgICAgIGxlZnQ6IGUucGFnZVggLSAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLm9mZnNldCgpLmxlZnRcclxuICAgICAgICB9KTtcclxuICAgICAgICAkKGVtKS5wYXJlbnQoKS5hcHBlbmQobWVudSk7XHJcbiAgICAgICAgbWVudS5vbihcImNsaWNrXCIsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgJChlbSkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIEVtb3RlTW9kdWxlLnJlbW92ZUZhdm9yaXRlKCQoZW0pLmF0dHIoXCJ0aXRsZVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmF2b3JpdGVzKCk7XHJcbiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNlZG93bi5lbW90ZW1lbnVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZWRvd24uZW1vdGVtZW51XCIsIGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gXCJyZW1vdmVtZW51XCIpIHJldHVybjtcclxuICAgICAgICAgICAgJChcIiNyZW1vdmVtZW51XCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24uZW1vdGVtZW51XCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaE1lbnUoZSkge1xyXG4gICAgICAgIGxldCBpZCA9IHR5cGVvZihlKSA9PSBcInN0cmluZ1wiID8gZSA6IGUudGFyZ2V0LmlkO1xyXG4gICAgICAgIGlmIChpZCA9PSBcImJkLXFlbS1lbW9qaXNcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGlkID0gXCJiZC1xZW0tZmF2b3VyaXRlXCI7XHJcbiAgICAgICAgY29uc3QgdHdpdGNoID0gJChcIiNiZC1xZW0tdHdpdGNoXCIpO1xyXG4gICAgICAgIGNvbnN0IGZhdiA9ICQoXCIjYmQtcWVtLWZhdm91cml0ZVwiKTtcclxuICAgICAgICBjb25zdCBlbW9qaXMgPSAkKFwiI2JkLXFlbS1lbW9qaXNcIik7XHJcbiAgICAgICAgdHdpdGNoLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgIGZhdi5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICBlbW9qaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgICAgICQoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS10d2l0Y2gtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYmQtcWVtLXR3aXRjaFwiOlxyXG4gICAgICAgICAgICAgICAgdHdpdGNoLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgICAgICAgICAgJChcIiNiZC1xZW0tdHdpdGNoLWNvbnRhaW5lclwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImJkLXFlbS1mYXZvdXJpdGVcIjpcclxuICAgICAgICAgICAgICAgIGZhdi5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgICQoXCIjYmQtcWVtLWZhdm91cml0ZS1jb250YWluZXJcIikuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJiZC1xZW0tZW1vamlzXCI6XHJcbiAgICAgICAgICAgICAgICBlbW9qaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtalwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtaiBpbnB1dFwiKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZCkgdGhpcy5sYXN0VGFiID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgb2JzZXJ2ZShtdXRhdGlvbikge1xyXG4gICAgICAgIGlmICghbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggfHwgIShtdXRhdGlvbi5hZGRlZE5vZGVzWzBdIGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybjtcclxuICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAvLyBpZiAoIW5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwicG9wb3V0LTJpV0FjLVwiKSB8fCBub2RlLmNsYXNzTGlzdC5jb250YWlucyhcInBvcG91dExlZnQtMzBXbXJEXCIpIHx8ICFub2RlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlbW9qaVBpY2tlci0zbTFTLWpcIikubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImxheWVyLXY5SHlZY1wiKSB8fCAhbm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZW1vamlQaWNrZXItM20xUy1qXCIpLmxlbmd0aCB8fCBub2RlLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYW5pbWF0b3JMZWZ0LTFFUXhVMFwiKSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBlID0gJChub2RlKTtcclxuICAgICAgICBpZiAodGhpcy5oaWRlRW1vamlzKSBlLmFkZENsYXNzKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgICAgICBlbHNlIGUucmVtb3ZlQ2xhc3MoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG5cclxuICAgICAgICBlLnByZXBlbmQodGhpcy5xbWVIZWFkZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMudGVDb250YWluZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMuZmFDb250YWluZXIpO1xyXG5cclxuICAgICAgICB0aGlzLnN3aXRjaE1lbnUodGhpcy5sYXN0VGFiKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVUd2l0Y2hFbW90ZXMoKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMudGVDb250YWluZXJJbm5lci5maXJzdENoaWxkKSB0aGlzLnRlQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZC5yZW1vdmUoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVtb3RlIGluIEVtb3RlTW9kdWxlLmdldENhdGVnb3J5KFwiVHdpdGNoR2xvYmFsXCIpKSB7XHJcbiAgICAgICAgICAgIGlmICghRW1vdGVNb2R1bGUuZ2V0Q2F0ZWdvcnkoXCJUd2l0Y2hHbG9iYWxcIikuaGFzT3duUHJvcGVydHkoZW1vdGUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZ2V0VXJsKFwiVHdpdGNoR2xvYmFsXCIsIGVtb3RlKTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpfSk7XHJcbiAgICAgICAgICAgIHRoaXMudGVDb250YWluZXJJbm5lci5hcHBlbmQoZW1vdGVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRmF2b3JpdGVzKCkge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmZhQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZCkgdGhpcy5mYUNvbnRhaW5lcklubmVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBlbW90ZSBpbiBFbW90ZU1vZHVsZS5mYXZvcml0ZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZmF2b3JpdGVzW2Vtb3RlXTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpLCBvbkNvbnRleHRNZW51OiB0aGlzLmZhdkNvbnRleHQuYmluZCh0aGlzKX0pO1xyXG4gICAgICAgICAgICB0aGlzLmZhQ29udGFpbmVySW5uZXIuYXBwZW5kKGVtb3RlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEVtb3RlTW9kdWxlLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tabs */ \"./src/builtins/emotes/tabs.js\");\n\n\n\nconst EmojiPicker = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.type && m.type.displayName == \"ExpressionPicker\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n }\n\n enabled() {\n this.before(EmojiPicker, \"type\", (_, [args], ret) => {\n if (args.expressionPickerView == \"emoji\" && this.hideEmojis) args.expressionPickerView = \"gif\";\n });\n this.after(EmojiPicker, \"type\", (_, [args], ret) => {\n const head = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children.0.props.children.props.children\");\n const body = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children\");\n if (!head || !body) return ret;\n const currentTab = _tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(e => e.id === selected);\n const selected = args.expressionPickerView;\n let tabProps = head[0].props;\n head.push(..._tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(e => _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n id: e.id + \"-tab\",\n role: \"tab\",\n \"aria-selected\": selected == e.id,\n className: tabProps.className\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(tabProps.children.type, {\n viewType: e.id,\n isActive: selected == e.id,\n setActiveView: tabProps.children.props.setActiveView\n }, e.label))));\n if (currentTab) body[2] = currentTab.element();\n if (this.hideEmojis) head.splice(head.findIndex(e => e.props.id == \"emoji-picker-tab\"), 1);\n });\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbIkVtb2ppUGlja2VyIiwiV2VicGFja01vZHVsZXMiLCJmaW5kIiwibSIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIkVtb3RlTWVudSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJoaWRlRW1vamlzSUQiLCJoaWRlRW1vamlzIiwiZ2V0IiwiY29uc3RydWN0b3IiLCJlbmFibGVkIiwiYmVmb3JlIiwiXyIsImFyZ3MiLCJyZXQiLCJleHByZXNzaW9uUGlja2VyVmlldyIsImFmdGVyIiwiaGVhZCIsIlV0aWxpdGllcyIsImdldE5lc3RlZFByb3AiLCJib2R5IiwiY3VycmVudFRhYiIsIlRhYnMiLCJlIiwic2VsZWN0ZWQiLCJ0YWJQcm9wcyIsInByb3BzIiwicHVzaCIsIm1hcCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsInJvbGUiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInZpZXdUeXBlIiwiaXNBY3RpdmUiLCJzZXRBY3RpdmVWaWV3IiwibGFiZWwiLCJlbGVtZW50Iiwic3BsaWNlIiwiZmluZEluZGV4IiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLFdBQVcsR0FBR0Msa0VBQWMsQ0FBQ0MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVUQsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFdBQVAsSUFBc0Isa0JBQXpELENBQXBCO0FBQ2UsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFDaEMsTUFBSUMsVUFBSixHQUFpQjtBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDbkMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQzlCLE1BQUlDLFlBQUosR0FBbUI7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBQzVDLE1BQUlDLFVBQUosR0FBaUI7QUFBQyxXQUFPLEtBQUtDLEdBQUwsQ0FBUyxLQUFLRixZQUFkLENBQVA7QUFBb0M7O0FBRXRERyxhQUFXLEdBQUc7QUFDVjtBQUNIOztBQUNEQyxTQUFPLEdBQUc7QUFDTixTQUFLQyxNQUFMLENBQVlqQixXQUFaLEVBQXlCLE1BQXpCLEVBQWlDLENBQUNrQixDQUFELEVBQUksQ0FBQ0MsSUFBRCxDQUFKLEVBQVlDLEdBQVosS0FBb0I7QUFDakQsVUFBR0QsSUFBSSxDQUFDRSxvQkFBTCxJQUE2QixPQUE3QixJQUF3QyxLQUFLUixVQUFoRCxFQUE0RE0sSUFBSSxDQUFDRSxvQkFBTCxHQUE0QixLQUE1QjtBQUMvRCxLQUZEO0FBR04sU0FBS0MsS0FBTCxDQUFXdEIsV0FBWCxFQUF3QixNQUF4QixFQUFnQyxDQUFDa0IsQ0FBRCxFQUFJLENBQUNDLElBQUQsQ0FBSixFQUFZQyxHQUFaLEtBQW9CO0FBQ25ELFlBQU1HLElBQUksR0FBR0MsNkRBQVMsQ0FBQ0MsYUFBVixDQUF3QkwsR0FBeEIsRUFBNkIsZ0ZBQTdCLENBQWI7QUFDQSxZQUFNTSxJQUFJLEdBQUdGLDZEQUFTLENBQUNDLGFBQVYsQ0FBd0JMLEdBQXhCLEVBQTZCLGdEQUE3QixDQUFiO0FBQ0EsVUFBRyxDQUFDRyxJQUFELElBQVMsQ0FBQ0csSUFBYixFQUFtQixPQUFPTixHQUFQO0FBQ1YsWUFBTU8sVUFBVSxHQUFHQyw2Q0FBSSxDQUFDMUIsSUFBTCxDQUFVMkIsQ0FBQyxJQUFJQSxDQUFDLENBQUNsQixFQUFGLEtBQVNtQixRQUF4QixDQUFuQjtBQUNULFlBQU1BLFFBQVEsR0FBR1gsSUFBSSxDQUFDRSxvQkFBdEI7QUFDQSxVQUFJVSxRQUFRLEdBQUdSLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUVMsS0FBdkI7QUFDQVQsVUFBSSxDQUFDVSxJQUFMLENBQ2EsR0FBR0wsNkNBQUksQ0FBQ00sR0FBTCxDQUFTTCxDQUFDLElBQUlNLHlEQUFLLENBQUNDLGFBQU4sQ0FBb0IsS0FBcEIsRUFBMkI7QUFDeEN6QixVQUFFLEVBQUVrQixDQUFDLENBQUNsQixFQUFGLEdBQUssTUFEK0I7QUFFeEMwQixZQUFJLEVBQUUsS0FGa0M7QUFHeEMseUJBQWlCUCxRQUFRLElBQUlELENBQUMsQ0FBQ2xCLEVBSFM7QUFJeEMyQixpQkFBUyxFQUFFUCxRQUFRLENBQUNPO0FBSm9CLE9BQTNCLEVBS2RILHlEQUFLLENBQUNDLGFBQU4sQ0FBb0JMLFFBQVEsQ0FBQ1EsUUFBVCxDQUFrQm5DLElBQXRDLEVBQTRDO0FBQzNDb0MsZ0JBQVEsRUFBRVgsQ0FBQyxDQUFDbEIsRUFEK0I7QUFFM0M4QixnQkFBUSxFQUFFWCxRQUFRLElBQUlELENBQUMsQ0FBQ2xCLEVBRm1CO0FBRzNDK0IscUJBQWEsRUFBRVgsUUFBUSxDQUFDUSxRQUFULENBQWtCUCxLQUFsQixDQUF3QlU7QUFISSxPQUE1QyxFQUlBYixDQUFDLENBQUNjLEtBSkYsQ0FMYyxDQUFkLENBRGhCO0FBWVMsVUFBR2hCLFVBQUgsRUFBZUQsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVQyxVQUFVLENBQUNpQixPQUFYLEVBQVY7QUFDZixVQUFHLEtBQUsvQixVQUFSLEVBQW9CVSxJQUFJLENBQUNzQixNQUFMLENBQVl0QixJQUFJLENBQUN1QixTQUFMLENBQWVqQixDQUFDLElBQUVBLENBQUMsQ0FBQ0csS0FBRixDQUFRckIsRUFBUixJQUFjLGtCQUFoQyxDQUFaLEVBQWlFLENBQWpFO0FBQzdCLEtBckJEO0FBc0JBOztBQUVFb0MsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNIOztBQXpDOEMsQ0FBcEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9lbW90ZXMvZW1vdGVtZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIFJlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGFicyBmcm9tIFwiLi90YWJzXCI7XHJcbmNvbnN0IEVtb2ppUGlja2VyID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0udHlwZSAmJiBtLnR5cGUuZGlzcGxheU5hbWUgPT0gXCJFeHByZXNzaW9uUGlja2VyXCIpO1xyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRW1vdGVNZW51IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJlbW90ZXNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJlbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppc0lEKCkge3JldHVybiBcImhpZGVFbW9qaU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppcygpIHtyZXR1cm4gdGhpcy5nZXQodGhpcy5oaWRlRW1vamlzSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmJlZm9yZShFbW9qaVBpY2tlciwgXCJ0eXBlXCIsIChfLCBbYXJnc10sIHJldCkgPT4ge1xyXG4gICAgICAgICAgICBpZihhcmdzLmV4cHJlc3Npb25QaWNrZXJWaWV3ID09IFwiZW1vamlcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGFyZ3MuZXhwcmVzc2lvblBpY2tlclZpZXcgPSBcImdpZlwiO1xyXG4gICAgICAgIH0pOyBcclxuXHRcdHRoaXMuYWZ0ZXIoRW1vamlQaWNrZXIsIFwidHlwZVwiLCAoXywgW2FyZ3NdLCByZXQpID0+IHtcclxuXHRcdFx0Y29uc3QgaGVhZCA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHJldCwgXCJwcm9wcy5jaGlsZHJlbi5wcm9wcy5jaGlsZHJlbi4xLnByb3BzLmNoaWxkcmVuLjAucHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW5cIik7XHJcblx0XHRcdGNvbnN0IGJvZHkgPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChyZXQsIFwicHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlblwiKTtcclxuXHRcdFx0aWYoIWhlYWQgfHwgIWJvZHkpIHJldHVybiByZXQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUYWIgPSBUYWJzLmZpbmQoZSA9PiBlLmlkID09PSBzZWxlY3RlZCk7XHJcblx0XHRcdGNvbnN0IHNlbGVjdGVkID0gYXJncy5leHByZXNzaW9uUGlja2VyVmlldztcclxuXHRcdFx0bGV0IHRhYlByb3BzID0gaGVhZFswXS5wcm9wcztcclxuXHRcdFx0aGVhZC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgLi4uVGFicy5tYXAoZSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogZS5pZCtcIi10YWJcIixcclxuICAgICAgICAgICAgICAgICAgICByb2xlOiBcInRhYlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZCA9PSBlLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGFiUHJvcHMuY2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgICAgfSwgUmVhY3QuY3JlYXRlRWxlbWVudCh0YWJQcm9wcy5jaGlsZHJlbi50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlld1R5cGU6IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IHNlbGVjdGVkID09IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlVmlldzogdGFiUHJvcHMuY2hpbGRyZW4ucHJvcHMuc2V0QWN0aXZlVmlld1xyXG4gICAgICAgICAgICAgICAgfSwgZS5sYWJlbCkpXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICBpZihjdXJyZW50VGFiKSBib2R5WzJdID0gY3VycmVudFRhYi5lbGVtZW50KCk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuaGlkZUVtb2ppcykgaGVhZC5zcGxpY2UoaGVhZC5maW5kSW5kZXgoZT0+ZS5wcm9wcy5pZCA9PSBcImVtb2ppLXBpY2tlci10YWJcIiksIDEpO1xyXG5cdFx0fSlcclxuXHR9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); /***/ }), @@ -218,6 +218,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ }), +/***/ "./src/builtins/emotes/tabs.js": +/*!*************************************!*\ + !*** ./src/builtins/emotes/tabs.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _emotes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./emotes */ \"./src/builtins/emotes/emotes.js\");\n/* harmony import */ var _ui_emotemenucard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/emotemenucard */ \"./src/ui/emotemenucard.jsx\");\n/* harmony import */ var _ui_emoteicon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emoteicon */ \"./src/ui/emoteicon.jsx\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n id: \"twitchEmotes\",\n label: \"Twitch Emotes\",\n element: () => _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emotemenucard__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n type: \"twitch\"\n }, Object.keys(_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCategory(\"TwitchGlobal\")).map(emote => {\n const url = _emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getUrl(\"TwitchGlobal\", emote);\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emoteicon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n emote,\n url\n });\n }))\n}, {\n id: \"favoriteEmotes\",\n label: \"Favorite Emotes\",\n element: () => _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emotemenucard__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n type: \"favourite\"\n }, Object.entries(_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].favorites).map(([emote, url]) => {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emoteicon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n emote,\n url\n });\n }))\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL3RhYnMuanM/NjgzOCJdLCJuYW1lcyI6WyJpZCIsImxhYmVsIiwiZWxlbWVudCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIkVtb3RlTWVudUNhcmQiLCJ0eXBlIiwiT2JqZWN0Iiwia2V5cyIsIkVtb3RlTW9kdWxlIiwiZ2V0Q2F0ZWdvcnkiLCJtYXAiLCJlbW90ZSIsInVybCIsImdldFVybCIsIkVtb3RlSWNvbiIsImVudHJpZXMiLCJmYXZvcml0ZXMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLGdFQUNYO0FBQ0lBLElBQUUsRUFBRSxjQURSO0FBRUlDLE9BQUssRUFBRSxlQUZYO0FBR0lDLFNBQU8sRUFBRSxNQUFNQyx5REFBSyxDQUFDQyxhQUFOLENBQW9CQyx5REFBcEIsRUFBbUM7QUFDOUNDLFFBQUksRUFBRTtBQUR3QyxHQUFuQyxFQUVaQyxNQUFNLENBQUNDLElBQVAsQ0FBWUMsK0NBQVcsQ0FBQ0MsV0FBWixDQUF3QixjQUF4QixDQUFaLEVBQXFEQyxHQUFyRCxDQUF5REMsS0FBSyxJQUFHO0FBQ2hFLFVBQU1DLEdBQUcsR0FBR0osK0NBQVcsQ0FBQ0ssTUFBWixDQUFtQixjQUFuQixFQUFtQ0YsS0FBbkMsQ0FBWjtBQUNBLFdBQU9ULHlEQUFLLENBQUNDLGFBQU4sQ0FBb0JXLHFEQUFwQixFQUErQjtBQUFDSCxXQUFEO0FBQVFDO0FBQVIsS0FBL0IsQ0FBUDtBQUNILEdBSEUsQ0FGWTtBQUhuQixDQURXLEVBV1g7QUFDSWIsSUFBRSxFQUFFLGdCQURSO0FBRUlDLE9BQUssRUFBRSxpQkFGWDtBQUdJQyxTQUFPLEVBQUUsTUFBTUMseURBQUssQ0FBQ0MsYUFBTixDQUFvQkMseURBQXBCLEVBQW1DO0FBQzlDQyxRQUFJLEVBQUU7QUFEd0MsR0FBbkMsRUFFWkMsTUFBTSxDQUFDUyxPQUFQLENBQWVQLCtDQUFXLENBQUNRLFNBQTNCLEVBQXNDTixHQUF0QyxDQUEwQyxDQUFDLENBQUNDLEtBQUQsRUFBUUMsR0FBUixDQUFELEtBQWtCO0FBQzNELFdBQU9WLHlEQUFLLENBQUNDLGFBQU4sQ0FBb0JXLHFEQUFwQixFQUErQjtBQUFDSCxXQUFEO0FBQVFDO0FBQVIsS0FBL0IsQ0FBUDtBQUNILEdBRkUsQ0FGWTtBQUhuQixDQVhXLENBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvZW1vdGVzL3RhYnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcbmltcG9ydCBFbW90ZU1lbnVDYXJkIGZyb20gXCIuLi8uLi91aS9lbW90ZW1lbnVjYXJkXCI7XHJcbmltcG9ydCBFbW90ZUljb24gZnJvbSBcIi4uLy4uL3VpL2Vtb3RlaWNvblwiO1xyXG5leHBvcnQgZGVmYXVsdCBbXHJcbiAgICB7XHJcbiAgICAgICAgaWQ6IFwidHdpdGNoRW1vdGVzXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiVHdpdGNoIEVtb3Rlc1wiLFxyXG4gICAgICAgIGVsZW1lbnQ6ICgpID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1vdGVNZW51Q2FyZCwge1xyXG4gICAgICAgICAgICB0eXBlOiBcInR3aXRjaFwiXHJcbiAgICAgICAgfSwgT2JqZWN0LmtleXMoRW1vdGVNb2R1bGUuZ2V0Q2F0ZWdvcnkoXCJUd2l0Y2hHbG9iYWxcIikpLm1hcChlbW90ZT0+IHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZ2V0VXJsKFwiVHdpdGNoR2xvYmFsXCIsIGVtb3RlKTtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1vdGVJY29uLCB7ZW1vdGUsIHVybH0pO1xyXG4gICAgICAgIH0pKVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpZDogXCJmYXZvcml0ZUVtb3Rlc1wiLFxyXG4gICAgICAgIGxhYmVsOiBcIkZhdm9yaXRlIEVtb3Rlc1wiLFxyXG4gICAgICAgIGVsZW1lbnQ6ICgpID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1vdGVNZW51Q2FyZCwge1xyXG4gICAgICAgICAgICB0eXBlOiBcImZhdm91cml0ZVwiXHJcbiAgICAgICAgfSwgT2JqZWN0LmVudHJpZXMoRW1vdGVNb2R1bGUuZmF2b3JpdGVzKS5tYXAoKFtlbW90ZSwgdXJsXSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChFbW90ZUljb24sIHtlbW90ZSwgdXJsfSk7XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcbl0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/emotes/tabs.js\n"); + +/***/ }), + /***/ "./src/builtins/general/24hour.js": /*!****************************************!*\ !*** ./src/builtins/general/24hour.js ***! @@ -538,7 +550,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return {};\n },\n\n get version() {\n return _data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n// BdApi.monkeyPatch = function(what, methodName, options) {\n// const {before, after, instead, once = false, silent = false, force = false} = options;\n// const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n// if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// if (!what[methodName]) {\n// if (force) what[methodName] = function() {};\n// else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n// }\n// const origMethod = what[methodName];\n// const cancel = () => {\n// if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// what[methodName] = origMethod;\n// };\n// what[methodName] = function() {\n// const data = {\n// thisObject: this,\n// methodArguments: arguments,\n// cancelPatch: cancel,\n// originalMethod: origMethod,\n// callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n// };\n// if (instead) {\n// const tempRet = Utilities.suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n// if (tempRet !== undefined) data.returnValue = tempRet;\n// }\n// else {\n// if (before) Utilities.suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n// data.callOriginalMethod();\n// if (after) Utilities.suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n// }\n// if (once) cancel();\n// return data.returnValue;\n// };\n// what[methodName].__monkeyPatched = true;\n// if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n// what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n// return cancel;\n// };\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false\n } = options;\n const patchType = before ? \"before\" : after ? \"after\" : instead ? \"instead\" : \"\";\n if (!patchType) return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi\", \"Must provide one of: after, before, instead\");\n const originalMethod = what[methodName];\n const data = {\n originalMethod: originalMethod,\n callOriginalMethod: () => data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n data.cancelPatch = _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"][patchType](\"BdApi\", what, methodName, (thisObject, args, returnValue) => {\n data.thisObject = thisObject;\n data.methodArguments = args;\n data.returnValue = returnValue;\n\n try {\n Reflect.apply(options[patchType], null, [data]);\n if (once) data.cancelPatch();\n } catch (err) {// Logger.err(\"monkeyPatch\", `Error in the ${patchType} of ${methodName}`);\n }\n });\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.addonFolder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.getAddon(idOrFile);\n }\n\n getAll() {\n return manager.addonList.map(a => manager.getAddon(a.id));\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nBdApi.Patcher = {\n patch: (caller, moduleToPatch, functionName, callback, options = {}) => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of patch must be a string representing the caller\");\n if (options.type !== \"before\" && options.type !== \"instead\" && options.type !== \"after\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"options.type must be one of: before, instead, after\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].pushChildPatch(caller, moduleToPatch, functionName, callback, options);\n },\n before: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n })),\n instead: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n })),\n after: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n })),\n unpatchAll: caller => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of unpatchAll must be a string representing the caller\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].unpatchAll(caller);\n }\n};\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\nObject.freeze(BdApi.Patcher);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanM/NmE5MyJdLCJuYW1lcyI6WyJCZEFwaSIsIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSIsIldpbmRvd0NvbmZpZ0ZpbGUiLCJzZXR0aW5ncyIsIlNldHRpbmdzIiwiY29sbGVjdGlvbnMiLCJlbW90ZXMiLCJ2ZXJzaW9uIiwiQ29uZmlnIiwiZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwiZ2V0V2luZG93UHJlZmVyZW5jZSIsImtleSIsInNldFdpbmRvd1ByZWZlcmVuY2UiLCJ2YWx1ZSIsInByZWZzIiwic2V0RGF0YSIsImluamVjdENTUyIsImlkIiwiY3NzIiwiRE9NTWFuYWdlciIsImluamVjdFN0eWxlIiwiY2xlYXJDU1MiLCJyZW1vdmVTdHlsZSIsImxpbmtKUyIsInVybCIsImluamVjdFNjcmlwdCIsInVubGlua0pTIiwicmVtb3ZlU2NyaXB0IiwiYWxlcnQiLCJ0aXRsZSIsImNvbnRlbnQiLCJNb2RhbHMiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJvcHRpb25zIiwic2hvd1RvYXN0IiwiVG9hc3RzIiwic2hvdyIsImZpbmRNb2R1bGUiLCJmaWx0ZXIiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsImZpbmRBbGxNb2R1bGVzIiwiZmluZE1vZHVsZUJ5UHJvcHMiLCJwcm9wcyIsImdldEJ5UHJvcHMiLCJmaW5kTW9kdWxlQnlQcm90b3R5cGVzIiwicHJvdG9zIiwiZ2V0QnlQcm90b3R5cGVzIiwiZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUiLCJuYW1lIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2UiLCJub2RlIiwid2luZG93IiwialF1ZXJ5IiwiRWxlbWVudCIsInVuZGVmaW5lZCIsIlV0aWxpdGllcyIsImdldFJlYWN0SW5zdGFuY2UiLCJsb2FkRGF0YSIsInBsdWdpbk5hbWUiLCJnZXRQbHVnaW5EYXRhIiwic2F2ZURhdGEiLCJkYXRhIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZURhdGEiLCJkZWxldGVQbHVnaW5EYXRhIiwibW9ua2V5UGF0Y2giLCJ3aGF0IiwibWV0aG9kTmFtZSIsImJlZm9yZSIsImFmdGVyIiwiaW5zdGVhZCIsIm9uY2UiLCJwYXRjaFR5cGUiLCJMb2dnZXIiLCJlcnIiLCJvcmlnaW5hbE1ldGhvZCIsImNhbGxPcmlnaW5hbE1ldGhvZCIsImFwcGx5IiwidGhpc09iamVjdCIsIm1ldGhvZEFyZ3VtZW50cyIsImNhbmNlbFBhdGNoIiwiUGF0Y2hlciIsImFyZ3MiLCJyZXR1cm5WYWx1ZSIsIlJlZmxlY3QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsInN1cHByZXNzRXJyb3JzIiwibWV0aG9kIiwibWVzc2FnZSIsInRlc3RKU09OIiwiZ2V0UGx1Z2luIiwid2FybiIsIlBsdWdpbk1hbmFnZXIiLCJhZGRvbkxpc3QiLCJmaW5kIiwiYSIsImlzUGx1Z2luRW5hYmxlZCIsInBsdWdpbiIsImlzRW5hYmxlZCIsImlzVGhlbWVFbmFibGVkIiwidGhlbWUiLCJUaGVtZU1hbmFnZXIiLCJpc1NldHRpbmdFbmFibGVkIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiZ2V0IiwiZW5hYmxlU2V0dGluZyIsInNldCIsImRpc2FibGVTZXR0aW5nIiwidG9nZ2xlU2V0dGluZyIsImdldEJERGF0YSIsInNldEJERGF0YSIsIm1ha2VBZGRvbkFQSSIsIm1hbmFnZXIiLCJBZGRvbkFQSSIsImZvbGRlciIsImFkZG9uRm9sZGVyIiwiaWRPckZpbGUiLCJlbmFibGUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGUiLCJkaXNhYmxlQWRkb24iLCJ0b2dnbGUiLCJ0b2dnbGVBZGRvbiIsInJlbG9hZCIsImlkT3JGaWxlT3JBZGRvbiIsInJlbG9hZEFkZG9uIiwiZ2V0QWRkb24iLCJnZXRBbGwiLCJtYXAiLCJQbHVnaW5zIiwiVGhlbWVzIiwicGF0Y2giLCJjYWxsZXIiLCJtb2R1bGVUb1BhdGNoIiwiZnVuY3Rpb25OYW1lIiwidHlwZSIsInB1c2hDaGlsZFBhdGNoIiwiT2JqZWN0IiwiYXNzaWduIiwidW5wYXRjaEFsbCIsImZyZWV6ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHO0FBQ1YsTUFBSUMsS0FBSixHQUFZO0FBQUUsV0FBT0MsdURBQWMsQ0FBQ0QsS0FBdEI7QUFBOEIsR0FEbEM7O0FBRVYsTUFBSUUsUUFBSixHQUFlO0FBQUUsV0FBT0QsdURBQWMsQ0FBQ0MsUUFBdEI7QUFBaUMsR0FGeEM7O0FBR1YsTUFBSUMsZ0JBQUosR0FBdUI7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUh6Qjs7QUFJVixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPQyx5REFBUSxDQUFDQyxXQUFoQjtBQUE2QixHQUpuQzs7QUFLVixNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUxmOztBQU1WLE1BQUlDLE9BQUosR0FBYztBQUFDLFdBQU9DLG9EQUFNLENBQUNELE9BQWQ7QUFBdUI7O0FBTjVCLENBQWQ7O0FBU0FULEtBQUssQ0FBQ1csdUJBQU4sR0FBZ0MsWUFBVztBQUN2QyxTQUFPQyxrREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQTNDO0FBQ0gsQ0FGRDs7QUFJQWIsS0FBSyxDQUFDYyxtQkFBTixHQUE0QixVQUFTQyxHQUFULEVBQWM7QUFDdEMsU0FBTyxLQUFLSix1QkFBTCxHQUErQkksR0FBL0IsQ0FBUDtBQUNILENBRkQ7O0FBSUFmLEtBQUssQ0FBQ2dCLG1CQUFOLEdBQTRCLFVBQVNELEdBQVQsRUFBY0UsS0FBZCxFQUFxQjtBQUM3QyxRQUFNQyxLQUFLLEdBQUcsS0FBS1AsdUJBQUws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O0FBQ2pDLFdBQU9PLGlEQUFPLENBQUM2RCxVQUFSLENBQW1CUCxNQUFuQixDQUFQO0FBQ0g7QUFaVyxDQUFoQjtBQWVBSyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQWQ7QUFDQWtKLE1BQU0sQ0FBQ0csTUFBUCxDQUFjckosS0FBSyxDQUFDMEksT0FBcEI7QUFDQVEsTUFBTSxDQUFDRyxNQUFQLENBQWNySixLQUFLLENBQUMySSxNQUFwQjtBQUNBTyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQUssQ0FBQ3VGLE9BQXBCO0FBRWV2RixvRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BsdWdpbmFwaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgUGx1Z2luTWFuYWdlciBmcm9tIFwiLi9wbHVnaW5tYW5hZ2VyXCI7XHJcbmltcG9ydCBUaGVtZU1hbmFnZXIgZnJvbSBcIi4vdGhlbWVtYW5hZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5cclxuY29uc3QgQmRBcGkgPSB7XHJcbiAgICBnZXQgUmVhY3QoKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdDsgfSxcclxuICAgIGdldCBSZWFjdERPTSgpIHsgcmV0dXJuIERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NOyB9LFxyXG4gICAgZ2V0IFdpbmRvd0NvbmZpZ0ZpbGUoKSB7cmV0dXJuIFwiXCI7fSxcclxuICAgIGdldCBzZXR0aW5ncygpIHtyZXR1cm4gU2V0dGluZ3MuY29sbGVjdGlvbnM7fSxcclxuICAgIGdldCBlbW90ZXMoKSB7cmV0dXJuIHt9O30sXHJcbiAgICBnZXQgdmVyc2lvbigpIHtyZXR1cm4gQ29uZmlnLnZlcnNpb247fVxyXG59O1xyXG5cclxuQmRBcGkuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMgPSBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG59O1xyXG5cclxuQmRBcGkuZ2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKVtrZXldO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcclxuICAgIGNvbnN0IHByZWZzID0gdGhpcy5nZXRBbGxXaW5kb3dQcmVmZXJlbmNlcygpO1xyXG4gICAgcHJlZnNba2V5XSA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXREYXRhKFwid2luZG93cHJlZnNcIiwgcHJlZnMpO1xyXG59O1xyXG5cclxuLy9JbmplY3QgQ1NTIHRvIGRvY3VtZW50IGhlYWRcclxuLy9pZCA9IGlkIG9mIGVsZW1lbnRcclxuLy9jc3MgPSBjdXN0b20gY3NzXHJcbkJkQXBpLmluamVjdENTUyA9IGZ1bmN0aW9uIChpZCwgY3NzKSB7XHJcbiAgICBET01NYW5hZ2VyLmluamVjdFN0eWxlKGlkLCBjc3MpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLmNsZWFyQ1NTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVN0eWxlKGlkKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5saW5rSlMgPSBmdW5jdGlvbiAoaWQsIHVybCkge1xyXG4gICAgcmV0dXJuIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KGlkLCB1cmwpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLnVubGlua0pTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVNjcmlwdChpZCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBtb2RhbC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IC0gYSBzdHJpbmcgb2YgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBtb2RhbFxyXG4gKi9cclxuQmRBcGkuYWxlcnQgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgIE1vZGFscy5hbGVydCh0aXRsZSwgY29udGVudCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBjb25maXJtYXRpb24gbW9kYWwgd2l0aCBvcHRpb25hbCBjb25maXJtIGFuZCBjYW5jZWwgY2FsbGJhY2tzLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgbW9kYWxcclxuICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYFRleHRFbGVtZW50YCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIG9wdGlvbnMgdG8gbW9kaWZ5IHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRhbmdlcj1mYWxzZV0gLSB3aGV0aGVyIHRoZSBtYWluIGJ1dHRvbiBzaG91bGQgYmUgcmVkIG9yIG5vdFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNhbmNlbFRleHQ9Q2FuY2VsXSAtIHRleHQgZm9yIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ29uZmlybT1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqL1xyXG5CZEFwaS5zaG93Q29uZmlybWF0aW9uTW9kYWwgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgc2hvd3MgYSB0b2FzdCBzaW1pbGFyIHRvIGFuZHJvaWQgdG93YXJkcyB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbnMgb2JqZWN0LiBPcHRpb25hbCBwYXJhbWV0ZXIuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPVwiXCJdIENoYW5nZXMgdGhlIHR5cGUgb2YgdGhlIHRvYXN0IHN0eWxpc3RpY2FsbHkgYW5kIHNlbWFudGljYWxseS4gQ2hvaWNlczogXCJcIiwgXCJpbmZvXCIsIFwic3VjY2Vzc1wiLCBcImRhbmdlclwiL1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIvXCJ3YXJuXCIuIERlZmF1bHQ6IFwiXCJcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpbWVvdXQ9MzAwMF0gQWRqdXN0cyB0aGUgdGltZSAoaW4gbXMpIHRoZSB0b2FzdCBzaG91bGQgYmUgc2hvd24gZm9yIGJlZm9yZSBkaXNhcHBlYXJpbmcgYXV0b21hdGljYWxseS4gRGVmYXVsdDogMzAwMFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlU2hvdz1mYWxzZV0gV2hldGhlciB0byBmb3JjZSBzaG93aW5nIHRoZSB0b2FzdCBhbmQgaWdub3JlIHRoZSBiZCBzZXR0aW5nXHJcbiAqL1xyXG5CZEFwaS5zaG93VG9hc3QgPSBmdW5jdGlvbihjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIFRvYXN0cy5zaG93KGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLy8gRmluZHMgbW9kdWxlXHJcbkJkQXBpLmZpbmRNb2R1bGUgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kQWxsTW9kdWxlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShmaWx0ZXIsIGZhbHNlKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm9wcyA9IGZ1bmN0aW9uKC4uLnByb3BzKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyguLi5wcm9wcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm90b3R5cGVzID0gZnVuY3Rpb24oLi4ucHJvdG9zKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKC4uLnByb3Rvcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlEaXNwbGF5TmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKG5hbWUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyByZWFjdCBpbnN0YW5jZVxyXG5CZEFwaS5nZXRJbnRlcm5hbEluc3RhbmNlID0gZnVuY3Rpb24obm9kZSkge1xyXG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIHdpbmRvdy5qUXVlcnkpICYmICEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBqUXVlcnkpIG5vZGUgPSBub2RlWzBdO1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmxvYWREYXRhID0gZnVuY3Rpb24ocGx1Z2luTmFtZSwga2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5KTtcclxufTtcclxuXHJcbkJkQXBpLmdldERhdGEgPSBCZEFwaS5sb2FkRGF0YTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zYXZlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5CZEFwaS5zZXREYXRhID0gQmRBcGkuc2F2ZURhdGE7XHJcblxyXG4vLyBEZWxldGVzIGRhdGFcclxuQmRBcGkuZGVsZXRlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5kZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG4vLyBQYXRjaGVzIG90aGVyIGZ1bmN0aW9uc1xyXG4vLyBCZEFwaS5tb25rZXlQYXRjaCA9IGZ1bmN0aW9uKHdoYXQsIG1ldGhvZE5hbWUsIG9wdGlvbnMpIHtcclxuLy8gICAgIGNvbnN0IHtiZWZvcmUsIGFmdGVyLCBpbnN0ZWFkLCBvbmNlID0gZmFsc2UsIHNpbGVudCA9IGZhbHNlLCBmb3JjZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbi8vICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgfHwgd2hhdC5kaXNwbGF5TmFtZSB8fCB3aGF0Lm5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB3aGF0LmNvbnN0cnVjdG9yLm5hbWU7XHJcbi8vICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJwYXRjaFwiLCBtZXRob2ROYW1lLCBcIm9mXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbi8vICAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0pIHtcclxuLy8gICAgICAgICBpZiAoZm9yY2UpIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHt9O1xyXG4vLyAgICAgICAgIGVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IobWV0aG9kTmFtZSwgXCJkb2VzIG5vdCBleGlzdCBmb3JcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuLy8gICAgIH1cclxuLy8gICAgIGNvbnN0IG9yaWdNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4vLyAgICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xyXG4vLyAgICAgICAgIGlmICghc2lsZW50KSBjb25zb2xlLmxvZyhcInVucGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4vLyAgICAgICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcclxuLy8gICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4vLyAgICAgICAgICAgICB0aGlzT2JqZWN0OiB0aGlzLFxyXG4vLyAgICAgICAgICAgICBtZXRob2RBcmd1bWVudHM6IGFyZ3VtZW50cyxcclxuLy8gICAgICAgICAgICAgY2FuY2VsUGF0Y2g6IGNhbmNlbCxcclxuLy8gICAgICAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdNZXRob2QsXHJcbi8vICAgICAgICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5yZXR1cm5WYWx1ZSA9IGRhdGEub3JpZ2luYWxNZXRob2QuYXBwbHkoZGF0YS50aGlzT2JqZWN0LCBkYXRhLm1ldGhvZEFyZ3VtZW50cylcclxuLy8gICAgICAgICB9O1xyXG4vLyAgICAgICAgIGlmIChpbnN0ZWFkKSB7XHJcbi8vICAgICAgICAgICAgIGNvbnN0IHRlbXBSZXQgPSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoaW5zdGVhZCwgXCJgaW5zdGVhZGAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICAgICAgaWYgKHRlbXBSZXQgIT09IHVuZGVmaW5lZCkgZGF0YS5yZXR1cm5WYWx1ZSA9IHRlbXBSZXQ7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIGVsc2Uge1xyXG4vLyAgICAgICAgICAgICBpZiAoYmVmb3JlKSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoYmVmb3JlLCBcImBiZWZvcmVgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgICAgIGRhdGEuY2FsbE9yaWdpbmFsTWV0aG9kKCk7XHJcbi8vICAgICAgICAgICAgIGlmIChhZnRlcikgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGFmdGVyLCBcImBhZnRlcmAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgaWYgKG9uY2UpIGNhbmNlbCgpO1xyXG4vLyAgICAgICAgIHJldHVybiBkYXRhLnJldHVyblZhbHVlO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0uX19tb25rZXlQYXRjaGVkID0gdHJ1ZTtcclxuLy8gICAgIGlmICghd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kKSB3aGF0W21ldGhvZE5hbWVdLl9fb3JpZ2luYWxNZXRob2QgPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSA9IFwicGF0Y2hlZCBcIiArICh3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lIHx8IG1ldGhvZE5hbWUpO1xyXG4vLyAgICAgcmV0dXJuIGNhbmNlbDtcclxuLy8gfTtcclxuQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBwYXRjaFR5cGUgPSBiZWZvcmUgPyBcImJlZm9yZVwiIDogYWZ0ZXIgPyBcImFmdGVyXCIgOiBpbnN0ZWFkID8gXCJpbnN0ZWFkXCIgOiBcIlwiO1xyXG4gICAgaWYgKCFwYXRjaFR5cGUpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGlcIiwgXCJNdXN0IHByb3ZpZGUgb25lIG9mOiBhZnRlciwgYmVmb3JlLCBpbnN0ZWFkXCIpO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICBvcmlnaW5hbE1ldGhvZDogb3JpZ2luYWxNZXRob2QsXHJcbiAgICAgICAgY2FsbE9yaWdpbmFsTWV0aG9kOiAoKSA9PiBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbiAgICB9O1xyXG4gICAgZGF0YS5jYW5jZWxQYXRjaCA9IFBhdGNoZXJbcGF0Y2hUeXBlXShcIkJkQXBpXCIsIHdoYXQsIG1ldGhvZE5hbWUsICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgIGRhdGEudGhpc09iamVjdCA9IHRoaXNPYmplY3Q7XHJcbiAgICAgICAgZGF0YS5tZXRob2RBcmd1bWVudHMgPSBhcmdzO1xyXG4gICAgICAgIGRhdGEucmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBSZWZsZWN0LmFwcGx5KG9wdGlvbnNbcGF0Y2hUeXBlXSwgbnVsbCwgW2RhdGFdKTtcclxuICAgICAgICAgICAgaWYgKG9uY2UpIGRhdGEuY2FuY2VsUGF0Y2goKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAvLyBMb2dnZXIuZXJyKFwibW9ua2V5UGF0Y2hcIiwgYEVycm9yIGluIHRoZSAke3BhdGNoVHlwZX0gb2YgJHttZXRob2ROYW1lfWApO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG4vLyBFdmVudCB3aGVuIGVsZW1lbnQgaXMgcmVtb3ZlZFxyXG5CZEFwaS5vblJlbW92ZWQgPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5vblJlbW92ZWQobm9kZSwgY2FsbGJhY2spO1xyXG59O1xyXG5cclxuLy8gV3JhcHMgZnVuY3Rpb24gaW4gdHJ5Li5jYXRjaFxyXG5CZEFwaS5zdXBwcmVzc0Vycm9ycyA9IGZ1bmN0aW9uKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhtZXRob2QsIG1lc3NhZ2UpO1xyXG59O1xyXG5cclxuLy8gVGVzdHMgZm9yIHZhbGlkIEpTT05cclxuQmRBcGkudGVzdEpTT04gPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICByZXR1cm4gVXRpbGl0aWVzLnRlc3RKU09OKGRhdGEpO1xyXG59O1xyXG5cclxuLy9HZXQgYW5vdGhlciBwbHVnaW5cclxuLy9uYW1lID0gbmFtZSBvZiBwbHVnaW5cclxuQmRBcGkuZ2V0UGx1Z2luID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgIExvZ2dlci53YXJuKFwiQmRBcGlcIiwgXCJnZXRQbHVnaW4gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlBsdWdpbnMpXCIpO1xyXG4gICAgcmV0dXJuIFBsdWdpbk1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1BsdWdpbkVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNQbHVnaW5FbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuZ2V0UGx1Z2luKG5hbWUpO1xyXG4gICAgaWYgKCFwbHVnaW4pIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmlzRW5hYmxlZChwbHVnaW4uaWQpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNUaGVtZUVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNUaGVtZUVuYWJsZWQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlRoZW1lcylcIik7XHJcbiAgICBjb25zdCB0aGVtZSA9IFRoZW1lTWFuYWdlci5hZGRvbkxpc3QuZmluZChhID0+IGEubmFtZSA9PSBuYW1lKTtcclxuICAgIGlmICghdGhlbWUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBUaGVtZU1hbmFnZXIuaXNFbmFibGVkKHRoZW1lLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzU2V0dGluZ0VuYWJsZWQgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKTtcclxufTtcclxuXHJcbkJkQXBpLmVuYWJsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB0cnVlKTtcclxufTtcclxuXHJcbkJkQXBpLmRpc2FibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgZmFsc2UpO1xyXG59O1xyXG5cclxuQmRBcGkudG9nZ2xlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsICFTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSk7XHJcbn07XHJcblxyXG4vLyBHZXRzIGRhdGFcclxuQmRBcGkuZ2V0QkREYXRhID0gZnVuY3Rpb24oa2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldEJERGF0YShrZXkpO1xyXG59O1xyXG5cclxuLy8gU2V0cyBkYXRhXHJcbkJkQXBpLnNldEJERGF0YSA9IGZ1bmN0aW9uKGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRCRERhdGEoa2V5LCBkYXRhKTtcclxufTtcclxuXHJcbmNvbnN0IG1ha2VBZGRvbkFQSSA9IChtYW5hZ2VyKSA9PiBuZXcgY2xhc3MgQWRkb25BUEkge1xyXG4gICAgZ2V0IGZvbGRlcigpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkZvbGRlcjt9XHJcbiAgICBpc0VuYWJsZWQoaWRPckZpbGUpIHtyZXR1cm4gbWFuYWdlci5pc0VuYWJsZWQoaWRPckZpbGUpO31cclxuICAgIGVuYWJsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnRvZ2dsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgcmVsb2FkKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG4gICAgZ2V0KGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuZ2V0QWRkb24oaWRPckZpbGUpO31cclxuICAgIGdldEFsbCgpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkxpc3QubWFwKGEgPT4gbWFuYWdlci5nZXRBZGRvbihhLmlkKSk7fVxyXG59O1xyXG5cclxuQmRBcGkuUGx1Z2lucyA9IG1ha2VBZGRvbkFQSShQbHVnaW5NYW5hZ2VyKTtcclxuQmRBcGkuVGhlbWVzID0gbWFrZUFkZG9uQVBJKFRoZW1lTWFuYWdlcik7XHJcbkJkQXBpLlBhdGNoZXIgPSB7XHJcbiAgICBwYXRjaDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihjYWxsZXIpICE9PSBcInN0cmluZ1wiKSByZXR1cm4gTG9nZ2VyLmVycihcIkJkQXBpLlBhdGNoZXJcIiwgXCJQYXJhbWV0ZXIgMCBvZiBwYXRjaCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09IFwiYmVmb3JlXCIgJiYgb3B0aW9ucy50eXBlICE9PSBcImluc3RlYWRcIiAmJiBvcHRpb25zLnR5cGUgIT09IFwiYWZ0ZXJcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwib3B0aW9ucy50eXBlIG11c3QgYmUgb25lIG9mOiBiZWZvcmUsIGluc3RlYWQsIGFmdGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlOiAoY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pID0+IEJkQXBpLlBhdGNoZXIucGF0Y2goY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcImJlZm9yZVwifSkpLFxyXG4gICAgaW5zdGVhZDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbnN0ZWFkXCJ9KSksXHJcbiAgICBhZnRlcjogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJhZnRlclwifSkpLFxyXG4gICAgdW5wYXRjaEFsbDogKGNhbGxlcikgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YoY2FsbGVyKSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwiUGFyYW1ldGVyIDAgb2YgdW5wYXRjaEFsbCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnVucGF0Y2hBbGwoY2FsbGVyKTtcclxuICAgIH1cclxufTtcclxuXHJcbk9iamVjdC5mcmVlemUoQmRBcGkpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlBsdWdpbnMpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlRoZW1lcyk7XHJcbk9iamVjdC5mcmVlemUoQmRBcGkuUGF0Y2hlcik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCZEFwaTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony import */ var _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../builtins/emotes/emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return new Proxy(_builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Emotes, {\n get() {\n return _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Emotes;\n },\n\n set() {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"Emotes\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n }\n\n });\n },\n\n get version() {\n return _data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n// BdApi.monkeyPatch = function(what, methodName, options) {\n// const {before, after, instead, once = false, silent = false, force = false} = options;\n// const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n// if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// if (!what[methodName]) {\n// if (force) what[methodName] = function() {};\n// else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n// }\n// const origMethod = what[methodName];\n// const cancel = () => {\n// if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// what[methodName] = origMethod;\n// };\n// what[methodName] = function() {\n// const data = {\n// thisObject: this,\n// methodArguments: arguments,\n// cancelPatch: cancel,\n// originalMethod: origMethod,\n// callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n// };\n// if (instead) {\n// const tempRet = Utilities.suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n// if (tempRet !== undefined) data.returnValue = tempRet;\n// }\n// else {\n// if (before) Utilities.suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n// data.callOriginalMethod();\n// if (after) Utilities.suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n// }\n// if (once) cancel();\n// return data.returnValue;\n// };\n// what[methodName].__monkeyPatched = true;\n// if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n// what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n// return cancel;\n// };\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false\n } = options;\n const patchType = before ? \"before\" : after ? \"after\" : instead ? \"instead\" : \"\";\n if (!patchType) return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi\", \"Must provide one of: after, before, instead\");\n const originalMethod = what[methodName];\n const data = {\n originalMethod: originalMethod,\n callOriginalMethod: () => data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n data.cancelPatch = _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"][patchType](\"BdApi\", what, methodName, (thisObject, args, returnValue) => {\n data.thisObject = thisObject;\n data.methodArguments = args;\n data.returnValue = returnValue;\n\n try {\n Reflect.apply(options[patchType], null, [data]);\n if (once) data.cancelPatch();\n } catch (err) {// Logger.err(\"monkeyPatch\", `Error in the ${patchType} of ${methodName}`);\n }\n });\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.addonFolder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.getAddon(idOrFile);\n }\n\n getAll() {\n return manager.addonList.map(a => manager.getAddon(a.id));\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nBdApi.Patcher = {\n patch: (caller, moduleToPatch, functionName, callback, options = {}) => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of patch must be a string representing the caller\");\n if (options.type !== \"before\" && options.type !== \"instead\" && options.type !== \"after\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"options.type must be one of: before, instead, after\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].pushChildPatch(caller, moduleToPatch, functionName, callback, options);\n },\n before: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n })),\n instead: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n })),\n after: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n })),\n unpatchAll: caller => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of unpatchAll must be a string representing the caller\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].unpatchAll(caller);\n }\n};\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\nObject.freeze(BdApi.Patcher);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanM/NmE5MyJdLCJuYW1lcyI6WyJCZEFwaSIsIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSIsIldpbmRvd0NvbmZpZ0ZpbGUiLCJzZXR0aW5ncyIsIlNldHRpbmdzIiwiY29sbGVjdGlvbnMiLCJlbW90ZXMiLCJQcm94eSIsIkVtb3RlcyIsImdldCIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJ2ZXJzaW9uIiwiQ29uZmlnIiwiZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwiZ2V0V2luZG93UHJlZmVyZW5jZSIsImtleSIsInNldFdpbmRvd1ByZWZlcmVuY2UiLCJ2YWx1ZSIsInByZWZzIiwic2V0RGF0YSIsImluamVjdENTUyIsImlkIiwiY3NzIiwiRE9NTWFuYWdlciIsImluamVjdFN0eWxlIiwiY2xlYXJDU1MiLCJyZW1vdmVTdHlsZSIsImxpbmtKUyIsInVybCIsImluamVjdFNjcmlwdCIsInVubGlua0pTIiwicmVtb3ZlU2NyaXB0IiwiYWxlcnQiLCJ0aXRsZSIsImNvbnRlbnQiLCJNb2RhbHMiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJvcHRpb25zIiwic2hvd1RvYXN0IiwiVG9hc3RzIiwic2hvdyIsImZpbmRNb2R1bGUiLCJmaWx0ZXIiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsImZpbmRBbGxNb2R1bGVzIiwiZmluZE1vZHVsZUJ5UHJvcHMiLCJwcm9wcyIsImdldEJ5UHJvcHMiLCJmaW5kTW9kdWxlQnlQcm90b3R5cGVzIiwicHJvdG9zIiwiZ2V0QnlQcm90b3R5cGVzIiwiZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUiLCJuYW1lIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2UiLCJub2RlIiwid2luZG93IiwialF1ZXJ5IiwiRWxlbWVudCIsInVuZGVmaW5lZCIsIlV0aWxpdGllcyIsImdldFJlYWN0SW5zdGFuY2UiLCJsb2FkRGF0YSIsInBsdWdpbk5hbWUiLCJnZXRQbHVnaW5EYXRhIiwic2F2ZURhdGEiLCJkYXRhIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZURhdGEiLCJkZWxldGVQbHVnaW5EYXRhIiwibW9ua2V5UGF0Y2giLCJ3aGF0IiwibWV0aG9kTmFtZSIsImJlZm9yZSIsImFmdGVyIiwiaW5zdGVhZCIsIm9uY2UiLCJwYXRjaFR5cGUiLCJlcnIiLCJvcmlnaW5hbE1ldGhvZCIsImNhbGxPcmlnaW5hbE1ldGhvZCIsImFwcGx5IiwidGhpc09iamVjdCIsIm1ldGhvZEFyZ3VtZW50cyIsImNhbmNlbFBhdGNoIiwiUGF0Y2hlciIsImFyZ3MiLCJyZXR1cm5WYWx1ZSIsIlJlZmxlY3QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsInN1cHByZXNzRXJyb3JzIiwibWV0aG9kIiwibWVzc2FnZSIsInRlc3RKU09OIiwiZ2V0UGx1Z2luIiwiUGx1Z2luTWFuYWdlciIsImFkZG9uTGlzdCIsImZpbmQiLCJhIiwiaXNQbHVnaW5FbmFibGVkIiwicGx1Z2luIiwiaXNFbmFibGVkIiwiaXNUaGVtZUVuYWJsZWQiLCJ0aGVtZSIsIlRoZW1lTWFuYWdlciIsImlzU2V0dGluZ0VuYWJsZWQiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJlbmFibGVTZXR0aW5nIiwiZGlzYWJsZVNldHRpbmciLCJ0b2dnbGVTZXR0aW5nIiwiZ2V0QkREYXRhIiwic2V0QkREYXRhIiwibWFrZUFkZG9uQVBJIiwibWFuYWdlciIsIkFkZG9uQVBJIiwiZm9sZGVyIiwiYWRkb25Gb2xkZXIiLCJpZE9yRmlsZSIsImVuYWJsZSIsImlkT3JBZGRvbiIsImVuYWJsZUFkZG9uIiwiZGlzYWJsZSIsImRpc2FibGVBZGRvbiIsInRvZ2dsZSIsInRvZ2dsZUFkZG9uIiwicmVsb2FkIiwiaWRPckZpbGVPckFkZG9uIiwicmVsb2FkQWRkb24iLCJnZXRBZGRvbiIsImdldEFsbCIsIm1hcCIsIlBsdWdpbnMiLCJUaGVtZXMiLCJwYXRjaCIsImNhbGxlciIsIm1vZHVsZVRvUGF0Y2giLCJmdW5jdGlvbk5hbWUiLCJ0eXBlIiwicHVzaENoaWxkUGF0Y2giLCJPYmplY3QiLCJhc3NpZ24iLCJ1bnBhdGNoQWxsIiwiZnJlZXplIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHO0FBQ1YsTUFBSUMsS0FBSixHQUFZO0FBQUUsV0FBT0MsdURBQWMsQ0FBQ0QsS0FBdEI7QUFBOEIsR0FEbEM7O0FBRVYsTUFBSUUsUUFBSixHQUFlO0FBQUUsV0FBT0QsdURBQWMsQ0FBQ0MsUUFBdEI7QUFBaUMsR0FGeEM7O0FBR1YsTUFBSUMsZ0JBQUosR0FBdUI7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUh6Qjs7QUFJVixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPQyx5REFBUSxDQUFDQyxXQUFoQjtBQUE2QixHQUpuQzs7QUFLVixNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLElBQUlDLEtBQUosQ0FBVUMsZ0VBQU0sQ0FBQ0EsTUFBakIsRUFBeUI7QUFDMUNDLFNBQUcsR0FBRztBQUFFLGVBQU9ELGdFQUFNLENBQUNBLE1BQWQ7QUFBcUIsT0FEYTs7QUFFMUNFLFNBQUcsR0FBRztBQUFFQyx3REFBTSxDQUFDQyxJQUFQLENBQVksUUFBWixFQUFzQixxR0FBdEI7QUFBOEg7O0FBRjVGLEtBQXpCLENBQVA7QUFHVixHQVJNOztBQVNWLE1BQUlDLE9BQUosR0FBYztBQUFDLFdBQU9DLG9EQUFNLENBQUNELE9BQWQ7QUFBdUI7O0FBVDVCLENBQWQ7O0FBWUFmLEtBQUssQ0FBQ2lCLHVCQUFOLEdBQWdDLFlBQVc7QUFDdkMsU0FBT0Msa0RBQVMsQ0FBQ0MsT0FBVixDQUFrQixhQUFsQixLQUFv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QTJDQyxZQUEzQyxFQUF5RGhELFFBQXpELEVBQW1FbUQsTUFBTSxDQUFDQyxNQUFQLENBQWMxRyxPQUFkLEVBQXVCO0FBQUN1RyxRQUFJLEVBQUU7QUFBUCxHQUF2QixDQUFuRSxDQVI1RDtBQVNaSSxZQUFVLEVBQUdQLE1BQUQsSUFBWTtBQUNwQixRQUFJLE9BQU9BLE1BQVAsS0FBbUIsUUFBdkIsRUFBaUMsT0FBT2xJLGdEQUFNLENBQUN3RSxHQUFQLENBQVcsZUFBWCxFQUE0QixvRUFBNUIsQ0FBUDtBQUNqQyxXQUFPTyxpREFBTyxDQUFDMEQsVUFBUixDQUFtQlAsTUFBbkIsQ0FBUDtBQUNIO0FBWlcsQ0FBaEI7QUFlQUssTUFBTSxDQUFDRyxNQUFQLENBQWN2SixLQUFkO0FBQ0FvSixNQUFNLENBQUNHLE1BQVAsQ0FBY3ZKLEtBQUssQ0FBQzRJLE9BQXBCO0FBQ0FRLE1BQU0sQ0FBQ0csTUFBUCxDQUFjdkosS0FBSyxDQUFDNkksTUFBcEI7QUFDQU8sTUFBTSxDQUFDRyxNQUFQLENBQWN2SixLQUFLLENBQUM0RixPQUFwQjtBQUVlNUYsb0VBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFdlYnBhY2tNb2R1bGVzIGZyb20gXCIuL3dlYnBhY2ttb2R1bGVzXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFBsdWdpbk1hbmFnZXIgZnJvbSBcIi4vcGx1Z2lubWFuYWdlclwiO1xyXG5pbXBvcnQgVGhlbWVNYW5hZ2VyIGZyb20gXCIuL3RoZW1lbWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuL3BhdGNoZXJcIjtcclxuaW1wb3J0IEVtb3RlcyBmcm9tIFwiLi4vYnVpbHRpbnMvZW1vdGVzL2Vtb3Rlc1wiO1xyXG5cclxuY29uc3QgQmRBcGkgPSB7XHJcbiAgICBnZXQgUmVhY3QoKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdDsgfSxcclxuICAgIGdldCBSZWFjdERPTSgpIHsgcmV0dXJuIERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NOyB9LFxyXG4gICAgZ2V0IFdpbmRvd0NvbmZpZ0ZpbGUoKSB7cmV0dXJuIFwiXCI7fSxcclxuICAgIGdldCBzZXR0aW5ncygpIHtyZXR1cm4gU2V0dGluZ3MuY29sbGVjdGlvbnM7fSxcclxuICAgIGdldCBlbW90ZXMoKSB7cmV0dXJuIG5ldyBQcm94eShFbW90ZXMuRW1vdGVzLCB7XHJcbiAgICAgICAgZ2V0KCkgeyByZXR1cm4gRW1vdGVzLkVtb3Rlc30sXHJcbiAgICAgICAgc2V0KCkgeyBMb2dnZXIud2FybihcIkVtb3Rlc1wiLCBcIkFkZG9uIHBvbGljeSBmb3IgcGx1Z2lucyAjNSBodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3dpa2kvQWRkb24tUG9saWNpZXMjcGx1Z2luc1wiKTt9XHJcbiAgICB9KTt9LFxyXG4gICAgZ2V0IHZlcnNpb24oKSB7cmV0dXJuIENvbmZpZy52ZXJzaW9uO31cclxufTtcclxuXHJcbkJkQXBpLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxufTtcclxuXHJcbkJkQXBpLmdldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXkpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzKClba2V5XTtcclxufTtcclxuXHJcbkJkQXBpLnNldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XHJcbiAgICBjb25zdCBwcmVmcyA9IHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKTtcclxuICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5pbmplY3RDU1MgPSBmdW5jdGlvbiAoaWQsIGNzcykge1xyXG4gICAgRE9NTWFuYWdlci5pbmplY3RTdHlsZShpZCwgY3NzKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS5jbGVhckNTUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTdHlsZShpZCk7XHJcbn07XHJcblxyXG4vL0luamVjdCBDU1MgdG8gZG9jdW1lbnQgaGVhZFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG4vL2NzcyA9IGN1c3RvbSBjc3NcclxuQmRBcGkubGlua0pTID0gZnVuY3Rpb24gKGlkLCB1cmwpIHtcclxuICAgIHJldHVybiBET01NYW5hZ2VyLmluamVjdFNjcmlwdChpZCwgdXJsKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS51bmxpbmtKUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTY3JpcHQoaWQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgbW9kYWwuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIGEgc3RyaW5nIG9mIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgbW9kYWxcclxuICovXHJcbkJkQXBpLmFsZXJ0ID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICBNb2RhbHMuYWxlcnQodGl0bGUsIGNvbnRlbnQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggb3B0aW9uYWwgY29uZmlybSBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7KHN0cmluZ3xSZWFjdEVsZW1lbnR8QXJyYXk8c3RyaW5nfFJlYWN0RWxlbWVudD4pfSBjaGlsZHJlbiAtIGEgc2luZ2xlIG9yIG1peGVkIGFycmF5IG9mIHJlYWN0IGVsZW1lbnRzIGFuZCBzdHJpbmdzLiBFdmVyeXRoaW5nIGlzIHdyYXBwZWQgaW4gRGlzY29yZCdzIGBUZXh0RWxlbWVudGAgY29tcG9uZW50IHNvIHN0cmluZ3Mgd2lsbCBzaG93IGFuZCByZW5kZXIgcHJvcGVybHkuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbW9kYWxcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5kYW5nZXI9ZmFsc2VdIC0gd2hldGhlciB0aGUgbWFpbiBidXR0b24gc2hvdWxkIGJlIHJlZCBvciBub3RcclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNvbmZpcm1UZXh0PU9rYXldIC0gdGV4dCBmb3IgdGhlIGNvbmZpcm1hdGlvbi9zdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jYW5jZWxUZXh0PUNhbmNlbF0gLSB0ZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKiBAcGFyYW0ge2NhbGxhYmxlfSBbb3B0aW9ucy5vbkNvbmZpcm09Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBzdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ2FuY2VsPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKi9cclxuQmRBcGkuc2hvd0NvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRpdGxlLCBjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgc3RyaW5nIHRvIHNob3cgaW4gdGhlIHRvYXN0LlxyXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudHlwZT1cIlwiXSBDaGFuZ2VzIHRoZSB0eXBlIG9mIHRoZSB0b2FzdCBzdHlsaXN0aWNhbGx5IGFuZCBzZW1hbnRpY2FsbHkuIENob2ljZXM6IFwiXCIsIFwiaW5mb1wiLCBcInN1Y2Nlc3NcIiwgXCJkYW5nZXJcIi9cImVycm9yXCIsIFwid2FybmluZ1wiL1wid2FyblwiLiBEZWZhdWx0OiBcIlwiXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWNvbj10cnVlXSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gc2hvdWxkIHNob3cgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZS4gQSB0b2FzdCB3aXRob3V0IHR5cGUgd2lsbCBhbHdheXMgaGF2ZSBubyBpY29uLiBEZWZhdWx0OiB0cnVlXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVNob3c9ZmFsc2VdIFdoZXRoZXIgdG8gZm9yY2Ugc2hvd2luZyB0aGUgdG9hc3QgYW5kIGlnbm9yZSB0aGUgYmQgc2V0dGluZ1xyXG4gKi9cclxuQmRBcGkuc2hvd1RvYXN0ID0gZnVuY3Rpb24oY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBUb2FzdHMuc2hvdyhjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlID0gZnVuY3Rpb24oZmlsdGVyKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKGZpbHRlcik7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZEFsbE1vZHVsZXMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyLCBmYWxzZSk7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvcHMgPSBmdW5jdGlvbiguLi5wcm9wcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoLi4ucHJvcHMpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvdG90eXBlcyA9IGZ1bmN0aW9uKC4uLnByb3Rvcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyguLi5wcm90b3MpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShuYW1lKTtcclxufTtcclxuXHJcbi8vIEdldHMgcmVhY3QgaW5zdGFuY2VcclxuQmRBcGkuZ2V0SW50ZXJuYWxJbnN0YW5jZSA9IGZ1bmN0aW9uKG5vZGUpIHtcclxuICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiB3aW5kb3cualF1ZXJ5KSAmJiAhKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgalF1ZXJ5KSBub2RlID0gbm9kZVswXTtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxufTtcclxuXHJcbi8vIEdldHMgZGF0YVxyXG5CZEFwaS5sb2FkRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG5CZEFwaS5nZXREYXRhID0gQmRBcGkubG9hZERhdGE7XHJcblxyXG4vLyBTZXRzIGRhdGFcclxuQmRBcGkuc2F2ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0UGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXksIGRhdGEpO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0RGF0YSA9IEJkQXBpLnNhdmVEYXRhO1xyXG5cclxuLy8gRGVsZXRlcyBkYXRhXHJcbkJkQXBpLmRlbGV0ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZGVsZXRlUGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpO1xyXG59O1xyXG5cclxuLy8gUGF0Y2hlcyBvdGhlciBmdW5jdGlvbnNcclxuLy8gQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbi8vICAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlLCBzaWxlbnQgPSBmYWxzZSwgZm9yY2UgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4vLyAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBvcHRpb25zLmRpc3BsYXlOYW1lIHx8IHdoYXQuZGlzcGxheU5hbWUgfHwgd2hhdC5uYW1lIHx8IHdoYXQuY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4vLyAgICAgaWYgKCFzaWxlbnQpIGNvbnNvbGUubG9nKFwicGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4vLyAgICAgaWYgKCF3aGF0W21ldGhvZE5hbWVdKSB7XHJcbi8vICAgICAgICAgaWYgKGZvcmNlKSB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7fTtcclxuLy8gICAgICAgICBlbHNlIHJldHVybiBjb25zb2xlLmVycm9yKG1ldGhvZE5hbWUsIFwiZG9lcyBub3QgZXhpc3QgZm9yXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbi8vICAgICB9XHJcbi8vICAgICBjb25zdCBvcmlnTWV0aG9kID0gd2hhdFttZXRob2ROYW1lXTtcclxuLy8gICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcclxuLy8gICAgICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJ1bnBhdGNoXCIsIG1ldGhvZE5hbWUsIFwib2ZcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuLy8gICAgICAgICB3aGF0W21ldGhvZE5hbWVdID0gb3JpZ01ldGhvZDtcclxuLy8gICAgIH07XHJcbi8vICAgICB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XHJcbi8vICAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuLy8gICAgICAgICAgICAgdGhpc09iamVjdDogdGhpcyxcclxuLy8gICAgICAgICAgICAgbWV0aG9kQXJndW1lbnRzOiBhcmd1bWVudHMsXHJcbi8vICAgICAgICAgICAgIGNhbmNlbFBhdGNoOiBjYW5jZWwsXHJcbi8vICAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kOiBvcmlnTWV0aG9kLFxyXG4vLyAgICAgICAgICAgICBjYWxsT3JpZ2luYWxNZXRob2Q6ICgpID0+IGRhdGEucmV0dXJuVmFsdWUgPSBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbi8vICAgICAgICAgfTtcclxuLy8gICAgICAgICBpZiAoaW5zdGVhZCkge1xyXG4vLyAgICAgICAgICAgICBjb25zdCB0ZW1wUmV0ID0gVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGluc3RlYWQsIFwiYGluc3RlYWRgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgICAgIGlmICh0ZW1wUmV0ICE9PSB1bmRlZmluZWQpIGRhdGEucmV0dXJuVmFsdWUgPSB0ZW1wUmV0O1xyXG4vLyAgICAgICAgIH1cclxuLy8gICAgICAgICBlbHNlIHtcclxuLy8gICAgICAgICAgICAgaWYgKGJlZm9yZSkgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGJlZm9yZSwgXCJgYmVmb3JlYCBjYWxsYmFjayBvZiBcIiArIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUpKGRhdGEpO1xyXG4vLyAgICAgICAgICAgICBkYXRhLmNhbGxPcmlnaW5hbE1ldGhvZCgpO1xyXG4vLyAgICAgICAgICAgICBpZiAoYWZ0ZXIpIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhhZnRlciwgXCJgYWZ0ZXJgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIGlmIChvbmNlKSBjYW5jZWwoKTtcclxuLy8gICAgICAgICByZXR1cm4gZGF0YS5yZXR1cm5WYWx1ZTtcclxuLy8gICAgIH07XHJcbi8vICAgICB3aGF0W21ldGhvZE5hbWVdLl9fbW9ua2V5UGF0Y2hlZCA9IHRydWU7XHJcbi8vICAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0uX19vcmlnaW5hbE1ldGhvZCkgd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kID0gb3JpZ01ldGhvZDtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUgPSBcInBhdGNoZWQgXCIgKyAod2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSB8fCBtZXRob2ROYW1lKTtcclxuLy8gICAgIHJldHVybiBjYW5jZWw7XHJcbi8vIH07XHJcbkJkQXBpLm1vbmtleVBhdGNoID0gZnVuY3Rpb24od2hhdCwgbWV0aG9kTmFtZSwgb3B0aW9ucykge1xyXG4gICAgY29uc3Qge2JlZm9yZSwgYWZ0ZXIsIGluc3RlYWQsIG9uY2UgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgcGF0Y2hUeXBlID0gYmVmb3JlID8gXCJiZWZvcmVcIiA6IGFmdGVyID8gXCJhZnRlclwiIDogaW5zdGVhZCA/IFwiaW5zdGVhZFwiIDogXCJcIjtcclxuICAgIGlmICghcGF0Y2hUeXBlKSByZXR1cm4gTG9nZ2VyLmVycihcIkJkQXBpXCIsIFwiTXVzdCBwcm92aWRlIG9uZSBvZjogYWZ0ZXIsIGJlZm9yZSwgaW5zdGVhZFwiKTtcclxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gd2hhdFttZXRob2ROYW1lXTtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdpbmFsTWV0aG9kLFxyXG4gICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5vcmlnaW5hbE1ldGhvZC5hcHBseShkYXRhLnRoaXNPYmplY3QsIGRhdGEubWV0aG9kQXJndW1lbnRzKVxyXG4gICAgfTtcclxuICAgIGRhdGEuY2FuY2VsUGF0Y2ggPSBQYXRjaGVyW3BhdGNoVHlwZV0oXCJCZEFwaVwiLCB3aGF0LCBtZXRob2ROYW1lLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICBkYXRhLnRoaXNPYmplY3QgPSB0aGlzT2JqZWN0O1xyXG4gICAgICAgIGRhdGEubWV0aG9kQXJndW1lbnRzID0gYXJncztcclxuICAgICAgICBkYXRhLnJldHVyblZhbHVlID0gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgUmVmbGVjdC5hcHBseShvcHRpb25zW3BhdGNoVHlwZV0sIG51bGwsIFtkYXRhXSk7XHJcbiAgICAgICAgICAgIGlmIChvbmNlKSBkYXRhLmNhbmNlbFBhdGNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gTG9nZ2VyLmVycihcIm1vbmtleVBhdGNoXCIsIGBFcnJvciBpbiB0aGUgJHtwYXRjaFR5cGV9IG9mICR7bWV0aG9kTmFtZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufTtcclxuLy8gRXZlbnQgd2hlbiBlbGVtZW50IGlzIHJlbW92ZWRcclxuQmRBcGkub25SZW1vdmVkID0gZnVuY3Rpb24obm9kZSwgY2FsbGJhY2spIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMub25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKTtcclxufTtcclxuXHJcbi8vIFdyYXBzIGZ1bmN0aW9uIGluIHRyeS4uY2F0Y2hcclxuQmRBcGkuc3VwcHJlc3NFcnJvcnMgPSBmdW5jdGlvbihtZXRob2QsIG1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMobWV0aG9kLCBtZXNzYWdlKTtcclxufTtcclxuXHJcbi8vIFRlc3RzIGZvciB2YWxpZCBKU09OXHJcbkJkQXBpLnRlc3RKU09OID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihkYXRhKTtcclxufTtcclxuXHJcbi8vR2V0IGFub3RoZXIgcGx1Z2luXHJcbi8vbmFtZSA9IG5hbWUgb2YgcGx1Z2luXHJcbkJkQXBpLmdldFBsdWdpbiA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiZ2V0UGx1Z2luIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmFkZG9uTGlzdC5maW5kKGEgPT4gYS5uYW1lID09IG5hbWUpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNQbHVnaW5FbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzUGx1Z2luRW5hYmxlZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgbWFrZSB1c2Ugb2YgdGhlIGFkZG9uIGFwaSAoQmRBcGkuUGx1Z2lucylcIik7XHJcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmdldFBsdWdpbihuYW1lKTtcclxuICAgIGlmICghcGx1Z2luKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gUGx1Z2luTWFuYWdlci5pc0VuYWJsZWQocGx1Z2luLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzVGhlbWVFbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzVGhlbWVFbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5UaGVtZXMpXCIpO1xyXG4gICAgY29uc3QgdGhlbWUgPSBUaGVtZU1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbiAgICBpZiAoIXRoZW1lKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gVGhlbWVNYW5hZ2VyLmlzRW5hYmxlZCh0aGVtZS5pZCk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1NldHRpbmdFbmFibGVkID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbn07XHJcblxyXG5CZEFwaS5lbmFibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdHJ1ZSk7XHJcbn07XHJcblxyXG5CZEFwaS5kaXNhYmxlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIGZhbHNlKTtcclxufTtcclxuXHJcbkJkQXBpLnRvZ2dsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCAhU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmdldEJERGF0YSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRCRERhdGEoa2V5KTtcclxufTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zZXRCRERhdGEgPSBmdW5jdGlvbihrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0QkREYXRhKGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5jb25zdCBtYWtlQWRkb25BUEkgPSAobWFuYWdlcikgPT4gbmV3IGNsYXNzIEFkZG9uQVBJIHtcclxuICAgIGdldCBmb2xkZXIoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25Gb2xkZXI7fVxyXG4gICAgaXNFbmFibGVkKGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuaXNFbmFibGVkKGlkT3JGaWxlKTt9XHJcbiAgICBlbmFibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLmRpc2FibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHRvZ2dsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci50b2dnbGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHJlbG9hZChpZE9yRmlsZU9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO31cclxuICAgIGdldChpZE9yRmlsZSkge3JldHVybiBtYW5hZ2VyLmdldEFkZG9uKGlkT3JGaWxlKTt9XHJcbiAgICBnZXRBbGwoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25MaXN0Lm1hcChhID0+IG1hbmFnZXIuZ2V0QWRkb24oYS5pZCkpO31cclxufTtcclxuXHJcbkJkQXBpLlBsdWdpbnMgPSBtYWtlQWRkb25BUEkoUGx1Z2luTWFuYWdlcik7XHJcbkJkQXBpLlRoZW1lcyA9IG1ha2VBZGRvbkFQSShUaGVtZU1hbmFnZXIpO1xyXG5CZEFwaS5QYXRjaGVyID0ge1xyXG4gICAgcGF0Y2g6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YoY2FsbGVyKSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwiUGFyYW1ldGVyIDAgb2YgcGF0Y2ggbXVzdCBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNhbGxlclwiKTtcclxuICAgICAgICBpZiAob3B0aW9ucy50eXBlICE9PSBcImJlZm9yZVwiICYmIG9wdGlvbnMudHlwZSAhPT0gXCJpbnN0ZWFkXCIgJiYgb3B0aW9ucy50eXBlICE9PSBcImFmdGVyXCIpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGkuUGF0Y2hlclwiLCBcIm9wdGlvbnMudHlwZSBtdXN0IGJlIG9uZSBvZjogYmVmb3JlLCBpbnN0ZWFkLCBhZnRlclwiKTtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci5wdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZTogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJiZWZvcmVcIn0pKSxcclxuICAgIGluc3RlYWQ6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4gQmRBcGkuUGF0Y2hlci5wYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiaW5zdGVhZFwifSkpLFxyXG4gICAgYWZ0ZXI6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4gQmRBcGkuUGF0Y2hlci5wYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiYWZ0ZXJcIn0pKSxcclxuICAgIHVucGF0Y2hBbGw6IChjYWxsZXIpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mKGNhbGxlcikgIT09IFwic3RyaW5nXCIpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGkuUGF0Y2hlclwiLCBcIlBhcmFtZXRlciAwIG9mIHVucGF0Y2hBbGwgbXVzdCBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNhbGxlclwiKTtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci51bnBhdGNoQWxsKGNhbGxlcik7XHJcbiAgICB9XHJcbn07XHJcblxyXG5PYmplY3QuZnJlZXplKEJkQXBpKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5QbHVnaW5zKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5UaGVtZXMpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlBhdGNoZXIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmRBcGk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); /***/ }), @@ -758,6 +770,30 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./src/ui/emoteicon.jsx": +/*!******************************!*\ + !*** ./src/ui/emoteicon.jsx ***! + \******************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return EmoteIcon; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../builtins/emotes/emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\nconst {\n openContextMenu,\n closeContextMenu\n} = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"openContextMenu\");\nconst {\n MenuItem,\n MenuGroup\n} = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].find(m => m.MenuRadioItem && !m.default);\nconst ContextMenu = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"default\", \"MenuStyle\").default;\nconst {\n ComponentDispatch\n} = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"ComponentDispatch\");\nclass EmoteIcon extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"emote-container\",\n onClick: this.handleOnClick.bind(this),\n onContextMenu: this.handleOnContextMenu.bind(this)\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n src: this.props.url,\n alt: this.props.emote,\n title: this.props.emote\n }));\n }\n\n handleOnClick() {\n this.insertText(this.props.emote);\n }\n\n handleOnContextMenu(e) {\n openContextMenu(e, () => /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(ContextMenu, {\n navId: \"EmoteContextMenu\",\n onClose: closeContextMenu\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(MenuGroup, null, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(MenuItem, {\n label: _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isFavorite(this.props.emote) ? \"Remove Favorite\" : \"Add Favorite\",\n id: \"favorite\",\n action: this.handlefavorite.bind(this),\n onClose: closeContextMenu\n }))));\n }\n\n handlefavorite() {\n closeContextMenu();\n _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isFavorite(this.props.emote) ? _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeFavorite(this.props.emote) : _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].addFavorite(this.props.emote, this.props.url);\n }\n\n insertText(emote) {\n ComponentDispatch.dispatchToLastSubscribed(\"INSERT_TEXT\", {\n content: emote\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZW1vdGVpY29uLmpzeD83YTYzIl0sIm5hbWVzIjpbIm9wZW5Db250ZXh0TWVudSIsImNsb3NlQ29udGV4dE1lbnUiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJNZW51SXRlbSIsIk1lbnVHcm91cCIsImZpbmQiLCJtIiwiTWVudVJhZGlvSXRlbSIsImRlZmF1bHQiLCJDb250ZXh0TWVudSIsIkNvbXBvbmVudERpc3BhdGNoIiwiRW1vdGVJY29uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJoYW5kbGVPbkNsaWNrIiwiYmluZCIsImhhbmRsZU9uQ29udGV4dE1lbnUiLCJwcm9wcyIsInVybCIsImVtb3RlIiwiaW5zZXJ0VGV4dCIsImUiLCJFbW90ZU1vZHVsZSIsImlzRmF2b3JpdGUiLCJoYW5kbGVmYXZvcml0ZSIsInJlbW92ZUZhdm9yaXRlIiwiYWRkRmF2b3JpdGUiLCJkaXNwYXRjaFRvTGFzdFN1YnNjcmliZWQiLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxNQUFNO0FBQUNBLGlCQUFEO0FBQWtCQztBQUFsQixJQUFzQ0Msa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixpQkFBMUIsQ0FBNUM7QUFDQSxNQUFNO0FBQUNDLFVBQUQ7QUFBV0M7QUFBWCxJQUF3Qkgsa0VBQWMsQ0FBQ0ksSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLGFBQUYsSUFBbUIsQ0FBQ0QsQ0FBQyxDQUFDRSxPQUEvQyxDQUE5QjtBQUNBLE1BQU1DLFdBQVcsR0FBR1Isa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixTQUExQixFQUFxQyxXQUFyQyxFQUFrRE0sT0FBdEU7QUFDQSxNQUFNO0FBQUNFO0FBQUQsSUFBc0JULGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIsbUJBQTFCLENBQTVCO0FBQ2UsTUFBTVMsU0FBTixTQUF3QkMseURBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFDbkRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDLGlCQUFmO0FBQWlDLGFBQU8sRUFBRSxLQUFLQyxhQUFMLENBQW1CQyxJQUFuQixDQUF3QixJQUF4QixDQUExQztBQUF5RSxtQkFBYSxFQUFFLEtBQUtDLG1CQUFMLENBQXlCRCxJQUF6QixDQUE4QixJQUE5QjtBQUF4RixvQkFDSDtBQUFLLFNBQUcsRUFBRSxLQUFLRSxLQUFMLENBQVdDLEdBQXJCO0FBQTBCLFNBQUcsRUFBRSxLQUFLRCxLQUFMLENBQVdFLEtBQTFDO0FBQWlELFdBQUssRUFBRSxLQUFLRixLQUFMLENBQVdFO0FBQW5FLE1BREcsQ0FBUDtBQUdIOztBQUNETCxlQUFhLEdBQUc7QUFDWixTQUFLTSxVQUFMLENBQWdCLEtBQUtILEtBQUwsQ0FBV0UsS0FBM0I7QUFDSDs7QUFDREgscUJBQW1CLENBQUNLLENBQUQsRUFBSTtBQUNuQnZCLG1CQUFlLENBQUN1QixDQUFELEVBQUksbUJBQU0sd0VBQUMsV0FBRDtBQUFhLFdBQUssRUFBQyxrQkFBbkI7QUFBc0MsYUFBTyxFQUFFdEI7QUFBL0Msb0JBQ3JCLHdFQUFDLFNBQUQscUJBQ0ksd0VBQUMsUUFBRDtBQUFVLFdBQUssRUFBRXVCLCtEQUFXLENBQUNDLFVBQVosQ0FBdUIsS0FBS04sS0FBTCxDQUFXRSxLQUFsQyxJQUEyQyxpQkFBM0MsR0FBK0QsY0FBaEY7QUFBZ0csUUFBRSxFQUFDLFVBQW5HO0FBQThHLFlBQU0sRUFBRSxLQUFLSyxjQUFMLENBQW9CVCxJQUFwQixDQUF5QixJQUF6QixDQUF0SDtBQUFzSixhQUFPLEVBQUVoQjtBQUEvSixNQURKLENBRHFCLENBQVYsQ0FBZjtBQUtIOztBQUNEeUIsZ0JBQWMsR0FBRztBQUNiekIsb0JBQWdCO0FBQ2hCdUIsbUVBQVcsQ0FBQ0MsVUFBWixDQUF1QixLQUFLTixLQUFMLENBQVdFLEtBQWxDLElBQTJDRywrREFBVyxDQUFDRyxjQUFaLENBQTJCLEtBQUtSLEtBQUwsQ0FBV0UsS0FBdEMsQ0FBM0MsR0FBMEZHLCtEQUFXLENBQUNJLFdBQVosQ0FBd0IsS0FBS1QsS0FBTCxDQUFXRSxLQUFuQyxFQUEwQyxLQUFLRixLQUFMLENBQVdDLEdBQXJELENBQTFGO0FBQ0g7O0FBQ0RFLFlBQVUsQ0FBQ0QsS0FBRCxFQUFRO0FBQ2RWLHFCQUFpQixDQUFDa0Isd0JBQWxCLENBQTJDLGFBQTNDLEVBQTBEO0FBQUNDLGFBQU8sRUFBRVQ7QUFBVixLQUExRDtBQUNIOztBQXRCa0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGVpY29uLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFdlYnBhY2tNb2R1bGVzLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IEVtb3RlTW9kdWxlIGZyb20gXCIuLi9idWlsdGlucy9lbW90ZXMvZW1vdGVzXCI7XHJcbmNvbnN0IHtvcGVuQ29udGV4dE1lbnUsIGNsb3NlQ29udGV4dE1lbnV9ID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIm9wZW5Db250ZXh0TWVudVwiKTtcclxuY29uc3Qge01lbnVJdGVtLCBNZW51R3JvdXB9ID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0uTWVudVJhZGlvSXRlbSAmJiAhbS5kZWZhdWx0KTtcclxuY29uc3QgQ29udGV4dE1lbnUgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGVmYXVsdFwiLCBcIk1lbnVTdHlsZVwiKS5kZWZhdWx0O1xyXG5jb25zdCB7Q29tcG9uZW50RGlzcGF0Y2h9ID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkNvbXBvbmVudERpc3BhdGNoXCIpO1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbW90ZUljb24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImVtb3RlLWNvbnRhaW5lclwiIG9uQ2xpY2s9e3RoaXMuaGFuZGxlT25DbGljay5iaW5kKHRoaXMpfSBvbkNvbnRleHRNZW51PXt0aGlzLmhhbmRsZU9uQ29udGV4dE1lbnUuYmluZCh0aGlzKX0+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPXt0aGlzLnByb3BzLnVybH0gYWx0PXt0aGlzLnByb3BzLmVtb3RlfSB0aXRsZT17dGhpcy5wcm9wcy5lbW90ZX0vPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgaGFuZGxlT25DbGljaygpIHtcclxuICAgICAgICB0aGlzLmluc2VydFRleHQodGhpcy5wcm9wcy5lbW90ZSk7XHJcbiAgICB9XHJcbiAgICBoYW5kbGVPbkNvbnRleHRNZW51KGUpIHtcclxuICAgICAgICBvcGVuQ29udGV4dE1lbnUoZSwgKCkgPT4gPENvbnRleHRNZW51IG5hdklkPVwiRW1vdGVDb250ZXh0TWVudVwiIG9uQ2xvc2U9e2Nsb3NlQ29udGV4dE1lbnV9PlxyXG4gICAgICAgICAgICA8TWVudUdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIGxhYmVsPXtFbW90ZU1vZHVsZS5pc0Zhdm9yaXRlKHRoaXMucHJvcHMuZW1vdGUpID8gXCJSZW1vdmUgRmF2b3JpdGVcIiA6IFwiQWRkIEZhdm9yaXRlXCJ9IGlkPVwiZmF2b3JpdGVcIiBhY3Rpb249e3RoaXMuaGFuZGxlZmF2b3JpdGUuYmluZCh0aGlzKX0gb25DbG9zZT17Y2xvc2VDb250ZXh0TWVudX0vPlxyXG4gICAgICAgICAgICA8L01lbnVHcm91cD5cclxuICAgICAgICA8L0NvbnRleHRNZW51Pik7XHJcbiAgICB9XHJcbiAgICBoYW5kbGVmYXZvcml0ZSgpIHtcclxuICAgICAgICBjbG9zZUNvbnRleHRNZW51KCk7XHJcbiAgICAgICAgRW1vdGVNb2R1bGUuaXNGYXZvcml0ZSh0aGlzLnByb3BzLmVtb3RlKSA/IEVtb3RlTW9kdWxlLnJlbW92ZUZhdm9yaXRlKHRoaXMucHJvcHMuZW1vdGUpIDogRW1vdGVNb2R1bGUuYWRkRmF2b3JpdGUodGhpcy5wcm9wcy5lbW90ZSwgdGhpcy5wcm9wcy51cmwpO1xyXG4gICAgfVxyXG4gICAgaW5zZXJ0VGV4dChlbW90ZSkge1xyXG4gICAgICAgIENvbXBvbmVudERpc3BhdGNoLmRpc3BhdGNoVG9MYXN0U3Vic2NyaWJlZChcIklOU0VSVF9URVhUXCIsIHtjb250ZW50OiBlbW90ZX0pXHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/emoteicon.jsx\n"); + +/***/ }), + +/***/ "./src/ui/emotemenucard.jsx": +/*!**********************************!*\ + !*** ./src/ui/emotemenucard.jsx ***! + \**********************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return EmoteMenuCard; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst Scroller = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"VerticalScroller\");\nclass EmoteMenuCard extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-qem-${this.props.type}-container`\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Scroller, {\n className: \"bd-em-scroller\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"emote-menu-inner\"\n }, this.props.children)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZW1vdGVtZW51Y2FyZC5qc3g/NWUzNyJdLCJuYW1lcyI6WyJTY3JvbGxlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIkVtb3RlTWVudUNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInByb3BzIiwidHlwZSIsImNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLE1BQU1BLFFBQVEsR0FBR0Msa0VBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0Msa0JBQWhDLENBQWpCO0FBQ2UsTUFBTUMsYUFBTixTQUE0QkMseURBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFHLFVBQVMsS0FBS0MsS0FBTCxDQUFXQyxJQUFLO0FBQTFDLG9CQUNILHdFQUFDLFFBQUQ7QUFBVSxlQUFTLEVBQUM7QUFBcEIsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLLEtBQUtELEtBQUwsQ0FBV0UsUUFEaEIsQ0FESixDQURHLENBQVA7QUFPSDs7QUFUc0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGVtZW51Y2FyZC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuY29uc3QgU2Nyb2xsZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVmVydGljYWxTY3JvbGxlclwiKTtcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1vdGVNZW51Q2FyZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmQtcWVtLSR7dGhpcy5wcm9wcy50eXBlfS1jb250YWluZXJgfT5cclxuICAgICAgICAgICAgPFNjcm9sbGVyIGNsYXNzTmFtZT1cImJkLWVtLXNjcm9sbGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtb3RlLW1lbnUtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L1Njcm9sbGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/emotemenucard.jsx\n"); + +/***/ }), + /***/ "./src/ui/errorboundary.jsx": /*!**********************************!*\ !*** ./src/ui/errorboundary.jsx ***! diff --git a/src/builtins/emotes/emotemenu.js b/src/builtins/emotes/emotemenu.js index 2ba552e3..92939d72 100644 --- a/src/builtins/emotes/emotemenu.js +++ b/src/builtins/emotes/emotemenu.js @@ -1,45 +1,7 @@ import Builtin from "../../structs/builtin"; -import {Utilities, Events, DOM} from "modules"; -import Modals from "../../ui/modals"; - -import EmoteModule from "./emotes"; - -const headerHTML = `
- - -
`; - -const twitchEmoteHTML = `
-
-
-
- -
-
-
-
`; - -const favoritesHTML = `
-
-
-
- -
-
-
-
`; - -const makeEmote = (emote, url, options = {}) => { - const {onContextMenu, onClick} = options; - const emoteContainer = DOM.createElement(`
- ${emote} -
`); - if (onContextMenu) emoteContainer.addEventListener("contextmenu", onContextMenu); - emoteContainer.addEventListener("click", onClick); - return emoteContainer; -}; - +import {Utilities, WebpackModules, React} from "modules"; +import Tabs from "./tabs"; +const EmojiPicker = WebpackModules.find(m => m.type && m.type.displayName == "ExpressionPicker"); export default new class EmoteMenu extends Builtin { get name() {return "EmoteMenu";} get collection() {return "emotes";} @@ -50,151 +12,37 @@ export default new class EmoteMenu extends Builtin { constructor() { super(); - this.lastTab = "bd-qem-emojis"; - - this.qmeHeader = DOM.createElement(headerHTML); - for (const button of this.qmeHeader.getElementsByTagName("button")) button.addEventListener("click", this.switchMenu.bind(this)); - - this.teContainer = DOM.createElement(twitchEmoteHTML); - this.teContainerInner = this.teContainer.querySelector(".emote-menu-inner"); - - this.faContainer = DOM.createElement(favoritesHTML); - this.faContainerInner = this.faContainer.querySelector(".emote-menu-inner"); - - this.observer = new MutationObserver(mutations => {for (const mutation of mutations) this.observe(mutation);}); - this.enableHideEmojis = this.enableHideEmojis.bind(this); - this.disableHideEmojis = this.disableHideEmojis.bind(this); - this.updateTwitchEmotes = this.updateTwitchEmotes.bind(this); - } - - async enabled() { - // Temporary measure, so not using Strings/translation - return Modals.alert("Emote Menu Broken", "Emote Menu is currently broken, it is recommended to disable this until it is fixed."); - // this.log("Starting to observe"); - // this.observer.observe(document.getElementById("app-mount"), { - // childList: true, - // subtree: true - // }); - // this.hideEmojiCancel = this.registerSetting(this.hideEmojisID, this.enableHideEmojis, this.disableHideEmojis); - // if (this.hideEmojis) this.enableHideEmojis(); - // if (EmoteModule.emotesLoaded) this.updateTwitchEmotes(); - // this.updateFavorites(); - // Events.on("emotes-loaded", this.updateTwitchEmotes); } + enabled() { + this.before(EmojiPicker, "type", (_, [args], ret) => { + if(args.expressionPickerView == "emoji" && this.hideEmojis) args.expressionPickerView = "gif"; + }); + this.after(EmojiPicker, "type", (_, [args], ret) => { + const head = Utilities.getNestedProp(ret, "props.children.props.children.1.props.children.0.props.children.props.children"); + const body = Utilities.getNestedProp(ret, "props.children.props.children.1.props.children"); + if(!head || !body) return ret; + const currentTab = Tabs.find(e => e.id === selected); + const selected = args.expressionPickerView; + let tabProps = head[0].props; + head.push( + ...Tabs.map(e => React.createElement("div", { + id: e.id+"-tab", + role: "tab", + "aria-selected": selected == e.id, + className: tabProps.className, + }, React.createElement(tabProps.children.type, { + viewType: e.id, + isActive: selected == e.id, + setActiveView: tabProps.children.props.setActiveView + }, e.label)) + )); + if(currentTab) body[2] = currentTab.element(); + if(this.hideEmojis) head.splice(head.findIndex(e=>e.props.id == "emoji-picker-tab"), 1); + }) + } disabled() { - Events.off("emotes-loaded", this.updateTwitchEmotes); - this.observer.disconnect(); - this.disableHideEmojis(); - if (this.hideEmojiCancel) this.hideEmojiCancel(); - } - - enableHideEmojis() { - const picker = document.querySelector(".emojiPicker-3m1S-j"); - if (picker) picker.classList.add("bd-qme-hidden"); - } - - disableHideEmojis() { - const picker = document.querySelector(".emojiPicker-3m1S-j"); - if (picker) picker.classList.remove("bd-qme-hidden"); - } - - insertEmote(emote) { - const ta = Utilities.getTextArea(); - Utilities.insertText(ta[0], ta.val().slice(-1) == " " ? ta.val() + emote : ta.val() + " " + emote); - } - - favContext(e) { - e.stopPropagation(); - const em = e.target.closest(".emote-container").children[0]; - const menu = $(`
Remove
`); - menu.css({ - top: e.pageY - $("#bd-qem-favourite-container").offset().top, - left: e.pageX - $("#bd-qem-favourite-container").offset().left - }); - $(em).parent().append(menu); - menu.on("click", (event) => { - event.preventDefault(); - event.stopPropagation(); - $(em).remove(); - EmoteModule.removeFavorite($(em).attr("title")); - this.updateFavorites(); - $(document).off("mousedown.emotemenu"); - }); - $(document).on("mousedown.emotemenu", function(event) { - if (event.target.id == "removemenu") return; - $("#removemenu").remove(); - $(document).off("mousedown.emotemenu"); - }); - } - - switchMenu(e) { - let id = typeof(e) == "string" ? e : e.target.id; - if (id == "bd-qem-emojis" && this.hideEmojis) id = "bd-qem-favourite"; - const twitch = $("#bd-qem-twitch"); - const fav = $("#bd-qem-favourite"); - const emojis = $("#bd-qem-emojis"); - twitch.removeClass("active"); - fav.removeClass("active"); - emojis.removeClass("active"); - - $(".emojiPicker-3m1S-j").hide(); - $("#bd-qem-favourite-container").hide(); - $("#bd-qem-twitch-container").hide(); - - switch (id) { - case "bd-qem-twitch": - twitch.addClass("active"); - $("#bd-qem-twitch-container").show(); - break; - case "bd-qem-favourite": - fav.addClass("active"); - $("#bd-qem-favourite-container").show(); - break; - case "bd-qem-emojis": - emojis.addClass("active"); - $(".emojiPicker-3m1S-j").show(); - $(".emojiPicker-3m1S-j input").focus(); - break; - } - if (id) this.lastTab = id; - } - - observe(mutation) { - if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) return; - const node = mutation.addedNodes[0]; - // if (!node.classList.contains("popout-2iWAc-") || node.classList.contains("popoutLeft-30WmrD") || !node.getElementsByClassName("emojiPicker-3m1S-j").length) return; - if (!node.classList.contains("layer-v9HyYc") || !node.getElementsByClassName("emojiPicker-3m1S-j").length || node.querySelector(".emojiPicker-3m1S-j").parentElement.classList.contains("animatorLeft-1EQxU0")) return; - - const e = $(node); - if (this.hideEmojis) e.addClass("bd-qme-hidden"); - else e.removeClass("bd-qme-hidden"); - - e.prepend(this.qmeHeader); - e.append(this.teContainer); - e.append(this.faContainer); - - this.switchMenu(this.lastTab); - } - - updateTwitchEmotes() { - while (this.teContainerInner.firstChild) this.teContainerInner.firstChild.remove(); - for (const emote in EmoteModule.getCategory("TwitchGlobal")) { - if (!EmoteModule.getCategory("TwitchGlobal").hasOwnProperty(emote)) continue; - const url = EmoteModule.getUrl("TwitchGlobal", emote); - const emoteElement = makeEmote(emote, url, {onClick: this.insertEmote.bind(this, emote)}); - this.teContainerInner.append(emoteElement); - } - } - - updateFavorites() { - while (this.faContainerInner.firstChild) this.faContainerInner.firstChild.remove(); - for (const emote in EmoteModule.favorites) { - const url = EmoteModule.favorites[emote]; - const emoteElement = makeEmote(emote, url, {onClick: this.insertEmote.bind(this, emote), onContextMenu: this.favContext.bind(this)}); - this.faContainerInner.append(emoteElement); - } - EmoteModule.saveFavorites(); + this.unpatchAll(); } }; \ No newline at end of file diff --git a/src/builtins/emotes/tabs.js b/src/builtins/emotes/tabs.js new file mode 100644 index 00000000..2e35ab9d --- /dev/null +++ b/src/builtins/emotes/tabs.js @@ -0,0 +1,25 @@ +import {React} from "modules"; +import EmoteModule from "./emotes"; +import EmoteMenuCard from "../../ui/emotemenucard"; +import EmoteIcon from "../../ui/emoteicon"; +export default [ + { + id: "twitchEmotes", + label: "Twitch Emotes", + element: () => React.createElement(EmoteMenuCard, { + type: "twitch" + }, Object.keys(EmoteModule.getCategory("TwitchGlobal")).map(emote=> { + const url = EmoteModule.getUrl("TwitchGlobal", emote); + return React.createElement(EmoteIcon, {emote, url}); + })) + }, + { + id: "favoriteEmotes", + label: "Favorite Emotes", + element: () => React.createElement(EmoteMenuCard, { + type: "favourite" + }, Object.entries(EmoteModule.favorites).map(([emote, url]) => { + return React.createElement(EmoteIcon, {emote, url}); + })) + } +] \ No newline at end of file diff --git a/src/modules/pluginapi.js b/src/modules/pluginapi.js index 590d66a9..94a2b6d1 100644 --- a/src/modules/pluginapi.js +++ b/src/modules/pluginapi.js @@ -11,13 +11,17 @@ import ThemeManager from "./thememanager"; import Settings from "./settingsmanager"; import Logger from "./logger"; import Patcher from "./patcher"; +import Emotes from "../builtins/emotes/emotes"; const BdApi = { get React() { return DiscordModules.React; }, get ReactDOM() { return DiscordModules.ReactDOM; }, get WindowConfigFile() {return "";}, get settings() {return Settings.collections;}, - get emotes() {return {};}, + get emotes() {return new Proxy(Emotes.Emotes, { + get() { return Emotes.Emotes}, + set() { Logger.warn("Emotes", "Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins");} + });}, get version() {return Config.version;} }; diff --git a/src/styles/builtins/emotemenu.css b/src/styles/builtins/emotemenu.css index 6bc0ecec..2b79596b 100644 --- a/src/styles/builtins/emotemenu.css +++ b/src/styles/builtins/emotemenu.css @@ -127,4 +127,7 @@ .bd-qme-hidden #bd-qem-emojis { display: none; +} +.bd-em-scroller { + height: 400px; } \ No newline at end of file diff --git a/src/ui/emoteicon.jsx b/src/ui/emoteicon.jsx new file mode 100644 index 00000000..6b6e49fa --- /dev/null +++ b/src/ui/emoteicon.jsx @@ -0,0 +1,30 @@ +import {React, WebpackModules, DiscordModules} from "modules"; +import EmoteModule from "../builtins/emotes/emotes"; +const {openContextMenu, closeContextMenu} = WebpackModules.getByProps("openContextMenu"); +const {MenuItem, MenuGroup} = WebpackModules.find(m => m.MenuRadioItem && !m.default); +const ContextMenu = WebpackModules.getByProps("default", "MenuStyle").default; +const {ComponentDispatch} = WebpackModules.getByProps("ComponentDispatch"); +export default class EmoteIcon extends React.Component { + render() { + return
+ {this.props.emote} +
+ } + handleOnClick() { + this.insertText(this.props.emote); + } + handleOnContextMenu(e) { + openContextMenu(e, () => + + + + ); + } + handlefavorite() { + closeContextMenu(); + EmoteModule.isFavorite(this.props.emote) ? EmoteModule.removeFavorite(this.props.emote) : EmoteModule.addFavorite(this.props.emote, this.props.url); + } + insertText(emote) { + ComponentDispatch.dispatchToLastSubscribed("INSERT_TEXT", {content: emote}) + } +} \ No newline at end of file diff --git a/src/ui/emotemenucard.jsx b/src/ui/emotemenucard.jsx new file mode 100644 index 00000000..a74fb783 --- /dev/null +++ b/src/ui/emotemenucard.jsx @@ -0,0 +1,13 @@ +import {React, WebpackModules} from "modules"; +const Scroller = WebpackModules.getByDisplayName("VerticalScroller"); +export default class EmoteMenuCard extends React.Component { + render() { + return
+ +
+ {this.props.children} +
+
+
+ } +} \ No newline at end of file From ea5f5ca8c6a76df2995be5b1d6d42d416c6771e1 Mon Sep 17 00:00:00 2001 From: Strencher <46447572+Strencher@users.noreply.github.com> Date: Fri, 24 Jul 2020 11:01:09 +0200 Subject: [PATCH 2/4] ooops forgot to update css files. --- dist/style.css | 4 ++++ dist/style.min.css | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dist/style.css b/dist/style.css index 26cb76ec..482c0c27 100644 --- a/dist/style.css +++ b/dist/style.css @@ -419,6 +419,10 @@ body .ace_closeButton:active { display: none; } +.bd-em-scroller { + height: 400px; +} + #emote-container { padding: 10px; } diff --git a/dist/style.min.css b/dist/style.min.css index fed7239b..a0157420 100644 --- a/dist/style.min.css +++ b/dist/style.min.css @@ -1 +1 @@ -#bd-editor-panel{display:flex;flex-direction:column}#bd-editor-controls button{margin:0 5px 0 0;background:0 0;color:#fff;height:26px;font-weight:600;border-radius:3px;display:flex;align-items:center}#bd-editor-controls button:hover{background:rgba(255,255,255,.05)}#bd-editor-controls button svg{fill:#fff}#bd-editor-controls button:last-of-type{margin-right:0}#bd-editor-controls{display:flex;align-items:center;justify-content:space-between;background:#272822;color:#fff;border:0;box-shadow:0 1px 0 0 #2f3129 inset;padding:5px}.editor-wrapper{display:flex}.ace_editor{line-height:normal;font-family:Consolas,monospace;box-sizing:border-box;height:calc(100vh - 250px);font-size:14px;width:100%}.bd-monokai .editor .ace_gutter{background:#2f3136}.bd-monokai .ace_editor{background:#292b2f}.bd-monokai #bd-editor-controls{background:#202225}.theme-light #bd-editor-controls{background:#e8e8e8;border:1px solid #fff;border-top:1px solid #adadad;box-shadow:inset 0 1px 0 0 #fff}.controls-section{display:flex;align-items:center}.controls-section .checkbox-inner{width:14px;height:14px}.controls-section .checkbox-inner .checkbox:checked+span::after{left:2px;top:-2px}.controls-section .checkbox-label{font-size:14px}#ace_settingsmenu_container{background:rgba(0,0,0,.7)!important}body #ace_settingsmenu{padding-top:35px}body .ace_closeButton{position:absolute;top:8px;right:12px;z-index:10000;padding:0;cursor:pointer;background:0 0;border:0}body .ace_closeButton::before{content:"✖";color:#36393f}body .ace_closeButton:active{transform:translateY(2px)}#bd-editor-controls .help-text{margin-top:8px;margin-bottom:3px;font-size:14px}#bd-editor-controls .help-text .inline{background:#2f3129;padding:.2em;margin:-.2em 0;border-radius:3px}.bd-dark #bd-qem-favourite-container,.bd-dark #bd-qem-twitch-container{background-color:#353535}.bd-dark #bd-qem{border-bottom:1px solid #464646;background:#353535}.bd-dark #bd-qem button{background:#353535;border-left:1px solid #242424;box-shadow:#424242 1px 0 0 0;color:#fff}.bd-dark #bd-qem button.active{background-color:#292929}.bd-dark #bd-qem button:hover{background-color:#303030}.bd-dark .emojiPicker-3m1S-j{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .category-2U57w6{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_{background-color:#2b2b2b}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input{color:#fff}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input::-webkit-input-placeholder{color:#fff}.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S{background-color:rgba(123,123,123,.37)}.bd-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ{background-color:rgba(62,62,62,.65)}.bd-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc{background:#353535;border-color:#202020}.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track-piece,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track-piece,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece{background-color:#303030!important;border-color:#303030!important}.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-thumb,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-thumb,.bd-dark .emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb{border-color:#202020!important;background-color:#202020!important}.bd-dark .theme-light .slide-2pHaq5{background:#36393f}.bd-dark .theme-dark .action-1lSjCi,.bd-dark .theme-light .action-1lSjCi{background:#2f3136}.bd-dark .theme-dark .or-3THJsp,.bd-dark .theme-light .or-3THJsp{background:#2f3136;order:2;height:56px;width:56px;top:103px;line-height:56px;left:calc(50% - 29px);border-radius:50%;border:2px solid #484b52}.bd-dark .create-3jownz{order:1}.bd-dark .join-33Tr-7{order:3}.bd-dark .theme-dark .actionIcon-2IISM_,.bd-dark .theme-light .actionIcon-2IISM_{filter:grayscale(100%) brightness(60%)}.bd-dark .theme-light .footer-2yfCgX{background:#2f3136}.bd-dark .regionSelectModal-12e-57{background:#36393f}.bd-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3{background:#2f3136;border:2px solid #484b52}.bd-dark~div #ace_settingsmenu{color:#f6f6f7;background:#36393f;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2)}.bd-dark~div #ace_settingsmenu select,.bd-dark~div #ace_settingsmenu input[type=text]{color:#f6f6f7;background:#2f3136;border:1px solid #484b52}.bd-dark~div .ace_closeButton::before{color:#f6f6f7}#removemenu{width:auto;background:#505050;z-index:999999;box-shadow:0 0 2px #000;padding:2px;left:25px;display:block;cursor:pointer;color:#fff;position:fixed}#removemenu ul a{text-decoration:none;color:#fff;padding:3px}.emotewrapper{position:relative;display:inline-flex;object-fit:contain;margin:-.1em .05em -.2em .1em;vertical-align:top}.emotewrapper.jumboable{margin-bottom:0;margin-top:.2em;vertical-align:-.3em}.emote{height:1.45em}.emote.jumboable{height:2rem}.fav{display:none;position:absolute;width:15px;height:15px;right:-7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII=);border:0;background-size:100% 100%;background-repeat:no-repeat;background-color:#303030;border-radius:5px;top:-7px;cursor:pointer}.fav.active{background-color:#ff0}.emotewrapper:hover .fav{display:block}.emojiPicker-3m1S-j{box-shadow:none;border-top:none;border-radius:0 0 5px 5px}#bd-qem{border-radius:5px 5px 0 0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1);height:30px;display:flex;flex-direction:row;padding-right:1px}#bd-qem button{border-left:1px solid #efefef;background:0 0;box-shadow:#cecece 1px 0 0 0;flex-grow:1}#bd-qem button:hover{background:#ececec}#bd-qem-twitch{border-radius:5px 0 0 0;order:2}#bd-qem-emojis{border-radius:0 5px 0 0;order:3}#bd-qem-favourite{order:3}#bd-qem button.active{background-color:#e2e2e2}#bd-qem-twitch-container,#bd-qem-favourite-container{width:346px;height:329px;background-color:#fff;border-radius:0 0 5px 5px}#bd-qem-twitch-container .scroller-wrap,#bd-qem-favourite-container .scroller-wrap{height:100%}.emote-menu-inner{padding:5px 0 0 15px}.bd-qme-hidden #bd-qem-emojis{display:none}#emote-container{padding:10px}.emote-container{display:inline-block;padding:2px;border-radius:5px;width:30px;height:30px;position:relative}.emote-icon{max-width:100%;max-height:100%;position:absolute;margin:auto;top:0;right:0;bottom:0;left:0;cursor:pointer}.emote.stop-animation{animation:none}.emote-container:hover{background:rgba(123,123,123,.37)}.emoteflip,.emotespinflip{transform:scaleX(-1)}.emotespin{animation:1s emote-spin infinite linear}.emote1spin{animation:1s emote-spin-reverse infinite linear}.emotespin2{animation:.5s emote-spin infinite linear}.emote2spin{animation:.5s emote-spin-reverse infinite linear}.emotespin3{animation:.2s emote-spin infinite linear}.emote3spin{animation:.2s emote-spin-reverse infinite linear}.emotepulse{animation:1s emote-pulse infinite linear}.emotetr{transform:translateX(-3px)}.emotebl{transform:translateY(-3px)}.emotebr{transform:translate(-3px,-3px)}.emoteshake{animation:1s emote-shake infinite linear}.emoteflap{transform:scaleY(-1)}.emoteshake2{animation:emote-shake2 .3s linear infinite}.emoteshake3{animation:emote-shake3 .1s linear infinite}@keyframes emote-shake2{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-shake3{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes emote-spin-reverse{0%{transform:rotate(0deg)}to{transform:rotate(-360deg)}}@keyframes emote-pulse{0%{-webkit-transform:scale(1,1)}50%{-webkit-transform:scale(1.2,1.2)}to{-webkit-transform:scale(1,1)}}@keyframes emote-shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.bd-minimal .divider-32i8lo{opacity:0}.bd-minimal .large-3ChYtB{max-width:20px;max-height:20px;background-size:100%;margin-right:2px;margin-top:0;border-radius:0}.bd-minimal .content-3dzVd8{border-left:2px solid #ebebeb;padding-left:2px}.bd-minimal .theme-dark .content-3dzVd8{border-left:2px solid #303030}.bd-minimal .username-_4ZSMR{font-size:small}.bd-minimal .container-1YxwTf{padding:5px}.bd-minimal .embed-IeVjo6{padding:2px}.bd-minimal .membersWrap-2h-GB4{min-width:0}.bd-minimal .members-1998pB .small-5Os1Bb{max-width:15px;max-height:15px;background-size:15px 15px}.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE{height:5px;width:5px}.bd-minimal .members-1998pB .member-3W1lQa{padding:5px}.bd-minimal .members-1998pB .memberInner-2CPc3V{transform:scale(.9)}.bd-minimal .members-1998pB .membersGroup-v9BXpm{margin-top:3px;transform:scale(.9)}.bd-minimal .channels-Ie2l6A{width:160px}.bd-minimal.bd-minimal-chan .channels-Ie2l6A{display:none}.bd-minimal .channels-Ie2l6A header span{font-size:12px}.bd-minimal .containerDefault-3GGEv_{transform:scale(.9)}.bd-minimal .content-3at_AU{transform:scale(.9)}.bd-minimal .icon-1_QxNX{width:14px;height:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px;margin:0 12.5px 8px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .wrapper-25eVIn a,.bd-minimal .listItem-2P_4kh .wrapper-25eVIn .icon-27yU2q{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh .wrapper-25eVIn{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh svg,.bd-minimal .listItem-2P_4kh foreignObject[mask]{mask:none}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .homeIcon-tEMBK1{width:10px;height:10px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .circleIconButton-jET_ig{height:20px;width:20px}.bd-minimal .circleIconButton-jET_ig svg{height:14px;width:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .friendsOnline-_wi_fM{margin-left:-15px;font-size:7px}.bd-minimal #bd-pub-li{height:16px}.bd-minimal #bd-pub-button{font-size:8px;line-height:16px;height:16px}.bd-minimal .wrapper-1Rf91z,.bd-minimal .wrapper-1Rf91z .scrollerWrap-1IAIlv,.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG{width:45px}.bd-minimal .wrapper-1Rf91z .guildSeparator-3s64Iy{margin-left:-15px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh .wrapper-sa6paO{height:20px;margin-top:0;margin-left:-12.5px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .iconBadge-2wi9r4{width:12px;height:12px;background-size:12px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI{width:15px;height:15px;background-size:15px 15px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI .status-oxiHuE{height:5px;width:5px}.bd-minimal .container-2Thooq .accountDetails-3k9g4n{transform:scale(.8)}.bd-minimal .container-2Thooq .button-2b6hmh{height:14px;width:14px;background-size:14px 14px;margin-left:3px}.bd-minimal .container-2Thooq .button-2b6hmh svg{height:14px;width:14px}#bd-pub-li{height:20px;margin-bottom:10px;overflow:hidden}#bd-pub-button{border-radius:4px;background-color:#2f3136;color:#b9bbbe;text-align:center;font-size:12px;line-height:20px;height:20px}.bd-server-card .bd-server-tags{flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:0;line-height:24px;font-size:12px;color:#b9bbbe;font-weight:700;margin-right:10px}.bd-server-card.bd-server-card-pinned{margin-bottom:15px}.bd-server-card.bd-server-card-pinned::after{background:#3a71c1;content:"";height:3px;width:100%;display:block;margin-top:7px;position:absolute;top:100%}.bd-server-description-container{color:#b9bbbe;min-height:65px;max-height:65px;border-top:1px solid #3f4146;border-bottom:1px solid #3f4146;padding-top:5px;font-size:13px}.bd-server-header{text-transform:uppercase;letter-spacing:.5px;justify-content:space-between;font-weight:600}.bd-server-card{display:flex;position:relative;border-width:1px;border-style:solid;border-radius:5px;background:rgba(32,34,37,.6);border-color:#202225;margin-bottom:8px}.bd-server-header,.bd-server-footer{display:flex;color:#b9bbbe}.bd-server-card .bd-button{margin-top:4px}.bd-server-content{padding:5px 10px;flex:1}.bd-server-image{min-width:115px;min-height:115px;max-width:115px;max-height:115px}.bd-server-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:15px;max-width:330px;flex:1 1 50%}.bd-layer{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column;left:0;position:absolute;right:0;top:0}#pubslayer button{background:#7289da;color:#fff;font-size:14px;font-weight:500;line-height:16px;padding:2px 16px;border:0;border-radius:3px;transition:background-color .17s ease}#pubslayer button:hover{background-color:#677bc4}#pubslayer input{color:#f6f6f7;background-color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.3);padding:10px;height:30px;border-width:1px;border-style:solid;border-radius:3px;outline:0;transition:background-color .15s ease,border .15s ease}#bd-connection{margin-left:10px}.bd-footnote{color:#b9bbbe;font-size:11px}.bd-button-next,.bd-button-reconnect{margin:5px 10px 10px 0;width:100%;min-height:20px}.bd-reload{cursor:pointer;vertical-align:top;fill:#dcddde}.bd-reload:hover{fill:#fff}.bd-reload-header{margin-left:5px}.bd-reload-card{margin-right:5px}.bd-controls{display:flex}.bd-addon-list{user-select:text}.bd-addon-list .bd-addon-card{max-height:175px;margin-bottom:20px;padding:5px 8px;border:1px solid transparent;border-radius:5px;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-card{background-color:rgba(32,34,37,.6);color:#f6f6f7;border-color:#202225}.theme-light .bd-addon-list .bd-addon-card{background-color:#f8f9f9;color:#4f545c;border-color:#dcddde}.bd-addon-list .bd-addon-card.settings-open{max-height:800px;overflow-y:auto}.bd-addon-list .bd-addon-header{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-bottom:5px;border-bottom:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-header{color:#f6f6f7;border-bottom-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-addon-header{color:#4f545c;border-bottom-color:rgba(185,187,190,.3)}.bd-addon-list .bd-description{word-break:break-word;max-height:100px;margin:5px 0;padding:5px 0;overflow-y:auto}.theme-dark .bd-addon-list .bd-description{color:#b9bbbe}.theme-light .bd-addon-list .bd-description{color:#72767d}.bd-addon-list .scroller::-webkit-scrollbar-track-piece,.bd-addon-list .scroller::-webkit-scrollbar-thumb{border-radius:0!important;border-color:transparent}.bd-addon-list .bd-footer{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-top:5px;border-top:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-footer{border-top-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-footer{border-top-color:rgba(185,187,190,.3)}.bd-addon-list .bd-footer button{padding:3px 16px;transition:opacity 250ms ease}.bd-addon-list .bd-footer button:disabled{opacity:.4}.bd-addon-list .bd-footer a{color:#3e82e5}.bd-addon-list .bd-footer a:hover{text-decoration:underline}.bd-controls+.bd-addon-list{margin-top:10px}.bd-addon-button{cursor:pointer}.bd-addon-button+.bd-addon-button{margin-left:5px}.bd-search-wrapper{padding:3px;border-radius:3px;outline:0;border:0;background-color:#202225;color:#fff;display:flex;align-items:center}.bd-search{padding:2px 3px;background:0 0;border:0;color:#fff;flex:1}.bd-search-wrapper>svg{margin-right:2px}.bd-addon-controls{display:flex;align-items:center;justify-content:space-between}.bd-addon-controls .bd-search{font-size:13px;margin:0;width:200px}.bd-addon-dropdowns{display:flex}.react-error{color:red;font-weight:700;font-family:Arial,Helvetica,sans-serif;cursor:pointer}.settings-open .bd-close{cursor:pointer;float:right}.bd-social-logo{opacity:.6}.bd-social-link:hover .bd-social-logo{opacity:1}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper{bottom:0;left:0;position:fixed;background:inherit;right:0;padding:5px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span{color:#b9bbbe;font-weight:600;font-size:11px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a{font-size:11px}.bd-button-title{margin-left:10px}.bd-switch{background-color:#72767d;border-radius:14px;width:42px;height:24px;opacity:1;overflow:hidden;user-select:none;position:relative;display:block;flex:0 0 auto;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out,opacity .15s ease-in-out;margin-left:10px;box-shadow:inset 0 1px 1px rgba(0,0,0,.15)}.bd-switch::before{content:"";display:block;position:absolute;top:0;left:0;bottom:0;right:0;z-index:0;opacity:0;background-color:#000}.bd-switch::after{content:"";display:block;position:absolute;background-color:#fff;z-index:1;width:18px;margin:3px;border-radius:9px;height:18px;left:0;transition:transform .15s ease-in-out,width .1s ease-in-out,left .1s ease-in-out;box-shadow:0 2px 4px rgba(0,0,0,.3)}.bd-switch .bd-checkbox{position:absolute;width:100%;height:100%;opacity:0;padding:0;margin:0;z-index:2;cursor:pointer}.bd-switch-checked{background-color:#3e82e5}.bd-switch-checked::after{transform:translate3d(18px,0,0)}.bd-switch-disabled{opacity:.3;cursor:not-allowed}.bd-switch-item{flex-direction:column;margin-top:8px}.bd-switch-item h3{font-size:16px;font-weight:500;line-height:24px;flex:1}.theme-dark .bd-switch-item h3{color:#f6f6f7}.theme-light .bd-switch-item h3{color:#4f545c}.bd-switch-item .bd-switch-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;width:44px;height:24px;display:block;flex:0 0 auto}.bd-switch-item .bd-switch-wrapper input{position:absolute;opacity:0;cursor:pointer;width:100%;height:100%;z-index:1}.bd-switch-item .bd-switch-wrapper .bd-switch{position:absolute;top:0;right:0;bottom:0;left:0;background:#72767d;border-radius:14px;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out}.bd-switch-item .bd-switch-wrapper .bd-switch::before{content:"";display:block;width:18px;height:18px;position:absolute;top:3px;left:3px;bottom:3px;background:#f6f6f7;border-radius:10px;transition:all .15s ease;box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05)}.bd-switch-item .bd-switch-wrapper .bd-switch.checked{background:#7289da}.bd-switch-item .bd-switch-wrapper .bd-switch.checked::before{transform:translateX(20px)}#bd-settingspane-container .scroller-wrap{height:100%}#bd-settingspane-container .scroller-wrap .scroller{display:flex}.bd-select-wrapper{color:#f6f6f7;font-size:13px;display:flex;align-items:center}.bd-select-wrapper+.bd-select-wrapper{margin-left:10px}.bd-select-wrapper label{opacity:.3;margin-right:5px}.bd-select{position:relative;cursor:pointer;color:#f6f6f7;font-size:13px;display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.3);border-radius:3px;padding:5px 5px 5px 0}.bd-select.bd-select-transparent{background:0 0;border:0;padding:0}.bd-select-value{padding-left:12px}.bd-select-arrow{margin-left:10px}.bd-select .bd-select-options{position:absolute;background:#2f3136;border-radius:0 0 3px 3px;max-height:300px;min-width:calc(100% + 2px);overflow-y:auto;box-shadow:rgba(0,0,0,.3) 0 1px 5px 0;border:1px solid rgba(0,0,0,.3);border-top:0;margin-top:-1px;margin-left:-1px;z-index:2;top:100%}.bd-select-transparent .bd-select-options{border:1px solid rgba(0,0,0,.3);margin-top:3px;border-radius:3px}.bd-select .bd-select-option{padding:8px 12px;cursor:pointer;white-space:pre}.bd-select .bd-select-option:hover,.bd-select .bd-select-option.selected{background:#26272b}.bd-setting-item .bd-select{min-width:200px}.bd-setting-item{display:flex;flex-direction:column;margin-bottom:20px}.bd-setting-header{display:flex;justify-content:space-between;align-items:center}.bd-setting-header label{font-weight:500;cursor:pointer;overflow:hidden;word-wrap:break-word;font-size:16px;line-height:24px;color:#f6f6f7}.bd-setting-note{color:#72767d;margin-top:4px;font-size:14px;line-height:20px;font-weight:500}.bd-setting-divider{width:100%;height:1px;margin-top:20px;background-color:rgba(114,118,125,.3)}.bd-settings-container{height:auto;overflow:hidden;transition:height 300ms cubic-bezier(.47,0,.745,.715)}.bd-settings-group.collapsed .bd-settings-container{height:0}.bd-settings-group.expanded .bd-settings-container:not(.animating){overflow:visible}.bd-settings-group.collapsible .bd-settings-title{display:flex;justify-content:space-between;align-items:center;order:1}.bd-settings-group.collapsible .bd-settings-title::before{content:"";background-color:rgba(114,118,125,.3);height:2px;order:2;flex:1;margin:0 10px 0 15px}.bd-settings-group.collapsible .bd-settings-title::after{content:"";background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K);height:20px;width:20px;display:inline-block;vertical-align:bottom;transition:transform .3s ease;transform:rotate(0);order:3}.bd-settings-group.collapsed .bd-settings-title::after{transition:transform .3s ease;transform:rotate(90deg)}.bd-settings-group~.bd-settings-group .bd-settings-title{margin-top:30px;transition:margin-top 300ms ease}.bd-settings-group.collapsed+.bd-settings-group .bd-settings-title{margin-top:0}.bd-settings-title.bd-settings-group-title{margin-bottom:10px}.checkbox-item{display:flex}.checkbox-item .checkbox-label{margin-right:8px}@keyframes open-window{0%{transform:scale(.9)}to{transform:none}}.floating-window{animation:open-window 200ms ease;min-width:200px;min-height:300px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);display:flex;flex-direction:column;-webkit-app-region:no-drag;position:fixed;z-index:1001;box-sizing:border-box}.floating-window.modal-open{z-index:999}.floating-window.resizable{overflow:auto;resize:both;padding-bottom:10px;background:#202225}.floating-window-titlebar{width:100%;display:flex;justify-content:space-between;align-items:center;background:#202225;color:#fff;border-bottom:1px solid #272822}.floating-window-content{display:flex;flex-direction:column;background:#2f3129;color:#fff;flex:1}.floating-window-titlebar .title{flex:1;text-align:center;padding:2px 0}.floating-window-buttons{display:flex}.floating-window-buttons .button{cursor:pointer;padding:0 2px}.floating-window-buttons .button svg{fill:#dcddde;margin-top:1.5px}.floating-window-buttons .button:hover svg{fill:#fff}.floating-window-buttons .button:hover{background-color:#36393f}.floating-window-buttons .close-button:hover{background-color:#f04747}.floating-window-buttons .close-button:hover svg path.fill{fill:#fff}.floating-window-content #bd-editor-panel{display:flex;flex-direction:column;flex:1}.floating-window .editor-wrapper{flex:1}.floating-window .ace_editor{height:auto;flex:1}.floating-window #bd-editor-controls{height:auto;background:#202225;border:0;box-shadow:0 1px 0 0 #2f3129 inset}#floating-editor-window{min-width:340px;min-height:280px;max-height:900px;max-width:750px}.floating-addon-window{min-width:535px;min-height:605px;max-height:90%;max-width:90%}@keyframes bd-backdrop{to{opacity:.85}}@keyframes bd-modal-wrapper{to{transform:scale(1);opacity:1}}@keyframes bd-backdrop-closing{to{opacity:0}}@keyframes bd-modal-wrapper-closing{to{transform:scale(.7);opacity:0}}.bd-backdrop{animation:bd-backdrop 250ms ease;animation-fill-mode:forwards;opacity:0;background-color:#000;transform:translateZ(0)}.bd-modal-wrapper.closing .bd-backdrop{animation:bd-backdrop-closing 200ms linear;animation-fill-mode:forwards;animation-delay:50ms;opacity:.85}.bd-modal-wrapper .bd-modal{animation:bd-modal-wrapper 250ms cubic-bezier(.175,.885,.32,1.275);animation-fill-mode:forwards;transform:scale(.7);transform-origin:50% 50%;display:flex;align-items:center;box-sizing:border-box;contain:content;justify-content:center;top:0;left:0;bottom:0;right:0;opacity:0;pointer-events:none;position:absolute;z-index:1000}.bd-modal-wrapper.closing .bd-modal{animation:bd-modal-wrapper-closing 250ms cubic-bezier(.19,1,.22,1);animation-fill-mode:forwards;opacity:1;transform:scale(1)}.bd-modal-wrapper .bd-modal-inner{display:flex;contain:layout;flex-direction:column;pointer-events:auto;border:1px solid rgba(28,36,43,.6);border-radius:5px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);overflow:hidden;max-height:660px;min-height:200px;width:440px;user-select:text}.bd-modal-wrapper .bd-content-modal .bd-modal-inner{height:500px;width:700px}.bd-modal-wrapper .header{background-color:#35393e;box-shadow:0 2px 3px 0 rgba(0,0,0,.2);padding:12px 20px;z-index:1;color:#fff;font-size:16px;font-weight:700;line-height:19px}.bd-modal-wrapper .bd-modal-body{background-color:#36393f;color:#fff;overflow:hidden;display:flex;flex-direction:column;flex:1;contain:layout;position:relative}.bd-modal-wrapper .scroller{padding:10px;overflow-y:auto}.bd-modal-wrapper .bd-content-modal .bd-modal-body{padding:0}.bd-modal-wrapper .footer{display:flex;justify-content:flex-end;padding:10px 20px}.bd-modal-wrapper .footer button{min-height:32px;min-width:60px;align-items:center;display:flex;font-size:14px;font-weight:500;justify-content:center;line-height:16px;padding:2px 16px;user-select:none}.bd-modal-wrapper .tab-bar-container{align-items:center;border-bottom:0;background:rgba(0,0,0,.2);box-shadow:0 2px 3px 0 rgba(0,0,0,.1);display:flex;flex-direction:row;justify-content:space-between;margin-bottom:15px}.bd-modal-wrapper .tab-bar.TOP{margin:0;border:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.bd-modal-wrapper .tab-bar-container .tab-bar-item{margin:0 15px;padding:15px 0;color:#fff;opacity:.5;transition:opacity 200ms ease;border-bottom:2px solid transparent}.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover{border-color:#fff;cursor:pointer}.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected{opacity:1;border-color:#fff}.bd-modal-wrapper .tab-bar.TOP .tab-bar-item+.tab-bar-item{margin:0}.bd-modal-wrapper .table-header{display:flex;justify-content:space-between;color:#fff;font-weight:700;padding-bottom:10px;margin:3px 15px 0 15px;border-bottom:1px solid #fff;font-size:14px}.bd-modal-wrapper .table-column{width:25%;word-wrap:break-word}.bd-modal-wrapper .table-column.column-error{width:50%}.bd-modal-wrapper .errors{display:flex;flex-direction:column;font-size:14px;padding:0 5px}.bd-modal-wrapper .error{display:flex;color:#fff;border-bottom:1px solid rgba(255,255,255,.25);padding:15px 0;align-items:center}.bd-modal-wrapper .error-link{color:#3e82e5;font-weight:500}.bd-modal-wrapper .bd-content-modal .scroller{padding-top:0}.bd-sidebar-header{display:flex;justify-content:space-between}.bd-sidebar-header .bd-changelog-button{height:16px}.bd-sidebar-header .bd-icon{cursor:pointer;fill:#72767d}.bd-sidebar-header .bd-icon:hover{fill:#fff}.bd-toasts{position:fixed;display:flex;top:0;flex-direction:column;align-items:center;justify-content:flex-end;pointer-events:none;z-index:4000}@keyframes bd-toast-up{0%{transform:translateY(0);opacity:0}}.bd-toast{animation:bd-toast-up 300ms ease;transform:translateY(-10px);background:#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;font-size:14px;opacity:1;margin-top:10px;pointer-events:none;user-select:none}@keyframes bd-toast-down{to{transform:translateY(0);opacity:0}}.bd-toast.closing{animation:bd-toast-down 200ms ease;animation-fill-mode:forwards;opacity:1;transform:translateY(-10px)}.bd-toast.icon{padding-left:30px;background-size:20px 20px;background-repeat:no-repeat;background-position:6px 50%}.bd-toast.toast-info{background-color:#4a90e2}.bd-toast.toast-info.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=)}.bd-toast.toast-success{background-color:#43b581}.bd-toast.toast-success.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=)}.bd-toast.toast-danger,.bd-toast.toast-error{background-color:#f04747}.bd-toast.toast-danger.icon,.bd-toast.toast-error.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+)}.bd-toast.toast-warning,.bd-toast.toast-warn{background-color:#ffa600;color:#fff}.bd-toast.toast-warning.icon,.bd-toast.toast-warn.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==)}.bd-button{background-color:#3e82e5;color:#fff;border-radius:3px;padding:2px 6px}.bd-button:hover{background-color:#3875ce}.bd-button:active{background-color:#3268b7}.bd-button.bd-button-success{background-color:#3ac15c}.bd-button.bd-button-success:hover{background-color:#34ae53}.bd-button.bd-button-success:active{background-color:#2e9a4a}.bd-chat-badge{vertical-align:bottom;line-height:1.375rem;display:inline-block;height:1.25rem}.bd-member-badge{height:15px;margin-left:4px} \ No newline at end of file +#bd-editor-panel{display:flex;flex-direction:column}#bd-editor-controls button{margin:0 5px 0 0;background:0 0;color:#fff;height:26px;font-weight:600;border-radius:3px;display:flex;align-items:center}#bd-editor-controls button:hover{background:rgba(255,255,255,.05)}#bd-editor-controls button svg{fill:#fff}#bd-editor-controls button:last-of-type{margin-right:0}#bd-editor-controls{display:flex;align-items:center;justify-content:space-between;background:#272822;color:#fff;border:0;box-shadow:0 1px 0 0 #2f3129 inset;padding:5px}.editor-wrapper{display:flex}.ace_editor{line-height:normal;font-family:Consolas,monospace;box-sizing:border-box;height:calc(100vh - 250px);font-size:14px;width:100%}.bd-monokai .editor .ace_gutter{background:#2f3136}.bd-monokai .ace_editor{background:#292b2f}.bd-monokai #bd-editor-controls{background:#202225}.theme-light #bd-editor-controls{background:#e8e8e8;border:1px solid #fff;border-top:1px solid #adadad;box-shadow:inset 0 1px 0 0 #fff}.controls-section{display:flex;align-items:center}.controls-section .checkbox-inner{width:14px;height:14px}.controls-section .checkbox-inner .checkbox:checked+span::after{left:2px;top:-2px}.controls-section .checkbox-label{font-size:14px}#ace_settingsmenu_container{background:rgba(0,0,0,.7)!important}body #ace_settingsmenu{padding-top:35px}body .ace_closeButton{position:absolute;top:8px;right:12px;z-index:10000;padding:0;cursor:pointer;background:0 0;border:0}body .ace_closeButton::before{content:"✖";color:#36393f}body .ace_closeButton:active{transform:translateY(2px)}#bd-editor-controls .help-text{margin-top:8px;margin-bottom:3px;font-size:14px}#bd-editor-controls .help-text .inline{background:#2f3129;padding:.2em;margin:-.2em 0;border-radius:3px}.bd-dark #bd-qem-favourite-container,.bd-dark #bd-qem-twitch-container{background-color:#353535}.bd-dark #bd-qem{border-bottom:1px solid #464646;background:#353535}.bd-dark #bd-qem button{background:#353535;border-left:1px solid #242424;box-shadow:#424242 1px 0 0 0;color:#fff}.bd-dark #bd-qem button.active{background-color:#292929}.bd-dark #bd-qem button:hover{background-color:#303030}.bd-dark .emojiPicker-3m1S-j{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .category-2U57w6{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_{background-color:#2b2b2b}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input{color:#fff}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input::-webkit-input-placeholder{color:#fff}.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S{background-color:rgba(123,123,123,.37)}.bd-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ{background-color:rgba(62,62,62,.65)}.bd-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc{background:#353535;border-color:#202020}.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track-piece,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track-piece,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece{background-color:#303030!important;border-color:#303030!important}.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-thumb,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-thumb,.bd-dark .emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb{border-color:#202020!important;background-color:#202020!important}.bd-dark .theme-light .slide-2pHaq5{background:#36393f}.bd-dark .theme-dark .action-1lSjCi,.bd-dark .theme-light .action-1lSjCi{background:#2f3136}.bd-dark .theme-dark .or-3THJsp,.bd-dark .theme-light .or-3THJsp{background:#2f3136;order:2;height:56px;width:56px;top:103px;line-height:56px;left:calc(50% - 29px);border-radius:50%;border:2px solid #484b52}.bd-dark .create-3jownz{order:1}.bd-dark .join-33Tr-7{order:3}.bd-dark .theme-dark .actionIcon-2IISM_,.bd-dark .theme-light .actionIcon-2IISM_{filter:grayscale(100%) brightness(60%)}.bd-dark .theme-light .footer-2yfCgX{background:#2f3136}.bd-dark .regionSelectModal-12e-57{background:#36393f}.bd-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3{background:#2f3136;border:2px solid #484b52}.bd-dark~div #ace_settingsmenu{color:#f6f6f7;background:#36393f;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2)}.bd-dark~div #ace_settingsmenu select,.bd-dark~div #ace_settingsmenu input[type=text]{color:#f6f6f7;background:#2f3136;border:1px solid #484b52}.bd-dark~div .ace_closeButton::before{color:#f6f6f7}#removemenu{width:auto;background:#505050;z-index:999999;box-shadow:0 0 2px #000;padding:2px;left:25px;display:block;cursor:pointer;color:#fff;position:fixed}#removemenu ul a{text-decoration:none;color:#fff;padding:3px}.emotewrapper{position:relative;display:inline-flex;object-fit:contain;margin:-.1em .05em -.2em .1em;vertical-align:top}.emotewrapper.jumboable{margin-bottom:0;margin-top:.2em;vertical-align:-.3em}.emote{height:1.45em}.emote.jumboable{height:2rem}.fav{display:none;position:absolute;width:15px;height:15px;right:-7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII=);border:0;background-size:100% 100%;background-repeat:no-repeat;background-color:#303030;border-radius:5px;top:-7px;cursor:pointer}.fav.active{background-color:#ff0}.emotewrapper:hover .fav{display:block}.emojiPicker-3m1S-j{box-shadow:none;border-top:none;border-radius:0 0 5px 5px}#bd-qem{border-radius:5px 5px 0 0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1);height:30px;display:flex;flex-direction:row;padding-right:1px}#bd-qem button{border-left:1px solid #efefef;background:0 0;box-shadow:#cecece 1px 0 0 0;flex-grow:1}#bd-qem button:hover{background:#ececec}#bd-qem-twitch{border-radius:5px 0 0 0;order:2}#bd-qem-emojis{border-radius:0 5px 0 0;order:3}#bd-qem-favourite{order:3}#bd-qem button.active{background-color:#e2e2e2}#bd-qem-twitch-container,#bd-qem-favourite-container{width:346px;height:329px;background-color:#fff;border-radius:0 0 5px 5px}#bd-qem-twitch-container .scroller-wrap,#bd-qem-favourite-container .scroller-wrap{height:100%}.emote-menu-inner{padding:5px 0 0 15px}.bd-qme-hidden #bd-qem-emojis{display:none}.bd-em-scroller{height:400px}#emote-container{padding:10px}.emote-container{display:inline-block;padding:2px;border-radius:5px;width:30px;height:30px;position:relative}.emote-icon{max-width:100%;max-height:100%;position:absolute;margin:auto;top:0;right:0;bottom:0;left:0;cursor:pointer}.emote.stop-animation{animation:none}.emote-container:hover{background:rgba(123,123,123,.37)}.emoteflip,.emotespinflip{transform:scaleX(-1)}.emotespin{animation:1s emote-spin infinite linear}.emote1spin{animation:1s emote-spin-reverse infinite linear}.emotespin2{animation:.5s emote-spin infinite linear}.emote2spin{animation:.5s emote-spin-reverse infinite linear}.emotespin3{animation:.2s emote-spin infinite linear}.emote3spin{animation:.2s emote-spin-reverse infinite linear}.emotepulse{animation:1s emote-pulse infinite linear}.emotetr{transform:translateX(-3px)}.emotebl{transform:translateY(-3px)}.emotebr{transform:translate(-3px,-3px)}.emoteshake{animation:1s emote-shake infinite linear}.emoteflap{transform:scaleY(-1)}.emoteshake2{animation:emote-shake2 .3s linear infinite}.emoteshake3{animation:emote-shake3 .1s linear infinite}@keyframes emote-shake2{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-shake3{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes emote-spin-reverse{0%{transform:rotate(0deg)}to{transform:rotate(-360deg)}}@keyframes emote-pulse{0%{-webkit-transform:scale(1,1)}50%{-webkit-transform:scale(1.2,1.2)}to{-webkit-transform:scale(1,1)}}@keyframes emote-shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.bd-minimal .divider-32i8lo{opacity:0}.bd-minimal .large-3ChYtB{max-width:20px;max-height:20px;background-size:100%;margin-right:2px;margin-top:0;border-radius:0}.bd-minimal .content-3dzVd8{border-left:2px solid #ebebeb;padding-left:2px}.bd-minimal .theme-dark .content-3dzVd8{border-left:2px solid #303030}.bd-minimal .username-_4ZSMR{font-size:small}.bd-minimal .container-1YxwTf{padding:5px}.bd-minimal .embed-IeVjo6{padding:2px}.bd-minimal .membersWrap-2h-GB4{min-width:0}.bd-minimal .members-1998pB .small-5Os1Bb{max-width:15px;max-height:15px;background-size:15px 15px}.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE{height:5px;width:5px}.bd-minimal .members-1998pB .member-3W1lQa{padding:5px}.bd-minimal .members-1998pB .memberInner-2CPc3V{transform:scale(.9)}.bd-minimal .members-1998pB .membersGroup-v9BXpm{margin-top:3px;transform:scale(.9)}.bd-minimal .channels-Ie2l6A{width:160px}.bd-minimal.bd-minimal-chan .channels-Ie2l6A{display:none}.bd-minimal .channels-Ie2l6A header span{font-size:12px}.bd-minimal .containerDefault-3GGEv_{transform:scale(.9)}.bd-minimal .content-3at_AU{transform:scale(.9)}.bd-minimal .icon-1_QxNX{width:14px;height:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px;margin:0 12.5px 8px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .wrapper-25eVIn a,.bd-minimal .listItem-2P_4kh .wrapper-25eVIn .icon-27yU2q{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh .wrapper-25eVIn{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh svg,.bd-minimal .listItem-2P_4kh foreignObject[mask]{mask:none}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .homeIcon-tEMBK1{width:10px;height:10px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .circleIconButton-jET_ig{height:20px;width:20px}.bd-minimal .circleIconButton-jET_ig svg{height:14px;width:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .friendsOnline-_wi_fM{margin-left:-15px;font-size:7px}.bd-minimal #bd-pub-li{height:16px}.bd-minimal #bd-pub-button{font-size:8px;line-height:16px;height:16px}.bd-minimal .wrapper-1Rf91z,.bd-minimal .wrapper-1Rf91z .scrollerWrap-1IAIlv,.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG{width:45px}.bd-minimal .wrapper-1Rf91z .guildSeparator-3s64Iy{margin-left:-15px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh .wrapper-sa6paO{height:20px;margin-top:0;margin-left:-12.5px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .iconBadge-2wi9r4{width:12px;height:12px;background-size:12px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI{width:15px;height:15px;background-size:15px 15px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI .status-oxiHuE{height:5px;width:5px}.bd-minimal .container-2Thooq .accountDetails-3k9g4n{transform:scale(.8)}.bd-minimal .container-2Thooq .button-2b6hmh{height:14px;width:14px;background-size:14px 14px;margin-left:3px}.bd-minimal .container-2Thooq .button-2b6hmh svg{height:14px;width:14px}#bd-pub-li{height:20px;margin-bottom:10px;overflow:hidden}#bd-pub-button{border-radius:4px;background-color:#2f3136;color:#b9bbbe;text-align:center;font-size:12px;line-height:20px;height:20px}.bd-server-card .bd-server-tags{flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:0;line-height:24px;font-size:12px;color:#b9bbbe;font-weight:700;margin-right:10px}.bd-server-card.bd-server-card-pinned{margin-bottom:15px}.bd-server-card.bd-server-card-pinned::after{background:#3a71c1;content:"";height:3px;width:100%;display:block;margin-top:7px;position:absolute;top:100%}.bd-server-description-container{color:#b9bbbe;min-height:65px;max-height:65px;border-top:1px solid #3f4146;border-bottom:1px solid #3f4146;padding-top:5px;font-size:13px}.bd-server-header{text-transform:uppercase;letter-spacing:.5px;justify-content:space-between;font-weight:600}.bd-server-card{display:flex;position:relative;border-width:1px;border-style:solid;border-radius:5px;background:rgba(32,34,37,.6);border-color:#202225;margin-bottom:8px}.bd-server-header,.bd-server-footer{display:flex;color:#b9bbbe}.bd-server-card .bd-button{margin-top:4px}.bd-server-content{padding:5px 10px;flex:1}.bd-server-image{min-width:115px;min-height:115px;max-width:115px;max-height:115px}.bd-server-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:15px;max-width:330px;flex:1 1 50%}.bd-layer{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column;left:0;position:absolute;right:0;top:0}#pubslayer button{background:#7289da;color:#fff;font-size:14px;font-weight:500;line-height:16px;padding:2px 16px;border:0;border-radius:3px;transition:background-color .17s ease}#pubslayer button:hover{background-color:#677bc4}#pubslayer input{color:#f6f6f7;background-color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.3);padding:10px;height:30px;border-width:1px;border-style:solid;border-radius:3px;outline:0;transition:background-color .15s ease,border .15s ease}#bd-connection{margin-left:10px}.bd-footnote{color:#b9bbbe;font-size:11px}.bd-button-next,.bd-button-reconnect{margin:5px 10px 10px 0;width:100%;min-height:20px}.bd-reload{cursor:pointer;vertical-align:top;fill:#dcddde}.bd-reload:hover{fill:#fff}.bd-reload-header{margin-left:5px}.bd-reload-card{margin-right:5px}.bd-controls{display:flex}.bd-addon-list{user-select:text}.bd-addon-list .bd-addon-card{max-height:175px;margin-bottom:20px;padding:5px 8px;border:1px solid transparent;border-radius:5px;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-card{background-color:rgba(32,34,37,.6);color:#f6f6f7;border-color:#202225}.theme-light .bd-addon-list .bd-addon-card{background-color:#f8f9f9;color:#4f545c;border-color:#dcddde}.bd-addon-list .bd-addon-card.settings-open{max-height:800px;overflow-y:auto}.bd-addon-list .bd-addon-header{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-bottom:5px;border-bottom:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-header{color:#f6f6f7;border-bottom-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-addon-header{color:#4f545c;border-bottom-color:rgba(185,187,190,.3)}.bd-addon-list .bd-description{word-break:break-word;max-height:100px;margin:5px 0;padding:5px 0;overflow-y:auto}.theme-dark .bd-addon-list .bd-description{color:#b9bbbe}.theme-light .bd-addon-list .bd-description{color:#72767d}.bd-addon-list .scroller::-webkit-scrollbar-track-piece,.bd-addon-list .scroller::-webkit-scrollbar-thumb{border-radius:0!important;border-color:transparent}.bd-addon-list .bd-footer{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-top:5px;border-top:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-footer{border-top-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-footer{border-top-color:rgba(185,187,190,.3)}.bd-addon-list .bd-footer button{padding:3px 16px;transition:opacity 250ms ease}.bd-addon-list .bd-footer button:disabled{opacity:.4}.bd-addon-list .bd-footer a{color:#3e82e5}.bd-addon-list .bd-footer a:hover{text-decoration:underline}.bd-controls+.bd-addon-list{margin-top:10px}.bd-addon-button{cursor:pointer}.bd-addon-button+.bd-addon-button{margin-left:5px}.bd-search-wrapper{padding:3px;border-radius:3px;outline:0;border:0;background-color:#202225;color:#fff;display:flex;align-items:center}.bd-search{padding:2px 3px;background:0 0;border:0;color:#fff;flex:1}.bd-search-wrapper>svg{margin-right:2px}.bd-addon-controls{display:flex;align-items:center;justify-content:space-between}.bd-addon-controls .bd-search{font-size:13px;margin:0;width:200px}.bd-addon-dropdowns{display:flex}.react-error{color:red;font-weight:700;font-family:Arial,Helvetica,sans-serif;cursor:pointer}.settings-open .bd-close{cursor:pointer;float:right}.bd-social-logo{opacity:.6}.bd-social-link:hover .bd-social-logo{opacity:1}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper{bottom:0;left:0;position:fixed;background:inherit;right:0;padding:5px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span{color:#b9bbbe;font-weight:600;font-size:11px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a{font-size:11px}.bd-button-title{margin-left:10px}.bd-switch{background-color:#72767d;border-radius:14px;width:42px;height:24px;opacity:1;overflow:hidden;user-select:none;position:relative;display:block;flex:0 0 auto;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out,opacity .15s ease-in-out;margin-left:10px;box-shadow:inset 0 1px 1px rgba(0,0,0,.15)}.bd-switch::before{content:"";display:block;position:absolute;top:0;left:0;bottom:0;right:0;z-index:0;opacity:0;background-color:#000}.bd-switch::after{content:"";display:block;position:absolute;background-color:#fff;z-index:1;width:18px;margin:3px;border-radius:9px;height:18px;left:0;transition:transform .15s ease-in-out,width .1s ease-in-out,left .1s ease-in-out;box-shadow:0 2px 4px rgba(0,0,0,.3)}.bd-switch .bd-checkbox{position:absolute;width:100%;height:100%;opacity:0;padding:0;margin:0;z-index:2;cursor:pointer}.bd-switch-checked{background-color:#3e82e5}.bd-switch-checked::after{transform:translate3d(18px,0,0)}.bd-switch-disabled{opacity:.3;cursor:not-allowed}.bd-switch-item{flex-direction:column;margin-top:8px}.bd-switch-item h3{font-size:16px;font-weight:500;line-height:24px;flex:1}.theme-dark .bd-switch-item h3{color:#f6f6f7}.theme-light .bd-switch-item h3{color:#4f545c}.bd-switch-item .bd-switch-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;width:44px;height:24px;display:block;flex:0 0 auto}.bd-switch-item .bd-switch-wrapper input{position:absolute;opacity:0;cursor:pointer;width:100%;height:100%;z-index:1}.bd-switch-item .bd-switch-wrapper .bd-switch{position:absolute;top:0;right:0;bottom:0;left:0;background:#72767d;border-radius:14px;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out}.bd-switch-item .bd-switch-wrapper .bd-switch::before{content:"";display:block;width:18px;height:18px;position:absolute;top:3px;left:3px;bottom:3px;background:#f6f6f7;border-radius:10px;transition:all .15s ease;box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05)}.bd-switch-item .bd-switch-wrapper .bd-switch.checked{background:#7289da}.bd-switch-item .bd-switch-wrapper .bd-switch.checked::before{transform:translateX(20px)}#bd-settingspane-container .scroller-wrap{height:100%}#bd-settingspane-container .scroller-wrap .scroller{display:flex}.bd-select-wrapper{color:#f6f6f7;font-size:13px;display:flex;align-items:center}.bd-select-wrapper+.bd-select-wrapper{margin-left:10px}.bd-select-wrapper label{opacity:.3;margin-right:5px}.bd-select{position:relative;cursor:pointer;color:#f6f6f7;font-size:13px;display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.3);border-radius:3px;padding:5px 5px 5px 0}.bd-select.bd-select-transparent{background:0 0;border:0;padding:0}.bd-select-value{padding-left:12px}.bd-select-arrow{margin-left:10px}.bd-select .bd-select-options{position:absolute;background:#2f3136;border-radius:0 0 3px 3px;max-height:300px;min-width:calc(100% + 2px);overflow-y:auto;box-shadow:rgba(0,0,0,.3) 0 1px 5px 0;border:1px solid rgba(0,0,0,.3);border-top:0;margin-top:-1px;margin-left:-1px;z-index:2;top:100%}.bd-select-transparent .bd-select-options{border:1px solid rgba(0,0,0,.3);margin-top:3px;border-radius:3px}.bd-select .bd-select-option{padding:8px 12px;cursor:pointer;white-space:pre}.bd-select .bd-select-option:hover,.bd-select .bd-select-option.selected{background:#26272b}.bd-setting-item .bd-select{min-width:200px}.bd-setting-item{display:flex;flex-direction:column;margin-bottom:20px}.bd-setting-header{display:flex;justify-content:space-between;align-items:center}.bd-setting-header label{font-weight:500;cursor:pointer;overflow:hidden;word-wrap:break-word;font-size:16px;line-height:24px;color:#f6f6f7}.bd-setting-note{color:#72767d;margin-top:4px;font-size:14px;line-height:20px;font-weight:500}.bd-setting-divider{width:100%;height:1px;margin-top:20px;background-color:rgba(114,118,125,.3)}.bd-settings-container{height:auto;overflow:hidden;transition:height 300ms cubic-bezier(.47,0,.745,.715)}.bd-settings-group.collapsed .bd-settings-container{height:0}.bd-settings-group.expanded .bd-settings-container:not(.animating){overflow:visible}.bd-settings-group.collapsible .bd-settings-title{display:flex;justify-content:space-between;align-items:center;order:1}.bd-settings-group.collapsible .bd-settings-title::before{content:"";background-color:rgba(114,118,125,.3);height:2px;order:2;flex:1;margin:0 10px 0 15px}.bd-settings-group.collapsible .bd-settings-title::after{content:"";background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K);height:20px;width:20px;display:inline-block;vertical-align:bottom;transition:transform .3s ease;transform:rotate(0);order:3}.bd-settings-group.collapsed .bd-settings-title::after{transition:transform .3s ease;transform:rotate(90deg)}.bd-settings-group~.bd-settings-group .bd-settings-title{margin-top:30px;transition:margin-top 300ms ease}.bd-settings-group.collapsed+.bd-settings-group .bd-settings-title{margin-top:0}.bd-settings-title.bd-settings-group-title{margin-bottom:10px}.checkbox-item{display:flex}.checkbox-item .checkbox-label{margin-right:8px}@keyframes open-window{0%{transform:scale(.9)}to{transform:none}}.floating-window{animation:open-window 200ms ease;min-width:200px;min-height:300px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);display:flex;flex-direction:column;-webkit-app-region:no-drag;position:fixed;z-index:1001;box-sizing:border-box}.floating-window.modal-open{z-index:999}.floating-window.resizable{overflow:auto;resize:both;padding-bottom:10px;background:#202225}.floating-window-titlebar{width:100%;display:flex;justify-content:space-between;align-items:center;background:#202225;color:#fff;border-bottom:1px solid #272822}.floating-window-content{display:flex;flex-direction:column;background:#2f3129;color:#fff;flex:1}.floating-window-titlebar .title{flex:1;text-align:center;padding:2px 0}.floating-window-buttons{display:flex}.floating-window-buttons .button{cursor:pointer;padding:0 2px}.floating-window-buttons .button svg{fill:#dcddde;margin-top:1.5px}.floating-window-buttons .button:hover svg{fill:#fff}.floating-window-buttons .button:hover{background-color:#36393f}.floating-window-buttons .close-button:hover{background-color:#f04747}.floating-window-buttons .close-button:hover svg path.fill{fill:#fff}.floating-window-content #bd-editor-panel{display:flex;flex-direction:column;flex:1}.floating-window .editor-wrapper{flex:1}.floating-window .ace_editor{height:auto;flex:1}.floating-window #bd-editor-controls{height:auto;background:#202225;border:0;box-shadow:0 1px 0 0 #2f3129 inset}#floating-editor-window{min-width:340px;min-height:280px;max-height:900px;max-width:750px}.floating-addon-window{min-width:535px;min-height:605px;max-height:90%;max-width:90%}@keyframes bd-backdrop{to{opacity:.85}}@keyframes bd-modal-wrapper{to{transform:scale(1);opacity:1}}@keyframes bd-backdrop-closing{to{opacity:0}}@keyframes bd-modal-wrapper-closing{to{transform:scale(.7);opacity:0}}.bd-backdrop{animation:bd-backdrop 250ms ease;animation-fill-mode:forwards;opacity:0;background-color:#000;transform:translateZ(0)}.bd-modal-wrapper.closing .bd-backdrop{animation:bd-backdrop-closing 200ms linear;animation-fill-mode:forwards;animation-delay:50ms;opacity:.85}.bd-modal-wrapper .bd-modal{animation:bd-modal-wrapper 250ms cubic-bezier(.175,.885,.32,1.275);animation-fill-mode:forwards;transform:scale(.7);transform-origin:50% 50%;display:flex;align-items:center;box-sizing:border-box;contain:content;justify-content:center;top:0;left:0;bottom:0;right:0;opacity:0;pointer-events:none;position:absolute;z-index:1000}.bd-modal-wrapper.closing .bd-modal{animation:bd-modal-wrapper-closing 250ms cubic-bezier(.19,1,.22,1);animation-fill-mode:forwards;opacity:1;transform:scale(1)}.bd-modal-wrapper .bd-modal-inner{display:flex;contain:layout;flex-direction:column;pointer-events:auto;border:1px solid rgba(28,36,43,.6);border-radius:5px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);overflow:hidden;max-height:660px;min-height:200px;width:440px;user-select:text}.bd-modal-wrapper .bd-content-modal .bd-modal-inner{height:500px;width:700px}.bd-modal-wrapper .header{background-color:#35393e;box-shadow:0 2px 3px 0 rgba(0,0,0,.2);padding:12px 20px;z-index:1;color:#fff;font-size:16px;font-weight:700;line-height:19px}.bd-modal-wrapper .bd-modal-body{background-color:#36393f;color:#fff;overflow:hidden;display:flex;flex-direction:column;flex:1;contain:layout;position:relative}.bd-modal-wrapper .scroller{padding:10px;overflow-y:auto}.bd-modal-wrapper .bd-content-modal .bd-modal-body{padding:0}.bd-modal-wrapper .footer{display:flex;justify-content:flex-end;padding:10px 20px}.bd-modal-wrapper .footer button{min-height:32px;min-width:60px;align-items:center;display:flex;font-size:14px;font-weight:500;justify-content:center;line-height:16px;padding:2px 16px;user-select:none}.bd-modal-wrapper .tab-bar-container{align-items:center;border-bottom:0;background:rgba(0,0,0,.2);box-shadow:0 2px 3px 0 rgba(0,0,0,.1);display:flex;flex-direction:row;justify-content:space-between;margin-bottom:15px}.bd-modal-wrapper .tab-bar.TOP{margin:0;border:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.bd-modal-wrapper .tab-bar-container .tab-bar-item{margin:0 15px;padding:15px 0;color:#fff;opacity:.5;transition:opacity 200ms ease;border-bottom:2px solid transparent}.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover{border-color:#fff;cursor:pointer}.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected{opacity:1;border-color:#fff}.bd-modal-wrapper .tab-bar.TOP .tab-bar-item+.tab-bar-item{margin:0}.bd-modal-wrapper .table-header{display:flex;justify-content:space-between;color:#fff;font-weight:700;padding-bottom:10px;margin:3px 15px 0 15px;border-bottom:1px solid #fff;font-size:14px}.bd-modal-wrapper .table-column{width:25%;word-wrap:break-word}.bd-modal-wrapper .table-column.column-error{width:50%}.bd-modal-wrapper .errors{display:flex;flex-direction:column;font-size:14px;padding:0 5px}.bd-modal-wrapper .error{display:flex;color:#fff;border-bottom:1px solid rgba(255,255,255,.25);padding:15px 0;align-items:center}.bd-modal-wrapper .error-link{color:#3e82e5;font-weight:500}.bd-modal-wrapper .bd-content-modal .scroller{padding-top:0}.bd-sidebar-header{display:flex;justify-content:space-between}.bd-sidebar-header .bd-changelog-button{height:16px}.bd-sidebar-header .bd-icon{cursor:pointer;fill:#72767d}.bd-sidebar-header .bd-icon:hover{fill:#fff}.bd-toasts{position:fixed;display:flex;top:0;flex-direction:column;align-items:center;justify-content:flex-end;pointer-events:none;z-index:4000}@keyframes bd-toast-up{0%{transform:translateY(0);opacity:0}}.bd-toast{animation:bd-toast-up 300ms ease;transform:translateY(-10px);background:#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;font-size:14px;opacity:1;margin-top:10px;pointer-events:none;user-select:none}@keyframes bd-toast-down{to{transform:translateY(0);opacity:0}}.bd-toast.closing{animation:bd-toast-down 200ms ease;animation-fill-mode:forwards;opacity:1;transform:translateY(-10px)}.bd-toast.icon{padding-left:30px;background-size:20px 20px;background-repeat:no-repeat;background-position:6px 50%}.bd-toast.toast-info{background-color:#4a90e2}.bd-toast.toast-info.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=)}.bd-toast.toast-success{background-color:#43b581}.bd-toast.toast-success.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=)}.bd-toast.toast-danger,.bd-toast.toast-error{background-color:#f04747}.bd-toast.toast-danger.icon,.bd-toast.toast-error.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+)}.bd-toast.toast-warning,.bd-toast.toast-warn{background-color:#ffa600;color:#fff}.bd-toast.toast-warning.icon,.bd-toast.toast-warn.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==)}.bd-button{background-color:#3e82e5;color:#fff;border-radius:3px;padding:2px 6px}.bd-button:hover{background-color:#3875ce}.bd-button:active{background-color:#3268b7}.bd-button.bd-button-success{background-color:#3ac15c}.bd-button.bd-button-success:hover{background-color:#34ae53}.bd-button.bd-button-success:active{background-color:#2e9a4a}.bd-chat-badge{vertical-align:bottom;line-height:1.375rem;display:inline-block;height:1.25rem}.bd-member-badge{height:15px;margin-left:4px} \ No newline at end of file From 5b8da050a4ea743c3d47e815ea49a43c509525f4 Mon Sep 17 00:00:00 2001 From: Strencher <46447572+Strencher@users.noreply.github.com> Date: Fri, 24 Jul 2020 11:12:48 +0200 Subject: [PATCH 3/4] fix --- dist/index.js | 2 +- src/builtins/emotes/emotemenu.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 320d7b88..4426ede6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -202,7 +202,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tabs */ \"./src/builtins/emotes/tabs.js\");\n\n\n\nconst EmojiPicker = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.type && m.type.displayName == \"ExpressionPicker\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n }\n\n enabled() {\n this.before(EmojiPicker, \"type\", (_, [args], ret) => {\n if (args.expressionPickerView == \"emoji\" && this.hideEmojis) args.expressionPickerView = \"gif\";\n });\n this.after(EmojiPicker, \"type\", (_, [args], ret) => {\n const head = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children.0.props.children.props.children\");\n const body = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children\");\n if (!head || !body) return ret;\n const currentTab = _tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(e => e.id === selected);\n const selected = args.expressionPickerView;\n let tabProps = head[0].props;\n head.push(..._tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(e => _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n id: e.id + \"-tab\",\n role: \"tab\",\n \"aria-selected\": selected == e.id,\n className: tabProps.className\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(tabProps.children.type, {\n viewType: e.id,\n isActive: selected == e.id,\n setActiveView: tabProps.children.props.setActiveView\n }, e.label))));\n if (currentTab) body[2] = currentTab.element();\n if (this.hideEmojis) head.splice(head.findIndex(e => e.props.id == \"emoji-picker-tab\"), 1);\n });\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbIkVtb2ppUGlja2VyIiwiV2VicGFja01vZHVsZXMiLCJmaW5kIiwibSIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIkVtb3RlTWVudSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJoaWRlRW1vamlzSUQiLCJoaWRlRW1vamlzIiwiZ2V0IiwiY29uc3RydWN0b3IiLCJlbmFibGVkIiwiYmVmb3JlIiwiXyIsImFyZ3MiLCJyZXQiLCJleHByZXNzaW9uUGlja2VyVmlldyIsImFmdGVyIiwiaGVhZCIsIlV0aWxpdGllcyIsImdldE5lc3RlZFByb3AiLCJib2R5IiwiY3VycmVudFRhYiIsIlRhYnMiLCJlIiwic2VsZWN0ZWQiLCJ0YWJQcm9wcyIsInByb3BzIiwicHVzaCIsIm1hcCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsInJvbGUiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInZpZXdUeXBlIiwiaXNBY3RpdmUiLCJzZXRBY3RpdmVWaWV3IiwibGFiZWwiLCJlbGVtZW50Iiwic3BsaWNlIiwiZmluZEluZGV4IiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLFdBQVcsR0FBR0Msa0VBQWMsQ0FBQ0MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVUQsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFdBQVAsSUFBc0Isa0JBQXpELENBQXBCO0FBQ2UsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFDaEMsTUFBSUMsVUFBSixHQUFpQjtBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDbkMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQzlCLE1BQUlDLFlBQUosR0FBbUI7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBQzVDLE1BQUlDLFVBQUosR0FBaUI7QUFBQyxXQUFPLEtBQUtDLEdBQUwsQ0FBUyxLQUFLRixZQUFkLENBQVA7QUFBb0M7O0FBRXRERyxhQUFXLEdBQUc7QUFDVjtBQUNIOztBQUNEQyxTQUFPLEdBQUc7QUFDTixTQUFLQyxNQUFMLENBQVlqQixXQUFaLEVBQXlCLE1BQXpCLEVBQWlDLENBQUNrQixDQUFELEVBQUksQ0FBQ0MsSUFBRCxDQUFKLEVBQVlDLEdBQVosS0FBb0I7QUFDakQsVUFBR0QsSUFBSSxDQUFDRSxvQkFBTCxJQUE2QixPQUE3QixJQUF3QyxLQUFLUixVQUFoRCxFQUE0RE0sSUFBSSxDQUFDRSxvQkFBTCxHQUE0QixLQUE1QjtBQUMvRCxLQUZEO0FBR04sU0FBS0MsS0FBTCxDQUFXdEIsV0FBWCxFQUF3QixNQUF4QixFQUFnQyxDQUFDa0IsQ0FBRCxFQUFJLENBQUNDLElBQUQsQ0FBSixFQUFZQyxHQUFaLEtBQW9CO0FBQ25ELFlBQU1HLElBQUksR0FBR0MsNkRBQVMsQ0FBQ0MsYUFBVixDQUF3QkwsR0FBeEIsRUFBNkIsZ0ZBQTdCLENBQWI7QUFDQSxZQUFNTSxJQUFJLEdBQUdGLDZEQUFTLENBQUNDLGFBQVYsQ0FBd0JMLEdBQXhCLEVBQTZCLGdEQUE3QixDQUFiO0FBQ0EsVUFBRyxDQUFDRyxJQUFELElBQVMsQ0FBQ0csSUFBYixFQUFtQixPQUFPTixHQUFQO0FBQ1YsWUFBTU8sVUFBVSxHQUFHQyw2Q0FBSSxDQUFDMUIsSUFBTCxDQUFVMkIsQ0FBQyxJQUFJQSxDQUFDLENBQUNsQixFQUFGLEtBQVNtQixRQUF4QixDQUFuQjtBQUNULFlBQU1BLFFBQVEsR0FBR1gsSUFBSSxDQUFDRSxvQkFBdEI7QUFDQSxVQUFJVSxRQUFRLEdBQUdSLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUVMsS0FBdkI7QUFDQVQsVUFBSSxDQUFDVSxJQUFMLENBQ2EsR0FBR0wsNkNBQUksQ0FBQ00sR0FBTCxDQUFTTCxDQUFDLElBQUlNLHlEQUFLLENBQUNDLGFBQU4sQ0FBb0IsS0FBcEIsRUFBMkI7QUFDeEN6QixVQUFFLEVBQUVrQixDQUFDLENBQUNsQixFQUFGLEdBQUssTUFEK0I7QUFFeEMwQixZQUFJLEVBQUUsS0FGa0M7QUFHeEMseUJBQWlCUCxRQUFRLElBQUlELENBQUMsQ0FBQ2xCLEVBSFM7QUFJeEMyQixpQkFBUyxFQUFFUCxRQUFRLENBQUNPO0FBSm9CLE9BQTNCLEVBS2RILHlEQUFLLENBQUNDLGFBQU4sQ0FBb0JMLFFBQVEsQ0FBQ1EsUUFBVCxDQUFrQm5DLElBQXRDLEVBQTRDO0FBQzNDb0MsZ0JBQVEsRUFBRVgsQ0FBQyxDQUFDbEIsRUFEK0I7QUFFM0M4QixnQkFBUSxFQUFFWCxRQUFRLElBQUlELENBQUMsQ0FBQ2xCLEVBRm1CO0FBRzNDK0IscUJBQWEsRUFBRVgsUUFBUSxDQUFDUSxRQUFULENBQWtCUCxLQUFsQixDQUF3QlU7QUFISSxPQUE1QyxFQUlBYixDQUFDLENBQUNjLEtBSkYsQ0FMYyxDQUFkLENBRGhCO0FBWVMsVUFBR2hCLFVBQUgsRUFBZUQsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVQyxVQUFVLENBQUNpQixPQUFYLEVBQVY7QUFDZixVQUFHLEtBQUsvQixVQUFSLEVBQW9CVSxJQUFJLENBQUNzQixNQUFMLENBQVl0QixJQUFJLENBQUN1QixTQUFMLENBQWVqQixDQUFDLElBQUVBLENBQUMsQ0FBQ0csS0FBRixDQUFRckIsRUFBUixJQUFjLGtCQUFoQyxDQUFaLEVBQWlFLENBQWpFO0FBQzdCLEtBckJEO0FBc0JBOztBQUVFb0MsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNIOztBQXpDOEMsQ0FBcEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9lbW90ZXMvZW1vdGVtZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIFJlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGFicyBmcm9tIFwiLi90YWJzXCI7XHJcbmNvbnN0IEVtb2ppUGlja2VyID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0udHlwZSAmJiBtLnR5cGUuZGlzcGxheU5hbWUgPT0gXCJFeHByZXNzaW9uUGlja2VyXCIpO1xyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRW1vdGVNZW51IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJlbW90ZXNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJlbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppc0lEKCkge3JldHVybiBcImhpZGVFbW9qaU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppcygpIHtyZXR1cm4gdGhpcy5nZXQodGhpcy5oaWRlRW1vamlzSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmJlZm9yZShFbW9qaVBpY2tlciwgXCJ0eXBlXCIsIChfLCBbYXJnc10sIHJldCkgPT4ge1xyXG4gICAgICAgICAgICBpZihhcmdzLmV4cHJlc3Npb25QaWNrZXJWaWV3ID09IFwiZW1vamlcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGFyZ3MuZXhwcmVzc2lvblBpY2tlclZpZXcgPSBcImdpZlwiO1xyXG4gICAgICAgIH0pOyBcclxuXHRcdHRoaXMuYWZ0ZXIoRW1vamlQaWNrZXIsIFwidHlwZVwiLCAoXywgW2FyZ3NdLCByZXQpID0+IHtcclxuXHRcdFx0Y29uc3QgaGVhZCA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHJldCwgXCJwcm9wcy5jaGlsZHJlbi5wcm9wcy5jaGlsZHJlbi4xLnByb3BzLmNoaWxkcmVuLjAucHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW5cIik7XHJcblx0XHRcdGNvbnN0IGJvZHkgPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChyZXQsIFwicHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlblwiKTtcclxuXHRcdFx0aWYoIWhlYWQgfHwgIWJvZHkpIHJldHVybiByZXQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUYWIgPSBUYWJzLmZpbmQoZSA9PiBlLmlkID09PSBzZWxlY3RlZCk7XHJcblx0XHRcdGNvbnN0IHNlbGVjdGVkID0gYXJncy5leHByZXNzaW9uUGlja2VyVmlldztcclxuXHRcdFx0bGV0IHRhYlByb3BzID0gaGVhZFswXS5wcm9wcztcclxuXHRcdFx0aGVhZC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgLi4uVGFicy5tYXAoZSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogZS5pZCtcIi10YWJcIixcclxuICAgICAgICAgICAgICAgICAgICByb2xlOiBcInRhYlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZCA9PSBlLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGFiUHJvcHMuY2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgICAgfSwgUmVhY3QuY3JlYXRlRWxlbWVudCh0YWJQcm9wcy5jaGlsZHJlbi50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlld1R5cGU6IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IHNlbGVjdGVkID09IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlVmlldzogdGFiUHJvcHMuY2hpbGRyZW4ucHJvcHMuc2V0QWN0aXZlVmlld1xyXG4gICAgICAgICAgICAgICAgfSwgZS5sYWJlbCkpXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICBpZihjdXJyZW50VGFiKSBib2R5WzJdID0gY3VycmVudFRhYi5lbGVtZW50KCk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuaGlkZUVtb2ppcykgaGVhZC5zcGxpY2UoaGVhZC5maW5kSW5kZXgoZT0+ZS5wcm9wcy5pZCA9PSBcImVtb2ppLXBpY2tlci10YWJcIiksIDEpO1xyXG5cdFx0fSlcclxuXHR9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tabs */ \"./src/builtins/emotes/tabs.js\");\n\n\n\nconst EmojiPicker = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.type && m.type.displayName == \"ExpressionPicker\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n }\n\n enabled() {\n this.before(EmojiPicker, \"type\", (_, [args], ret) => {\n if (args.expressionPickerView == \"emoji\" && this.hideEmojis) args.expressionPickerView = \"gif\";\n });\n this.after(EmojiPicker, \"type\", (_, [args], ret) => {\n const head = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children.0.props.children.props.children\");\n const body = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children\");\n if (!head || !body) return ret;\n const selected = args.expressionPickerView;\n const currentTab = _tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(e => e.id === selected);\n let tabProps = head[0].props;\n head.push(..._tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(e => _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n id: e.id + \"-tab\",\n role: \"tab\",\n \"aria-selected\": selected == e.id,\n className: tabProps.className\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(tabProps.children.type, {\n viewType: e.id,\n isActive: selected == e.id,\n setActiveView: tabProps.children.props.setActiveView\n }, e.label))));\n if (currentTab) body[2] = currentTab.element();\n if (this.hideEmojis) head.splice(head.findIndex(e => e.props.id == \"emoji-picker-tab\"), 1);\n });\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbIkVtb2ppUGlja2VyIiwiV2VicGFja01vZHVsZXMiLCJmaW5kIiwibSIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIkVtb3RlTWVudSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJoaWRlRW1vamlzSUQiLCJoaWRlRW1vamlzIiwiZ2V0IiwiY29uc3RydWN0b3IiLCJlbmFibGVkIiwiYmVmb3JlIiwiXyIsImFyZ3MiLCJyZXQiLCJleHByZXNzaW9uUGlja2VyVmlldyIsImFmdGVyIiwiaGVhZCIsIlV0aWxpdGllcyIsImdldE5lc3RlZFByb3AiLCJib2R5Iiwic2VsZWN0ZWQiLCJjdXJyZW50VGFiIiwiVGFicyIsImUiLCJ0YWJQcm9wcyIsInByb3BzIiwicHVzaCIsIm1hcCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsInJvbGUiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInZpZXdUeXBlIiwiaXNBY3RpdmUiLCJzZXRBY3RpdmVWaWV3IiwibGFiZWwiLCJlbGVtZW50Iiwic3BsaWNlIiwiZmluZEluZGV4IiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLFdBQVcsR0FBR0Msa0VBQWMsQ0FBQ0MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVUQsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFdBQVAsSUFBc0Isa0JBQXpELENBQXBCO0FBQ2UsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFDaEMsTUFBSUMsVUFBSixHQUFpQjtBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDbkMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQzlCLE1BQUlDLFlBQUosR0FBbUI7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBQzVDLE1BQUlDLFVBQUosR0FBaUI7QUFBQyxXQUFPLEtBQUtDLEdBQUwsQ0FBUyxLQUFLRixZQUFkLENBQVA7QUFBb0M7O0FBRXRERyxhQUFXLEdBQUc7QUFDVjtBQUNIOztBQUNEQyxTQUFPLEdBQUc7QUFDTixTQUFLQyxNQUFMLENBQVlqQixXQUFaLEVBQXlCLE1BQXpCLEVBQWlDLENBQUNrQixDQUFELEVBQUksQ0FBQ0MsSUFBRCxDQUFKLEVBQVlDLEdBQVosS0FBb0I7QUFDakQsVUFBR0QsSUFBSSxDQUFDRSxvQkFBTCxJQUE2QixPQUE3QixJQUF3QyxLQUFLUixVQUFoRCxFQUE0RE0sSUFBSSxDQUFDRSxvQkFBTCxHQUE0QixLQUE1QjtBQUMvRCxLQUZEO0FBR04sU0FBS0MsS0FBTCxDQUFXdEIsV0FBWCxFQUF3QixNQUF4QixFQUFnQyxDQUFDa0IsQ0FBRCxFQUFJLENBQUNDLElBQUQsQ0FBSixFQUFZQyxHQUFaLEtBQW9CO0FBQ25ELFlBQU1HLElBQUksR0FBR0MsNkRBQVMsQ0FBQ0MsYUFBVixDQUF3QkwsR0FBeEIsRUFBNkIsZ0ZBQTdCLENBQWI7QUFDQSxZQUFNTSxJQUFJLEdBQUdGLDZEQUFTLENBQUNDLGFBQVYsQ0FBd0JMLEdBQXhCLEVBQTZCLGdEQUE3QixDQUFiO0FBQ0EsVUFBRyxDQUFDRyxJQUFELElBQVMsQ0FBQ0csSUFBYixFQUFtQixPQUFPTixHQUFQO0FBQ25CLFlBQU1PLFFBQVEsR0FBR1IsSUFBSSxDQUFDRSxvQkFBdEI7QUFDUyxZQUFNTyxVQUFVLEdBQUdDLDZDQUFJLENBQUMzQixJQUFMLENBQVU0QixDQUFDLElBQUlBLENBQUMsQ0FBQ25CLEVBQUYsS0FBU2dCLFFBQXhCLENBQW5CO0FBQ1QsVUFBSUksUUFBUSxHQUFHUixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVFTLEtBQXZCO0FBQ0FULFVBQUksQ0FBQ1UsSUFBTCxDQUNhLEdBQUdKLDZDQUFJLENBQUNLLEdBQUwsQ0FBU0osQ0FBQyxJQUFJSyx5REFBSyxDQUFDQyxhQUFOLENBQW9CLEtBQXBCLEVBQTJCO0FBQ3hDekIsVUFBRSxFQUFFbUIsQ0FBQyxDQUFDbkIsRUFBRixHQUFLLE1BRCtCO0FBRXhDMEIsWUFBSSxFQUFFLEtBRmtDO0FBR3hDLHlCQUFpQlYsUUFBUSxJQUFJRyxDQUFDLENBQUNuQixFQUhTO0FBSXhDMkIsaUJBQVMsRUFBRVAsUUFBUSxDQUFDTztBQUpvQixPQUEzQixFQUtkSCx5REFBSyxDQUFDQyxhQUFOLENBQW9CTCxRQUFRLENBQUNRLFFBQVQsQ0FBa0JuQyxJQUF0QyxFQUE0QztBQUMzQ29DLGdCQUFRLEVBQUVWLENBQUMsQ0FBQ25CLEVBRCtCO0FBRTNDOEIsZ0JBQVEsRUFBRWQsUUFBUSxJQUFJRyxDQUFDLENBQUNuQixFQUZtQjtBQUczQytCLHFCQUFhLEVBQUVYLFFBQVEsQ0FBQ1EsUUFBVCxDQUFrQlAsS0FBbEIsQ0FBd0JVO0FBSEksT0FBNUMsRUFJQVosQ0FBQyxDQUFDYSxLQUpGLENBTGMsQ0FBZCxDQURoQjtBQVlTLFVBQUdmLFVBQUgsRUFBZUYsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVRSxVQUFVLENBQUNnQixPQUFYLEVBQVY7QUFDZixVQUFHLEtBQUsvQixVQUFSLEVBQW9CVSxJQUFJLENBQUNzQixNQUFMLENBQVl0QixJQUFJLENBQUN1QixTQUFMLENBQWVoQixDQUFDLElBQUVBLENBQUMsQ0FBQ0UsS0FBRixDQUFRckIsRUFBUixJQUFjLGtCQUFoQyxDQUFaLEVBQWlFLENBQWpFO0FBQzdCLEtBckJEO0FBc0JBOztBQUVFb0MsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNIOztBQXpDOEMsQ0FBcEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9lbW90ZXMvZW1vdGVtZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIFJlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGFicyBmcm9tIFwiLi90YWJzXCI7XHJcbmNvbnN0IEVtb2ppUGlja2VyID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0udHlwZSAmJiBtLnR5cGUuZGlzcGxheU5hbWUgPT0gXCJFeHByZXNzaW9uUGlja2VyXCIpO1xyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRW1vdGVNZW51IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJlbW90ZXNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJlbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppc0lEKCkge3JldHVybiBcImhpZGVFbW9qaU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppcygpIHtyZXR1cm4gdGhpcy5nZXQodGhpcy5oaWRlRW1vamlzSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmJlZm9yZShFbW9qaVBpY2tlciwgXCJ0eXBlXCIsIChfLCBbYXJnc10sIHJldCkgPT4ge1xyXG4gICAgICAgICAgICBpZihhcmdzLmV4cHJlc3Npb25QaWNrZXJWaWV3ID09IFwiZW1vamlcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGFyZ3MuZXhwcmVzc2lvblBpY2tlclZpZXcgPSBcImdpZlwiO1xyXG4gICAgICAgIH0pOyBcclxuXHRcdHRoaXMuYWZ0ZXIoRW1vamlQaWNrZXIsIFwidHlwZVwiLCAoXywgW2FyZ3NdLCByZXQpID0+IHtcclxuXHRcdFx0Y29uc3QgaGVhZCA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHJldCwgXCJwcm9wcy5jaGlsZHJlbi5wcm9wcy5jaGlsZHJlbi4xLnByb3BzLmNoaWxkcmVuLjAucHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW5cIik7XHJcblx0XHRcdGNvbnN0IGJvZHkgPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChyZXQsIFwicHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlblwiKTtcclxuXHRcdFx0aWYoIWhlYWQgfHwgIWJvZHkpIHJldHVybiByZXQ7XHJcblx0XHRcdGNvbnN0IHNlbGVjdGVkID0gYXJncy5leHByZXNzaW9uUGlja2VyVmlldztcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRhYiA9IFRhYnMuZmluZChlID0+IGUuaWQgPT09IHNlbGVjdGVkKTtcclxuXHRcdFx0bGV0IHRhYlByb3BzID0gaGVhZFswXS5wcm9wcztcclxuXHRcdFx0aGVhZC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgLi4uVGFicy5tYXAoZSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogZS5pZCtcIi10YWJcIixcclxuICAgICAgICAgICAgICAgICAgICByb2xlOiBcInRhYlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZCA9PSBlLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGFiUHJvcHMuY2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgICAgfSwgUmVhY3QuY3JlYXRlRWxlbWVudCh0YWJQcm9wcy5jaGlsZHJlbi50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlld1R5cGU6IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IHNlbGVjdGVkID09IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlVmlldzogdGFiUHJvcHMuY2hpbGRyZW4ucHJvcHMuc2V0QWN0aXZlVmlld1xyXG4gICAgICAgICAgICAgICAgfSwgZS5sYWJlbCkpXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICBpZihjdXJyZW50VGFiKSBib2R5WzJdID0gY3VycmVudFRhYi5lbGVtZW50KCk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuaGlkZUVtb2ppcykgaGVhZC5zcGxpY2UoaGVhZC5maW5kSW5kZXgoZT0+ZS5wcm9wcy5pZCA9PSBcImVtb2ppLXBpY2tlci10YWJcIiksIDEpO1xyXG5cdFx0fSlcclxuXHR9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); /***/ }), diff --git a/src/builtins/emotes/emotemenu.js b/src/builtins/emotes/emotemenu.js index 92939d72..4b3a7669 100644 --- a/src/builtins/emotes/emotemenu.js +++ b/src/builtins/emotes/emotemenu.js @@ -21,8 +21,8 @@ export default new class EmoteMenu extends Builtin { const head = Utilities.getNestedProp(ret, "props.children.props.children.1.props.children.0.props.children.props.children"); const body = Utilities.getNestedProp(ret, "props.children.props.children.1.props.children"); if(!head || !body) return ret; - const currentTab = Tabs.find(e => e.id === selected); const selected = args.expressionPickerView; + const currentTab = Tabs.find(e => e.id === selected); let tabProps = head[0].props; head.push( ...Tabs.map(e => React.createElement("div", { From 79648edae490f9270b2324e323b9cf571fad0903 Mon Sep 17 00:00:00 2001 From: Strencher <46447572+Strencher@users.noreply.github.com> Date: Fri, 24 Jul 2020 14:45:05 +0200 Subject: [PATCH 4/4] Add German translation Co-authored-by: Aaron <42084688+l0c4lh057@users.noreply.github.com> --- assets/locales/de.json | 307 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 assets/locales/de.json diff --git a/assets/locales/de.json b/assets/locales/de.json new file mode 100644 index 00000000..43057e5d --- /dev/null +++ b/assets/locales/de.json @@ -0,0 +1,307 @@ +{ + "Panels": { + "plugins": "Plugins", + "themes": "Themes", + "customcss": "Custom-CSS" + }, + "Collections": { + "settings": { + "name": "Einstellungen", + "general": { + "name": "Allgemein", + "emotes": { + "name": "Emote-Funktion", + "note": "Aktiviert die BD Emote-Funktion." + }, + "publicServers": { + "name": "Öffentliche Sever", + "note": "Zeigt den Button zum Öffnen einer Liste öffentlicher Server." + }, + "voiceDisconnect": { + "name": "Verbindung zum Sprachchat trennen", + "note": "Trennt beim Schließen von Discord die Verbindung zum Sprachchat." + }, + "twentyFourHour": { + "name": "24h Zeitstempel", + "note": "Zeigt die Zeitstempel in einem 24h format an." + }, + "classNormalizer": { + "name": "Normalisierte klassen", + "note": "Fügt stetige Klassen zu Elementen hinzu (z.B. .da-channels zu .channels-Ie2l6A)" + }, + "showToasts": { + "name": "Benachrichtigungen anzeigen", + "note": "Zeigt kleine Benachrichtigung für wichtige informationen an." + } + }, + "appearance": { + "name": "Aussehen", + "voiceMode": { + "name": "Sprachmodus", + "note": "Verbirgt alles, was kein Sprachkanal ist." + }, + "minimalMode": { + "name": "Minimaler Modus", + "note": "Verbirgt Elemente und reduziert die Größe von elementen." + }, + "hideChannels": { + "name": "Kanäle verbergen", + "note": "Verbirgt Kanäle, wenn \"Minimaler Modus\" aktiviert ist." + }, + "darkMode": { + "name": "Dunkelmodus", + "note": "Aktivert einen noch dunkleren Modus in Discord." + }, + "coloredText": { + "name": "Farbiger Text", + "note": "Macht die Textfarbe gleich mit der Rollenfarbe." + } + }, + "addons": { + "name": "Erweiterungs-Manager", + "addonErrors": { + "name": "Zeige Erweiterungsfehler", + "note": "Zeigt einen Popup mit Erweiterungsfehlern." + }, + "autoScroll": { + "name": "Zu Einstellungen scollen", + "note": "Scrollt automatisch zu den Erweiterungs-Einstellungen." + }, + "autoReload": { + "name": "Automatisches Laden", + "note": "Läd und entfernt Plugins und Themes automatisch." + }, + "editAction": { + "name": "Bearbeitungsaktion", + "note": "Wo Plugins und Themes zum Bearbeiten geöffnet werden.", + "options": { + "detached": "Popout-Fenster", + "system": "System-Editor" + } + } + }, + "customcss": { + "name": "Custom-CSS", + "customcss": { + "name": "Custom-CSS", + "note": "Aktiviert den \"Custom-CSS\"-Tab in den Einstellungen." + }, + "liveUpdate": { + "name": "Live-Aktualisierung", + "note": "Aktualisiere den CSS-Editor beim Bearbeiten." + }, + "startDetached": { + "name": "Als Popout starten", + "note": "Das Klicken auf den \"Custom-CSS\"-Tab öffnet den editor in einem Popoup-Fenster." + }, + "nativeOpen": { + "name": "Im System-Editor öffnen", + "note": "Das Klicken auf den \"Custom-CSS\"-Tab öffnet dein \"Custom-CSS\" in deinem System-Editor." + }, + "openAction": { + "name": "Editor-Location", + "note": "Wo Custom-CSS standardmäßig geöffnet werden soll", + "options": { + "settings": "Einstellungs-Menü", + "detached": "Popout-Fenster", + "system": "System-Editor" + } + } + }, + "developer": { + "name": "Entwickler-Einstellungen", + "debuggerHotkey": { + "name": "Debugger-Hotkey", + "note": "Starte den Debugger durch das Drücken der F8-Taste." + }, + "copySelector": { + "name": "Selektor kopieren", + "note": "Fügt eine \"Selektor kopieren\"-Option zu den Context-Menüs hinzu." + }, + "reactDevTools": { + "name": "React-Developer-Tools", + "note": "Fügt die lokale Installation der React Developer Tools in Discord hinzu." + } + }, + "window": { + "name": "Fenster-Einstellungen", + "transparency": { + "name": "Transparenz aktivieren", + "note": "Macht den Discord-Hintergrund transparent." + }, + "frame": { + "name": "Standard-Design", + "note": "Stellt das Hauptfenster im Standard-Design des Betriebssystems dar." + } + } + }, + "emotes": { + "name": "Emotes", + "general": { + "name": "Allgemein", + "download": { + "name": "Emotes herunterladen", + "note": "Lade Emotes herunter, wenn sie nicht mehr aktuell sind" + }, + "emoteMenu": { + "name": "Emote-Menü", + "note": "Twitch- und favorisierte Emotes im Emote-Menü anzeigen" + }, + "hideEmojiMenu": { + "name": "Emoji-Menü verstecken", + "note": "Versteckt Discords Emoji-Menü bei der Nutzung des Emote-Menüs" + }, + "autoCaps": { + "name": "Automatische Großschreibung von Emotes", + "note": "Emote-Befehle werden automatisch großgeschrieben" + }, + "showNames": { + "name": "Namen anzeigen", + "note": "Zeigt den Emote-Namen beim Hovern über diesem an" + }, + "modifiers": { + "name": "Emote-Modifikatoren anzeigen", + "note": "Aktiviert Emote-Modifikatoren (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)" + }, + "animateOnHover": { + "name": "Beim Hovern animieren", + "note": "Animiert Emote-Modifikatoren nur beim Hovern über dem Emote" + } + }, + "categories": { + "name": "Kategorien", + "twitchglobal": { + "name": "Twitch Global", + "note": "Twitch-Global-Emotes anzeigen" + }, + "twitchsubscriber": { + "name": "Twitch Subscribers", + "note": "Twitch-Subscriber-Emotes anzeigen" + }, + "frankerfacez": { + "name": "FrankerFaceZ", + "note": "FFZ-Emotes anzeigen" + }, + "bttv": { + "name": "BetterTTV", + "note": "BTTV-Emotes anzeigen" + } + } + } + }, + "Addons": { + "title": "{{name}} v{{version}} von {{author}}", + "openFolder": "Öffne {{type}}-Ordner", + "reload": "Neu laden", + "addonSettings": "Einstellungen", + "website": "Website", + "source": "Source", + "invite": "Support-Server", + "donate": "Spenden", + "patreon": "Patreon", + "name": "Name", + "author": "Autor", + "version": "Version", + "added": "Hinzufügedatum", + "modified": "Bearbeitungsdatum", + "search": "{{type}} suchen", + "editAddon": "Bearbeiten", + "deleteAddon": "Löschen", + "confirmDelete": "Bist du dir sicher, dass du {{name}} löschen willst?", + "confirmationText": "Du hast ungespeicherte Änderungen in {{name}}. Durch das Schließen dieses Fensters verlierst du alle Änderungen.", + "enabled": "{{name}} wurde aktiviert.", + "disabled": "{{name}} wurde deaktiviert.", + "couldNotEnable": "{{name}} konnte nicht aktiviert werden.", + "couldNotDisable": "{{name}} konnte nicht deaktiviert werden.", + "couldNotStart": "{{name}} konnte nicht gestartet werden.", + "couldNotStop": "{{name}} konnte nicht gestoppt werden.", + "methodError": "{{method}} konnte nicht ausgeführt werden.", + "unknownAuthor": "Unbekannter Autor", + "noDescription": "Keine Beschreibung angegeben.", + "alreadyExists": "Es existiert bereits ein {{type}} mit dem Namen {{name}}", + "metaError": "META konnte nicht geparst werden.", + "missingNameData": "META missing name data.", + "metaNotFound": "META nicht gefunden.", + "compileError": "Konnte nicht kompiliert werden.", + "wasUnloaded": "{{name}} was unloaded.", + "alreadyWatching": "Already watching {{prefix}} addons.", + "startingWatch": "Starting to watch {{prefix}} addons.", + "wasNotWatching": "Was not watching {{prefix}} addons.", + "noLongerWatching": "No longer watching {{prefix}} addons." + }, + "CustomCSS": { + "confirmationText": "Du hast ungespeicherte Änderungen im Custom-CSS. Durch das Schließen dieses Fensters verlierst du alle Änderungen.", + "update": "Aktualisieren", + "save": "Speichern", + "openNative": "Im System-Editor öffnen", + "openDetached": "Fenster trennen", + "settings": "Editor-Einstellungen", + "editorTitle": "Custom-CSS-Editor" + }, + "Developer": { + "copySelector": "Selektor kopieren" + }, + "Emotes": { + "loading": "Lade alle Emotes im Hintergrund.", + "loaded": "Alle Emotes erfolgreich geladen.", + "clearEmotes": "Emote-Daten löschen", + "favoriteAction": "Favorisieren!" + }, + "PublicServers": { + "button": "public", + "join": "Beitreten", + "joining": "Trete bei", + "joined": "Beigetreten", + "loading": "Laden", + "loadMore": "Mehr laden", + "notConnected": "Nicht mit DiscordServers.com verbunden!", + "search": "Suchen", + "connect": "Verbinden", + "reconnect": "Wiederverbinden", + "categories": "Kategorien", + "connection": "Verbunden als: {{username}}#{{discriminator}}", + "results": "Zeige {{start}}-{{end}} von {{total}} Ergebnissen in {{category}}", + "query": "für {{query}}" + }, + "Modals": { + "confirmAction": "Bist du dir sicher?", + "okay": "Okay", + "cancel": "Abbrechen", + "close": "Schließen", + "name": "Name", + "message": "Nachricht", + "error": "Fehler", + "addonErrors": "Erweiterungsfehler", + "restartRequired": "Neustart erforderlich", + "restartNow": "Jetzt neustarten", + "restartLater": "Später neustarten", + "additionalInfo": "Zusätzliche Informationen" + }, + "ReactDevTools": { + "notFound": "Erweiterung nicht gefunden", + "notFoundDetails": "React Developer Tools-Erweiterung konnte nicht gefunden werden. Füg die Erweiterung zu deiner Chrome-Installation hinzu." + }, + "Sorting": { + "sortBy": "Sortieren nach", + "order": "Reihenfolge", + "ascending": "Aufsteigend", + "descending": "Absteigend" + }, + "Startup": { + "notSupported": "Nicht unterstützt", + "versionMismatch": "BandagedBD Injector v{{injector}} wird nicht von der letzten Onlineversion (v{{remote}}) unterstützt.\n\nBitte lade den neusten Installer von [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest) herunter.", + "incompatibleApp": "BandagedBD ist nicht mit {{app}} kompatiblem. Bitte entferne entweder BetterDiscord oder {{app}}.", + "updateNow": "Jetzt aktualisieren", + "maybeLater": "Später", + "updateAvailable": "Update verfügbar", + "updateInfo": "Ein Update für BandagedBDs Injector ({{version}}) ist verfügbar.\n\nDu kannst entweder jetzt oder später aktualisieren und neustarten", + "updateFailed": "Konnte nicht aktualisiert werden", + "manualUpdate": "Die automatische Aktualisierung schlug fehl. Bitte lade den Installer herunter und installiere BetterDiscord erneut.\n\n[Installer herunterladen](https://github.com/rauenzi/BetterDiscordApp/releases/latest)", + "jqueryFailed": "jQuery konnte nicht geladen werden", + "jqueryFailedDetails": "jQuery konnte nicht geladen werden, wodurch einige Plugins gegebenenfalls nicht richtig funktionieren." + }, + "WindowPrefs": { + "enabledInfo": "Um diese Funktion zu verwenden, benötigst du ein Theme mit transparentem Hintergrund. Auf Windows funktioniert das Maximieren des Fensters ggf. nicht mehr.\n\nUm die Änderungen zu übernehmen muss Discord neugeladen werden. Willst du jetzt neuladen?", + "disabledInfo": "Um die Änderungen zu übernehmen muss Discord neugeladen werden. Willst du jetzt neuladen?" + } +} \ No newline at end of file