import { Card, Menu, Switch, useMantineTheme } from '@mantine/core'; import { useConfig } from '../../tools/state'; import { IModule } from './modules'; export function ModuleWrapper(props: any) { const { module }: { module: IModule } = props; const { config, setConfig } = useConfig(); const enabledModules = config.modules ?? {}; // Remove 'Module' from enabled modules titles const isShown = enabledModules[module.title]?.enabled ?? false; const theme = useMantineTheme(); const items: JSX.Element[] = []; if (module.options) { const keys = Object.keys(module.options); const values = Object.values(module.options); // Get the value and the name of the option const types = values.map((v) => typeof v.value); // Loop over all the types with a for each loop types.forEach((type, index) => { const optionName = `${module.title}.${keys[index]}`; const moduleInConfig = config.modules?.[module.title]; // TODO: Add support for other types if (type === 'boolean') { items.push( { setConfig({ ...config, modules: { ...config.modules, [module.title]: { ...config.modules[module.title], options: { ...config.modules[module.title].options, [keys[index]]: { ...config.modules[module.title].options?.[keys[index]], value: e.currentTarget.checked, }, }, }, }, }); }} label={values[index].name} /> ); } }); } if (!isShown) { return null; } return ( ); }