UNPKG

vuepress-theme-hope

Version:

A light vuepress theme with tons of features

53 lines 2.16 kB
import { isString } from "@vuepress/helper/client"; import { useMutationObserver } from "@vueuse/core"; import { defineComponent, h, ref, shallowRef } from "vue"; import { useRoutePath } from "vuepress/client"; import { usePure } from "@theme-hope/composables/index"; import { EyeIcon, FireIcon } from "@theme-hope/modules/info/components/icons"; import { useMetaLocale } from "@theme-hope/modules/info/composables/index"; export default defineComponent({ name: "PageViewInfo", inheritAttrs: false, props: { /** * Whether show pageview and it's path * * 是否显示浏览量以及其路径 */ pageview: [Boolean, String], }, setup(props) { const routePath = useRoutePath(); const metaLocale = useMetaLocale(); const isPure = usePure(); const pageviewElement = shallowRef(); const pageViews = ref(0); useMutationObserver(pageviewElement, () => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const count = pageviewElement.value.textContent; if (count && !isNaN(Number(count))) pageViews.value = Number(count); }, { childList: true }); return () => props.pageview ? h("span", { class: "page-pageview-info", "aria-label": `${metaLocale.value.views}${isPure.value ? "" : "🔢"}`, ...(isPure.value ? {} : { "data-balloon-pos": "up" }), }, [ h(pageViews.value < 1000 ? EyeIcon : FireIcon), h("span", { ref: pageviewElement, id: "ArtalkPV", class: "vp-pageview waline-pageview-count", "data-path": isString(props.pageview) ? props.pageview : routePath.value, "data-page-key": isString(props.pageview) ? props.pageview : routePath.value, }, "..."), ]) : null; }, }); //# sourceMappingURL=PageViewInfo.js.map