- Introduced blog routing using Next.js App Router - Implemented dynamic [slug] pages for blog posts - Added MDX-based content loading via lib/posts - Integrated shared TopBar layout with navigation - Established clear content, lib and component separation
65 lines
2.6 KiB
JavaScript
65 lines
2.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "useUntrackedPathname", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return useUntrackedPathname;
|
|
}
|
|
});
|
|
const _react = require("react");
|
|
const _hooksclientcontextsharedruntime = require("../../shared/lib/hooks-client-context.shared-runtime");
|
|
/**
|
|
* This checks to see if the current render has any unknown route parameters that
|
|
* would cause the pathname to be dynamic. It's used to trigger a different
|
|
* render path in the error boundary.
|
|
*
|
|
* @returns true if there are any unknown route parameters, false otherwise
|
|
*/ function hasFallbackRouteParams() {
|
|
if (typeof window === 'undefined') {
|
|
// AsyncLocalStorage should not be included in the client bundle.
|
|
const { workUnitAsyncStorage } = require('../../server/app-render/work-unit-async-storage.external');
|
|
const workUnitStore = workUnitAsyncStorage.getStore();
|
|
if (!workUnitStore) return false;
|
|
switch(workUnitStore.type){
|
|
case 'prerender':
|
|
case 'prerender-client':
|
|
case 'prerender-ppr':
|
|
const fallbackParams = workUnitStore.fallbackRouteParams;
|
|
return fallbackParams ? fallbackParams.size > 0 : false;
|
|
case 'prerender-legacy':
|
|
case 'request':
|
|
case 'prerender-runtime':
|
|
case 'cache':
|
|
case 'private-cache':
|
|
case 'unstable-cache':
|
|
break;
|
|
default:
|
|
workUnitStore;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
function useUntrackedPathname() {
|
|
// If there are any unknown route parameters we would typically throw
|
|
// an error, but this internal method allows us to return a null value instead
|
|
// for components that do not propagate the pathname to the static shell (like
|
|
// the error boundary).
|
|
if (hasFallbackRouteParams()) {
|
|
return null;
|
|
}
|
|
// This shouldn't cause any issues related to conditional rendering because
|
|
// the environment will be consistent for the render.
|
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);
|
|
}
|
|
|
|
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
|
|
Object.defineProperty(exports.default, '__esModule', { value: true });
|
|
Object.assign(exports.default, exports);
|
|
module.exports = exports.default;
|
|
}
|
|
|
|
//# sourceMappingURL=navigation-untracked.js.map
|