import { UIEventSource } from "../Logic/UIEventSource" import Hash from "../Logic/Web/Hash" export class DefaultGuiState { public readonly welcomeMessageIsOpened: UIEventSource = new UIEventSource( false ) public readonly menuIsOpened: UIEventSource = new UIEventSource(false) public readonly downloadControlIsOpened: UIEventSource = new UIEventSource( false ) public readonly filterViewIsOpened: UIEventSource = new UIEventSource(false) public readonly copyrightViewIsOpened: UIEventSource = new UIEventSource( false ) public readonly currentViewControlIsOpened: UIEventSource = new UIEventSource( false ) public readonly userInfoIsOpened: UIEventSource = new UIEventSource(false) public readonly userInfoFocusedQuestion: UIEventSource = new UIEventSource( undefined ) private readonly sources: Record> = { welcome: this.welcomeMessageIsOpened, download: this.downloadControlIsOpened, filters: this.filterViewIsOpened, copyright: this.copyrightViewIsOpened, currentview: this.currentViewControlIsOpened, userinfo: this.userInfoIsOpened, } constructor() { const self = this this.userInfoIsOpened.addCallback((isOpen) => { if (!isOpen) { console.log("Resetting focused question") self.userInfoFocusedQuestion.setData(undefined) } }) this.sources[Hash.hash.data?.toLowerCase()]?.setData(true) if (Hash.hash.data === "" || Hash.hash.data === undefined) { this.welcomeMessageIsOpened.setData(true) } } public closeAll(except) { for (const sourceKey in this.sources) { this.sources[sourceKey].setData(false) } } }