UNPKG

molstar

Version:

A comprehensive macromolecular library.

353 lines (352 loc) 12.2 kB
/** * 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 {};