'use client'; import { State, ActionTypes, Controller } from '@data-client/core'; import { useMemo } from 'react'; import type { DevToolsPosition } from '../components/DevToolsButton.js'; import { renderDevButton } from '../components/renderDevButton.js'; import { ControllerContext, StoreContext, UniversalSuspense, } from '../index.js'; interface Store { subscribe(listener: () => void): () => void; dispatch: (value: ActionTypes) => any; getState(): S; } interface Props extends Store { children: React.ReactNode; devButton?: DevToolsPosition | null | undefined; hasDevManager: boolean; } /** * Like DataProvider, but for SSR */ export default function SSRDataProvider({ children, subscribe, dispatch, getState, devButton, hasDevManager = true, }: Props>) { const controller = useMemo(() => new Controller({ dispatch }), [dispatch]); const store = useMemo(() => ({ subscribe, getState }), [subscribe, getState]); return ( {children} {renderDevButton(devButton, hasDevManager)} ); }