vuepress-theme-hope
Version:
A light vuepress theme with tons of features
60 lines (56 loc) • 1.81 kB
JavaScript
import { c as usePure, l as useData, o as usePageInfo, t as PageInfo_default } from "./PageInfo-BBtUekHB.js";
import { Transition, defineComponent, h, resolveComponent } from "vue";
import { RenderDefault } from "@vuepress/helper/client";
import "@vuepress/helper/transition/fade-in-up.css";
import "./client/styles/base/page-title.scss";
//#region src/client/utils/scrollPromise.ts
let promise = null;
let promiseResolve = null;
const scrollPromise = {
wait: () => promise,
pending: () => {
promise = new Promise((resolve) => {
promiseResolve = resolve;
});
},
resolve: () => {
promiseResolve?.();
promise = null;
promiseResolve = null;
}
};
//#endregion
//#region src/client/components/base/MainFadeInUpTransition.ts
var MainFadeInUpTransition_default = defineComponent({
name: "MainFadeInUpTransition",
slots: Object,
setup(_props, { slots }) {
const pure = usePure();
return () => pure.value ? h(RenderDefault, slots.default) : h(Transition, {
name: "fade-in-up",
mode: "out-in",
onBeforeEnter: scrollPromise.resolve,
onBeforeLeave: scrollPromise.pending
}, slots.default);
}
});
//#endregion
//#region src/client/components/base/PageTitle.ts
var PageTitle_default = defineComponent({
name: "PageTitle",
setup() {
const { frontmatter, page, themeLocale } = useData();
const { info, items } = usePageInfo();
return () => h("div", { class: "vp-page-title" }, [
h("h1", [themeLocale.value.titleIcon === false ? null : h(resolveComponent("VPIcon"), { icon: frontmatter.value.icon }), page.value.title]),
h(PageInfo_default, {
info: info.value,
items: items.value
}),
h("hr")
]);
}
});
//#endregion
export { MainFadeInUpTransition_default as n, scrollPromise as r, PageTitle_default as t };
//# sourceMappingURL=PageTitle-aWhvdXk3.js.map