UNPKG

gatsby-theme-zh

Version:
157 lines (156 loc) 8.6 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OLD_SITE_DOMAIN = void 0; const react_1 = __importStar(require("react")); const gatsby_1 = require("gatsby"); const rc_footer_1 = __importDefault(require("rc-footer")); const react_i18next_1 = require("react-i18next"); const icons_1 = require("@ant-design/icons"); const classnames_1 = __importDefault(require("classnames")); const omit_js_1 = __importDefault(require("omit.js")); const getProducts_1 = require("./getProducts"); const hooks_1 = require("../hooks"); const Footer_module_less_1 = __importDefault(require("./Footer.module.less")); require("rc-footer/assets/index.less"); exports.OLD_SITE_DOMAIN = 'https://antv-2018.alipay.com'; const Footer = ({ columns, bottom, theme = 'dark', language, rootDomain = '', location, ...restProps }) => { const [withMenu, setWithMenu] = react_1.useState(false); const { t, i18n } = react_i18next_1.useTranslation(); const lang = language || i18n.language; const [isChinaMirrorHost] = hooks_1.useChinaMirrorHost(); const products = getProducts_1.getProducts({ t, language: lang, rootDomain, isChinaMirrorHost, }); const more = { icon: (react_1.default.createElement("img", { src: "https://gw.alipayobjects.com/zos/rmsportal/nBVXkrFdWHxbZlmMbsaH.svg", alt: "more products" })), title: t('更多产品'), items: [ { icon: (react_1.default.createElement("img", { src: "https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg", alt: "Ant Design" })), title: 'Ant Design', url: 'https://ant.design', description: t('企业级 UI 设计语言'), openExternal: true, }, { icon: (react_1.default.createElement("img", { src: "https://gw.alipayobjects.com/zos/rmsportal/XuVpGqBFxXplzvLjJBZB.svg", alt: "yuque" })), title: t('语雀'), url: 'https://yuque.com', description: t('知识创作与分享工具'), openExternal: true, }, { icon: (react_1.default.createElement("img", { src: "https://gw.alipayobjects.com/zos/antfincdn/sAEs8aHCnd/yunfengdie.png", alt: "yunfengdie" })), title: t('云凤蝶'), url: 'https://yunfengdie.com', description: t('中台建站平台'), openExternal: true, }, { icon: (react_1.default.createElement("img", { src: "https://gw.alipayobjects.com/zos/antfincdn/v2%24rh7lqpu/82f338dd-b0a6-41bc-9a86-58aaa9df217b.png", alt: "Egg" })), title: 'Egg', url: 'https://eggjs.org', description: t('企业级 Node 开发框架'), openExternal: true, }, { icon: (react_1.default.createElement("img", { src: "https://gw.alipayobjects.com/zos/rmsportal/DMDOlAUhmktLyEODCMBR.ico", alt: "kitchen" })), title: 'Kitchen', description: t('Sketch 工具集'), url: 'https://kitchen.alipay.com', openExternal: true, }, { icon: (react_1.default.createElement("img", { src: "https://gw.alipayobjects.com/zos/rmsportal/nBVXkrFdWHxbZlmMbsaH.svg", alt: "xtech" })), title: t('蚂蚁体验科技'), url: 'https://xtech.antfin.com/', openExternal: true, }, ], }; const defaultColumns = products .filter((product) => product.category !== 'ecology') .map((product) => ({ title: (react_1.default.createElement("span", null, product.title, react_1.default.createElement("span", { className: Footer_module_less_1.default.description }, product.slogan))), items: product.links, })); react_1.useEffect(() => { // 有 menu 的模版 footer 表现不同,通过 location 判断加载的模版 const pathPrefix = gatsby_1.withPrefix('/').replace(/\/$/, ''); const path = location.pathname.replace(pathPrefix, ''); const isExamplePage = path.startsWith(`/zh/examples`) || path.startsWith(`/en/examples`); const isDocsPage = path.startsWith(`/zh/docs`) || path.startsWith(`/en/docs`); // examples 页面里目前只有 gallery 是有 footer 的, // 且 gallery 会出现 `location.key = 'initial'` 逻辑,所以先统一处理为需要 menu if (isExamplePage) { setWithMenu(true); } else if (isDocsPage) { // 文档页为 404 时 footer 没有 menu setWithMenu(!(location.key === 'initial')); } else { setWithMenu(false); } }, [location]); const getColums = () => { if (products.length % 2 !== 0) { return [...defaultColumns]; } return [...defaultColumns]; }; return (react_1.default.createElement(rc_footer_1.default, Object.assign({ maxColumnsPerRow: 5, theme: theme, columns: columns || getColums(), className: classnames_1.default(Footer_module_less_1.default.footer, { [Footer_module_less_1.default.withMenu]: withMenu, }), bottom: bottom || (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: Footer_module_less_1.default.more }, react_1.default.createElement("span", { className: Footer_module_less_1.default.title }, more.title), more.items.map((item) => (react_1.default.createElement("div", { key: item.title, style: { marginRight: 16 } }, react_1.default.createElement("a", { href: item.url, target: "_blank", rel: "noopener noreferrer" }, item.icon, item.title), item.description && react_1.default.createElement("span", null, `- ${item.description}`))))), react_1.default.createElement("div", { className: Footer_module_less_1.default.bottom }, react_1.default.createElement("div", null, react_1.default.createElement("a", { href: "https://weibo.com/antv2017", target: "_blank", rel: "noopener noreferrer" }, react_1.default.createElement(icons_1.WeiboOutlined, null)), react_1.default.createElement("a", { href: "https://zhuanlan.zhihu.com/aiux-antv", target: "_blank", rel: "noopener noreferrer" }, react_1.default.createElement(icons_1.ZhihuOutlined, null)), react_1.default.createElement("a", { href: "https://github.com/antvis", target: "_blank", rel: "noopener noreferrer" }, react_1.default.createElement(icons_1.GithubOutlined, null)), react_1.default.createElement("a", { href: `${rootDomain}/${lang}/about` }, t('关于我们')), react_1.default.createElement("a", { href: exports.OLD_SITE_DOMAIN, target: "_blank", rel: "noopener noreferrer" }, t('返回旧版'))), react_1.default.createElement("div", null, "\u00A9 ", new Date().getFullYear(), " Made with \u2764 by", ' ', react_1.default.createElement("a", { href: "https://xtech.antfin.com/" }, "XTech"))))) }, omit_js_1.default(restProps, ['githubUrl'])))); }; exports.default = Footer;