aboutsummaryrefslogtreecommitdiff
path: root/src/webpack
diff options
context:
space:
mode:
Diffstat (limited to 'src/webpack')
-rw-r--r--src/webpack/common/components.ts53
-rw-r--r--src/webpack/common/menu.ts24
-rw-r--r--src/webpack/webpack.ts2
3 files changed, 30 insertions, 49 deletions
diff --git a/src/webpack/common/components.ts b/src/webpack/common/components.ts
index 4993b22..9554f95 100644
--- a/src/webpack/common/components.ts
+++ b/src/webpack/common/components.ts
@@ -17,40 +17,37 @@
*/
// eslint-disable-next-line path-alias/no-relative
-import { filters, findByPropsLazy } from "../webpack";
+import { filters, findByPropsLazy, waitFor } from "@webpack";
+
import { waitForComponent } from "./internal";
import * as t from "./types/components";
-export const Forms = {
- FormTitle: waitForComponent<t.FormTitle>("FormTitle", filters.byCode("errorSeparator")),
- FormSection: waitForComponent<t.FormSection>("FormSection", filters.byCode("titleClassName", "sectionTitle")),
- FormDivider: waitForComponent<t.FormDivider>("FormDivider", m => {
- if (typeof m !== "function") return false;
- const s = m.toString();
- return s.length < 200 && s.includes(".divider");
- }),
- FormText: waitForComponent<t.FormText>("FormText", m => m.Types?.INPUT_PLACEHOLDER),
+export let Forms = {} as {
+ FormTitle: t.FormTitle,
+ FormSection: t.FormSection,
+ FormDivider: t.FormDivider,
+ FormText: t.FormText,
};
-export const Card = waitForComponent<t.Card>("Card", m => m.Types?.PRIMARY && m.defaultProps);
-export const Button = waitForComponent<t.Button>("Button", ["Hovers", "Looks", "Sizes"]);
-export const Switch = waitForComponent<t.Switch>("Switch", filters.byCode("tooltipNote", "ringTarget"));
-export const Tooltip = waitForComponent<t.Tooltip>("Tooltip", filters.byCode("shouldShowTooltip:!1", "clickableOnMobile||"));
+export let Card: t.Card;
+export let Button: t.Button;
+export let Switch: t.Switch;
+export let Tooltip: t.Tooltip;
+export let TextInput: t.TextInput;
+export let TextArea: t.TextArea;
+export let Text: t.Text;
+export let Select: t.Select;
+export let SearchableSelect: t.SearchableSelect;
+export let Slider: t.Slider;
+export let ButtonLooks: t.ButtonLooks;
+export let TabBar: any;
+
export const Timestamp = waitForComponent<t.Timestamp>("Timestamp", filters.byCode(".Messages.MESSAGE_EDITED_TIMESTAMP_A11Y_LABEL.format"));
-export const TextInput = waitForComponent<t.TextInput>("TextInput", ["defaultProps", "Sizes", "contextType"]);
-export const TextArea = waitForComponent<t.TextArea>("TextArea", filters.byCode("handleSetRef", "textArea"));
-export const Text = waitForComponent<t.Text>("Text", m => {
- if (typeof m !== "function") return false;
- const s = m.toString();
- return (s.length < 1500 && s.includes("data-text-variant") && s.includes("always-white"));
-});
-export const Select = waitForComponent<t.Select>("Select", filters.byCode("optionClassName", "popoutPosition", "autoFocus", "maxVisibleItems"));
-const searchableSelectFilter = filters.byCode("autoFocus", ".Messages.SELECT");
-export const SearchableSelect = waitForComponent<t.SearchableSelect>("SearchableSelect", m =>
- m.render && searchableSelectFilter(m.render)
-);
-export const Slider = waitForComponent<t.Slider>("Slider", filters.byCode("closestMarkerIndex", "stickToMarkers"));
export const Flex = waitForComponent<t.Flex>("Flex", ["Justify", "Align", "Wrap"]);
export const ButtonWrapperClasses = findByPropsLazy("buttonWrapper", "buttonContent") as Record<string, string>;
-export const ButtonLooks: t.ButtonLooks = findByPropsLazy("BLANK", "FILLED", "INVERTED");
+
+waitFor("FormItem", m => {
+ ({ Card, Button, FormSwitch: Switch, Tooltip, TextInput, TextArea, Text, Select, SearchableSelect, Slider, ButtonLooks, TabBar } = m);
+ Forms = m;
+});
diff --git a/src/webpack/common/menu.ts b/src/webpack/common/menu.ts
index 6ecd754..97d1d2f 100644
--- a/src/webpack/common/menu.ts
+++ b/src/webpack/common/menu.ts
@@ -16,32 +16,14 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import { proxyLazy } from "@utils/proxyLazy";
// eslint-disable-next-line path-alias/no-relative
-import { filters, mapMangledModule, mapMangledModuleLazy } from "../webpack";
+import { filters, mapMangledModuleLazy, waitFor } from "../webpack";
import type * as t from "./types/menu";
-export const Menu: t.Menu = proxyLazy(() => {
- const hasDeobfuscator = Vencord.Settings.plugins.MenuItemDeobfuscatorAPI.enabled;
- const menuItems = ["MenuSeparator", "MenuGroup", "MenuItem", "MenuCheckboxItem", "MenuRadioItem", "MenuControlItem"];
+export let Menu = {} as t.Menu;
- const map = mapMangledModule("♫ ⊂(。◕‿‿◕。⊂) ♪", {
- ContextMenu: filters.byCode("getContainerProps"),
- ...Object.fromEntries((hasDeobfuscator ? menuItems : []).map(s => [s, (m: any) => m.name === s]))
- }) as t.Menu;
-
- if (!hasDeobfuscator) {
- for (const m of menuItems)
- Object.defineProperty(map, m, {
- get() {
- throw new Error("MenuItemDeobfuscator must be enabled to use this.");
- }
- });
- }
-
- return map;
-});
+waitFor("MenuItem", m => Menu = m);
export const ContextMenu: t.ContextMenuApi = mapMangledModuleLazy('type:"CONTEXT_MENU_OPEN"', {
open: filters.byCode("stopPropagation"),
diff --git a/src/webpack/webpack.ts b/src/webpack/webpack.ts
index a37fe6d..ffa2daa 100644
--- a/src/webpack/webpack.ts
+++ b/src/webpack/webpack.ts
@@ -109,6 +109,8 @@ export const find = traceFunction("find", function find(filter: FilterFn, getDef
if (!isWaitFor) {
const err = new Error("Didn't find module matching this filter");
if (IS_DEV) {
+ logger.error(err);
+ logger.error(filter);
if (!devToolsOpen)
// Strict behaviour in DevBuilds to fail early and make sure the issue is found
throw err;