dumi-theme-lobehub
Version:
dumi-theme-lobehub is a documentation site theme package designed for dumi2. It provides a more beautiful and user-friendly development and reading experience based on @lobehub/ui
33 lines (32 loc) • 1.02 kB
JavaScript
import { getRouteMetaById, useMatchedRoute } from 'dumi';
import useSWR from 'swr';
import { useStoreApi } from "../../store/useSiteStore";
var EMPTY_META = {
frontmatter: {},
texts: [],
toc: []
};
// https://github.com/umijs/dumi/pull/2165
export var useRouteMeta = function useRouteMeta() {
var storeApi = useStoreApi();
var matched = useMatchedRoute();
var merge = function merge() {
var meta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_META;
if (matched.meta) {
for (var _i = 0, _Object$keys = Object.keys(matched.meta); _i < _Object$keys.length; _i++) {
var _ref, _ref$key;
var key = _Object$keys[_i];
(_ref$key = (_ref = meta)[key]) !== null && _ref$key !== void 0 ? _ref$key : _ref[key] = matched.meta[key];
}
}
return meta;
};
useSWR(matched.id, getRouteMetaById, {
fallback: EMPTY_META,
onSuccess: function onSuccess(meta) {
storeApi.setState({
routeMeta: merge(meta)
});
}
});
};