UNPKG

molstar

Version:

A comprehensive macromolecular library.

81 lines (80 loc) 3.2 kB
/** * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { ColorTheme } from './color'; import { SizeTheme } from './size'; import { Structure } from '../mol-model/structure'; import { Volume } from '../mol-model/volume'; import { ParamDefinition as PD } from '../mol-util/param-definition'; import { Shape } from '../mol-model/shape'; import { CustomProperty } from '../mol-model-props/common/custom-property'; export interface ThemeRegistryContext { colorThemeRegistry: ColorTheme.Registry; sizeThemeRegistry: SizeTheme.Registry; } export interface ThemeDataContext { [k: string]: any; structure?: Structure; volume?: Volume; shape?: Shape; } export { Theme }; interface Theme { color: ColorTheme<any>; size: SizeTheme<any>; } declare namespace Theme { type Props = { [k: string]: any; }; export function create(ctx: ThemeRegistryContext, data: ThemeDataContext, props: Props, theme?: Theme): Theme; export function createEmpty(): Theme; export function ensureDependencies(ctx: CustomProperty.Context, theme: ThemeRegistryContext, data: ThemeDataContext, props: Props): Promise<void>; export function releaseDependencies(theme: ThemeRegistryContext, data: ThemeDataContext, props: Props): void; export {}; } export interface ThemeProvider<T extends ColorTheme<P> | SizeTheme<P>, P extends PD.Params, Id extends string = string> { readonly name: Id; readonly label: string; readonly category: string; readonly factory: (ctx: ThemeDataContext, props: PD.Values<P>) => T; readonly getParams: (ctx: ThemeDataContext) => P; readonly defaultValues: PD.Values<P>; readonly isApplicable: (ctx: ThemeDataContext) => boolean; readonly ensureCustomProperties?: { attach: (ctx: CustomProperty.Context, data: ThemeDataContext) => Promise<void>; detach: (data: ThemeDataContext) => void; }; } export declare class ThemeRegistry<T extends ColorTheme<any> | SizeTheme<any>> { private emptyProvider; private _list; private _map; private _name; get default(): { name: string; provider: ThemeProvider<T, any, string>; }; get list(): { name: string; provider: ThemeProvider<T, any, string>; }[]; get types(): [string, string, string][]; constructor(builtInThemes: { [k: string]: ThemeProvider<T, any>; }, emptyProvider: ThemeProvider<T, any>); private sort; add<P extends PD.Params>(provider: ThemeProvider<T, P>): void; remove(provider: ThemeProvider<T, any>): void; has(provider: ThemeProvider<T, any>): boolean; get<P extends PD.Params>(name: string): ThemeProvider<T, P>; getName(provider: ThemeProvider<T, any>): string; create(name: string, ctx: ThemeDataContext, props?: {}): T; getApplicableList(ctx: ThemeDataContext): { name: string; provider: ThemeProvider<T, any, string>; }[]; getApplicableTypes(ctx: ThemeDataContext): [string, string, string][]; }