molstar
Version:
A comprehensive macromolecular library.
353 lines (352 loc) • 12.2 kB
TypeScript
/**
* Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import * as React from 'react';
import { Vec2 } from '../../mol-math/linear-algebra';
import { Legend as LegendData } from '../../mol-util/legend';
import { ParamDefinition as PD } from '../../mol-util/param-definition';
import { ParamMapping } from '../../mol-util/param-mapping';
import { PluginUIComponent } from '../base';
import { ActionMenu } from './action-menu';
import { PluginUIContext } from '../context';
export declare type ParameterControlsCategoryFilter = string | null | (string | null)[];
export interface ParameterControlsProps<P extends PD.Params = PD.Params> {
params: P;
values: any;
onChange?: ParamsOnChange<PD.ValuesFor<P>>;
onChangeValues?: (values: PD.ValuesFor<P>, prev: PD.ValuesFor<P>) => void;
isDisabled?: boolean;
onEnter?: () => void;
}
export declare class ParameterControls<P extends PD.Params> extends React.PureComponent<ParameterControlsProps<P>> {
onChange: ParamOnChange;
renderGroup(group: ParamInfo[]): JSX.Element[] | null;
renderPart(groups: ParamInfo[][]): JSX.Element[] | null;
paramGroups: (params: PD.Params) => {
essentials: ParamInfo[][];
advanced: ParamInfo[][];
};
render(): JSX.Element | JSX.Element[] | null;
}
export declare class ParameterMappingControl<S, T> extends PluginUIComponent<{
mapping: ParamMapping<S, T, PluginUIContext>;
}> {
setSettings: (p: {
param: PD.Base<any>;
name: string;
value: any;
}, old: any) => void;
componentDidMount(): void;
render(): JSX.Element;
}
declare type ParamInfo = [string, PD.Any, ParamControl];
export declare class ParamHelp<L extends LegendData> extends React.PureComponent<{
legend?: L;
description?: string;
}> {
render(): JSX.Element;
}
export declare type ParamsOnChange<P> = (params: {
param: PD.Base<any>;
name: string;
value: any;
}, values: Readonly<P>) => void;
export declare type ParamOnChange = (params: {
param: PD.Base<any>;
name: string;
value: any;
}) => void;
export interface ParamProps<P extends PD.Base<any> = PD.Base<any>> {
name: string;
value: P['defaultValue'];
param: P;
isDisabled?: boolean;
onChange: ParamOnChange;
onEnter?: () => void;
}
export declare type ParamControl = React.ComponentClass<ParamProps<any>>;
export declare abstract class SimpleParam<P extends PD.Any> extends React.PureComponent<ParamProps<P>, {
showHelp: boolean;
}> {
state: {
showHelp: boolean;
};
protected update(value: P['defaultValue']): void;
abstract renderControl(): JSX.Element;
renderAddOn(): JSX.Element | null;
toggleHelp: () => void;
render(): JSX.Element;
}
export declare class BoolControl extends SimpleParam<PD.BooleanParam> {
onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
renderControl(): JSX.Element;
}
export declare class LineGraphControl extends React.PureComponent<ParamProps<PD.LineGraph>, {
isExpanded: boolean;
isOverPoint: boolean;
message: string;
}> {
state: {
isExpanded: boolean;
isOverPoint: boolean;
message: string;
};
onHover: (point?: Vec2 | undefined) => void;
onDrag: (point: Vec2) => void;
onChange: (value: PD.LineGraph['defaultValue']) => void;
toggleExpanded: (e: React.MouseEvent<HTMLButtonElement>) => void;
render(): JSX.Element;
}
export declare class NumberInputControl extends React.PureComponent<ParamProps<PD.Numeric>> {
state: {
value: string;
};
update: (value: number) => void;
render(): JSX.Element;
}
export declare class NumberRangeControl extends SimpleParam<PD.Numeric> {
onChange: (v: number) => void;
renderControl(): JSX.Element;
}
export declare class TextControl extends SimpleParam<PD.Text> {
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onKeyPress: (e: React.KeyboardEvent<HTMLInputElement>) => void;
renderControl(): JSX.Element;
}
export declare class PureSelectControl extends React.PureComponent<ParamProps<PD.Select<string | number>> & {
title?: string;
}> {
protected update(value: string | number): void;
onChange: (e: React.ChangeEvent<HTMLSelectElement>) => void;
render(): JSX.Element;
}
export declare class SelectControl extends React.PureComponent<ParamProps<PD.Select<string | number>>, {
showHelp: boolean;
showOptions: boolean;
}> {
state: {
showHelp: boolean;
showOptions: boolean;
};
onSelect: ActionMenu.OnSelect;
toggle: () => void;
cycle: () => void;
items: (param: PD.Select<any>) => ActionMenu.Items[];
renderControl(): JSX.Element;
renderAddOn(): JSX.Element | null;
toggleHelp: () => void;
render(): JSX.Element;
}
export declare class ValueRefControl extends React.PureComponent<ParamProps<PD.ValueRef<any>>, {
showHelp: boolean;
showOptions: boolean;
}> {
state: {
showHelp: boolean;
showOptions: boolean;
};
onSelect: ActionMenu.OnSelect;
toggle: () => void;
items: (param: PD.ValueRef<any>) => ActionMenu.Items[];
renderControl(): JSX.Element;
renderAddOn(): JSX.Element | null;
toggleHelp: () => void;
render(): JSX.Element;
}
export declare class IntervalControl extends React.PureComponent<ParamProps<PD.Interval>, {
isExpanded: boolean;
}> {
state: {
isExpanded: boolean;
};
components: {
0: PD.Numeric;
1: PD.Numeric;
};
change(value: PD.MultiSelect<any>['defaultValue']): void;
componentChange: ParamOnChange;
toggleExpanded: (e: React.MouseEvent<HTMLButtonElement>) => void;
render(): JSX.Element;
}
export declare class BoundedIntervalControl extends SimpleParam<PD.Interval> {
onChange: (v: [number, number]) => void;
renderControl(): JSX.Element;
}
export declare class ColorControl extends SimpleParam<PD.Color> {
onChange: (e: React.ChangeEvent<HTMLSelectElement>) => void;
stripStyle(): React.CSSProperties;
renderControl(): JSX.Element;
}
export declare class ColorListControl extends React.PureComponent<ParamProps<PD.ColorList>, {
showHelp: boolean;
show?: 'edit' | 'presets';
}> {
state: {
showHelp: boolean;
show: "presets" | "edit" | undefined;
};
protected update(value: PD.ColorList['defaultValue']): void;
toggleEdit: () => void;
togglePresets: () => void;
renderControl(): JSX.Element;
selectPreset: ActionMenu.OnSelect;
colorsChanged: ParamOnChange;
isInterpolatedChanged: ParamOnChange;
renderColors(): JSX.Element | null;
toggleHelp: () => void;
render(): JSX.Element;
}
export declare class OffsetColorListControl extends React.PureComponent<ParamProps<PD.ColorList>, {
showHelp: boolean;
show?: 'edit' | 'presets';
}> {
state: {
showHelp: boolean;
show: "presets" | "edit" | undefined;
};
protected update(value: PD.ColorList['defaultValue']): void;
toggleEdit: () => void;
togglePresets: () => void;
renderControl(): JSX.Element;
selectPreset: ActionMenu.OnSelect;
colorsChanged: ParamOnChange;
isInterpolatedChanged: ParamOnChange;
renderColors(): JSX.Element | null;
toggleHelp: () => void;
render(): JSX.Element;
}
export declare class Vec3Control extends React.PureComponent<ParamProps<PD.Vec3>, {
isExpanded: boolean;
}> {
state: {
isExpanded: boolean;
};
components: {
0: PD.Numeric;
1: PD.Numeric;
2: PD.Numeric;
};
change(value: PD.MultiSelect<any>['defaultValue']): void;
componentChange: ParamOnChange;
toggleExpanded: (e: React.MouseEvent<HTMLButtonElement>) => void;
render(): JSX.Element;
}
export declare class Mat4Control extends React.PureComponent<ParamProps<PD.Mat4>, {
isExpanded: boolean;
}> {
state: {
isExpanded: boolean;
};
components: {
json: PD.Text<string>;
};
change(value: PD.MultiSelect<any>['defaultValue']): void;
componentChange: ParamOnChange;
toggleExpanded: (e: React.MouseEvent<HTMLButtonElement>) => void;
changeValue(idx: number): (v: number) => void;
get grid(): JSX.Element;
render(): JSX.Element;
}
export declare class UrlControl extends SimpleParam<PD.UrlParam> {
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onKeyPress: (e: React.KeyboardEvent<HTMLInputElement>) => void;
renderControl(): JSX.Element;
}
export declare class FileControl extends React.PureComponent<ParamProps<PD.FileParam>> {
state: {
showHelp: boolean;
};
change(value: File): void;
onChangeFile: (e: React.ChangeEvent<HTMLInputElement>) => void;
toggleHelp: () => void;
renderControl(): JSX.Element;
render(): JSX.Element;
}
export declare class FileListControl extends React.PureComponent<ParamProps<PD.FileListParam>> {
state: {
showHelp: boolean;
};
change(value: FileList): void;
onChangeFileList: (e: React.ChangeEvent<HTMLInputElement>) => void;
toggleHelp: () => void;
renderControl(): JSX.Element;
render(): JSX.Element;
}
export declare class MultiSelectControl extends React.PureComponent<ParamProps<PD.MultiSelect<any>>, {
isExpanded: boolean;
}> {
state: {
isExpanded: boolean;
};
change(value: PD.MultiSelect<any>['defaultValue']): void;
toggle(key: string): (e: React.MouseEvent<HTMLButtonElement>) => void;
toggleExpanded: (e: React.MouseEvent<HTMLButtonElement>) => void;
render(): JSX.Element;
}
export declare class GroupControl extends React.PureComponent<ParamProps<PD.Group<any>> & {
inMapped?: boolean;
}, {
isExpanded: boolean;
showHelp: boolean;
}> {
state: {
isExpanded: boolean;
showHelp: boolean;
};
change(value: any): void;
onChangeParam: ParamOnChange;
toggleExpanded: () => void;
pivoted(): JSX.Element;
render(): JSX.Element | null;
}
export declare class MappedControl extends React.PureComponent<ParamProps<PD.Mapped<any>>, {
isExpanded: boolean;
}> {
state: {
isExpanded: boolean;
};
private valuesCache;
private setValues;
private getValues;
change(value: PD.Mapped<any>['defaultValue']): void;
onChangeName: ParamOnChange;
onChangeParam: ParamOnChange;
toggleExpanded: () => void;
areParamsEmpty(params: PD.Params): boolean;
render(): JSX.Element;
}
export declare class ObjectListControl extends React.PureComponent<ParamProps<PD.ObjectList>, {
isExpanded: boolean;
}> {
state: {
isExpanded: boolean;
};
change(value: any): void;
add: (v: object) => void;
actions: {
update: (v: object, i: number) => void;
move: (i: number, dir: -1 | 1) => void;
remove: (i: number) => void;
};
toggleExpanded: (e: React.MouseEvent<HTMLButtonElement>) => void;
render(): JSX.Element;
}
export declare class ConditionedControl extends React.PureComponent<ParamProps<PD.Conditioned<any, any, any>>> {
change(value: PD.Conditioned<any, any, any>['defaultValue']): void;
onChangeCondition: ParamOnChange;
onChangeParam: ParamOnChange;
render(): JSX.Element;
}
export declare class ConvertedControl extends React.PureComponent<ParamProps<PD.Converted<any, any>>> {
onChange: ParamOnChange;
render(): JSX.Element | null;
}
export declare class ScriptControl extends SimpleParam<PD.Script> {
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onKeyPress: (e: React.KeyboardEvent<HTMLInputElement>) => void;
renderControl(): JSX.Element;
}
export {};