/** * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal * @author Adam Midlik */ import { PluginStateObject } from '../../mol-plugin-state/objects.js'; import { StateTransformer, StateTransform } from '../../mol-state/index.js'; import { PluginContext } from '../../mol-plugin/context.js'; import { PluginCommand } from '../command.js'; import { Observable } from 'rxjs'; import { ParamDefinition } from '../../mol-util/param-definition.js'; export { PluginBehavior }; interface PluginBehavior

{ register(ref: StateTransform.Ref): void; unregister?(): void; dispose?(): void; /** Update params in place. Optionally return a promise if it depends on an async action. */ update?(params: P): boolean | Promise; } declare namespace PluginBehavior { const Root_base: { new (data: {}, props?: { label: string; description?: string; } | undefined): { id: import("../../mol-util/index.js").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string; data: {}; }; type: PluginStateObject.TypeInfo; is(obj?: import("../../mol-state/index.js").StateObject): obj is import("../../mol-state/index.js").StateObject<{}, PluginStateObject.TypeInfo>; }; export class Root extends Root_base { } const Category_base: { new (data: {}, props?: { label: string; description?: string; } | undefined): { id: import("../../mol-util/index.js").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string; data: {}; }; type: PluginStateObject.TypeInfo; is(obj?: import("../../mol-state/index.js").StateObject): obj is import("../../mol-state/index.js").StateObject<{}, PluginStateObject.TypeInfo>; }; export class Category extends Category_base { } const Behavior_base: { new (data: PluginBehavior, props?: { label: string; description?: string; } | undefined): { id: import("../../mol-util/index.js").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string; data: PluginBehavior; }; type: PluginStateObject.TypeInfo; is(obj?: import("../../mol-state/index.js").StateObject): obj is import("../../mol-state/index.js").StateObject, PluginStateObject.TypeInfo>; }; export class Behavior extends Behavior_base { } export interface Ctor

{ new (ctx: PluginContext, params: P): PluginBehavior

; } export const Categories: { common: string; representation: string; interaction: string; 'custom-props': string; misc: string; }; export interface CreateParams

{ name: string; category: keyof typeof Categories; ctor: Ctor

; canAutoUpdate?: StateTransformer.Definition['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>; export function getCategoryId(t: StateTransformer): "representation" | "common" | "interaction" | "custom-props" | "misc"; export function create

(params: CreateParams

): StateTransformer; export function simpleCommandHandler(cmd: PluginCommand, action: (data: T, ctx: PluginContext) => void | Promise): { new (ctx: PluginContext): { /** private */ sub: PluginCommand.Subscription | undefined; register(): void; dispose(): void; ctx: PluginContext; }; }; export abstract class Handler

implements PluginBehavior

{ protected ctx: PluginContext; protected params: P; private subs; protected subscribeCommand(cmd: PluginCommand, action: PluginCommand.Action): void; protected subscribeObservable(o: Observable, action: (v: T) => void): void; protected track(sub: PluginCommand.Subscription): void; abstract register(): void; dispose(): void; update(params: P): boolean | Promise; constructor(ctx: PluginContext, params: P); } export abstract class WithSubscribers

implements PluginBehavior

{ protected plugin: PluginContext; protected params: P; abstract register(ref: string): void; private subs; protected subscribeCommand(cmd: PluginCommand, action: PluginCommand.Action): void; protected subscribeObservable(o: Observable, action: (v: T) => void): PluginCommand.Subscription; dispose(): void; constructor(plugin: PluginContext, params: P); } export {}; }