diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts index a3b47cd..694812b 100644 --- a/.vitepress/theme/index.ts +++ b/.vitepress/theme/index.ts @@ -1,7 +1,6 @@ import { inBrowser } from 'vitepress' import DefaultTheme from 'vitepress/theme' import { changeLocales } from './plugins/locales' -import { setSymbolStyle, replaceSymbol } from './plugins/symbol' import { siteIds, registerAnalytics, trackPageview } from './plugins/analytics' import { isInvalidRoute, redirect } from './plugins/redirect' import './styles/custom.css' @@ -15,7 +14,6 @@ const theme: Theme = { redirect() } - setSymbolStyle() siteIds.forEach((id) => registerAnalytics(id)) window.addEventListener('load', () => { @@ -29,7 +27,6 @@ const theme: Theme = { router.onAfterRouteChanged = (to) => { changeLocales() - replaceSymbol() siteIds.forEach((id) => trackPageview(id, to)) } } diff --git a/.vitepress/theme/plugins/analytics.ts b/.vitepress/theme/plugins/analytics.ts index c33dcc0..636cd27 100644 --- a/.vitepress/theme/plugins/analytics.ts +++ b/.vitepress/theme/plugins/analytics.ts @@ -1,16 +1,10 @@ import { inBrowser } from 'vitepress' -/** - * 统计站点的 ID 列表 - */ export const siteIds = [ - 'd6895b6f22616e579e9e6d37936b8dca', // 主站 - '025e7d9acbc7359afa71bdae5aa03f33', // 本站 + 'd6895b6f22616e579e9e6d37936b8dca', // Cropper + '8dca8e2532df48ea7f1b15c714588691', // Blog ] -/** - * 注册统计 - */ export function registerAnalytics(siteId: string) { if (!inBrowser) return if (document.querySelector(`#analytics-plugin-${siteId}`)) return @@ -23,11 +17,6 @@ export function registerAnalytics(siteId: string) { document.querySelector('head')?.appendChild(script) } -/** - * 上报 PV 数据 - * @param siteId - 站点 ID - * @param pageUrl - 页面 URL - */ export function trackPageview(siteId: string, pageUrl: string) { if (!inBrowser) return if (!pageUrl || typeof pageUrl !== 'string') { diff --git a/.vitepress/theme/plugins/redirect.ts b/.vitepress/theme/plugins/redirect.ts index 124fece..75be622 100644 --- a/.vitepress/theme/plugins/redirect.ts +++ b/.vitepress/theme/plugins/redirect.ts @@ -1,15 +1,9 @@ import { inBrowser } from 'vitepress' -/** - * 重定向的 Map 表 - */ export const redirectMap = { - update: 'upgrade', + // update: 'upgrade', } -/** - * 根据页面 URL 提取路由名称 - */ export function getRouteName() { if (!inBrowser) return '' const { pathname } = window.location @@ -17,9 +11,6 @@ export function getRouteName() { return routeName } -/** - * 判断是否无效路由 - */ export function isInvalidRoute() { if (!inBrowser) return false const routeName = getRouteName() @@ -27,18 +18,12 @@ export function isInvalidRoute() { return keys.includes(routeName) } -/** - * 获取重定向目标 - */ export function redirectTarget() { if (!inBrowser) return '/' const routeName = getRouteName() return `/${redirectMap[routeName]}.html` || '/' } -/** - * 重定向 - */ export function redirect() { if (!inBrowser) return window.location.replace(redirectTarget()) diff --git a/.vitepress/theme/plugins/symbol.ts b/.vitepress/theme/plugins/symbol.ts deleted file mode 100644 index 9467502..0000000 --- a/.vitepress/theme/plugins/symbol.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { inBrowser } from 'vitepress' - -interface Config { - hot: string - new: string -} - -// 标记 -const markConfig: Config = { - hot: ' ~hot', - new: ' ~new', -} - -// 图标 -const iconConfig: Config = { - hot: '', - new: '', -} - -/** - * 设置图标样式 - */ -export function setSymbolStyle() { - if (!inBrowser) return - try { - const ID = 'symbol-plugin' - if (document.querySelector(`#${ID}`)) return - - const CSS = ` - .sidebar__icon--default { - position: relative; - display: inline-block; - width: 18px; - height: 18px; - color: #fff; - font-size: 13px; - font-weight: bold; - font-style: normal; - vertical-align: middle; - margin: 0 5px; - transform: scale(0.7) rotate(30deg); - } - .sidebar__icon--default:before { - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 18px; - line-height: 18px; - text-align: center; - transform: rotate(135deg); - } - .sidebar__icon--hot { - background-color: #da5961; - } - .sidebar__icon--hot:before { - content: "H"; - background-color: #da5961; - } - .sidebar__icon--new { - background-color: #3eaf7c; - } - .sidebar__icon--new:before { - content: "N"; - background-color: #3eaf7c; - } - ` - - const style = document.createElement('style') - style.id = ID - style.appendChild(document.createTextNode(CSS)) - document.head.appendChild(style) - } catch (e) { - console.log(e) - } -} - -/** - * 执行标记替换 - */ -export function replaceSymbol() { - if (!inBrowser) return - setTimeout(() => { - try { - // 获取 DOM - const sidebarLinks = - document.querySelectorAll('.aside-container nav .outline-link') || [] - const h2s = document.querySelectorAll('.content-container h2') || [] - const h3s = document.querySelectorAll('.content-container h3') || [] - const h4s = document.querySelectorAll('.content-container h4') || [] - const doms = [...sidebarLinks, ...h2s, ...h3s, ...h4s] - - // 替换标记成图标 - doms.forEach((item) => { - let html = item.innerHTML - - for (const key in markConfig) { - if (Object.hasOwnProperty.call(markConfig, key)) { - const mark = markConfig[key] - const icon = iconConfig[key] - const reg = new RegExp(mark, 'img') - - // 只处理包含标记的元素 - if (html.includes(mark)) { - // 部分元素不显示图标 - const { nodeName } = item - switch (nodeName) { - case 'H2': - case 'H3': - case 'H4': - html = html.replace(reg, '') - break - default: - html = html.replace(reg, icon) - } - - // 渲染 - item.innerHTML = html - } - } - } - }) - } catch (e) { - console.log(e) - } - }, 100) -}