90 lines
3.5 KiB
TypeScript
90 lines
3.5 KiB
TypeScript
import "xgplayer/dist/index.min.css";
|
|
import "@/styles/components/video-player.css";
|
|
import "@/styles/foundations/base.css";
|
|
import "@/styles/components/site-header.css";
|
|
import "@/styles/components/site-footer.css";
|
|
import "@/styles/components/age-gate.css";
|
|
import "@/styles/components/advertisement-dialog.css";
|
|
import "@/styles/components/app-download-dialog.css";
|
|
import "@/styles/components/installation-guide.css";
|
|
import "@/styles/components/toast.css";
|
|
import "@/styles/components/mobile-tabbar.css";
|
|
import "@/styles/components/pagination.css";
|
|
import "@/styles/components/promotional-banner.css";
|
|
import "@/styles/components/promotional-grid.css";
|
|
import "@/styles/components/advertising-compat.css";
|
|
import "@/styles/components/playback-links.css";
|
|
import "@/styles/pages/home.css";
|
|
import "@/styles/pages/drama-list.css";
|
|
import "@/styles/pages/recently-added.css";
|
|
import "@/styles/pages/popular-recommendations.css";
|
|
import "@/styles/pages/tag-detail.css";
|
|
import "@/styles/pages/expanded-list.css";
|
|
import "@/styles/pages/series-list.css";
|
|
import "@/styles/pages/rankings.css";
|
|
import "@/styles/pages/topics.css";
|
|
import "@/styles/pages/topic-detail.css";
|
|
import "@/styles/pages/search-results.css";
|
|
import "@/styles/pages/about.css";
|
|
import "@/styles/pages/about-responsive.css";
|
|
import "@/styles/pages/help.css";
|
|
import "@/styles/pages/feedback.css";
|
|
import "@/styles/pages/legal.css";
|
|
import "@/styles/pages/not-found.css";
|
|
import "@/styles/pages/mobile-search.css";
|
|
import "@/styles/pages/site-navigation.css";
|
|
import "@/styles/pages/home-road.css";
|
|
import "@/styles/pages/playback.css";
|
|
import "@/styles/overrides/pwa-safe-area.css";
|
|
import type { ReactNode } from "react";
|
|
import { PwaProvider } from "@/components/pwa/PwaProvider";
|
|
import { GoogleAnalytics } from "@/components/analytics/GoogleAnalytics";
|
|
import { serverConfig } from "@/server/config";
|
|
import { pwaViewport } from "@/lib/pwa/config";
|
|
import { getRequestPage } from "@/server/react/request-page";
|
|
import { toNextMetadata } from "@/server/seo";
|
|
import { presentations } from "@/server/react/presentation";
|
|
export async function generateMetadata() {
|
|
return toNextMetadata((await getRequestPage()).data);
|
|
}
|
|
export const runtime = "nodejs";
|
|
export const dynamic = "force-dynamic";
|
|
export const viewport = pwaViewport;
|
|
export default async function RootLayout({
|
|
children,
|
|
}: {
|
|
children: ReactNode;
|
|
}) {
|
|
const { view, data } = await getRequestPage(),
|
|
presentation = presentations[view] || presentations["404"];
|
|
const styleTokens = presentation.styleTokens.join(" ");
|
|
return (
|
|
<html lang="zh-CN" data-hk-page-styles={styleTokens}>
|
|
<head>
|
|
{["play", "seriesPlay"].includes(view) && (
|
|
<>
|
|
<meta name="renderer" content="webkit" />
|
|
<meta name="force-rendering" content="webkit" />
|
|
<meta httpEquiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
<meta name="x5-orientation" content="portrait" />
|
|
<meta name="x5-page-mode" content="app" />
|
|
<meta name="browsermode" content="application" />
|
|
<meta name="imagemode" content="force" />
|
|
</>
|
|
)}
|
|
{data.jsonLD && (
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: String(data.jsonLD)
|
|
.replace(/</g, "\\u003c")
|
|
.replace(/>/g, "\\u003e"),
|
|
}}
|
|
/>
|
|
)}
|
|
</head>
|
|
<body className={presentation.bodyClass}><PwaProvider />{children}<GoogleAnalytics id={serverConfig().googleAnalyticsID} /></body>
|
|
</html>
|
|
);
|
|
}
|