import React from 'react'; import { Parameter, Question, RecordClass } from '../Utils/WdkModel'; export declare type PluginType = 'attributeAnalysis' | 'questionController' | 'questionForm' | 'questionFormParameter' | 'summaryView' | 'stepAnalysisView' | 'stepAnalysisForm' | 'stepAnalysisResult' | 'questionFilter' | 'stepBox' | 'stepDetails'; export interface PluginEntryContext { type: PluginType; name?: string; recordClassName?: string; searchName?: string; paramName?: string; } declare type CompositePluginComponentProps = { context: PluginEntryContext; pluginProps: PluginProps; defaultComponent?: PluginComponent; fallback?: React.ReactNode; }; declare type ResolvedPluginReferences = { recordClass?: RecordClass; question?: Question; parameter?: Parameter; }; declare type PluginComponent = React.ComponentType; /** * An entry for a ClientPlugin. * * @example * { * type: 'attributeReporter', * name: 'wordCloud', * component: WordCloudPlugin * } * * @example * { * type: 'attributeReporter', * name: 'wordCloud', * recordClassName: 'transcript', * component: WordCloudTranscriptPlugin * } * * @example * { * type: 'downloadForm', * name: 'gff', * recordClass: 'gene', * component: GeneGffDownloadForm * } * * @example * { * type: 'recordPageAttribute', * name: 'gbrowse', * recordClassName: 'gene', * component: GbrowseGeneAttribute * } * */ export interface ClientPluginRegistryEntry { type: PluginType; name?: string; recordClassName?: string; searchName?: string; test?: (references: ResolvedPluginReferences) => boolean; component: PluginComponent; } declare function makeCompositePluginComponentUncached(registry: ClientPluginRegistryEntry[]): React.ComponentType>; export declare const makeCompositePluginComponent: typeof makeCompositePluginComponentUncached; export declare const PluginContext: React.Context>>; export declare function Plugin(props: CompositePluginComponentProps): JSX.Element; export {}; //# sourceMappingURL=ClientPlugin.d.ts.map