this repo has no description
at v1.0.5 3.2 kB view raw
1import { ExtensionWebExports, WebpackRequireType } from "@moonlight-mod/types"; 2import extensionsPage from "./ui/extensions"; 3import configPage from "./ui/config"; 4 5import { CircleXIconSVG, DownloadIconSVG, TrashIconSVG } from "./types"; 6import ui from "./ui"; 7 8export const pageModules: (require: WebpackRequireType) => Record< 9 string, 10 { 11 name: string; 12 element: React.FunctionComponent; 13 } 14> = (require) => ({ 15 extensions: { 16 name: "Extensions", 17 element: extensionsPage(require) 18 }, 19 config: { 20 name: "Config", 21 element: configPage(require) 22 } 23}); 24 25export const webpackModules: ExtensionWebExports["webpackModules"] = { 26 stores: { 27 dependencies: [ 28 { ext: "common", id: "flux" }, 29 { ext: "common", id: "fluxDispatcher" } 30 ] 31 }, 32 33 moonbase: { 34 dependencies: [ 35 { ext: "spacepack", id: "spacepack" }, 36 { ext: "settings", id: "settings" }, 37 { ext: "common", id: "react" }, 38 { ext: "common", id: "components" }, 39 { ext: "moonbase", id: "stores" }, 40 DownloadIconSVG, 41 TrashIconSVG, 42 CircleXIconSVG, 43 "Masks.PANEL_BUTTON", 44 "removeButtonContainer:", 45 '"Missing channel in Channel.openChannelContextMenu"' 46 ], 47 entrypoint: true, 48 run: (module, exports, require) => { 49 const settings = require("settings_settings").Settings; 50 const React = require("common_react"); 51 const spacepack = require("spacepack_spacepack").spacepack; 52 const { MoonbaseSettingsStore } = 53 require("moonbase_stores") as typeof import("./webpackModules/stores"); 54 55 const addSection = (name: string, element: React.FunctionComponent) => { 56 settings.addSection(name, name, element, null, -2, { 57 stores: [MoonbaseSettingsStore], 58 element: () => { 59 // Require it here because lazy loading SUX 60 const SettingsNotice = 61 spacepack.findByCode("onSaveButtonColor")[0].exports.default; 62 return ( 63 <SettingsNotice 64 submitting={MoonbaseSettingsStore.submitting} 65 onReset={() => { 66 MoonbaseSettingsStore.reset(); 67 }} 68 onSave={() => { 69 MoonbaseSettingsStore.writeConfig(); 70 }} 71 /> 72 ); 73 } 74 }); 75 }; 76 77 if (moonlight.getConfigOption<boolean>("moonbase", "sections")) { 78 const pages = pageModules(require); 79 80 const { Text } = require("common_components"); 81 const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; 82 83 settings.addHeader("Moonbase", -2); 84 for (const page of Object.values(pages)) { 85 addSection(page.name, () => ( 86 <> 87 <Text 88 className={Margins.marginBottom20} 89 variant="heading-lg/semibold" 90 tag="h2" 91 > 92 Extensions 93 </Text> 94 <page.element /> 95 </> 96 )); 97 } 98 } else { 99 addSection("Moonbase", ui(require)); 100 } 101 } 102 } 103}; 104 105export const styles = [ 106 ".moonbase-settings > :first-child { margin-top: 0px; }" 107];