import { dom } from '@fortawesome/fontawesome-svg-core';
import { ServerStyleSheets, ThemeProvider } from '@mui/styles';
import path from 'path';
import React from 'react';
import { renderToString } from 'react-dom/server';
import { StaticRouter } from 'react-router';
import { type ArticleContent, PageArticleContext } from '../components/PageArticle.js';
import type { Config } from '../config/Config.js';
import { ConfigContext } from '../config/index.js';
import App from '../containers/App.js';
import theme from '../theme.js';
import type RouterMode from './RouterMode.js';
import StaticRouterWithSuffix from './StaticRouterWithSuffix.js';
const insertIntoSkeleton = (html: string, css: string, baseUrl: string, config: Config) =>
`
${config.title ?? 'Documentation'}
${css ? `` : ''}
${html}
${config.shouldEnhance ? `` : ''}
`;
const render = (url: string, config: Config, article?: ArticleContent) => {
// eslint-disable-next-line @typescript-eslint/init-declarations
let elem: React.ReactElement;
const baseUrl = path.posix.join('/', config.baseUrl || '').replace(/\/?$/, '/');
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const routerMode: RouterMode = config.routerMode || 'server';
const sheets = new ServerStyleSheets();
const joinedUrl = path.posix.join(baseUrl, url);
switch (routerMode) {
case 'htmlSuffix': {
elem = (
);
break;
}
case 'htaccess':
case 'subDirectories':
case 'server': {
elem = (
);
break;
}
default:
elem = <>>;
}
return insertIntoSkeleton(renderToString(sheets.collect(elem)), sheets.toString(), baseUrl, config);
};
export default render;