@logicflow/dumi-theme-simple
Version:
Simple website theme based on dumi2.
68 lines (64 loc) • 2.58 kB
JavaScript
import React, { useEffect } from 'react';
import { useOutlet, useLocation, useSiteData } from 'dumi';
import { injectSpeedInsights } from '@vercel/speed-insights';
import { inject } from '@vercel/analytics';
import { Index } from "./entry";
import { Manual } from "./entry/Manual";
// 用户手动添加自己的
import "../slots/global";
import "../slots/_.less";
/**
* DocLayout 是 dumi2 的内置 layout 入口,在这里使用页面路径进行区分成自己不同的 Layout。
*/
import { jsx as _jsx } from "react/jsx-runtime";
export default (function () {
var _useSiteData = useSiteData(),
themeConfig = _useSiteData.themeConfig,
loading = _useSiteData.loading;
var navs = themeConfig.navs;
// 打印控制台文案
useEffect(function () {
console.log('%cLogicFlow 让流程图绘制更方便快捷', 'color:#5B7102; font-size: 20px;');
console.log('%c打造新一代流程图绘制和执行的解决方案', 'color:#5B7102;');
console.log('--------------------------');
console.log('%c添加我们的官方微信号 %c“logic-flow”%c,申请加入 LogicFlow 用户群讨论问题,也欢迎加入我们共建项目!', 'color: red', 'color: pink', 'color: red');
}, []);
var outlet = useOutlet();
var _useLocation = useLocation(),
pathname = _useLocation.pathname,
hash = _useLocation.hash;
if (themeConfig.useSpeedInsights) {
injectSpeedInsights();
inject();
}
// 监听 hash 变更,跳转到锚点位置
// 同时监听页面 loading 状态,因为路由按需加载时需要等待页面渲染完毕才能找到锚点位置
useEffect(function () {
var id = hash.replace('#', '');
if (id) {
var elm = document.getElementById(decodeURIComponent(id));
if (elm) document.documentElement.scrollTo(0, elm.offsetTop - 80);
}
}, [loading, hash]);
var path = pathname;
// 统一去掉中英文前缀
var p = path.replace('/zh/', '/').replace('/en/', '/');
// 首页
if (p === '/' || p === '/zh' || p === '/en' || p === '/en/') return /*#__PURE__*/_jsx(Index, {});
// 匹配 navs 中的 docs 路由
var docsRoutes = navs.filter(function (nav) {
return nav.slug && nav.slug.startsWith('docs/');
}).map(function (nav) {
return nav.slug && nav.slug.split('/').find(function (item) {
return item !== 'docs';
});
});
if (docsRoutes.some(function (route) {
return p.startsWith("/".concat(route)) || p.startsWith("/docs/".concat(route));
})) {
return /*#__PURE__*/_jsx(Manual, {
children: outlet
});
}
return outlet;
});