@easyx.ai/dumi-theme-easyxai
Version:
@easyx.ai/dumi-theme-easyxai 是为 dumi2 打造的一款文档站主题包,提供了更加美观、易用的研发与阅读体验
58 lines • 5.42 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
import { useMemo } from 'react';
import { createStyles } from 'antd-style';
import Previewer from 'dumi/theme-default/builtins/Previewer';
import { rgba } from 'polished';
import DemoProvider from "../../components/DemoProvider";
import { IntersectionLoad } from "../../components/LazyLoad";
import { useSiteStore } from "../../store";
import { jsx as _jsx } from "react/jsx-runtime";
var useStyles = createStyles(function (_ref) {
var css = _ref.css,
token = _ref.token,
prefixCls = _ref.prefixCls;
return {
container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .dumi-default-previewer {\n border-color: ", ";\n display: flex;\n flex-direction: column;\n\n &-demo {\n flex: 1;\n\n &[data-iframe]::before {\n background: ", ";\n }\n }\n\n &-meta {\n border-color: ", ";\n flex: 1;\n\n .", "-highlighter {\n pre {\n border-radius: 0 !important;\n }\n }\n }\n &-actions {\n svg {\n fill: ", ";\n }\n }\n &-actions:not(:last-child) {\n border-color: ", ";\n }\n\n &-desc {\n .markdown {\n border-color: ", ";\n }\n\n h5 {\n background: linear-gradient(\n to top,\n ", ",\n ", " 50%,\n ", " 100%\n );\n\n a {\n color: ", ";\n }\n }\n }\n\n &-tabs::after {\n border-color: ", ";\n }\n }\n\n .dumi-default-tabs-tab {\n &-btn {\n color: ", ";\n }\n\n &-active {\n .dumi-default-tabs-tab-btn {\n color: ", ";\n }\n }\n }\n "])), token.colorBorderSecondary, token.colorFillContent, token.colorBorderSecondary, prefixCls, token.colorTextTertiary, token.colorBorderSecondary, token.colorBorderSecondary, token.colorBgContainer, rgba(token.colorBgContainer, 0.95), rgba(token.colorBgContainer, 0), token.colorText, token.colorBorderSecondary, token.colorTextTertiary, token.colorText),
top: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n .dumi-default-previewer {\n flex-direction: column-reverse;\n\n &-meta {\n display: flex;\n flex-direction: column;\n }\n\n &-actions {\n order: 1;\n }\n\n &-desc {\n order: 2;\n }\n }\n "]))),
left: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n .dumi-default-previewer {\n flex-direction: row-reverse;\n &-demo {\n width: 50%;\n border-left: 1px solid ", ";\n }\n &-meta {\n width: 50%;\n }\n }\n "])), token.colorBorderSecondary),
right: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n .dumi-default-previewer {\n flex-direction: row;\n &-demo {\n width: 50%;\n border-right: 1px solid ", ";\n }\n &-meta {\n width: 50%;\n }\n }\n "])), token.colorBorderSecondary)
};
});
export default (function (props) {
var _useStyles = useStyles(),
styles = _useStyles.styles,
cx = _useStyles.cx,
theme = _useStyles.theme;
var height = useMemo(function () {
if (typeof props.iframe === 'number') {
return props.iframe;
}
if (props.height) {
return props.height;
}
return 300;
}, [props.iframe, props.height]);
var inheritSiteTheme = props.inheritSiteTheme || theme.demoInheritSiteTheme;
var demoAppearance = props.appearance;
var lazyLoading = useSiteStore(function (s) {
var _s$siteData$themeConf;
return (_s$siteData$themeConf = s.siteData.themeConfig.demo) === null || _s$siteData$themeConf === void 0 ? void 0 : _s$siteData$themeConf.lazyLoading;
});
var content = /*#__PURE__*/_jsx(DemoProvider, {
inheritSiteTheme: inheritSiteTheme,
demoAppearance: demoAppearance,
children: /*#__PURE__*/_jsx(Previewer, _objectSpread({}, props))
});
return /*#__PURE__*/_jsx("div", {
className: cx(styles.container, styles[props.codePlacement]),
children: lazyLoading ? /*#__PURE__*/_jsx(IntersectionLoad, {
height: height,
elementType: "section",
children: content
}) : content
});
});