Skip to content

Commit

Permalink
Merge pull request #32 from redstonekasi/moonbase-wp
Browse files Browse the repository at this point in the history
Allow for folders in extension webpack modules
  • Loading branch information
Cynosphere authored Feb 7, 2024
2 parents 6d7d285 + 0c87600 commit cde93d9
Show file tree
Hide file tree
Showing 25 changed files with 1,601 additions and 1,630 deletions.
22 changes: 17 additions & 5 deletions build.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,23 @@ async function buildExt(ext, side, copyManifest, fileExt) {

const wpModulesDir = `packages/core-extensions/src/${ext}/webpackModules`;
if (fs.existsSync(wpModulesDir) && side === "index") {
const wpModules = fs.readdirSync(wpModulesDir);
for (const wpModule of wpModules) {
entryPoints.push(
`packages/core-extensions/src/${ext}/webpackModules/${wpModule}`
);
const wpModules = fs.opendirSync(wpModulesDir);
for await (const wpModule of wpModules) {
if (wpModule.isFile()) {
entryPoints.push(
`packages/core-extensions/src/${ext}/webpackModules/${wpModule.name}`
);
} else {
for (const fileExt of ["ts", "tsx"]) {
const path = `packages/core-extensions/src/${ext}/webpackModules/${wpModule.name}/index.${fileExt}`;
if (fs.existsSync(path)) {
entryPoints.push({
in: path,
out: `webpackModules/${wpModule.name}`
});
}
}
}
}
}

Expand Down
1 change: 0 additions & 1 deletion env.d.ts

This file was deleted.

90 changes: 12 additions & 78 deletions packages/core-extensions/src/moonbase/index.tsx
Original file line number Diff line number Diff line change
@@ -1,26 +1,6 @@
import { ExtensionWebExports, WebpackRequireType } from "@moonlight-mod/types";
import extensionsPage from "./ui/extensions";
import configPage from "./ui/config";
import { ExtensionWebExports } from "@moonlight-mod/types";

import { CircleXIconSVG, DownloadIconSVG, TrashIconSVG } from "./types";
import ui from "./ui";

export const pageModules: (require: WebpackRequireType) => Record<
string,
{
name: string;
element: React.FunctionComponent;
}
> = (require) => ({
extensions: {
name: "Extensions",
element: extensionsPage(require)
},
config: {
name: "Config",
element: configPage(require)
}
});

export const webpackModules: ExtensionWebExports["webpackModules"] = {
stores: {
Expand All @@ -30,10 +10,9 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = {
]
},

moonbase: {
ui: {
dependencies: [
{ ext: "spacepack", id: "spacepack" },
{ ext: "settings", id: "settings" },
{ ext: "common", id: "react" },
{ ext: "common", id: "components" },
{ ext: "moonbase", id: "stores" },
Expand All @@ -44,62 +23,17 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = {
"removeButtonContainer:",
'"Missing channel in Channel.openChannelContextMenu"',
".default.HEADER_BAR"
],
entrypoint: true,
run: (module, exports, require) => {
const settings = require("settings_settings").Settings;
const React = require("common_react");
const spacepack = require("spacepack_spacepack").spacepack;
const { MoonbaseSettingsStore } =
require("moonbase_stores") as typeof import("./webpackModules/stores");

const addSection = (name: string, element: React.FunctionComponent) => {
settings.addSection(name, name, element, null, -2, {
stores: [MoonbaseSettingsStore],
element: () => {
// Require it here because lazy loading SUX
const SettingsNotice =
spacepack.findByCode("onSaveButtonColor")[0].exports.default;
return (
<SettingsNotice
submitting={MoonbaseSettingsStore.submitting}
onReset={() => {
MoonbaseSettingsStore.reset();
}}
onSave={() => {
MoonbaseSettingsStore.writeConfig();
}}
/>
);
}
});
};

if (moonlight.getConfigOption<boolean>("moonbase", "sections")) {
const pages = pageModules(require);

const { Text } = require("common_components");
const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports;
]
},

settings.addHeader("Moonbase", -2);
for (const page of Object.values(pages)) {
addSection(page.name, () => (
<>
<Text
className={Margins.marginBottom20}
variant="heading-lg/semibold"
tag="h2"
>
Extensions
</Text>
<page.element />
</>
));
}
} else {
addSection("Moonbase", ui(require));
}
}
moonbase: {
dependencies: [
{ ext: "spacepack", id: "spacepack" },
{ ext: "settings", id: "settings" },
{ ext: "common", id: "react" },
{ ext: "moonbase", id: "ui" }
],
entrypoint: true
}
};

Expand Down
157 changes: 0 additions & 157 deletions packages/core-extensions/src/moonbase/ui/config/index.tsx

This file was deleted.

Loading

0 comments on commit cde93d9

Please sign in to comment.