You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
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 {};
|
|
|