import {DataContainer} from "../../../Utils/DataContainer"; import { RcsbFvAdditionalConfig, RcsbFvModulePublicInterface } from "@rcsb/rcsb-saguaro-app/build/dist/RcsbFvWeb/RcsbFvModule/RcsbFvModuleInterface"; import { OperatorInfo, ViewerCallbackManagerInterface, ViewerActionManagerInterface } from "../../../RcsbFvStructure/StructureViewerInterface"; import {RcsbFvBoardConfigInterface} from "@rcsb/rcsb-saguaro"; import {RcsbFvStateManager} from "../../../RcsbFvState/RcsbFvStateManager"; export interface PfvManagerFactoryConfigInterface { rcsbFvDivId: string; rcsbFvContainer: DataContainer; stateManager: RcsbFvStateManager; structureViewer: ViewerCallbackManagerInterface & ViewerActionManagerInterface ; boardConfigContainer: DataContainer>; pfvChangeCallback(context: U): Promise; additionalConfig: RcsbFvAdditionalConfig & {operatorChangeCallback?:(operatorInfo: OperatorInfo)=>void} | undefined; } export interface PfvManagerFactoryInterface { getPfvManager(config:T & PfvManagerFactoryConfigInterface): PfvManagerInterface; } export interface BuildPfvInterface { defaultAuthId?: string; defaultOperatorName?:string; } export interface PfvManagerInterface { create(config?: BuildPfvInterface): Promise; } export abstract class AbstractPfvManager implements PfvManagerInterface { protected readonly rcsbFvDivId: string; protected readonly rcsbFvContainer: DataContainer; protected readonly stateManager: RcsbFvStateManager; protected readonly structureViewer: ViewerCallbackManagerInterface & ViewerActionManagerInterface ; protected readonly boardConfigContainer: DataContainer>; protected readonly pfvChangeCallback: (context: U)=>Promise; protected readonly additionalConfig: RcsbFvAdditionalConfig & {operatorChangeCallback?:(operatorInfo: OperatorInfo)=>void} | undefined; protected constructor(config:T & PfvManagerFactoryConfigInterface){ this.rcsbFvDivId = config.rcsbFvDivId; this.rcsbFvContainer = config.rcsbFvContainer; this.stateManager = config.stateManager; this.structureViewer = config.structureViewer; this.additionalConfig = config.additionalConfig; this.boardConfigContainer = config.boardConfigContainer; this.pfvChangeCallback = config.pfvChangeCallback; } public abstract create(config?: BuildPfvInterface): Promise; }