import type { AppPreferenceRegistration, ClusterFeatureRegistration, KubeObjectDetailRegistration, KubeObjectMenuRegistration, KubeObjectStatusRegistration, PageMenuRegistration, PageRegistration, StatusBarRegistration, } from "./registries"; import { observable } from "mobx"; import { LensExtension } from "./lens-extension"; import { getExtensionPageUrl } from "./registries/page-registry"; export class LensRendererExtension extends LensExtension { @observable.shallow globalPages: PageRegistration[] = []; @observable.shallow clusterPages: PageRegistration[] = []; @observable.shallow globalPageMenus: PageMenuRegistration[] = []; @observable.shallow clusterPageMenus: PageMenuRegistration[] = []; @observable.shallow kubeObjectStatusTexts: KubeObjectStatusRegistration[] = []; @observable.shallow appPreferences: AppPreferenceRegistration[] = []; @observable.shallow clusterFeatures: ClusterFeatureRegistration[] = []; @observable.shallow statusBarItems: StatusBarRegistration[] = []; @observable.shallow kubeObjectDetailItems: KubeObjectDetailRegistration[] = []; @observable.shallow kubeObjectMenuItems: KubeObjectMenuRegistration[] = []; async navigate
(pageId?: string, params?: P) { const { navigate } = await import("../renderer/navigation"); const pageUrl = getExtensionPageUrl({ extensionId: this.name, pageId, params: params ?? {}, // compile to url with params }); navigate(pageUrl); } }