| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /**
- * Generated by "@vuepress/internal-transform-modules"
- */
- 'use strict'
- /**
- * Get page data via path (permalink).
- *
- * @param {array} pages
- * @param {string} path
- * @returns {object}
- */
- function findPageForPath (pages, path) {
- for (let i = 0; i < pages.length; i++) {
- const page = pages[i]
- if (page.path.toLowerCase() === path.toLowerCase()) {
- return page
- }
- }
- return {
- path: '',
- frontmatter: {}
- }
- }
- /**
- * Expose a function to get ClientComputedMixin constructor.
- * Note that this file will run in both server and client side.
- *
- * @param {object} siteData
- * @returns {ClientComputedMixin}
- */
- export default siteData => {
- return class ClientComputedMixin {
- setPage (page) {
- this.__page = page
- }
- get $site () {
- return siteData
- }
- get $themeConfig () {
- return this.$site.themeConfig
- }
- get $frontmatter () {
- return this.$page.frontmatter
- }
- get $localeConfig () {
- const { locales = {}} = this.$site
- let targetLang
- let defaultLang
- for (const path in locales) {
- if (path === '/') {
- defaultLang = locales[path]
- } else if (this.$page.path.indexOf(path) === 0) {
- targetLang = locales[path]
- }
- }
- return targetLang || defaultLang || {}
- }
- get $siteTitle () {
- return this.$localeConfig.title || this.$site.title || ''
- }
- get $canonicalUrl () {
- const { canonicalUrl } = this.$page.frontmatter
- if (typeof canonicalUrl === 'string') {
- return canonicalUrl
- }
- return false
- }
- get $title () {
- const page = this.$page
- const { metaTitle } = this.$page.frontmatter
- if (typeof metaTitle === 'string') {
- return metaTitle
- }
- const siteTitle = this.$siteTitle
- const selfTitle = page.frontmatter.home ? null : (
- page.frontmatter.title // explicit title
- || page.title // inferred title
- )
- return siteTitle
- ? selfTitle
- ? (selfTitle + ' | ' + siteTitle)
- : siteTitle
- : selfTitle || 'VuePress'
- }
- get $description () {
- // #565 hoist description from meta
- const description = getMetaDescription(this.$page.frontmatter.meta)
- if (description) {
- return description
- }
- return this.$page.frontmatter.description || this.$localeConfig.description || this.$site.description || ''
- }
- get $lang () {
- return this.$page.frontmatter.lang || this.$localeConfig.lang || 'en-US'
- }
- get $localePath () {
- return this.$localeConfig.path || '/'
- }
- get $themeLocaleConfig () {
- return (this.$site.themeConfig.locales || {})[this.$localePath] || {}
- }
- get $page () {
- if (this.__page) {
- return this.__page
- }
- return findPageForPath(
- this.$site.pages,
- this.$route.path
- )
- }
- }
- }
- function getMetaDescription (meta) {
- if (meta) {
- const descriptionMeta = meta.filter(item => item.name === 'description')[0]
- if (descriptionMeta) return descriptionMeta.content
- }
- }
|