UNPKG

molstar

Version:

A comprehensive macromolecular library.

179 lines (178 loc) 7.72 kB
/** * Copyright (c) 2018-2025 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> * @author Adam Midlik <midlik@gmail.com> */ import { Camera } from '../mol-canvas3d/camera.js'; import { Canvas3DContext, Canvas3DProps } from '../mol-canvas3d/canvas3d.js'; import { Vec3 } from '../mol-math/linear-algebra.js'; import { PluginComponent } from '../mol-plugin-state/component.js'; import { PluginAnimationManager } from '../mol-plugin-state/manager/animation.js'; import { InteractivityManager } from '../mol-plugin-state/manager/interactivity.js'; import { StructureComponentManager } from '../mol-plugin-state/manager/structure/component.js'; import { StructureFocusSnapshot } from '../mol-plugin-state/manager/structure/focus.js'; import { StructureSelectionSnapshot } from '../mol-plugin-state/manager/structure/selection.js'; import { State, StateTransform, StateTransformer } from '../mol-state/index.js'; import { UUID } from '../mol-util/index.js'; import { ParamDefinition as PD } from '../mol-util/param-definition.js'; import { PluginContext } from './context.js'; export { PluginState }; declare class PluginState extends PluginComponent { private plugin; private get animation(); readonly data: State; readonly behaviors: State; readonly events: { readonly cell: { readonly stateUpdated: import("rxjs").Observable<State.ObjectEvent & { cell: import("../mol-state/index.js").StateObjectCell; }>; readonly created: import("rxjs").Observable<State.ObjectEvent & { cell: import("../mol-state/index.js").StateObjectCell; }>; readonly removed: import("rxjs").Observable<State.ObjectEvent & { parent: StateTransform.Ref; }>; }; readonly object: { readonly created: import("rxjs").Observable<State.ObjectEvent & { obj: import("../mol-state/index.js").StateObject; }>; readonly removed: import("rxjs").Observable<State.ObjectEvent & { obj?: import("../mol-state/index.js").StateObject; }>; readonly updated: import("rxjs").Observable<State.ObjectEvent & { action: "in-place" | "recreate"; obj: import("../mol-state/index.js").StateObject; oldObj?: import("../mol-state/index.js").StateObject; oldData?: any; }>; }; }; readonly snapshotParams: import("rxjs").BehaviorSubject<Partial<PD.Values<{ durationInMs: PD.Numeric; data: PD.BooleanParam; behavior: PD.BooleanParam; structureSelection: PD.BooleanParam; componentManager: PD.BooleanParam; animation: PD.BooleanParam; startAnimation: PD.BooleanParam; canvas3d: PD.BooleanParam; canvas3dContext: PD.BooleanParam; interactivity: PD.BooleanParam; camera: PD.BooleanParam; cameraTransition: PD.Mapped<PD.NamedParams<PD.Normalize<{ durationInMs: number; }>, "animate"> | PD.NamedParams<PD.Normalize<unknown>, "instant">>; image: PD.BooleanParam; }>>>; setSnapshotParams: (params?: PluginState.SnapshotParams) => void; getSnapshot(params?: PluginState.SnapshotParams): PluginState.Snapshot; setSnapshot(snapshot: PluginState.Snapshot): Promise<void>; setAnimationSnapshot(snapshot: PluginState.Snapshot, frameIndex: number): Promise<void>; updateTransform(state: State, a: StateTransform.Ref, params: any, canUndo?: string | boolean): Promise<void>; hasBehavior(behavior: StateTransformer): boolean; updateBehavior<T extends StateTransformer>(behavior: T, params: (old: StateTransformer.Params<T>) => (void | StateTransformer.Params<T>)): Promise<void>; dispose(): void; constructor(plugin: PluginContext); } declare namespace PluginState { type CameraTransitionStyle = 'instant' | 'animate'; const SnapshotParams: { durationInMs: PD.Numeric; data: PD.BooleanParam; behavior: PD.BooleanParam; structureSelection: PD.BooleanParam; componentManager: PD.BooleanParam; animation: PD.BooleanParam; startAnimation: PD.BooleanParam; canvas3d: PD.BooleanParam; canvas3dContext: PD.BooleanParam; interactivity: PD.BooleanParam; camera: PD.BooleanParam; cameraTransition: PD.Mapped<PD.NamedParams<PD.Normalize<{ durationInMs: number; }>, "animate"> | PD.NamedParams<PD.Normalize<unknown>, "instant">>; image: PD.BooleanParam; }; type SnapshotParams = Partial<PD.Values<typeof SnapshotParams>>; const DefaultSnapshotParams: PD.Values<{ durationInMs: PD.Numeric; data: PD.BooleanParam; behavior: PD.BooleanParam; structureSelection: PD.BooleanParam; componentManager: PD.BooleanParam; animation: PD.BooleanParam; startAnimation: PD.BooleanParam; canvas3d: PD.BooleanParam; canvas3dContext: PD.BooleanParam; interactivity: PD.BooleanParam; camera: PD.BooleanParam; cameraTransition: PD.Mapped<PD.NamedParams<PD.Normalize<{ durationInMs: number; }>, "animate"> | PD.NamedParams<PD.Normalize<unknown>, "instant">>; image: PD.BooleanParam; }>; interface Snapshot { id: UUID; data?: State.Snapshot; behaviour?: State.Snapshot; animation?: PluginAnimationManager.Snapshot; startAnimation?: boolean; camera?: { current?: Camera.Snapshot; focus?: SnapshotFocusInfo; transitionStyle: CameraTransitionStyle; transitionDurationInMs?: number; }; canvas3d?: { props?: Canvas3DProps; }; canvas3dContext?: { props?: Canvas3DContext.Props; }; interactivity?: { props?: InteractivityManager.Props; }; structureFocus?: StructureFocusSnapshot; structureSelection?: StructureSelectionSnapshot; structureComponentManager?: { options?: StructureComponentManager.Options; }; durationInMs?: number; transition?: StateTransition; onLoadMarkdownCommands?: Record<string, any>; } interface StateTransition { autoplay?: boolean; loop?: boolean; frames: { durationInMs: number; data: State.Snapshot; camera?: Snapshot['camera']; canvas3d?: { props?: Canvas3DProps; }; }[]; } const getMinFrameDuration: (snapshot: Snapshot | undefined) => number; const getStateTransitionDuration: (snapshot: Snapshot | undefined) => number | undefined; const getStateTransitionFrameTime: (snapshot: Snapshot | undefined, frameIndex: number | undefined) => number; function getStateTransitionFrameIndex(snapshot: Snapshot, timestamp: number): number | undefined; type SnapshotType = 'json' | 'molj' | 'zip' | 'molx'; interface SnapshotFocusInfo { targets?: SnapshotFocusTargetInfo[]; direction?: Vec3; up?: Vec3; } /** Final radius to be computed as `radius ?? targetBoundingRadius * radiusFactor + extraRadius` */ interface SnapshotFocusTargetInfo { /** Reference to plugin state node to focus (undefined means focus whole scene) */ targetRef?: StateTransform.Ref; radius?: number; radiusFactor?: number; extraRadius?: number; } }