import { MuiIcon, Factory } from "./factories/abstractFactory"; class MuiFactory implements Factory { private static instance: MuiFactory; private registry: Map; private constructor() { this.registry = new Map() } public static getInstance(): MuiFactory { if (!MuiFactory.instance) { MuiFactory.instance = new MuiFactory(); } return MuiFactory.instance; } public register(icons: MuiIcon[]): void { icons.forEach((muiIcon: MuiIcon) => { const { name, icon } = muiIcon; this.registry.set(name, icon) }) } public get(name: string): JSX.Element | undefined { if (!this.registry.has(name)) { console.warn(`we could not find ${name}. Did you add it to the registry?`) } return this.registry.get(name); } } export default MuiFactory;