You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			231 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			231 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | "use strict"; | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |     value: true | ||
|  | }); | ||
|  | 0 && (module.exports = { | ||
|  |     ReadonlyURLSearchParams: null, | ||
|  |     useSearchParams: null, | ||
|  |     usePathname: null, | ||
|  |     ServerInsertedHTMLContext: null, | ||
|  |     useServerInsertedHTML: null, | ||
|  |     useRouter: null, | ||
|  |     useParams: null, | ||
|  |     useSelectedLayoutSegments: null, | ||
|  |     useSelectedLayoutSegment: null, | ||
|  |     redirect: null, | ||
|  |     permanentRedirect: null, | ||
|  |     RedirectType: null, | ||
|  |     notFound: null | ||
|  | }); | ||
|  | function _export(target, all) { | ||
|  |     for(var name in all)Object.defineProperty(target, name, { | ||
|  |         enumerable: true, | ||
|  |         get: all[name] | ||
|  |     }); | ||
|  | } | ||
|  | _export(exports, { | ||
|  |     ReadonlyURLSearchParams: function() { | ||
|  |         return ReadonlyURLSearchParams; | ||
|  |     }, | ||
|  |     useSearchParams: function() { | ||
|  |         return useSearchParams; | ||
|  |     }, | ||
|  |     usePathname: function() { | ||
|  |         return usePathname; | ||
|  |     }, | ||
|  |     ServerInsertedHTMLContext: function() { | ||
|  |         return _serverinsertedhtmlsharedruntime.ServerInsertedHTMLContext; | ||
|  |     }, | ||
|  |     useServerInsertedHTML: function() { | ||
|  |         return _serverinsertedhtmlsharedruntime.useServerInsertedHTML; | ||
|  |     }, | ||
|  |     useRouter: function() { | ||
|  |         return useRouter; | ||
|  |     }, | ||
|  |     useParams: function() { | ||
|  |         return useParams; | ||
|  |     }, | ||
|  |     useSelectedLayoutSegments: function() { | ||
|  |         return useSelectedLayoutSegments; | ||
|  |     }, | ||
|  |     useSelectedLayoutSegment: function() { | ||
|  |         return useSelectedLayoutSegment; | ||
|  |     }, | ||
|  |     redirect: function() { | ||
|  |         return _redirect.redirect; | ||
|  |     }, | ||
|  |     permanentRedirect: function() { | ||
|  |         return _redirect.permanentRedirect; | ||
|  |     }, | ||
|  |     RedirectType: function() { | ||
|  |         return _redirect.RedirectType; | ||
|  |     }, | ||
|  |     notFound: function() { | ||
|  |         return _notfound.notFound; | ||
|  |     } | ||
|  | }); | ||
|  | const _react = require("react"); | ||
|  | const _approutercontextsharedruntime = require("../../shared/lib/app-router-context.shared-runtime"); | ||
|  | const _hooksclientcontextsharedruntime = require("../../shared/lib/hooks-client-context.shared-runtime"); | ||
|  | const _clienthookinservercomponenterror = require("./client-hook-in-server-component-error"); | ||
|  | const _getsegmentvalue = require("./router-reducer/reducers/get-segment-value"); | ||
|  | const _segment = require("../../shared/lib/segment"); | ||
|  | const _serverinsertedhtmlsharedruntime = require("../../shared/lib/server-inserted-html.shared-runtime"); | ||
|  | const _redirect = require("./redirect"); | ||
|  | const _notfound = require("./not-found"); | ||
|  | const INTERNAL_URLSEARCHPARAMS_INSTANCE = Symbol("internal for urlsearchparams readonly"); | ||
|  | function readonlyURLSearchParamsError() { | ||
|  |     return new Error("ReadonlyURLSearchParams cannot be modified"); | ||
|  | } | ||
|  | class ReadonlyURLSearchParams { | ||
|  |     [Symbol.iterator]() { | ||
|  |         return this[INTERNAL_URLSEARCHPARAMS_INSTANCE][Symbol.iterator](); | ||
|  |     } | ||
|  |     append() { | ||
|  |         throw readonlyURLSearchParamsError(); | ||
|  |     } | ||
|  |     delete() { | ||
|  |         throw readonlyURLSearchParamsError(); | ||
|  |     } | ||
|  |     set() { | ||
|  |         throw readonlyURLSearchParamsError(); | ||
|  |     } | ||
|  |     sort() { | ||
|  |         throw readonlyURLSearchParamsError(); | ||
|  |     } | ||
|  |     constructor(urlSearchParams){ | ||
|  |         this[INTERNAL_URLSEARCHPARAMS_INSTANCE] = urlSearchParams; | ||
|  |         this.entries = urlSearchParams.entries.bind(urlSearchParams); | ||
|  |         this.forEach = urlSearchParams.forEach.bind(urlSearchParams); | ||
|  |         this.get = urlSearchParams.get.bind(urlSearchParams); | ||
|  |         this.getAll = urlSearchParams.getAll.bind(urlSearchParams); | ||
|  |         this.has = urlSearchParams.has.bind(urlSearchParams); | ||
|  |         this.keys = urlSearchParams.keys.bind(urlSearchParams); | ||
|  |         this.values = urlSearchParams.values.bind(urlSearchParams); | ||
|  |         this.toString = urlSearchParams.toString.bind(urlSearchParams); | ||
|  |         this.size = urlSearchParams.size; | ||
|  |     } | ||
|  | } | ||
|  | function useSearchParams() { | ||
|  |     (0, _clienthookinservercomponenterror.clientHookInServerComponentError)("useSearchParams"); | ||
|  |     const searchParams = (0, _react.useContext)(_hooksclientcontextsharedruntime.SearchParamsContext); | ||
|  |     // In the case where this is `null`, the compat types added in
 | ||
|  |     // `next-env.d.ts` will add a new overload that changes the return type to
 | ||
|  |     // include `null`.
 | ||
|  |     const readonlySearchParams = (0, _react.useMemo)(()=>{ | ||
|  |         if (!searchParams) { | ||
|  |             // When the router is not ready in pages, we won't have the search params
 | ||
|  |             // available.
 | ||
|  |             return null; | ||
|  |         } | ||
|  |         return new ReadonlyURLSearchParams(searchParams); | ||
|  |     }, [ | ||
|  |         searchParams | ||
|  |     ]); | ||
|  |     if (typeof window === "undefined") { | ||
|  |         // AsyncLocalStorage should not be included in the client bundle.
 | ||
|  |         const { bailoutToClientRendering } = require("./bailout-to-client-rendering"); | ||
|  |         // TODO-APP: handle dynamic = 'force-static' here and on the client
 | ||
|  |         bailoutToClientRendering("useSearchParams()"); | ||
|  |     } | ||
|  |     return readonlySearchParams; | ||
|  | } | ||
|  | function usePathname() { | ||
|  |     (0, _clienthookinservercomponenterror.clientHookInServerComponentError)("usePathname"); | ||
|  |     // In the case where this is `null`, the compat types added in `next-env.d.ts`
 | ||
|  |     // will add a new overload that changes the return type to include `null`.
 | ||
|  |     return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext); | ||
|  | } | ||
|  | function useRouter() { | ||
|  |     (0, _clienthookinservercomponenterror.clientHookInServerComponentError)("useRouter"); | ||
|  |     const router = (0, _react.useContext)(_approutercontextsharedruntime.AppRouterContext); | ||
|  |     if (router === null) { | ||
|  |         throw new Error("invariant expected app router to be mounted"); | ||
|  |     } | ||
|  |     return router; | ||
|  | } | ||
|  | // this function performs a depth-first search of the tree to find the selected
 | ||
|  | // params
 | ||
|  | function getSelectedParams(tree, params) { | ||
|  |     if (params === void 0) params = {}; | ||
|  |     const parallelRoutes = tree[1]; | ||
|  |     for (const parallelRoute of Object.values(parallelRoutes)){ | ||
|  |         const segment = parallelRoute[0]; | ||
|  |         const isDynamicParameter = Array.isArray(segment); | ||
|  |         const segmentValue = isDynamicParameter ? segment[1] : segment; | ||
|  |         if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) continue; | ||
|  |         // Ensure catchAll and optional catchall are turned into an array
 | ||
|  |         const isCatchAll = isDynamicParameter && (segment[2] === "c" || segment[2] === "oc"); | ||
|  |         if (isCatchAll) { | ||
|  |             params[segment[0]] = segment[1].split("/"); | ||
|  |         } else if (isDynamicParameter) { | ||
|  |             params[segment[0]] = segment[1]; | ||
|  |         } | ||
|  |         params = getSelectedParams(parallelRoute, params); | ||
|  |     } | ||
|  |     return params; | ||
|  | } | ||
|  | function useParams() { | ||
|  |     (0, _clienthookinservercomponenterror.clientHookInServerComponentError)("useParams"); | ||
|  |     const globalLayoutRouter = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext); | ||
|  |     const pathParams = (0, _react.useContext)(_hooksclientcontextsharedruntime.PathParamsContext); | ||
|  |     return (0, _react.useMemo)(()=>{ | ||
|  |         // When it's under app router
 | ||
|  |         if (globalLayoutRouter == null ? void 0 : globalLayoutRouter.tree) { | ||
|  |             return getSelectedParams(globalLayoutRouter.tree); | ||
|  |         } | ||
|  |         // When it's under client side pages router
 | ||
|  |         return pathParams; | ||
|  |     }, [ | ||
|  |         globalLayoutRouter == null ? void 0 : globalLayoutRouter.tree, | ||
|  |         pathParams | ||
|  |     ]); | ||
|  | } | ||
|  | // TODO-APP: handle parallel routes
 | ||
|  | /** | ||
|  |  * Get the canonical parameters from the current level to the leaf node. | ||
|  |  */ function getSelectedLayoutSegmentPath(tree, parallelRouteKey, first, segmentPath) { | ||
|  |     if (first === void 0) first = true; | ||
|  |     if (segmentPath === void 0) segmentPath = []; | ||
|  |     let node; | ||
|  |     if (first) { | ||
|  |         // Use the provided parallel route key on the first parallel route
 | ||
|  |         node = tree[1][parallelRouteKey]; | ||
|  |     } else { | ||
|  |         // After first parallel route prefer children, if there's no children pick the first parallel route.
 | ||
|  |         const parallelRoutes = tree[1]; | ||
|  |         var _parallelRoutes_children; | ||
|  |         node = (_parallelRoutes_children = parallelRoutes.children) != null ? _parallelRoutes_children : Object.values(parallelRoutes)[0]; | ||
|  |     } | ||
|  |     if (!node) return segmentPath; | ||
|  |     const segment = node[0]; | ||
|  |     const segmentValue = (0, _getsegmentvalue.getSegmentValue)(segment); | ||
|  |     if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) { | ||
|  |         return segmentPath; | ||
|  |     } | ||
|  |     segmentPath.push(segmentValue); | ||
|  |     return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath); | ||
|  | } | ||
|  | function useSelectedLayoutSegments(parallelRouteKey) { | ||
|  |     if (parallelRouteKey === void 0) parallelRouteKey = "children"; | ||
|  |     (0, _clienthookinservercomponenterror.clientHookInServerComponentError)("useSelectedLayoutSegments"); | ||
|  |     const { tree } = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext); | ||
|  |     return getSelectedLayoutSegmentPath(tree, parallelRouteKey); | ||
|  | } | ||
|  | function useSelectedLayoutSegment(parallelRouteKey) { | ||
|  |     if (parallelRouteKey === void 0) parallelRouteKey = "children"; | ||
|  |     (0, _clienthookinservercomponenterror.clientHookInServerComponentError)("useSelectedLayoutSegment"); | ||
|  |     const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey); | ||
|  |     if (selectedLayoutSegments.length === 0) { | ||
|  |         return null; | ||
|  |     } | ||
|  |     return selectedLayoutSegments[0]; | ||
|  | } | ||
|  | 
 | ||
|  | 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.js.map
 |