/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import type React from "react"; import type { Disposer } from "../../common/utils"; import type { CatalogEntity } from "../common-api/catalog"; import { BaseRegistry } from "./base-registry"; export interface CatalogEntityDetailsProps { entity: T; } export interface CatalogEntityDetailComponents { Details: React.ComponentType>; } export interface CatalogEntityDetailRegistration { kind: string; apiVersions: string[]; components: CatalogEntityDetailComponents; priority?: number; } export class CatalogEntityDetailRegistry extends BaseRegistry> { add(items: CatalogEntityDetailRegistration | CatalogEntityDetailRegistration[]): Disposer { return super.add(items as never); } getItemsForKind(kind: string, apiVersion: string) { const items = this.getItems().filter((item) => { return item.kind === kind && item.apiVersions.includes(apiVersion); }); return items.sort((a, b) => (b.priority ?? 50) - (a.priority ?? 50)); } }