mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
/**
|
|
* 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 { CatalogEntity } from "../common-api/catalog";
|
|
import { BaseRegistry } from "./base-registry";
|
|
|
|
export interface CatalogEntityDetailsProps<T extends CatalogEntity> {
|
|
entity: T;
|
|
}
|
|
|
|
export interface CatalogEntityDetailComponents<T extends CatalogEntity> {
|
|
Details: React.ComponentType<CatalogEntityDetailsProps<T>>;
|
|
}
|
|
|
|
export interface CatalogEntityDetailRegistration<T extends CatalogEntity> {
|
|
kind: string;
|
|
apiVersions: string[];
|
|
components: CatalogEntityDetailComponents<T>;
|
|
priority?: number;
|
|
}
|
|
|
|
export class CatalogEntityDetailRegistry extends BaseRegistry<CatalogEntityDetailRegistration<CatalogEntity>> {
|
|
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));
|
|
}
|
|
}
|