UNPKG

vite-plugin-react-pages

Version:

<p> <a href="https://www.npmjs.com/package/vite-plugin-react-pages" target="_blank" rel="noopener"><img src="https://img.shields.io/npm/v/vite-plugin-react-pages.svg" alt="npm package" /></a> </p>

61 lines (56 loc) 1.7 kB
import 'react'; import ReactDOM from 'react-dom/server'; import { StaticRouter } from 'react-router-dom/server'; import { d as dataCacheCtx, A as App } from './App-wZagFupr.js'; import ssrData from '/@react-pages/ssrData'; export { default as ssrData } from '/@react-pages/ssrData'; import { jsx } from 'react/jsx-runtime'; import 'react-router-dom'; import 'dequal'; import '/@react-pages/pages'; import '/@react-pages/theme'; import 'react-dom'; /** * This is the entry for static-site-generation(ssg)'s server side render. * Used in: "ssr mode" * ("ssr" is used in many places in this project to refer to "ssg". Should have called it ssg mode...) */ // put all page data in cache, so that we don't need to load it in ssr const dataCache = ssrData; function renderToString(url, ssrPlugins) { let ssrApp = /*#__PURE__*/jsx(SSRApp, { url: url }); const extractStyleArr = []; ssrPlugins?.forEach(ssrPlugin => { const { app, extractStyle } = ssrPlugin.prepare(ssrApp); if (extractStyle) extractStyleArr.push(extractStyle); if (app) ssrApp = app; }); const contentText = ReactDOM.renderToString(ssrApp); const styles = extractStyleArr.map(extractStyle => { return extractStyle(); }).filter(Boolean); const styleText = styles.join('\n'); return { contentText, styleText }; } function SSRApp({ url }) { return /*#__PURE__*/jsx(StaticRouter, { basename: import.meta.env.BASE_URL?.replace(/\/$/, ''), location: url, children: /*#__PURE__*/jsx(dataCacheCtx.Provider, { value: dataCache, children: /*#__PURE__*/jsx(App, {}) }) }); } export { renderToString }; //# sourceMappingURL=ssg-server.mjs.map