- 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
76 lines
3.8 KiB
JavaScript
76 lines
3.8 KiB
JavaScript
'use client';
|
|
"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "ClientPageRoot", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return ClientPageRoot;
|
|
}
|
|
});
|
|
const _jsxruntime = require("react/jsx-runtime");
|
|
const _invarianterror = require("../../shared/lib/invariant-error");
|
|
const _approutercontextsharedruntime = require("../../shared/lib/app-router-context.shared-runtime");
|
|
const _react = require("react");
|
|
const _routeparams = require("../route-params");
|
|
const _hooksclientcontextsharedruntime = require("../../shared/lib/hooks-client-context.shared-runtime");
|
|
function ClientPageRoot({ Component, serverProvidedParams }) {
|
|
let searchParams;
|
|
let params;
|
|
if (serverProvidedParams !== null) {
|
|
searchParams = serverProvidedParams.searchParams;
|
|
params = serverProvidedParams.params;
|
|
} else {
|
|
// When Cache Components is enabled, the server does not pass the params as
|
|
// props; they are parsed on the client and passed via context.
|
|
const layoutRouterContext = (0, _react.use)(_approutercontextsharedruntime.LayoutRouterContext);
|
|
params = layoutRouterContext !== null ? layoutRouterContext.parentParams : {};
|
|
// This is an intentional behavior change: when Cache Components is enabled,
|
|
// client segments receive the "canonical" search params, not the
|
|
// rewritten ones. Users should either call useSearchParams directly or pass
|
|
// the rewritten ones in from a Server Component.
|
|
// TODO: Log a deprecation error when this object is accessed
|
|
searchParams = (0, _routeparams.urlSearchParamsToParsedUrlQuery)((0, _react.use)(_hooksclientcontextsharedruntime.SearchParamsContext));
|
|
}
|
|
if (typeof window === 'undefined') {
|
|
const { workAsyncStorage } = require('../../server/app-render/work-async-storage.external');
|
|
let clientSearchParams;
|
|
let clientParams;
|
|
// We are going to instrument the searchParams prop with tracking for the
|
|
// appropriate context. We wrap differently in prerendering vs rendering
|
|
const store = workAsyncStorage.getStore();
|
|
if (!store) {
|
|
throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to exist when handling searchParams in a client Page.'), "__NEXT_ERROR_CODE", {
|
|
value: "E564",
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
}
|
|
const { createSearchParamsFromClient } = require('../../server/request/search-params');
|
|
clientSearchParams = createSearchParamsFromClient(searchParams, store);
|
|
const { createParamsFromClient } = require('../../server/request/params');
|
|
clientParams = createParamsFromClient(params, store);
|
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {
|
|
params: clientParams,
|
|
searchParams: clientSearchParams
|
|
});
|
|
} else {
|
|
const { createRenderSearchParamsFromClient } = require('../request/search-params.browser');
|
|
const clientSearchParams = createRenderSearchParamsFromClient(searchParams);
|
|
const { createRenderParamsFromClient } = require('../request/params.browser');
|
|
const clientParams = createRenderParamsFromClient(params);
|
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {
|
|
params: clientParams,
|
|
searchParams: clientSearchParams
|
|
});
|
|
}
|
|
}
|
|
|
|
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=client-page.js.map
|