gatsby-theme-zh
Version:
157 lines (156 loc) • 8.6 kB
JavaScript
"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;