1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import type { App } from './api/index.js';
- export interface PluginDescriptor {
- id: string;
- label: string;
- app: App;
- packageName?: string;
- homepage?: string;
- componentStateTypes?: string[];
- logo?: string;
- disableAppScope?: boolean;
- disablePluginScope?: boolean;
- /**
- * Run the plugin setup and expose the api even if the devtools is not opened yet.
- * Useful to record timeline events early.
- */
- enableEarlyProxy?: boolean;
- settings?: Record<string, PluginSettingsItem>;
- }
- export declare type PluginSettingsItem = {
- label: string;
- description?: string;
- } & ({
- type: 'boolean';
- defaultValue: boolean;
- } | {
- type: 'choice';
- defaultValue: string | number;
- options: {
- value: string | number;
- label: string;
- }[];
- component?: 'select' | 'button-group';
- } | {
- type: 'text';
- defaultValue: string;
- });
- declare type InferSettingsType<T extends PluginSettingsItem> = [T] extends [{
- type: 'boolean';
- }] ? boolean : [T] extends [{
- type: 'choice';
- }] ? T['options'][number]['value'] : [T] extends [{
- type: 'text';
- }] ? string : unknown;
- export declare type ExtractSettingsTypes<O extends Record<string, PluginSettingsItem>> = {
- [K in keyof O]: InferSettingsType<O[K]>;
- };
- export {};
|