import type { CalculationStatuses } from './types'; import type { Elements as ElementsActions } from '@/Components/Calculation/config/map/actions'; import type { Elements as ElementsValues } from '@/Components/Calculation/config/map/values'; import defaultStatuses from '@/config/default-statuses'; import type RootStore from '@/stores/root'; import { makeAutoObservable } from 'mobx'; import type { Status } from 'ui/elements/types'; export default class StatusStore { private root: RootStore; private statuses: CalculationStatuses = defaultStatuses; private overrided: Partial = {}; constructor(rootStore: RootStore) { makeAutoObservable(this); this.root = rootStore; } public hydrate = (initialStatuses: CalculationStatuses) => { this.statuses = initialStatuses; }; public getStatus(elementName: ElementsActions | ElementsValues) { return this.overrided[elementName] || this.statuses[elementName]; } public setStatus = (elementName: ElementsActions | ElementsValues, status: Status) => { this.statuses[elementName] = status; }; public resetStatus = (elementName: ElementsActions | ElementsValues) => { this.statuses[elementName] = defaultStatuses[elementName]; }; public overrideStatus = (elementName: ElementsActions | ElementsValues, status: Status) => { this.overrided[elementName] = status; }; public clearOverridedStatus = (elementName: ElementsActions | ElementsValues) => { this.overrided[elementName] = undefined; }; }