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 {};
|