ldc-supportweb/resources/ts/back/Components/Layout/Settings/SettingRegistry.tsx
2026-04-24 16:53:58 +02:00

37 lines
933 B
TypeScript

// * Packages
import { ReactNode } from "react";
// * Other
import { AppEnv } from "@/types/global";
// eslint-disable-next-line no-unused-vars
type SettingResolver = (appEnv: AppEnv) => ReactNode;
export default class SettingRegistry {
private static resolvers: SettingResolver[] = [];
static add(resolver: SettingResolver) {
this.resolvers.push(resolver);
}
static getAll(appEnv: AppEnv): ReactNode[] {
return this.resolvers.map((resolver) => resolver(appEnv));
}
}
// Add all sections presents in files to the registry.
// @ts-expect-error Glob error.
const modules = import.meta.glob("./Sections/*.tsx", {
eager: true,
}) as Record<
string,
{
// eslint-disable-next-line no-unused-vars
default: (appEnv: AppEnv) => ReactNode;
}
>;
Object.entries(modules)
.sort(([pathA], [pathB]) => pathA.localeCompare(pathB))
.forEach(([, module]) => {
SettingRegistry.add(module.default);
});