text: //META{"name":"RevealAllSpoilersOption","authorId":"278543574059057154","invite":"Jx3TjNS","donate":"https://www.paypal.me/MircoWittrien","patreon":"https://www.patreon.com/MircoWittrien","website":"https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/RevealAllSpoilersOption","source":"https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/RevealAllSpoilersOption/RevealAllSpoilersOption.plugin.js"}*//
  
  module.exports = (_ => {
  	const config = {
  		"info": {
  			"name": "RevealAllSpoilersOption",
  			"author": "DevilBro",
  			"version": "1.0.5",
  			"description": "Adds an entry to the message contextmenu to reveal all spoilers within a messageblock."
  		}
  	};
  	return !window.BDFDB_Global || (!window.BDFDB_Global.loaded && !window.BDFDB_Global.started) ? class {
  		getName () {return config.info.name;}
  		getAuthor () {return config.info.author;}
  		getVersion () {return config.info.version;}
  		getDescription () {return config.info.description;}
  		
  		load() {
  			if (!window.BDFDB_Global || !Array.isArray(window.BDFDB_Global.pluginQueue)) window.BDFDB_Global = Object.assign({}, window.BDFDB_Global, {pluginQueue:[]});
  			if (!window.BDFDB_Global.downloadModal) {
  				window.BDFDB_Global.downloadModal = true;
  				BdApi.showConfirmationModal("Library Missing", `The library plugin needed for ${config.info.name} is missing. Please click "Download Now" to install it.`, {
  					confirmText: "Download Now",
  					cancelText: "Cancel",
  					onCancel: _ => {delete window.BDFDB_Global.downloadModal;},
  					onConfirm: _ => {
  						delete window.BDFDB_Global.downloadModal;
  						require("request").get("https://mwittrien.github.io/BetterDiscordAddons/Library/0BDFDB.plugin.js", (e, r, b) => {
  							if (!e && b && b.indexOf(`//META{"name":"`) > -1) require("fs").writeFile(require("path").join(BdApi.Plugins.folder, "0BDFDB.plugin.js"), b, _ => {});
  							else BdApi.alert("Error", "Could not download BDFDB library plugin, try again some time later.");
  						});
  					}
  				});
  			}
  			if (!window.BDFDB_Global.pluginQueue.includes(config.info.name)) window.BDFDB_Global.pluginQueue.push(config.info.name);
  		}
  		start() {this.load();}
  		stop() {}
  	} : (([Plugin, BDFDB]) => {
  		return class RevealAllSpoilersOption extends Plugin {
  			onLoad() {}
  			
  			onStart() {}
  			
  			onStop() {}
  
  			onMessageContextMenu (e) {
  				if (e.instance.props.message && e.instance.props.target) {
  					let messageDiv = BDFDB.DOMUtils.getParent(BDFDB.dotCN.message, e.instance.props.target);
  					if (!messageDiv || !messageDiv.querySelector(BDFDB.dotCN.spoilerhidden)) return;
  					let hint = BDFDB.BDUtils.isPluginEnabled("MessageUtilities") ? BDFDB.BDUtils.getPlugin("MessageUtilities").getActiveShortcutString("__Reveal_Spoilers") : null;
  					let [children, index] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "devmode-copy-id", group: true});
  					children.splice(index > -1 ? index : children.length, 0, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
  						children: BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
  							label: "Reveal all Spoilers",
  							id: BDFDB.ContextMenuUtils.createItemId(this.name, "reveal-all"),
  							hint: hint && (_ => {
  								return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.MenuItems.MenuHint, {
  									hint: hint
  								});
  							}),
  							action: _ => {
  								this.revealAllSpoilers(messageDiv);
  							}
  						})
  					}));
  				}
  			}
  
  			revealAllSpoilers (target) {
  				let messageDiv = BDFDB.DOMUtils.getParent(BDFDB.dotCN.message, target);
  				if (!messageDiv) return;
  				for (let spoiler of messageDiv.querySelectorAll(BDFDB.dotCN.spoilerhidden)) spoiler.click();
  			}
  		};
  	})(window.BDFDB_Global.PluginUtils.buildPlugin(config));
  })();