UNPKG

next

Version:

The React Framework

68 lines (67 loc) 2.67 kB
'use client'; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "PreloadChunks", { enumerable: true, get: function() { return PreloadChunks; } }); const _jsxruntime = require("react/jsx-runtime"); const _reactdom = require("react-dom"); const _workasyncstorageexternal = require("../../../server/app-render/work-async-storage.external"); const _encodeuripath = require("../encode-uri-path"); function PreloadChunks(param) { let { moduleIds } = param; // Early return in client compilation and only load requestStore on server side if (typeof window !== 'undefined') { return null; } const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); if (workStore === undefined) { return null; } const allFiles = []; // Search the current dynamic call unique key id in react loadable manifest, // and find the corresponding CSS files to preload if (workStore.reactLoadableManifest && moduleIds) { const manifest = workStore.reactLoadableManifest; for (const key of moduleIds){ if (!manifest[key]) continue; const chunks = manifest[key].files; allFiles.push(...chunks); } } if (allFiles.length === 0) { return null; } const dplId = process.env.NEXT_DEPLOYMENT_ID ? "?dpl=" + process.env.NEXT_DEPLOYMENT_ID : ''; return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, { children: allFiles.map((chunk)=>{ const href = workStore.assetPrefix + "/_next/" + (0, _encodeuripath.encodeURIPath)(chunk) + dplId; const isCss = chunk.endsWith('.css'); // If it's stylesheet we use `precedence` o help hoist with React Float. // For stylesheets we actually need to render the CSS because nothing else is going to do it so it needs to be part of the component tree. // The `preload` for stylesheet is not optional. if (isCss) { return /*#__PURE__*/ (0, _jsxruntime.jsx)("link", { // @ts-ignore precedence: "dynamic", href: href, rel: "stylesheet", as: "style" }, chunk); } else { // If it's script we use ReactDOM.preload to preload the resources (0, _reactdom.preload)(href, { as: 'script', fetchPriority: 'low' }); return null; } }) }); } //# sourceMappingURL=preload-chunks.js.map