spec.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /**
  2. * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author David Sehnal <david.sehnal@gmail.com>
  5. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  6. */
  7. import { StateTransformParameters } from '../mol-plugin-ui/state/common';
  8. import { CreateVolumeStreamingBehavior } from '../mol-plugin/behavior/dynamic/volume-streaming/transformers';
  9. import { DefaultPluginSpec, PluginSpec } from '../mol-plugin/spec';
  10. import { StateAction, StateTransformer } from '../mol-state';
  11. import { VolumeStreamingCustomControls } from './custom/volume';
  12. export { PluginUISpec };
  13. interface PluginUISpec extends PluginSpec {
  14. customParamEditors?: [StateAction | StateTransformer, StateTransformParameters.Class][],
  15. components?: {
  16. controls?: PluginUISpec.LayoutControls
  17. remoteState?: 'none' | 'default',
  18. structureTools?: React.ComponentClass,
  19. viewport?: {
  20. view?: React.ComponentClass,
  21. controls?: React.ComponentClass
  22. },
  23. hideTaskOverlay?: boolean,
  24. disableDragOverlay?: boolean,
  25. },
  26. }
  27. namespace PluginUISpec {
  28. export interface LayoutControls {
  29. top?: React.ComponentClass | 'none',
  30. left?: React.ComponentClass | 'none',
  31. right?: React.ComponentClass | 'none',
  32. bottom?: React.ComponentClass | 'none'
  33. }
  34. }
  35. export const DefaultPluginUISpec = (): PluginUISpec => ({
  36. ...DefaultPluginSpec(),
  37. customParamEditors: [
  38. [CreateVolumeStreamingBehavior, VolumeStreamingCustomControls]
  39. ],
  40. });