rasengan
Version:
The modern React Framework
32 lines (31 loc) • 2.18 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import React from 'react';
import { BodyComponent, HeadComponent, RootComponent, ScriptComponent, } from '../../routing/components/template.js';
import { isServerMode, ServerMode } from '../../server/runtime/mode.js';
export const TemplateLayout = ({ StaticRouterComponent, metadata, assets, App, Template, isSpaMode = false, }) => {
// inject vite refresh script to avoid "React refresh preamble was not loaded"
let viteScripts = _jsx(React.Fragment, {});
let otherScripts = _jsx(React.Fragment, {});
if (isServerMode(process.env.NODE_ENV) &&
process.env.NODE_ENV === ServerMode.Development) {
const refreshScript = `
import RefreshRuntime from "/@react-refresh"
RefreshRuntime.injectIntoGlobalHook(window)
window.$RefreshReg$ = () => {}
window.$RefreshSig$ = () => (type) => type
window.__vite_plugin_react_preamble_installed__ = true
`;
viteScripts = (_jsxs(React.Fragment, { children: [_jsx("script", { type: "module", src: "/@vite/client" }), _jsx("script", { type: "module", dangerouslySetInnerHTML: { __html: refreshScript } })] }));
}
if (isSpaMode) {
otherScripts = (_jsxs(React.Fragment, { children: [_jsx("script", { type: "module", dangerouslySetInnerHTML: {
__html: `window.__RASENGAN_SPA_MODE__ = true;`,
} }), !assets && (_jsx("script", { type: "module", src: "/src/index", async: true }))] }));
}
else {
otherScripts = (_jsx(React.Fragment, { children: _jsx("script", { type: "module", dangerouslySetInnerHTML: {
__html: `window.__RASENGAN_SPA_MODE__ = false;`,
} }) }));
}
return (_jsx(Template, { Head: ({ children }) => (_jsxs(HeadComponent, { metadata: metadata, assets: assets, children: [viteScripts, otherScripts, children] })), Body: ({ children }) => (_jsx(BodyComponent, { asChild: App ? true : false, AppContent: App && _jsx(App, { Component: RootComponent, children: StaticRouterComponent }), children: children })), Script: ({ children }) => _jsx(ScriptComponent, { children: children }) }));
};