"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { adaptForAppRouterInstance: null, adaptForSearchParams: null, adaptForPathParams: null, PathnameContextProviderAdapter: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { adaptForAppRouterInstance: function() { return adaptForAppRouterInstance; }, adaptForSearchParams: function() { return adaptForSearchParams; }, adaptForPathParams: function() { return adaptForPathParams; }, PathnameContextProviderAdapter: function() { return PathnameContextProviderAdapter; } }); const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react")); const _hooksclientcontextsharedruntime = require("../hooks-client-context.shared-runtime"); const _utils = require("./utils"); const _aspathtosearchparams = require("./utils/as-path-to-search-params"); const _routeregex = require("./utils/route-regex"); function adaptForAppRouterInstance(router) { return { back () { router.back(); }, forward () { router.forward(); }, refresh () { router.reload(); }, push (href, param) { let { scroll } = param === void 0 ? {} : param; void router.push(href, undefined, { scroll }); }, replace (href, param) { let { scroll } = param === void 0 ? {} : param; void router.replace(href, undefined, { scroll }); }, prefetch (href) { void router.prefetch(href); } }; } function adaptForSearchParams(router) { if (!router.isReady || !router.query) { return new URLSearchParams(); } return (0, _aspathtosearchparams.asPathToSearchParams)(router.asPath); } function adaptForPathParams(router) { if (!router.isReady || !router.query) { return null; } const pathParams = {}; const routeRegex = (0, _routeregex.getRouteRegex)(router.pathname); const keys = Object.keys(routeRegex.groups); for (const key of keys){ pathParams[key] = router.query[key]; } return pathParams; } function PathnameContextProviderAdapter(param) { let { children, router, ...props } = param; const ref = (0, _react.useRef)(props.isAutoExport); const value = (0, _react.useMemo)(()=>{ // isAutoExport is only ever `true` on the first render from the server, // so reset it to `false` after we read it for the first time as `true`. If // we don't use the value, then we don't need it. const isAutoExport = ref.current; if (isAutoExport) { ref.current = false; } // When the route is a dynamic route, we need to do more processing to // determine if we need to stop showing the pathname. if ((0, _utils.isDynamicRoute)(router.pathname)) { // When the router is rendering the fallback page, it can't possibly know // the path, so return `null` here. Read more about fallback pages over // at: // https://nextjs.org/docs/api-reference/data-fetching/get-static-paths#fallback-pages if (router.isFallback) { return null; } // When `isAutoExport` is true, meaning this is a page page has been // automatically statically optimized, and the router is not ready, then // we can't know the pathname yet. Read more about automatic static // optimization at: // https://nextjs.org/docs/advanced-features/automatic-static-optimization if (isAutoExport && !router.isReady) { return null; } } // The `router.asPath` contains the pathname seen by the browser (including // any query strings), so it should have that stripped. Read more about the // `asPath` option over at: // https://nextjs.org/docs/api-reference/next/router#router-object let url; try { url = new URL(router.asPath, "http://f"); } catch (_) { // fallback to / for invalid asPath values e.g. // return "/"; } return url.pathname; }, [ router.asPath, router.isFallback, router.isReady, router.pathname ]); return /*#__PURE__*/ _react.default.createElement(_hooksclientcontextsharedruntime.PathnameContext.Provider, { value: value }, children); } //# sourceMappingURL=adapters.js.map