UNPKG

molstar

Version:

A comprehensive macromolecular library.

151 lines (150 loc) 6.16 kB
/** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ import { PluginStateObject } from '../../mol-plugin-state/objects'; import { StateTransformer, StateTransform } from '../../mol-state'; import { PluginContext } from '../../mol-plugin/context'; import { PluginCommand } from '../command'; import { Observable } from 'rxjs'; import { ParamDefinition } from '../../mol-util/param-definition'; export { PluginBehavior }; interface PluginBehavior<P = unknown> { register(ref: StateTransform.Ref): void; unregister(): void; /** Update params in place. Optionally return a promise if it depends on an async action. */ update?(params: P): boolean | Promise<boolean>; } declare namespace PluginBehavior { const Root_base: { new (data: {}, props?: { label: string; description?: string | undefined; } | undefined): { id: import("../../mol-util/uuid").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string | undefined; data: {}; }; type: PluginStateObject.TypeInfo; is(obj?: import("../../mol-state/object").StateObject<any, import("../../mol-state/object").StateObject.Type<any>> | undefined): obj is { id: import("../../mol-util/uuid").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string | undefined; data: {}; }; }; export class Root extends Root_base { } const Category_base: { new (data: {}, props?: { label: string; description?: string | undefined; } | undefined): { id: import("../../mol-util/uuid").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string | undefined; data: {}; }; type: PluginStateObject.TypeInfo; is(obj?: import("../../mol-state/object").StateObject<any, import("../../mol-state/object").StateObject.Type<any>> | undefined): obj is { id: import("../../mol-util/uuid").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string | undefined; data: {}; }; }; export class Category extends Category_base { } const Behavior_base: { new (data: PluginBehavior<unknown>, props?: { label: string; description?: string | undefined; } | undefined): { id: import("../../mol-util/uuid").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string | undefined; data: PluginBehavior<unknown>; }; type: PluginStateObject.TypeInfo; is(obj?: import("../../mol-state/object").StateObject<any, import("../../mol-state/object").StateObject.Type<any>> | undefined): obj is { id: import("../../mol-util/uuid").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string | undefined; data: PluginBehavior<unknown>; }; }; export class Behavior extends Behavior_base { } export interface Ctor<P = undefined> { new (ctx: PluginContext, params: P): PluginBehavior<P>; } export const Categories: { common: string; representation: string; interaction: string; 'custom-props': string; misc: string; }; export interface CreateParams<P> { name: string; category: keyof typeof Categories; ctor: Ctor<P>; canAutoUpdate?: StateTransformer.Definition<Root, Behavior, P>['canAutoUpdate']; label?: (params: P) => { label: string; description?: string; }; display: { name: string; description?: string; }; params?(a: Root, globalCtx: PluginContext): { [K in keyof P]: ParamDefinition.Any; }; } export type CreateCategory = typeof CreateCategory; export const CreateCategory: StateTransformer<Root, Category, ParamDefinition.Normalize<{ label: string; }>>; export function getCategoryId(t: StateTransformer): "representation" | "custom-props" | "common" | "interaction" | "misc"; export function create<P>(params: CreateParams<P>): StateTransformer<Category, Behavior, P>; export function simpleCommandHandler<T>(cmd: PluginCommand<T>, action: (data: T, ctx: PluginContext) => void | Promise<void>): { new (ctx: PluginContext): { /** private */ sub: PluginCommand.Subscription | undefined; register(): void; unregister(): void; ctx: PluginContext; }; }; export abstract class Handler<P = {}> implements PluginBehavior<P> { protected ctx: PluginContext; protected params: P; private subs; protected subscribeCommand<T>(cmd: PluginCommand<T>, action: PluginCommand.Action<T>): void; protected subscribeObservable<T>(o: Observable<T>, action: (v: T) => void): void; protected track<T>(sub: PluginCommand.Subscription): void; abstract register(): void; unregister(): void; update(params: P): boolean | Promise<boolean>; constructor(ctx: PluginContext, params: P); } export abstract class WithSubscribers<P = {}> implements PluginBehavior<P> { protected plugin: PluginContext; protected params: P; abstract register(ref: string): void; private subs; protected subscribeCommand<T>(cmd: PluginCommand<T>, action: PluginCommand.Action<T>): void; protected subscribeObservable<T>(o: Observable<T>, action: (v: T) => void): void; unregister(): void; constructor(plugin: PluginContext, params: P); } export {}; }