Skip to content
Snippets Groups Projects
command.ts 3.32 KiB
Newer Older
David Sehnal's avatar
David Sehnal committed
/**
 * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author David Sehnal <david.sehnal@gmail.com>
 */

import { Camera } from 'mol-canvas3d/camera';
import { PluginCommand } from './command/base';
David Sehnal's avatar
David Sehnal committed
import { StateTransform, State, StateAction } from 'mol-state';
Alexander Rose's avatar
Alexander Rose committed
import { Canvas3DProps } from 'mol-canvas3d/canvas3d';
David Sehnal's avatar
David Sehnal committed
import { PluginLayoutStateProps } from './layout';
David Sehnal's avatar
David Sehnal committed
import { StructureElement } from 'mol-model/structure';
import { PluginState } from './state';
David Sehnal's avatar
David Sehnal committed

export * from './command/base';
David Sehnal's avatar
David Sehnal committed

David Sehnal's avatar
David Sehnal committed
export const PluginCommands = {
David Sehnal's avatar
David Sehnal committed
        SetCurrentObject: PluginCommand<{ state: State, ref: StateTransform.Ref }>(),
        ApplyAction: PluginCommand<{ state: State, action: StateAction.Instance, ref?: StateTransform.Ref }>(),
        Update: PluginCommand<{ state: State, tree: State.Tree | State.Builder, options?: Partial<State.UpdateOptions> }>(),
        RemoveObject: PluginCommand<{ state: State, ref: StateTransform.Ref, removeParentGhosts?: boolean }>(),
David Sehnal's avatar
David Sehnal committed
        ToggleExpanded: PluginCommand<{ state: State, ref: StateTransform.Ref }>({ isImmediate: true }),
        ToggleVisibility: PluginCommand<{ state: State, ref: StateTransform.Ref }>({ isImmediate: true }),
        Highlight: PluginCommand<{ state: State, ref: StateTransform.Ref }>({ isImmediate: true }),
        ClearHighlight: PluginCommand<{ state: State, ref: StateTransform.Ref }>({ isImmediate: true }),
            Add: PluginCommand<{ name?: string, description?: string, params?: PluginState.GetSnapshotParams }>({ isImmediate: true }),
            Replace: PluginCommand<{ id: string, params?: PluginState.GetSnapshotParams }>({ isImmediate: true }),
            Move: PluginCommand<{ id: string, dir: -1 | 1 }>({ isImmediate: true }),
            Remove: PluginCommand<{ id: string }>({ isImmediate: true }),
            Apply: PluginCommand<{ id: string }>({ isImmediate: true }),
            Clear: PluginCommand<{}>({ isImmediate: true }),

            Upload: PluginCommand<{ name?: string, description?: string, serverUrl: string }>({ isImmediate: true }),
            Fetch: PluginCommand<{ url: string }>(),

            DownloadToFile: PluginCommand<{ name?: string }>({ isImmediate: true }),
            OpenFile: PluginCommand<{ file: File }>({ isImmediate: true }),
David Sehnal's avatar
David Sehnal committed
    Interactivity: {
        Structure: {
            Highlight: PluginCommand<{ loci: StructureElement.Loci, isOff?: boolean }>({ isImmediate: true }),
            Select: PluginCommand<{ loci: StructureElement.Loci, isOff?: boolean }>({ isImmediate: true })
David Sehnal's avatar
David Sehnal committed
        }
    },
David Sehnal's avatar
David Sehnal committed
    Layout: {
        Update: PluginCommand<{ state: Partial<PluginLayoutStateProps> }>({ isImmediate: true })
    },
    Camera: {
        Reset: PluginCommand<{}>({ isImmediate: true }),
        SetSnapshot: PluginCommand<{ snapshot: Camera.Snapshot, durationMs?: number }>({ isImmediate: true }),
        Snapshots: {
            Add: PluginCommand<{ name?: string, description?: string }>({ isImmediate: true }),
            Remove: PluginCommand<{ id: string }>({ isImmediate: true }),
            Apply: PluginCommand<{ id: string }>({ isImmediate: true }),
            Clear: PluginCommand<{}>({ isImmediate: true }),
        }
    },
    Canvas3D: {
Alexander Rose's avatar
Alexander Rose committed
        SetSettings: PluginCommand<{ settings: Partial<Canvas3DProps> }>({ isImmediate: true })
David Sehnal's avatar
David Sehnal committed
}