All files / src/components/common/PeekMode ComponentRegistry.ts

0% Statements 0/8
0% Branches 0/2
0% Functions 0/2
0% Lines 0/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                                                         
import React from "react";
import { ID, Component } from "./types";
 
class ComponentRegistry {
  private static forms: Record<ID, () => Component> = {} as Record<
    ID,
    () => Component
  >;
 
  static registerLazy(id: ID, componentLoader: () => Component): void {
    this.forms[id] = componentLoader;
  }
 
  static show(id: ID, props?: Record<string, any>): React.ReactElement | null {
    const componentLoader = this.forms[id];
 
    if (componentLoader !== undefined) {
      const Component = componentLoader();
      const element = React.createElement(Component, props);
 
      return element;
    }
 
    return null;
  }
}
 
export default ComponentRegistry;