@superset-ui/core
Version:
44 lines • 2.21 kB
TypeScript
import { ComponentType } from 'react';
import { Plugin, QueryFormData } from '../..';
import ChartMetadata from './ChartMetadata';
import { BuildQueryFunction, TransformProps } from '../types/TransformFunction';
import { ChartControlPanel } from './ChartControlPanel';
import { ChartProps } from '..';
export type PromiseOrValue<T> = Promise<T> | T;
export type PromiseOrValueLoader<T> = () => PromiseOrValue<T>;
export type ChartType = ComponentType<any>;
type ValueOrModuleWithValue<T> = T | {
default: T;
};
interface ChartPluginConfig<FormData extends QueryFormData = QueryFormData, Props extends ChartProps = ChartProps> {
metadata: ChartMetadata;
/** Use buildQuery for immediate value. For lazy-loading, use loadBuildQuery. */
buildQuery?: BuildQueryFunction<FormData>;
/** Use loadBuildQuery for dynamic import (lazy-loading) */
loadBuildQuery?: PromiseOrValueLoader<ValueOrModuleWithValue<BuildQueryFunction<FormData>>>;
/** Use transformProps for immediate value. For lazy-loading, use loadTransformProps. */
transformProps?: TransformProps<Props>;
/** Use loadTransformProps for dynamic import (lazy-loading) */
loadTransformProps?: PromiseOrValueLoader<ValueOrModuleWithValue<TransformProps<Props>>>;
/** Use Chart for immediate value. For lazy-loading, use loadChart. */
Chart?: ChartType;
/** Use loadChart for dynamic import (lazy-loading) */
loadChart?: PromiseOrValueLoader<ValueOrModuleWithValue<ChartType>>;
/** Control panel configuration object */
controlPanel?: ChartControlPanel;
}
export default class ChartPlugin<FormData extends QueryFormData = QueryFormData, Props extends ChartProps = ChartProps> extends Plugin {
controlPanel: ChartControlPanel;
metadata: ChartMetadata;
loadBuildQuery?: PromiseOrValueLoader<BuildQueryFunction<FormData>>;
loadTransformProps: PromiseOrValueLoader<TransformProps<Props>>;
loadChart: PromiseOrValueLoader<ChartType>;
constructor(config: ChartPluginConfig<FormData, Props>);
register(): this;
unregister(): this;
configure(config: {
[key: string]: unknown;
}, replace?: boolean): this;
}
export {};
//# sourceMappingURL=ChartPlugin.d.ts.map