import RootStore from './root'; import { createContext } from 'react'; import { isServer } from 'tools/common'; /** @type {RootStore} */ let store; export const StoreContext = createContext(store); export function initializeStore(initialData) { const _store = store ?? new RootStore(); if (initialData) { const { calculation, tables, mode } = initialData; if (calculation?.values) _store.$calculation.$values.hydrate(calculation.values); if (calculation?.statuses) _store.$calculation.$status.hydrate(calculation.statuses); if (calculation?.options) _store.$calculation.$options.hydrate(calculation.options); if (tables?.insurance) { _store.$tables.insurance.hydrate({ options: tables.insurance.options, statuses: tables.insurance.statuses, values: tables.insurance.values, }); } _store.$process.clear(); if (mode === 'unlimited') _store.$process.add('Unlimited'); } if (isServer()) return _store; if (!store) store = _store; return _store; }