UNPKG

next

Version:

The React Framework

50 lines (48 loc) 2.15 kB
"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. * 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 { workAsyncStorage } = require('../../server/app-render/work-async-storage.external'); const workStore = workAsyncStorage.getStore(); if (!workStore) return false; const { fallbackRouteParams } = workStore; if (!fallbackRouteParams || fallbackRouteParams.size === 0) return false; return true; } 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