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.
|
|
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 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;});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 type ExtractSettingsTypes<O extends Record<string, PluginSettingsItem>> = { [K in keyof O]: InferSettingsType<O[K]>;};export {};
|