next
Version:
The React Framework
68 lines (67 loc) • 2.67 kB
JavaScript
'use client';
;
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