one
Version:
One is a new React Framework that makes Vite serve both native and web.
61 lines (60 loc) • 2.23 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { SERVER_CONTEXT_KEY } from "../constants.native.js";
import { safeJsonStringify } from "../utils/htmlEscape.native.js";
import { SERVER_CONTEXT_POST_RENDER_STRING } from "../vite/constants.native.js";
import { useServerContext } from "../vite/one-server-only.native.js";
function ServerContextScript() {
if (process.env.VITE_ENVIRONMENT === "client") {
return /* @__PURE__ */_jsx("script", {
async: true,
// @ts-expect-error
href: SERVER_CONTEXT_KEY,
suppressHydrationWarning: true,
dangerouslySetInnerHTML: {
__html: ``
}
});
}
if (process.env.VITE_ENVIRONMENT === "ssr") {
var _restContext_matches;
var context = useServerContext();
var cssUrls = (context === null || context === void 0 ? void 0 : context.css) || [];
var {
cssContents,
...restContext
} = context || {};
var compactMatches = (_restContext_matches = restContext.matches) === null || _restContext_matches === void 0 ? void 0 : _restContext_matches.map(function (m) {
return {
routeId: m.routeId,
pathname: m.pathname,
params: m.params,
...(m.loaderData !== restContext.loaderData ? {
loaderData: m.loaderData
} : {})
};
});
var clientContext = {
...restContext,
matches: compactMatches,
cssInlineCount: (cssContents === null || cssContents === void 0 ? void 0 : cssContents.length) || 0,
// use placeholder — postRenderData is set during render (after this component)
// and replaced in the HTML string after rendering completes
postRenderData: SERVER_CONTEXT_POST_RENDER_STRING
};
return /* @__PURE__ */_jsx("script", {
async: true,
// @ts-expect-error
href: SERVER_CONTEXT_KEY,
suppressHydrationWarning: true,
dangerouslySetInnerHTML: {
__html: `
globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify(clientContext)};
globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(cssUrls)});
`
}
});
}
return null;
}
export { ServerContextScript };
//# sourceMappingURL=ServerContextScript.native.js.map