import Comment from '@/components/Comment' import { AdSlot } from '@/components/GoogleAdsense' import Live2D from '@/components/Live2D' import replaceSearchResult from '@/components/Mark' import NotionPage from '@/components/NotionPage' import ShareBar from '@/components/ShareBar' import WWAds from '@/components/WWAds' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import { loadWowJS } from '@/lib/plugins/wow' import { isBrowser } from '@/lib/utils' import dynamic from 'next/dynamic' import Link from 'next/link' import { useRouter } from 'next/router' import { createContext, useContext, useEffect, useRef } from 'react' import Announcement from './components/Announcement' import ArticleAdjacent from './components/ArticleAdjacent' import ArticleCopyright from './components/ArticleCopyright' import { ArticleInfo } from './components/ArticleInfo' import { ArticleLock } from './components/ArticleLock' import BlogListBar from './components/BlogListBar' import BlogPostArchive from './components/BlogPostArchive' import BlogPostListPage from './components/BlogPostListPage' import BlogPostListScroll from './components/BlogPostListScroll' import Card from './components/Card' import CatalogWrapper from './components/CatalogWrapper' import Footer from './components/Footer' import Header from './components/Header' import Hero from './components/Hero' import JumpToCommentButton from './components/JumpToCommentButton' import PostHero from './components/PostHero' import RightFloatButtons from './components/RightFloatButtons' import SearchNave from './components/SearchNav' import TagItemMiddle from './components/TagItemMiddle' import CONFIG from './config' import { Style } from './style' const AlgoliaSearchModal = dynamic( () => import('@/components/AlgoliaSearchModal'), { ssr: false } ) // 主题全局状态 const ThemeGlobalMatery = createContext() export const useMateryGlobal = () => useContext(ThemeGlobalMatery) /** * 基础布局 * 采用左右两侧布局,移动端使用顶部导航栏 * @param props * @returns {JSX.Element} * @constructor */ const LayoutBase = props => { const { children, post } = props const { fullWidth } = useGlobal() const router = useRouter() // 加载wow动画 useEffect(() => { loadWowJS() }, []) const containerSlot = router.route === '/' ? ( ) : ( ) const headerSlot = siteConfig('MATERY_HOME_BANNER_ENABLE', null, CONFIG) && router.route === '/' ? ( ) : post && !fullWidth ? ( ) : null const floatRightBottom = post ? : null // Algolia搜索框 const searchModal = useRef(null) return (