UNPKG

@hjkl6/dumi-theme-antv

Version:

[![NPM version](https://img.shields.io/npm/v/@antv/dumi-theme-antv.svg?style=flat)](https://npmjs.org/package/@antv/dumi-theme-antv) [![NPM downloads](http://img.shields.io/npm/dm/@antv/dumi-theme-antv.svg?style=flat)](https://npmjs.org/package/@antv/dumi

55 lines (50 loc) 2.26 kB
import { useLocation, useOutlet, useSiteData } from 'dumi'; import React, { useEffect } from 'react'; import { getCurrentPathname } from "../slots/utils"; import { Index } from "./entry/Index"; import { Manual } from "./entry/Manual"; // 用户手动添加自己的 import "../slots/_.less"; import "../slots/global"; /** * DocuLayout 是 dumi2 的内置 layout 入口,在这里使用页面路径进行区分成自己不同的 Layout。 */ export default (function () { var _useSiteData = useSiteData(), themeConfig = _useSiteData.themeConfig, loading = _useSiteData.loading; var navs = themeConfig.navs; // 打印控制台文案 useEffect(function () { console.log('%cAntV 让数据栩栩如生', 'color:#5B7102; font-size: 20px;'), console.log('%c新一代数据可视化解决方案', 'color:#5B7102;'), console.log('--------------------------'), console.log('%c关注我们的微信公众号 %c“数据可视化 AntV”%c,获取我们团队最新的进展、动态、分享,也欢迎加入我们!', 'color: red', 'color: pink', 'color: red'); }, []); var outlet = useOutlet(); var _useLocation = useLocation(), hash = _useLocation.hash; // 监听 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 p = getCurrentPathname(); // 首页 if (p === '/' || p === '/zh' || p === '/en' || p === '/en/') return /*#__PURE__*/React.createElement(Index, null); // 匹配 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__*/React.createElement(Manual, null, outlet); } return outlet; });