RcsbFvStateManager.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * Copyright (c) 2021 RCSB PDB and contributors, licensed under MIT, See LICENSE file for more info.
  3. * @author Joan Segura Mora <joan.segura@rcsb.org>
  4. */
  5. import {RcsbFvStateInterface, RcsbFvStateType} from "./RcsbFvStateInterface";
  6. import {RcsbFvSelectorManager} from "./RcsbFvSelectorManager";
  7. import {AssemblyModelSate} from "./AssemblyModelSate";
  8. import {Subject, Subscription} from "rxjs";
  9. import {DataContainer} from "../Utils/DataContainer";
  10. import {OperatorInfo} from "../RcsbFvStructure/StructureViewerInterface";
  11. export class RcsbFvStateManager implements RcsbFvStateInterface {
  12. readonly assemblyModelSate: AssemblyModelSate = new AssemblyModelSate();
  13. readonly selectionState: RcsbFvSelectorManager = new RcsbFvSelectorManager();
  14. readonly pfvContext: DataContainer<{entryId:string;asymId?:string;operator?:OperatorInfo;}> = new DataContainer<{entryId: string; asymId?: string; operator?: OperatorInfo}>();
  15. readonly subject: Subject<RcsbFvStateType<any,any>> = new Subject<RcsbFvStateType>();
  16. next<T,D>(state: RcsbFvStateType<T,D>): void {
  17. this.subject.next(state);
  18. }
  19. subscribe<T,D>(o: (state: RcsbFvStateType<T,D>) => void): Subscription {
  20. return this.subject.subscribe(o);
  21. }
  22. unsubscribe(): void {
  23. this.subject.unsubscribe();
  24. }
  25. }