import {AbstractModal} from "../../../ui/react-elements/ModalDefinitions"; import {ModalConstructorArguments} from "tc-shared/ui/react-elements/modal/Definitions"; export interface RegisteredModal { modalId: T, classLoader: () => Promise AbstractModal>, popoutSupported: boolean } const registeredModals: { [T in keyof ModalConstructorArguments]?: RegisteredModal } = {}; export function findRegisteredModal(name: T) : RegisteredModal | undefined { return registeredModals[name] as any; } function registerModal(modal: RegisteredModal) { registeredModals[modal.modalId] = modal as any; } registerModal({ modalId: "video-viewer", classLoader: async () => await import("tc-shared/video-viewer/Renderer"), popoutSupported: true }); registerModal({ modalId: "channel-edit", classLoader: async () => await import("tc-shared/ui/modal/channel-edit/Renderer"), popoutSupported: false /* TODO: Needs style fixing */ }); registerModal({ modalId: "echo-test", classLoader: async () => await import("tc-shared/ui/modal/echo-test/Renderer"), popoutSupported: false /* TODO: Needs style fixing */ }); registerModal({ modalId: "global-settings-editor", classLoader: async () => await import("tc-shared/ui/modal/global-settings-editor/Renderer"), popoutSupported: true }); registerModal({ modalId: "conversation", classLoader: async () => await import("../../frames/side/PopoutConversationRenderer"), popoutSupported: true }); registerModal({ modalId: "css-editor", classLoader: async () => await import("tc-shared/ui/modal/css-editor/Renderer"), popoutSupported: true }); registerModal({ modalId: "channel-tree", classLoader: async () => await import("tc-shared/ui/tree/popout/RendererModal"), popoutSupported: true }); registerModal({ modalId: "modal-connect", classLoader: async () => await import("tc-shared/ui/modal/connect/Renderer"), popoutSupported: true }); registerModal({ modalId: "modal-invite", classLoader: async () => await import("tc-shared/ui/modal/invite/Renderer"), popoutSupported: true });