From a12f5d7872dab0e778e20aa8eec4f24ca1c52beb Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Mon, 10 Oct 2022 10:16:48 +0300 Subject: [PATCH] Add cluster modals registrator Signed-off-by: Alex Andreev --- src/extensions/lens-renderer-extension.ts | 1 + src/extensions/registries/index.ts | 1 + src/extensions/registries/modal-registry.ts | 10 ++++++++ ...luster-frame-child-component.injectable.ts | 17 +++++++++++++ .../cluster-modals-registrator.injectable.ts | 25 +++++++++++++++++++ 5 files changed, 54 insertions(+) create mode 100644 src/extensions/registries/modal-registry.ts create mode 100644 src/renderer/cluster-modals/cluster-modals-cluster-frame-child-component.injectable.ts create mode 100644 src/renderer/cluster-modals/cluster-modals-registrator.injectable.ts diff --git a/src/extensions/lens-renderer-extension.ts b/src/extensions/lens-renderer-extension.ts index d744d261d4..faf0ea716a 100644 --- a/src/extensions/lens-renderer-extension.ts +++ b/src/extensions/lens-renderer-extension.ts @@ -33,6 +33,7 @@ export class LensRendererExtension extends LensExtension Cluster frame custom modal registration + +import type { IComputedValue } from "mobx"; + +export interface ClusterModalRegistration { + id: string; + component: React.ComponentType; + visible?: IComputedValue; +} \ No newline at end of file diff --git a/src/renderer/cluster-modals/cluster-modals-cluster-frame-child-component.injectable.ts b/src/renderer/cluster-modals/cluster-modals-cluster-frame-child-component.injectable.ts new file mode 100644 index 0000000000..225263a945 --- /dev/null +++ b/src/renderer/cluster-modals/cluster-modals-cluster-frame-child-component.injectable.ts @@ -0,0 +1,17 @@ +import { getInjectable } from "@ogre-tools/injectable"; +import { computed } from "mobx"; +import { clusterFrameChildComponentInjectionToken } from "../frames/cluster-frame/cluster-frame-child-component-injection-token"; + +const clusterModalsClusterFrameChildComponentInjectable = getInjectable({ + id: "cluster-modals-cluster-frame-child-component", + + instantiate: () => ({ + id: "cluster-modals", + shouldRender: computed(() => true), + Component: ClusterModals, + }), + + injectionToken: clusterFrameChildComponentInjectionToken, +}); + +export default clusterModalsClusterFrameChildComponentInjectable; \ No newline at end of file diff --git a/src/renderer/cluster-modals/cluster-modals-registrator.injectable.ts b/src/renderer/cluster-modals/cluster-modals-registrator.injectable.ts new file mode 100644 index 0000000000..e719ceaae6 --- /dev/null +++ b/src/renderer/cluster-modals/cluster-modals-registrator.injectable.ts @@ -0,0 +1,25 @@ +import { getInjectable } from "@ogre-tools/injectable"; +import { extensionRegistratorInjectionToken } from "../../extensions/extension-loader/extension-registrator-injection-token"; +import type { LensRendererExtension } from "../../extensions/lens-renderer-extension"; + +const clusterModalsRegistratorInjectable = getInjectable({ + id: "cluster-modals-registrator", + + instantiate: (): ExtensionRegistrator => { + return (ext) => { + const extension = ext as LensRendererExtension; + + return extension.clusterModals.map((registration) => { + return { + id: registration.id, + Component: registration.component, + visible: registration.visible, + } + }) + }; + }, + + injectionToken: extensionRegistratorInjectionToken, +}); + +export default clusterModalsRegistratorInjectable; \ No newline at end of file