136 lines
4.7 KiB
JavaScript
136 lines
4.7 KiB
JavaScript
|
"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
|