import type { ReactElement, PropsWithChildren } from "react";
import { useMemo } from "react";
import type { IAppContext } from "#package/types";
import { constants } from "../../constants";

const GlobalCtx = constants.globalCtx;

/**
 * Корневой компонент приложения, используемый для формирования контекста
  @returns {ReactElement}
 */
const RenderContext = ({
  children,
  isSSR,
  mode,
}: PropsWithChildren<IAppContext>): ReactElement => {

  const value = useMemo<IAppContext>(() => ({ isSSR, mode }), [ isSSR, mode ]);

  return (
    <GlobalCtx value={value}>
      {children}
    </GlobalCtx>
  );
};

export {
  RenderContext,
};
