1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/src/extensions/registries/page-registry.ts
Janne Savolainen 0da1f216fb
Expose reactive way to disable pages in Extension API
Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
2022-07-13 08:42:07 +03:00

48 lines
1.3 KiB
TypeScript

/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { IComputedValue } from "mobx";
import type { PageParamInit, PageParam } from "../../renderer/navigation";
// Extensions-api -> Custom page registration
export interface PageRegistration {
/**
* Page ID, part of extension's page url, must be unique within same extension
* When not provided, first registered page without "id" would be used for page-menus without target.pageId for same extension
*/
id?: string;
params?: PageParams<string | Omit<PageParamInit<any>, "name" | "prefix">>;
components: PageComponents;
enabled?: IComputedValue<boolean>;
}
export interface PageComponents {
Page: React.ComponentType<any>;
}
export interface PageTarget {
extensionId?: string;
pageId?: string;
params?: PageParams;
}
export interface PageParams<V = any> {
[paramName: string]: V;
}
export interface PageComponentProps<P extends PageParams = {}> {
params?: {
[N in keyof P]: PageParam<P[N]>;
};
}
export interface RegisteredPage {
id: string;
extensionId: string;
url: string; // registered extension's page URL (without page params)
params: PageParams<PageParam<any>>; // normalized params
components: PageComponents; // normalized components
}