/* eslint-disable object-curly-newline */ /* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable no-underscore-dangle */ import { createContext } from 'react'; import RootStore from './root'; /** @type{RootStore} */ let store; export const StoreContext = createContext(store); export function initializeStore(initialData) { const _store = store ?? new RootStore(); if (initialData) { const { user = null, calculation } = initialData; _store.$user.hydrate(user); 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 (typeof window === 'undefined') return _store; if (!store) store = _store; return _store; }