this repo has no description

Add appPanels

Changed files
+68 -2
packages
core-extensions
src
appPanels
types
+19
packages/core-extensions/src/appPanels/index.ts
···
+
import type { ExtensionWebpackModule, Patch } from "@moonlight-mod/types";
+
+
export const patches: Patch[] = [
+
{
+
find: 'setProperty("--custom-app-panels-height"',
+
replace: [
+
{
+
match: /\(0,.\.jsx\)\((.\..),{section:/,
+
replacement: (prev, el) => `...require("appPanels_appPanels").default.getPanels(${el}),${prev}`
+
}
+
]
+
}
+
];
+
+
export const webpackModules: Record<string, ExtensionWebpackModule> = {
+
appPanels: {
+
dependencies: [{ id: "react" }]
+
}
+
};
+10
packages/core-extensions/src/appPanels/manifest.json
···
+
{
+
"id": "appPanels",
+
"apiLevel": 2,
+
"meta": {
+
"name": "App Panels",
+
"tagline": "An API for adding panels around the user/voice controls",
+
"authors": ["NotNite"],
+
"tags": ["library"]
+
}
+
}
+23
packages/core-extensions/src/appPanels/webpackModules/appPanels.ts
···
+
import type { AppPanels as AppPanelsType } from "@moonlight-mod/types/coreExtensions/appPanels";
+
import React from "@moonlight-mod/wp/react";
+
+
const panels: Record<string, React.FC<any>> = {};
+
+
export const AppPanels: AppPanelsType = {
+
addPanel(section, element) {
+
panels[section] = element;
+
},
+
getPanels(panel) {
+
return Object.entries(panels).map(([section, element]) =>
+
React.createElement(
+
panel,
+
{
+
section
+
},
+
React.createElement(element)
+
)
+
);
+
}
+
};
+
+
export default AppPanels;
+1
packages/types/src/coreExtensions.ts
···
export * as ContextMenu from "./coreExtensions/contextMenu";
export * as Notices from "./coreExtensions/notices";
export * as Moonbase from "./coreExtensions/moonbase";
+
export * as AppPanels from "./coreExtensions/appPanels";
+4
packages/types/src/coreExtensions/appPanels.ts
···
+
export type AppPanels = {
+
addPanel: (section: string, element: React.FC<any>) => void;
+
getPanels: (el: React.FC<any>) => React.ReactNode;
+
};
+5 -2
packages/types/src/discord/require.ts
···
+
import { AppPanels } from "../coreExtensions/appPanels";
import { ContextMenu, EvilItemParser } from "../coreExtensions/contextMenu";
import { Markdown } from "../coreExtensions/markdown";
+
import { Moonbase } from "../coreExtensions/moonbase";
+
import { Notices } from "../coreExtensions/notices";
import { Settings } from "../coreExtensions/settings";
import { Spacepack } from "../coreExtensions/spacepack";
-
import { Notices } from "../coreExtensions/notices";
-
import { Moonbase } from "../coreExtensions/moonbase";
declare function WebpackRequire(id: string): any;
+
+
declare function WebpackRequire(id: "appPanels_appPanels"): AppPanels;
declare function WebpackRequire(id: "contextMenu_evilMenu"): EvilItemParser;
declare function WebpackRequire(id: "contextMenu_contextMenu"): ContextMenu;
+6
packages/types/src/import.d.ts
···
+
declare module "@moonlight-mod/wp/appPanels_appPanels" {
+
import { CoreExtensions } from "@moonlight-mod/types";
+
const AppPanels: CoreExtensions.AppPanels.AppPanels;
+
export = AppPanels;
+
}
+
declare module "@moonlight-mod/wp/common_stores";
declare module "@moonlight-mod/wp/contextMenu_evilMenu" {