diff --git a/lib/discord/src/design.ts b/lib/discord/src/design.ts index 654b24f..a941ca1 100644 --- a/lib/discord/src/design.ts +++ b/lib/discord/src/design.ts @@ -1,18 +1,27 @@ -import { byDependencies, byProps, looseDeps, preferExports, relativeDep } from '@revenge-mod/modules/finders/filters' +import { + byDependencies, + byProps, + bySingleProp, + looseDeps, + preferExports, + relativeDep, +} from '@revenge-mod/modules/finders/filters' import { lookupModule } from '@revenge-mod/modules/finders/lookup' +import { ReactJsxRuntimeModuleId, ReactModuleId, ReactNativeModuleId } from '@revenge-mod/react' + import { proxify } from '@revenge-mod/utils/proxy' import type { DiscordModules } from './types' // design/native.tsx -export let Components: Components = proxify( +export let Design: Design = proxify( () => { // ID: 3236 // [3237, 1366, 3238, 3239, 2, ...]; const module = lookupModule( preferExports( - byProps('TableRow', 'Button'), + byProps('TableRow', 'Button'), byDependencies(looseDeps([relativeDep(1), undefined, relativeDep(2), relativeDep(3), 2])), ), { @@ -20,14 +29,51 @@ export let Components: Components = proxify( }, ) - if (module) return (Components = module) + if (module) return (Design = module) }, { hint: 'object', }, )! -export interface Components { +export let FormSwitch: DiscordModules.Components.FormSwitch = proxify(() => { + // ID: 4655 + // Deps: [46, 175, 27, 180, 2822, 1311, 687, 3358, 1372, 3241, 3242, 4656, 4657, 2] + + // ID: 46 + // Deps: [47, 48, 35, 49] + + const module = lookupModule( + preferExports( + bySingleProp<{ FormSwitch: DiscordModules.Components.FormSwitch }>('FormSwitch'), + byDependencies([ + [relativeDep(1), relativeDep(2), undefined, relativeDep(3)], + ReactModuleId, + ReactNativeModuleId, + ReactJsxRuntimeModuleId, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + relativeDep(1), + relativeDep(2), + 2, + ]), + ), + { + includeUninitialized: true, + }, + ) + + if (module) return (FormSwitch = module.FormSwitch) +})! + +export interface Design { + createStyles: DiscordModules.Styles.CreateStylesFunction + ActionSheet: DiscordModules.Components.ActionSheet ActionSheetRow: DiscordModules.Components.ActionSheetRow ActionSheetSwitchRow: DiscordModules.Components.ActionSheetSwitchRow @@ -37,7 +83,6 @@ export interface Components { Card: DiscordModules.Components.Card ContextMenu: DiscordModules.Components.ContextMenu ContextMenuItem: DiscordModules.Components.ContextMenuItem - FormSwitch: DiscordModules.Components.FormSwitch IconButton: DiscordModules.Components.IconButton ImageButton: DiscordModules.Components.ImageButton Stack: DiscordModules.Components.Stack diff --git a/lib/discord/src/types/index.ts b/lib/discord/src/types/index.ts index e5b8330..04254d4 100644 --- a/lib/discord/src/types/index.ts +++ b/lib/discord/src/types/index.ts @@ -130,7 +130,7 @@ export namespace DiscordModules { | 'eyebrow' export type TextStyleSheet = Record - export type CreateStylesFn = >( + export type CreateStylesFunction = >( styles: S, ) => () => S } diff --git a/src/components/Page.tsx b/src/components/Page.tsx index 024c518..66c1a5f 100644 --- a/src/components/Page.tsx +++ b/src/components/Page.tsx @@ -1,12 +1,12 @@ -import { Components } from '@revenge-mod/discord/design' +import { Design } from '@revenge-mod/discord/design' import type { DiscordModules } from '@revenge-mod/discord/types' import { ReactNative } from '@revenge-mod/react' export default function Page(props: DiscordModules.Components.StackProps) { return ( - + {props.children} - + ) } diff --git a/src/components/SearchInput.tsx b/src/components/SearchInput.tsx index 22b312f..a92a70a 100644 --- a/src/components/SearchInput.tsx +++ b/src/components/SearchInput.tsx @@ -1,4 +1,4 @@ -import { Components } from '@revenge-mod/discord/design' +import { Design } from '@revenge-mod/discord/design' import { lookupGeneratedIconComponent } from '@revenge-mod/utils/discord' import type { DiscordModules } from '@revenge-mod/discord/types' @@ -7,7 +7,7 @@ const MagnifyingGlassIcon = lookupGeneratedIconComponent('MagnifyingGlassIcon') export default function SearchInput(props: DiscordModules.Components.TextInputProps) { return ( - + ) } diff --git a/src/plugins/developer-settings/definitions/EvaluateJavaScriptSetting.tsx b/src/plugins/developer-settings/definitions/EvaluateJavaScriptSetting.tsx index 583f50b..37037a2 100644 --- a/src/plugins/developer-settings/definitions/EvaluateJavaScriptSetting.tsx +++ b/src/plugins/developer-settings/definitions/EvaluateJavaScriptSetting.tsx @@ -1,7 +1,7 @@ import { React } from '@revenge-mod/react' import { AlertActionCreators } from '@revenge-mod/discord/actions' -import { Components } from '@revenge-mod/discord/design' +import { Design } from '@revenge-mod/discord/design' import { nodeUtil } from '@revenge-mod/externals/browserify' @@ -36,7 +36,7 @@ const { TableSwitchRow, Text, TextArea, -} = Components +} = Design function EvaluateJavaScriptAlert() { const code = React.useRef('') diff --git a/src/plugins/developer-settings/screens/AssetBrowserSettingScreen.tsx b/src/plugins/developer-settings/screens/AssetBrowserSettingScreen.tsx index e756e80..1afb61e 100644 --- a/src/plugins/developer-settings/screens/AssetBrowserSettingScreen.tsx +++ b/src/plugins/developer-settings/screens/AssetBrowserSettingScreen.tsx @@ -1,5 +1,5 @@ import { AlertActionCreators } from '@revenge-mod/discord/actions' -import { Components } from '@revenge-mod/discord/design' +import { Design } from '@revenge-mod/discord/design' import { Clipboard } from '@revenge-mod/externals/react-native-clipboard' import { FlashList } from '@revenge-mod/externals/shopify' import { React, ReactNative } from '@revenge-mod/react' @@ -13,7 +13,7 @@ import { getAllAssets, getAssetId } from '@revenge-mod/assets' import type { Asset, AssetId } from '@revenge-mod/assets/types' const { Image, StyleSheet, View } = ReactNative -const { AlertModal, AlertActionButton, TableRow, Text, Stack } = Components +const { AlertModal, AlertActionButton, TableRow, Text, Stack } = Design const Displayable = new Set(['png', 'jpg', 'svg', 'webp']) const UndisplayableFallback = { diff --git a/src/plugins/developer-settings/screens/RevengeDeveloperSettingScreen.tsx b/src/plugins/developer-settings/screens/RevengeDeveloperSettingScreen.tsx index 5396007..69dfc19 100644 --- a/src/plugins/developer-settings/screens/RevengeDeveloperSettingScreen.tsx +++ b/src/plugins/developer-settings/screens/RevengeDeveloperSettingScreen.tsx @@ -1,4 +1,4 @@ -import { Components } from '@revenge-mod/discord/design' +import { Design } from '@revenge-mod/discord/design' import { SettingListRenderer } from '@revenge-mod/discord/modules/settings/renderer' import { React, ReactNative } from '@revenge-mod/react' @@ -8,7 +8,7 @@ import { DevToolsContext } from '../devtools' // TODO(plugins/settings): debug bridge export default function RevengeDeveloperSettingScreen() { return ( - + {globalThis.__REACT_DEVTOOLS__ && } - + ) } export function ReactDevToolsAddressSetting() { return ( - - + You are using the next version of Revenge! - - + + This version is experimental and may be unstable. - + ), },