import { siteConfig } from '@/lib/config' import { convertInnerUrl } from '@/lib/notion/convertInnerUrl' import { isBrowser, loadExternalResource } from '@/lib/utils' import dynamic from 'next/dynamic' import { useRouter } from 'next/router' import { useEffect } from 'react' import { GlobalStyle } from './GlobalStyle' import { initGoogleAdsense } from './GoogleAdsense' import Head from 'next/head' import ExternalScript from './ExternalScript' import WebWhiz from './Webwhiz' import { useGlobal } from '@/lib/global' import IconFont from './IconFont' /** * 各种插件脚本 * @param {*} props * @returns */ const ExternalPlugin = props => { // 读取自Notion的配置 const { NOTION_CONFIG } = props const { lang } = useGlobal() const DISABLE_PLUGIN = siteConfig('DISABLE_PLUGIN', null, NOTION_CONFIG) const THEME_SWITCH = siteConfig('THEME_SWITCH', null, NOTION_CONFIG) const DEBUG = siteConfig('DEBUG', null, NOTION_CONFIG) const ANALYTICS_ACKEE_TRACKER = siteConfig( 'ANALYTICS_ACKEE_TRACKER', null, NOTION_CONFIG ) const ANALYTICS_VERCEL = siteConfig('ANALYTICS_VERCEL', null, NOTION_CONFIG) const ANALYTICS_BUSUANZI_ENABLE = siteConfig( 'ANALYTICS_BUSUANZI_ENABLE', null, NOTION_CONFIG ) const ADSENSE_GOOGLE_ID = siteConfig('ADSENSE_GOOGLE_ID', null, NOTION_CONFIG) const FACEBOOK_APP_ID = siteConfig('FACEBOOK_APP_ID', null, NOTION_CONFIG) const FACEBOOK_PAGE_ID = siteConfig('FACEBOOK_PAGE_ID', null, NOTION_CONFIG) const FIREWORKS = siteConfig('FIREWORKS', null, NOTION_CONFIG) const SAKURA = siteConfig('SAKURA', null, NOTION_CONFIG) const STARRY_SKY = siteConfig('STARRY_SKY', null, NOTION_CONFIG) const MUSIC_PLAYER = siteConfig('MUSIC_PLAYER', null, NOTION_CONFIG) const NEST = siteConfig('NEST', null, NOTION_CONFIG) const FLUTTERINGRIBBON = siteConfig('FLUTTERINGRIBBON', null, NOTION_CONFIG) const COMMENT_TWIKOO_COUNT_ENABLE = siteConfig( 'COMMENT_TWIKOO_COUNT_ENABLE', null, NOTION_CONFIG ) const RIBBON = siteConfig('RIBBON', null, NOTION_CONFIG) const CUSTOM_RIGHT_CLICK_CONTEXT_MENU = siteConfig( 'CUSTOM_RIGHT_CLICK_CONTEXT_MENU', null, NOTION_CONFIG ) const CAN_COPY = siteConfig('CAN_COPY', null, NOTION_CONFIG) const WEB_WHIZ_ENABLED = siteConfig('WEB_WHIZ_ENABLED', null, NOTION_CONFIG) const AD_WWADS_BLOCK_DETECT = siteConfig( 'AD_WWADS_BLOCK_DETECT', null, NOTION_CONFIG ) const CHATBASE_ID = siteConfig('CHATBASE_ID', null, NOTION_CONFIG) const COMMENT_DAO_VOICE_ID = siteConfig( 'COMMENT_DAO_VOICE_ID', null, NOTION_CONFIG ) const AD_WWADS_ID = siteConfig('AD_WWADS_ID', null, NOTION_CONFIG) const COMMENT_ARTALK_SERVER = siteConfig( 'COMMENT_ARTALK_SERVER', null, NOTION_CONFIG ) const COMMENT_ARTALK_JS = siteConfig('COMMENT_ARTALK_JS', null, NOTION_CONFIG) const COMMENT_TIDIO_ID = siteConfig('COMMENT_TIDIO_ID', null, NOTION_CONFIG) const COMMENT_GITTER_ROOM = siteConfig( 'COMMENT_GITTER_ROOM', null, NOTION_CONFIG ) const ANALYTICS_BAIDU_ID = siteConfig( 'ANALYTICS_BAIDU_ID', null, NOTION_CONFIG ) const ANALYTICS_CNZZ_ID = siteConfig('ANALYTICS_CNZZ_ID', null, NOTION_CONFIG) const ANALYTICS_GOOGLE_ID = siteConfig( 'ANALYTICS_GOOGLE_ID', null, NOTION_CONFIG ) const MATOMO_HOST_URL = siteConfig('MATOMO_HOST_URL', null, NOTION_CONFIG) const MATOMO_SITE_ID = siteConfig('MATOMO_SITE_ID', null, NOTION_CONFIG) const ANALYTICS_51LA_ID = siteConfig('ANALYTICS_51LA_ID', null, NOTION_CONFIG) const ANALYTICS_51LA_CK = siteConfig('ANALYTICS_51LA_CK', null, NOTION_CONFIG) const DIFY_CHATBOT_ENABLED = siteConfig( 'DIFY_CHATBOT_ENABLED', null, NOTION_CONFIG ) const TIANLI_KEY = siteConfig('TianliGPT_KEY', null, NOTION_CONFIG) const GLOBAL_JS = siteConfig('GLOBAL_JS', '', NOTION_CONFIG) const CLARITY_ID = siteConfig('CLARITY_ID', null, NOTION_CONFIG) const IMG_SHADOW = siteConfig('IMG_SHADOW', null, NOTION_CONFIG) const ANIMATE_CSS_URL = siteConfig('ANIMATE_CSS_URL', null, NOTION_CONFIG) const MOUSE_FOLLOW = siteConfig('MOUSE_FOLLOW', null, NOTION_CONFIG) const CUSTOM_EXTERNAL_CSS = siteConfig( 'CUSTOM_EXTERNAL_CSS', null, NOTION_CONFIG ) const CUSTOM_EXTERNAL_JS = siteConfig( 'CUSTOM_EXTERNAL_JS', null, NOTION_CONFIG ) // 默认关闭NProgress const ENABLE_NPROGRSS = siteConfig('ENABLE_NPROGRSS', false) const COZE_BOT_ID = siteConfig('COZE_BOT_ID') const HILLTOP_ADS_META_ID = siteConfig( 'HILLTOP_ADS_META_ID', null, NOTION_CONFIG ) const ENABLE_ICON_FONT = siteConfig('ENABLE_ICON_FONT', false) // 自定义样式css和js引入 if (isBrowser) { // 初始化AOS动画 // 静态导入本地自定义样式 loadExternalResource('/css/custom.css', 'css') loadExternalResource('/js/custom.js', 'js') // 自动添加图片阴影 if (IMG_SHADOW) { loadExternalResource('/css/img-shadow.css', 'css') } if (ANIMATE_CSS_URL) { loadExternalResource(ANIMATE_CSS_URL, 'css') } // 导入外部自定义脚本 if (CUSTOM_EXTERNAL_JS && CUSTOM_EXTERNAL_JS.length > 0) { for (const url of CUSTOM_EXTERNAL_JS) { loadExternalResource(url, 'js') } } // 导入外部自定义样式 if (CUSTOM_EXTERNAL_CSS && CUSTOM_EXTERNAL_CSS.length > 0) { for (const url of CUSTOM_EXTERNAL_CSS) { loadExternalResource(url, 'css') } } } const router = useRouter() useEffect(() => { // 异步渲染谷歌广告 if (ADSENSE_GOOGLE_ID) { setTimeout(() => { initGoogleAdsense(ADSENSE_GOOGLE_ID) }, 3000) } setTimeout(() => { // 映射url convertInnerUrl({ allPages: props?.allNavPages, lang: lang }) }, 500) }, [router]) useEffect(() => { // 执行注入脚本 // eslint-disable-next-line no-eval eval(GLOBAL_JS) }, []) if (DISABLE_PLUGIN) { return null } return ( <> {/* 全局样式嵌入 */} {ENABLE_ICON_FONT && } {MOUSE_FOLLOW && } {THEME_SWITCH && } {DEBUG && } {ANALYTICS_ACKEE_TRACKER && } {ANALYTICS_GOOGLE_ID && } {ANALYTICS_VERCEL && } {ANALYTICS_BUSUANZI_ENABLE && } {FACEBOOK_APP_ID && FACEBOOK_PAGE_ID && } {FIREWORKS && } {SAKURA && } {STARRY_SKY && } {MUSIC_PLAYER && } {NEST && } {FLUTTERINGRIBBON && } {COMMENT_TWIKOO_COUNT_ENABLE && } {RIBBON && } {DIFY_CHATBOT_ENABLED && } {CUSTOM_RIGHT_CLICK_CONTEXT_MENU && } {!CAN_COPY && } {WEB_WHIZ_ENABLED && } {AD_WWADS_BLOCK_DETECT && } {TIANLI_KEY && } {ENABLE_NPROGRSS && } {ANALYTICS_51LA_ID && ANALYTICS_51LA_CK && } {COZE_BOT_ID && } {ANALYTICS_51LA_ID && ANALYTICS_51LA_CK && ( <>