diff --git a/packages/core-extensions/src/moonbase/index.tsx b/packages/core-extensions/src/moonbase/index.tsx index b76319f..c258b52 100644 --- a/packages/core-extensions/src/moonbase/index.tsx +++ b/packages/core-extensions/src/moonbase/index.tsx @@ -61,3 +61,7 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = { } } }; + +export const styles = [ + ".moonbase-settings > :first-child { margin-top: 0px; }" +]; diff --git a/packages/core-extensions/src/moonbase/ui/extensions/settings.tsx b/packages/core-extensions/src/moonbase/ui/extensions/settings.tsx index 19db0d4..c05993d 100644 --- a/packages/core-extensions/src/moonbase/ui/extensions/settings.tsx +++ b/packages/core-extensions/src/moonbase/ui/extensions/settings.tsx @@ -357,9 +357,6 @@ export default (require: typeof WebpackRequire) => { const { Flex } = CommonComponents; return ( - {Object.entries(ext.manifest.settings!).map(([name, setting]) => ( ))} diff --git a/packages/core/src/extension/loader.ts b/packages/core/src/extension/loader.ts index 8c41f36..463ea41 100644 --- a/packages/core/src/extension/loader.ts +++ b/packages/core/src/extension/loader.ts @@ -9,6 +9,7 @@ import Logger from "../util/logger"; import { registerPatch, registerWebpackModule } from "../patch"; import calculateDependencies from "../util/dependency"; import { createEventEmitter } from "../util/event"; +import { registerStyles } from "../styles"; const logger = new Logger("core/extension/loader"); @@ -68,6 +69,12 @@ async function loadExt(ext: DetectedExtension) { } } } + + if (exports.styles != null) { + registerStyles( + exports.styles.map((style, i) => `/* ${ext.id}#${i} */ ${style}`) + ); + } } } diff --git a/packages/core/src/styles.ts b/packages/core/src/styles.ts new file mode 100644 index 0000000..b7212c9 --- /dev/null +++ b/packages/core/src/styles.ts @@ -0,0 +1,13 @@ +const styles: string[] = []; + +export function registerStyles(style: string[]) { + styles.push(...style); +} + +export function installStyles() { + for (const style of styles) { + const el = document.createElement("style"); + el.textContent = style; + document.documentElement.appendChild(el); + } +} diff --git a/packages/types/src/extension.ts b/packages/types/src/extension.ts index 7fc1e95..30c593c 100644 --- a/packages/types/src/extension.ts +++ b/packages/types/src/extension.ts @@ -115,6 +115,7 @@ export type ExtensionWebpackModule = { export type ExtensionWebExports = { patches?: Patch[]; webpackModules?: Record; + styles?: string[]; }; export type IdentifiedPatch = Patch & { diff --git a/packages/web-preload/src/index.ts b/packages/web-preload/src/index.ts index 3d22f63..0c31469 100644 --- a/packages/web-preload/src/index.ts +++ b/packages/web-preload/src/index.ts @@ -1,5 +1,6 @@ import { loadProcessedExtensions } from "@moonlight-mod/core/extension/loader"; import { installWebpackPatcher } from "@moonlight-mod/core/patch"; +import { installStyles } from "@moonlight-mod/core/styles"; import Logger from "@moonlight-mod/core/util/logger"; (async () => { @@ -23,4 +24,8 @@ import Logger from "@moonlight-mod/core/util/logger"; } catch (e) { logger.error("Error setting up web-preload", e); } + + window.addEventListener("DOMContentLoaded", () => { + installStyles(); + }); })();