RcsbFv3DCustom.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import {RcsbFvStructure, RcsbFvStructureConfigInterface} from "../RcsbFvStructure/RcsbFvStructure";
  2. import {CustomViewInterface} from "../RcsbFvSequence/SequenceViews/CustomView/CustomView";
  3. import {RcsbFv3DAbstract} from "./RcsbFv3DAbstract";
  4. import uniqid from "uniqid";
  5. import {LoadMolstarInterface} from "../RcsbFvStructure/StructureViewers/MolstarViewer/MolstarActionManager";
  6. import {ViewerProps} from "@rcsb/rcsb-molstar/build/src/viewer";
  7. import {StructureViewer} from "../RcsbFvStructure/StructureViewers/StructureViewer";
  8. import {MolstarManagerFactory} from "../RcsbFvStructure/StructureViewers/MolstarViewer/MolstarManagerFactory";
  9. import {RcsbFv3DCssConfig} from "./RcsbFv3DComponent";
  10. import {NullBehaviourObserver} from "../RcsbFvStructure/StructureViewerBehaviour/NullBehaviour";
  11. export interface RcsbFv3DCustomInterface {
  12. elementId?: string;
  13. structurePanelConfig: RcsbFvStructureConfigInterface<LoadMolstarInterface,{viewerProps:Partial<ViewerProps>}>;
  14. sequencePanelConfig: {
  15. config: CustomViewInterface<LoadMolstarInterface>;
  16. title?: string;
  17. subtitle?: string;
  18. }
  19. cssConfig?: RcsbFv3DCssConfig;
  20. }
  21. export class RcsbFv3DCustom extends RcsbFv3DAbstract<{},LoadMolstarInterface,{viewerElement:string|HTMLElement,viewerProps:Partial<ViewerProps>},undefined> {
  22. constructor(params: RcsbFv3DCustomInterface) {
  23. const elementId: string = params.elementId ?? uniqid("RcsbFv3D_");
  24. super({
  25. elementId: elementId,
  26. structureConfig: {
  27. loadConfig: params.structurePanelConfig.loadConfig,
  28. structureViewerConfig:{
  29. ...params.structurePanelConfig.structureViewerConfig,
  30. viewerElement:RcsbFvStructure.componentId(elementId),
  31. }
  32. },
  33. sequenceConfig:{
  34. ...params.sequencePanelConfig,
  35. type:"custom",
  36. },
  37. structureViewer:new StructureViewer<LoadMolstarInterface,{viewerElement:string|HTMLElement,viewerProps:Partial<ViewerProps>}>( new MolstarManagerFactory() ),
  38. structureViewerBehaviourObserver: new NullBehaviourObserver<LoadMolstarInterface>(),
  39. cssConfig: params.cssConfig
  40. });
  41. }
  42. }