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 (
<>
{/* 全局样式嵌入 */}