diff --git a/404.html b/404.html new file mode 100644 index 000000000..e257bde9f --- /dev/null +++ b/404.html @@ -0,0 +1,43 @@ + + + + + + + + + VuePress + + + + + +

404

That's a Four-Oh-Four.
Take me home
+ + + diff --git a/advanced/architecture.html b/advanced/architecture.html new file mode 100644 index 000000000..8b5fdb972 --- /dev/null +++ b/advanced/architecture.html @@ -0,0 +1,43 @@ + + + + + + + + + Architecture | VuePress + + + + + +
+ + + diff --git a/advanced/cookbook/adding-extra-pages.html b/advanced/cookbook/adding-extra-pages.html new file mode 100644 index 000000000..b8f98954b --- /dev/null +++ b/advanced/cookbook/adding-extra-pages.html @@ -0,0 +1,68 @@ + + + + + + + + + Adding Extra Pages | VuePress + + + + + +
+ + + diff --git a/advanced/cookbook/index.html b/advanced/cookbook/index.html new file mode 100644 index 000000000..a5f5d7fd3 --- /dev/null +++ b/advanced/cookbook/index.html @@ -0,0 +1,43 @@ + + + + + + + + + Introduction | VuePress + + + + + +
+ + + diff --git a/advanced/cookbook/making-a-theme-extendable.html b/advanced/cookbook/making-a-theme-extendable.html new file mode 100644 index 000000000..92b951a97 --- /dev/null +++ b/advanced/cookbook/making-a-theme-extendable.html @@ -0,0 +1,72 @@ + + + + + + + + + Making a Theme Extendable | VuePress + + + + + +
+ + + diff --git a/advanced/cookbook/markdown-and-vue-sfc.html b/advanced/cookbook/markdown-and-vue-sfc.html new file mode 100644 index 000000000..68e5a7bed --- /dev/null +++ b/advanced/cookbook/markdown-and-vue-sfc.html @@ -0,0 +1,72 @@ + + + + + + + + + Markdown and Vue SFC | VuePress + + + + + +
+ + + diff --git a/advanced/cookbook/passing-data-to-client-code.html b/advanced/cookbook/passing-data-to-client-code.html new file mode 100644 index 000000000..1c37a4d3a --- /dev/null +++ b/advanced/cookbook/passing-data-to-client-code.html @@ -0,0 +1,62 @@ + + + + + + + + + Passing Data to Client Code | VuePress + + + + + +
+ + + diff --git a/advanced/cookbook/resolving-routes.html b/advanced/cookbook/resolving-routes.html new file mode 100644 index 000000000..58b1be785 --- /dev/null +++ b/advanced/cookbook/resolving-routes.html @@ -0,0 +1,60 @@ + + + + + + + + + Resolving Routes | VuePress + + + + + +
+ + + diff --git a/advanced/cookbook/usage-of-client-config.html b/advanced/cookbook/usage-of-client-config.html new file mode 100644 index 000000000..67859be9f --- /dev/null +++ b/advanced/cookbook/usage-of-client-config.html @@ -0,0 +1,120 @@ + + + + + + + + + Usage of Client Config | VuePress + + + + + +
+ + + diff --git a/advanced/plugin.html b/advanced/plugin.html new file mode 100644 index 000000000..5d0ccaf51 --- /dev/null +++ b/advanced/plugin.html @@ -0,0 +1,60 @@ + + + + + + + + + Writing a Plugin | VuePress + + + + + +
+ + + diff --git a/advanced/theme.html b/advanced/theme.html new file mode 100644 index 000000000..58b2d7ef9 --- /dev/null +++ b/advanced/theme.html @@ -0,0 +1,92 @@ + + + + + + + + + Writing a Theme | VuePress + + + + + +
+ + + diff --git a/assets/404.html-Y5XR-oHF.js b/assets/404.html-Y5XR-oHF.js new file mode 100644 index 000000000..0e35f3ff9 --- /dev/null +++ b/assets/404.html-Y5XR-oHF.js @@ -0,0 +1 @@ +import{_ as e,c as o,b as n,o as r}from"./app-9HBJsLu_.js";const a={};function p(s,t){return r(),o("div",null,t[0]||(t[0]=[n("p",null,"404 Not Found",-1)]))}const l=e(a,[["render",p],["__file","404.html.vue"]]),i=JSON.parse('{"path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"NotFound","description":"404 Not Found","head":[["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/404.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:description","content":"404 Not Found"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"en-US"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"\\",\\"description\\":\\"404 Not Found\\"}"]]},"headers":[],"git":{},"autoDesc":true,"filePathRelative":null}');export{l as comp,i as data}; diff --git a/assets/NpmBadge-KVBLyX2u.js b/assets/NpmBadge-KVBLyX2u.js new file mode 100644 index 000000000..d1180fb32 --- /dev/null +++ b/assets/NpmBadge-KVBLyX2u.js @@ -0,0 +1 @@ +import{j as p,k as n,_ as d,o as g,c as _,b as l}from"./app-9HBJsLu_.js";const i=p({__name:"NpmBadge",props:{package:{},distTag:{default:"next"}},setup(c,{expose:s}){s();const e=c,a=n(()=>`https://www.npmjs.com/package/${e.package}`),t=n(()=>e.distTag?`${e.package}@${e.distTag}`:e.package),o=n(()=>`https://badgen.net/npm/v/${e.package}/${e.distTag}?label=${encodeURIComponent(t.value)}`),r={props:e,badgeLink:a,badgeLabel:t,badgeImg:o};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),m=["href","title"],u=["src","alt"];function f(c,s,e,a,t,o){return g(),_("a",{class:"npm-badge",href:a.badgeLink,title:e.package,target:"_blank",rel:"noopener noreferrer"},[l("img",{src:a.badgeImg,alt:e.package},null,8,u)],8,m)}const b=d(i,[["render",f],["__scopeId","data-v-95cd33a3"],["__file","NpmBadge.vue"]]);export{b as default}; diff --git a/assets/adding-extra-pages.html-8wOaBP_-.js b/assets/adding-extra-pages.html-8wOaBP_-.js new file mode 100644 index 000000000..58c7cb216 --- /dev/null +++ b/assets/adding-extra-pages.html-8wOaBP_-.js @@ -0,0 +1,26 @@ +import{_ as o,c as t,b as n,d as a,e as l,f as p,a as r,r as i,o as c}from"./app-9HBJsLu_.js";const d={};function D(y,s){const e=i("RouteLink");return c(),t("div",null,[s[5]||(s[5]=n("h1",{id:"添加额外页面",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#添加额外页面"},[n("span",null,"添加额外页面")])],-1)),s[6]||(s[6]=n("p",null,"有时你可能希望在不创建 Markdown 文件的情况下添加一些额外的页面。",-1)),n("p",null,[s[2]||(s[2]=a("我们可以借助于 ")),l(e,{to:"/zh/reference/plugin-api.html"},{default:p(()=>s[0]||(s[0]=[a("插件 API")])),_:1}),s[3]||(s[3]=a(" 和 ")),l(e,{to:"/zh/reference/node-api.html"},{default:p(()=>s[1]||(s[1]=[a("Node API")])),_:1}),s[4]||(s[4]=a(" 来轻松实现。"))]),s[7]||(s[7]=r(`

添加默认的主页

作为一个主题作者,你可能不想要求用户必须创建一个 /README.md 文件来作为主页,但是你希望提供一个默认的主页:

import { createPage } from 'vuepress/core'
+
+export default {
+  // 初始化之后,所有的页面已经加载完毕
+  async onInitialized(app) {
+    // 如果主页不存在
+    if (app.pages.every((page) => page.path !== '/')) {
+      // 创建一个主页
+      const homepage = await createPage(app, {
+        path: '/',
+        // 设置 frontmatter
+        frontmatter: {
+          layout: 'Layout',
+        },
+        // 设置 markdown 内容
+        content: \`\\
+# 欢迎来到 \${app.options.title}
+
+这是默认主页
+\`,
+      })
+      // 把它添加到 \`app.pages\`
+      app.pages.push(homepage)
+    }
+  },
+}
`,3))])}const C=o(d,[["render",D],["__file","adding-extra-pages.html.vue"]]),v=JSON.parse('{"path":"/zh/advanced/cookbook/adding-extra-pages.html","title":"添加额外页面","lang":"zh-CN","frontmatter":{"description":"添加额外页面 有时你可能希望在不创建 Markdown 文件的情况下添加一些额外的页面。 我们可以借助于 和 来轻松实现。 添加默认的主页 作为一个主题作者,你可能不想要求用户必须创建一个 /README.md 文件来作为主页,但是你希望提供一个默认的主页:","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/advanced/cookbook/adding-extra-pages.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/advanced/cookbook/adding-extra-pages.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"添加额外页面"}],["meta",{"property":"og:description","content":"添加额外页面 有时你可能希望在不创建 Markdown 文件的情况下添加一些额外的页面。 我们可以借助于 和 来轻松实现。 添加默认的主页 作为一个主题作者,你可能不想要求用户必须创建一个 /README.md 文件来作为主页,但是你希望提供一个默认的主页:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-12-28T05:20:14.000Z"}],["meta",{"property":"article:modified_time","content":"2023-12-28T05:20:14.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"添加额外页面\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-12-28T05:20:14.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"添加默认的主页","slug":"添加默认的主页","link":"#添加默认的主页","children":[]}],"git":{"updatedTime":1703740814000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2}]},"autoDesc":true,"filePathRelative":"zh/advanced/cookbook/adding-extra-pages.md"}');export{C as comp,v as data}; diff --git a/assets/adding-extra-pages.html-NhbwxT0R.js b/assets/adding-extra-pages.html-NhbwxT0R.js new file mode 100644 index 000000000..dcaf0f504 --- /dev/null +++ b/assets/adding-extra-pages.html-NhbwxT0R.js @@ -0,0 +1,26 @@ +import{_ as t,c as p,b as a,d as e,e as l,f as o,a as r,r as i,o as c}from"./app-9HBJsLu_.js";const d={};function D(y,s){const n=i("RouteLink");return c(),p("div",null,[s[5]||(s[5]=a("h1",{id:"adding-extra-pages",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#adding-extra-pages"},[a("span",null,"Adding Extra Pages")])],-1)),s[6]||(s[6]=a("p",null,"Sometimes you might want to add some extra pages without creating a markdown file in the source directory.",-1)),a("p",null,[s[2]||(s[2]=e("With the help of ")),l(n,{to:"/reference/plugin-api.html"},{default:o(()=>s[0]||(s[0]=[e("Plugin API")])),_:1}),s[3]||(s[3]=e(" and ")),l(n,{to:"/reference/node-api.html"},{default:o(()=>s[1]||(s[1]=[e("Node API")])),_:1}),s[4]||(s[4]=e(", we can do that with ease."))]),s[7]||(s[7]=r(`

Add a Default Homepage

As a theme author, you may not require users to create a /README.md file as the homepage, but you want to provide a default one:

import { createPage } from 'vuepress/core'
+
+export default {
+  // all pages have been loaded after initialization
+  async onInitialized(app) {
+    // if the homepage does not exist
+    if (app.pages.every((page) => page.path !== '/')) {
+      // create a homepage
+      const homepage = await createPage(app, {
+        path: '/',
+        // set frontmatter
+        frontmatter: {
+          layout: 'Layout',
+        },
+        // set markdown content
+        content: \`\\
+# Welcome to \${app.options.title}
+
+This is the default homepage
+\`,
+      })
+      // add it to \`app.pages\`
+      app.pages.push(homepage)
+    }
+  },
+}
`,3))])}const u=t(d,[["render",D],["__file","adding-extra-pages.html.vue"]]),g=JSON.parse('{"path":"/advanced/cookbook/adding-extra-pages.html","title":"Adding Extra Pages","lang":"en-US","frontmatter":{"description":"Adding Extra Pages Sometimes you might want to add some extra pages without creating a markdown file in the source directory. With the help of and , we can do that with ease. Ad...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/advanced/cookbook/adding-extra-pages.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/advanced/cookbook/adding-extra-pages.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Adding Extra Pages"}],["meta",{"property":"og:description","content":"Adding Extra Pages Sometimes you might want to add some extra pages without creating a markdown file in the source directory. With the help of and , we can do that with ease. Ad..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-12-28T05:20:14.000Z"}],["meta",{"property":"article:modified_time","content":"2023-12-28T05:20:14.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Adding Extra Pages\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-12-28T05:20:14.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Add a Default Homepage","slug":"add-a-default-homepage","link":"#add-a-default-homepage","children":[]}],"git":{"updatedTime":1703740814000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2}]},"autoDesc":true,"filePathRelative":"advanced/cookbook/adding-extra-pages.md"}');export{u as comp,g as data}; diff --git a/assets/app-9HBJsLu_.js b/assets/app-9HBJsLu_.js new file mode 100644 index 000000000..a96842999 --- /dev/null +++ b/assets/app-9HBJsLu_.js @@ -0,0 +1,43 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/architecture.html-DMVSC9n2.js","assets/vuepress-core-process-C4qfrYlz.js","assets/assets.html-Dam5ylra.js","assets/hero-BNkrhNQ6.js","assets/architecture.html-alS37AmL.js","assets/assets.html-Dq9vV_LH.js"])))=>i.map(i=>d[i]); +const id="modulepreload",ad=function(e){return"/"+e},Ki={},q=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));o=Promise.allSettled(n.map(l=>{if(l=ad(l),l in Ki)return;Ki[l]=!0;const u=l.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${f}`))return;const c=document.createElement("link");if(c.rel=u?"stylesheet":id,u||(c.as="script"),c.crossOrigin="",c.href=l,a&&c.setAttribute("nonce",a),document.head.appendChild(c),u)return new Promise((d,p)=>{c.addEventListener("load",d),c.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return t().catch(s)})};/** +* @vue/shared v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Xn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Ae={},Vn=[],Ot=()=>{},ld=()=>!1,Mr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Gs=e=>e.startsWith("onUpdate:"),Fe=Object.assign,qs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ud=Object.prototype.hasOwnProperty,_e=(e,t)=>ud.call(e,t),oe=Array.isArray,Nn=e=>Co(e)==="[object Map]",fu=e=>Co(e)==="[object Set]",se=e=>typeof e=="function",Oe=e=>typeof e=="string",un=e=>typeof e=="symbol",Ce=e=>e!==null&&typeof e=="object",du=e=>(Ce(e)||se(e))&&se(e.then)&&se(e.catch),pu=Object.prototype.toString,Co=e=>pu.call(e),cd=e=>Co(e).slice(8,-1),hu=e=>Co(e)==="[object Object]",Ys=e=>Oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Mn=Xn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Oo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},fd=/-(\w)/g,rt=Oo(e=>e.replace(fd,(t,n)=>n?n.toUpperCase():"")),dd=/\B([A-Z])/g,Ft=Oo(e=>e.replace(dd,"-$1").toLowerCase()),Br=Oo(e=>e.charAt(0).toUpperCase()+e.slice(1)),qo=Oo(e=>e?`on${Br(e)}`:""),tn=(e,t)=>!Object.is(e,t),Yo=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},pd=e=>{const t=parseFloat(e);return isNaN(t)?e:t},hd=e=>{const t=Oe(e)?Number(e):NaN;return isNaN(t)?e:t};let Wi;const mu=()=>Wi||(Wi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zn(e){if(oe(e)){const t={};for(let n=0;n{if(n){const r=n.split(gd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function yd(e){let t="";if(!e||Oe(e))return t;for(const n in e){const r=e[n];if(Oe(r)||typeof r=="number"){const o=n.startsWith("--")?n:Ft(n);t+=`${o}:${r};`}}return t}function nt(e){let t="";if(Oe(e))t=e;else if(oe(e))for(let n=0;n?@[\\\]^`{|}~]/g;function wd(e,t){return e.replace(Td,n=>`\\${n}`)}const _u=e=>!!(e&&e.__v_isRef===!0),Re=e=>Oe(e)?e:e==null?"":oe(e)||Ce(e)&&(e.toString===pu||!se(e.toString))?_u(e)?Re(e.value):JSON.stringify(e,vu,2):String(e),vu=(e,t)=>_u(t)?vu(e,t.value):Nn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o],s)=>(n[Xo(r,s)+" =>"]=o,n),{})}:fu(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Xo(n))}:un(t)?Xo(t):Ce(t)&&!oe(t)&&!hu(t)?String(t):t,Xo=(e,t="")=>{var n;return un(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Xe;class kd{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Xe,!t&&Xe&&(this.index=(Xe.scopes||(Xe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;let e;for(;Ln;){let t=Ln,n;for(;t;)t.flags&1||(t.flags&=-9),t=t.next;for(t=Ln,Ln=void 0;t;){if(n=t.next,t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Au(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Tu(e){let t,n=e.depsTail,r=n;for(;r;){const o=r.prevDep;r.version===-1?(r===n&&(n=o),Js(r),Od(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=o}e.deps=t,e.depsTail=n}function ys(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(wu(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function wu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Sr))return;e.globalVersion=Sr;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!ys(e)){e.flags&=-3;return}const n=we,r=_t;we=e,_t=!0;try{Au(e);const o=e.fn(e._value);(t.version===0||tn(o,e._value))&&(e._value=o,t.version++)}catch(o){throw t.version++,o}finally{we=n,_t=r,Tu(e),e.flags&=-3}}function Js(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r),!n.subs&&n.computed){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Js(s,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Od(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let _t=!0;const ku=[];function Ht(){ku.push(_t),_t=!1}function zt(){const e=ku.pop();_t=e===void 0?!0:e}function qi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=we;we=void 0;try{t()}finally{we=n}}}let Sr=0;class xd{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class xo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.target=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!we||!_t||we===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==we)n=this.activeLink=new xd(we,this),we.deps?(n.prevDep=we.depsTail,we.depsTail.nextDep=n,we.depsTail=n):we.deps=we.depsTail=n,Cu(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=we.depsTail,n.nextDep=void 0,we.depsTail.nextDep=n,we.depsTail=n,we.deps===n&&(we.deps=r)}return n}trigger(t){this.version++,Sr++,this.notify(t)}notify(t){Zs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Qs()}}}function Cu(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Cu(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const go=new WeakMap,Sn=Symbol(""),bs=Symbol(""),Ar=Symbol("");function Ge(e,t,n){if(_t&&we){let r=go.get(e);r||go.set(e,r=new Map);let o=r.get(n);o||(r.set(n,o=new xo),o.target=e,o.map=r,o.key=n),o.track()}}function Bt(e,t,n,r,o,s){const i=go.get(e);if(!i){Sr++;return}const a=l=>{l&&l.trigger()};if(Zs(),t==="clear")i.forEach(a);else{const l=oe(e),u=l&&Ys(n);if(l&&n==="length"){const f=Number(r);i.forEach((c,d)=>{(d==="length"||d===Ar||!un(d)&&d>=f)&&a(c)})}else switch(n!==void 0&&a(i.get(n)),u&&a(i.get(Ar)),t){case"add":l?u&&a(i.get("length")):(a(i.get(Sn)),Nn(e)&&a(i.get(bs)));break;case"delete":l||(a(i.get(Sn)),Nn(e)&&a(i.get(bs)));break;case"set":Nn(e)&&a(i.get(Sn));break}}Qs()}function Pd(e,t){const n=go.get(e);return n&&n.get(t)}function xn(e){const t=fe(e);return t===e?t:(Ge(t,"iterate",Ar),ht(e)?t:t.map(Ke))}function Po(e){return Ge(e=fe(e),"iterate",Ar),e}const Id={__proto__:null,[Symbol.iterator](){return Qo(this,Symbol.iterator,Ke)},concat(...e){return xn(this).concat(...e.map(t=>oe(t)?xn(t):t))},entries(){return Qo(this,"entries",e=>(e[1]=Ke(e[1]),e))},every(e,t){return It(this,"every",e,t,void 0,arguments)},filter(e,t){return It(this,"filter",e,t,n=>n.map(Ke),arguments)},find(e,t){return It(this,"find",e,t,Ke,arguments)},findIndex(e,t){return It(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return It(this,"findLast",e,t,Ke,arguments)},findLastIndex(e,t){return It(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return It(this,"forEach",e,t,void 0,arguments)},includes(...e){return Jo(this,"includes",e)},indexOf(...e){return Jo(this,"indexOf",e)},join(e){return xn(this).join(e)},lastIndexOf(...e){return Jo(this,"lastIndexOf",e)},map(e,t){return It(this,"map",e,t,void 0,arguments)},pop(){return sr(this,"pop")},push(...e){return sr(this,"push",e)},reduce(e,...t){return Yi(this,"reduce",e,t)},reduceRight(e,...t){return Yi(this,"reduceRight",e,t)},shift(){return sr(this,"shift")},some(e,t){return It(this,"some",e,t,void 0,arguments)},splice(...e){return sr(this,"splice",e)},toReversed(){return xn(this).toReversed()},toSorted(e){return xn(this).toSorted(e)},toSpliced(...e){return xn(this).toSpliced(...e)},unshift(...e){return sr(this,"unshift",e)},values(){return Qo(this,"values",Ke)}};function Qo(e,t,n){const r=Po(e),o=r[t]();return r!==e&&!ht(e)&&(o._next=o.next,o.next=()=>{const s=o._next();return s.value&&(s.value=n(s.value)),s}),o}const Rd=Array.prototype;function It(e,t,n,r,o,s){const i=Po(e),a=i!==e&&!ht(e),l=i[t];if(l!==Rd[t]){const c=l.apply(e,s);return a?Ke(c):c}let u=n;i!==e&&(a?u=function(c,d){return n.call(this,Ke(c),d,e)}:n.length>2&&(u=function(c,d){return n.call(this,c,d,e)}));const f=l.call(i,u,r);return a&&o?o(f):f}function Yi(e,t,n,r){const o=Po(e);let s=n;return o!==e&&(ht(e)?n.length>3&&(s=function(i,a,l){return n.call(this,i,a,l,e)}):s=function(i,a,l){return n.call(this,i,Ke(a),l,e)}),o[t](s,...r)}function Jo(e,t,n){const r=fe(e);Ge(r,"iterate",Ar);const o=r[t](...n);return(o===-1||o===!1)&&ri(n[0])?(n[0]=fe(n[0]),r[t](...n)):o}function sr(e,t,n=[]){Ht(),Zs();const r=fe(e)[t].apply(e,n);return Qs(),zt(),r}const Ld=Xn("__proto__,__v_isRef,__isVue"),Ou=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(un));function Dd(e){un(e)||(e=String(e));const t=fe(this);return Ge(t,"has",e),t.hasOwnProperty(e)}class xu{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const o=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(o?s?Gd:Lu:s?Ru:Iu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=oe(t);if(!o){let l;if(i&&(l=Id[n]))return l;if(n==="hasOwnProperty")return Dd}const a=Reflect.get(t,n,Ve(t)?t:r);return(un(n)?Ou.has(n):Ld(n))||(o||Ge(t,"get",n),s)?a:Ve(a)?i&&Ys(n)?a:a.value:Ce(a)?o?Ro(a):Fr(a):a}}class Pu extends xu{constructor(t=!1){super(!1,t)}set(t,n,r,o){let s=t[n];if(!this._isShallow){const l=kn(s);if(!ht(r)&&!kn(r)&&(s=fe(s),r=fe(r)),!oe(t)&&Ve(s)&&!Ve(r))return l?!1:(s.value=r,!0)}const i=oe(t)&&Ys(n)?Number(n)e,Io=e=>Reflect.getPrototypeOf(e);function Gr(e,t,n=!1,r=!1){e=e.__v_raw;const o=fe(e),s=fe(t);n||(tn(t,s)&&Ge(o,"get",t),Ge(o,"get",s));const{has:i}=Io(o),a=r?ei:n?oi:Ke;if(i.call(o,t))return a(e.get(t));if(i.call(o,s))return a(e.get(s));e!==o&&e.get(t)}function qr(e,t=!1){const n=this.__v_raw,r=fe(n),o=fe(e);return t||(tn(e,o)&&Ge(r,"has",e),Ge(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Yr(e,t=!1){return e=e.__v_raw,!t&&Ge(fe(e),"iterate",Sn),Reflect.get(e,"size",e)}function Xi(e,t=!1){!t&&!ht(e)&&!kn(e)&&(e=fe(e));const n=fe(this);return Io(n).has.call(n,e)||(n.add(e),Bt(n,"add",e,e)),this}function Zi(e,t,n=!1){!n&&!ht(t)&&!kn(t)&&(t=fe(t));const r=fe(this),{has:o,get:s}=Io(r);let i=o.call(r,e);i||(e=fe(e),i=o.call(r,e));const a=s.call(r,e);return r.set(e,t),i?tn(t,a)&&Bt(r,"set",e,t):Bt(r,"add",e,t),this}function Qi(e){const t=fe(this),{has:n,get:r}=Io(t);let o=n.call(t,e);o||(e=fe(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&Bt(t,"delete",e,void 0),s}function Ji(){const e=fe(this),t=e.size!==0,n=e.clear();return t&&Bt(e,"clear",void 0,void 0),n}function Xr(e,t){return function(r,o){const s=this,i=s.__v_raw,a=fe(i),l=t?ei:e?oi:Ke;return!e&&Ge(a,"iterate",Sn),i.forEach((u,f)=>r.call(o,l(u),l(f),s))}}function Zr(e,t,n){return function(...r){const o=this.__v_raw,s=fe(o),i=Nn(s),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=o[e](...r),f=n?ei:t?oi:Ke;return!t&&Ge(s,"iterate",l?bs:Sn),{next(){const{value:c,done:d}=u.next();return d?{value:c,done:d}:{value:a?[f(c[0]),f(c[1])]:f(c),done:d}},[Symbol.iterator](){return this}}}}function Kt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Fd(){const e={get(s){return Gr(this,s)},get size(){return Yr(this)},has:qr,add:Xi,set:Zi,delete:Qi,clear:Ji,forEach:Xr(!1,!1)},t={get(s){return Gr(this,s,!1,!0)},get size(){return Yr(this)},has:qr,add(s){return Xi.call(this,s,!0)},set(s,i){return Zi.call(this,s,i,!0)},delete:Qi,clear:Ji,forEach:Xr(!1,!0)},n={get(s){return Gr(this,s,!0)},get size(){return Yr(this,!0)},has(s){return qr.call(this,s,!0)},add:Kt("add"),set:Kt("set"),delete:Kt("delete"),clear:Kt("clear"),forEach:Xr(!0,!1)},r={get(s){return Gr(this,s,!0,!0)},get size(){return Yr(this,!0)},has(s){return qr.call(this,s,!0)},add:Kt("add"),set:Kt("set"),delete:Kt("delete"),clear:Kt("clear"),forEach:Xr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=Zr(s,!1,!1),n[s]=Zr(s,!0,!1),t[s]=Zr(s,!1,!0),r[s]=Zr(s,!0,!0)}),[e,n,t,r]}const[Hd,zd,$d,Ud]=Fd();function ti(e,t){const n=t?e?Ud:$d:e?zd:Hd;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(_e(n,o)&&o in r?n:r,o,s)}const jd={get:ti(!1,!1)},Kd={get:ti(!1,!0)},Wd={get:ti(!0,!1)};const Iu=new WeakMap,Ru=new WeakMap,Lu=new WeakMap,Gd=new WeakMap;function qd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Yd(e){return e.__v_skip||!Object.isExtensible(e)?0:qd(cd(e))}function Fr(e){return kn(e)?e:ni(e,!1,Nd,jd,Iu)}function Du(e){return ni(e,!1,Bd,Kd,Ru)}function Ro(e){return ni(e,!0,Md,Wd,Lu)}function ni(e,t,n,r,o){if(!Ce(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=Yd(e);if(i===0)return e;const a=new Proxy(e,i===2?r:n);return o.set(e,a),a}function Bn(e){return kn(e)?Bn(e.__v_raw):!!(e&&e.__v_isReactive)}function kn(e){return!!(e&&e.__v_isReadonly)}function ht(e){return!!(e&&e.__v_isShallow)}function ri(e){return e?!!e.__v_raw:!1}function fe(e){const t=e&&e.__v_raw;return t?fe(t):e}function Xd(e){return!_e(e,"__v_skip")&&Object.isExtensible(e)&&jn(e,"__v_skip",!0),e}const Ke=e=>Ce(e)?Fr(e):e,oi=e=>Ce(e)?Ro(e):e;function Ve(e){return e?e.__v_isRef===!0:!1}function ce(e){return Vu(e,!1)}function xt(e){return Vu(e,!0)}function Vu(e,t){return Ve(e)?e:new Zd(e,t)}class Zd{constructor(t,n){this.dep=new xo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:fe(t),this._value=n?t:Ke(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||ht(t)||kn(t);t=r?t:fe(t),tn(t,n)&&(this._rawValue=t,this._value=r?t:Ke(t),this.dep.trigger())}}function Jt(e){return Ve(e)?e.value:e}const Qd={get:(e,t,n)=>t==="__v_raw"?e:Jt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ve(o)&&!Ve(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Nu(e){return Bn(e)?e:new Proxy(e,Qd)}class Jd{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new xo,{get:r,set:o}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=o}get value(){return this._value=this._get()}set value(t){this._set(t)}}function ep(e){return new Jd(e)}function Mu(e){const t=oe(e)?new Array(e.length):{};for(const n in e)t[n]=Bu(e,n);return t}class tp{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Pd(fe(this._object),this._key)}}class np{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function rp(e,t,n){return Ve(e)?e:se(e)?new np(e):Ce(e)&&arguments.length>1?Bu(e,t,n):ce(e)}function Bu(e,t,n){const r=e[t];return Ve(r)?r:new tp(e,t,n)}class op{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new xo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Sr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&we!==this)return Su(this),!0}get value(){const t=this.dep.track();return wu(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function sp(e,t,n=!1){let r,o;return se(e)?r=e:(r=e.get,o=e.set),new op(r,o,n)}const Qr={},_o=new WeakMap;let gn;function ip(e,t=!1,n=gn){if(n){let r=_o.get(n);r||_o.set(n,r=[]),r.push(e)}}function ap(e,t,n=Ae){const{immediate:r,deep:o,once:s,scheduler:i,augmentJob:a,call:l}=n,u=E=>o?E:ht(E)||o===!1||o===0?Mt(E,1):Mt(E);let f,c,d,p,_=!1,v=!1;if(Ve(e)?(c=()=>e.value,_=ht(e)):Bn(e)?(c=()=>u(e),_=!0):oe(e)?(v=!0,_=e.some(E=>Bn(E)||ht(E)),c=()=>e.map(E=>{if(Ve(E))return E.value;if(Bn(E))return u(E);if(se(E))return l?l(E,2):E()})):se(e)?t?c=l?()=>l(e,2):e:c=()=>{if(d){Ht();try{d()}finally{zt()}}const E=gn;gn=f;try{return l?l(e,3,[p]):e(p)}finally{gn=E}}:c=Ot,t&&o){const E=c,N=o===!0?1/0:o;c=()=>Mt(E(),N)}const y=yu(),b=()=>{f.stop(),y&&qs(y.effects,f)};if(s&&t){const E=t;t=(...N)=>{E(...N),b()}}let A=v?new Array(e.length).fill(Qr):Qr;const m=E=>{if(!(!(f.flags&1)||!f.dirty&&!E))if(t){const N=f.run();if(o||_||(v?N.some((j,M)=>tn(j,A[M])):tn(N,A))){d&&d();const j=gn;gn=f;try{const M=[N,A===Qr?void 0:v&&A[0]===Qr?[]:A,p];l?l(t,3,M):t(...M),A=N}finally{gn=j}}}else f.run()};return a&&a(m),f=new bu(c),f.scheduler=i?()=>i(m,!1):m,p=E=>ip(E,!1,f),d=f.onStop=()=>{const E=_o.get(f);if(E){if(l)l(E,4);else for(const N of E)N();_o.delete(f)}},t?r?m(!0):A=f.run():i?i(m.bind(null,!0),!0):f.run(),b.pause=f.pause.bind(f),b.resume=f.resume.bind(f),b.stop=b,b}function Mt(e,t=1/0,n){if(t<=0||!Ce(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Ve(e))Mt(e.value,t,n);else if(oe(e))for(let r=0;r{Mt(r,t,n)});else if(hu(e)){for(const r in e)Mt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Mt(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const gr=[];let es=!1;function qt(e,...t){if(es)return;es=!0,Ht();const n=gr.length?gr[gr.length-1].component:null,r=n&&n.appContext.config.warnHandler,o=lp();if(r)Qn(r,n,11,[e+t.map(s=>{var i,a;return(a=(i=s.toString)==null?void 0:i.call(s))!=null?a:JSON.stringify(s)}).join(""),n&&n.proxy,o.map(({vnode:s})=>`at <${Cc(n,s.type)}>`).join(` +`),o]);else{const s=[`[Vue warn]: ${e}`,...t];o.length&&s.push(` +`,...up(o)),console.warn(...s)}zt(),es=!1}function lp(){let e=gr[gr.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}function up(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[` +`],...cp(n))}),t}function cp({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,o=` at <${Cc(e.component,e.type,r)}`,s=">"+n;return e.props?[o,...fp(e.props),s]:[o+s]}function fp(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...Fu(r,e[r]))}),n.length>3&&t.push(" ..."),t}function Fu(e,t,n){return Oe(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:Ve(t)?(t=Fu(e,fe(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):se(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=fe(t),n?t:[`${e}=`,t])}function Qn(e,t,n,r){try{return r?e(...r):e()}catch(o){Hr(o,t,n)}}function yt(e,t,n,r){if(se(e)){const o=Qn(e,t,n,r);return o&&du(o)&&o.catch(s=>{Hr(s,t,n)}),o}if(oe(e)){const o=[];for(let s=0;s>>1,o=Ze[r],s=wr(o);s=wr(n)?Ze.push(e):Ze.splice(pp(t),0,e),e.flags|=1,zu()}}function zu(){!Tr&&!Es&&(Es=!0,si=Hu.then($u))}function hp(e){oe(e)?Fn.push(...e):Yt&&e.id===-1?Yt.splice(Rn+1,0,e):e.flags&1||(Fn.push(e),e.flags|=1),zu()}function ea(e,t,n=Tr?Tt+1:0){for(;nwr(n)-wr(r));if(Fn.length=0,Yt){Yt.push(...t);return}for(Yt=t,Rn=0;Rne.id==null?e.flags&2?-1:1/0:e.id;function $u(e){Es=!1,Tr=!0;try{for(Tt=0;TtCt.emit(o,...s)),fr=[]):typeof window<"u"&&window.HTMLElement&&!((r=(n=window.navigator)==null?void 0:n.userAgent)!=null&&r.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(s=>{Uu(s,t)}),setTimeout(()=>{Ct||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Ss=!0,fr=[])},3e3)):(Ss=!0,fr=[])}function mp(e,t){Lo("app:init",e,t,{Fragment:ye,Text:en,Comment:Ue,Static:zn})}function gp(e){Lo("app:unmount",e)}const _p=ai("component:added"),ju=ai("component:updated"),vp=ai("component:removed"),yp=e=>{Ct&&typeof Ct.cleanupBuffer=="function"&&!Ct.cleanupBuffer(e)&&vp(e)};/*! #__NO_SIDE_EFFECTS__ */function ai(e){return t=>{Lo(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}function bp(e,t,n){Lo("component:emit",e.appContext.app,e,t,n)}let $e=null,Ku=null;function yo(e){const t=$e;return $e=e,Ku=e&&e.type.__scopeId||null,t}function Ne(e,t=$e,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&ha(-1);const s=yo(t);let i;try{i=e(...o)}finally{yo(s),r._d&&ha(1)}return ju(t),i};return r._n=!0,r._c=!0,r._d=!0,r}function bo(e,t){if($e===null)return e;const n=Mo($e),r=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,Xt=Symbol("_leaveCb"),Jr=Symbol("_enterCb");function Sp(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return qe(()=>{e.isMounted=!0}),ui(()=>{e.isUnmounting=!0}),e}const ft=[Function,Array],Gu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ft,onEnter:ft,onAfterEnter:ft,onEnterCancelled:ft,onBeforeLeave:ft,onLeave:ft,onAfterLeave:ft,onLeaveCancelled:ft,onBeforeAppear:ft,onAppear:ft,onAfterAppear:ft,onAppearCancelled:ft},qu=e=>{const t=e.subTree;return t.component?qu(t.component):t},Ap={name:"BaseTransition",props:Gu,setup(e,{slots:t}){const n=$r(),r=Sp();return()=>{const o=t.default&&Zu(t.default(),!0);if(!o||!o.length)return;const s=Yu(o),i=fe(e),{mode:a}=i;if(r.isLeaving)return ts(s);const l=ta(s);if(!l)return ts(s);let u=As(l,i,r,n,d=>u=d);l.type!==Ue&&kr(l,u);const f=n.subTree,c=f&&ta(f);if(c&&c.type!==Ue&&!yn(l,c)&&qu(n).type!==Ue){const d=As(c,i,r,n);if(kr(c,d),a==="out-in"&&l.type!==Ue)return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave},ts(s);a==="in-out"&&l.type!==Ue&&(d.delayLeave=(p,_,v)=>{const y=Xu(r,c);y[String(c.key)]=c,p[Xt]=()=>{_(),p[Xt]=void 0,delete u.delayedLeave},u.delayedLeave=v})}return s}}};function Yu(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ue){t=n;break}}return t}const Tp=Ap;function Xu(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function As(e,t,n,r,o){const{appear:s,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:f,onEnterCancelled:c,onBeforeLeave:d,onLeave:p,onAfterLeave:_,onLeaveCancelled:v,onBeforeAppear:y,onAppear:b,onAfterAppear:A,onAppearCancelled:m}=t,E=String(e.key),N=Xu(n,e),j=($,C)=>{$&&yt($,r,9,C)},M=($,C)=>{const H=C[1];j($,C),oe($)?$.every(w=>w.length<=1)&&H():$.length<=1&&H()},T={mode:i,persisted:a,beforeEnter($){let C=l;if(!n.isMounted)if(s)C=y||l;else return;$[Xt]&&$[Xt](!0);const H=N[E];H&&yn(e,H)&&H.el[Xt]&&H.el[Xt](),j(C,[$])},enter($){let C=u,H=f,w=c;if(!n.isMounted)if(s)C=b||u,H=A||f,w=m||c;else return;let L=!1;const Q=$[Jr]=te=>{L||(L=!0,te?j(w,[$]):j(H,[$]),T.delayedLeave&&T.delayedLeave(),$[Jr]=void 0)};C?M(C,[$,Q]):Q()},leave($,C){const H=String(e.key);if($[Jr]&&$[Jr](!0),n.isUnmounting)return C();j(d,[$]);let w=!1;const L=$[Xt]=Q=>{w||(w=!0,C(),Q?j(v,[$]):j(_,[$]),$[Xt]=void 0,N[H]===e&&delete N[H])};N[H]=e,p?M(p,[$,L]):L()},clone($){const C=As($,t,n,r,o);return o&&o(C),C}};return T}function ts(e){if(zr(e))return e=rn(e),e.children=null,e}function ta(e){if(!zr(e))return Wu(e.type)&&e.children?Yu(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&se(n.default))return n.default()}}function kr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,kr(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Zu(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;sEo(_,t&&(oe(t)?t[v]:t),n,r,o));return}if(An(r)&&!o)return;const s=r.shapeFlag&4?Mo(r.component):r.el,i=o?null:s,{i:a,r:l}=e,u=t&&t.r,f=a.refs===Ae?a.refs={}:a.refs,c=a.setupState,d=fe(c),p=c===Ae?()=>!1:_=>_e(d,_);if(u!=null&&u!==l&&(Oe(u)?(f[u]=null,p(u)&&(c[u]=null)):Ve(u)&&(u.value=null)),se(l))Qn(l,a,12,[i,f]);else{const _=Oe(l),v=Ve(l);if(_||v){const y=()=>{if(e.f){const b=_?p(l)?c[l]:f[l]:l.value;o?oe(b)&&qs(b,s):oe(b)?b.includes(s)||b.push(s):_?(f[l]=[s],p(l)&&(c[l]=f[l])):(l.value=[s],e.k&&(f[e.k]=l.value))}else _?(f[l]=i,p(l)&&(c[l]=i)):v&&(l.value=i,e.k&&(f[e.k]=i))};i?(y.id=-1,at(y,n)):y()}}}let na=!1;const fn=()=>{na||(console.error("Hydration completed but contains mismatches."),na=!0)},wp=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",kp=e=>e.namespaceURI.includes("MathML"),eo=e=>{if(e.nodeType===1){if(wp(e))return"svg";if(kp(e))return"mathml"}},vn=e=>e.nodeType===8;function Cp(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:a,insert:l,createComment:u}}=e,f=(m,E)=>{if(!E.hasChildNodes()){qt("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,m,E),vo(),E._vnode=m;return}c(E.firstChild,m,null,null,null),vo(),E._vnode=m},c=(m,E,N,j,M,T=!1)=>{T=T||!!E.dynamicChildren;const $=vn(m)&&m.data==="[",C=()=>v(m,E,N,j,M,$),{type:H,ref:w,shapeFlag:L,patchFlag:Q}=E;let te=m.nodeType;E.el=m,jn(m,"__vnode",E,!0),jn(m,"__vueParentComponent",N,!0),Q===-2&&(T=!1,E.dynamicChildren=null);let P=null;switch(H){case en:te!==3?E.children===""?(l(E.el=o(""),i(m),m),P=m):P=C():(m.data!==E.children&&(qt("Hydration text mismatch in",m.parentNode,` + - rendered on server: ${JSON.stringify(m.data)} + - expected on client: ${JSON.stringify(E.children)}`),fn(),m.data=E.children),P=s(m));break;case Ue:A(m)?(P=s(m),b(E.el=m.content.firstChild,m,N)):te!==8||$?P=C():P=s(m);break;case zn:if($&&(m=s(m),te=m.nodeType),te===1||te===3){P=m;const D=!E.children.length;for(let K=0;K{T=T||!!E.dynamicChildren;const{type:$,props:C,patchFlag:H,shapeFlag:w,dirs:L,transition:Q}=E,te=$==="input"||$==="option";if(te||H!==-1){L&&wt(E,null,N,"created");let P=!1;if(A(m)){P=hc(j,Q)&&N&&N.vnode.props&&N.vnode.props.appear;const K=m.content.firstChild;P&&Q.beforeEnter(K),b(K,m,N),E.el=m=K}if(w&16&&!(C&&(C.innerHTML||C.textContent))){let K=p(m.firstChild,E,m,N,j,M,T),ue=!1;for(;K;){dr(m,1)||(ue||(qt("Hydration children mismatch on",m,` +Server rendered element contains more child nodes than client vdom.`),ue=!0),fn());const be=K;K=K.nextSibling,a(be)}}else if(w&8){let K=E.children;K[0]===` +`&&(m.tagName==="PRE"||m.tagName==="TEXTAREA")&&(K=K.slice(1)),m.textContent!==K&&(dr(m,0)||(qt("Hydration text content mismatch on",m,` + - rendered on server: ${m.textContent} + - expected on client: ${E.children}`),fn()),m.textContent=E.children)}if(C){const K=m.tagName.includes("-");for(const ue in C)!(L&&L.some(be=>be.dir.created))&&Op(m,ue,C[ue],E,N)&&fn(),(te&&(ue.endsWith("value")||ue==="indeterminate")||Mr(ue)&&!Mn(ue)||ue[0]==="."||K)&&r(m,ue,null,C[ue],void 0,N)}let D;(D=C&&C.onVnodeBeforeMount)&&dt(D,N,E),L&&wt(E,null,N,"beforeMount"),((D=C&&C.onVnodeMounted)||L||P)&&Ec(()=>{D&&dt(D,N,E),P&&Q.enter(m),L&&wt(E,null,N,"mounted")},j)}return m.nextSibling},p=(m,E,N,j,M,T,$)=>{$=$||!!E.dynamicChildren;const C=E.children,H=C.length;let w=!1;for(let L=0;L{const{slotScopeIds:$}=E;$&&(M=M?M.concat($):$);const C=i(m),H=p(s(m),E,C,N,j,M,T);return H&&vn(H)&&H.data==="]"?s(E.anchor=H):(fn(),l(E.anchor=u("]"),C,H),H)},v=(m,E,N,j,M,T)=>{if(dr(m.parentElement,1)||(qt(`Hydration node mismatch: +- rendered on server:`,m,m.nodeType===3?"(text)":vn(m)&&m.data==="["?"(start of fragment)":"",` +- expected on client:`,E.type),fn()),E.el=null,T){const H=y(m);for(;;){const w=s(m);if(w&&w!==H)a(w);else break}}const $=s(m),C=i(m);return a(m),n(null,E,C,$,N,j,eo(C),M),$},y=(m,E="[",N="]")=>{let j=0;for(;m;)if(m=s(m),m&&vn(m)&&(m.data===E&&j++,m.data===N)){if(j===0)return s(m);j--}return m},b=(m,E,N)=>{const j=E.parentNode;j&&j.replaceChild(m,E);let M=N;for(;M;)M.vnode.el===E&&(M.vnode.el=M.subTree.el=m),M=M.parent},A=m=>m.nodeType===1&&m.tagName==="TEMPLATE";return[f,c]}function Op(e,t,n,r,o){let s,i,a,l;if(t==="class")a=e.getAttribute("class"),l=nt(n),xp(ra(a||""),ra(l))||(s=2,i="class");else if(t==="style"){a=e.getAttribute("style")||"",l=Oe(n)?n:yd(Zn(n));const u=oa(a),f=oa(l);if(r.dirs)for(const{dir:c,value:d}of r.dirs)c.name==="show"&&!d&&f.set("display","none");o&&Qu(o,r,f),Pp(u,f)||(s=3,i="style")}else(e instanceof SVGElement&&Sd(t)||e instanceof HTMLElement&&(Gi(t)||Ed(t)))&&(Gi(t)?(a=e.hasAttribute(t),l=Xs(n)):n==null?(a=e.hasAttribute(t),l=!1):(e.hasAttribute(t)?a=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?a=e.value:a=!1,l=Ad(n)?String(n):!1),a!==l&&(s=4,i=t));if(s!=null&&!dr(e,s)){const u=d=>d===!1?"(not rendered)":`${i}="${d}"`,f=`Hydration ${Ju[s]} mismatch on`,c=` + - rendered on server: ${u(a)} + - expected on client: ${u(l)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`;return qt(f,e,c),!0}return!1}function ra(e){return new Set(e.trim().split(/\s+/))}function xp(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function oa(e){const t=new Map;for(const n of e.split(";")){let[r,o]=n.split(":");r=r.trim(),o=o&&o.trim(),r&&o&&t.set(r,o)}return t}function Pp(e,t){if(e.size!==t.size)return!1;for(const[n,r]of e)if(r!==t.get(n))return!1;return!0}function Qu(e,t,n){const r=e.subTree;if(e.getCssVars&&(t===r||r&&r.type===ye&&r.children.includes(t))){const o=e.getCssVars();for(const s in o)n.set(`--${wd(s)}`,String(o[s]))}t===r&&e.parent&&Qu(e.parent,e.vnode,n)}const sa="data-allow-mismatch",Ju={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function dr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(sa);)e=e.parentElement;const n=e&&e.getAttribute(sa);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(Ju[t])}}function Ip(e,t){if(vn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(vn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const An=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function ec(e){se(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,hydrate:s,timeout:i,suspensible:a=!0,onError:l}=e;let u=null,f,c=0;const d=()=>(c++,u=null,p()),p=()=>{let _;return u||(_=u=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),l)return new Promise((y,b)=>{l(v,()=>y(d()),()=>b(v),c+1)});throw v}).then(v=>_!==u&&u?u:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),f=v,v)))};return me({name:"AsyncComponentWrapper",__asyncLoader:p,__asyncHydrate(_,v,y){const b=s?()=>{const A=s(y,m=>Ip(_,m));A&&(v.bum||(v.bum=[])).push(A)}:y;f?b():p().then(()=>!v.isUnmounted&&b())},get __asyncResolved(){return f},setup(){const _=ze;if(li(_),f)return()=>ns(f,_);const v=m=>{u=null,Hr(m,_,13,!r)};if(a&&_.suspense||jr)return p().then(m=>()=>ns(m,_)).catch(m=>(v(m),()=>r?le(r,{error:m}):null));const y=ce(!1),b=ce(),A=ce(!!o);return o&&setTimeout(()=>{A.value=!1},o),i!=null&&setTimeout(()=>{if(!y.value&&!b.value){const m=new Error(`Async component timed out after ${i}ms.`);v(m),b.value=m}},i),p().then(()=>{y.value=!0,_.parent&&zr(_.parent.vnode)&&_.parent.update()}).catch(m=>{v(m),b.value=m}),()=>{if(y.value&&f)return ns(f,_);if(b.value&&r)return le(r,{error:b.value});if(n&&!A.value)return le(n)}}})}function ns(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=le(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const zr=e=>e.type.__isKeepAlive;function Rp(e,t){tc(e,"a",t)}function Lp(e,t){tc(e,"da",t)}function tc(e,t,n=ze){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Do(t,r,n),n){let o=n.parent;for(;o&&o.parent;)zr(o.parent.vnode)&&Dp(r,t,n,o),o=o.parent}}function Dp(e,t,n,r){const o=Do(t,e,r,!0);Vo(()=>{qs(r[t],o)},n)}function Do(e,t,n=ze,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{Ht();const a=Ur(n),l=yt(t,n,e,i);return a(),zt(),l});return r?o.unshift(s):o.push(s),s}}const $t=e=>(t,n=ze)=>{(!jr||e==="sp")&&Do(e,(...r)=>t(...r),n)},Vp=$t("bm"),qe=$t("m"),Np=$t("bu"),Mp=$t("u"),ui=$t("bum"),Vo=$t("um"),Bp=$t("sp"),Fp=$t("rtg"),Hp=$t("rtc");function zp(e,t=ze){Do("ec",e,t)}const $p="components";function ci(e,t){return jp($p,e,!0,t)||e}const Up=Symbol.for("v-ndc");function jp(e,t,n=!0,r=!1){const o=$e||ze;if(o){const s=o.type;{const a=kc(s,!1);if(a&&(a===t||a===rt(t)||a===Br(rt(t))))return s}const i=ia(o[e]||s[e],t)||ia(o.appContext[e],t);return!i&&r?s:i}}function ia(e,t){return e&&(e[t]||e[rt(t)]||e[Br(rt(t))])}function nn(e,t,n,r){let o;const s=n,i=oe(e);if(i||Oe(e)){const a=i&&Bn(e);let l=!1;a&&(l=!ht(e),e=Po(e)),o=new Array(e.length);for(let u=0,f=e.length;ut(a,l,void 0,s));else{const a=Object.keys(e);o=new Array(a.length);for(let l=0,u=a.length;lOr(t)?!(t.type===Ue||t.type===ye&&!nc(t.children)):!0)?e:null}const Ts=e=>e?Tc(e)?Mo(e):Ts(e.parent):null,_r=Fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ts(e.parent),$root:e=>Ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>fi(e),$forceUpdate:e=>e.f||(e.f=()=>{ii(e.update)}),$nextTick:e=>e.n||(e.n=Jn.bind(e.proxy)),$watch:e=>ch.bind(e)}),rs=(e,t)=>e!==Ae&&!e.__isScriptSetup&&_e(e,t),Kp={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const p=i[t];if(p!==void 0)switch(p){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(rs(r,t))return i[t]=1,r[t];if(o!==Ae&&_e(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&_e(u,t))return i[t]=3,s[t];if(n!==Ae&&_e(n,t))return i[t]=4,n[t];ws&&(i[t]=0)}}const f=_r[t];let c,d;if(f)return t==="$attrs"&&Ge(e.attrs,"get",""),f(e);if((c=a.__cssModules)&&(c=c[t]))return c;if(n!==Ae&&_e(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,_e(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return rs(o,t)?(o[t]=n,!0):r!==Ae&&_e(r,t)?(r[t]=n,!0):_e(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let a;return!!n[i]||e!==Ae&&_e(e,i)||rs(t,i)||(a=s[0])&&_e(a,i)||_e(r,i)||_e(_r,i)||_e(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:_e(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function aa(e){return oe(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ws=!0;function Wp(e){const t=fi(e),n=e.proxy,r=e.ctx;ws=!1,t.beforeCreate&&la(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:a,provide:l,inject:u,created:f,beforeMount:c,mounted:d,beforeUpdate:p,updated:_,activated:v,deactivated:y,beforeDestroy:b,beforeUnmount:A,destroyed:m,unmounted:E,render:N,renderTracked:j,renderTriggered:M,errorCaptured:T,serverPrefetch:$,expose:C,inheritAttrs:H,components:w,directives:L,filters:Q}=t;if(u&&Gp(u,r,null),i)for(const D in i){const K=i[D];se(K)&&(r[D]=K.bind(n))}if(o){const D=o.call(n,n);Ce(D)&&(e.data=Fr(D))}if(ws=!0,s)for(const D in s){const K=s[D],ue=se(K)?K.bind(n,n):se(K.get)?K.get.bind(n,n):Ot,be=!se(K)&&se(K.set)?K.set.bind(n):Ot,xe=B({get:ue,set:be});Object.defineProperty(r,D,{enumerable:!0,configurable:!0,get:()=>xe.value,set:Ee=>xe.value=Ee})}if(a)for(const D in a)rc(a[D],r,n,D);if(l){const D=se(l)?l.call(n):l;Reflect.ownKeys(D).forEach(K=>{Tn(K,D[K])})}f&&la(f,e,"c");function P(D,K){oe(K)?K.forEach(ue=>D(ue.bind(n))):K&&D(K.bind(n))}if(P(Vp,c),P(qe,d),P(Np,p),P(Mp,_),P(Rp,v),P(Lp,y),P(zp,T),P(Hp,j),P(Fp,M),P(ui,A),P(Vo,E),P(Bp,$),oe(C))if(C.length){const D=e.exposed||(e.exposed={});C.forEach(K=>{Object.defineProperty(D,K,{get:()=>n[K],set:ue=>n[K]=ue})})}else e.exposed||(e.exposed={});N&&e.render===Ot&&(e.render=N),H!=null&&(e.inheritAttrs=H),w&&(e.components=w),L&&(e.directives=L),$&&li(e)}function Gp(e,t,n=Ot){oe(e)&&(e=ks(e));for(const r in e){const o=e[r];let s;Ce(o)?"default"in o?s=We(o.from||r,o.default,!0):s=We(o.from||r):s=We(o),Ve(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:i=>s.value=i}):t[r]=s}}function la(e,t,n){yt(oe(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function rc(e,t,n,r){let o=r.includes(".")?vc(n,r):()=>n[r];if(Oe(e)){const s=t[e];se(s)&&Be(o,s)}else if(se(e))Be(o,e.bind(n));else if(Ce(e))if(oe(e))e.forEach(s=>rc(s,t,n,r));else{const s=se(e.handler)?e.handler.bind(n):t[e.handler];se(s)&&Be(o,s,e)}}function fi(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,a=s.get(t);let l;return a?l=a:!o.length&&!n&&!r?l=t:(l={},o.length&&o.forEach(u=>So(l,u,i,!0)),So(l,t,i)),Ce(t)&&s.set(t,l),l}function So(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&So(e,s,n,!0),o&&o.forEach(i=>So(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=qp[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const qp={data:ua,props:ca,emits:ca,methods:pr,computed:pr,beforeCreate:Ye,created:Ye,beforeMount:Ye,mounted:Ye,beforeUpdate:Ye,updated:Ye,beforeDestroy:Ye,beforeUnmount:Ye,destroyed:Ye,unmounted:Ye,activated:Ye,deactivated:Ye,errorCaptured:Ye,serverPrefetch:Ye,components:pr,directives:pr,watch:Xp,provide:ua,inject:Yp};function ua(e,t){return t?e?function(){return Fe(se(e)?e.call(this,this):e,se(t)?t.call(this,this):t)}:t:e}function Yp(e,t){return pr(ks(e),ks(t))}function ks(e){if(oe(e)){const t={};for(let n=0;n1)return n&&se(t)?t.call(r&&r.proxy):t}}const sc={},ic=()=>Object.create(sc),ac=e=>Object.getPrototypeOf(e)===sc;function Jp(e,t,n,r=!1){const o={},s=ic();e.propsDefaults=Object.create(null),lc(e,t,o,s);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=r?o:Du(o):e.type.props?e.props=o:e.props=s,e.attrs=s}function eh(e,t,n,r){const{props:o,attrs:s,vnode:{patchFlag:i}}=e,a=fe(o),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let c=0;c{l=!0;const[d,p]=uc(c,t,!0);Fe(i,d),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!s&&!l)return Ce(e)&&r.set(e,Vn),Vn;if(oe(s))for(let f=0;fe[0]==="_"||e==="$stable",di=e=>oe(e)?e.map(pt):[pt(e)],nh=(e,t,n)=>{if(t._n)return t;const r=Ne((...o)=>di(t(...o)),n);return r._c=!1,r},fc=(e,t,n)=>{const r=e._ctx;for(const o in e){if(cc(o))continue;const s=e[o];if(se(s))t[o]=nh(o,s,r);else if(s!=null){const i=di(s);t[o]=()=>i}}},dc=(e,t)=>{const n=di(t);e.slots.default=()=>n},pc=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},rh=(e,t,n)=>{const r=e.slots=ic();if(e.vnode.shapeFlag&32){const o=t._;o?(pc(r,t,n),n&&jn(r,"_",o,!0)):fc(t,r)}else t&&dc(e,t)},oh=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=Ae;if(r.shapeFlag&32){const a=t._;a?n&&a===1?s=!1:pc(o,t,n):(s=!t.$stable,fc(t,o)),i=t}else t&&(dc(e,t),i={default:1});if(s)for(const a in o)!cc(a)&&i[a]==null&&delete o[a]},at=Ec;function sh(e){return ih(e,Cp)}function ih(e,t){const n=mu();n.__VUE__=!0,Uu(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n);const{insert:r,remove:o,patchProp:s,createElement:i,createText:a,createComment:l,setText:u,setElementText:f,parentNode:c,nextSibling:d,setScopeId:p=Ot,insertStaticContent:_}=e,v=(h,g,S,x=null,k=null,R=null,W=void 0,z=null,F=!!g.dynamicChildren)=>{if(h===g)return;h&&!yn(h,g)&&(x=O(h),Ee(h,k,R,!0),h=null),g.patchFlag===-2&&(F=!1,g.dynamicChildren=null);const{type:V,ref:ne,shapeFlag:Y}=g;switch(V){case en:y(h,g,S,x);break;case Ue:b(h,g,S,x);break;case zn:h==null&&A(g,S,x,W);break;case ye:w(h,g,S,x,k,R,W,z,F);break;default:Y&1?N(h,g,S,x,k,R,W,z,F):Y&6?L(h,g,S,x,k,R,W,z,F):(Y&64||Y&128)&&V.process(h,g,S,x,k,R,W,z,F,J)}ne!=null&&k&&Eo(ne,h&&h.ref,R,g||h,!g)},y=(h,g,S,x)=>{if(h==null)r(g.el=a(g.children),S,x);else{const k=g.el=h.el;g.children!==h.children&&u(k,g.children)}},b=(h,g,S,x)=>{h==null?r(g.el=l(g.children||""),S,x):g.el=h.el},A=(h,g,S,x)=>{[h.el,h.anchor]=_(h.children,g,S,x,h.el,h.anchor)},m=({el:h,anchor:g},S,x)=>{let k;for(;h&&h!==g;)k=d(h),r(h,S,x),h=k;r(g,S,x)},E=({el:h,anchor:g})=>{let S;for(;h&&h!==g;)S=d(h),o(h),h=S;o(g)},N=(h,g,S,x,k,R,W,z,F)=>{g.type==="svg"?W="svg":g.type==="math"&&(W="mathml"),h==null?j(g,S,x,k,R,W,z,F):$(h,g,k,R,W,z,F)},j=(h,g,S,x,k,R,W,z)=>{let F,V;const{props:ne,shapeFlag:Y,transition:ee,dirs:ie}=h;if(F=h.el=i(h.type,R,ne&&ne.is,ne),Y&8?f(F,h.children):Y&16&&T(h.children,F,null,x,k,os(h,R),W,z),ie&&wt(h,null,x,"created"),M(F,h,h.scopeId,W,x),ne){for(const Te in ne)Te!=="value"&&!Mn(Te)&&s(F,Te,null,ne[Te],R,x);"value"in ne&&s(F,"value",null,ne.value,R),(V=ne.onVnodeBeforeMount)&&dt(V,x,h)}jn(F,"__vnode",h,!0),jn(F,"__vueParentComponent",x,!0),ie&&wt(h,null,x,"beforeMount");const pe=hc(k,ee);pe&&ee.beforeEnter(F),r(F,g,S),((V=ne&&ne.onVnodeMounted)||pe||ie)&&at(()=>{V&&dt(V,x,h),pe&&ee.enter(F),ie&&wt(h,null,x,"mounted")},k)},M=(h,g,S,x,k)=>{if(S&&p(h,S),x)for(let R=0;R{for(let V=F;V{const z=g.el=h.el;z.__vnode=g;let{patchFlag:F,dynamicChildren:V,dirs:ne}=g;F|=h.patchFlag&16;const Y=h.props||Ae,ee=g.props||Ae;let ie;if(S&&dn(S,!1),(ie=ee.onVnodeBeforeUpdate)&&dt(ie,S,g,h),ne&&wt(g,h,S,"beforeUpdate"),S&&dn(S,!0),(Y.innerHTML&&ee.innerHTML==null||Y.textContent&&ee.textContent==null)&&f(z,""),V?C(h.dynamicChildren,V,z,S,x,os(g,k),R):W||K(h,g,z,null,S,x,os(g,k),R,!1),F>0){if(F&16)H(z,Y,ee,S,k);else if(F&2&&Y.class!==ee.class&&s(z,"class",null,ee.class,k),F&4&&s(z,"style",Y.style,ee.style,k),F&8){const pe=g.dynamicProps;for(let Te=0;Te{ie&&dt(ie,S,g,h),ne&&wt(g,h,S,"updated")},x)},C=(h,g,S,x,k,R,W)=>{for(let z=0;z{if(g!==S){if(g!==Ae)for(const R in g)!Mn(R)&&!(R in S)&&s(h,R,g[R],null,k,x);for(const R in S){if(Mn(R))continue;const W=S[R],z=g[R];W!==z&&R!=="value"&&s(h,R,z,W,k,x)}"value"in S&&s(h,"value",g.value,S.value,k)}},w=(h,g,S,x,k,R,W,z,F)=>{const V=g.el=h?h.el:a(""),ne=g.anchor=h?h.anchor:a("");let{patchFlag:Y,dynamicChildren:ee,slotScopeIds:ie}=g;ie&&(z=z?z.concat(ie):ie),h==null?(r(V,S,x),r(ne,S,x),T(g.children||[],S,ne,k,R,W,z,F)):Y>0&&Y&64&&ee&&h.dynamicChildren?(C(h.dynamicChildren,ee,S,k,R,W,z),(g.key!=null||k&&g===k.subTree)&&mc(h,g,!0)):K(h,g,S,ne,k,R,W,z,F)},L=(h,g,S,x,k,R,W,z,F)=>{g.slotScopeIds=z,h==null?g.shapeFlag&512?k.ctx.activate(g,S,x,W,F):Q(g,S,x,k,R,W,F):te(h,g,F)},Q=(h,g,S,x,k,R,W)=>{const z=h.component=Th(h,x,k);if(zr(h)&&(z.ctx.renderer=J),wh(z,!1,W),z.asyncDep){if(k&&k.registerDep(z,P,W),!h.el){const F=z.subTree=le(Ue);b(null,F,g,S)}}else P(z,h,g,S,k,R,W)},te=(h,g,S)=>{const x=g.component=h.component;if(mh(h,g,S))if(x.asyncDep&&!x.asyncResolved){D(x,g,S);return}else x.next=g,x.update();else g.el=h.el,x.vnode=g},P=(h,g,S,x,k,R,W)=>{const z=()=>{if(h.isMounted){let{next:Y,bu:ee,u:ie,parent:pe,vnode:Te}=h;{const st=gc(h);if(st){Y&&(Y.el=Te.el,D(h,Y,W)),st.asyncDep.then(()=>{h.isUnmounted||z()});return}}let ve=Y,ot;dn(h,!1),Y?(Y.el=Te.el,D(h,Y,W)):Y=Te,ee&&Yo(ee),(ot=Y.props&&Y.props.onVnodeBeforeUpdate)&&dt(ot,pe,Y,Te),dn(h,!0);const je=ss(h),gt=h.subTree;h.subTree=je,v(gt,je,c(gt.el),O(gt),h,k,R),Y.el=je.el,ve===null&&gh(h,je.el),ie&&at(ie,k),(ot=Y.props&&Y.props.onVnodeUpdated)&&at(()=>dt(ot,pe,Y,Te),k),ju(h)}else{let Y;const{el:ee,props:ie}=g,{bm:pe,m:Te,parent:ve,root:ot,type:je}=h,gt=An(g);if(dn(h,!1),pe&&Yo(pe),!gt&&(Y=ie&&ie.onVnodeBeforeMount)&&dt(Y,ve,g),dn(h,!0),ee&&Se){const st=()=>{h.subTree=ss(h),Se(ee,h.subTree,h,k,null)};gt&&je.__asyncHydrate?je.__asyncHydrate(ee,h,st):st()}else{ot.ce&&ot.ce._injectChildStyle(je);const st=h.subTree=ss(h);v(null,st,S,x,h,k,R),g.el=st.el}if(Te&&at(Te,k),!gt&&(Y=ie&&ie.onVnodeMounted)){const st=g;at(()=>dt(Y,ve,st),k)}(g.shapeFlag&256||ve&&An(ve.vnode)&&ve.vnode.shapeFlag&256)&&h.a&&at(h.a,k),h.isMounted=!0,_p(h),g=S=x=null}};h.scope.on();const F=h.effect=new bu(z);h.scope.off();const V=h.update=F.run.bind(F),ne=h.job=F.runIfDirty.bind(F);ne.i=h,ne.id=h.uid,F.scheduler=()=>ii(ne),dn(h,!0),V()},D=(h,g,S)=>{g.component=h;const x=h.vnode.props;h.vnode=g,h.next=null,eh(h,g.props,x,S),oh(h,g.children,S),Ht(),ea(h),zt()},K=(h,g,S,x,k,R,W,z,F=!1)=>{const V=h&&h.children,ne=h?h.shapeFlag:0,Y=g.children,{patchFlag:ee,shapeFlag:ie}=g;if(ee>0){if(ee&128){be(V,Y,S,x,k,R,W,z,F);return}else if(ee&256){ue(V,Y,S,x,k,R,W,z,F);return}}ie&8?(ne&16&&et(V,k,R),Y!==V&&f(S,Y)):ne&16?ie&16?be(V,Y,S,x,k,R,W,z,F):et(V,k,R,!0):(ne&8&&f(S,""),ie&16&&T(Y,S,x,k,R,W,z,F))},ue=(h,g,S,x,k,R,W,z,F)=>{h=h||Vn,g=g||Vn;const V=h.length,ne=g.length,Y=Math.min(V,ne);let ee;for(ee=0;eene?et(h,k,R,!0,!1,Y):T(g,S,x,k,R,W,z,F,Y)},be=(h,g,S,x,k,R,W,z,F)=>{let V=0;const ne=g.length;let Y=h.length-1,ee=ne-1;for(;V<=Y&&V<=ee;){const ie=h[V],pe=g[V]=F?Zt(g[V]):pt(g[V]);if(yn(ie,pe))v(ie,pe,S,null,k,R,W,z,F);else break;V++}for(;V<=Y&&V<=ee;){const ie=h[Y],pe=g[ee]=F?Zt(g[ee]):pt(g[ee]);if(yn(ie,pe))v(ie,pe,S,null,k,R,W,z,F);else break;Y--,ee--}if(V>Y){if(V<=ee){const ie=ee+1,pe=ieee)for(;V<=Y;)Ee(h[V],k,R,!0),V++;else{const ie=V,pe=V,Te=new Map;for(V=pe;V<=ee;V++){const it=g[V]=F?Zt(g[V]):pt(g[V]);it.key!=null&&Te.set(it.key,V)}let ve,ot=0;const je=ee-pe+1;let gt=!1,st=0;const or=new Array(je);for(V=0;V=je){Ee(it,k,R,!0);continue}let St;if(it.key!=null)St=Te.get(it.key);else for(ve=pe;ve<=ee;ve++)if(or[ve-pe]===0&&yn(it,g[ve])){St=ve;break}St===void 0?Ee(it,k,R,!0):(or[St-pe]=V+1,St>=st?st=St:gt=!0,v(it,g[St],S,null,k,R,W,z,F),ot++)}const Ui=gt?ah(or):Vn;for(ve=Ui.length-1,V=je-1;V>=0;V--){const it=pe+V,St=g[it],ji=it+1{const{el:R,type:W,transition:z,children:F,shapeFlag:V}=h;if(V&6){xe(h.component.subTree,g,S,x);return}if(V&128){h.suspense.move(g,S,x);return}if(V&64){W.move(h,g,S,J);return}if(W===ye){r(R,g,S);for(let Y=0;Yz.enter(R),k);else{const{leave:Y,delayLeave:ee,afterLeave:ie}=z,pe=()=>r(R,g,S),Te=()=>{Y(R,()=>{pe(),ie&&ie()})};ee?ee(R,pe,Te):Te()}else r(R,g,S)},Ee=(h,g,S,x=!1,k=!1)=>{const{type:R,props:W,ref:z,children:F,dynamicChildren:V,shapeFlag:ne,patchFlag:Y,dirs:ee,cacheIndex:ie}=h;if(Y===-2&&(k=!1),z!=null&&Eo(z,null,S,h,!0),ie!=null&&(g.renderCache[ie]=void 0),ne&256){g.ctx.deactivate(h);return}const pe=ne&1&&ee,Te=!An(h);let ve;if(Te&&(ve=W&&W.onVnodeBeforeUnmount)&&dt(ve,g,h),ne&6)Je(h.component,S,x);else{if(ne&128){h.suspense.unmount(S,x);return}pe&&wt(h,null,g,"beforeUnmount"),ne&64?h.type.remove(h,g,S,J,x):V&&!V.hasOnce&&(R!==ye||Y>0&&Y&64)?et(V,g,S,!1,!0):(R===ye&&Y&384||!k&&ne&16)&&et(F,g,S),x&&Qe(h)}(Te&&(ve=W&&W.onVnodeUnmounted)||pe)&&at(()=>{ve&&dt(ve,g,h),pe&&wt(h,null,g,"unmounted")},S)},Qe=h=>{const{type:g,el:S,anchor:x,transition:k}=h;if(g===ye){mt(S,x);return}if(g===zn){E(h);return}const R=()=>{o(S),k&&!k.persisted&&k.afterLeave&&k.afterLeave()};if(h.shapeFlag&1&&k&&!k.persisted){const{leave:W,delayLeave:z}=k,F=()=>W(S,R);z?z(h.el,R,F):F()}else R()},mt=(h,g)=>{let S;for(;h!==g;)S=d(h),o(h),h=S;o(g)},Je=(h,g,S)=>{const{bum:x,scope:k,job:R,subTree:W,um:z,m:F,a:V}=h;da(F),da(V),x&&Yo(x),k.stop(),R&&(R.flags|=8,Ee(W,h,g,S)),z&&at(z,g),at(()=>{h.isUnmounted=!0},g),g&&g.pendingBranch&&!g.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===g.pendingId&&(g.deps--,g.deps===0&&g.resolve()),yp(h)},et=(h,g,S,x=!1,k=!1,R=0)=>{for(let W=R;W{if(h.shapeFlag&6)return O(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const g=d(h.anchor||h.el),S=g&&g[Ep];return S?d(S):g};let G=!1;const U=(h,g,S)=>{h==null?g._vnode&&Ee(g._vnode,null,null,!0):v(g._vnode||null,h,g,null,null,null,S),g._vnode=h,G||(G=!0,ea(),vo(),G=!1)},J={p:v,um:Ee,m:xe,r:Qe,mt:Q,mc:T,pc:K,pbc:C,n:O,o:e};let de,Se;return t&&([de,Se]=t(J)),{render:U,hydrate:de,createApp:Qp(U,de)}}function os({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function dn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function hc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function mc(e,t,n=!1){const r=e.children,o=t.children;if(oe(r)&&oe(o))for(let s=0;s>1,e[n[a]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}function gc(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:gc(t)}function da(e){if(e)for(let t=0;tWe(lh);function _c(e,t){return pi(e,null,t)}function Be(e,t,n){return pi(e,t,n)}function pi(e,t,n=Ae){const{immediate:r,deep:o,flush:s,once:i}=n,a=Fe({},n);let l;if(jr)if(s==="sync"){const d=uh();l=d.__watcherHandles||(d.__watcherHandles=[])}else if(!t||r)a.once=!0;else{const d=()=>{};return d.stop=Ot,d.resume=Ot,d.pause=Ot,d}const u=ze;a.call=(d,p,_)=>yt(d,u,p,_);let f=!1;s==="post"?a.scheduler=d=>{at(d,u&&u.suspense)}:s!=="sync"&&(f=!0,a.scheduler=(d,p)=>{p?d():ii(d)}),a.augmentJob=d=>{t&&(d.flags|=4),f&&(d.flags|=2,u&&(d.id=u.uid,d.i=u))};const c=ap(e,t,a);return l&&l.push(c),c}function ch(e,t,n){const r=this.proxy,o=Oe(e)?e.includes(".")?vc(r,e):()=>r[e]:e.bind(r,r);let s;se(t)?s=t:(s=t.handler,n=t);const i=Ur(this),a=pi(o,s.bind(r),n);return i(),a}function vc(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${rt(t)}Modifiers`]||e[`${Ft(t)}Modifiers`];function dh(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Ae;let o=n;const s=t.startsWith("update:"),i=s&&fh(r,t.slice(7));i&&(i.trim&&(o=n.map(f=>Oe(f)?f.trim():f)),i.number&&(o=n.map(pd))),bp(e,t,o);let a,l=r[a=qo(t)]||r[a=qo(rt(t))];!l&&s&&(l=r[a=qo(Ft(t))]),l&&yt(l,e,6,o);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,yt(u,e,6,o)}}function yc(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},a=!1;if(!se(e)){const l=u=>{const f=yc(u,t,!0);f&&(a=!0,Fe(i,f))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!s&&!a?(Ce(e)&&r.set(e,null),null):(oe(s)?s.forEach(l=>i[l]=null):Fe(i,s),Ce(e)&&r.set(e,i),i)}function No(e,t){return!e||!Mr(t)?!1:(t=t.slice(2).replace(/Once$/,""),_e(e,t[0].toLowerCase()+t.slice(1))||_e(e,Ft(t))||_e(e,t))}function ss(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[s],slots:i,attrs:a,emit:l,render:u,renderCache:f,props:c,data:d,setupState:p,ctx:_,inheritAttrs:v}=e,y=yo(e);let b,A;try{if(n.shapeFlag&4){const E=o||r,N=E;b=pt(u.call(N,E,f,c,p,d,_)),A=a}else{const E=t;b=pt(E.length>1?E(c,{attrs:a,slots:i,emit:l}):E(c,null)),A=t.props?a:ph(a)}}catch(E){vr.length=0,Hr(E,e,1),b=le(Ue)}let m=b;if(A&&v!==!1){const E=Object.keys(A),{shapeFlag:N}=m;E.length&&N&7&&(s&&E.some(Gs)&&(A=hh(A,s)),m=rn(m,A,!1,!0))}return n.dirs&&(m=rn(m,null,!1,!0),m.dirs=m.dirs?m.dirs.concat(n.dirs):n.dirs),n.transition&&kr(m,n.transition),b=m,yo(y),b}const ph=e=>{let t;for(const n in e)(n==="class"||n==="style"||Mr(n))&&((t||(t={}))[n]=e[n]);return t},hh=(e,t)=>{const n={};for(const r in e)(!Gs(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function mh(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:a,patchFlag:l}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?pa(r,i,u):!!i;if(l&8){const f=t.dynamicProps;for(let c=0;ce.__isSuspense;function Ec(e,t){t&&t.pendingBranch?oe(e)?t.effects.push(...e):t.effects.push(e):hp(e)}const ye=Symbol.for("v-fgt"),en=Symbol.for("v-txt"),Ue=Symbol.for("v-cmt"),zn=Symbol.for("v-stc"),vr=[];let lt=null;function X(e=!1){vr.push(lt=e?null:[])}function _h(){vr.pop(),lt=vr[vr.length-1]||null}let Cr=1;function ha(e){Cr+=e,e<0&<&&(lt.hasOnce=!0)}function Sc(e){return e.dynamicChildren=Cr>0?lt||Vn:null,_h(),Cr>0&<&<.push(e),e}function re(e,t,n,r,o,s){return Sc(ae(e,t,n,r,o,s,!0))}function De(e,t,n,r,o){return Sc(le(e,t,n,r,o,!0))}function Or(e){return e?e.__v_isVNode===!0:!1}function yn(e,t){return e.type===t.type&&e.key===t.key}const Ac=({key:e})=>e??null,uo=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Oe(e)||Ve(e)||se(e)?{i:$e,r:e,k:t,f:!!n}:e:null);function ae(e,t=null,n=null,r=0,o=null,s=e===ye?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ac(t),ref:t&&uo(t),scopeId:Ku,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:$e};return a?(hi(l,n),s&128&&e.normalize(l)):n&&(l.shapeFlag|=Oe(n)?8:16),Cr>0&&!i&<&&(l.patchFlag>0||s&6)&&l.patchFlag!==32&<.push(l),l}const le=vh;function vh(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===Up)&&(e=Ue),Or(e)){const a=rn(e,t,!0);return n&&hi(a,n),Cr>0&&!s&<&&(a.shapeFlag&6?lt[lt.indexOf(e)]=a:lt.push(a)),a.patchFlag=-2,a}if(Ih(e)&&(e=e.__vccOpts),t){t=yh(t);let{class:a,style:l}=t;a&&!Oe(a)&&(t.class=nt(a)),Ce(l)&&(ri(l)&&!oe(l)&&(l=Fe({},l)),t.style=Zn(l))}const i=Oe(e)?1:bc(e)?128:Wu(e)?64:Ce(e)?4:se(e)?2:0;return ae(e,t,n,r,o,i,s,!0)}function yh(e){return e?ri(e)||ac(e)?Fe({},e):e:null}function rn(e,t,n=!1,r=!1){const{props:o,ref:s,patchFlag:i,children:a,transition:l}=e,u=t?Eh(o||{},t):o,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Ac(u),ref:t&&t.ref?n&&s?oe(s)?s.concat(uo(t)):[s,uo(t)]:uo(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rn(e.ssContent),ssFallback:e.ssFallback&&rn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&kr(f,l.clone(f)),f}function on(e=" ",t=0){return le(en,null,e,t)}function bh(e,t){const n=le(zn,null,e);return n.staticCount=t,n}function Me(e="",t=!1){return t?(X(),De(Ue,null,e)):le(Ue,null,e)}function pt(e){return e==null||typeof e=="boolean"?le(Ue):oe(e)?le(ye,null,e.slice()):Or(e)?Zt(e):le(en,null,String(e))}function Zt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:rn(e)}function hi(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(oe(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),hi(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!ac(t)?t._ctx=$e:o===3&&$e&&($e.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else se(t)?(t={default:t,_ctx:$e},n=32):(t=String(t),r&64?(n=16,t=[on(t)]):n=8);e.children=t,e.shapeFlag|=n}function Eh(...e){const t={};for(let n=0;nze||$e;let Ao,Os;{const e=mu(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),s=>{o.length>1?o.forEach(i=>i(s)):o[0](s)}};Ao=t("__VUE_INSTANCE_SETTERS__",n=>ze=n),Os=t("__VUE_SSR_SETTERS__",n=>jr=n)}const Ur=e=>{const t=ze;return Ao(e),e.scope.on(),()=>{e.scope.off(),Ao(t)}},ma=()=>{ze&&ze.scope.off(),Ao(null)};function Tc(e){return e.vnode.shapeFlag&4}let jr=!1;function wh(e,t=!1,n=!1){t&&Os(t);const{props:r,children:o}=e.vnode,s=Tc(e);Jp(e,r,s,t),rh(e,o,n);const i=s?kh(e,t):void 0;return t&&Os(!1),i}function kh(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Kp);const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Oh(e):null,s=Ur(e);Ht();const i=Qn(r,e,0,[e.props,o]);if(zt(),s(),du(i)){if(An(e)||li(e),i.then(ma,ma),t)return i.then(a=>{ga(e,a,t)}).catch(a=>{Hr(a,e,0)});e.asyncDep=i}else ga(e,i,t)}else wc(e,t)}function ga(e,t,n){se(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ce(t)&&(e.devtoolsRawSetupState=t,e.setupState=Nu(t)),wc(e,n)}let _a;function wc(e,t,n){const r=e.type;if(!e.render){if(!t&&_a&&!r.render){const o=r.template||fi(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,u=Fe(Fe({isCustomElement:s,delimiters:a},i),l);r.render=_a(o,u)}}e.render=r.render||Ot}{const o=Ur(e);Ht();try{Wp(e)}finally{zt(),o()}}}const Ch={get(e,t){return Ge(e,"get",""),e[t]}};function Oh(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ch),slots:e.slots,emit:e.emit,expose:t}}function Mo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Nu(Xd(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in _r)return _r[n](e)},has(t,n){return n in t||n in _r}})):e.proxy}const xh=/(?:^|[-_])(\w)/g,Ph=e=>e.replace(xh,t=>t.toUpperCase()).replace(/[-_]/g,"");function kc(e,t=!0){return se(e)?e.displayName||e.name:e.name||t&&e.__name}function Cc(e,t,n=!1){let r=kc(t);if(!r&&t.__file){const o=t.__file.match(/([^/\\]+)\.\w+$/);o&&(r=o[1])}if(!r&&e&&e.parent){const o=s=>{for(const i in s)if(s[i]===t)return i};r=o(e.components||e.parent.type.components)||o(e.appContext.components)}return r?Ph(r):n?"App":"Anonymous"}function Ih(e){return se(e)&&"__vccOpts"in e}const B=(e,t)=>sp(e,t,jr);function he(e,t,n){const r=arguments.length;return r===2?Ce(t)&&!oe(t)?Or(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Or(n)&&(n=[n]),le(e,t,n))}const va="3.5.10";/** +* @vue/runtime-dom v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let xs;const ya=typeof window<"u"&&window.trustedTypes;if(ya)try{xs=ya.createPolicy("vue",{createHTML:e=>e})}catch{}const Oc=xs?e=>xs.createHTML(e):e=>e,Rh="http://www.w3.org/2000/svg",Lh="http://www.w3.org/1998/Math/MathML",Vt=typeof document<"u"?document:null,ba=Vt&&Vt.createElement("template"),Dh={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?Vt.createElementNS(Rh,e):t==="mathml"?Vt.createElementNS(Lh,e):n?Vt.createElement(e,{is:n}):Vt.createElement(e);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Vt.createTextNode(e),createComment:e=>Vt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Vt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{ba.innerHTML=Oc(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=ba.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Wt="transition",ir="animation",xr=Symbol("_vtc"),xc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Vh=Fe({},Gu,xc),Nh=e=>(e.displayName="Transition",e.props=Vh,e),mi=Nh((e,{slots:t})=>he(Tp,Mh(e),t)),pn=(e,t=[])=>{oe(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ea=e=>e?oe(e)?e.some(t=>t.length>1):e.length>1:!1;function Mh(e){const t={};for(const w in e)w in xc||(t[w]=e[w]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=s,appearActiveClass:u=i,appearToClass:f=a,leaveFromClass:c=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,_=Bh(o),v=_&&_[0],y=_&&_[1],{onBeforeEnter:b,onEnter:A,onEnterCancelled:m,onLeave:E,onLeaveCancelled:N,onBeforeAppear:j=b,onAppear:M=A,onAppearCancelled:T=m}=t,$=(w,L,Q)=>{hn(w,L?f:a),hn(w,L?u:i),Q&&Q()},C=(w,L)=>{w._isLeaving=!1,hn(w,c),hn(w,p),hn(w,d),L&&L()},H=w=>(L,Q)=>{const te=w?M:A,P=()=>$(L,w,Q);pn(te,[L,P]),Sa(()=>{hn(L,w?l:s),Gt(L,w?f:a),Ea(te)||Aa(L,r,v,P)})};return Fe(t,{onBeforeEnter(w){pn(b,[w]),Gt(w,s),Gt(w,i)},onBeforeAppear(w){pn(j,[w]),Gt(w,l),Gt(w,u)},onEnter:H(!1),onAppear:H(!0),onLeave(w,L){w._isLeaving=!0;const Q=()=>C(w,L);Gt(w,c),Gt(w,d),zh(),Sa(()=>{w._isLeaving&&(hn(w,c),Gt(w,p),Ea(E)||Aa(w,r,y,Q))}),pn(E,[w,Q])},onEnterCancelled(w){$(w,!1),pn(m,[w])},onAppearCancelled(w){$(w,!0),pn(T,[w])},onLeaveCancelled(w){C(w),pn(N,[w])}})}function Bh(e){if(e==null)return null;if(Ce(e))return[is(e.enter),is(e.leave)];{const t=is(e);return[t,t]}}function is(e){return hd(e)}function Gt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[xr]||(e[xr]=new Set)).add(t)}function hn(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[xr];n&&(n.delete(t),n.size||(e[xr]=void 0))}function Sa(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Fh=0;function Aa(e,t,n,r){const o=e._endId=++Fh,s=()=>{o===e._endId&&r()};if(n!=null)return setTimeout(s,n);const{type:i,timeout:a,propCount:l}=Hh(e,t);if(!i)return r();const u=i+"end";let f=0;const c=()=>{e.removeEventListener(u,d),s()},d=p=>{p.target===e&&++f>=l&&c()};setTimeout(()=>{f(n[_]||"").split(", "),o=r(`${Wt}Delay`),s=r(`${Wt}Duration`),i=Ta(o,s),a=r(`${ir}Delay`),l=r(`${ir}Duration`),u=Ta(a,l);let f=null,c=0,d=0;t===Wt?i>0&&(f=Wt,c=i,d=s.length):t===ir?u>0&&(f=ir,c=u,d=l.length):(c=Math.max(i,u),f=c>0?i>u?Wt:ir:null,d=f?f===Wt?s.length:l.length:0);const p=f===Wt&&/\b(transform|all)(,|$)/.test(r(`${Wt}Property`).toString());return{type:f,timeout:c,propCount:d,hasTransform:p}}function Ta(e,t){for(;e.lengthwa(n)+wa(e[r])))}function wa(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function zh(){return document.body.offsetHeight}function $h(e,t,n){const r=e[xr];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const To=Symbol("_vod"),Pc=Symbol("_vsh"),wo={beforeMount(e,{value:t},{transition:n}){e[To]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):ar(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),ar(e,!0),r.enter(e)):r.leave(e,()=>{ar(e,!1)}):ar(e,t))},beforeUnmount(e,{value:t}){ar(e,t)}};function ar(e,t){e.style.display=t?e[To]:"none",e[Pc]=!t}const Uh=Symbol(""),jh=/(^|;)\s*display\s*:/;function Kh(e,t,n){const r=e.style,o=Oe(n);let s=!1;if(n&&!o){if(t)if(Oe(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&co(r,a,"")}else for(const i in t)n[i]==null&&co(r,i,"");for(const i in n)i==="display"&&(s=!0),co(r,i,n[i])}else if(o){if(t!==n){const i=r[Uh];i&&(n+=";"+i),r.cssText=n,s=jh.test(n)}}else t&&e.removeAttribute("style");To in e&&(e[To]=s?r.display:"",e[Pc]&&(r.display="none"))}const ka=/\s*!important$/;function co(e,t,n){if(oe(n))n.forEach(r=>co(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Wh(e,t);ka.test(n)?e.setProperty(Ft(r),n.replace(ka,""),"important"):e[r]=n}}const Ca=["Webkit","Moz","ms"],as={};function Wh(e,t){const n=as[t];if(n)return n;let r=rt(t);if(r!=="filter"&&r in e)return as[t]=r;r=Br(r);for(let o=0;ols||(Zh.then(()=>ls=0),ls=Date.now());function Jh(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;yt(em(r,n.value),t,5,[r])};return n.value=e,n.attached=Qh(),n}function em(e,t){if(oe(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const La=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,tm=(e,t,n,r,o,s)=>{const i=o==="svg";t==="class"?$h(e,r,i):t==="style"?Kh(e,n,r):Mr(t)?Gs(t)||Yh(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):nm(e,t,r,i))?(Pa(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&xa(e,t,r,i,s,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Oe(r))?Pa(e,rt(t),r):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),xa(e,t,r,i))};function nm(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&La(t)&&se(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return La(t)&&Oe(n)?!1:t in e}const rm={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},om=(e,t)=>{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=o=>{if(!("key"in o))return;const s=Ft(o.key);if(t.some(i=>i===s||rm[i]===s))return e(o)})},sm=Fe({patchProp:tm},Dh);let us,Da=!1;function im(){return us=Da?us:sh(sm),Da=!0,us}const am=(...e)=>{const t=im().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=um(r);if(o)return n(o,!0,lm(o))},t};function lm(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function um(e){return Oe(e)?document.querySelector(e):e}var Kr=e=>/^[a-z][a-z0-9+.-]*:/.test(e)||e.startsWith("//"),cm=/.md((\?|#).*)?$/,fm=(e,t="/")=>Kr(e)||e.startsWith("/")&&!e.startsWith(t)&&!cm.test(e),Bo=e=>/^(https?:)?\/\//.test(e),Va=e=>{if(!e||e.endsWith("/"))return e;let t=e.replace(/(^|\/)README.md$/i,"$1index.html");return t.endsWith(".md")?t=`${t.substring(0,t.length-3)}.html`:t.endsWith(".html")||(t=`${t}.html`),t.endsWith("/index.html")&&(t=t.substring(0,t.length-10)),t},dm="http://.",pm=(e,t)=>{if(!e.startsWith("/")&&t){const n=t.slice(0,t.lastIndexOf("/"));return Va(new URL(`${n}/${e}`,dm).pathname)}return Va(e)},hm=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"},mm=(e,t="/")=>{const n=e.replace(/^(?:https?:)?\/\/[^/]*/,"");return n.startsWith(t)?`/${n.slice(t.length)}`:n},gm=/(#|\?)/,Ic=e=>{const[t,...n]=e.split(gm);return{pathname:t,hashAndQueries:n.join("")}},_m=["link","meta","script","style","noscript","template"],vm=["title","base"],ym=([e,t,n])=>vm.includes(e)?e:_m.includes(e)?e==="meta"&&t.name?`${e}.${t.name}`:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,Object.entries(t).map(([r,o])=>typeof o=="boolean"?o?[r,""]:null:[r,o]).filter(r=>r!=null).sort(([r],[o])=>r.localeCompare(o)),n]):null,bm=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=ym(r);o&&!t.has(o)&&(t.add(o),n.push(r))}),n},Em=e=>e.endsWith("/")||e.endsWith(".html")?e:`${e}/`,Rc=e=>e.endsWith("/")?e.slice(0,-1):e,gi=e=>e.startsWith("/")?e.slice(1):e,_i=e=>Object.prototype.toString.call(e)==="[object Object]",vt=e=>typeof e=="string";const Sm=JSON.parse("{}"),Am=Object.fromEntries([["/",{loader:()=>q(()=>import("./index.html-DC9fO_G1.js"),[]),meta:{title:"Home"}}],["/advanced/architecture.html",{loader:()=>q(()=>import("./architecture.html-DMVSC9n2.js"),__vite__mapDeps([0,1])),meta:{title:"Architecture"}}],["/advanced/plugin.html",{loader:()=>q(()=>import("./plugin.html-D9W_28mB.js"),[]),meta:{title:"Writing a Plugin"}}],["/advanced/theme.html",{loader:()=>q(()=>import("./theme.html-CdgwQUlX.js"),[]),meta:{title:"Writing a Theme"}}],["/guide/assets.html",{loader:()=>q(()=>import("./assets.html-Dam5ylra.js"),__vite__mapDeps([2,3])),meta:{title:"Assets"}}],["/guide/bundler.html",{loader:()=>q(()=>import("./bundler.html-CV5ajQhQ.js"),[]),meta:{title:"Bundler"}}],["/guide/configuration.html",{loader:()=>q(()=>import("./configuration.html-DM_-Lxly.js"),[]),meta:{title:"Configuration"}}],["/guide/deployment.html",{loader:()=>q(()=>import("./deployment.html-BEoPXJ1X.js"),[]),meta:{title:"Deployment"}}],["/guide/getting-started.html",{loader:()=>q(()=>import("./getting-started.html-CgQZcPJf.js"),[]),meta:{title:"Getting Started"}}],["/guide/i18n.html",{loader:()=>q(()=>import("./i18n.html-BxHmK_XU.js"),[]),meta:{title:"I18n"}}],["/guide/introduction.html",{loader:()=>q(()=>import("./introduction.html-CrZCSGtL.js"),[]),meta:{title:"Introduction"}}],["/guide/markdown.html",{loader:()=>q(()=>import("./markdown.html-CWFcBDIX.js"),[]),meta:{title:"Markdown"}}],["/guide/migration.html",{loader:()=>q(()=>import("./migration.html-D8RQFLrh.js"),[]),meta:{title:"Migrating from v1"}}],["/guide/page.html",{loader:()=>q(()=>import("./page.html-CyJV0jAJ.js"),[]),meta:{title:"Page"}}],["/guide/plugin.html",{loader:()=>q(()=>import("./plugin.html-DM6zxjTw.js"),[]),meta:{title:"Plugin"}}],["/guide/theme.html",{loader:()=>q(()=>import("./theme.html-e751rCXr.js"),[]),meta:{title:"Theme"}}],["/guide/troubleshooting.html",{loader:()=>q(()=>import("./troubleshooting.html-Bb0muq5e.js"),[]),meta:{title:"Troubleshooting"}}],["/reference/cli.html",{loader:()=>q(()=>import("./cli.html-C6XDEXbR.js"),[]),meta:{title:"Command Line Interface"}}],["/reference/client-api.html",{loader:()=>q(()=>import("./client-api.html-CS-yYR-t.js"),[]),meta:{title:"Client API"}}],["/reference/components.html",{loader:()=>q(()=>import("./components.html-jiMAI3hh.js"),[]),meta:{title:"Built-in Components"}}],["/reference/config.html",{loader:()=>q(()=>import("./config.html-CDKipwFP.js"),[]),meta:{title:"Config"}}],["/reference/frontmatter.html",{loader:()=>q(()=>import("./frontmatter.html-DjGtDI42.js"),[]),meta:{title:"Frontmatter"}}],["/reference/node-api.html",{loader:()=>q(()=>import("./node-api.html-CLx2oLFK.js"),[]),meta:{title:"Node API"}}],["/reference/plugin-api.html",{loader:()=>q(()=>import("./plugin-api.html-DgHODap5.js"),[]),meta:{title:"Plugin API"}}],["/reference/theme-api.html",{loader:()=>q(()=>import("./theme-api.html-XfPj_08E.js"),[]),meta:{title:"Theme API"}}],["/zh/",{loader:()=>q(()=>import("./index.html-mQpMmmTc.js"),[]),meta:{title:"首页"}}],["/advanced/cookbook/",{loader:()=>q(()=>import("./index.html-CD_6dpmJ.js"),[]),meta:{title:"Introduction"}}],["/advanced/cookbook/adding-extra-pages.html",{loader:()=>q(()=>import("./adding-extra-pages.html-NhbwxT0R.js"),[]),meta:{title:"Adding Extra Pages"}}],["/advanced/cookbook/making-a-theme-extendable.html",{loader:()=>q(()=>import("./making-a-theme-extendable.html-H08JTuS9.js"),[]),meta:{title:"Making a Theme Extendable"}}],["/advanced/cookbook/markdown-and-vue-sfc.html",{loader:()=>q(()=>import("./markdown-and-vue-sfc.html-DF0bnhSS.js"),[]),meta:{title:"Markdown and Vue SFC"}}],["/advanced/cookbook/passing-data-to-client-code.html",{loader:()=>q(()=>import("./passing-data-to-client-code.html-CnH8Ms-R.js"),[]),meta:{title:"Passing Data to Client Code"}}],["/advanced/cookbook/resolving-routes.html",{loader:()=>q(()=>import("./resolving-routes.html-DDmW2wC0.js"),[]),meta:{title:"Resolving Routes"}}],["/advanced/cookbook/usage-of-client-config.html",{loader:()=>q(()=>import("./usage-of-client-config.html-DCvVHpnl.js"),[]),meta:{title:"Usage of Client Config"}}],["/reference/bundler/vite.html",{loader:()=>q(()=>import("./vite.html-DUXE194y.js"),[]),meta:{title:"Vite"}}],["/reference/bundler/webpack.html",{loader:()=>q(()=>import("./webpack.html-Bbjw2aHv.js"),[]),meta:{title:"Webpack"}}],["/zh/advanced/architecture.html",{loader:()=>q(()=>import("./architecture.html-alS37AmL.js"),__vite__mapDeps([4,1])),meta:{title:"架构"}}],["/zh/advanced/plugin.html",{loader:()=>q(()=>import("./plugin.html-BeWgxKYx.js"),[]),meta:{title:"开发插件"}}],["/zh/advanced/theme.html",{loader:()=>q(()=>import("./theme.html-zy_79EbV.js"),[]),meta:{title:"开发主题"}}],["/zh/guide/assets.html",{loader:()=>q(()=>import("./assets.html-Dq9vV_LH.js"),__vite__mapDeps([5,3])),meta:{title:"静态资源"}}],["/zh/guide/bundler.html",{loader:()=>q(()=>import("./bundler.html-D5kCpoeU.js"),[]),meta:{title:"打包工具"}}],["/zh/guide/configuration.html",{loader:()=>q(()=>import("./configuration.html-DvWzyqpP.js"),[]),meta:{title:"配置"}}],["/zh/guide/deployment.html",{loader:()=>q(()=>import("./deployment.html-5h8r2bCx.js"),[]),meta:{title:"部署"}}],["/zh/guide/getting-started.html",{loader:()=>q(()=>import("./getting-started.html-CbWxeq6y.js"),[]),meta:{title:"快速上手"}}],["/zh/guide/i18n.html",{loader:()=>q(()=>import("./i18n.html-cok13upx.js"),[]),meta:{title:"多语言支持"}}],["/zh/guide/introduction.html",{loader:()=>q(()=>import("./introduction.html-DV4zKs5N.js"),[]),meta:{title:"介绍"}}],["/zh/guide/markdown.html",{loader:()=>q(()=>import("./markdown.html-nex0_ObL.js"),[]),meta:{title:"Markdown"}}],["/zh/guide/migration.html",{loader:()=>q(()=>import("./migration.html-DJ2Q6_s-.js"),[]),meta:{title:"从 v1 迁移"}}],["/zh/guide/page.html",{loader:()=>q(()=>import("./page.html-Cn8f9nSV.js"),[]),meta:{title:"页面"}}],["/zh/guide/plugin.html",{loader:()=>q(()=>import("./plugin.html-zsCYx7fo.js"),[]),meta:{title:"插件"}}],["/zh/guide/theme.html",{loader:()=>q(()=>import("./theme.html-B4AGKTWM.js"),[]),meta:{title:"主题"}}],["/zh/guide/troubleshooting.html",{loader:()=>q(()=>import("./troubleshooting.html-CPHl43Pb.js"),[]),meta:{title:"常见问题"}}],["/zh/reference/cli.html",{loader:()=>q(()=>import("./cli.html-CX21GLd1.js"),[]),meta:{title:"命令行接口"}}],["/zh/reference/client-api.html",{loader:()=>q(()=>import("./client-api.html-C2mvMPgv.js"),[]),meta:{title:"客户端 API"}}],["/zh/reference/components.html",{loader:()=>q(()=>import("./components.html-CHBTFX2a.js"),[]),meta:{title:"内置组件"}}],["/zh/reference/config.html",{loader:()=>q(()=>import("./config.html-8J-gA8_g.js"),[]),meta:{title:"配置"}}],["/zh/reference/frontmatter.html",{loader:()=>q(()=>import("./frontmatter.html-Diet5G1N.js"),[]),meta:{title:"Frontmatter"}}],["/zh/reference/node-api.html",{loader:()=>q(()=>import("./node-api.html-CXg2GbGp.js"),[]),meta:{title:"Node API"}}],["/zh/reference/plugin-api.html",{loader:()=>q(()=>import("./plugin-api.html-C7XRsBA_.js"),[]),meta:{title:"插件 API"}}],["/zh/reference/theme-api.html",{loader:()=>q(()=>import("./theme-api.html-BE07n3ZN.js"),[]),meta:{title:"主题 API"}}],["/zh/advanced/cookbook/",{loader:()=>q(()=>import("./index.html-CoimyeYp.js"),[]),meta:{title:"介绍"}}],["/zh/advanced/cookbook/adding-extra-pages.html",{loader:()=>q(()=>import("./adding-extra-pages.html-8wOaBP_-.js"),[]),meta:{title:"添加额外页面"}}],["/zh/advanced/cookbook/making-a-theme-extendable.html",{loader:()=>q(()=>import("./making-a-theme-extendable.html-DvtTFh8W.js"),[]),meta:{title:"开发一个可继承的主题"}}],["/zh/advanced/cookbook/markdown-and-vue-sfc.html",{loader:()=>q(()=>import("./markdown-and-vue-sfc.html-CMOmEnQT.js"),[]),meta:{title:"Markdown 与 Vue SFC"}}],["/zh/advanced/cookbook/passing-data-to-client-code.html",{loader:()=>q(()=>import("./passing-data-to-client-code.html-CGftwHyH.js"),[]),meta:{title:"向客户端代码传递数据"}}],["/zh/advanced/cookbook/resolving-routes.html",{loader:()=>q(()=>import("./resolving-routes.html-CYmlhoMs.js"),[]),meta:{title:"解析路由"}}],["/zh/advanced/cookbook/usage-of-client-config.html",{loader:()=>q(()=>import("./usage-of-client-config.html-DXH29_eX.js"),[]),meta:{title:"客户端配置的使用方法"}}],["/zh/reference/bundler/vite.html",{loader:()=>q(()=>import("./vite.html-C6VyTfJC.js"),[]),meta:{title:"Vite"}}],["/zh/reference/bundler/webpack.html",{loader:()=>q(()=>import("./webpack.html-3uN9K8Sl.js"),[]),meta:{title:"Webpack"}}],["/404.html",{loader:()=>q(()=>import("./404.html-Y5XR-oHF.js"),[]),meta:{title:""}}]]);function Tm(){return Lc().__VUE_DEVTOOLS_GLOBAL_HOOK__}function Lc(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const wm=typeof Proxy=="function",km="devtools-plugin:setup",Cm="plugin:settings:set";let Pn,Ps;function Om(){var e;return Pn!==void 0||(typeof window<"u"&&window.performance?(Pn=!0,Ps=window.performance):typeof globalThis<"u"&&(!((e=globalThis.perf_hooks)===null||e===void 0)&&e.performance)?(Pn=!0,Ps=globalThis.perf_hooks.performance):Pn=!1),Pn}function xm(){return Om()?Ps.now():Date.now()}class Pm{constructor(t,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=n;const r={};if(t.settings)for(const i in t.settings){const a=t.settings[i];r[i]=a.defaultValue}const o=`__vue-devtools-plugin-settings__${t.id}`;let s=Object.assign({},r);try{const i=localStorage.getItem(o),a=JSON.parse(i);Object.assign(s,a)}catch{}this.fallbacks={getSettings(){return s},setSettings(i){try{localStorage.setItem(o,JSON.stringify(i))}catch{}s=i},now(){return xm()}},n&&n.on(Cm,(i,a)=>{i===this.plugin.id&&this.fallbacks.setSettings(a)}),this.proxiedOn=new Proxy({},{get:(i,a)=>this.target?this.target.on[a]:(...l)=>{this.onQueue.push({method:a,args:l})}}),this.proxiedTarget=new Proxy({},{get:(i,a)=>this.target?this.target[a]:a==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(a)?(...l)=>(this.targetQueue.push({method:a,args:l,resolve:()=>{}}),this.fallbacks[a](...l)):(...l)=>new Promise(u=>{this.targetQueue.push({method:a,args:l,resolve:u})})})}async setRealTarget(t){this.target=t;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function Im(e,t){const n=e,r=Lc(),o=Tm(),s=wm&&n.enableEarlyProxy;if(o&&(r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!s))o.emit(km,e,t);else{const i=s?new Pm(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:i}),i&&t(i.proxiedTarget)}}/*! + * vue-router v4.4.5 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const Nt=typeof document<"u";function Dc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Rm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Dc(e.default)}const ge=Object.assign;function cs(e,t){const n={};for(const r in t){const o=t[r];n[r]=ut(o)?o.map(e):e(o)}return n}const yr=()=>{},ut=Array.isArray,Vc=/#/g,Lm=/&/g,Dm=/\//g,Vm=/=/g,Nm=/\?/g,Nc=/\+/g,Mm=/%5B/g,Bm=/%5D/g,Mc=/%5E/g,Fm=/%60/g,Bc=/%7B/g,Hm=/%7C/g,Fc=/%7D/g,zm=/%20/g;function vi(e){return encodeURI(""+e).replace(Hm,"|").replace(Mm,"[").replace(Bm,"]")}function $m(e){return vi(e).replace(Bc,"{").replace(Fc,"}").replace(Mc,"^")}function Is(e){return vi(e).replace(Nc,"%2B").replace(zm,"+").replace(Vc,"%23").replace(Lm,"%26").replace(Fm,"`").replace(Bc,"{").replace(Fc,"}").replace(Mc,"^")}function Um(e){return Is(e).replace(Vm,"%3D")}function jm(e){return vi(e).replace(Vc,"%23").replace(Nm,"%3F")}function Km(e){return e==null?"":jm(e).replace(Dm,"%2F")}function Kn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Wm=/\/$/,Gm=e=>e.replace(Wm,"");function fs(e,t,n="/"){let r,o={},s="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),s=t.slice(l+1,a>-1?a:t.length),o=e(s)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Zm(r??t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:Kn(i)}}function qm(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Na(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Ym(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&sn(t.matched[r],n.matched[o])&&Hc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function sn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Hc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Xm(e[n],t[n]))return!1;return!0}function Xm(e,t){return ut(e)?Ma(e,t):ut(t)?Ma(t,e):e===t}function Ma(e,t){return ut(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Zm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let s=n.length-1,i,a;for(i=0;i1&&s--;else break;return n.slice(0,s).join("/")+"/"+r.slice(i).join("/")}const Dt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Pr;(function(e){e.pop="pop",e.push="push"})(Pr||(Pr={}));var br;(function(e){e.back="back",e.forward="forward",e.unknown=""})(br||(br={}));function Qm(e){if(!e)if(Nt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Gm(e)}const Jm=/^[^#]+#/;function eg(e,t){return e.replace(Jm,"#")+t}function tg(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Fo=()=>({left:window.scrollX,top:window.scrollY});function ng(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=tg(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Ba(e,t){return(history.state?history.state.position-t:-1)+e}const Rs=new Map;function rg(e,t){Rs.set(e,t)}function og(e){const t=Rs.get(e);return Rs.delete(e),t}let sg=()=>location.protocol+"//"+location.host;function zc(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let a=o.includes(e.slice(s))?e.slice(s).length:1,l=o.slice(a);return l[0]!=="/"&&(l="/"+l),Na(l,"")}return Na(n,e)+r+o}function ig(e,t,n,r){let o=[],s=[],i=null;const a=({state:d})=>{const p=zc(e,location),_=n.value,v=t.value;let y=0;if(d){if(n.value=p,t.value=d,i&&i===_){i=null;return}y=v?d.position-v.position:0}else r(p);o.forEach(b=>{b(n.value,_,{delta:y,type:Pr.pop,direction:y?y>0?br.forward:br.back:br.unknown})})};function l(){i=n.value}function u(d){o.push(d);const p=()=>{const _=o.indexOf(d);_>-1&&o.splice(_,1)};return s.push(p),p}function f(){const{history:d}=window;d.state&&d.replaceState(ge({},d.state,{scroll:Fo()}),"")}function c(){for(const d of s)d();s=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:l,listen:u,destroy:c}}function Fa(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Fo():null}}function ag(e){const{history:t,location:n}=window,r={value:zc(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(l,u,f){const c=e.indexOf("#"),d=c>-1?(n.host&&document.querySelector("base")?e:e.slice(c))+l:sg()+e+l;try{t[f?"replaceState":"pushState"](u,"",d),o.value=u}catch(p){console.error(p),n[f?"replace":"assign"](d)}}function i(l,u){const f=ge({},t.state,Fa(o.value.back,l,o.value.forward,!0),u,{position:o.value.position});s(l,f,!0),r.value=l}function a(l,u){const f=ge({},o.value,t.state,{forward:l,scroll:Fo()});s(f.current,f,!0);const c=ge({},Fa(r.value,l,null),{position:f.position+1},u);s(l,c,!1),r.value=l}return{location:r,state:o,push:a,replace:i}}function lg(e){e=Qm(e);const t=ag(e),n=ig(e,t.state,t.location,t.replace);function r(s,i=!0){i||n.pauseListeners(),history.go(s)}const o=ge({location:"",base:e,go:r,createHref:eg.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function $c(e){return typeof e=="string"||e&&typeof e=="object"}function Uc(e){return typeof e=="string"||typeof e=="symbol"}const jc=Symbol("");var Ha;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ha||(Ha={}));function Wn(e,t){return ge(new Error,{type:e,[jc]:!0},t)}function Rt(e,t){return e instanceof Error&&jc in e&&(t==null||!!(e.type&t))}const za="[^/]+?",ug={sensitive:!1,strict:!1,start:!0,end:!0},cg=/[.+*?^${}()[\]/\\]/g;function fg(e,t){const n=ge({},ug,t),r=[];let o=n.start?"^":"";const s=[];for(const u of e){const f=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let c=0;ct.length?t.length===1&&t[0]===80?1:-1:0}function Kc(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const pg={type:0,value:""},hg=/[a-zA-Z0-9_]/;function mg(e){if(!e)return[[]];if(e==="/")return[[pg]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${u}": ${p}`)}let n=0,r=n;const o=[];let s;function i(){s&&o.push(s),s=[]}let a=0,l,u="",f="";function c(){u&&(n===0?s.push({type:0,value:u}):n===1||n===2||n===3?(s.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:u,regexp:f,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(m)}:yr}function i(c){if(Uc(c)){const d=r.get(c);d&&(r.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){const d=bg(c,n);n.splice(d,0,c),c.record.name&&!Ka(c)&&r.set(c.record.name,c)}function u(c,d){let p,_={},v,y;if("name"in c&&c.name){if(p=r.get(c.name),!p)throw Wn(1,{location:c});y=p.record.name,_=ge(Ua(d.params,p.keys.filter(m=>!m.optional).concat(p.parent?p.parent.keys.filter(m=>m.optional):[]).map(m=>m.name)),c.params&&Ua(c.params,p.keys.map(m=>m.name))),v=p.stringify(_)}else if(c.path!=null)v=c.path,p=n.find(m=>m.re.test(v)),p&&(_=p.parse(v),y=p.record.name);else{if(p=d.name?r.get(d.name):n.find(m=>m.re.test(d.path)),!p)throw Wn(1,{location:c,currentLocation:d});y=p.record.name,_=ge({},d.params,c.params),v=p.stringify(_)}const b=[];let A=p;for(;A;)b.unshift(A.record),A=A.parent;return{name:y,path:v,params:_,matched:b,meta:yg(b)}}e.forEach(c=>s(c));function f(){n.length=0,r.clear()}return{addRoute:s,resolve:u,removeRoute:i,clearRoutes:f,getRoutes:a,getRecordMatcher:o}}function Ua(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ja(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:vg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function vg(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ka(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function yg(e){return e.reduce((t,n)=>ge(t,n.meta),{})}function Wa(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function bg(e,t){let n=0,r=t.length;for(;n!==r;){const s=n+r>>1;Kc(e,t[s])<0?r=s:n=s+1}const o=Eg(e);return o&&(r=t.lastIndexOf(o,r-1)),r}function Eg(e){let t=e;for(;t=t.parent;)if(Wc(t)&&Kc(e,t)===0)return t}function Wc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Sg(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;os&&Is(s)):[r&&Is(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Ag(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=ut(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const Tg=Symbol(""),qa=Symbol(""),Ho=Symbol(""),yi=Symbol(""),Ls=Symbol("");function lr(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Qt(e,t,n,r,o,s=i=>i()){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(Wn(4,{from:n,to:t})):d instanceof Error?l(d):$c(d)?l(Wn(2,{from:t,to:d})):(i&&r.enterCallbacks[o]===i&&typeof d=="function"&&i.push(d),a())},f=s(()=>e.call(r&&r.instances[o],t,n,u));let c=Promise.resolve(f);e.length<3&&(c=c.then(u)),c.catch(d=>l(d))})}function ds(e,t,n,r,o=s=>s()){const s=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Dc(l)){const f=(l.__vccOpts||l)[t];f&&s.push(Qt(f,n,r,i,a,o))}else{let u=l();s.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const c=Rm(f)?f.default:f;i.mods[a]=f,i.components[a]=c;const p=(c.__vccOpts||c)[t];return p&&Qt(p,n,r,i,a,o)()}))}}return s}function Ya(e){const t=We(Ho),n=We(yi),r=B(()=>{const l=Jt(e.to);return t.resolve(l)}),o=B(()=>{const{matched:l}=r.value,{length:u}=l,f=l[u-1],c=n.matched;if(!f||!c.length)return-1;const d=c.findIndex(sn.bind(null,f));if(d>-1)return d;const p=Xa(l[u-2]);return u>1&&Xa(f)===p&&c[c.length-1].path!==p?c.findIndex(sn.bind(null,l[u-2])):d}),s=B(()=>o.value>-1&&Og(n.params,r.value.params)),i=B(()=>o.value>-1&&o.value===n.matched.length-1&&Hc(n.params,r.value.params));function a(l={}){return Cg(l)?t[Jt(e.replace)?"replace":"push"](Jt(e.to)).catch(yr):Promise.resolve()}if(Nt){const l=$r();if(l){const u={route:r.value,isActive:s.value,isExactActive:i.value,error:null};l.__vrl_devtools=l.__vrl_devtools||[],l.__vrl_devtools.push(u),_c(()=>{u.route=r.value,u.isActive=s.value,u.isExactActive=i.value,u.error=$c(Jt(e.to))?null:'Invalid "to" value'},{flush:"post"})}}return{route:r,href:B(()=>r.value.href),isActive:s,isExactActive:i,navigate:a}}const wg=me({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ya,setup(e,{slots:t}){const n=Fr(Ya(e)),{options:r}=We(Ho),o=B(()=>({[Za(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Za(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&t.default(n);return e.custom?s:he("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),kg=wg;function Cg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Og(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!ut(o)||o.length!==r.length||r.some((s,i)=>s!==o[i]))return!1}return!0}function Xa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Za=(e,t,n)=>e??t??n,xg=me({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=We(Ls),o=B(()=>e.route||r.value),s=We(qa,0),i=B(()=>{let u=Jt(s);const{matched:f}=o.value;let c;for(;(c=f[u])&&!c.components;)u++;return u}),a=B(()=>o.value.matched[i.value]);Tn(qa,B(()=>i.value+1)),Tn(Tg,a),Tn(Ls,o);const l=ce();return Be(()=>[l.value,a.value,e.name],([u,f,c],[d,p,_])=>{f&&(f.instances[c]=u,p&&p!==f&&u&&u===d&&(f.leaveGuards.size||(f.leaveGuards=p.leaveGuards),f.updateGuards.size||(f.updateGuards=p.updateGuards))),u&&f&&(!p||!sn(f,p)||!d)&&(f.enterCallbacks[c]||[]).forEach(v=>v(u))},{flush:"post"}),()=>{const u=o.value,f=e.name,c=a.value,d=c&&c.components[f];if(!d)return Qa(n.default,{Component:d,route:u});const p=c.props[f],_=p?p===!0?u.params:typeof p=="function"?p(u):p:null,y=he(d,ge({},_,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(c.instances[f]=null)},ref:l}));if(Nt&&y.ref){const b={depth:i.value,name:c.name,path:c.path,meta:c.meta};(ut(y.ref)?y.ref.map(m=>m.i):[y.ref.i]).forEach(m=>{m.__vrv_devtools=b})}return Qa(n.default,{Component:y,route:u})||y}}});function Qa(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Pg=xg;function ur(e,t){const n=ge({},e,{matched:e.matched.map(r=>zg(r,["instances","children","aliasOf"]))});return{_custom:{type:null,readOnly:!0,display:e.fullPath,tooltip:t,value:n}}}function to(e){return{_custom:{display:e}}}let Ig=0;function Rg(e,t,n){if(t.__hasDevtools)return;t.__hasDevtools=!0;const r=Ig++;Im({id:"org.vuejs.router"+(r?"."+r:""),label:"Vue Router",packageName:"vue-router",homepage:"https://router.vuejs.org",logo:"https://router.vuejs.org/logo.png",componentStateTypes:["Routing"],app:e},o=>{typeof o.now!="function"&&console.warn("[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),o.on.inspectComponent((f,c)=>{f.instanceData&&f.instanceData.state.push({type:"Routing",key:"$route",editable:!1,value:ur(t.currentRoute.value,"Current Route")})}),o.on.visitComponentTree(({treeNode:f,componentInstance:c})=>{if(c.__vrv_devtools){const d=c.__vrv_devtools;f.tags.push({label:(d.name?`${d.name.toString()}: `:"")+d.path,textColor:0,tooltip:"This component is rendered by <router-view>",backgroundColor:Gc})}ut(c.__vrl_devtools)&&(c.__devtoolsApi=o,c.__vrl_devtools.forEach(d=>{let p=d.route.path,_=Xc,v="",y=0;d.error?(p=d.error,_=Mg,y=Bg):d.isExactActive?(_=Yc,v="This is exactly active"):d.isActive&&(_=qc,v="This link is active"),f.tags.push({label:p,textColor:y,tooltip:v,backgroundColor:_})}))}),Be(t.currentRoute,()=>{l(),o.notifyComponentUpdate(),o.sendInspectorTree(a),o.sendInspectorState(a)});const s="router:navigations:"+r;o.addTimelineLayer({id:s,label:`Router${r?" "+r:""} Navigations`,color:4237508}),t.onError((f,c)=>{o.addTimelineEvent({layerId:s,event:{title:"Error during Navigation",subtitle:c.fullPath,logType:"error",time:o.now(),data:{error:f},groupId:c.meta.__navigationId}})});let i=0;t.beforeEach((f,c)=>{const d={guard:to("beforeEach"),from:ur(c,"Current Location during this navigation"),to:ur(f,"Target location")};Object.defineProperty(f.meta,"__navigationId",{value:i++}),o.addTimelineEvent({layerId:s,event:{time:o.now(),title:"Start of navigation",subtitle:f.fullPath,data:d,groupId:f.meta.__navigationId}})}),t.afterEach((f,c,d)=>{const p={guard:to("afterEach")};d?(p.failure={_custom:{type:Error,readOnly:!0,display:d?d.message:"",tooltip:"Navigation Failure",value:d}},p.status=to("❌")):p.status=to("✅"),p.from=ur(c,"Current Location during this navigation"),p.to=ur(f,"Target location"),o.addTimelineEvent({layerId:s,event:{title:"End of navigation",subtitle:f.fullPath,time:o.now(),data:p,logType:d?"warning":"default",groupId:f.meta.__navigationId}})});const a="router-inspector:"+r;o.addInspector({id:a,label:"Routes"+(r?" "+r:""),icon:"book",treeFilterPlaceholder:"Search routes"});function l(){if(!u)return;const f=u;let c=n.getRoutes().filter(d=>!d.parent||!d.parent.record.components);c.forEach(Jc),f.filter&&(c=c.filter(d=>Ds(d,f.filter.toLowerCase()))),c.forEach(d=>Qc(d,t.currentRoute.value)),f.rootNodes=c.map(Zc)}let u;o.on.getInspectorTree(f=>{u=f,f.app===e&&f.inspectorId===a&&l()}),o.on.getInspectorState(f=>{if(f.app===e&&f.inspectorId===a){const d=n.getRoutes().find(p=>p.record.__vd_id===f.nodeId);d&&(f.state={options:Dg(d)})}}),o.sendInspectorTree(a),o.sendInspectorState(a)})}function Lg(e){return e.optional?e.repeatable?"*":"?":e.repeatable?"+":""}function Dg(e){const{record:t}=e,n=[{editable:!1,key:"path",value:t.path}];return t.name!=null&&n.push({editable:!1,key:"name",value:t.name}),n.push({editable:!1,key:"regexp",value:e.re}),e.keys.length&&n.push({editable:!1,key:"keys",value:{_custom:{type:null,readOnly:!0,display:e.keys.map(r=>`${r.name}${Lg(r)}`).join(" "),tooltip:"Param keys",value:e.keys}}}),t.redirect!=null&&n.push({editable:!1,key:"redirect",value:t.redirect}),e.alias.length&&n.push({editable:!1,key:"aliases",value:e.alias.map(r=>r.record.path)}),Object.keys(e.record.meta).length&&n.push({editable:!1,key:"meta",value:e.record.meta}),n.push({key:"score",editable:!1,value:{_custom:{type:null,readOnly:!0,display:e.score.map(r=>r.join(", ")).join(" | "),tooltip:"Score used to sort routes",value:e.score}}}),n}const Gc=15485081,qc=2450411,Yc=8702998,Vg=2282478,Xc=16486972,Ng=6710886,Mg=16704226,Bg=12131356;function Zc(e){const t=[],{record:n}=e;n.name!=null&&t.push({label:String(n.name),textColor:0,backgroundColor:Vg}),n.aliasOf&&t.push({label:"alias",textColor:0,backgroundColor:Xc}),e.__vd_match&&t.push({label:"matches",textColor:0,backgroundColor:Gc}),e.__vd_exactActive&&t.push({label:"exact",textColor:0,backgroundColor:Yc}),e.__vd_active&&t.push({label:"active",textColor:0,backgroundColor:qc}),n.redirect&&t.push({label:typeof n.redirect=="string"?`redirect: ${n.redirect}`:"redirects",textColor:16777215,backgroundColor:Ng});let r=n.__vd_id;return r==null&&(r=String(Fg++),n.__vd_id=r),{id:r,label:n.path,tags:t,children:e.children.map(Zc)}}let Fg=0;const Hg=/^\/(.*)\/([a-z]*)$/;function Qc(e,t){const n=t.matched.length&&sn(t.matched[t.matched.length-1],e.record);e.__vd_exactActive=e.__vd_active=n,n||(e.__vd_active=t.matched.some(r=>sn(r,e.record))),e.children.forEach(r=>Qc(r,t))}function Jc(e){e.__vd_match=!1,e.children.forEach(Jc)}function Ds(e,t){const n=String(e.re).match(Hg);if(e.__vd_match=!1,!n||n.length<3)return!1;if(new RegExp(n[1].replace(/\$$/,""),n[2]).test(t))return e.children.forEach(i=>Ds(i,t)),e.record.path!=="/"||t==="/"?(e.__vd_match=e.re.test(t),!0):!1;const o=e.record.path.toLowerCase(),s=Kn(o);return!t.startsWith("/")&&(s.includes(t)||o.includes(t))||s.startsWith(t)||o.startsWith(t)||e.record.name&&String(e.record.name).includes(t)?!0:e.children.some(i=>Ds(i,t))}function zg(e,t){const n={};for(const r in e)t.includes(r)||(n[r]=e[r]);return n}function $g(e){const t=_g(e.routes,e),n=e.parseQuery||Sg,r=e.stringifyQuery||Ga,o=e.history,s=lr(),i=lr(),a=lr(),l=xt(Dt);let u=Dt;Nt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=cs.bind(null,O=>""+O),c=cs.bind(null,Km),d=cs.bind(null,Kn);function p(O,G){let U,J;return Uc(O)?(U=t.getRecordMatcher(O),J=G):J=O,t.addRoute(J,U)}function _(O){const G=t.getRecordMatcher(O);G&&t.removeRoute(G)}function v(){return t.getRoutes().map(O=>O.record)}function y(O){return!!t.getRecordMatcher(O)}function b(O,G){if(G=ge({},G||l.value),typeof O=="string"){const g=fs(n,O,G.path),S=t.resolve({path:g.path},G),x=o.createHref(g.fullPath);return ge(g,S,{params:d(S.params),hash:Kn(g.hash),redirectedFrom:void 0,href:x})}let U;if(O.path!=null)U=ge({},O,{path:fs(n,O.path,G.path).path});else{const g=ge({},O.params);for(const S in g)g[S]==null&&delete g[S];U=ge({},O,{params:c(g)}),G.params=c(G.params)}const J=t.resolve(U,G),de=O.hash||"";J.params=f(d(J.params));const Se=qm(r,ge({},O,{hash:$m(de),path:J.path})),h=o.createHref(Se);return ge({fullPath:Se,hash:de,query:r===Ga?Ag(O.query):O.query||{}},J,{redirectedFrom:void 0,href:h})}function A(O){return typeof O=="string"?fs(n,O,l.value.path):ge({},O)}function m(O,G){if(u!==O)return Wn(8,{from:G,to:O})}function E(O){return M(O)}function N(O){return E(ge(A(O),{replace:!0}))}function j(O){const G=O.matched[O.matched.length-1];if(G&&G.redirect){const{redirect:U}=G;let J=typeof U=="function"?U(O):U;return typeof J=="string"&&(J=J.includes("?")||J.includes("#")?J=A(J):{path:J},J.params={}),ge({query:O.query,hash:O.hash,params:J.path!=null?{}:O.params},J)}}function M(O,G){const U=u=b(O),J=l.value,de=O.state,Se=O.force,h=O.replace===!0,g=j(U);if(g)return M(ge(A(g),{state:typeof g=="object"?ge({},de,g.state):de,force:Se,replace:h}),G||U);const S=U;S.redirectedFrom=G;let x;return!Se&&Ym(r,J,U)&&(x=Wn(16,{to:S,from:J}),xe(J,J,!0,!1)),(x?Promise.resolve(x):C(S,J)).catch(k=>Rt(k)?Rt(k,2)?k:be(k):K(k,S,J)).then(k=>{if(k){if(Rt(k,2))return M(ge({replace:h},A(k.to),{state:typeof k.to=="object"?ge({},de,k.to.state):de,force:Se}),G||S)}else k=w(S,J,!0,h,de);return H(S,J,k),k})}function T(O,G){const U=m(O,G);return U?Promise.reject(U):Promise.resolve()}function $(O){const G=mt.values().next().value;return G&&typeof G.runWithContext=="function"?G.runWithContext(O):O()}function C(O,G){let U;const[J,de,Se]=Ug(O,G);U=ds(J.reverse(),"beforeRouteLeave",O,G);for(const g of J)g.leaveGuards.forEach(S=>{U.push(Qt(S,O,G))});const h=T.bind(null,O,G);return U.push(h),et(U).then(()=>{U=[];for(const g of s.list())U.push(Qt(g,O,G));return U.push(h),et(U)}).then(()=>{U=ds(de,"beforeRouteUpdate",O,G);for(const g of de)g.updateGuards.forEach(S=>{U.push(Qt(S,O,G))});return U.push(h),et(U)}).then(()=>{U=[];for(const g of Se)if(g.beforeEnter)if(ut(g.beforeEnter))for(const S of g.beforeEnter)U.push(Qt(S,O,G));else U.push(Qt(g.beforeEnter,O,G));return U.push(h),et(U)}).then(()=>(O.matched.forEach(g=>g.enterCallbacks={}),U=ds(Se,"beforeRouteEnter",O,G,$),U.push(h),et(U))).then(()=>{U=[];for(const g of i.list())U.push(Qt(g,O,G));return U.push(h),et(U)}).catch(g=>Rt(g,8)?g:Promise.reject(g))}function H(O,G,U){a.list().forEach(J=>$(()=>J(O,G,U)))}function w(O,G,U,J,de){const Se=m(O,G);if(Se)return Se;const h=G===Dt,g=Nt?history.state:{};U&&(J||h?o.replace(O.fullPath,ge({scroll:h&&g&&g.scroll},de)):o.push(O.fullPath,de)),l.value=O,xe(O,G,U,h),be()}let L;function Q(){L||(L=o.listen((O,G,U)=>{if(!Je.listening)return;const J=b(O),de=j(J);if(de){M(ge(de,{replace:!0}),J).catch(yr);return}u=J;const Se=l.value;Nt&&rg(Ba(Se.fullPath,U.delta),Fo()),C(J,Se).catch(h=>Rt(h,12)?h:Rt(h,2)?(M(h.to,J).then(g=>{Rt(g,20)&&!U.delta&&U.type===Pr.pop&&o.go(-1,!1)}).catch(yr),Promise.reject()):(U.delta&&o.go(-U.delta,!1),K(h,J,Se))).then(h=>{h=h||w(J,Se,!1),h&&(U.delta&&!Rt(h,8)?o.go(-U.delta,!1):U.type===Pr.pop&&Rt(h,20)&&o.go(-1,!1)),H(J,Se,h)}).catch(yr)}))}let te=lr(),P=lr(),D;function K(O,G,U){be(O);const J=P.list();return J.length?J.forEach(de=>de(O,G,U)):console.error(O),Promise.reject(O)}function ue(){return D&&l.value!==Dt?Promise.resolve():new Promise((O,G)=>{te.add([O,G])})}function be(O){return D||(D=!O,Q(),te.list().forEach(([G,U])=>O?U(O):G()),te.reset()),O}function xe(O,G,U,J){const{scrollBehavior:de}=e;if(!Nt||!de)return Promise.resolve();const Se=!U&&og(Ba(O.fullPath,0))||(J||!U)&&history.state&&history.state.scroll||null;return Jn().then(()=>de(O,G,Se)).then(h=>h&&ng(h)).catch(h=>K(h,O,G))}const Ee=O=>o.go(O);let Qe;const mt=new Set,Je={currentRoute:l,listening:!0,addRoute:p,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:y,getRoutes:v,resolve:b,options:e,push:E,replace:N,go:Ee,back:()=>Ee(-1),forward:()=>Ee(1),beforeEach:s.add,beforeResolve:i.add,afterEach:a.add,onError:P.add,isReady:ue,install(O){const G=this;O.component("RouterLink",kg),O.component("RouterView",Pg),O.config.globalProperties.$router=G,Object.defineProperty(O.config.globalProperties,"$route",{enumerable:!0,get:()=>Jt(l)}),Nt&&!Qe&&l.value===Dt&&(Qe=!0,E(o.location).catch(de=>{}));const U={};for(const de in Dt)Object.defineProperty(U,de,{get:()=>l.value[de],enumerable:!0});O.provide(Ho,G),O.provide(yi,Du(U)),O.provide(Ls,l);const J=O.unmount;mt.add(O),O.unmount=function(){mt.delete(O),mt.size<1&&(u=Dt,L&&L(),L=null,l.value=Dt,Qe=!1,D=!1),J()},Nt&&Rg(O,G,t)}};function et(O){return O.reduce((G,U)=>G.then(()=>$(U)),Promise.resolve())}return Je}function Ug(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;isn(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>sn(u,l))||o.push(l))}return[n,r,o]}function cn(){return We(Ho)}function Ut(e){return We(yi)}var bi=Symbol(""),Pt=()=>{const e=We(bi);if(!e)throw new Error("useClientData() is called without provider.");return e},jg=()=>Pt().pageComponent,er=()=>Pt().pageData,Et=()=>Pt().pageFrontmatter,Kg=()=>Pt().pageHead,ef=()=>Pt().pageLang,Wg=()=>Pt().pageLayout,On=()=>Pt().routeLocale,Gg=()=>Pt().routes,tf=()=>Pt().siteData,Ei=()=>Pt().siteLocaleData,qg=Symbol(""),Vs=xt(Sm),$n=xt(Am),nf=(e,t)=>{const n=pm(e,t);if($n.value[n])return n;const r=encodeURI(n);if($n.value[r])return r;const o=Vs.value[n]||Vs.value[r];return o||n},Ir=(e,t)=>{const{pathname:n,hashAndQueries:r}=Ic(e),o=nf(n,t),s=o+r;return $n.value[o]?{...$n.value[o],path:s,notFound:!1}:{...$n.value["/404.html"],path:s,notFound:!0}},Yg=(e,t)=>{const{pathname:n,hashAndQueries:r}=Ic(e);return nf(n,t)+r},Xg=e=>{if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget){const t=e.currentTarget.getAttribute("target");if(t!=null&&t.match(/\b_blank\b/i))return}return e.preventDefault(),!0}},zo=me({name:"RouteLink",props:{to:{type:String,required:!0},active:Boolean,activeClass:{type:String,default:"route-link-active"}},slots:Object,setup(e,{slots:t}){const n=cn(),r=Ut(),o=B(()=>e.to.startsWith("#")||e.to.startsWith("?")?e.to:`/${Yg(e.to,r.path).substring(1)}`);return()=>he("a",{class:["route-link",{[e.activeClass]:e.active}],href:o.value,onClick:(s={})=>{Xg(s)&&n.push(e.to).catch()}},t.default())}}),tr=me({name:"AutoLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=rp(e,"config"),r=Ut(),o=tf(),s=B(()=>Kr(n.value.link)),i=B(()=>n.value.target||(s.value?"_blank":void 0)),a=B(()=>i.value==="_blank"),l=B(()=>!s.value&&!a.value),u=B(()=>n.value.rel||(a.value?"noopener noreferrer":null)),f=B(()=>n.value.ariaLabel??n.value.text),c=B(()=>{if(n.value.exact)return!1;const p=Object.keys(o.value.locales);return p.length?p.every(_=>_!==n.value.link):n.value.link!=="/"}),d=B(()=>l.value?n.value.activeMatch?(n.value.activeMatch instanceof RegExp?n.value.activeMatch:new RegExp(n.value.activeMatch,"u")).test(r.path):c.value?r.path.startsWith(n.value.link):r.path===n.value.link:!1);return()=>{const{before:p,after:_,default:v}=t,y=(v==null?void 0:v(n.value))??[p==null?void 0:p(n.value),n.value.text,_==null?void 0:_(n.value)];return l.value?he(zo,{class:"auto-link",to:n.value.link,active:d.value,"aria-label":f.value},()=>y):he("a",{class:"auto-link external-link",href:n.value.link,"aria-label":f.value,rel:u.value,target:i.value},y)}}}),Si=me({name:"ClientOnly",setup(e,t){const n=ce(!1);return qe(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),Ai=me({name:"Content",props:{path:{type:String,required:!1,default:""}},setup(e){const t=jg(),n=B(()=>{if(!e.path)return t.value;const r=Ir(e.path);return ec(async()=>r.loader().then(({comp:o})=>o))});return()=>he(n.value)}}),Zg="Layout",Qg="en-US",mn=Fr({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageHead:(e,t,n)=>{const r=vt(t.description)?t.description:n.description,o=[...Array.isArray(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return bm(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||Qg,resolvePageLayout:(e,t)=>{const n=vt(e.frontmatter.layout)?e.frontmatter.layout:Zg;if(!t[n])throw new Error(`[vuepress] Cannot resolve layout: ${n}`);return t[n]},resolveRouteLocale:(e,t)=>hm(e,decodeURI(t)),resolveSiteLocaleData:({base:e,locales:t,...n},r)=>{var o;return{...n,...t[r],head:[...((o=t[r])==null?void 0:o.head)??[],...n.head]}}}),jt=(e={})=>e,Ti=e=>Bo(e)?e:`/${gi(e)}`;function $o(e){return yu()?(Cd(e),!0):!1}function bt(e){return typeof e=="function"?e():Jt(e)}const wi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Jg=Object.prototype.toString,e_=e=>Jg.call(e)==="[object Object]",Ns=()=>{};function rf(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const of=e=>e();function t_(e,t={}){let n,r,o=Ns;const s=a=>{clearTimeout(a),o(),o=Ns};return a=>{const l=bt(e),u=bt(t.maxWait);return n&&s(n),l<=0||u!==void 0&&u<=0?(r&&(s(r),r=null),Promise.resolve(a())):new Promise((f,c)=>{o=t.rejectOnCancel?c:f,u&&!r&&(r=setTimeout(()=>{n&&s(n),r=null,f(a())},u)),n=setTimeout(()=>{r&&s(r),r=null,f(a())},l)})}}function n_(e=of){const t=ce(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Ro(t),pause:n,resume:r,eventFilter:o}}function r_(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function o_(e){return $r()}function s_(e,t=200,n={}){return rf(t_(t,n),e)}function i_(e,t,n={}){const{eventFilter:r=of,...o}=n;return Be(e,rf(r,t),o)}function a_(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:a,isActive:l}=n_(r);return{stop:i_(e,t,{...o,eventFilter:s}),pause:i,resume:a,isActive:l}}function ki(e,t=!0,n){o_()?qe(e,n):t?e():Jn(e)}function l_(e,t,n={}){const{immediate:r=!0}=n,o=ce(!1);let s=null;function i(){s&&(clearTimeout(s),s=null)}function a(){o.value=!1,i()}function l(...u){i(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=null,e(...u)},bt(t))}return r&&(o.value=!0,wi&&l()),$o(a),{isPending:Ro(o),start:l,stop:a}}function u_(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=Ve(e),s=ce(e);function i(a){if(arguments.length)return s.value=a,s.value;{const l=bt(n);return s.value=s.value===l?bt(r):l,s.value}}return o?i:[s,i]}const an=wi?window:void 0,sf=wi?window.navigator:void 0;function bn(e){var t;const n=bt(e);return(t=n==null?void 0:n.$el)!=null?t:n}function ct(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=an):[t,n,r,o]=e,!t)return Ns;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(f=>f()),s.length=0},a=(f,c,d,p)=>(f.addEventListener(c,d,p),()=>f.removeEventListener(c,d,p)),l=Be(()=>[bn(t),bt(o)],([f,c])=>{if(i(),!f)return;const d=e_(c)?{...c}:c;s.push(...n.flatMap(p=>r.map(_=>a(f,p,_,d))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return $o(u),u}function c_(){const e=ce(!1),t=$r();return t&&qe(()=>{e.value=!0},t),e}function Uo(e){const t=c_();return B(()=>(t.value,!!e()))}function Ci(e,t={}){const{window:n=an}=t,r=Uo(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const s=ce(!1),i=u=>{s.value=u.matches},a=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",i):o.removeListener(i))},l=_c(()=>{r.value&&(a(),o=n.matchMedia(bt(e)),"addEventListener"in o?o.addEventListener("change",i):o.addListener(i),s.value=o.matches)});return $o(()=>{l(),a(),o=void 0}),s}function Ja(e,t={}){const{controls:n=!1,navigator:r=sf}=t,o=Uo(()=>r&&"permissions"in r),s=xt(),i=typeof e=="string"?{name:e}:e,a=xt(),l=()=>{var f,c;a.value=(c=(f=s.value)==null?void 0:f.state)!=null?c:"prompt"};ct(s,"change",l);const u=r_(async()=>{if(o.value){if(!s.value)try{s.value=await r.permissions.query(i)}catch{s.value=void 0}finally{l()}if(n)return fe(s.value)}});return u(),n?{state:a,isSupported:o,query:u}:a}function f_(e={}){const{navigator:t=sf,read:n=!1,source:r,copiedDuring:o=1500,legacy:s=!1}=e,i=Uo(()=>t&&"clipboard"in t),a=Ja("clipboard-read"),l=Ja("clipboard-write"),u=B(()=>i.value||s),f=ce(""),c=ce(!1),d=l_(()=>c.value=!1,o);function p(){i.value&&b(a.value)?t.clipboard.readText().then(A=>{f.value=A}):f.value=y()}u.value&&n&&ct(["copy","cut"],p);async function _(A=bt(r)){u.value&&A!=null&&(i.value&&b(l.value)?await t.clipboard.writeText(A):v(A),f.value=A,c.value=!0,d.start())}function v(A){const m=document.createElement("textarea");m.value=A??"",m.style.position="absolute",m.style.opacity="0",document.body.appendChild(m),m.select(),document.execCommand("copy"),m.remove()}function y(){var A,m,E;return(E=(m=(A=document==null?void 0:document.getSelection)==null?void 0:A.call(document))==null?void 0:m.toString())!=null?E:""}function b(A){return A==="granted"||A==="prompt"}return{isSupported:u,text:f,copied:c,copy:_}}const no=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ro="__vueuse_ssr_handlers__",d_=p_();function p_(){return ro in no||(no[ro]=no[ro]||{}),no[ro]}function h_(e,t){return d_[e]||t}function m_(e){return Ci("(prefers-color-scheme: dark)",e)}function g_(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const __={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},el="vueuse-storage";function Oi(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:f,window:c=an,eventFilter:d,onError:p=C=>{console.error(C)},initOnMounted:_}=r,v=(f?xt:ce)(typeof t=="function"?t():t);if(!n)try{n=h_("getDefaultStorage",()=>{var C;return(C=an)==null?void 0:C.localStorage})()}catch(C){p(C)}if(!n)return v;const y=bt(t),b=g_(y),A=(o=r.serializer)!=null?o:__[b],{pause:m,resume:E}=a_(v,()=>j(v.value),{flush:s,deep:i,eventFilter:d});c&&a&&ki(()=>{n instanceof Storage?ct(c,"storage",T):ct(c,el,$),_&&T()}),_||T();function N(C,H){if(c){const w={key:e,oldValue:C,newValue:H,storageArea:n};c.dispatchEvent(n instanceof Storage?new StorageEvent("storage",w):new CustomEvent(el,{detail:w}))}}function j(C){try{const H=n.getItem(e);if(C==null)N(H,null),n.removeItem(e);else{const w=A.write(C);H!==w&&(n.setItem(e,w),N(H,w))}}catch(H){p(H)}}function M(C){const H=C?C.newValue:n.getItem(e);if(H==null)return l&&y!=null&&n.setItem(e,A.write(y)),y;if(!C&&u){const w=A.read(H);return typeof u=="function"?u(w,y):b==="object"&&!Array.isArray(w)?{...y,...w}:w}else return typeof H!="string"?H:A.read(H)}function T(C){if(!(C&&C.storageArea!==n)){if(C&&C.key==null){v.value=y;return}if(!(C&&C.key!==e)){m();try{(C==null?void 0:C.newValue)!==A.write(v.value)&&(v.value=M(C))}catch(H){p(H)}finally{C?Jn(E):E()}}}}function $(C){T(C.detail)}return v}function v_(e,t,n={}){const{window:r=an,...o}=n;let s;const i=Uo(()=>r&&"ResizeObserver"in r),a=()=>{s&&(s.disconnect(),s=void 0)},l=B(()=>{const c=bt(e);return Array.isArray(c)?c.map(d=>bn(d)):[bn(c)]}),u=Be(l,c=>{if(a(),i.value&&r){s=new ResizeObserver(t);for(const d of c)d&&s.observe(d,o)}},{immediate:!0,flush:"post"}),f=()=>{a(),u()};return $o(f),{isSupported:i,stop:f}}function y_(e,t={width:0,height:0},n={}){const{window:r=an,box:o="content-box"}=n,s=B(()=>{var c,d;return(d=(c=bn(e))==null?void 0:c.namespaceURI)==null?void 0:d.includes("svg")}),i=ce(t.width),a=ce(t.height),{stop:l}=v_(e,([c])=>{const d=o==="border-box"?c.borderBoxSize:o==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(r&&s.value){const p=bn(e);if(p){const _=p.getBoundingClientRect();i.value=_.width,a.value=_.height}}else if(d){const p=Array.isArray(d)?d:[d];i.value=p.reduce((_,{inlineSize:v})=>_+v,0),a.value=p.reduce((_,{blockSize:v})=>_+v,0)}else i.value=c.contentRect.width,a.value=c.contentRect.height},n);ki(()=>{const c=bn(e);c&&(i.value="offsetWidth"in c?c.offsetWidth:t.width,a.value="offsetHeight"in c?c.offsetHeight:t.height)});const u=Be(()=>bn(e),c=>{i.value=c?t.width:0,a.value=c?t.height:0});function f(){l(),u()}return{width:i,height:a,stop:f}}function b_(e={}){const{window:t=an,behavior:n="auto"}=e;if(!t)return{x:ce(0),y:ce(0)};const r=ce(t.scrollX),o=ce(t.scrollY),s=B({get(){return r.value},set(a){scrollTo({left:a,behavior:n})}}),i=B({get(){return o.value},set(a){scrollTo({top:a,behavior:n})}});return ct(t,"scroll",()=>{r.value=t.scrollX,o.value=t.scrollY},{capture:!1,passive:!0}),{x:s,y:i}}function E_(e={}){const{window:t=an,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:s=!0,type:i="inner"}=e,a=ce(n),l=ce(r),u=()=>{t&&(i==="outer"?(a.value=t.outerWidth,l.value=t.outerHeight):s?(a.value=t.innerWidth,l.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(u(),ki(u),ct("resize",u,{passive:!0}),o){const f=Ci("(orientation: portrait)");Be(f,()=>u())}return{width:a,height:l}}const tl=async(e,t)=>{const{path:n,query:r}=e.currentRoute.value,{scrollBehavior:o}=e.options;e.options.scrollBehavior=void 0,await e.replace({path:n,query:r,hash:t}),e.options.scrollBehavior=o},S_=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=cn();ct("scroll",s_(()=>{var _,v;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)c.some(b=>b.hash===y.hash));for(let y=0;y=(((_=b.parentElement)==null?void 0:_.offsetTop)??0)-r,E=!A||i<(((v=A.parentElement)==null?void 0:v.offsetTop)??0)-r;if(!(m&&E))continue;const j=decodeURIComponent(o.currentRoute.value.hash),M=decodeURIComponent(b.hash);if(j===M)return;if(f){for(let T=y+1;T{if(t===!1)return[];const[n,r]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t,o=e.filter(i=>i.level>=n&&i.level<=r),s=[];e:for(let i=0;i=0;l--){const u=o[l];if(u.level{let n;if(t.length){const r=e.cloneNode(!0);r.querySelectorAll(t.join(",")).forEach(o=>{o.remove()}),n=r.textContent||""}else n=e.textContent||"";return n.trim()},I_=({selector:e=[...new Array(6)].map((r,o)=>`[vp-content] h${o+1}`).join(","),levels:t=2,ignore:n=[]}={})=>{const r=Array.from(document.querySelectorAll(e)).filter(o=>o.id&&o.hasChildNodes()).map(o=>{const s=Number(o.tagName[1]);return{element:o,title:P_(o,n),link:`#${o.id}`,slug:o.id,level:s}});return x_(r,t)},af=(e,t)=>{var r;const n=(r=$r())==null?void 0:r.appContext.components;return n?e in n||rt(e)in n||Br(rt(e))in n:!1},lf=e=>new Promise(t=>{setTimeout(t,e)}),uf=e=>{const t=On();return B(()=>e[t.value]??{})},R_=()=>{const e=Gg();return B(()=>Object.keys(e.value))},L_=e=>typeof e<"u",cf=(e,t)=>vt(e)&&e.startsWith(t),{keys:D_}=Object,ff=e=>cf(e,"/");var V_={"/zh/":{backToTop:"返回顶部"},"/":{backToTop:"Back to top"}};const N_=me({name:"BackToTop",setup(){const e=Et(),t=uf(V_),n=xt(),{height:r}=y_(n),{height:o}=E_(),{y:s}=b_(),i=B(()=>e.value.backToTop!==!1&&s.value>100),a=B(()=>s.value/(r.value-o.value)*100);return qe(()=>{n.value=document.body}),()=>he(mi,{name:"back-to-top"},()=>i.value?he("button",{type:"button",class:"vp-back-to-top-button","aria-label":t.value.backToTop,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[he("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":a.value},he("svg",he("circle",{cx:"26",cy:"26",r:"24",fill:"none",stroke:"currentColor","stroke-width":"4","stroke-dasharray":`${Math.PI*a.value*.48} ${Math.PI*(100-a.value)*.48}`}))),he("div",{class:"back-to-top-icon"})]):null)}}),M_=jt({rootComponents:[N_]}),B_=Object.freeze(Object.defineProperty({__proto__:null,default:M_},Symbol.toStringTag,{value:"Module"})),F_=/language-(shellscript|shell|bash|sh|zsh)/,H_=({delay:e=500,duration:t=2e3,locales:n,selector:r,showInMobile:o,ignoreSelector:s=[],transform:i})=>{const a=Ci("(max-width: 419px)"),l=B(()=>!a.value||o),u=uf(n),f=er(),c=y=>{var A;if(y.hasAttribute("copy-code"))return;const b=document.createElement("button");b.type="button",b.classList.add("vp-copy-code-button"),b.setAttribute("aria-label",u.value.copy),b.setAttribute("data-copied",u.value.copied),(A=y.parentElement)==null||A.insertBefore(b,y),y.setAttribute("copy-code","")};Be(()=>[f.value.path,l.value],async()=>{document.body.classList.toggle("no-copy-code",!l.value),l.value&&(await Jn(),await lf(e),document.querySelectorAll(r.join(",")).forEach(c))},{immediate:!0});const{copy:p}=f_({legacy:!0}),_=new WeakMap,v=async(y,b,A)=>{const m=b.cloneNode(!0);s.length&&m.querySelectorAll(s.join(",")).forEach(j=>{j.remove()}),i&&i(m);let E=m.textContent||"";if(F_.test(y.className)&&(E=E.replace(/^ *(\$|>) /gm,"")),await p(E),t<=0)return;A.classList.add("copied"),clearTimeout(_.get(A));const N=setTimeout(()=>{A.classList.remove("copied"),A.blur(),_.delete(A)},t);_.set(A,N)};ct("click",y=>{const b=y.target;if(l.value&&b.matches('div[class*="language-"] > button.vp-copy-code-button')){const A=b.parentElement,m=b.nextElementSibling;if(!A||!m)return;v(A,m,b)}})};var z_=[],$_={"/zh/":{copy:"复制代码",copied:"已复制"},"/":{copy:"Copy code",copied:"Copied"}},U_=['[vp-content] div[class*="language-"] pre'];const j_=jt({setup:()=>{H_({selector:U_,ignoreSelector:z_,locales:$_,duration:2e3,delay:500,showInMobile:!1})}}),K_=Object.freeze(Object.defineProperty({__proto__:null,default:j_},Symbol.toStringTag,{value:"Module"})),W_=jt({setup(){ct("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})}}),G_=Object.freeze(Object.defineProperty({__proto__:null,default:W_},Symbol.toStringTag,{value:"Module"}));/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var _n=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},r=window.Promise||function(w){function L(){}w(L,L)},o=function(w){var L=w.target;if(L===$){_();return}m.indexOf(L)!==-1&&v({target:L})},s=function(){if(!(N||!T.original)){var w=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(j-w)>M.scrollOffset&&setTimeout(_,150)}},i=function(w){var L=w.key||w.keyCode;(L==="Escape"||L==="Esc"||L===27)&&_()},a=function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},L=w;if(w.background&&($.style.background=w.background),w.container&&w.container instanceof Object&&(L.container=_n({},M.container,w.container)),w.template){var Q=fo(w.template)?w.template:document.querySelector(w.template);L.template=Q}return M=_n({},M,L),m.forEach(function(te){te.dispatchEvent(In("medium-zoom:update",{detail:{zoom:C}}))}),C},l=function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e(_n({},M,w))},u=function(){for(var w=arguments.length,L=Array(w),Q=0;Q0?L.reduce(function(P,D){return[].concat(P,rl(D))},[]):m;return te.forEach(function(P){P.classList.remove("medium-zoom-image"),P.dispatchEvent(In("medium-zoom:detach",{detail:{zoom:C}}))}),m=m.filter(function(P){return te.indexOf(P)===-1}),C},c=function(w,L){var Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return m.forEach(function(te){te.addEventListener("medium-zoom:"+w,L,Q)}),E.push({type:"medium-zoom:"+w,listener:L,options:Q}),C},d=function(w,L){var Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return m.forEach(function(te){te.removeEventListener("medium-zoom:"+w,L,Q)}),E=E.filter(function(te){return!(te.type==="medium-zoom:"+w&&te.listener.toString()===L.toString())}),C},p=function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},L=w.target,Q=function(){var P={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},D=void 0,K=void 0;if(M.container)if(M.container instanceof Object)P=_n({},P,M.container),D=P.width-P.left-P.right-M.margin*2,K=P.height-P.top-P.bottom-M.margin*2;else{var ue=fo(M.container)?M.container:document.querySelector(M.container),be=ue.getBoundingClientRect(),xe=be.width,Ee=be.height,Qe=be.left,mt=be.top;P=_n({},P,{width:xe,height:Ee,left:Qe,top:mt})}D=D||P.width-M.margin*2,K=K||P.height-M.margin*2;var Je=T.zoomedHd||T.original,et=nl(Je)?D:Je.naturalWidth||D,O=nl(Je)?K:Je.naturalHeight||K,G=Je.getBoundingClientRect(),U=G.top,J=G.left,de=G.width,Se=G.height,h=Math.min(Math.max(de,et),D)/de,g=Math.min(Math.max(Se,O),K)/Se,S=Math.min(h,g),x=(-J+(D-de)/2+M.margin+P.left)/S,k=(-U+(K-Se)/2+M.margin+P.top)/S,R="scale("+S+") translate3d("+x+"px, "+k+"px, 0)";T.zoomed.style.transform=R,T.zoomedHd&&(T.zoomedHd.style.transform=R)};return new r(function(te){if(L&&m.indexOf(L)===-1){te(C);return}var P=function xe(){N=!1,T.zoomed.removeEventListener("transitionend",xe),T.original.dispatchEvent(In("medium-zoom:opened",{detail:{zoom:C}})),te(C)};if(T.zoomed){te(C);return}if(L)T.original=L;else if(m.length>0){var D=m;T.original=D[0]}else{te(C);return}if(T.original.dispatchEvent(In("medium-zoom:open",{detail:{zoom:C}})),j=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,N=!0,T.zoomed=X_(T.original),document.body.appendChild($),M.template){var K=fo(M.template)?M.template:document.querySelector(M.template);T.template=document.createElement("div"),T.template.appendChild(K.content.cloneNode(!0)),document.body.appendChild(T.template)}if(T.original.parentElement&&T.original.parentElement.tagName==="PICTURE"&&T.original.currentSrc&&(T.zoomed.src=T.original.currentSrc),document.body.appendChild(T.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),T.original.classList.add("medium-zoom-image--hidden"),T.zoomed.classList.add("medium-zoom-image--opened"),T.zoomed.addEventListener("click",_),T.zoomed.addEventListener("transitionend",P),T.original.getAttribute("data-zoom-src")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("srcset"),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.removeAttribute("loading"),T.zoomedHd.src=T.zoomed.getAttribute("data-zoom-src"),T.zoomedHd.onerror=function(){clearInterval(ue),console.warn("Unable to reach the zoom image target "+T.zoomedHd.src),T.zoomedHd=null,Q()};var ue=setInterval(function(){T.zoomedHd.complete&&(clearInterval(ue),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",_),document.body.appendChild(T.zoomedHd),Q())},10)}else if(T.original.hasAttribute("srcset")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.removeAttribute("loading");var be=T.zoomedHd.addEventListener("load",function(){T.zoomedHd.removeEventListener("load",be),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",_),document.body.appendChild(T.zoomedHd),Q()})}else Q()})},_=function(){return new r(function(w){if(N||!T.original){w(C);return}var L=function Q(){T.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(T.zoomed),T.zoomedHd&&document.body.removeChild(T.zoomedHd),document.body.removeChild($),T.zoomed.classList.remove("medium-zoom-image--opened"),T.template&&document.body.removeChild(T.template),N=!1,T.zoomed.removeEventListener("transitionend",Q),T.original.dispatchEvent(In("medium-zoom:closed",{detail:{zoom:C}})),T.original=null,T.zoomed=null,T.zoomedHd=null,T.template=null,w(C)};N=!0,document.body.classList.remove("medium-zoom--opened"),T.zoomed.style.transform="",T.zoomedHd&&(T.zoomedHd.style.transform=""),T.template&&(T.template.style.transition="opacity 150ms",T.template.style.opacity=0),T.original.dispatchEvent(In("medium-zoom:close",{detail:{zoom:C}})),T.zoomed.addEventListener("transitionend",L)})},v=function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},L=w.target;return T.original?_():p({target:L})},y=function(){return M},b=function(){return m},A=function(){return T.original},m=[],E=[],N=!1,j=0,M=n,T={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(t)==="[object Object]"?M=t:(t||typeof t=="string")&&u(t),M=_n({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},M);var $=Y_(M.background);document.addEventListener("click",o),document.addEventListener("keyup",i),document.addEventListener("scroll",s),window.addEventListener("resize",_);var C={open:p,close:_,toggle:v,update:a,clone:l,attach:u,detach:f,on:c,off:d,getOptions:y,getImages:b,getZoomedImage:A};return C};function Q_(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(typeof document>"u")){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",n==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var J_=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";Q_(J_);const ev=Symbol("mediumZoom");var tv={};const nv="[vp-content] > img, [vp-content] :not(a) > img",rv=tv,ov=300,sv=jt({enhance({app:e,router:t}){const n=Z_(rv);n.refresh=(r=nv)=>{n.detach(),n.attach(r)},e.provide(ev,n),t.afterEach(()=>{lf(ov).then(()=>{n.refresh()})})}}),iv=Object.freeze(Object.defineProperty({__proto__:null,default:sv},Symbol.toStringTag,{value:"Module"}));/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const ol=(e,t)=>{e.classList.add(t)},sl=(e,t)=>{e.classList.remove(t)},av=e=>{var t;(t=e==null?void 0:e.parentNode)==null||t.removeChild(e)},ps=(e,t,n)=>en?n:e,il=e=>(-1+e)*100,lv=(()=>{const e=[],t=()=>{const n=e.shift();n&&n(t)};return n=>{e.push(n),e.length===1&&t()}})(),uv=e=>e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(t,n)=>n.toUpperCase()),so=(()=>{const e=["Webkit","O","Moz","ms"],t={},n=s=>{const{style:i}=document.body;if(s in i)return s;const a=s.charAt(0).toUpperCase()+s.slice(1);let l=e.length;for(;l--;){const u=`${e[l]}${a}`;if(u in i)return u}return s},r=s=>{const i=uv(s);return t[i]??(t[i]=n(i))},o=(s,i,a)=>{s.style[r(i)]=a};return(s,i)=>{for(const a in i){const l=i[a];Object.hasOwn(i,a)&&L_(l)&&o(s,a,l)}}})(),Lt={minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},Ie={percent:null,isRendered:()=>!!document.getElementById("nprogress"),set:e=>{const{speed:t,easing:n}=Lt,r=Ie.isStarted(),o=ps(e,Lt.minimum,1);Ie.percent=o===1?null:o;const s=Ie.render(!r),i=s.querySelector(Lt.barSelector);return s.offsetWidth,lv(a=>{so(i,{transform:`translate3d(${il(o)}%,0,0)`,transition:`all ${t}ms ${n}`}),o===1?(so(s,{transition:"none",opacity:"1"}),s.offsetWidth,setTimeout(()=>{so(s,{transition:`all ${t}ms linear`,opacity:"0"}),setTimeout(()=>{Ie.remove(),a()},t)},t)):setTimeout(()=>{a()},t)}),Ie},isStarted:()=>typeof Ie.percent=="number",start:()=>{Ie.percent||Ie.set(0);const e=()=>{setTimeout(()=>{Ie.percent&&(Ie.trickle(),e())},Lt.trickleSpeed)};return e(),Ie},done:e=>!e&&!Ie.percent?Ie:Ie.increase(.3+.5*Math.random()).set(1),increase:e=>{let{percent:t}=Ie;return t?(t=ps(t+(typeof e=="number"?e:(1-t)*ps(Math.random()*t,.1,.95)),0,.994),Ie.set(t)):Ie.start()},trickle:()=>Ie.increase(Math.random()*Lt.trickleRate),render:e=>{if(Ie.isRendered())return document.getElementById("nprogress");ol(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=Lt.template;const n=t.querySelector(Lt.barSelector),r=document.querySelector(Lt.parent),o=e?"-100":il(Ie.percent??0);return so(n,{transition:"all 0 linear",transform:`translate3d(${o}%,0,0)`}),r&&(r!==document.body&&ol(r,"nprogress-custom-parent"),r.appendChild(t)),t},remove:()=>{sl(document.documentElement,"nprogress-busy"),sl(document.querySelector(Lt.parent),"nprogress-custom-parent"),av(document.getElementById("nprogress"))}},cv=()=>{qe(()=>{const e=cn(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Ie.start()}),e.afterEach(n=>{t.add(n.path),Ie.done()})})},fv=jt({setup(){cv()}}),dv=Object.freeze(Object.defineProperty({__proto__:null,default:fv},Symbol.toStringTag,{value:"Module"})),pv="VUEPRESS_CODE_TAB_STORE",io=Oi(pv,{}),hv=me({name:"CodeTabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=ce(e.active),r=xt([]),o=()=>{e.tabId&&(io.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},a=(u,f)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=f):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),e.tabId&&(io.value[e.tabId]=e.data[n.value].id)},l=()=>{if(e.tabId){const u=e.data.findIndex(({id:f})=>io.value[e.tabId]===f);if(u!==-1)return u}return e.active};return qe(()=>{n.value=l(),Be(()=>io.value[e.tabId],(u,f)=>{if(e.tabId&&u!==f){const c=e.data.findIndex(({id:d})=>d===u);c!==-1&&(n.value=c)}})}),()=>e.data.length?he("div",{class:"vp-code-tabs"},[he("div",{class:"vp-code-tabs-nav",role:"tablist"},e.data.map(({id:u},f)=>{const c=f===n.value;return he("button",{type:"button",ref:d=>{d&&(r.value[f]=d)},class:["vp-code-tab-nav",{active:c}],role:"tab","aria-controls":`codetab-${e.id}-${f}`,"aria-selected":c,onClick:()=>{n.value=f,o()},onKeydown:d=>{a(d,f)}},t[`title${f}`]({value:u,isActive:c}))})),e.data.map(({id:u},f)=>{const c=f===n.value;return he("div",{class:["vp-code-tab",{active:c}],id:`codetab-${e.id}-${f}`,role:"tabpanel","aria-expanded":c},[he("div",{class:"vp-code-tab-title"},t[`title${f}`]({value:u,isActive:c})),t[`tab${f}`]({value:u,isActive:c})])})]):null}}),mv="VUEPRESS_TAB_STORE",hs=Oi(mv,{}),gv=me({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=ce(e.active),r=xt([]),o=()=>{e.tabId&&(hs.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},a=(u,f)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=f):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),o()},l=()=>{if(e.tabId){const u=e.data.findIndex(({id:f})=>hs.value[e.tabId]===f);if(u!==-1)return u}return e.active};return qe(()=>{n.value=l(),Be(()=>hs.value[e.tabId],(u,f)=>{if(e.tabId&&u!==f){const c=e.data.findIndex(({id:d})=>d===u);c!==-1&&(n.value=c)}})}),()=>e.data.length?he("div",{class:"vp-tabs"},[he("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:u},f)=>{const c=f===n.value;return he("button",{type:"button",ref:d=>{d&&(r.value[f]=d)},class:["vp-tab-nav",{active:c}],role:"tab","aria-controls":`tab-${e.id}-${f}`,"aria-selected":c,onClick:()=>{n.value=f,o()},onKeydown:d=>{a(d,f)}},t[`title${f}`]({value:u,isActive:c}))})),e.data.map(({id:u},f)=>{const c=f===n.value;return he("div",{class:["vp-tab",{active:c}],id:`tab-${e.id}-${f}`,role:"tabpanel","aria-expanded":c},[he("div",{class:"vp-tab-title"},t[`title${f}`]({value:u,isActive:c})),t[`tab${f}`]({value:u,isActive:c})])})]):null}}),_v={enhance:({app:e})=>{e.component("CodeTabs",hv),e.component("Tabs",gv)}},vv=Object.freeze(Object.defineProperty({__proto__:null,default:_v},Symbol.toStringTag,{value:"Module"}));var yv=Object.create,df=Object.defineProperty,bv=Object.getOwnPropertyDescriptor,xi=Object.getOwnPropertyNames,Ev=Object.getPrototypeOf,Sv=Object.prototype.hasOwnProperty,Av=(e,t)=>function(){return e&&(t=(0,e[xi(e)[0]])(e=0)),t},Tv=(e,t)=>function(){return t||(0,e[xi(e)[0]])((t={exports:{}}).exports,t),t.exports},wv=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xi(t))!Sv.call(e,o)&&o!==n&&df(e,o,{get:()=>t[o],enumerable:!(r=bv(t,o))||r.enumerable});return e},kv=(e,t,n)=>(n=e!=null?yv(Ev(e)):{},wv(df(n,"default",{value:e,enumerable:!0}),e)),Wr=Av({"../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.5__@swc+core@1.5.29_jiti@1.21.6__ldnw4a7r4ccknnz6q542psuydy/node_modules/tsup/assets/esm_shims.js"(){}}),Cv=Tv({"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js"(e,t){Wr(),t.exports=r;function n(s){return s instanceof Buffer?Buffer.from(s):new s.constructor(s.buffer.slice(),s.byteOffset,s.length)}function r(s){if(s=s||{},s.circles)return o(s);const i=new Map;if(i.set(Date,c=>new Date(c)),i.set(Map,(c,d)=>new Map(l(Array.from(c),d))),i.set(Set,(c,d)=>new Set(l(Array.from(c),d))),s.constructorHandlers)for(const c of s.constructorHandlers)i.set(c[0],c[1]);let a=null;return s.proto?f:u;function l(c,d){const p=Object.keys(c),_=new Array(p.length);for(let v=0;vnew Date(p)),l.set(Map,(p,_)=>new Map(f(Array.from(p),_))),l.set(Set,(p,_)=>new Set(f(Array.from(p),_))),s.constructorHandlers)for(const p of s.constructorHandlers)l.set(p[0],p[1]);let u=null;return s.proto?d:c;function f(p,_){const v=Object.keys(p),y=new Array(v.length);for(let b=0;b(i=Vv(e,u,f),i.finally(()=>{if(i=null,n.trailing&&a&&!o){const c=l(u,a);return a=null,c}}),i);return function(...u){return i?(n.trailing&&(a=u),i):new Promise(f=>{const c=!o&&n.leading;clearTimeout(o),o=setTimeout(()=>{o=null;const d=n.leading?r:l(this,u);for(const p of s)p(d);s=[]},t),c?(r=l(this,u),f(r)):s.push(f)})}}async function Vv(e,t,n){return await e.apply(t,n)}function Ms(e,t={},n){for(const r in e){const o=e[r],s=n?`${n}:${r}`:r;typeof o=="object"&&o!==null?Ms(o,t,s):typeof o=="function"&&(t[s]=o)}return t}const Nv={run:e=>e()},Mv=()=>Nv,pf=typeof console.createTask<"u"?console.createTask:Mv;function Bv(e,t){const n=t.shift(),r=pf(n);return e.reduce((o,s)=>o.then(()=>r.run(()=>s(...t))),Promise.resolve())}function Fv(e,t){const n=t.shift(),r=pf(n);return Promise.all(e.map(o=>r.run(()=>o(...t))))}function ms(e,t){for(const n of[...e])n(t)}class Hv{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const o=t;let s;for(;this._deprecatedHooks[t];)s=this._deprecatedHooks[t],t=s.to;if(s&&!r.allowDeprecated){let i=s.message;i||(i=`${o} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,o=(...s)=>(typeof r=="function"&&r(),r=void 0,o=void 0,n(...s));return r=this.hook(t,o),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const o of r)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=Ms(t),r=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{for(const o of r.splice(0,r.length))o()}}removeHooks(t){const n=Ms(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(Bv,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(Fv,t,...n)}callHookWith(t,n,...r){const o=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&ms(this._before,o);const s=t(n in this._hooks?[...this._hooks[n]]:[],r);return s instanceof Promise?s.finally(()=>{this._after&&o&&ms(this._after,o)}):(this._after&&o&&ms(this._after,o),s)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function hf(){return new Hv}var zv=Object.create,mf=Object.defineProperty,$v=Object.getOwnPropertyDescriptor,Pi=Object.getOwnPropertyNames,Uv=Object.getPrototypeOf,jv=Object.prototype.hasOwnProperty,Kv=(e,t)=>function(){return e&&(t=(0,e[Pi(e)[0]])(e=0)),t},gf=(e,t)=>function(){return t||(0,e[Pi(e)[0]])((t={exports:{}}).exports,t),t.exports},Wv=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Pi(t))!jv.call(e,o)&&o!==n&&mf(e,o,{get:()=>t[o],enumerable:!(r=$v(t,o))||r.enumerable});return e},Gv=(e,t,n)=>(n=e!=null?zv(Uv(e)):{},Wv(mf(n,"default",{value:e,enumerable:!0}),e)),I=Kv({"../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.5__@swc+core@1.5.29_jiti@1.21.6__ldnw4a7r4ccknnz6q542psuydy/node_modules/tsup/assets/esm_shims.js"(){}}),qv=gf({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(e,t){I(),function(n){var r={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"Ae",Å:"A",Æ:"AE",Ç:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"Oe",Ő:"O",Ø:"O",Ù:"U",Ú:"U",Û:"U",Ü:"Ue",Ű:"U",Ý:"Y",Þ:"TH",ß:"ss",à:"a",á:"a",â:"a",ã:"a",ä:"ae",å:"a",æ:"ae",ç:"c",è:"e",é:"e",ê:"e",ë:"e",ì:"i",í:"i",î:"i",ï:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"oe",ő:"o",ø:"o",ù:"u",ú:"u",û:"u",ü:"ue",ű:"u",ý:"y",þ:"th",ÿ:"y","ẞ":"SS",ا:"a",أ:"a",إ:"i",آ:"aa",ؤ:"u",ئ:"e",ء:"a",ب:"b",ت:"t",ث:"th",ج:"j",ح:"h",خ:"kh",د:"d",ذ:"th",ر:"r",ز:"z",س:"s",ش:"sh",ص:"s",ض:"dh",ط:"t",ظ:"z",ع:"a",غ:"gh",ف:"f",ق:"q",ك:"k",ل:"l",م:"m",ن:"n",ه:"h",و:"w",ي:"y",ى:"a",ة:"h",ﻻ:"la",ﻷ:"laa",ﻹ:"lai",ﻵ:"laa",گ:"g",چ:"ch",پ:"p",ژ:"zh",ک:"k",ی:"y","َ":"a","ً":"an","ِ":"e","ٍ":"en","ُ":"u","ٌ":"on","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9",က:"k",ခ:"kh",ဂ:"g",ဃ:"ga",င:"ng",စ:"s",ဆ:"sa",ဇ:"z","စျ":"za",ည:"ny",ဋ:"t",ဌ:"ta",ဍ:"d",ဎ:"da",ဏ:"na",တ:"t",ထ:"ta",ဒ:"d",ဓ:"da",န:"n",ပ:"p",ဖ:"pa",ဗ:"b",ဘ:"ba",မ:"m",ယ:"y",ရ:"ya",လ:"l",ဝ:"w",သ:"th",ဟ:"h",ဠ:"la",အ:"a","ြ":"y","ျ":"ya","ွ":"w","ြွ":"yw","ျွ":"ywa","ှ":"h",ဧ:"e","၏":"-e",ဣ:"i",ဤ:"-i",ဉ:"u",ဦ:"-u",ဩ:"aw","သြော":"aw",ဪ:"aw","၀":"0","၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","္":"","့":"","း":"",č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z",ހ:"h",ށ:"sh",ނ:"n",ރ:"r",ބ:"b",ޅ:"lh",ކ:"k",އ:"a",ވ:"v",މ:"m",ފ:"f",ދ:"dh",ތ:"th",ލ:"l",ގ:"g",ޏ:"gn",ސ:"s",ޑ:"d",ޒ:"z",ޓ:"t",ޔ:"y",ޕ:"p",ޖ:"j",ޗ:"ch",ޘ:"tt",ޙ:"hh",ޚ:"kh",ޛ:"th",ޜ:"z",ޝ:"sh",ޞ:"s",ޟ:"d",ޠ:"t",ޡ:"z",ޢ:"a",ޣ:"gh",ޤ:"q",ޥ:"w","ަ":"a","ާ":"aa","ި":"i","ީ":"ee","ު":"u","ޫ":"oo","ެ":"e","ޭ":"ey","ޮ":"o","ޯ":"oa","ް":"",ა:"a",ბ:"b",გ:"g",დ:"d",ე:"e",ვ:"v",ზ:"z",თ:"t",ი:"i",კ:"k",ლ:"l",მ:"m",ნ:"n",ო:"o",პ:"p",ჟ:"zh",რ:"r",ს:"s",ტ:"t",უ:"u",ფ:"p",ქ:"k",ღ:"gh",ყ:"q",შ:"sh",ჩ:"ch",ც:"ts",ძ:"dz",წ:"ts",ჭ:"ch",ხ:"kh",ჯ:"j",ჰ:"h",α:"a",β:"v",γ:"g",δ:"d",ε:"e",ζ:"z",η:"i",θ:"th",ι:"i",κ:"k",λ:"l",μ:"m",ν:"n",ξ:"ks",ο:"o",π:"p",ρ:"r",σ:"s",τ:"t",υ:"y",φ:"f",χ:"x",ψ:"ps",ω:"o",ά:"a",έ:"e",ί:"i",ό:"o",ύ:"y",ή:"i",ώ:"o",ς:"s",ϊ:"i",ΰ:"y",ϋ:"y",ΐ:"i",Α:"A",Β:"B",Γ:"G",Δ:"D",Ε:"E",Ζ:"Z",Η:"I",Θ:"TH",Ι:"I",Κ:"K",Λ:"L",Μ:"M",Ν:"N",Ξ:"KS",Ο:"O",Π:"P",Ρ:"R",Σ:"S",Τ:"T",Υ:"Y",Φ:"F",Χ:"X",Ψ:"PS",Ω:"O",Ά:"A",Έ:"E",Ί:"I",Ό:"O",Ύ:"Y",Ή:"I",Ώ:"O",Ϊ:"I",Ϋ:"Y",ā:"a",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",ū:"u",Ā:"A",Ē:"E",Ģ:"G",Ī:"I",Ķ:"k",Ļ:"L",Ņ:"N",Ū:"U",Ќ:"Kj",ќ:"kj",Љ:"Lj",љ:"lj",Њ:"Nj",њ:"nj",Тс:"Ts",тс:"ts",ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"E",Ł:"L",Ń:"N",Ś:"S",Ź:"Z",Ż:"Z",Є:"Ye",І:"I",Ї:"Yi",Ґ:"G",є:"ye",і:"i",ї:"yi",ґ:"g",ă:"a",Ă:"A",ș:"s",Ș:"S",ț:"t",Ț:"T",ţ:"t",Ţ:"T",а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"yo",ж:"zh",з:"z",и:"i",й:"i",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"kh",ц:"c",ч:"ch",ш:"sh",щ:"sh",ъ:"",ы:"y",ь:"",э:"e",ю:"yu",я:"ya",А:"A",Б:"B",В:"V",Г:"G",Д:"D",Е:"E",Ё:"Yo",Ж:"Zh",З:"Z",И:"I",Й:"I",К:"K",Л:"L",М:"M",Н:"N",О:"O",П:"P",Р:"R",С:"S",Т:"T",У:"U",Ф:"F",Х:"Kh",Ц:"C",Ч:"Ch",Ш:"Sh",Щ:"Sh",Ъ:"",Ы:"Y",Ь:"",Э:"E",Ю:"Yu",Я:"Ya",ђ:"dj",ј:"j",ћ:"c",џ:"dz",Ђ:"Dj",Ј:"j",Ћ:"C",Џ:"Dz",ľ:"l",ĺ:"l",ŕ:"r",Ľ:"L",Ĺ:"L",Ŕ:"R",ş:"s",Ş:"S",ı:"i",İ:"I",ğ:"g",Ğ:"G",ả:"a",Ả:"A",ẳ:"a",Ẳ:"A",ẩ:"a",Ẩ:"A",đ:"d",Đ:"D",ẹ:"e",Ẹ:"E",ẽ:"e",Ẽ:"E",ẻ:"e",Ẻ:"E",ế:"e",Ế:"E",ề:"e",Ề:"E",ệ:"e",Ệ:"E",ễ:"e",Ễ:"E",ể:"e",Ể:"E",ỏ:"o",ọ:"o",Ọ:"o",ố:"o",Ố:"O",ồ:"o",Ồ:"O",ổ:"o",Ổ:"O",ộ:"o",Ộ:"O",ỗ:"o",Ỗ:"O",ơ:"o",Ơ:"O",ớ:"o",Ớ:"O",ờ:"o",Ờ:"O",ợ:"o",Ợ:"O",ỡ:"o",Ỡ:"O",Ở:"o",ở:"o",ị:"i",Ị:"I",ĩ:"i",Ĩ:"I",ỉ:"i",Ỉ:"i",ủ:"u",Ủ:"U",ụ:"u",Ụ:"U",ũ:"u",Ũ:"U",ư:"u",Ư:"U",ứ:"u",Ứ:"U",ừ:"u",Ừ:"U",ự:"u",Ự:"U",ữ:"u",Ữ:"U",ử:"u",Ử:"ư",ỷ:"y",Ỷ:"y",ỳ:"y",Ỳ:"Y",ỵ:"y",Ỵ:"Y",ỹ:"y",Ỹ:"Y",ạ:"a",Ạ:"A",ấ:"a",Ấ:"A",ầ:"a",Ầ:"A",ậ:"a",Ậ:"A",ẫ:"a",Ẫ:"A",ắ:"a",Ắ:"A",ằ:"a",Ằ:"A",ặ:"a",Ặ:"A",ẵ:"a",Ẵ:"A","⓪":"0","①":"1","②":"2","③":"3","④":"4","⑤":"5","⑥":"6","⑦":"7","⑧":"8","⑨":"9","⑩":"10","⑪":"11","⑫":"12","⑬":"13","⑭":"14","⑮":"15","⑯":"16","⑰":"17","⑱":"18","⑲":"18","⑳":"18","⓵":"1","⓶":"2","⓷":"3","⓸":"4","⓹":"5","⓺":"6","⓻":"7","⓼":"8","⓽":"9","⓾":"10","⓿":"0","⓫":"11","⓬":"12","⓭":"13","⓮":"14","⓯":"15","⓰":"16","⓱":"17","⓲":"18","⓳":"19","⓴":"20","Ⓐ":"A","Ⓑ":"B","Ⓒ":"C","Ⓓ":"D","Ⓔ":"E","Ⓕ":"F","Ⓖ":"G","Ⓗ":"H","Ⓘ":"I","Ⓙ":"J","Ⓚ":"K","Ⓛ":"L","Ⓜ":"M","Ⓝ":"N","Ⓞ":"O","Ⓟ":"P","Ⓠ":"Q","Ⓡ":"R","Ⓢ":"S","Ⓣ":"T","Ⓤ":"U","Ⓥ":"V","Ⓦ":"W","Ⓧ":"X","Ⓨ":"Y","Ⓩ":"Z","ⓐ":"a","ⓑ":"b","ⓒ":"c","ⓓ":"d","ⓔ":"e","ⓕ":"f","ⓖ":"g","ⓗ":"h","ⓘ":"i","ⓙ":"j","ⓚ":"k","ⓛ":"l","ⓜ":"m","ⓝ":"n","ⓞ":"o","ⓟ":"p","ⓠ":"q","ⓡ":"r","ⓢ":"s","ⓣ":"t","ⓤ":"u","ⓦ":"v","ⓥ":"w","ⓧ":"x","ⓨ":"y","ⓩ":"z","“":'"',"”":'"',"‘":"'","’":"'","∂":"d",ƒ:"f","™":"(TM)","©":"(C)",œ:"oe",Œ:"OE","®":"(R)","†":"+","℠":"(SM)","…":"...","˚":"o",º:"o",ª:"a","•":"*","၊":",","။":".",$:"USD","€":"EUR","₢":"BRN","₣":"FRF","£":"GBP","₤":"ITL","₦":"NGN","₧":"ESP","₩":"KRW","₪":"ILS","₫":"VND","₭":"LAK","₮":"MNT","₯":"GRD","₱":"ARS","₲":"PYG","₳":"ARA","₴":"UAH","₵":"GHS","¢":"cent","¥":"CNY",元:"CNY",円:"YEN","﷼":"IRR","₠":"EWE","฿":"THB","₨":"INR","₹":"INR","₰":"PF","₺":"TRY","؋":"AFN","₼":"AZN",лв:"BGN","៛":"KHR","₡":"CRC","₸":"KZT",ден:"MKD",zł:"PLN","₽":"RUB","₾":"GEL"},o=["်","ް"],s={"ာ":"a","ါ":"a","ေ":"e","ဲ":"e","ိ":"i","ီ":"i","ို":"o","ု":"u","ူ":"u","ေါင်":"aung","ော":"aw","ော်":"aw","ေါ":"aw","ေါ်":"aw","်":"်","က်":"et","ိုက်":"aik","ောက်":"auk","င်":"in","ိုင်":"aing","ောင်":"aung","စ်":"it","ည်":"i","တ်":"at","ိတ်":"eik","ုတ်":"ok","ွတ်":"ut","ေတ်":"it","ဒ်":"d","ိုဒ်":"ok","ုဒ်":"ait","န်":"an","ာန်":"an","ိန်":"ein","ုန်":"on","ွန်":"un","ပ်":"at","ိပ်":"eik","ုပ်":"ok","ွပ်":"ut","န်ုပ်":"nub","မ်":"an","ိမ်":"ein","ုမ်":"on","ွမ်":"un","ယ်":"e","ိုလ်":"ol","ဉ်":"in","ံ":"an","ိံ":"ein","ုံ":"on","ައް":"ah","ަށް":"ah"},i={en:{},az:{ç:"c",ə:"e",ğ:"g",ı:"i",ö:"o",ş:"s",ü:"u",Ç:"C",Ə:"E",Ğ:"G",İ:"I",Ö:"O",Ş:"S",Ü:"U"},cs:{č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z"},fi:{ä:"a",Ä:"A",ö:"o",Ö:"O"},hu:{ä:"a",Ä:"A",ö:"o",Ö:"O",ü:"u",Ü:"U",ű:"u",Ű:"U"},lt:{ą:"a",č:"c",ę:"e",ė:"e",į:"i",š:"s",ų:"u",ū:"u",ž:"z",Ą:"A",Č:"C",Ę:"E",Ė:"E",Į:"I",Š:"S",Ų:"U",Ū:"U"},lv:{ā:"a",č:"c",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",š:"s",ū:"u",ž:"z",Ā:"A",Č:"C",Ē:"E",Ģ:"G",Ī:"i",Ķ:"k",Ļ:"L",Ņ:"N",Š:"S",Ū:"u",Ž:"Z"},pl:{ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ó:"o",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"e",Ł:"L",Ń:"N",Ó:"O",Ś:"S",Ź:"Z",Ż:"Z"},sv:{ä:"a",Ä:"A",ö:"o",Ö:"O"},sk:{ä:"a",Ä:"A"},sr:{љ:"lj",њ:"nj",Љ:"Lj",Њ:"Nj",đ:"dj",Đ:"Dj"},tr:{Ü:"U",Ö:"O",ü:"u",ö:"o"}},a={ar:{"∆":"delta","∞":"la-nihaya","♥":"hob","&":"wa","|":"aw","<":"aqal-men",">":"akbar-men","∑":"majmou","¤":"omla"},az:{},ca:{"∆":"delta","∞":"infinit","♥":"amor","&":"i","|":"o","<":"menys que",">":"mes que","∑":"suma dels","¤":"moneda"},cs:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"nebo","<":"mensi nez",">":"vetsi nez","∑":"soucet","¤":"mena"},de:{"∆":"delta","∞":"unendlich","♥":"Liebe","&":"und","|":"oder","<":"kleiner als",">":"groesser als","∑":"Summe von","¤":"Waehrung"},dv:{"∆":"delta","∞":"kolunulaa","♥":"loabi","&":"aai","|":"noonee","<":"ah vure kuda",">":"ah vure bodu","∑":"jumula","¤":"faisaa"},en:{"∆":"delta","∞":"infinity","♥":"love","&":"and","|":"or","<":"less than",">":"greater than","∑":"sum","¤":"currency"},es:{"∆":"delta","∞":"infinito","♥":"amor","&":"y","|":"u","<":"menos que",">":"mas que","∑":"suma de los","¤":"moneda"},fa:{"∆":"delta","∞":"bi-nahayat","♥":"eshgh","&":"va","|":"ya","<":"kamtar-az",">":"bishtar-az","∑":"majmooe","¤":"vahed"},fi:{"∆":"delta","∞":"aarettomyys","♥":"rakkaus","&":"ja","|":"tai","<":"pienempi kuin",">":"suurempi kuin","∑":"summa","¤":"valuutta"},fr:{"∆":"delta","∞":"infiniment","♥":"Amour","&":"et","|":"ou","<":"moins que",">":"superieure a","∑":"somme des","¤":"monnaie"},ge:{"∆":"delta","∞":"usasruloba","♥":"siqvaruli","&":"da","|":"an","<":"naklebi",">":"meti","∑":"jami","¤":"valuta"},gr:{},hu:{"∆":"delta","∞":"vegtelen","♥":"szerelem","&":"es","|":"vagy","<":"kisebb mint",">":"nagyobb mint","∑":"szumma","¤":"penznem"},it:{"∆":"delta","∞":"infinito","♥":"amore","&":"e","|":"o","<":"minore di",">":"maggiore di","∑":"somma","¤":"moneta"},lt:{"∆":"delta","∞":"begalybe","♥":"meile","&":"ir","|":"ar","<":"maziau nei",">":"daugiau nei","∑":"suma","¤":"valiuta"},lv:{"∆":"delta","∞":"bezgaliba","♥":"milestiba","&":"un","|":"vai","<":"mazak neka",">":"lielaks neka","∑":"summa","¤":"valuta"},my:{"∆":"kwahkhyaet","∞":"asaonasme","♥":"akhyait","&":"nhin","|":"tho","<":"ngethaw",">":"kyithaw","∑":"paungld","¤":"ngwekye"},mk:{},nl:{"∆":"delta","∞":"oneindig","♥":"liefde","&":"en","|":"of","<":"kleiner dan",">":"groter dan","∑":"som","¤":"valuta"},pl:{"∆":"delta","∞":"nieskonczonosc","♥":"milosc","&":"i","|":"lub","<":"mniejsze niz",">":"wieksze niz","∑":"suma","¤":"waluta"},pt:{"∆":"delta","∞":"infinito","♥":"amor","&":"e","|":"ou","<":"menor que",">":"maior que","∑":"soma","¤":"moeda"},ro:{"∆":"delta","∞":"infinit","♥":"dragoste","&":"si","|":"sau","<":"mai mic ca",">":"mai mare ca","∑":"suma","¤":"valuta"},ru:{"∆":"delta","∞":"beskonechno","♥":"lubov","&":"i","|":"ili","<":"menshe",">":"bolshe","∑":"summa","¤":"valjuta"},sk:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"alebo","<":"menej ako",">":"viac ako","∑":"sucet","¤":"mena"},sr:{},tr:{"∆":"delta","∞":"sonsuzluk","♥":"ask","&":"ve","|":"veya","<":"kucuktur",">":"buyuktur","∑":"toplam","¤":"para birimi"},uk:{"∆":"delta","∞":"bezkinechnist","♥":"lubov","&":"i","|":"abo","<":"menshe",">":"bilshe","∑":"suma","¤":"valjuta"},vn:{"∆":"delta","∞":"vo cuc","♥":"yeu","&":"va","|":"hoac","<":"nho hon",">":"lon hon","∑":"tong","¤":"tien te"}},l=[";","?",":","@","&","=","+","$",",","/"].join(""),u=[";","?",":","@","&","=","+","$",","].join(""),f=[".","!","~","*","'","(",")"].join(""),c=function(y,b){var A="-",m="",E="",N=!0,j={},M,T,$,C,H,w,L,Q,te,P,D,K,ue,be,xe="";if(typeof y!="string")return"";if(typeof b=="string"&&(A=b),L=a.en,Q=i.en,typeof b=="object"){M=b.maintainCase||!1,j=b.custom&&typeof b.custom=="object"?b.custom:j,$=+b.truncate>1&&b.truncate||!1,C=b.uric||!1,H=b.uricNoSlash||!1,w=b.mark||!1,N=!(b.symbols===!1||b.lang===!1),A=b.separator||A,C&&(xe+=l),H&&(xe+=u),w&&(xe+=f),L=b.lang&&a[b.lang]&&N?a[b.lang]:N?a.en:{},Q=b.lang&&i[b.lang]?i[b.lang]:b.lang===!1||b.lang===!0?{}:i.en,b.titleCase&&typeof b.titleCase.length=="number"&&Array.prototype.toString.call(b.titleCase)?(b.titleCase.forEach(function(Ee){j[Ee+""]=Ee+""}),T=!0):T=!!b.titleCase,b.custom&&typeof b.custom.length=="number"&&Array.prototype.toString.call(b.custom)&&b.custom.forEach(function(Ee){j[Ee+""]=Ee+""}),Object.keys(j).forEach(function(Ee){var Qe;Ee.length>1?Qe=new RegExp("\\b"+p(Ee)+"\\b","gi"):Qe=new RegExp(p(Ee),"gi"),y=y.replace(Qe,j[Ee])});for(D in j)xe+=D}for(xe+=A,xe=p(xe),y=y.replace(/(^\s+|\s+$)/g,""),ue=!1,be=!1,P=0,K=y.length;P=0?(E+=D,D=""):be===!0?(D=s[E]+r[D],E=""):D=ue&&r[D].match(/[A-Za-z0-9]/)?" "+r[D]:r[D],ue=!1,be=!1):D in s?(E+=D,D="",P===K-1&&(D=s[E]),be=!0):L[D]&&!(C&&l.indexOf(D)!==-1)&&!(H&&u.indexOf(D)!==-1)?(D=ue||m.substr(-1).match(/[A-Za-z0-9]/)?A+L[D]:L[D],D+=y[P+1]!==void 0&&y[P+1].match(/[A-Za-z0-9]/)?A:"",ue=!0):(be===!0?(D=s[E]+D,E="",be=!1):ue&&(/[A-Za-z0-9]/.test(D)||m.substr(-1).match(/A-Za-z0-9]/))&&(D=" "+D),ue=!1),m+=D.replace(new RegExp("[^\\w\\s"+xe+"_-]","g"),A);return T&&(m=m.replace(/(\w)(\S*)/g,function(Ee,Qe,mt){var Je=Qe.toUpperCase()+(mt!==null?mt:"");return Object.keys(j).indexOf(Je.toLowerCase())<0?Je:Je.toLowerCase()})),m=m.replace(/\s+/g,A).replace(new RegExp("\\"+A+"+","g"),A).replace(new RegExp("(^\\"+A+"+|\\"+A+"+$)","g"),""),$&&m.length>$&&(te=m.charAt($)===A,m=m.slice(0,$),te||(m=m.slice(0,m.lastIndexOf(A)))),!M&&!T&&(m=m.toLowerCase()),m},d=function(y){return function(A){return c(A,y)}},p=function(y){return y.replace(/[-\\^$*+?.()|[\]{}\/]/g,"\\$&")},_=function(v,y){for(var b in y)if(y[b]===v)return!0};if(typeof t<"u"&&t.exports)t.exports=c,t.exports.createSlug=d;else if(typeof define<"u"&&define.amd)define([],function(){return c});else try{if(n.getSlug||n.createSlug)throw"speakingurl: globals exists /(getSlug|createSlug)/";n.getSlug=c,n.createSlug=d}catch{}}(e)}}),Yv=gf({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(e,t){I(),t.exports=qv()}});I();I();I();I();I();I();I();function Xv(e){return!!(e&&e.__v_isReadonly)}function _f(e){return Xv(e)?_f(e.__v_raw):!!(e&&e.__v_isReactive)}function gs(e){return!!(e&&e.__v_isRef===!0)}function hr(e){const t=e&&e.__v_raw;return t?hr(t):e}var Zv=Symbol.for("v-fgt");I();function Qv(e){return e.name||e._componentTag||e.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__||e.__name}function Jv(e){const t=e.__file;if(t)return Rv(Lv(t,".vue"))}function ll(e,t){return e.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__=t,t}function Ii(e){if(e.__VUE_DEVTOOLS_NEXT_APP_RECORD__)return e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(e.root)return e.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__}async function e0(e){const{app:t,uid:n,instance:r}=e;try{if(r.__VUE_DEVTOOLS_NEXT_UID__)return r.__VUE_DEVTOOLS_NEXT_UID__;const o=await Ii(t);if(!o)return null;const s=o.rootInstance===r;return`${o.id}:${s?"root":n}`}catch{}}function vf(e){var t;return((t=e.subTree)==null?void 0:t.type)===Zv}function Ko(e){var t,n,r;const o=Qv((e==null?void 0:e.type)||{});if(o)return o;if((e==null?void 0:e.root)===e)return"Root";for(const i in(n=(t=e.parent)==null?void 0:t.type)==null?void 0:n.components)if(e.parent.type.components[i]===(e==null?void 0:e.type))return ll(e,i);for(const i in(r=e.appContext)==null?void 0:r.components)if(e.appContext.components[i]===(e==null?void 0:e.type))return ll(e,i);const s=Jv((e==null?void 0:e.type)||{});return s||"Anonymous Component"}function Bs(e,t){return t=t||`${e.id}:root`,e.instanceMap.get(t)||e.instanceMap.get(":root")}var t0=class{constructor(){this.refEditor=new n0}set(e,t,n,r){const o=Array.isArray(t)?t:t.split(".");for(;o.length>1;){const a=o.shift();e instanceof Map&&(e=e.get(a)),e instanceof Set?e=Array.from(e.values())[a]:e=e[a],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}const s=o[0],i=this.refEditor.get(e)[s];r?r(e,s,n):this.refEditor.isRef(i)?this.refEditor.set(i,n):e[s]=n}get(e,t){const n=Array.isArray(t)?t:t.split(".");for(let r=0;r"u")return!1;const r=Array.isArray(t)?t.slice():t.split("."),o=n?2:1;for(;e&&r.length>o;){const s=r.shift();e=e[s],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}return e!=null&&Object.prototype.hasOwnProperty.call(e,r[0])}createDefaultSetCallback(e){return(t,n,r)=>{if((e.remove||e.newKey)&&(Array.isArray(t)?t.splice(n,1):hr(t)instanceof Map?t.delete(n):hr(t)instanceof Set?t.delete(Array.from(t.values())[n]):Reflect.deleteProperty(t,n)),!e.remove){const o=t[e.newKey||n];this.refEditor.isRef(o)?this.refEditor.set(o,r):hr(t)instanceof Map?t.set(e.newKey||n,r):hr(t)instanceof Set?t.add(r):t[e.newKey||n]=r}}}},n0=class{set(e,t){if(gs(e))e.value=t;else{if(e instanceof Set&&Array.isArray(t)){e.clear(),t.forEach(o=>e.add(o));return}const n=Object.keys(t);if(e instanceof Map){const o=new Set(e.keys());n.forEach(s=>{e.set(s,Reflect.get(t,s)),o.delete(s)}),o.forEach(s=>e.delete(s));return}const r=new Set(Object.keys(e));n.forEach(o=>{Reflect.set(e,o,Reflect.get(t,o)),r.delete(o)}),r.forEach(o=>Reflect.deleteProperty(e,o))}}get(e){return gs(e)?e.value:e}isRef(e){return gs(e)||_f(e)}};I();function Ri(e){return vf(e)?r0(e.subTree):e.subTree?[e.subTree.el]:[]}function r0(e){if(!e.children)return[];const t=[];return e.children.forEach(n=>{n.component?t.push(...Ri(n.component)):n!=null&&n.el&&t.push(n.el)}),t}I();I();function o0(){const e={top:0,bottom:0,left:0,right:0,get width(){return e.right-e.left},get height(){return e.bottom-e.top}};return e}var ao;function s0(e){return ao||(ao=document.createRange()),ao.selectNode(e),ao.getBoundingClientRect()}function i0(e){const t=o0();if(!e.children)return t;for(let n=0,r=e.children.length;ne.bottom)&&(e.bottom=t.bottom),(!e.left||t.lefte.right)&&(e.right=t.right),e}var ul={top:0,left:0,right:0,bottom:0,width:0,height:0};function Cn(e){const t=e.subTree.el;return typeof window>"u"?ul:vf(e)?i0(e.subTree):(t==null?void 0:t.nodeType)===1?t==null?void 0:t.getBoundingClientRect():e.subTree.component?Cn(e.subTree.component):ul}var yf="__vue-devtools-component-inspector__",bf="__vue-devtools-component-inspector__card__",Ef="__vue-devtools-component-inspector__name__",Sf="__vue-devtools-component-inspector__indicator__",Af={display:"block",zIndex:2147483640,position:"fixed",backgroundColor:"#42b88325",border:"1px solid #42b88350",borderRadius:"5px",transition:"all 0.1s ease-in",pointerEvents:"none"},l0={fontFamily:"Arial, Helvetica, sans-serif",padding:"5px 8px",borderRadius:"4px",textAlign:"left",position:"absolute",left:0,color:"#e9e9e9",fontSize:"14px",fontWeight:600,lineHeight:"24px",backgroundColor:"#42b883",boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)"},u0={display:"inline-block",fontWeight:400,fontStyle:"normal",fontSize:"12px",opacity:.7};function nr(){return document.getElementById(yf)}function c0(){return document.getElementById(bf)}function f0(){return document.getElementById(Sf)}function d0(){return document.getElementById(Ef)}function Li(e){return{left:`${Math.round(e.left*100)/100}px`,top:`${Math.round(e.top*100)/100}px`,width:`${Math.round(e.width*100)/100}px`,height:`${Math.round(e.height*100)/100}px`}}function Di(e){var t;const n=document.createElement("div");n.id=(t=e.elementId)!=null?t:yf,Object.assign(n.style,{...Af,...Li(e.bounds),...e.style});const r=document.createElement("span");r.id=bf,Object.assign(r.style,{...l0,top:e.bounds.top<35?0:"-35px"});const o=document.createElement("span");o.id=Ef,o.innerHTML=`<${e.name}>  `;const s=document.createElement("i");return s.id=Sf,s.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`,Object.assign(s.style,u0),r.appendChild(o),r.appendChild(s),n.appendChild(r),document.body.appendChild(n),n}function Vi(e){const t=nr(),n=c0(),r=d0(),o=f0();t&&(Object.assign(t.style,{...Af,...Li(e.bounds)}),Object.assign(n.style,{top:e.bounds.top<35?0:"-35px"}),r.innerHTML=`<${e.name}>  `,o.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`)}function p0(e){const t=Cn(e),n=Ko(e);nr()?Vi({bounds:t,name:n}):Di({bounds:t,name:n})}function Tf(){const e=nr();e&&(e.style.display="none")}var Fs=null;function Hs(e){const t=e.target;if(t){const n=t.__vueParentComponent;if(n&&(Fs=n,n.vnode.el)){const o=Cn(n),s=Ko(n);nr()?Vi({bounds:o,name:s}):Di({bounds:o,name:s})}}}function h0(e,t){var n;if(e.preventDefault(),e.stopPropagation(),Fs){const r=(n=tt.value)==null?void 0:n.app;e0({app:r,uid:r.uid,instance:Fs}).then(o=>{t(o)})}}var ko=null;function m0(){Tf(),window.removeEventListener("mouseover",Hs),window.removeEventListener("click",ko,!0),ko=null}function g0(){return window.addEventListener("mouseover",Hs),new Promise(e=>{function t(n){n.preventDefault(),n.stopPropagation(),h0(n,r=>{window.removeEventListener("click",t,!0),ko=null,window.removeEventListener("mouseover",Hs);const o=nr();o&&(o.style.display="none"),e(JSON.stringify({id:r}))})}ko=t,window.addEventListener("click",t,!0)})}function _0(e){const t=Bs(tt.value,e.id);if(t){const[n]=Ri(t);if(typeof n.scrollIntoView=="function")n.scrollIntoView({behavior:"smooth"});else{const r=Cn(t),o=document.createElement("div"),s={...Li(r),position:"absolute"};Object.assign(o.style,s),document.body.appendChild(o),o.scrollIntoView({behavior:"smooth"}),setTimeout(()=>{document.body.removeChild(o)},2e3)}setTimeout(()=>{const r=Cn(t);if(r.width||r.height){const o=Ko(t),s=nr();s?Vi({...e,name:o,bounds:r}):Di({...e,name:o,bounds:r}),setTimeout(()=>{s&&(s.style.display="none")},1500)}},1200)}}I();var cl,fl;(fl=(cl=Z).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__)!=null||(cl.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__=!0);function v0(e){let t=0;const n=setInterval(()=>{Z.__VUE_INSPECTOR__&&(clearInterval(n),t+=30,e()),t>=5e3&&clearInterval(n)},30)}function y0(){const e=Z.__VUE_INSPECTOR__,t=e.openInEditor;e.openInEditor=async(...n)=>{e.disable(),t(...n)}}function b0(){return new Promise(e=>{function t(){y0(),e(Z.__VUE_INSPECTOR__)}Z.__VUE_INSPECTOR__?t():v0(()=>{t()})})}I();I();I();I();I();var dl,pl;(pl=(dl=Z).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS)!=null||(dl.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS=[]);var E0=new Proxy(Z.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS,{get(e,t,n){return Reflect.get(e,t,n)}});function S0(e,t){E0.push({...e,descriptorId:t.id,appRecord:Ii(t.app)})}var hl,ml;(ml=(hl=Z).__VUE_DEVTOOLS_KIT_INSPECTOR__)!=null||(hl.__VUE_DEVTOOLS_KIT_INSPECTOR__=[]);var Ni=new Proxy(Z.__VUE_DEVTOOLS_KIT_INSPECTOR__,{get(e,t,n){return Reflect.get(e,t,n)}}),wf=jo(()=>{rr.hooks.callHook("sendInspectorToClient",kf())});function A0(e,t){Ni.push({options:e,descriptor:t,treeFilter:"",selectedNodeId:"",appRecord:Ii(t.app)}),wf()}function kf(){return Ni.filter(e=>e.descriptor.app===tt.value.app).filter(e=>e.descriptor.id!=="components").map(e=>{var t;const n=e.descriptor,r=e.options;return{id:r.id,label:r.label,logo:n.logo,icon:`custom-ic-baseline-${(t=r==null?void 0:r.icon)==null?void 0:t.replace(/_/g,"-")}`,packageName:n.packageName,homepage:n.homepage,pluginId:n.id}})}function po(e,t){return Ni.find(n=>n.options.id===e&&(t?n.descriptor.app===t:!0))}function T0(){const e=hf();return e.hook("addInspector",({inspector:t,plugin:n})=>{A0(t,n.descriptor)}),e.hook("sendInspectorTree",async({inspectorId:t,plugin:n})=>{var r;if(!t||!((r=n==null?void 0:n.descriptor)!=null&&r.app))return;const o=po(t,n.descriptor.app),s={app:n.descriptor.app,inspectorId:t,filter:(o==null?void 0:o.treeFilter)||"",rootNodes:[]};await new Promise(i=>{e.callHookWith(async a=>{await Promise.all(a.map(l=>l(s))),i()},"getInspectorTree")}),e.callHookWith(async i=>{await Promise.all(i.map(a=>a({inspectorId:t,rootNodes:s.rootNodes})))},"sendInspectorTreeToClient")}),e.hook("sendInspectorState",async({inspectorId:t,plugin:n})=>{var r;if(!t||!((r=n==null?void 0:n.descriptor)!=null&&r.app))return;const o=po(t,n.descriptor.app),s={app:n.descriptor.app,inspectorId:t,nodeId:(o==null?void 0:o.selectedNodeId)||"",state:null},i={currentTab:`custom-inspector:${t}`};s.nodeId&&await new Promise(a=>{e.callHookWith(async l=>{await Promise.all(l.map(u=>u(s,i))),a()},"getInspectorState")}),e.callHookWith(async a=>{await Promise.all(a.map(l=>l({inspectorId:t,nodeId:s.nodeId,state:s.state})))},"sendInspectorStateToClient")}),e.hook("customInspectorSelectNode",({inspectorId:t,nodeId:n,plugin:r})=>{const o=po(t,r.descriptor.app);o&&(o.selectedNodeId=n)}),e.hook("timelineLayerAdded",({options:t,plugin:n})=>{S0(t,n.descriptor)}),e.hook("timelineEventAdded",({options:t,plugin:n})=>{e.callHookWith(async r=>{await Promise.all(r.map(o=>o(t)))},"sendTimelineEventToClient")}),e.hook("getComponentInstances",async({app:t})=>{const n=t.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(!n)return null;const r=n.id.toString();return[...n.instanceMap].filter(([s])=>s.split(":")[0]===r).map(([,s])=>s)}),e.hook("getComponentBounds",async({instance:t})=>Cn(t)),e.hook("getComponentName",({instance:t})=>Ko(t)),e.hook("componentHighlight",({uid:t})=>{const n=tt.value.instanceMap.get(t);n&&p0(n)}),e.hook("componentUnhighlight",()=>{Tf()}),e}var gl,_l;(_l=(gl=Z).__VUE_DEVTOOLS_KIT_APP_RECORDS__)!=null||(gl.__VUE_DEVTOOLS_KIT_APP_RECORDS__=[]);var vl,yl;(yl=(vl=Z).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__)!=null||(vl.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__={});var bl,El;(El=(bl=Z).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__)!=null||(bl.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__="");var Sl,Al;(Al=(Sl=Z).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__)!=null||(Sl.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__=[]);var Tl,wl;(wl=(Tl=Z).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__)!=null||(Tl.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__=[]);var En="__VUE_DEVTOOLS_KIT_GLOBAL_STATE__";function w0(){return{connected:!1,clientConnected:!1,vitePluginDetected:!0,appRecords:[],activeAppRecordId:"",tabs:[],commands:[],highPerfModeEnabled:!0,devtoolsClientDetected:{}}}var kl,Cl;(Cl=(kl=Z)[En])!=null||(kl[En]=w0());var k0=jo(e=>{rr.hooks.callHook("devtoolsStateUpdated",{state:e})});jo((e,t)=>{rr.hooks.callHook("devtoolsConnectedUpdated",{state:e,oldState:t})});var Wo=new Proxy(Z.__VUE_DEVTOOLS_KIT_APP_RECORDS__,{get(e,t,n){return t==="value"?Z.__VUE_DEVTOOLS_KIT_APP_RECORDS__:Z.__VUE_DEVTOOLS_KIT_APP_RECORDS__[t]}}),tt=new Proxy(Z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__,{get(e,t,n){return t==="value"?Z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__:t==="id"?Z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__:Z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[t]}});function Cf(){k0({...Z[En],appRecords:Wo.value,activeAppRecordId:tt.id,tabs:Z.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,commands:Z.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__})}function C0(e){Z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__=e,Cf()}function O0(e){Z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=e,Cf()}var wn=new Proxy(Z[En],{get(e,t){return t==="appRecords"?Wo:t==="activeAppRecordId"?tt.id:t==="tabs"?Z.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__:t==="commands"?Z.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__:Z[En][t]},deleteProperty(e,t){return delete e[t],!0},set(e,t,n){return{...Z[En]},e[t]=n,Z[En][t]=n,!0}});function x0(e={}){var t,n,r;const{file:o,host:s,baseUrl:i=window.location.origin,line:a=0,column:l=0}=e;if(o){if(s==="chrome-extension"){const u=o.replace(/\\/g,"\\\\"),f=(n=(t=window.VUE_DEVTOOLS_CONFIG)==null?void 0:t.openInEditorHost)!=null?n:"/";fetch(`${f}__open-in-editor?file=${encodeURI(o)}`).then(c=>{if(!c.ok){const d=`Opening component ${u} failed`;console.log(`%c${d}`,"color:red")}})}else if(wn.vitePluginDetected){const u=(r=Z.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__)!=null?r:i;Z.__VUE_INSPECTOR__.openInEditor(u,o,a,l)}}}I();I();I();I();I();var Ol,xl;(xl=(Ol=Z).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__)!=null||(Ol.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__=[]);var Mi=new Proxy(Z.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__,{get(e,t,n){return Reflect.get(e,t,n)}});function zs(e){const t={};return Object.keys(e).forEach(n=>{t[n]=e[n].defaultValue}),t}function Bi(e){return`__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${e}__`}function P0(e){var t,n,r;const o=(n=(t=Mi.find(s=>{var i;return s[0].id===e&&!!((i=s[0])!=null&&i.settings)}))==null?void 0:t[0])!=null?n:null;return(r=o==null?void 0:o.settings)!=null?r:null}function Of(e,t){var n,r,o;const s=Bi(e);if(s){const i=localStorage.getItem(s);if(i)return JSON.parse(i)}if(e){const i=(r=(n=Mi.find(a=>a[0].id===e))==null?void 0:n[0])!=null?r:null;return zs((o=i==null?void 0:i.settings)!=null?o:{})}return zs(t)}function I0(e,t){const n=Bi(e);localStorage.getItem(n)||localStorage.setItem(n,JSON.stringify(zs(t)))}function R0(e,t,n){const r=Bi(e),o=localStorage.getItem(r),s=JSON.parse(o||"{}"),i={...s,[t]:n};localStorage.setItem(r,JSON.stringify(i)),rr.hooks.callHookWith(a=>{a.forEach(l=>l({pluginId:e,key:t,oldValue:s[t],newValue:n,settings:i}))},"setPluginSettings")}I();I();I();I();I();I();I();I();I();I();I();var Pl,Il,kt=(Il=(Pl=Z).__VUE_DEVTOOLS_HOOK)!=null?Il:Pl.__VUE_DEVTOOLS_HOOK=hf(),L0={vueAppInit(e){kt.hook("app:init",e)},vueAppUnmount(e){kt.hook("app:unmount",e)},vueAppConnected(e){kt.hook("app:connected",e)},componentAdded(e){return kt.hook("component:added",e)},componentUpdated(e){return kt.hook("component:updated",e)},componentRemoved(e){return kt.hook("component:removed",e)},setupDevtoolsPlugin(e){kt.hook("devtools-plugin:setup",e)}},xf={on:L0,setupDevToolsPlugin(e,t){return kt.callHook("devtools-plugin:setup",e,t)}},D0=class{constructor({plugin:e,ctx:t}){this.hooks=t.hooks,this.plugin=e}get on(){return{visitComponentTree:e=>{this.hooks.hook("visitComponentTree",e)},inspectComponent:e=>{this.hooks.hook("inspectComponent",e)},editComponentState:e=>{this.hooks.hook("editComponentState",e)},getInspectorTree:e=>{this.hooks.hook("getInspectorTree",e)},getInspectorState:e=>{this.hooks.hook("getInspectorState",e)},editInspectorState:e=>{this.hooks.hook("editInspectorState",e)},inspectTimelineEvent:e=>{this.hooks.hook("inspectTimelineEvent",e)},timelineCleared:e=>{this.hooks.hook("timelineCleared",e)},setPluginSettings:e=>{this.hooks.hook("setPluginSettings",e)}}}notifyComponentUpdate(e){var t;const n=kf().find(r=>r.packageName===this.plugin.descriptor.packageName);if(n!=null&&n.id){if(e){const r=[e.appContext.app,e.uid,(t=e.parent)==null?void 0:t.uid,e];kt.callHook("component:updated",...r)}else kt.callHook("component:updated");this.hooks.callHook("sendInspectorState",{inspectorId:n.id,plugin:this.plugin})}}addInspector(e){this.hooks.callHook("addInspector",{inspector:e,plugin:this.plugin}),this.plugin.descriptor.settings&&I0(e.id,this.plugin.descriptor.settings)}sendInspectorTree(e){this.hooks.callHook("sendInspectorTree",{inspectorId:e,plugin:this.plugin})}sendInspectorState(e){this.hooks.callHook("sendInspectorState",{inspectorId:e,plugin:this.plugin})}selectInspectorNode(e,t){this.hooks.callHook("customInspectorSelectNode",{inspectorId:e,nodeId:t,plugin:this.plugin})}now(){return Date.now()}addTimelineLayer(e){this.hooks.callHook("timelineLayerAdded",{options:e,plugin:this.plugin})}addTimelineEvent(e){this.hooks.callHook("timelineEventAdded",{options:e,plugin:this.plugin})}getSettings(e){return Of(e??this.plugin.descriptor.id,this.plugin.descriptor.settings)}getComponentInstances(e){return this.hooks.callHook("getComponentInstances",{app:e})}getComponentBounds(e){return this.hooks.callHook("getComponentBounds",{instance:e})}getComponentName(e){return this.hooks.callHook("getComponentName",{instance:e})}highlightElement(e){const t=e.__VUE_DEVTOOLS_NEXT_UID__;return this.hooks.callHook("componentHighlight",{uid:t})}unhighlightElement(){return this.hooks.callHook("componentUnhighlight")}},V0=D0;I();I();I();I();var N0="__vue_devtool_undefined__",M0="__vue_devtool_infinity__",B0="__vue_devtool_negative_infinity__",F0="__vue_devtool_nan__";I();I();var H0={[N0]:"undefined",[F0]:"NaN",[M0]:"Infinity",[B0]:"-Infinity"};Object.entries(H0).reduce((e,[t,n])=>(e[n]=t,e),{});I();I();I();var Rl,Ll;(Ll=(Rl=Z).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__)!=null||(Rl.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__=new Set);function z0(e,t){return xf.setupDevToolsPlugin(e,t)}function $0(e,t){const[n,r]=e;if(n.app!==t)return;const o=new V0({plugin:{setupFn:r,descriptor:n},ctx:rr});n.packageName==="vuex"&&o.on.editInspectorState(s=>{o.sendInspectorState(s.inspectorId)}),r(o)}function U0(e){Z.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(e)||(Z.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(e),Mi.forEach(t=>{$0(t,e)}))}I();I();var Rr="__VUE_DEVTOOLS_ROUTER__",Gn="__VUE_DEVTOOLS_ROUTER_INFO__",Dl,Vl;(Vl=(Dl=Z)[Gn])!=null||(Dl[Gn]={currentRoute:null,routes:[]});var Nl,Ml;(Ml=(Nl=Z)[Rr])!=null||(Nl[Rr]={});new Proxy(Z[Gn],{get(e,t){return Z[Gn][t]}});new Proxy(Z[Rr],{get(e,t){if(t==="value")return Z[Rr]}});function j0(e){const t=new Map;return((e==null?void 0:e.getRoutes())||[]).filter(n=>!t.has(n.path)&&t.set(n.path,1))}function Fi(e){return e.map(t=>{let{path:n,name:r,children:o,meta:s}=t;return o!=null&&o.length&&(o=Fi(o)),{path:n,name:r,children:o,meta:s}})}function K0(e){if(e){const{fullPath:t,hash:n,href:r,path:o,name:s,matched:i,params:a,query:l}=e;return{fullPath:t,hash:n,href:r,path:o,name:s,params:a,query:l,matched:Fi(i)}}return e}function W0(e,t){function n(){var r;const o=(r=e.app)==null?void 0:r.config.globalProperties.$router,s=K0(o==null?void 0:o.currentRoute.value),i=Fi(j0(o)),a=console.warn;console.warn=()=>{},Z[Gn]={currentRoute:s?al(s):{},routes:al(i)},Z[Rr]=o,console.warn=a}n(),xf.on.componentUpdated(jo(()=>{var r;((r=t.value)==null?void 0:r.app)===e.app&&(n(),rr.hooks.callHook("routerInfoUpdated",{state:Z[Gn]}))},200))}function G0(e){return{async getInspectorTree(t){const n={...t,app:tt.value.app,rootNodes:[]};return await new Promise(r=>{e.callHookWith(async o=>{await Promise.all(o.map(s=>s(n))),r()},"getInspectorTree")}),n.rootNodes},async getInspectorState(t){const n={...t,app:tt.value.app,state:null},r={currentTab:`custom-inspector:${t.inspectorId}`};return await new Promise(o=>{e.callHookWith(async s=>{await Promise.all(s.map(i=>i(n,r))),o()},"getInspectorState")}),n.state},editInspectorState(t){const n=new t0,r={...t,app:tt.value.app,set:(o,s=t.path,i=t.state.value,a)=>{n.set(o,s,i,a||n.createDefaultSetCallback(t.state))}};e.callHookWith(o=>{o.forEach(s=>s(r))},"editInspectorState")},sendInspectorState(t){const n=po(t);e.callHook("sendInspectorState",{inspectorId:t,plugin:{descriptor:n.descriptor,setupFn:()=>({})}})},inspectComponentInspector(){return g0()},cancelInspectComponentInspector(){return m0()},getComponentRenderCode(t){const n=Bs(tt.value,t);if(n)return(n==null?void 0:n.type)instanceof Function?n.type.toString():n.render.toString()},scrollToComponent(t){return _0({id:t})},openInEditor:x0,getVueInspector:b0,toggleApp(t){const n=Wo.value.find(r=>r.id===t);n&&(O0(t),C0(n),W0(n,tt),wf(),U0(n.app))},inspectDOM(t){const n=Bs(tt.value,t);if(n){const[r]=Ri(n);r&&(Z.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__=r)}},updatePluginSettings(t,n,r){R0(t,n,r)},getPluginSettings(t){return{options:P0(t),values:Of(t)}}}}I();var Bl,Fl;(Fl=(Bl=Z).__VUE_DEVTOOLS_ENV__)!=null||(Bl.__VUE_DEVTOOLS_ENV__={vitePluginDetected:!1});var Hl=T0(),zl,$l;($l=(zl=Z).__VUE_DEVTOOLS_KIT_CONTEXT__)!=null||(zl.__VUE_DEVTOOLS_KIT_CONTEXT__={hooks:Hl,get state(){return{...wn,activeAppRecordId:tt.id,activeAppRecord:tt.value,appRecords:Wo.value}},api:G0(Hl)});var rr=Z.__VUE_DEVTOOLS_KIT_CONTEXT__;I();Gv(Yv());var Ul,jl;(jl=(Ul=Z).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__)!=null||(Ul.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__={id:0,appIds:new Set});I();function q0(e){wn.highPerfModeEnabled=e??!wn.highPerfModeEnabled}I();I();I();function Y0(e){wn.devtoolsClientDetected={...wn.devtoolsClientDetected,...e};const t=Object.values(wn.devtoolsClientDetected).some(Boolean);q0(!t)}var Kl,Wl;(Wl=(Kl=Z).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__)!=null||(Kl.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__=Y0);I();I();I();I();I();I();I();var X0=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},Pf=class{constructor(e){this.generateIdentifier=e,this.kv=new X0}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},Z0=class extends Pf{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t=="object"?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};I();I();function Q0(e){if("values"in Object)return Object.values(e);const t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function J0(e,t){const n=Q0(e);if("find"in n)return n.find(t);const r=n;for(let o=0;ot(r,n))}function ho(e,t){return e.indexOf(t)!==-1}function Gl(e,t){for(let n=0;nt.isApplicable(e))}findByName(e){return this.transfomers[e]}};I();I();var t1=e=>Object.prototype.toString.call(e).slice(8,-1),If=e=>typeof e>"u",n1=e=>e===null,Lr=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,$s=e=>Lr(e)&&Object.keys(e).length===0,ln=e=>Array.isArray(e),r1=e=>typeof e=="string",o1=e=>typeof e=="number"&&!isNaN(e),s1=e=>typeof e=="boolean",i1=e=>e instanceof RegExp,Dr=e=>e instanceof Map,Vr=e=>e instanceof Set,Rf=e=>t1(e)==="Symbol",a1=e=>e instanceof Date&&!isNaN(e.valueOf()),l1=e=>e instanceof Error,ql=e=>typeof e=="number"&&isNaN(e),u1=e=>s1(e)||n1(e)||If(e)||o1(e)||r1(e)||Rf(e),c1=e=>typeof e=="bigint",f1=e=>e===1/0||e===-1/0,d1=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),p1=e=>e instanceof URL;I();var Lf=e=>e.replace(/\./g,"\\."),_s=e=>e.map(String).map(Lf).join("."),Er=e=>{const t=[];let n="";for(let o=0;onull,()=>{}),At(c1,"bigint",e=>e.toString(),e=>typeof BigInt<"u"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),At(a1,"Date",e=>e.toISOString(),e=>new Date(e)),At(l1,"Error",(e,t)=>{const n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n},(e,t)=>{const n=new Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n}),At(i1,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),n=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,n)}),At(Vr,"set",e=>[...e.values()],e=>new Set(e)),At(Dr,"map",e=>[...e.entries()],e=>new Map(e)),At(e=>ql(e)||f1(e),"number",e=>ql(e)?"NaN":e>0?"Infinity":"-Infinity",Number),At(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),At(p1,"URL",e=>e.toString(),e=>new URL(e))];function Go(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var Vf=Go((e,t)=>Rf(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{const r=n.symbolRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown symbol");return r}),h1=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),Nf=Go(d1,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const n=h1[t[1]];if(!n)throw new Error("Trying to deserialize unknown typed array");return new n(e)});function Mf(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var Bf=Go(Mf,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};const r={};return n.forEach(o=>{r[o]=e[o]}),r},(e,t,n)=>{const r=n.classRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564");return Object.assign(Object.create(r.prototype),e)}),Ff=Go((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{const r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw new Error("Trying to deserialize unknown custom value");return r.deserialize(e)}),m1=[Bf,Vf,Ff,Nf],Yl=(e,t)=>{const n=Gl(m1,o=>o.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};const r=Gl(Df,o=>o.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},Hf={};Df.forEach(e=>{Hf[e.annotation]=e});var g1=(e,t,n)=>{if(ln(t))switch(t[0]){case"symbol":return Vf.untransform(e,t,n);case"class":return Bf.untransform(e,t,n);case"custom":return Ff.untransform(e,t,n);case"typed-array":return Nf.untransform(e,t,n);default:throw new Error("Unknown transformation: "+t)}else{const r=Hf[t];if(!r)throw new Error("Unknown transformation: "+t);return r.untransform(e,n)}};I();var Dn=(e,t)=>{const n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function zf(e){if(ho(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(ho(e,"prototype"))throw new Error("prototype is not allowed as a property");if(ho(e,"constructor"))throw new Error("constructor is not allowed as a property")}var _1=(e,t)=>{zf(t);for(let n=0;n{if(zf(t),t.length===0)return n(e);let r=e;for(let s=0;sjs(s,t,[...n,...Er(i)]));return}const[r,o]=e;o&&qn(o,(s,i)=>{js(s,t,[...n,...Er(i)])}),t(r,n)}function v1(e,t,n){return js(t,(r,o)=>{e=Us(e,o,s=>g1(s,r,n))}),e}function y1(e,t){function n(r,o){const s=_1(e,Er(o));r.map(Er).forEach(i=>{e=Us(e,i,()=>s)})}if(ln(t)){const[r,o]=t;r.forEach(s=>{e=Us(e,Er(s),()=>e)}),o&&qn(o,n)}else qn(t,n);return e}var b1=(e,t)=>Lr(e)||ln(e)||Dr(e)||Vr(e)||Mf(e,t);function E1(e,t,n){const r=n.get(e);r?r.push(t):n.set(e,[t])}function S1(e,t){const n={};let r;return e.forEach(o=>{if(o.length<=1)return;t||(o=o.map(a=>a.map(String)).sort((a,l)=>a.length-l.length));const[s,...i]=o;s.length===0?r=i.map(_s):n[_s(s)]=i.map(_s)}),r?$s(n)?[r]:[r,n]:$s(n)?void 0:n}var $f=(e,t,n,r,o=[],s=[],i=new Map)=>{var a;const l=u1(e);if(!l){E1(e,o,t);const _=i.get(e);if(_)return r?{transformedValue:null}:_}if(!b1(e,n)){const _=Yl(e,n),v=_?{transformedValue:_.value,annotations:[_.type]}:{transformedValue:e};return l||i.set(e,v),v}if(ho(s,e))return{transformedValue:null};const u=Yl(e,n),f=(a=u==null?void 0:u.value)!=null?a:e,c=ln(f)?[]:{},d={};qn(f,(_,v)=>{if(v==="__proto__"||v==="constructor"||v==="prototype")throw new Error(`Detected property ${v}. This is a prototype pollution risk, please remove it from your object.`);const y=$f(_,t,n,r,[...o,v],[...s,e],i);c[v]=y.transformedValue,ln(y.annotations)?d[v]=y.annotations:Lr(y.annotations)&&qn(y.annotations,(b,A)=>{d[Lf(v)+"."+A]=b})});const p=$s(d)?{transformedValue:c,annotations:u?[u.type]:void 0}:{transformedValue:c,annotations:u?[u.type,d]:d};return l||i.set(e,p),p};I();I();function Uf(e){return Object.prototype.toString.call(e).slice(8,-1)}function Xl(e){return Uf(e)==="Array"}function A1(e){if(Uf(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function T1(e,t,n,r,o){const s={}.propertyIsEnumerable.call(r,t)?"enumerable":"nonenumerable";s==="enumerable"&&(e[t]=n),o&&s==="nonenumerable"&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function Ks(e,t={}){if(Xl(e))return e.map(o=>Ks(o,t));if(!A1(e))return e;const n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((o,s)=>{if(Xl(t.props)&&!t.props.includes(s))return o;const i=e[s],a=Ks(i,t);return T1(o,s,a,e,t.nonenumerable),o},{})}var ke=class{constructor({dedupe:e=!1}={}){this.classRegistry=new Z0,this.symbolRegistry=new Pf(t=>{var n;return(n=t.description)!=null?n:""}),this.customTransformerRegistry=new e1,this.allowedErrorProps=[],this.dedupe=e}serialize(e){const t=new Map,n=$f(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});const o=S1(t,this.dedupe);return o&&(r.meta={...r.meta,referentialEqualities:o}),r}deserialize(e){const{json:t,meta:n}=e;let r=Ks(t);return n!=null&&n.values&&(r=v1(r,n.values,this)),n!=null&&n.referentialEqualities&&(r=y1(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};ke.defaultInstance=new ke;ke.serialize=ke.defaultInstance.serialize.bind(ke.defaultInstance);ke.deserialize=ke.defaultInstance.deserialize.bind(ke.defaultInstance);ke.stringify=ke.defaultInstance.stringify.bind(ke.defaultInstance);ke.parse=ke.defaultInstance.parse.bind(ke.defaultInstance);ke.registerClass=ke.defaultInstance.registerClass.bind(ke.defaultInstance);ke.registerSymbol=ke.defaultInstance.registerSymbol.bind(ke.defaultInstance);ke.registerCustom=ke.defaultInstance.registerCustom.bind(ke.defaultInstance);ke.allowErrorProps=ke.defaultInstance.allowErrorProps.bind(ke.defaultInstance);I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();I();var Zl,Ql;(Ql=(Zl=Z).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__)!=null||(Zl.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__=[]);var Jl,eu;(eu=(Jl=Z).__VUE_DEVTOOLS_KIT_RPC_CLIENT__)!=null||(Jl.__VUE_DEVTOOLS_KIT_RPC_CLIENT__=null);var tu,nu;(nu=(tu=Z).__VUE_DEVTOOLS_KIT_RPC_SERVER__)!=null||(tu.__VUE_DEVTOOLS_KIT_RPC_SERVER__=null);var ru,ou;(ou=(ru=Z).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__)!=null||(ru.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__=null);var su,iu;(iu=(su=Z).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__)!=null||(su.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__=null);var au,lu;(lu=(au=Z).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__)!=null||(au.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__=null);I();I();I();I();I();I();I();const w1=JSON.parse(`{"logo":"/images/hero.png","repo":"vuepress/core","docsRepo":"vuepress/docs","docsDir":"docs","locales":{"/":{"navbar":[{"text":"Guide","children":["/guide/introduction.md","/guide/getting-started.md","/guide/configuration.md","/guide/page.md","/guide/markdown.md","/guide/assets.md","/guide/i18n.md","/guide/deployment.md","/guide/theme.md","/guide/plugin.md","/guide/bundler.md","/guide/migration.md","/guide/troubleshooting.md"]},{"text":"Reference","children":[{"text":"Core","children":[{"text":"CLI","link":"/reference/cli.html"},"/reference/config.md","/reference/frontmatter.md","/reference/components.md","/reference/plugin-api.md","/reference/theme-api.md","/reference/client-api.md","/reference/node-api.md"]},{"text":"Bundlers","children":["/reference/bundler/vite.md","/reference/bundler/webpack.md"]},{"text":"Ecosystem","children":[{"text":"Default Theme","link":"https://ecosystem.vuejs.press/themes/default/"},{"text":"Plugins","link":"https://ecosystem.vuejs.press/plugins/"}]}]},{"text":"Learn More","children":[{"text":"Advanced","children":["/advanced/architecture.md","/advanced/plugin.md","/advanced/theme.md",{"text":"Cookbook","link":"/advanced/cookbook/"}]},{"text":"Resources","children":[{"text":"Ecosystem","link":"https://ecosystem.vuejs.press/"},{"text":"MarketPlace","link":"https://marketplace.vuejs.press"},{"text":"Contributing Guide","link":"https://github.com/vuepress/core/blob/main/CONTRIBUTING.md"}]}]},{"text":"v2.0.0-rc.17","children":[{"text":"Changelog","link":"https://github.com/vuepress/core/blob/main/CHANGELOG.md"},{"text":"v1.x","link":"https://v1.vuepress.vuejs.org"},{"text":"v0.x","link":"https://v0.vuepress.vuejs.org"}]}],"sidebar":{"/guide/":[{"text":"Guide","children":["/guide/introduction.md","/guide/getting-started.md","/guide/configuration.md","/guide/page.md","/guide/markdown.md","/guide/assets.md","/guide/i18n.md","/guide/deployment.md","/guide/theme.md","/guide/plugin.md","/guide/bundler.md","/guide/migration.md","/guide/troubleshooting.md"]}],"/advanced/":[{"text":"Advanced","children":["/advanced/architecture.md","/advanced/plugin.md","/advanced/theme.md"]},{"text":"Cookbook","children":["/advanced/cookbook/README.md","/advanced/cookbook/usage-of-client-config.md","/advanced/cookbook/adding-extra-pages.md","/advanced/cookbook/making-a-theme-extendable.md","/advanced/cookbook/passing-data-to-client-code.md","/advanced/cookbook/markdown-and-vue-sfc.md","/advanced/cookbook/resolving-routes.md"]}],"/reference/":[{"text":"Core","collapsible":true,"children":["/reference/cli.md","/reference/config.md","/reference/frontmatter.md","/reference/components.md","/reference/plugin-api.md","/reference/theme-api.md","/reference/client-api.md","/reference/node-api.md"]},{"text":"Bundlers","children":["/reference/bundler/vite.md","/reference/bundler/webpack.md"]},{"text":"Ecosystem","children":[{"text":"Default Theme","link":"https://ecosystem.vuejs.press/themes/default/"},{"text":"Plugins","link":"https://ecosystem.vuejs.press/plugins/"}]}]},"editLinkText":"Edit this page on GitHub","selectLanguageName":"English"},"/zh/":{"navbar":[{"text":"指南","children":["/zh/guide/introduction.md","/zh/guide/getting-started.md","/zh/guide/configuration.md","/zh/guide/page.md","/zh/guide/markdown.md","/zh/guide/assets.md","/zh/guide/i18n.md","/zh/guide/deployment.md","/zh/guide/theme.md","/zh/guide/plugin.md","/zh/guide/bundler.md","/zh/guide/migration.md","/zh/guide/troubleshooting.md"]},{"text":"参考","children":[{"text":"核心","children":["/zh/reference/cli.md","/zh/reference/config.md","/zh/reference/frontmatter.md","/zh/reference/components.md","/zh/reference/plugin-api.md","/zh/reference/theme-api.md","/zh/reference/client-api.md","/zh/reference/node-api.md"]},{"text":"打包工具","children":["/zh/reference/bundler/vite.md","/zh/reference/bundler/webpack.md"]},{"text":"生态系统","children":[{"text":"默认主题","link":"https://ecosystem.vuejs.press/zh/themes/default/"},{"text":"插件","link":"https://ecosystem.vuejs.press/zh/plugins/"}]}]},{"text":"了解更多","children":[{"text":"深入","children":["/zh/advanced/architecture.md","/zh/advanced/plugin.md","/zh/advanced/theme.md",{"text":"Cookbook","link":"/zh/advanced/cookbook/"}]},{"text":"其他资源","children":[{"text":"生态系统","link":"https://ecosystem.vuejs.press/zh/"},{"text":"市场","link":"https://marketplace.vuejs.press/zh/"},{"text":"贡献指南","link":"https://github.com/vuepress/core/blob/main/CONTRIBUTING_zh.md"}]}]},{"text":"v2.0.0-rc.17","children":[{"text":"更新日志","link":"https://github.com/vuepress/core/blob/main/CHANGELOG.md"},{"text":"v1.x","link":"https://v1.vuepress.vuejs.org/zh/"},{"text":"v0.x","link":"https://v0.vuepress.vuejs.org/zh/"}]}],"selectLanguageName":"简体中文","selectLanguageText":"选择语言","selectLanguageAriaLabel":"选择语言","sidebar":{"/zh/guide/":[{"text":"指南","children":["/zh/guide/introduction.md","/zh/guide/getting-started.md","/zh/guide/configuration.md","/zh/guide/page.md","/zh/guide/markdown.md","/zh/guide/assets.md","/zh/guide/i18n.md","/zh/guide/deployment.md","/zh/guide/theme.md","/zh/guide/plugin.md","/zh/guide/bundler.md","/zh/guide/migration.md","/zh/guide/troubleshooting.md"]}],"/zh/advanced/":[{"text":"深入","children":["/zh/advanced/architecture.md","/zh/advanced/plugin.md","/zh/advanced/theme.md"]},{"text":"Cookbook","children":["/zh/advanced/cookbook/README.md","/zh/advanced/cookbook/usage-of-client-config.md","/zh/advanced/cookbook/adding-extra-pages.md","/zh/advanced/cookbook/making-a-theme-extendable.md","/zh/advanced/cookbook/passing-data-to-client-code.md","/zh/advanced/cookbook/markdown-and-vue-sfc.md","/zh/advanced/cookbook/resolving-routes.md"]}],"/zh/reference/":[{"text":"核心","collapsible":true,"children":["/zh/reference/cli.md","/zh/reference/config.md","/zh/reference/frontmatter.md","/zh/reference/components.md","/zh/reference/plugin-api.md","/zh/reference/theme-api.md","/zh/reference/client-api.md","/zh/reference/node-api.md"]},{"text":"打包工具","children":["/zh/reference/bundler/vite.md","/zh/reference/bundler/webpack.md"]},{"text":"生态系统","children":[{"text":"默认主题","link":"https://ecosystem.vuejs.press/zh/themes/default/"},{"text":"插件","link":"https://ecosystem.vuejs.press/zh/plugins/"}]}]},"editLinkText":"在 GitHub 上编辑此页","lastUpdatedText":"上次更新","contributorsText":"贡献者","tip":"提示","warning":"注意","danger":"警告","notFound":["这里什么都没有","我们怎么到这来了?","这是一个 404 页面","看起来我们进入了错误的链接"],"backToHome":"返回首页","openInNewWindow":"在新窗口打开","toggleColorMode":"切换颜色模式","toggleSidebar":"切换侧边栏"}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebar":"heading","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),k1=ce(w1),jf=()=>k1,Kf=Symbol(""),C1=()=>{const e=We(Kf);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},O1=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},x1=jt({enhance({app:e}){const t=jf(),n=e._context.provides[bi],r=B(()=>O1(t.value,n.routeLocale.value));e.provide(Kf,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}}),z0({app:e,id:"org.vuejs.vuepress.plugin-theme-data",label:"VuePress Theme Data Plugin",packageName:"@vuepress/plugin-theme-data",homepage:"https://v2.vuepress.vuejs.org",logo:"https://v2.vuepress.vuejs.org/images/hero.png",componentStateTypes:["VuePress"]},o=>{o.on.inspectComponent(s=>{s.instanceData.state.push({type:"VuePress",key:"themeData",editable:!1,value:t.value},{type:"VuePress",key:"themeLocaleData",editable:!1,value:r.value})})})}}),P1=Object.freeze(Object.defineProperty({__proto__:null,default:x1},Symbol.toStringTag,{value:"Module"})),I1=()=>jf(),He=()=>C1(),Wf=Symbol(""),R1=e=>{const t=(n=e.value)=>{const r=window.document.documentElement;r.dataset.theme=n?"dark":"light"};qe(()=>{Be(e,t,{immediate:!0})}),Vo(()=>{t()})},Hi=()=>{const e=We(Wf);if(!e)throw new Error("useDarkMode() is called without provider.");return e},L1=()=>{const e=He(),t=m_(),n=Oi("vuepress-color-scheme",e.value.colorMode),r=B({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});Tn(Wf,r),R1(r)};let vs=null,cr=null;const D1={wait:()=>vs,pending:()=>{vs=new Promise(e=>{cr=e})},resolve:()=>{cr==null||cr(),vs=null,cr=null}},Gf=()=>D1,Yn=(e,t)=>{const{notFound:n,meta:r,path:o}=Ir(e,t);return n?{text:o,link:o}:{text:r.title||o,link:o}},uu=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),V1=(e,t)=>{if(t.hash===e)return!0;const n=uu(t.path),r=uu(e);return n===r},qf=(e,t)=>e.link&&V1(e.link,t)?!0:"children"in e?e.children.some(n=>qf(n,t)):!1,Yf=e=>!fm(e)&&!Kr(e),Xf=e=>!Bo(e)||e.includes("github.com")?"GitHub":e.includes("bitbucket.org")?"Bitbucket":e.includes("gitlab.com")?"GitLab":e.includes("gitee.com")?"Gitee":null,N1={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},M1=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=Xf(e);return n!==null?N1[n]:null},B1=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const s=M1({docsRepo:e,editLinkPattern:o});return s?s.replace(/:repo/,Bo(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,gi(`${Rc(n)}/${r}`)):null},Un=(e="",t="")=>ff(t)||Kr(t)?t:`${Em(e)}${t}`,mo=ce([]),F1=()=>{const e=cn(),t=He(),n=Et(),r=B(()=>n.value.sidebarDepth??t.value.sidebarDepth??2);e.beforeEach((s,i)=>{s.path!==i.path&&(mo.value=[])});const o=()=>{if(r.value<=0){mo.value=[];return}mo.value=I_({levels:[2,r.value+1],ignore:[".vp-badge"]})};Be(r,o),qe(o)},H1=()=>mo,z1=e=>({text:e.title,link:e.link,children:zi(e.children)}),zi=e=>e?e.map(t=>z1(t)):[],Zf=(e,t)=>[{text:e.title,children:zi(t)}],Qf=(e,t,n,r="")=>{const o=(s,i)=>{var l;const a=vt(s)?Yn(Un(i,s)):vt(s.link)?{...s,link:Yf(s.link)?Yn(Un(i,s.link)).link:s.link}:s;if("children"in a)return{...a,children:a.children.map(u=>o(u,Un(i,a.prefix)))};if(a.link===n){const u=((l=t[0])==null?void 0:l.level)===1?t[0].children:t;return{...a,children:zi(u)}}return a};return e.map(s=>o(s,r))},$1=(e,t,n,r)=>{const o=D_(e).sort((s,i)=>i.length-s.length);for(const s of o)if(cf(decodeURI(r),s)){const i=e[s];return i?i==="heading"?Zf(t,n):Qf(i,n,r,s):[]}return console.warn(`${decodeURI(r)} is missing sidebar config.`),[]},Jf=Symbol("sidebarItems"),$i=()=>{const e=We(Jf);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},U1=(e,t,n,r,o)=>e===!1?[]:e==="heading"?Zf(t,o):Array.isArray(e)?Qf(e,o,n,r):_i(e)?$1(e,t,o,n):[],j1=()=>{const e=He(),t=Et(),n=er(),r=Ut(),o=On(),s=H1(),i=B(()=>t.value.home?!1:t.value.sidebar??e.value.sidebar??"heading"),a=B(()=>U1(i.value,n.value,r.path,o.value,s.value));Tn(Jf,a)},K1=me({__name:"Badge",props:{type:{default:"tip"},text:{default:""},vertical:{default:void 0}},setup(e,{expose:t}){t();const n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Pe=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};function W1(e,t,n,r,o,s){return X(),re("span",{class:nt(["vp-badge",n.type]),style:Zn({verticalAlign:n.vertical})},[Le(e.$slots,"default",{},()=>[on(Re(n.text),1)])],6)}const G1=Pe(K1,[["render",W1],["__file","Badge.vue"]]),q1=me({__name:"VPHomeFeatures",setup(e,{expose:t}){t();const n=Et(),r=B(()=>n.value.features??[]),o={frontmatter:n,features:r};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),Y1={key:0,class:"vp-features"};function X1(e,t,n,r,o,s){return r.features.length?(X(),re("div",Y1,[(X(!0),re(ye,null,nn(r.features,i=>(X(),re("div",{key:i.title,class:"vp-feature"},[ae("h2",null,Re(i.title),1),ae("p",null,Re(i.details),1)]))),128))])):Me("",!0)}const Z1=Pe(q1,[["render",X1],["__file","VPHomeFeatures.vue"]]),Q1=me({__name:"VPHomeFooter",setup(e,{expose:t}){t();const n=Et(),r=B(()=>n.value.footer),o=B(()=>n.value.footerHtml),s={frontmatter:n,footer:r,footerHtml:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),J1=["innerHTML"],ey=["textContent"];function ty(e,t,n,r,o,s){return r.footer?(X(),re(ye,{key:0},[r.footerHtml?(X(),re("div",{key:0,class:"vp-footer","vp-footer":"",innerHTML:r.footer},null,8,J1)):(X(),re("div",{key:1,class:"vp-footer","vp-footer":"",textContent:Re(r.footer)},null,8,ey))],64)):Me("",!0)}const ny=Pe(Q1,[["render",ty],["__file","VPHomeFooter.vue"]]),ry=me({__name:"VPHomeHero",setup(e,{expose:t}){t();const n=Et(),r=Ei(),o=Hi(),s=B(()=>n.value.heroText===null?null:n.value.heroText||r.value.title||"Hello"),i=B(()=>n.value.tagline===null?null:n.value.tagline||r.value.description||"Welcome to your VuePress site"),a=B(()=>o.value&&n.value.heroImageDark!==void 0?n.value.heroImageDark:n.value.heroImage),l=B(()=>n.value.heroAlt||s.value||"hero"),u=B(()=>n.value.heroHeight??280),f=B(()=>Array.isArray(n.value.actions)?n.value.actions.map(({text:p,link:_,type:v="primary"})=>({text:p,link:_,type:v})):[]),d={frontmatter:n,siteLocale:r,isDarkMode:o,heroText:s,tagline:i,heroImage:a,heroAlt:l,heroHeight:u,actions:f,HomeHeroImage:()=>{if(!a.value)return null;const p=he("img",{class:"vp-hero-image",src:Ti(a.value),alt:l.value,height:u.value});return n.value.heroImageDark===void 0?p:he(Si,()=>p)},get AutoLink(){return tr}};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),oy={class:"vp-hero"},sy={key:0,id:"main-title"},iy={key:1,class:"vp-hero-description"},ay={key:2,class:"vp-hero-actions"};function ly(e,t,n,r,o,s){return X(),re("header",oy,[le(r.HomeHeroImage),r.heroText?(X(),re("h1",sy,Re(r.heroText),1)):Me("",!0),r.tagline?(X(),re("p",iy,Re(r.tagline),1)):Me("",!0),r.actions.length?(X(),re("p",ay,[(X(!0),re(ye,null,nn(r.actions,i=>(X(),De(r.AutoLink,{key:i.text,class:nt(["vp-hero-action-button",[i.type]]),config:i},null,8,["class","config"]))),128))])):Me("",!0)])}const uy=Pe(ry,[["render",ly],["__file","VPHomeHero.vue"]]),cy=me({__name:"VPHome",setup(e,{expose:t}){t();const n={VPHomeFeatures:Z1,VPHomeFooter:ny,VPHomeHero:uy,get Content(){return Ai}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),fy={class:"vp-home"},dy={class:"theme-default-content","vp-content":""};function py(e,t,n,r,o,s){return X(),re("main",fy,[le(r.VPHomeHero),le(r.VPHomeFeatures),ae("div",dy,[le(r.Content)]),le(r.VPHomeFooter)])}const hy=Pe(cy,[["render",py],["__file","VPHome.vue"]]),my=me({__name:"VPNavbarBrand",setup(e,{expose:t}){t();const n=On(),r=Ei(),o=He(),s=Hi(),i=B(()=>o.value.home||n.value),a=B(()=>r.value.title),l=B(()=>s.value&&o.value.logoDark!==void 0?o.value.logoDark:o.value.logo),u=B(()=>o.value.logoAlt??a.value),f=B(()=>a.value.toLocaleUpperCase().trim()===u.value.toLocaleUpperCase().trim()),d={routeLocale:n,siteLocale:r,themeLocale:o,isDarkMode:s,navbarBrandLink:i,navbarBrandTitle:a,navbarBrandLogo:l,navbarBrandLogoAlt:u,navBarLogoAltMatchesTitle:f,NavbarBrandLogo:()=>{if(!l.value)return null;const p=he("img",{class:"vp-site-logo",src:Ti(l.value),alt:u.value});return o.value.logoDark===void 0?p:he(Si,()=>p)},get RouteLink(){return zo}};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),gy=["aria-hidden"];function _y(e,t,n,r,o,s){return X(),De(r.RouteLink,{to:r.navbarBrandLink},{default:Ne(()=>[le(r.NavbarBrandLogo),r.navbarBrandTitle?(X(),re("span",{key:0,class:nt(["vp-site-name",{"vp-hide-mobile":r.navbarBrandLogo}]),"aria-hidden":r.navBarLogoAltMatchesTitle},Re(r.navbarBrandTitle),11,gy)):Me("",!0)]),_:1},8,["to"])}const vy=Pe(my,[["render",_y],["__file","VPNavbarBrand.vue"]]),yy=me({__name:"VPDropdownTransition",setup(e,{expose:t}){t();const o={setHeight:s=>{s.style.height=`${s.scrollHeight}px`},unsetHeight:s=>{s.style.height=""}};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});function by(e,t,n,r,o,s){return X(),De(mi,{name:"vp-dropdown",onEnter:r.setHeight,onAfterEnter:r.unsetHeight,onBeforeLeave:r.setHeight},{default:Ne(()=>[Le(e.$slots,"default")]),_:3})}const ed=Pe(yy,[["render",by],["__file","VPDropdownTransition.vue"]]),Ey=me({__name:"VPNavbarDropdown",props:{item:{}},setup(e,{expose:t}){t();const n=e,{item:r}=Mu(n),o=Ut(),s=ce(!1),i=B(()=>r.value.ariaLabel||r.value.text),a=(f,c)=>c[c.length-1]===f,l=f=>{const c=f.detail===0;s.value=c?!s.value:!1};Be(()=>o.path,()=>{s.value=!1});const u={props:n,item:r,route:o,open:s,dropdownAriaLabel:i,isLastItemOfArray:a,handleDropdown:l,VPDropdownTransition:ed,get AutoLink(){return tr}};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),Sy=["aria-label"],Ay={class:"title"},Ty=["aria-label"],wy={class:"title"},ky={class:"vp-navbar-dropdown"},Cy={class:"vp-navbar-dropdown-subtitle"},Oy={key:1},xy={class:"vp-navbar-dropdown-subitem-wrapper"};function Py(e,t,n,r,o,s){return X(),re("div",{class:nt(["vp-navbar-dropdown-wrapper",{open:r.open}])},[ae("button",{class:"vp-navbar-dropdown-title",type:"button","aria-label":r.dropdownAriaLabel,onClick:r.handleDropdown},[ae("span",Ay,Re(r.item.text),1),t[1]||(t[1]=ae("span",{class:"arrow down"},null,-1))],8,Sy),ae("button",{class:"vp-navbar-dropdown-title-mobile",type:"button","aria-label":r.dropdownAriaLabel,onClick:t[0]||(t[0]=i=>r.open=!r.open)},[ae("span",wy,Re(r.item.text),1),ae("span",{class:nt(["arrow",r.open?"down":"right"])},null,2)],8,Ty),le(r.VPDropdownTransition,null,{default:Ne(()=>[bo(ae("ul",ky,[(X(!0),re(ye,null,nn(r.item.children,i=>(X(),re("li",{key:i.text,class:"vp-navbar-dropdown-item"},["children"in i?(X(),re(ye,{key:0},[ae("h4",Cy,[i.link?(X(),De(r.AutoLink,{key:0,config:i,onFocusout:a=>r.isLastItemOfArray(i,r.item.children)&&i.children.length===0&&(r.open=!1)},null,8,["config","onFocusout"])):(X(),re("span",Oy,Re(i.text),1))]),ae("ul",xy,[(X(!0),re(ye,null,nn(i.children,a=>(X(),re("li",{key:a.link,class:"vp-navbar-dropdown-subitem"},[le(r.AutoLink,{config:a,onFocusout:l=>r.isLastItemOfArray(a,i.children)&&r.isLastItemOfArray(i,r.item.children)&&(r.open=!1)},null,8,["config","onFocusout"])]))),128))])],64)):(X(),De(r.AutoLink,{key:1,config:i,onFocusout:a=>r.isLastItemOfArray(i,r.item.children)&&(r.open=!1)},null,8,["config","onFocusout"]))]))),128))],512),[[wo,r.open]])]),_:1})],2)}const Iy=Pe(Ey,[["render",Py],["__file","VPNavbarDropdown.vue"]]),td=(e,t="")=>vt(e)?Yn(Un(t,e)):"children"in e?{...e,children:e.children.map(n=>td(n,Un(t,e.prefix)))}:{...e,link:Yf(e.link)?Yn(Un(t,e.link)).link:e.link},Ry=()=>{const e=He();return B(()=>(e.value.navbar||[]).map(t=>td(t)))},Ly=()=>{const e=He(),t=B(()=>e.value.repo),n=B(()=>t.value?Xf(t.value):null),r=B(()=>t.value&&!Bo(t.value)?`https://github.com/${t.value}`:t.value),o=B(()=>r.value?e.value.repoLabel?e.value.repoLabel:n.value===null?"Source":n.value:null);return B(()=>!r.value||!o.value?[]:[{text:o.value,link:r.value}])},Dy=()=>{const e=Ut(),t=R_(),n=On(),r=tf(),o=Ei(),s=I1(),i=He();return B(()=>{const a=Object.keys(r.value.locales);if(a.length<2)return[];const l=e.path,u=e.fullPath;return[{text:`${i.value.selectLanguageText}`,ariaLabel:`${i.value.selectLanguageAriaLabel??i.value.selectLanguageText}`,children:a.map(c=>{var b,A;const d=((b=r.value.locales)==null?void 0:b[c])??{},p=((A=s.value.locales)==null?void 0:A[c])??{},_=`${d.lang}`,v=p.selectLanguageName??_;if(_===o.value.lang)return{text:v,activeMatch:".",link:e.fullPath};const y=l.replace(n.value,c);return{text:v,link:t.value.some(m=>m===y)?u.replace(l,y):p.home??c}})}]})},Vy="719px",Ny={mobile:Vy};var Nr;(function(e){e.Mobile="mobile"})(Nr||(Nr={}));const My={[Nr.Mobile]:Number.parseInt(Ny.mobile.replace("px",""),10)},nd=(e,t)=>{const n=My[e];Number.isInteger(n)&&(ct("orientationchange",()=>{t(n)},!1),ct("resize",()=>{t(n)},!1),qe(()=>{t(n)}))},By=me({__name:"VPNavbarItems",setup(e,{expose:t}){t();const n=Ry(),r=Dy(),o=Ly(),s=ce(!1),i=B(()=>He().value.navbarLabel??"site navigation"),a=B(()=>[...n.value,...r.value,...o.value]);nd(Nr.Mobile,u=>{s.value=window.innerWidth(X(),re("div",{key:i.text,class:"vp-navbar-item"},["children"in i?(X(),De(r.VPNavbarDropdown,{key:0,class:nt({mobile:r.isMobile}),item:i},null,8,["class","item"])):(X(),De(r.AutoLink,{key:1,config:i},null,8,["config"]))]))),128))],8,Fy)):Me("",!0)}const rd=Pe(By,[["render",Hy],["__file","VPNavbarItems.vue"]]),zy={},$y={class:"dark-icon",viewBox:"0 0 32 32"};function Uy(e,t){return X(),re("svg",$y,t[0]||(t[0]=[ae("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1)]))}const jy=Pe(zy,[["render",Uy],["__file","VPDarkIcon.vue"]]),Ky={},Wy={class:"light-icon",viewBox:"0 0 32 32"};function Gy(e,t){return X(),re("svg",Wy,t[0]||(t[0]=[bh('',9)]))}const qy=Pe(Ky,[["render",Gy],["__file","VPLightIcon.vue"]]),Yy=me({__name:"VPToggleColorModeButton",setup(e,{expose:t}){t();const n=He(),r=Hi(),s={themeLocale:n,isDarkMode:r,toggleColorMode:()=>{r.value=!r.value},VPDarkIcon:jy,VPLightIcon:qy};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),Xy=["title"];function Zy(e,t,n,r,o,s){return X(),re("button",{type:"button",class:"vp-toggle-color-mode-button",title:r.themeLocale.toggleColorMode,onClick:r.toggleColorMode},[bo(le(r.VPLightIcon,null,null,512),[[wo,!r.isDarkMode]]),bo(le(r.VPDarkIcon,null,null,512),[[wo,r.isDarkMode]])],8,Xy)}const Qy=Pe(Yy,[["render",Zy],["__file","VPToggleColorModeButton.vue"]]),Jy=me({__name:"VPToggleSidebarButton",emits:["toggle"],setup(e,{expose:t}){t();const r={themeLocale:He()};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),eb=["title"];function tb(e,t,n,r,o,s){return X(),re("div",{class:"vp-toggle-sidebar-button",title:r.themeLocale.toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:t[0]||(t[0]=i=>e.$emit("toggle"))},t[1]||(t[1]=[ae("div",{class:"icon","aria-hidden":"true"},[ae("span"),ae("span"),ae("span")],-1)]),8,eb)}const nb=Pe(Jy,[["render",tb],["__file","VPToggleSidebarButton.vue"]]),rb=me({__name:"VPNavbar",emits:["toggleSidebar"],setup(e,{expose:t}){t();const n=af("SearchBox")?ci("SearchBox"):()=>null,r=He(),o=ce(null),s=ce(null),i=ce(0),a=B(()=>i.value?{maxWidth:`${i.value}px`}:{}),l=(f,c)=>{var _;const d=(_=f==null?void 0:f.ownerDocument.defaultView)==null?void 0:_.getComputedStyle(f,null)[c],p=Number.parseInt(d,10);return Number.isNaN(p)?0:p};nd(Nr.Mobile,f=>{var d;const c=l(o.value,"paddingLeft")+l(o.value,"paddingRight");window.innerWidthe.$emit("toggleSidebar"))}),ae("span",sb,[le(r.VPNavbarBrand)],512),ae("div",{class:"vp-navbar-items-wrapper",style:Zn(r.linksWrapperStyle)},[Le(e.$slots,"before"),le(r.VPNavbarItems,{class:"vp-hide-mobile"}),Le(e.$slots,"after"),r.themeLocale.colorModeSwitch?(X(),De(r.VPToggleColorModeButton,{key:0})):Me("",!0),le(r.SearchBox)],4)],512)}const ab=Pe(rb,[["render",ib],["__file","VPNavbar.vue"]]),lb={},ub={class:"edit-icon",viewBox:"0 0 1024 1024"};function cb(e,t){return X(),re("svg",ub,t[0]||(t[0]=[ae("g",{fill:"currentColor"},[ae("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),ae("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})],-1)]))}const fb=Pe(lb,[["render",cb],["__file","VPEditIcon.vue"]]),db=()=>{const e=He(),t=er(),n=Et();return B(()=>{var o;return n.value.contributors??e.value.contributors??!0?((o=t.value.git)==null?void 0:o.contributors)??null:null})},pb=()=>{const e=He(),t=er(),n=Et();return B(()=>{if(!(n.value.editLink??e.value.editLink??!0))return null;const{repo:o,docsRepo:s=o,docsBranch:i="main",docsDir:a="",editLinkText:l}=e.value;if(!s)return null;const u=B1({docsRepo:s,docsBranch:i,docsDir:a,filePathRelative:t.value.filePathRelative,editLinkPattern:n.value.editLinkPattern??e.value.editLinkPattern});return u?{text:l??"Edit this page",link:u}:null})},hb=()=>{const e=He(),t=er(),n=Et();return B(()=>{var s;return!(n.value.lastUpdated??e.value.lastUpdated??!0)||!((s=t.value.git)!=null&&s.updatedTime)?null:new Date(t.value.git.updatedTime).toLocaleString()})},mb=me({__name:"VPPageMeta",setup(e,{expose:t}){t();const n=He(),r=pb(),o=hb(),s=db(),i={themeLocale:n,editLink:r,lastUpdated:o,contributors:s,VPEditIcon:fb,get AutoLink(){return tr}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),gb={class:"vp-page-meta"},_b={key:0,class:"vp-meta-item edit-link"},vb={class:"vp-meta-item git-info"},yb={key:0,class:"vp-meta-item last-updated"},bb={class:"meta-item-label"},Eb={class:"meta-item-info"},Sb={key:1,class:"vp-meta-item contributors"},Ab={class:"meta-item-label"},Tb={class:"meta-item-info"},wb=["title"];function kb(e,t,n,r,o,s){const i=ci("ClientOnly");return X(),re("footer",gb,[r.editLink?(X(),re("div",_b,[le(r.AutoLink,{class:"label",config:r.editLink},{before:Ne(()=>[le(r.VPEditIcon)]),_:1},8,["config"])])):Me("",!0),ae("div",vb,[r.lastUpdated?(X(),re("div",yb,[ae("span",bb,Re(r.themeLocale.lastUpdatedText)+": ",1),le(i,null,{default:Ne(()=>[ae("span",Eb,Re(r.lastUpdated),1)]),_:1})])):Me("",!0),r.contributors&&r.contributors.length?(X(),re("div",Sb,[ae("span",Ab,Re(r.themeLocale.contributorsText)+": ",1),ae("span",Tb,[(X(!0),re(ye,null,nn(r.contributors,(a,l)=>(X(),re(ye,{key:l},[ae("span",{class:"contributor",title:`email: ${a.email}`},Re(a.name),9,wb),l!==r.contributors.length-1?(X(),re(ye,{key:0},[on(", ")],64)):Me("",!0)],64))),128))])])):Me("",!0)])])}const Cb=Pe(mb,[["render",kb],["__file","VPPageMeta.vue"]]),Ob=()=>{const e=cn(),t=Ut();return n=>{n&&(ff(n)?t.path!==n&&e.push(n):Kr(n)?window.open(n):e.push(encodeURI(n)))}},cu=(e,t)=>e===!1?!1:vt(e)?Yn(e,t):_i(e)?{...e,link:Yn(e.link,t).link}:null,Ws=(e,t,n)=>{const r=e.findIndex(s=>s.link===t);if(r!==-1){const s=e[r+n];return s?s.link?s:"prefix"in s&&!Ir(s.prefix).notFound?{...s,link:s.prefix}:null:null}for(const s of e)if("children"in s){const i=Ws(s.children,t,n);if(i)return i}const o=e.findIndex(s=>"prefix"in s&&s.prefix===t);if(o!==-1){const s=e[o+n];return s?s.link?s:"prefix"in s&&!Ir(s.prefix).notFound?{...s,link:s.prefix}:null:null}return null},xb=()=>{const e=Et(),t=He(),n=$i(),r=Ut(),o=B(()=>{const i=cu(e.value.prev,r.path);return i===!1?null:i??(t.value.prev===!1?null:Ws(n.value,r.path,-1))}),s=B(()=>{const i=cu(e.value.next,r.path);return i===!1?null:i??(t.value.next===!1?null:Ws(n.value,r.path,1))});return{prevLink:o,nextLink:s}},Pb=me({__name:"VPPageNav",setup(e,{expose:t}){t();const n=He(),r=Ob(),{prevLink:o,nextLink:s}=xb(),i=B(()=>n.value.pageNavbarLabel??"page navigation");ct("keydown",l=>{l.altKey&&(l.key==="ArrowRight"?s.value&&(r(s.value.link),l.preventDefault()):l.key==="ArrowLeft"&&o.value&&(r(o.value.link),l.preventDefault()))});const a={themeLocale:n,navigate:r,prevLink:o,nextLink:s,navbarLabel:i,get AutoLink(){return tr}};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),Ib=["aria-label"],Rb={class:"hint"},Lb={class:"link"},Db={class:"hint"},Vb={class:"link"};function Nb(e,t,n,r,o,s){return r.prevLink||r.nextLink?(X(),re("nav",{key:0,class:"vp-page-nav","aria-label":r.navbarLabel},[r.prevLink?(X(),De(r.AutoLink,{key:0,class:"prev",config:r.prevLink},{default:Ne(()=>[ae("div",Rb,[t[0]||(t[0]=ae("span",{class:"arrow left"},null,-1)),on(" "+Re(r.themeLocale.prev??"Prev"),1)]),ae("div",Lb,[ae("span",null,Re(r.prevLink.text),1)])]),_:1},8,["config"])):Me("",!0),r.nextLink?(X(),De(r.AutoLink,{key:1,class:"next",config:r.nextLink},{default:Ne(()=>[ae("div",Db,[on(Re(r.themeLocale.next??"Next")+" ",1),t[1]||(t[1]=ae("span",{class:"arrow right"},null,-1))]),ae("div",Vb,[ae("span",null,Re(r.nextLink.text),1)])]),_:1},8,["config"])):Me("",!0)],8,Ib)):Me("",!0)}const Mb=Pe(Pb,[["render",Nb],["__file","VPPageNav.vue"]]),Bb=me({__name:"VPPage",setup(e,{expose:t}){t(),F1();const n={VPPageMeta:Cb,VPPageNav:Mb,get Content(){return Ai}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Fb={class:"vp-page"},Hb={class:"theme-default-content","vp-content":""};function zb(e,t,n,r,o,s){return X(),re("main",Fb,[Le(e.$slots,"top"),ae("div",Hb,[Le(e.$slots,"content-top"),le(r.Content),Le(e.$slots,"content-bottom")]),le(r.VPPageMeta),le(r.VPPageNav),Le(e.$slots,"bottom")])}const $b=Pe(Bb,[["render",zb],["__file","VPPage.vue"]]),Ub=me({__name:"VPSidebarItem",props:{item:{},depth:{default:0}},setup(e,{expose:t}){t();const n=e,{item:r,depth:o}=Mu(n),s=Ut(),i=cn(),a=B(()=>"collapsible"in r.value&&r.value.collapsible),l=B(()=>qf(r.value,s)),u=B(()=>({"vp-sidebar-item":!0,"vp-sidebar-heading":o.value===0,active:l.value,collapsible:a.value})),f=B(()=>a.value?l.value:!0),[c,d]=u_(f.value),p=y=>{a.value&&(y.preventDefault(),d())},_=i.afterEach(()=>{Jn(()=>{c.value=f.value})});ui(()=>{_()});const v={props:n,item:r,depth:o,route:s,router:i,collapsible:a,isActive:l,itemClass:u,isOpenDefault:f,isOpen:c,toggleIsOpen:d,onClick:p,unregisterRouterHook:_,VPDropdownTransition:ed,get AutoLink(){return tr}};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),jb={class:"vp-sidebar-children"};function Kb(e,t,n,r,o,s){const i=ci("VPSidebarItem",!0);return X(),re("li",null,[r.item.link?(X(),De(r.AutoLink,{key:0,class:nt(r.itemClass),config:r.item},null,8,["class","config"])):(X(),re("p",{key:1,tabindex:"0",class:nt(r.itemClass),onClick:r.onClick,onKeydown:om(r.onClick,["enter"])},[on(Re(r.item.text)+" ",1),r.collapsible?(X(),re("span",{key:0,class:nt(["arrow",r.isOpen?"down":"right"])},null,2)):Me("",!0)],34)),"children"in r.item&&r.item.children.length?(X(),De(r.VPDropdownTransition,{key:2},{default:Ne(()=>[bo(ae("ul",jb,[(X(!0),re(ye,null,nn(r.item.children,a=>(X(),De(i,{key:`${r.depth}${a.text}${a.link}`,item:a,depth:r.depth+1},null,8,["item","depth"]))),128))],512),[[wo,r.isOpen]])]),_:1})):Me("",!0)])}const Wb=Pe(Ub,[["render",Kb],["__file","VPSidebarItem.vue"]]),Gb=me({__name:"VPSidebarItems",setup(e,{expose:t}){t();const n=Ut(),r=$i();qe(()=>{Be(()=>n.hash,s=>{const i=document.querySelector(".vp-sidebar");if(!i)return;const a=document.querySelector(`.vp-sidebar a.vp-sidebar-item[href="${n.path}${s}"]`);if(!a)return;const{top:l,height:u}=i.getBoundingClientRect(),{top:f,height:c}=a.getBoundingClientRect();fl+u&&a.scrollIntoView(!1)})});const o={route:n,sidebarItems:r,VPSidebarItem:Wb};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),qb={key:0,class:"vp-sidebar-items"};function Yb(e,t,n,r,o,s){return r.sidebarItems.length?(X(),re("ul",qb,[(X(!0),re(ye,null,nn(r.sidebarItems,i=>(X(),De(r.VPSidebarItem,{key:`${i.text}${i.link}`,item:i},null,8,["item"]))),128))])):Me("",!0)}const Xb=Pe(Gb,[["render",Yb],["__file","VPSidebarItems.vue"]]),Zb=me({__name:"VPSidebar",setup(e,{expose:t}){t();const n={VPNavbarItems:rd,VPSidebarItems:Xb};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Qb={class:"vp-sidebar","vp-sidebar":""};function Jb(e,t,n,r,o,s){return X(),re("aside",Qb,[le(r.VPNavbarItems),Le(e.$slots,"top"),le(r.VPSidebarItems),Le(e.$slots,"bottom")])}const eE=Pe(Zb,[["render",Jb],["__file","VPSidebar.vue"]]),tE=me({__name:"Layout",setup(e,{expose:t}){t();const n=er(),r=Et(),o=He(),s=B(()=>r.value.navbar!==!1&&o.value.navbar!==!1),i=$i(),a=ce(!1),l=m=>{a.value=typeof m=="boolean"?m:!a.value},u={x:0,y:0},f=m=>{u.x=m.changedTouches[0].clientX,u.y=m.changedTouches[0].clientY},c=m=>{const E=m.changedTouches[0].clientX-u.x,N=m.changedTouches[0].clientY-u.y;Math.abs(E)>Math.abs(N)&&Math.abs(E)>40&&(E>0&&u.x<=80?l(!0):l(!1))},d=B(()=>r.value.externalLinkIcon??o.value.externalLinkIcon??!0),p=B(()=>[{"no-navbar":!s.value,"no-sidebar":!i.value.length,"sidebar-open":a.value,"external-link-icon":d.value},r.value.pageClass]);let _;qe(()=>{_=cn().afterEach(()=>{l(!1)})}),Vo(()=>{_()});const v=Gf(),y=v.resolve,b=v.pending,A={page:n,frontmatter:r,themeLocale:o,shouldShowNavbar:s,sidebarItems:i,isSidebarOpen:a,toggleSidebar:l,touchStart:u,onTouchStart:f,onTouchEnd:c,enableExternalLinkIcon:d,containerClass:p,get unregisterRouterHook(){return _},set unregisterRouterHook(m){_=m},scrollPromise:v,onBeforeEnter:y,onBeforeLeave:b,VPHome:hy,VPNavbar:ab,VPPage:$b,VPSidebar:eE};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}});function nE(e,t,n,r,o,s){return X(),re("div",{class:nt(["vp-theme-container",r.containerClass]),"vp-container":"",onTouchstart:r.onTouchStart,onTouchend:r.onTouchEnd},[Le(e.$slots,"navbar",{},()=>[r.shouldShowNavbar?(X(),De(r.VPNavbar,{key:0,onToggleSidebar:r.toggleSidebar},{before:Ne(()=>[Le(e.$slots,"navbar-before")]),after:Ne(()=>[Le(e.$slots,"navbar-after")]),_:3})):Me("",!0)]),ae("div",{class:"vp-sidebar-mask",onClick:t[0]||(t[0]=i=>r.toggleSidebar(!1))}),Le(e.$slots,"sidebar",{},()=>[le(r.VPSidebar,null,{top:Ne(()=>[Le(e.$slots,"sidebar-top")]),bottom:Ne(()=>[Le(e.$slots,"sidebar-bottom")]),_:3})]),Le(e.$slots,"page",{},()=>[r.frontmatter.home?(X(),De(r.VPHome,{key:0})):(X(),De(mi,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:r.onBeforeEnter,onBeforeLeave:r.onBeforeLeave},{default:Ne(()=>[(X(),De(r.VPPage,{key:r.page.path},{top:Ne(()=>[Le(e.$slots,"page-top")]),"content-top":Ne(()=>[Le(e.$slots,"page-content-top")]),"content-bottom":Ne(()=>[Le(e.$slots,"page-content-bottom")]),bottom:Ne(()=>[Le(e.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34)}const rE=Pe(tE,[["render",nE],["__file","Layout.vue"]]),oE=me({__name:"NotFound",setup(e,{expose:t}){t();const n=On(),r=He(),o=r.value.notFound??["Not Found"],s=()=>o[Math.floor(Math.random()*o.length)],i=r.value.home??n.value,a=r.value.backToHome??"Back to home",l={routeLocale:n,themeLocale:r,messages:o,getMsg:s,homeLink:i,homeText:a,get RouteLink(){return zo}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),sE={class:"vp-theme-container","vp-container":""},iE={class:"page"},aE={class:"theme-default-content","vp-content":""};function lE(e,t,n,r,o,s){return X(),re("div",sE,[ae("main",iE,[ae("div",aE,[t[0]||(t[0]=ae("h1",null,"404",-1)),ae("blockquote",null,Re(r.getMsg()),1),le(r.RouteLink,{to:r.homeLink},{default:Ne(()=>[on(Re(r.homeText),1)]),_:1},8,["to"])])])])}const uE=Pe(oE,[["render",lE],["__scopeId","data-v-a585f766"],["__file","NotFound.vue"]]),cE=jt({enhance({app:e,router:t}){af("Badge")||e.component("Badge",G1);const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await Gf().wait(),n(...r))},setup(){L1(),j1()},layouts:{Layout:rE,NotFound:uE}}),fE=Object.freeze(Object.defineProperty({__proto__:null,default:cE},Symbol.toStringTag,{value:"Module"}));function dE(e,t,n){var r,o,s;n===void 0&&(n={});var i=(r=n.isImmediate)!=null&&r,a=(o=n.callback)!=null&&o,l=n.maxWait,u=Date.now(),f=[];function c(){if(l!==void 0){var p=Date.now()-u;if(p+t>=l)return l-p}return t}var d=function(){var p=[].slice.call(arguments),_=this;return new Promise(function(v,y){var b=i&&s===void 0;if(s!==void 0&&clearTimeout(s),s=setTimeout(function(){if(s=void 0,u=Date.now(),!i){var m=e.apply(_,p);a&&a(m),f.forEach(function(E){return(0,E.resolve)(m)}),f=[]}},c()),b){var A=e.apply(_,p);return a&&a(A),v(A)}f.push({resolve:v,reject:y})})};return d.cancel=function(p){s!==void 0&&clearTimeout(s),f.forEach(function(_){return(0,_.reject)(p)}),f=[]},d}var pE={appId:"34YFD9IUQ2",apiKey:"9a9058b8655746634e01071411c366b8",indexName:"vuepress",searchParameters:{facetFilters:["tags:v2"]},locales:{"/zh/":{placeholder:"搜索文档",translations:{button:{buttonText:"搜索文档",buttonAriaLabel:"搜索文档"},modal:{searchBox:{resetButtonTitle:"清除查询条件",resetButtonAriaLabel:"清除查询条件",cancelButtonText:"取消",cancelButtonAriaLabel:"取消"},startScreen:{recentSearchesTitle:"搜索历史",noRecentSearchesText:"没有搜索历史",saveRecentSearchButtonTitle:"保存至搜索历史",removeRecentSearchButtonTitle:"从搜索历史中移除",favoriteSearchesTitle:"收藏",removeFavoriteSearchButtonTitle:"从收藏中移除"},errorScreen:{titleText:"无法获取结果",helpText:"你可能需要检查你的网络连接"},footer:{selectText:"选择",navigateText:"切换",closeText:"关闭",searchByText:"搜索提供者"},noResultsScreen:{noResultsText:"无法找到相关结果",suggestedQueryText:"你可以尝试查询",reportMissingResultsText:"你认为该查询应该有结果?",reportMissingResultsLinkText:"点击反馈"}}}}}};const hE=e=>{const t=ct("keydown",n=>{const r=n.key==="k"&&(n.ctrlKey||n.metaKey);n.key!=="/"&&!r||(n.preventDefault(),e(),t())})},mE=e=>e.button===1||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey,gE=()=>{const e=cn();return{transformItems:t=>t.map(n=>({...n,url:`/${gi(mm(n.url,"/"))}`})),hitComponent:({hit:t,children:n})=>({type:"a",ref:void 0,constructor:void 0,key:void 0,props:{href:t.url,onClick:r=>{mE(r)||(r.preventDefault(),e.push(t.url.replace("/","/")))},children:n},__v:null}),navigator:{navigate:({itemUrl:t})=>{e.push(t.replace("/","/"))}},transformSearchClient:t=>{const n=dE(t.search,500);return{...t,search:async(...r)=>n(...r)}}}},_E=pE,vE=ce(_E),od=Symbol(""),yE=()=>{const e=We(od),t=On();return B(()=>{var n;return{...e.value,...(n=e.value.locales)==null?void 0:n[t.value]}})},bE=e=>{e.provide(od,vE)},EE=(e,t=[])=>[`lang:${e}`,...Array.isArray(t)?t:[t]],SE=({buttonText:e="Search",buttonAriaLabel:t=e}={})=>``,sd=()=>{if(document.querySelector(".DocSearch-Modal"))return;const e=new Event("keydown");e.key="k",e.metaKey=!0,window.dispatchEvent(e),setTimeout(sd,16)},AE=e=>{const t="algolia-preconnect";("requestIdleCallback"in window?window.requestIdleCallback:setTimeout)(()=>{if(document.head.querySelector(`#${t}`))return;const n=document.createElement("link");n.id=t,n.rel="preconnect",n.href=`https://${e}-dsn.algolia.net`,n.crossOrigin="",document.head.appendChild(n)})},TE=me({name:"DocSearch",props:{containerId:{type:String,default:"docsearch-container"},options:{type:Object,default:()=>({})}},setup(e){const t=yE(),n=gE(),r=ef(),o=On(),s=ce(!1),i=ce(!1),a=B(()=>{const{locales:f={},...c}=e.options;return{...t.value,...c,...f[o.value]}}),l=async()=>{var c;const{default:f}=await q(async()=>{const{default:d}=await import("./index-DCs6OeCW.js");return{default:d}},[]);f({...n,...a.value,container:`#${e.containerId}`,searchParameters:{...a.value.searchParameters,facetFilters:EE(r.value,(c=a.value.searchParameters)==null?void 0:c.facetFilters)}}),s.value=!0},u=()=>{i.value||s.value||(i.value=!0,l(),sd(),Be(o,l))};return hE(u),qe(()=>{AE(a.value.appId)}),()=>{var f;return[he("div",{id:e.containerId,style:{display:s.value?"block":"none"}}),s.value?null:he("div",{onClick:u,innerHTML:SE((f=a.value.translations)==null?void 0:f.button)})]}}}),wE={enhance({app:e}){bE(e),e.component("SearchBox",TE)}},kE=Object.freeze(Object.defineProperty({__proto__:null,default:wE},Symbol.toStringTag,{value:"Module"})),CE=e=>{if(window.dataLayer&&window.gtag)return;const t=document.createElement("script");t.src=`https://www.googletagmanager.com/gtag/js?id=${e.id}`,t.async=!0,document.head.appendChild(t),window.dataLayer=window.dataLayer??[],window.gtag=function(){window.dataLayer.push(arguments)},window.gtag("js",new Date),e.debug?window.gtag("config",e.id,{debug_mode:!0}):window.gtag("config",e.id)};var OE={id:"G-CTB8FQ7VMW"};const xE=OE;var PE=jt({enhance(){CE(xE)}});const IE=Object.freeze(Object.defineProperty({__proto__:null,default:PE},Symbol.toStringTag,{value:"Module"})),RE={enhance:({app:e})=>{e.component("NpmBadge",ec(()=>q(()=>import("./NpmBadge-KVBLyX2u.js"),[])))}},LE=Object.freeze(Object.defineProperty({__proto__:null,default:RE},Symbol.toStringTag,{value:"Module"})),DE=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),lo=[O_,B_,K_,G_,iv,dv,vv,P1,fE,kE,IE,LE,DE].map(e=>e.default).filter(Boolean),VE=JSON.parse('{"base":"/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"icon","type":"image/png","sizes":"16x16","href":"/images/icons/favicon-16x16.png"}],["link",{"rel":"icon","type":"image/png","sizes":"32x32","href":"/images/icons/favicon-32x32.png"}],["link",{"rel":"manifest","href":"/manifest.webmanifest"}],["meta",{"name":"application-name","content":"VuePress"}],["meta",{"name":"apple-mobile-web-app-title","content":"VuePress"}],["meta",{"name":"apple-mobile-web-app-status-bar-style","content":"black"}],["link",{"rel":"apple-touch-icon","href":"/images/icons/apple-touch-icon.png"}],["link",{"rel":"mask-icon","href":"/images/icons/safari-pinned-tab.svg","color":"#3eaf7c"}],["meta",{"name":"msapplication-TileColor","content":"#3eaf7c"}],["meta",{"name":"theme-color","content":"#3eaf7c"}]],"locales":{"/":{"lang":"en-US","title":"VuePress","description":"Vue-powered Static Site Generator"},"/zh/":{"lang":"zh-CN","title":"VuePress","description":"Vue 驱动的静态网站生成器"}}}');var mr=xt(VE),NE=lg,ME=()=>{const e=$g({history:NE(Rc("/")),routes:[{name:"vuepress-route",path:"/:catchAll(.*)",components:{}}],scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{if(t.path!==n.path||n===Dt){const r=Ir(t.fullPath);if(r.path!==t.fullPath)return r.path;const o=await r.loader();t.meta={...r.meta,_pageChunk:o}}else t.path===n.path&&(t.meta=n.meta)}),e},BE=e=>{e.component("ClientOnly",Si),e.component("Content",Ai),e.component("RouteLink",zo)},FE=(e,t,n)=>{const r=B(()=>t.currentRoute.value.path),o=ep((y,b)=>({get(){return y(),t.currentRoute.value.meta._pageChunk},set(A){t.currentRoute.value.meta._pageChunk=A,b()}})),s=B(()=>mn.resolveLayouts(n)),i=B(()=>mn.resolveRouteLocale(mr.value.locales,r.value)),a=B(()=>mn.resolveSiteLocaleData(mr.value,i.value)),l=B(()=>o.value.comp),u=B(()=>o.value.data),f=B(()=>u.value.frontmatter),c=B(()=>mn.resolvePageHeadTitle(u.value,a.value)),d=B(()=>mn.resolvePageHead(c.value,f.value,a.value)),p=B(()=>mn.resolvePageLang(u.value,a.value)),_=B(()=>mn.resolvePageLayout(u.value,s.value)),v={layouts:s,pageData:u,pageComponent:l,pageFrontmatter:f,pageHead:d,pageHeadTitle:c,pageLang:p,pageLayout:_,redirects:Vs,routeLocale:i,routePath:r,routes:$n,siteData:mr,siteLocaleData:a};return e.provide(bi,v),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>f.value},$head:{get:()=>d.value},$headTitle:{get:()=>c.value},$lang:{get:()=>p.value},$page:{get:()=>u.value},$routeLocale:{get:()=>i.value},$site:{get:()=>mr.value},$siteLocale:{get:()=>a.value},$withBase:{get:()=>Ti}}),v},HE=([e,t,n=""])=>{const r=Object.entries(t).map(([a,l])=>vt(l)?`[${a}=${JSON.stringify(l)}]`:l?`[${a}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(a=>a.innerText===n)??null},zE=([e,t,n])=>{if(!vt(e))return null;const r=document.createElement(e);return _i(t)&&Object.entries(t).forEach(([o,s])=>{vt(s)?r.setAttribute(o,s):s&&r.setAttribute(o,"")}),vt(n)&&r.appendChild(document.createTextNode(n)),r},$E=()=>{const e=Kg(),t=ef();let n=[];const r=()=>{e.value.forEach(i=>{const a=HE(i);a&&n.push(a)})},o=()=>{const i=[];return e.value.forEach(a=>{const l=zE(a);l&&i.push(l)}),i},s=()=>{document.documentElement.lang=t.value;const i=o();n.forEach((a,l)=>{const u=i.findIndex(f=>a.isEqualNode(f));u===-1?(a.remove(),delete n[l]):i.splice(u,1)}),i.forEach(a=>document.head.appendChild(a)),n=[...n.filter(a=>!!a),...i]};Tn(qg,s),qe(()=>{r(),Be(e,s,{immediate:!1})})},UE=am,jE=async()=>{var r;const e=UE({name:"Vuepress",setup(){var i;$E();for(const a of lo)(i=a.setup)==null||i.call(a);const o=lo.flatMap(({rootComponents:a=[]})=>a.map(l=>he(l))),s=Wg();return()=>[he(s.value),o]}}),t=ME();BE(e);const n=FE(e,t,lo);{const{setupDevtools:o}=await q(async()=>{const{setupDevtools:s}=await import("./setupDevtools-7MC2TMWH-BN0B6H0v.js");return{setupDevtools:s}},[]);o(e,n)}for(const o of lo)await((r=o.enhance)==null?void 0:r.call(o,{app:e,router:t,siteData:mr}));return e.use(t),{app:e,router:t}};jE().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{ye as F,Pe as _,bh as a,ae as b,re as c,jE as createVueApp,on as d,le as e,Ne as f,nn as g,ce as h,he as i,me as j,B as k,X as o,ci as r,z0 as s,Re as t,Be as w}; diff --git a/assets/architecture.html-DMVSC9n2.js b/assets/architecture.html-DMVSC9n2.js new file mode 100644 index 000000000..221b91875 --- /dev/null +++ b/assets/architecture.html-DMVSC9n2.js @@ -0,0 +1 @@ +import{_ as n,a as s}from"./vuepress-core-process-C4qfrYlz.js";import{_ as a,c as p,a as u,b as r,d as t,e as o,f as i,r as d,o as m}from"./app-9HBJsLu_.js";const g={};function h(v,e){const l=d("RouteLink");return m(),p("div",null,[e[28]||(e[28]=u('

Architecture

Overview

vuepress-architecture-overview

The above figure shows a brief overview of the VuePress architecture:

  • Node App will generate temp files, including the pages, routes, etc.
  • Bundler will handle Client App together with the temp files, just like a common Vue app.

As a developer, you must be aware of that VuePress has two main parts: Node App and Client App, which is important when developing plugins and themes:

  • The entry file of a plugin or a theme will be loaded in Node App.
  • Client files will be loaded in Client App, which will be handled by bundler. For example, components, client config files, etc.

Core Process and Hooks

vuepress-core-process

',9)),r("p",null,[e[1]||(e[1]=t("The above figure shows the core process of VuePress Node App and the hooks of ")),o(l,{to:"/reference/plugin-api.html"},{default:i(()=>e[0]||(e[0]=[t("Plugin API")])),_:1}),e[2]||(e[2]=t(":"))]),r("ul",null,[r("li",null,[e[14]||(e[14]=t("In the ")),e[15]||(e[15]=r("strong",null,"init",-1)),e[16]||(e[16]=t(" stage: ")),r("ul",null,[e[13]||(e[13]=r("li",null,"Theme and plugins will be loaded. That means all the plugins should be used before initialization.",-1)),r("li",null,[e[7]||(e[7]=t("As we are using markdown-it to parse the markdown file, so we need to create markdown-it instance before loading pages: ")),r("ul",null,[r("li",null,[o(l,{to:"/reference/plugin-api.html#extendsmarkdownoptions"},{default:i(()=>e[3]||(e[3]=[t("extendsMarkdownOptions")])),_:1}),e[4]||(e[4]=t(" hook will be processed to create markdown-it instance."))]),r("li",null,[o(l,{to:"/reference/plugin-api.html#extendsmarkdown"},{default:i(()=>e[5]||(e[5]=[t("extendsMarkdown")])),_:1}),e[6]||(e[6]=t(" hook will be processed extends markdown-it instance."))])])]),r("li",null,[e[12]||(e[12]=t("Page files will be loaded: ")),r("ul",null,[r("li",null,[o(l,{to:"/reference/plugin-api.html#extendspageoptions"},{default:i(()=>e[8]||(e[8]=[t("extendsPageOptions")])),_:1}),e[9]||(e[9]=t(" hook will be processed to create pages."))]),r("li",null,[o(l,{to:"/reference/plugin-api.html#extendspage"},{default:i(()=>e[10]||(e[10]=[t("extendsPage")])),_:1}),e[11]||(e[11]=t(" hook will be processed to extends page object."))])])])])]),e[27]||(e[27]=r("li",null,[t("In the "),r("strong",null,"prepare"),t(" stage: "),r("ul",null,[r("li",null,"Temp files will be generated, so all hooks related to client files will be processed here.")])],-1)),r("li",null,[e[24]||(e[24]=t("In the ")),e[25]||(e[25]=r("strong",null,"dev / build",-1)),e[26]||(e[26]=t(" stage: ")),r("ul",null,[r("li",null,[e[23]||(e[23]=t("Bundler will be resolved: ")),r("ul",null,[r("li",null,[o(l,{to:"/reference/plugin-api.html#extendsbundleroptions"},{default:i(()=>e[17]||(e[17]=[t("extendsBundlerOptions")])),_:1}),e[18]||(e[18]=t(" hook will be processed to create bundler configuration."))]),r("li",null,[o(l,{to:"/reference/plugin-api.html#alias"},{default:i(()=>e[19]||(e[19]=[t("alias")])),_:1}),e[21]||(e[21]=t(" hook and ")),o(l,{to:"/reference/plugin-api.html#define"},{default:i(()=>e[20]||(e[20]=[t("define")])),_:1}),e[22]||(e[22]=t(" hook would be used in bundler configuration, so they will be processed here."))])])])])])])])}const c=a(g,[["render",h],["__file","architecture.html.vue"]]),b=JSON.parse('{"path":"/advanced/architecture.html","title":"Architecture","lang":"en-US","frontmatter":{"description":"Architecture Overview vuepress-architecture-overview The above figure shows a brief overview of the VuePress architecture: Node App will generate temp files, including the pages...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/advanced/architecture.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/advanced/architecture.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Architecture"}],["meta",{"property":"og:description","content":"Architecture Overview vuepress-architecture-overview The above figure shows a brief overview of the VuePress architecture: Node App will generate temp files, including the pages..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://vuepress.vuejs.org/images/guide/vuepress-architecture-overview.png"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-02-05T05:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-02-05T05:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Architecture\\",\\"image\\":[\\"https://vuepress.vuejs.org/images/guide/vuepress-architecture-overview.png\\",\\"https://vuepress.vuejs.org/images/guide/vuepress-core-process.png\\"],\\"dateModified\\":\\"2024-02-05T05:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Overview","slug":"overview","link":"#overview","children":[]},{"level":2,"title":"Core Process and Hooks","slug":"core-process-and-hooks","link":"#core-process-and-hooks","children":[]}],"git":{"updatedTime":1707110593000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"advanced/architecture.md"}');export{c as comp,b as data}; diff --git a/assets/architecture.html-alS37AmL.js b/assets/architecture.html-alS37AmL.js new file mode 100644 index 000000000..a59c7594c --- /dev/null +++ b/assets/architecture.html-alS37AmL.js @@ -0,0 +1 @@ +import{_ as s,a as i}from"./vuepress-core-process-C4qfrYlz.js";import{_ as p,c as u,a as d,b as l,d as t,e as n,f as o,r as a,o as m}from"./app-9HBJsLu_.js";const g={};function v(f,e){const r=a("RouteLink");return m(),u("div",null,[e[28]||(e[28]=d('

架构

概览

vuepress-architecture-overview

上图展示了 VuePress 的简要架构:

  • Node App 会生成临时文件,包括页面、路由等。
  • Bundler 会将 Client App 和临时文件一起进行打包,就像处理一个普通的 Vue App 一样。

作为开发者,你必须要意识到 VuePress 分为两个主要部分: Node AppClient App ,这一点对于开发插件和主题来说都十分重要。

  • 插件或者主题的入口文件会在 Node App 中被加载。
  • 客户端文件会在 Client App 中被加载,也就是会被 Bundler 处理。比如组件、客户端配置文件等。

核心流程与 Hooks

vuepress-core-process

',9)),l("p",null,[e[1]||(e[1]=t("上图展示了 VuePress 的核心流程以及 ")),n(r,{to:"/zh/reference/plugin-api.html"},{default:o(()=>e[0]||(e[0]=[t("插件 API")])),_:1}),e[2]||(e[2]=t(" 的 Hooks :"))]),l("ul",null,[l("li",null,[e[14]||(e[14]=t("在 ")),e[15]||(e[15]=l("strong",null,"init",-1)),e[16]||(e[16]=t(" 阶段: ")),l("ul",null,[e[13]||(e[13]=l("li",null,"主题和插件会被加载。这意味着插件需要在初始化之前使用。",-1)),l("li",null,[e[7]||(e[7]=t("由于我们要使用 markdown-it 来解析 Markdown 文件,因此需要在加载页面文件之前创建 markdown-it 实例: ")),l("ul",null,[l("li",null,[n(r,{to:"/zh/reference/plugin-api.html#extendsmarkdownoptions"},{default:o(()=>e[3]||(e[3]=[t("extendsMarkdownOptions")])),_:1}),e[4]||(e[4]=t(" Hook 会被调用,用以创建 markdown-it 实例。"))]),l("li",null,[n(r,{to:"/zh/reference/plugin-api.html#extendsmarkdown"},{default:o(()=>e[5]||(e[5]=[t("extendsMarkdown")])),_:1}),e[6]||(e[6]=t(" Hook 会被调用,用以扩展 markdown-it 实例。"))])])]),l("li",null,[e[12]||(e[12]=t("页面文件会被加载: ")),l("ul",null,[l("li",null,[n(r,{to:"/zh/reference/plugin-api.html#extendspageoptions"},{default:o(()=>e[8]||(e[8]=[t("extendsPageOptions")])),_:1}),e[9]||(e[9]=t(" Hook 会被调用,用以创建页面。"))]),l("li",null,[n(r,{to:"/zh/reference/plugin-api.html#extendspage"},{default:o(()=>e[10]||(e[10]=[t("extendsPage")])),_:1}),e[11]||(e[11]=t(" Hook 会被调用,用以扩展页面对象。"))])])])])]),e[27]||(e[27]=l("li",null,[t("在 "),l("strong",null,"prepare"),t(" 阶段: "),l("ul",null,[l("li",null,"临时文件会被生成,因此所有和客户端文件相关的 Hooks 会在此处调用。")])],-1)),l("li",null,[e[24]||(e[24]=t("在 ")),e[25]||(e[25]=l("strong",null,"dev / build",-1)),e[26]||(e[26]=t(" 阶段: ")),l("ul",null,[l("li",null,[e[23]||(e[23]=t("Bundler 会被加载: ")),l("ul",null,[l("li",null,[n(r,{to:"/zh/reference/plugin-api.html#extendsbundleroptions"},{default:o(()=>e[17]||(e[17]=[t("extendsBundlerOptions")])),_:1}),e[18]||(e[18]=t(" Hook 会被调用,用以生成 Bundler 的配置。"))]),l("li",null,[n(r,{to:"/zh/reference/plugin-api.html#alias"},{default:o(()=>e[19]||(e[19]=[t("alias")])),_:1}),e[21]||(e[21]=t(" Hook 和 ")),n(r,{to:"/zh/reference/plugin-api.html#define"},{default:o(()=>e[20]||(e[20]=[t("define")])),_:1}),e[22]||(e[22]=t(" Hook 会被用在 Bundler 的配置中,所以它们会在此处调用。"))])])])])])])])}const h=p(g,[["render",v],["__file","architecture.html.vue"]]),w=JSON.parse('{"path":"/zh/advanced/architecture.html","title":"架构","lang":"zh-CN","frontmatter":{"description":"架构 概览 vuepress-architecture-overview 上图展示了 VuePress 的简要架构: Node App 会生成临时文件,包括页面、路由等。 Bundler 会将 Client App 和临时文件一起进行打包,就像处理一个普通的 Vue App 一样。 作为开发者,你必须要意识到 VuePress 分为两个主要部分: No...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/advanced/architecture.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/advanced/architecture.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"架构"}],["meta",{"property":"og:description","content":"架构 概览 vuepress-architecture-overview 上图展示了 VuePress 的简要架构: Node App 会生成临时文件,包括页面、路由等。 Bundler 会将 Client App 和临时文件一起进行打包,就像处理一个普通的 Vue App 一样。 作为开发者,你必须要意识到 VuePress 分为两个主要部分: No..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://vuepress.vuejs.org/images/guide/vuepress-architecture-overview.png"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-02-05T05:23:13.000Z"}],["meta",{"property":"article:modified_time","content":"2024-02-05T05:23:13.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"架构\\",\\"image\\":[\\"https://vuepress.vuejs.org/images/guide/vuepress-architecture-overview.png\\",\\"https://vuepress.vuejs.org/images/guide/vuepress-core-process.png\\"],\\"dateModified\\":\\"2024-02-05T05:23:13.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"概览","slug":"概览","link":"#概览","children":[]},{"level":2,"title":"核心流程与 Hooks","slug":"核心流程与-hooks","link":"#核心流程与-hooks","children":[]}],"git":{"updatedTime":1707110593000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2}]},"autoDesc":true,"filePathRelative":"zh/advanced/architecture.md"}');export{h as comp,w as data}; diff --git a/assets/assets.html-Dam5ylra.js b/assets/assets.html-Dam5ylra.js new file mode 100644 index 000000000..ef6217b15 --- /dev/null +++ b/assets/assets.html-Dam5ylra.js @@ -0,0 +1,24 @@ +import{_ as r}from"./hero-BNkrhNQ6.js";import{_ as p,c as i,a as t,b as a,d as e,e as l,f as o,r as d,o as c}from"./app-9HBJsLu_.js";const u={},m={class:"hint-container tip"},y={class:"hint-container tip"};function D(g,s){const n=d("RouteLink");return c(),i("div",null,[s[32]||(s[32]=t('

Assets

Relative URLs

You can reference any assets using relative URLs in your Markdown content:

![An image](./image.png)

or

![An image](image.png)

This is generally the suggested way to import images, as users usually place images near the Markdown file that references them.

Public Files

You can put some static assets inside public directory, and they will be copied to the root of the generated directory.

',9)),a("p",null,[s[1]||(s[1]=e("The default public directory is ")),s[2]||(s[2]=a("code",null,".vuepress/public",-1)),s[3]||(s[3]=e(", which can be changed by ")),l(n,{to:"/reference/config.html#public"},{default:o(()=>s[0]||(s[0]=[e("public")])),_:1}),s[4]||(s[4]=e(" option."))]),s[33]||(s[33]=t(`

It would be useful in some cases:

  • You may need to provide static assets that are not directly referenced in any of your Markdown files, for example, favicon and PWA icons.
  • You may need to serve some shared static assets, which may even be referenced outside your site, for example, logo images.
  • You may want to reference images using absolute URLs in your Markdown content.

Take our documentation source files as an example, we are putting the logo of VuePress inside the public directory:

└─ docs
+   ├─ .vuepress
+   |  └─ public
+   |     └─ images
+   |        └─ hero.png  # <- Logo file
+   └─ guide
+      └─ assets.md       # <- Here we are

We can reference our logo in current page like this:

Input

![VuePress Logo](/images/hero.png)

Output

VuePress Logo

Base Helper

',10)),a("p",null,[s[6]||(s[6]=e("If your site is deployed to a non-root URL, for example, ")),s[7]||(s[7]=a("code",null,"https://foo.github.io/bar/",-1)),s[8]||(s[8]=e(", then the ")),l(n,{to:"/reference/config.html#base"},{default:o(()=>s[5]||(s[5]=[e("base")])),_:1}),s[9]||(s[9]=e(" should be set to ")),s[10]||(s[10]=a("code",null,"'/bar/'",-1)),s[11]||(s[11]=e(". Obviously, your public files would be served like ")),s[12]||(s[12]=a("code",null,"https://foo.github.io/bar/images/hero.png",-1)),s[13]||(s[13]=e(" after deployment."))]),s[34]||(s[34]=t('

In most cases, you don't need to worry about the reference path of those public files, as VuePress will automatically handle base for you:

<!-- you don't need to prepend `/bar/` to `/images/hero.png` manually -->\n\n![VuePress Logo](/images/hero.png)
',2)),a("div",m,[s[21]||(s[21]=a("p",{class:"hint-container-title"},"Tips",-1)),a("p",null,[s[16]||(s[16]=e("When using ")),l(n,{to:"/reference/bundler/webpack.html"},{default:o(()=>s[14]||(s[14]=[e("webpack bundler")])),_:1}),s[17]||(s[17]=e(", you need to set ")),l(n,{to:"/reference/config.html#markdown-assets"},{default:o(()=>s[15]||(s[15]=[e("markdown.assets.absolutePathPrependBase")])),_:1}),s[18]||(s[18]=e(" to ")),s[19]||(s[19]=a("code",null,"true",-1)),s[20]||(s[20]=e(" to automatically prepend base to markdown images."))])]),a("p",null,[s[23]||(s[23]=e("However, sometimes you may have some dynamical links referencing public files, especially when you are authoring a custom theme. In such case, the ")),s[24]||(s[24]=a("code",null,"base",-1)),s[25]||(s[25]=e(" could not be handled automatically. To help with that, VuePress provides a ")),l(n,{to:"/reference/client-api.html#withbase"},{default:o(()=>s[22]||(s[22]=[e("withBase")])),_:1}),s[26]||(s[26]=e(" helper to prepend ")),s[27]||(s[27]=a("code",null,"base",-1)),s[28]||(s[28]=e(" for you:"))]),s[35]||(s[35]=t(`
<script setup>
+import { ref } from 'vue'
+import { withBase } from 'vuepress/client'
+
+const logoPath = ref('/images/hero.png')
+</script>
+
+<template>
+  <img :src="withBase(logoPath)" />
+</template>

You can also access the helper by $withBase directly:

<img :src="$withBase('/images/hero.png')" alt="VuePress Logo">

Packages and Path Aliases

Although it is not a common usage, you can reference images from dependent packages:

npm install -D package-name

Since markdown image syntax regards image links as relative paths by default, you need to use <img> tag:

<img src="package-name/image.png" alt="Image from dependency">

The path aliases that set in config file are also supported:

import { getDirname, path } from 'vuepress/utils'
+
+const __dirname = getDirname(import.meta.url)
+
+export default {
+  alias: {
+    '@alias': path.resolve(__dirname, './path/to/some/dir'),
+  },
+}
<img src="@alias/image.png" alt="Image from path alias">
`,11)),a("div",y,[s[31]||(s[31]=a("p",{class:"hint-container-title"},"Tips",-1)),a("p",null,[s[30]||(s[30]=e("Config reference: ")),l(n,{to:"/reference/plugin-api.html#alias"},{default:o(()=>s[29]||(s[29]=[e("alias")])),_:1})])])])}const b=p(u,[["render",D],["__file","assets.html.vue"]]),C=JSON.parse('{"path":"/guide/assets.html","title":"Assets","lang":"en-US","frontmatter":{"description":"Assets Relative URLs You can reference any assets using relative URLs in your Markdown content: or This is generally the suggested way to import images, as users usually place i...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/guide/assets.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/guide/assets.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Assets"}],["meta",{"property":"og:description","content":"Assets Relative URLs You can reference any assets using relative URLs in your Markdown content: or This is generally the suggested way to import images, as users usually place i..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://vuepress.vuejs.org/images/hero.png"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-31T07:59:53.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-31T07:59:53.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Assets\\",\\"image\\":[\\"https://vuepress.vuejs.org/images/hero.png\\",\\"https://vuepress.vuejs.org/images/hero.png\\",\\"https://vuepress.vuejs.org/images/hero.png\\"],\\"dateModified\\":\\"2024-08-31T07:59:53.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Relative URLs","slug":"relative-urls","link":"#relative-urls","children":[]},{"level":2,"title":"Public Files","slug":"public-files","link":"#public-files","children":[{"level":3,"title":"Base Helper","slug":"base-helper","link":"#base-helper","children":[]}]},{"level":2,"title":"Packages and Path Aliases","slug":"packages-and-path-aliases","link":"#packages-and-path-aliases","children":[]}],"git":{"updatedTime":1725091193000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":4},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"guide/assets.md"}');export{b as comp,C as data}; diff --git a/assets/assets.html-Dq9vV_LH.js b/assets/assets.html-Dq9vV_LH.js new file mode 100644 index 000000000..829a5b504 --- /dev/null +++ b/assets/assets.html-Dq9vV_LH.js @@ -0,0 +1,24 @@ +import{_ as t}from"./hero-BNkrhNQ6.js";import{_ as r,c as i,a as p,b as n,d as e,e as a,f as o,r as d,o as c}from"./app-9HBJsLu_.js";const u={},D={class:"hint-container tip"},m={class:"hint-container tip"};function y(v,s){const l=d("RouteLink");return c(),i("div",null,[s[34]||(s[34]=p('

静态资源

相对路径

你可以在你的 Markdown 内容中使用相对路径来引用静态资源:

![图片](./image.png)

![图片](image.png)

一般情况下,我们推荐你使用这种方式来引用图片,因为人们通常会把图片放在引用它的 Markdown 文件附近。

Public 文件

你可以把一些静态资源放在 Public 目录中,它们会被复制到最终生成的网站的根目录下。

',9)),n("p",null,[s[1]||(s[1]=e("默认的 Public 目录是 ")),s[2]||(s[2]=n("code",null,".vuepress/public",-1)),s[3]||(s[3]=e(" ,可以通过 ")),a(l,{to:"/zh/reference/config.html#public"},{default:o(()=>s[0]||(s[0]=[e("public")])),_:1}),s[4]||(s[4]=e(" 配置项来修改。"))]),s[35]||(s[35]=p(`

在下列这些情况中,你可能会用到它:

  • 你可能需要提供一些静态资源,但是它们并不直接被你的 Markdown 文件引用,比如 favicon 和 PWA 图标。
  • 你可能想要托管一些共享的静态资源,甚至可能需要在你的网站外部引用它,比如 Logo 图片。
  • 你可能想在你的 Markdown 内容中通过绝对路径来引入图片。

以我们文档的源文件为例,我们把 VuePress 的 Logo 放在了 Public 目录下:

└─ docs
+   ├─ .vuepress
+   |  └─ public
+   |     └─ images
+   |        └─ hero.png  # <- Logo 文件
+   └─ guide
+      └─ assets.md       # <- 我们在这里

我们可以这样在当前页面引用 Logo :

Input

![VuePress Logo](/images/hero.png)

Output

VuePress Logo

Base Helper

',10)),n("p",null,[s[6]||(s[6]=e("如果你的网站部署在非根路径下,例如 ")),s[7]||(s[7]=n("code",null,"https://foo.github.io/bar/",-1)),s[8]||(s[8]=e(" ,那么你应该把 ")),a(l,{to:"/zh/reference/config.html#base"},{default:o(()=>s[5]||(s[5]=[e("base")])),_:1}),s[9]||(s[9]=e(" 设置为 ")),s[10]||(s[10]=n("code",null,"'/bar/'",-1)),s[11]||(s[11]=e("。显然,此时你的 Public 文件会被部署在 ")),s[12]||(s[12]=n("code",null,"https://foo.github.io/bar/images/hero.png",-1)),s[13]||(s[13]=e(" 这样的链接下。"))]),s[36]||(s[36]=p('

在大多数情况下,你不需要担心这些 Public 文件的引用路径,因为 VuePress 会自动帮你处理 base 前缀:

<!-- 你不需要给 `/images/hero.png` 手动添加 `/bar/` 前缀 -->\n\n![VuePress Logo](/images/hero.png)
',2)),n("div",D,[s[23]||(s[23]=n("p",{class:"hint-container-title"},"提示",-1)),n("p",null,[s[16]||(s[16]=e("在使用 ")),a(l,{to:"/zh/reference/bundler/webpack.html"},{default:o(()=>s[14]||(s[14]=[e("Webpack 打包工具")])),_:1}),s[17]||(s[17]=e(" 时,你需要将 ")),a(l,{to:"/zh/reference/config.html#markdown-assets"},{default:o(()=>s[15]||(s[15]=[e("markdown.assets.absolutePathPrependBase")])),_:1}),s[18]||(s[18]=e(" 设置为 ")),s[19]||(s[19]=n("code",null,"true",-1)),s[20]||(s[20]=e(" 来给 Markdown 图片自动添加 ")),s[21]||(s[21]=n("code",null,"base",-1)),s[22]||(s[22]=e(" 前缀。"))])]),n("p",null,[s[25]||(s[25]=e("然而,有些情况下,你可能会有一些指向 Public 文件的动态路径,尤其是在你开发一个自定义主题的时候。在这种情况下, ")),s[26]||(s[26]=n("code",null,"base",-1)),s[27]||(s[27]=e(" 无法被自动处理。为了解决这个问题,VuePress 提供了 ")),a(l,{to:"/zh/reference/client-api.html#withbase"},{default:o(()=>s[24]||(s[24]=[e("withBase")])),_:1}),s[28]||(s[28]=e(" 工具函数,它可以帮助你添加 ")),s[29]||(s[29]=n("code",null,"base",-1)),s[30]||(s[30]=e(" 前缀:"))]),s[37]||(s[37]=p(`
<script setup>
+import { ref } from 'vue'
+import { withBase } from 'vuepress/client'
+
+const logoPath = ref('/images/hero.png')
+</script>
+
+<template>
+  <img :src="withBase(logoPath)" />
+</template>

你也可以通过 $withBase 来直接使用这个工具函数:

<img :src="$withBase('/images/hero.png')" alt="VuePress Logo">

依赖包和路径别名

尽管这不是常见用法,但是你可以从依赖包中引用图片:

npm install -D package-name

由于 Markdown 会默认将图片链接视为相对链接,你需要使用 <img> 标签:

<img src="package-name/image.png" alt="来自依赖包的图片">

在配置文件中设置的路径别名也同样支持:

import { getDirname, path } from 'vuepress/utils'
+
+const __dirname = getDirname(import.meta.url)
+
+export default {
+  alias: {
+    '@alias': path.resolve(__dirname, './path/to/some/dir'),
+  },
+}
<img src="@alias/image.png" alt="来自路径别名的图片">
`,11)),n("div",m,[s[33]||(s[33]=n("p",{class:"hint-container-title"},"提示",-1)),n("p",null,[s[32]||(s[32]=e("配置参考: ")),a(l,{to:"/zh/reference/plugin-api.html#alias"},{default:o(()=>s[31]||(s[31]=[e("alias")])),_:1})])])])}const C=r(u,[["render",y],["__file","assets.html.vue"]]),h=JSON.parse('{"path":"/zh/guide/assets.html","title":"静态资源","lang":"zh-CN","frontmatter":{"description":"静态资源 相对路径 你可以在你的 Markdown 内容中使用相对路径来引用静态资源: 或 一般情况下,我们推荐你使用这种方式来引用图片,因为人们通常会把图片放在引用它的 Markdown 文件附近。 Public 文件 你可以把一些静态资源放在 Public 目录中,它们会被复制到最终生成的网站的根目录下。 默认的 Public 目录是 .vuepr...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/guide/assets.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/guide/assets.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"静态资源"}],["meta",{"property":"og:description","content":"静态资源 相对路径 你可以在你的 Markdown 内容中使用相对路径来引用静态资源: 或 一般情况下,我们推荐你使用这种方式来引用图片,因为人们通常会把图片放在引用它的 Markdown 文件附近。 Public 文件 你可以把一些静态资源放在 Public 目录中,它们会被复制到最终生成的网站的根目录下。 默认的 Public 目录是 .vuepr..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://vuepress.vuejs.org/images/hero.png"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-31T07:59:53.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-31T07:59:53.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"静态资源\\",\\"image\\":[\\"https://vuepress.vuejs.org/images/hero.png\\",\\"https://vuepress.vuejs.org/images/hero.png\\",\\"https://vuepress.vuejs.org/images/hero.png\\"],\\"dateModified\\":\\"2024-08-31T07:59:53.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"相对路径","slug":"相对路径","link":"#相对路径","children":[]},{"level":2,"title":"Public 文件","slug":"public-文件","link":"#public-文件","children":[{"level":3,"title":"Base Helper","slug":"base-helper","link":"#base-helper","children":[]}]},{"level":2,"title":"依赖包和路径别名","slug":"依赖包和路径别名","link":"#依赖包和路径别名","children":[]}],"git":{"updatedTime":1725091193000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":4},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/guide/assets.md"}');export{C as comp,h as data}; diff --git a/assets/bundler.html-CV5ajQhQ.js b/assets/bundler.html-CV5ajQhQ.js new file mode 100644 index 000000000..1e8315e57 --- /dev/null +++ b/assets/bundler.html-CV5ajQhQ.js @@ -0,0 +1,16 @@ +import{_ as u,c,a as i,e as t,f as l,b as e,d as n,r as p,o as b}from"./app-9HBJsLu_.js";const m={};function v(y,s){const d=p("CodeTabs"),o=p("RouteLink");return b(),c("div",null,[s[11]||(s[11]=i('

Bundler

VuePress supports using Webpack or Vite to dev and build sites. You can choose which bundler to use according to your preference, and no extra configuration is required.

Install a Bundler

When installing the vuepress package, no bundlers will be installed. You need to choose a bundler to install.

',4)),t(d,{id:"12",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:l(({value:a,isActive:r})=>s[0]||(s[0]=[n("pnpm")])),title1:l(({value:a,isActive:r})=>s[1]||(s[1]=[n("yarn")])),title2:l(({value:a,isActive:r})=>s[2]||(s[2]=[n("npm")])),tab0:l(({value:a,isActive:r})=>s[3]||(s[3]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install vite bundler")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install webpack bundler")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-webpack@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab1:l(({value:a,isActive:r})=>s[4]||(s[4]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install vite bundler")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install webpack bundler")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-webpack@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab2:l(({value:a,isActive:r})=>s[5]||(s[5]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install vite bundler")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install webpack bundler")]),n(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-webpack@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),_:1}),s[12]||(s[12]=e("h2",{id:"use-a-bundler",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#use-a-bundler"},[e("span",null,"Use a Bundler")])],-1)),s[13]||(s[13]=e("p",null,"Generally, you could use a bundler without extra configuration, because we have already configured them properly to work with VuePress.",-1)),e("p",null,[s[7]||(s[7]=n("You can use a bundler via the ")),t(o,{to:"/reference/config.html#bundler"},{default:l(()=>s[6]||(s[6]=[n("bundler")])),_:1}),s[8]||(s[8]=n(" option:"))]),s[14]||(s[14]=i(`
import { viteBundler } from '@vuepress/bundler-vite'
+// import { webpackBundler } from '@vuepress/bundler-webpack'
+
+export default {
+  bundler: viteBundler(),
+  // bundler: webpackBundler(),
+}

When you need to customize the bundler, you can set the corresponding options:

`,2)),e("ul",null,[e("li",null,[t(o,{to:"/reference/bundler/vite.html"},{default:l(()=>s[9]||(s[9]=[n("Bundlers > Vite")])),_:1})]),e("li",null,[t(o,{to:"/reference/bundler/webpack.html"},{default:l(()=>s[10]||(s[10]=[n("Bundlers > Webpack")])),_:1})])])])}const g=u(m,[["render",v],["__file","bundler.html.vue"]]),C=JSON.parse('{"path":"/guide/bundler.html","title":"Bundler","lang":"en-US","frontmatter":{"description":"Bundler VuePress supports using Webpack or Vite to dev and build sites. You can choose which bundler to use according to your preference, and no extra configuration is required....","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/guide/bundler.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/guide/bundler.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Bundler"}],["meta",{"property":"og:description","content":"Bundler VuePress supports using Webpack or Vite to dev and build sites. You can choose which bundler to use according to your preference, and no extra configuration is required...."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-09-23T11:25:41.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-23T11:25:41.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Bundler\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-09-23T11:25:41.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Install a Bundler","slug":"install-a-bundler","link":"#install-a-bundler","children":[]},{"level":2,"title":"Use a Bundler","slug":"use-a-bundler","link":"#use-a-bundler","children":[]}],"git":{"updatedTime":1727090741000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2},{"name":"Mister-Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"guide/bundler.md"}');export{g as comp,C as data}; diff --git a/assets/bundler.html-D5kCpoeU.js b/assets/bundler.html-D5kCpoeU.js new file mode 100644 index 000000000..deaf55a0a --- /dev/null +++ b/assets/bundler.html-D5kCpoeU.js @@ -0,0 +1,16 @@ +import{_ as c,c as u,a as i,e as r,f as n,b as e,d as l,r as p,o as m}from"./app-9HBJsLu_.js";const b={};function v(y,s){const d=p("CodeTabs"),o=p("RouteLink");return m(),u("div",null,[s[11]||(s[11]=i('

打包工具

VuePress 支持使用 ViteWebpack 作为打包工具来进行网站的开发和构建。你可以根据自己的喜好来选择使用哪个打包工具,并且不需要进行额外的配置。

安装打包工具

在安装 vuepress 包时,并不会自动安装打包工具,你需要选择并安装一个打包工具。

',4)),r(d,{id:"12",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:n(({value:a,isActive:t})=>s[0]||(s[0]=[l("pnpm")])),title1:n(({value:a,isActive:t})=>s[1]||(s[1]=[l("yarn")])),title2:n(({value:a,isActive:t})=>s[2]||(s[2]=[l("npm")])),tab0:n(({value:a,isActive:t})=>s[3]||(s[3]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 vite 打包工具")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 webpack 打包工具")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-webpack@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab1:n(({value:a,isActive:t})=>s[4]||(s[4]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 vite 打包工具")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 webpack 打包工具")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-webpack@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab2:n(({value:a,isActive:t})=>s[5]||(s[5]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 vite 打包工具")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 webpack 打包工具")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-webpack@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),_:1}),s[12]||(s[12]=e("h2",{id:"使用打包工具",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#使用打包工具"},[e("span",null,"使用打包工具")])],-1)),s[13]||(s[13]=e("p",null,"一般情况下,你不要任何额外配置就可以使用打包工具,因为我们已经帮你配置好了它们。",-1)),e("p",null,[s[7]||(s[7]=l("你只需要通过 ")),r(o,{to:"/zh/reference/config.html#bundler"},{default:n(()=>s[6]||(s[6]=[l("bundler")])),_:1}),s[8]||(s[8]=l(" 配置项指定打包工具即可:"))]),s[14]||(s[14]=i(`
import { viteBundler } from '@vuepress/bundler-vite'
+// import { webpackBundler } from '@vuepress/bundler-webpack'
+
+export default {
+  bundler: viteBundler(),
+  // bundler: webpackBundler(),
+}

当你需要对打包工具进行进阶配置时,只需要传入对应的配置项即可:

`,2)),e("ul",null,[e("li",null,[r(o,{to:"/zh/reference/bundler/vite.html"},{default:n(()=>s[9]||(s[9]=[l("打包工具 > Vite")])),_:1})]),e("li",null,[r(o,{to:"/zh/reference/bundler/webpack.html"},{default:n(()=>s[10]||(s[10]=[l("打包工具 > Webpack")])),_:1})])])])}const C=c(b,[["render",v],["__file","bundler.html.vue"]]),D=JSON.parse('{"path":"/zh/guide/bundler.html","title":"打包工具","lang":"zh-CN","frontmatter":{"description":"打包工具 VuePress 支持使用 Vite 或 Webpack 作为打包工具来进行网站的开发和构建。你可以根据自己的喜好来选择使用哪个打包工具,并且不需要进行额外的配置。 安装打包工具 在安装 vuepress 包时,并不会自动安装打包工具,你需要选择并安装一个打包工具。 使用打包工具 一般情况下,你不要任何额外配置就可以使用打包工具,因为我们已经...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/guide/bundler.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/guide/bundler.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"打包工具"}],["meta",{"property":"og:description","content":"打包工具 VuePress 支持使用 Vite 或 Webpack 作为打包工具来进行网站的开发和构建。你可以根据自己的喜好来选择使用哪个打包工具,并且不需要进行额外的配置。 安装打包工具 在安装 vuepress 包时,并不会自动安装打包工具,你需要选择并安装一个打包工具。 使用打包工具 一般情况下,你不要任何额外配置就可以使用打包工具,因为我们已经..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-09-23T11:25:41.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-23T11:25:41.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"打包工具\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-09-23T11:25:41.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"安装打包工具","slug":"安装打包工具","link":"#安装打包工具","children":[]},{"level":2,"title":"使用打包工具","slug":"使用打包工具","link":"#使用打包工具","children":[]}],"git":{"updatedTime":1727090741000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2},{"name":"Mister-Hope","email":"mister-hope@outlook.com","commits":1},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/guide/bundler.md"}');export{C as comp,D as data}; diff --git a/assets/cli.html-C6XDEXbR.js b/assets/cli.html-C6XDEXbR.js new file mode 100644 index 000000000..b7bae6fca --- /dev/null +++ b/assets/cli.html-C6XDEXbR.js @@ -0,0 +1,43 @@ +import{_ as i,c as l,a as s,b as p,d as n,e as t,f as r,r as d,o}from"./app-9HBJsLu_.js";const c={};function u(v,e){const a=d("RouteLink");return o(),l("div",null,[e[3]||(e[3]=s(`

Command Line Interface

Run vuepress --help to get following help messages:

Usage:
+  $ vuepress <command> [options]
+
+Commands:
+  dev [sourceDir]    Start development server
+  build [sourceDir]  Build to static site
+  info               Display environment information
+
+For more info, run any command with the \`--help\` flag:
+  $ vuepress dev --help
+  $ vuepress build --help
+  $ vuepress info --help
+
+Options:
+  -v, --version  Display version number
+  -h, --help     Display this message

Tips

VuePress is using debug module.

Set environment variable DEBUG=vuepress* to enable debug logs.

dev

Start a development server to develop your VuePress site locally.

Usage:
+  $ vuepress dev [sourceDir]
+
+Options:
+  -c, --config <config>  Set path to config file
+  -p, --port <port>      Use specified port (default: 8080)
+  -t, --temp <temp>      Set the directory of the temporary files
+  --host <host>          Use specified host (default: 0.0.0.0)
+  --cache <cache>        Set the directory of the cache files
+  --clean-temp           Clean the temporary files before dev
+  --clean-cache          Clean the cache files before dev
+  --open                 Open browser when ready
+  --debug                Enable debug mode
+  --no-watch             Disable watching page and config files (default: true)
+  -v, --version          Display version number
+  -h, --help             Display this message

Tips

Options set by CLI will override those options with the same name in your config file.

build

`,9)),p("p",null,[e[1]||(e[1]=n("Build your VuePress site to static files, which are ready for ")),t(a,{to:"/guide/deployment.html"},{default:r(()=>e[0]||(e[0]=[n("deployment")])),_:1}),e[2]||(e[2]=n("."))]),e[4]||(e[4]=s(`
Usage:
+  $ vuepress build [sourceDir]
+
+Options:
+  -c, --config <config>  Set path to config file
+  -d, --dest <dest>      Set the directory build output (default: .vuepress/dist)
+  -t, --temp <temp>      Set the directory of the temporary files
+  --cache <cache>        Set the directory of the cache files
+  --clean-temp           Clean the temporary files before build
+  --clean-cache          Clean the cache files before build
+  --debug                Enable debug mode
+  -v, --version          Display version number
+  -h, --help             Display this message

Tips

Options set by CLI will override those options with the same name in your config file.

info

Outputs information about your system and dependencies.

This command would be helpful when you want to check your environment or report an issue.

`,5))])}const h=i(c,[["render",u],["__file","cli.html.vue"]]),b=JSON.parse('{"path":"/reference/cli.html","title":"Command Line Interface","lang":"en-US","frontmatter":{"description":"Command Line Interface Run vuepress --help to get following help messages: Tips VuePress is using debug module. Set environment variable DEBUG=vuepress* to enable debug logs. de...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/reference/cli.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/reference/cli.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Command Line Interface"}],["meta",{"property":"og:description","content":"Command Line Interface Run vuepress --help to get following help messages: Tips VuePress is using debug module. Set environment variable DEBUG=vuepress* to enable debug logs. de..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-02-06T15:46:43.000Z"}],["meta",{"property":"article:modified_time","content":"2024-02-06T15:46:43.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Command Line Interface\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-02-06T15:46:43.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"dev","slug":"dev","link":"#dev","children":[]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]},{"level":2,"title":"info","slug":"info","link":"#info","children":[]}],"git":{"updatedTime":1707234403000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":3},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"reference/cli.md"}');export{h as comp,b as data}; diff --git a/assets/cli.html-CX21GLd1.js b/assets/cli.html-CX21GLd1.js new file mode 100644 index 000000000..4d6b5e1f3 --- /dev/null +++ b/assets/cli.html-CX21GLd1.js @@ -0,0 +1,43 @@ +import{_ as i,c as l,a as n,b as p,d as s,e as t,f as r,r as d,o as c}from"./app-9HBJsLu_.js";const o={};function v(u,e){const a=d("RouteLink");return c(),l("div",null,[e[3]||(e[3]=n(`

命令行接口

执行 vuepress --help 来获取下列帮助信息:

Usage:
+  $ vuepress <command> [options]
+
+Commands:
+  dev [sourceDir]    Start development server
+  build [sourceDir]  Build to static site
+  info               Display environment information
+
+For more info, run any command with the \`--help\` flag:
+  $ vuepress dev --help
+  $ vuepress build --help
+  $ vuepress info --help
+
+Options:
+  -v, --version  Display version number
+  -h, --help     Display this message

提示

VuePress 使用了 debug 模块。

设置环境变量 DEBUG=vuepress* 可以启用调试日志。

dev

启动一个开发服务器,在本地开发你的 VuePress 站点。

Usage:
+  $ vuepress dev [sourceDir]
+
+Options:
+  -c, --config <config>  Set path to config file
+  -p, --port <port>      Use specified port (default: 8080)
+  -t, --temp <temp>      Set the directory of the temporary files
+  --host <host>          Use specified host (default: 0.0.0.0)
+  --cache <cache>        Set the directory of the cache files
+  --clean-temp           Clean the temporary files before dev
+  --clean-cache          Clean the cache files before dev
+  --open                 Open browser when ready
+  --debug                Enable debug mode
+  --no-watch             Disable watching page and config files (default: true)
+  -v, --version          Display version number
+  -h, --help             Display this message

提示

通过命令行设置的配置项,会覆盖你配置文件中的同名配置项。

build

`,9)),p("p",null,[e[1]||(e[1]=s("将你的 VuePress 站点构建成静态文件,以便你进行后续")),t(a,{to:"/zh/guide/deployment.html"},{default:r(()=>e[0]||(e[0]=[s("部署")])),_:1}),e[2]||(e[2]=s("。"))]),e[4]||(e[4]=n(`
Usage:
+  $ vuepress build [sourceDir]
+
+Options:
+  -c, --config <config>  Set path to config file
+  -d, --dest <dest>      Set the directory build output (default: .vuepress/dist)
+  -t, --temp <temp>      Set the directory of the temporary files
+  --cache <cache>        Set the directory of the cache files
+  --clean-temp           Clean the temporary files before build
+  --clean-cache          Clean the cache files before build
+  --debug                Enable debug mode
+  -v, --version          Display version number
+  -h, --help             Display this message

提示

通过命令行设置的配置项,会覆盖你配置文件中的同名配置项。

info

输出当前系统和依赖相关的信息。

在你想要检查你的环境,或者提交 Issue 时候,可以使用该命令。

`,5))])}const h=i(o,[["render",v],["__file","cli.html.vue"]]),b=JSON.parse('{"path":"/zh/reference/cli.html","title":"命令行接口","lang":"zh-CN","frontmatter":{"description":"命令行接口 执行 vuepress --help 来获取下列帮助信息: 提示 VuePress 使用了 debug 模块。 设置环境变量 DEBUG=vuepress* 可以启用调试日志。 dev 启动一个开发服务器,在本地开发你的 VuePress 站点。 提示 通过命令行设置的配置项,会覆盖你配置文件中的同名配置项。 build 将你的 VuePr...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/reference/cli.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/reference/cli.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"命令行接口"}],["meta",{"property":"og:description","content":"命令行接口 执行 vuepress --help 来获取下列帮助信息: 提示 VuePress 使用了 debug 模块。 设置环境变量 DEBUG=vuepress* 可以启用调试日志。 dev 启动一个开发服务器,在本地开发你的 VuePress 站点。 提示 通过命令行设置的配置项,会覆盖你配置文件中的同名配置项。 build 将你的 VuePr..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-02-06T15:46:43.000Z"}],["meta",{"property":"article:modified_time","content":"2024-02-06T15:46:43.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"命令行接口\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-02-06T15:46:43.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"dev","slug":"dev","link":"#dev","children":[]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]},{"level":2,"title":"info","slug":"info","link":"#info","children":[]}],"git":{"updatedTime":1707234403000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":3},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/reference/cli.md"}');export{h as comp,b as data}; diff --git a/assets/client-api.html-C2mvMPgv.js b/assets/client-api.html-C2mvMPgv.js new file mode 100644 index 000000000..4d32658d3 --- /dev/null +++ b/assets/client-api.html-C2mvMPgv.js @@ -0,0 +1,25 @@ +import{_ as r,c as u,a as o,b as l,e as n,f as t,d as s,r as p,o as d}from"./app-9HBJsLu_.js";const c={},D={id:"resolvers",tabindex:"-1"},v={class:"header-anchor",href:"#resolvers"};function g(h,e){const a=p("RouteLink"),i=p("Badge");return d(),u("div",null,[e[43]||(e[43]=o(`

客户端 API

客户端 API 可以通过 vuepress/client 来引入。

组合式 API

useClientData

  • 详情:

    返回所有客户端数据的 Ref 对象。

    每个属性也可以通过下列的组合式 API 来访问。

  • 示例:

<script setup lang="ts">
+import { useClientData } from 'vuepress/client'
+
+const {
+  pageData,
+  pageFrontmatter,
+  pageHead,
+  pageHeadTitle,
+  pageLang,
+  routeLocale,
+  siteData,
+  siteLocaleData,
+} = useClientData()
+</script>

usePageData

`,7)),l("ul",null,[e[3]||(e[3]=l("li",null,[l("p",null,"详情:"),l("p",null,"返回当前页面数据的 Ref 对象。")],-1)),l("li",null,[e[2]||(e[2]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/zh/reference/node-api.html#data"},{default:t(()=>e[0]||(e[0]=[s("Node API > Page 属性 > data")])),_:1})]),l("li",null,[n(a,{to:"/zh/reference/plugin-api.html#extendspage"},{default:t(()=>e[1]||(e[1]=[s("插件 API > extendsPage")])),_:1})])])])]),e[44]||(e[44]=l("h3",{id:"usepagefrontmatter",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#usepagefrontmatter"},[l("span",null,"usePageFrontmatter")])],-1)),e[45]||(e[45]=l("ul",null,[l("li",null,[l("p",null,"详情:"),l("p",null,"返回当前页面 Frontmatter 的 Ref 对象。"),l("p",null,[s("它的值是页面数据的 "),l("code",null,"frontmatter"),s(" 属性。")])])],-1)),e[46]||(e[46]=l("h3",{id:"usepagehead",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#usepagehead"},[l("span",null,"usePageHead")])],-1)),l("ul",null,[l("li",null,[e[9]||(e[9]=l("p",null,"详情:",-1)),e[10]||(e[10]=l("p",null,"返回当前页面 Head 配置的 Ref 对象。",-1)),l("p",null,[e[6]||(e[6]=s("它的值是合并 ")),n(a,{to:"/zh/reference/frontmatter.html#head"},{default:t(()=>e[4]||(e[4]=[s("head")])),_:1}),e[7]||(e[7]=s(" Frontmatter 和 ")),n(a,{to:"/zh/reference/config.html#head"},{default:t(()=>e[5]||(e[5]=[s("head")])),_:1}),e[8]||(e[8]=s(" 配置,并进行去重后得到的。"))])])]),e[47]||(e[47]=o('

usePageHeadTitle

  • 详情:

    返回当前页面 Head 中的标题的 Ref 对象。

    它的值是连接页面标题和站点标题后得到的。

usePageLang

  • 详情:

    返回当前页面语言的 Ref 对象。

    它的值是页面数据的 lang 属性。

useRoutes

',5)),l("ul",null,[e[13]||(e[13]=l("li",null,[l("p",null,"详情:"),l("p",null,"返回所有路由的 Ref 对象。"),l("p",null,"它的值是站点数据的路由信息。")],-1)),l("li",null,[e[12]||(e[12]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/zh/advanced/cookbook/resolving-routes.html"},{default:t(()=>e[11]||(e[11]=[s("深入 > Cookbook > 解析路由")])),_:1})])])])]),e[48]||(e[48]=l("h3",{id:"useroutelocale",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#useroutelocale"},[l("span",null,"useRouteLocale")])],-1)),l("ul",null,[l("li",null,[e[17]||(e[17]=l("p",null,"详情:",-1)),e[18]||(e[18]=l("p",null,"返回当前路由对应的 locale path 的 Ref 对象。",-1)),l("p",null,[e[15]||(e[15]=s("它的值是 ")),n(a,{to:"/zh/reference/config.html#locales"},{default:t(()=>e[14]||(e[14]=[s("locales")])),_:1}),e[16]||(e[16]=s(" 配置的键之一。"))])])]),e[49]||(e[49]=o('

useSiteData

  • 详情:

    返回站点数据的 Ref 对象。

useSiteLocaleData

  • 详情:

    返回当前 locale 的站点数据的 Ref 对象。

    当前 locale 中的配置已经合并到顶层配置中。

工具函数

defineClientConfig

',6)),l("ul",null,[l("li",null,[e[22]||(e[22]=l("p",null,"详情:",-1)),l("p",null,[e[20]||(e[20]=s("帮助你创建 ")),n(a,{to:"/zh/reference/plugin-api.html#clientconfigfile"},{default:t(()=>e[19]||(e[19]=[s("clientConfigFile")])),_:1}),e[21]||(e[21]=s(" 的工具函数。"))])]),l("li",null,[e[24]||(e[24]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/zh/advanced/cookbook/usage-of-client-config.html"},{default:t(()=>e[23]||(e[23]=[s("深入 > Cookbook > 客户端配置的使用方法")])),_:1})])])])]),e[50]||(e[50]=l("h3",{id:"resolveroute",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#resolveroute"},[l("span",null,"resolveRoute")])],-1)),l("ul",null,[e[27]||(e[27]=l("li",null,[l("p",null,"详情:"),l("p",null,"解析给定链接对应的路由")],-1)),l("li",null,[e[26]||(e[26]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/zh/advanced/cookbook/resolving-routes.html"},{default:t(()=>e[25]||(e[25]=[s("深入 > Cookbook > 解析路由")])),_:1})])])])]),e[51]||(e[51]=l("h2",{id:"resolveroutepath",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#resolveroutepath"},[l("span",null,"resolveRoutePath")])],-1)),l("ul",null,[e[30]||(e[30]=l("li",null,[l("p",null,"详情:"),l("p",null,"解析给定链接对应的路由路径")],-1)),l("li",null,[e[29]||(e[29]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/zh/advanced/cookbook/resolving-routes.html"},{default:t(()=>e[28]||(e[28]=[s("深入 > Cookbook > 解析路由")])),_:1})])])])]),e[52]||(e[52]=l("h3",{id:"withbase",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#withbase"},[l("span",null,"withBase")])],-1)),l("ul",null,[l("li",null,[e[34]||(e[34]=l("p",null,"详情:",-1)),l("p",null,[e[32]||(e[32]=s("在 URL 前添加站点 ")),n(a,{to:"/zh/reference/config.html#base"},{default:t(()=>e[31]||(e[31]=[s("base")])),_:1}),e[33]||(e[33]=s(" 前缀。"))])]),l("li",null,[e[36]||(e[36]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/zh/guide/assets.html#base-helper"},{default:t(()=>e[35]||(e[35]=[s("指南 > 静态资源 > Base Helper")])),_:1})])])])]),e[53]||(e[53]=o(`

常量

在客户端代码中有一些常量可以使用。

如果想要把这些常量的类型定义补充到你的代码环境中,请将 vuepress/client-types 添加到你的 tsconfig.json 里:

{
+  "compilerOptions": {
+    "types": ["vuepress/client-types"]
+  }
+}

__VUEPRESS_VERSION__

  • 类型: string

  • 详情:

    VuePress Core 的版本号。

__VUEPRESS_BASE__

`,7)),l("ul",null,[e[41]||(e[41]=l("li",null,[l("p",null,[s("类型: "),l("code",null,"string")])],-1)),l("li",null,[e[40]||(e[40]=l("p",null,"详情:",-1)),l("p",null,[e[38]||(e[38]=s("配置中的 ")),n(a,{to:"/zh/reference/config.html#base"},{default:t(()=>e[37]||(e[37]=[s("base")])),_:1}),e[39]||(e[39]=s(" 字段。"))])])]),e[54]||(e[54]=o('

__VUEPRESS_DEV__

  • 类型: boolean

  • 详情:

    一个环境标记,用于标识当前是否运行在 dev 模式下。

__VUEPRESS_SSR__

  • 类型: boolean

  • 详情:

    一个环境标记,用于标识当前是否运行在服务端渲染 (SSR) 环境下。

进阶能力

',5)),l("h3",D,[l("a",v,[l("span",null,[e[42]||(e[42]=s("resolvers ")),n(i,{text:"实验性能力"})])])]),e[55]||(e[55]=o(`
  • 类型: Record<string, Function>

  • 详情:

    一个响应式对象,其中的方法决定了如何获取全局计算属性。

  • 示例:

在客户端配置文件中自定义 <title> 的格式:

import { defineClientConfig, resolvers } from 'vuepress/client'
+
+export default defineClientConfig({
+  enhance({ app, router, siteData }) {
+    resolvers.resolvePageHeadTitle = (page, siteLocale) =>
+      \`\${siteLocale.title} > \${page.title}\`
+  },
+})

警告

resolvers 会直接影响 VuePress 的基础功能,在修改前请确保你已充分了解其用途。

`,4))])}const y=r(c,[["render",g],["__file","client-api.html.vue"]]),f=JSON.parse('{"path":"/zh/reference/client-api.html","title":"客户端 API","lang":"zh-CN","frontmatter":{"description":"客户端 API 客户端 API 可以通过 vuepress/client 来引入。 组合式 API useClientData 详情: 返回所有客户端数据的 Ref 对象。 每个属性也可以通过下列的组合式 API 来访问。 示例: usePageData 详情: 返回当前页面数据的 Ref 对象。 参考: usePageFrontmatter 详情: ...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/reference/client-api.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/reference/client-api.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"客户端 API"}],["meta",{"property":"og:description","content":"客户端 API 客户端 API 可以通过 vuepress/client 来引入。 组合式 API useClientData 详情: 返回所有客户端数据的 Ref 对象。 每个属性也可以通过下列的组合式 API 来访问。 示例: usePageData 详情: 返回当前页面数据的 Ref 对象。 参考: usePageFrontmatter 详情: ..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-05-24T08:18:58.000Z"}],["meta",{"property":"article:modified_time","content":"2024-05-24T08:18:58.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"客户端 API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-05-24T08:18:58.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"组合式 API","slug":"组合式-api","link":"#组合式-api","children":[{"level":3,"title":"useClientData","slug":"useclientdata","link":"#useclientdata","children":[]},{"level":3,"title":"usePageData","slug":"usepagedata","link":"#usepagedata","children":[]},{"level":3,"title":"usePageFrontmatter","slug":"usepagefrontmatter","link":"#usepagefrontmatter","children":[]},{"level":3,"title":"usePageHead","slug":"usepagehead","link":"#usepagehead","children":[]},{"level":3,"title":"usePageHeadTitle","slug":"usepageheadtitle","link":"#usepageheadtitle","children":[]},{"level":3,"title":"usePageLang","slug":"usepagelang","link":"#usepagelang","children":[]},{"level":3,"title":"useRoutes","slug":"useroutes","link":"#useroutes","children":[]},{"level":3,"title":"useRouteLocale","slug":"useroutelocale","link":"#useroutelocale","children":[]},{"level":3,"title":"useSiteData","slug":"usesitedata","link":"#usesitedata","children":[]},{"level":3,"title":"useSiteLocaleData","slug":"usesitelocaledata","link":"#usesitelocaledata","children":[]}]},{"level":2,"title":"工具函数","slug":"工具函数","link":"#工具函数","children":[{"level":3,"title":"defineClientConfig","slug":"defineclientconfig","link":"#defineclientconfig","children":[]},{"level":3,"title":"resolveRoute","slug":"resolveroute","link":"#resolveroute","children":[]}]},{"level":2,"title":"resolveRoutePath","slug":"resolveroutepath","link":"#resolveroutepath","children":[{"level":3,"title":"withBase","slug":"withbase","link":"#withbase","children":[]}]},{"level":2,"title":"常量","slug":"常量","link":"#常量","children":[{"level":3,"title":"__VUEPRESS_VERSION__","slug":"vuepress-version","link":"#vuepress-version","children":[]},{"level":3,"title":"__VUEPRESS_BASE__","slug":"vuepress-base","link":"#vuepress-base","children":[]},{"level":3,"title":"__VUEPRESS_DEV__","slug":"vuepress-dev","link":"#vuepress-dev","children":[]},{"level":3,"title":"__VUEPRESS_SSR__","slug":"vuepress-ssr","link":"#vuepress-ssr","children":[]}]},{"level":2,"title":"进阶能力","slug":"进阶能力","link":"#进阶能力","children":[{"level":3,"title":"resolvers","slug":"resolvers","link":"#resolvers","children":[]}]}],"git":{"updatedTime":1716538738000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mister-Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/reference/client-api.md"}');export{y as comp,f as data}; diff --git a/assets/client-api.html-CS-yYR-t.js b/assets/client-api.html-CS-yYR-t.js new file mode 100644 index 000000000..837288e07 --- /dev/null +++ b/assets/client-api.html-CS-yYR-t.js @@ -0,0 +1,25 @@ +import{_ as p,c as u,a as o,b as l,e as n,f as t,d as s,r as i,o as d}from"./app-9HBJsLu_.js";const c={},v={id:"resolvers",tabindex:"-1"},D={class:"header-anchor",href:"#resolvers"};function g(h,e){const a=i("RouteLink"),r=i("Badge");return d(),u("div",null,[e[43]||(e[43]=o(`

Client API

Client API can be imported from vuepress/client.

Composition API

useClientData

  • Details:

    Returns all the client data ref objects.

    Each property can also be accessed by the following composition APIs.

  • Example:

<script setup lang="ts">
+import { useClientData } from 'vuepress/client'
+
+const {
+  pageData,
+  pageFrontmatter,
+  pageHead,
+  pageHeadTitle,
+  pageLang,
+  routeLocale,
+  siteData,
+  siteLocaleData,
+} = useClientData()
+</script>

usePageData

`,7)),l("ul",null,[e[3]||(e[3]=l("li",null,[l("p",null,"Details:"),l("p",null,"Returns the page data ref object of current page.")],-1)),l("li",null,[e[2]||(e[2]=l("p",null,"Also see:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/reference/node-api.html#data"},{default:t(()=>e[0]||(e[0]=[s("Node API > Page Properties > data")])),_:1})]),l("li",null,[n(a,{to:"/reference/plugin-api.html#extendspage"},{default:t(()=>e[1]||(e[1]=[s("Plugin API > extendsPage")])),_:1})])])])]),e[44]||(e[44]=l("h3",{id:"usepagefrontmatter",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#usepagefrontmatter"},[l("span",null,"usePageFrontmatter")])],-1)),e[45]||(e[45]=l("ul",null,[l("li",null,[l("p",null,"Details:"),l("p",null,"Returns the frontmatter ref object of current page."),l("p",null,[s("The value is the "),l("code",null,"frontmatter"),s(" property of the page data.")])])],-1)),e[46]||(e[46]=l("h3",{id:"usepagehead",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#usepagehead"},[l("span",null,"usePageHead")])],-1)),l("ul",null,[l("li",null,[e[9]||(e[9]=l("p",null,"Details:",-1)),e[10]||(e[10]=l("p",null,"Returns the head config ref object of current page.",-1)),l("p",null,[e[6]||(e[6]=s("The value is obtained by merging and deduplicating ")),n(a,{to:"/reference/frontmatter.html#head"},{default:t(()=>e[4]||(e[4]=[s("head")])),_:1}),e[7]||(e[7]=s(" frontmatter and ")),n(a,{to:"/reference/config.html#head"},{default:t(()=>e[5]||(e[5]=[s("head")])),_:1}),e[8]||(e[8]=s(" config."))])])]),e[47]||(e[47]=o('

usePageHeadTitle

  • Details:

    Returns the head title ref object of current page.

    The value is obtained by joining the page title and site title.

usePageLang

  • Details:

    Returns the language ref object of current page.

    The value is the lang property of the page data.

useRoutes

',5)),l("ul",null,[e[13]||(e[13]=l("li",null,[l("p",null,"Details:"),l("p",null,"Returns the routes ref object."),l("p",null,[s("The value is the "),l("code",null,"routes"),s(" property of the site data.")])],-1)),l("li",null,[e[12]||(e[12]=l("p",null,"Also see:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/advanced/cookbook/resolving-routes.html"},{default:t(()=>e[11]||(e[11]=[s("Advanced > Cookbook > Resolving Routes")])),_:1})])])])]),e[48]||(e[48]=l("h3",{id:"useroutelocale",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#useroutelocale"},[l("span",null,"useRouteLocale")])],-1)),l("ul",null,[l("li",null,[e[17]||(e[17]=l("p",null,"Details:",-1)),e[18]||(e[18]=l("p",null,"Returns the locale path ref object of current route.",-1)),l("p",null,[e[15]||(e[15]=s("The value is one of the keys of the ")),n(a,{to:"/reference/config.html#locales"},{default:t(()=>e[14]||(e[14]=[s("locales")])),_:1}),e[16]||(e[16]=s(" config."))])])]),e[49]||(e[49]=o('

useSiteData

  • Details:

    Returns the site data ref object.

useSiteLocaleData

  • Details:

    Returns the site data ref object of current locale.

    The properties of current locale have been merged into the root-level properties.

Helpers

defineClientConfig

',6)),l("ul",null,[l("li",null,[e[22]||(e[22]=l("p",null,"Details:",-1)),l("p",null,[e[20]||(e[20]=s("Helper for creating ")),n(a,{to:"/reference/plugin-api.html#clientconfigfile"},{default:t(()=>e[19]||(e[19]=[s("clientConfigFile")])),_:1}),e[21]||(e[21]=s("."))])]),l("li",null,[e[24]||(e[24]=l("p",null,"Also see:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/advanced/cookbook/usage-of-client-config.html"},{default:t(()=>e[23]||(e[23]=[s("Advanced > Cookbook > Usage of Client Config")])),_:1})])])])]),e[50]||(e[50]=l("h3",{id:"resolveroute",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#resolveroute"},[l("span",null,"resolveRoute")])],-1)),l("ul",null,[e[27]||(e[27]=l("li",null,[l("p",null,"Details:"),l("p",null,"Parses the route of the given link.")],-1)),l("li",null,[e[26]||(e[26]=l("p",null,"Also see:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/advanced/cookbook/resolving-routes.html"},{default:t(()=>e[25]||(e[25]=[s("Advanced > Cookbook > Resolving Routes")])),_:1})])])])]),e[51]||(e[51]=l("h2",{id:"resolveroutepath",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#resolveroutepath"},[l("span",null,"resolveRoutePath")])],-1)),l("ul",null,[e[30]||(e[30]=l("li",null,[l("p",null,"Details:"),l("p",null,"Parses the route path of the given link.")],-1)),l("li",null,[e[29]||(e[29]=l("p",null,"Also see:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/advanced/cookbook/resolving-routes.html"},{default:t(()=>e[28]||(e[28]=[s("Advanced > Cookbook > Resolving Routes")])),_:1})])])])]),e[52]||(e[52]=l("h3",{id:"withbase",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#withbase"},[l("span",null,"withBase")])],-1)),l("ul",null,[l("li",null,[e[34]||(e[34]=l("p",null,"Details:",-1)),l("p",null,[e[32]||(e[32]=s("Prefix URL with site ")),n(a,{to:"/reference/config.html#base"},{default:t(()=>e[31]||(e[31]=[s("base")])),_:1}),e[33]||(e[33]=s("."))])]),l("li",null,[e[36]||(e[36]=l("p",null,"Also see:",-1)),l("ul",null,[l("li",null,[n(a,{to:"/guide/assets.html#base-helper"},{default:t(()=>e[35]||(e[35]=[s("Guide > Assets > Base Helper")])),_:1})])])])]),e[53]||(e[53]=o(`

Constants

There are some constants that available in the client side code.

To shim the types of these constants in client side code, add vuepress/client-types to your tsconfig.json:

{
+  "compilerOptions": {
+    "types": ["vuepress/client-types"]
+  }
+}

__VUEPRESS_VERSION__

  • Type: string

  • Details:

    Version of VuePress core package.

__VUEPRESS_BASE__

`,7)),l("ul",null,[e[41]||(e[41]=l("li",null,[l("p",null,[s("Type: "),l("code",null,"string")])],-1)),l("li",null,[e[40]||(e[40]=l("p",null,"Details:",-1)),l("p",null,[e[38]||(e[38]=s("The ")),n(a,{to:"/reference/config.html#base"},{default:t(()=>e[37]||(e[37]=[s("base")])),_:1}),e[39]||(e[39]=s(" option from config."))])])]),e[54]||(e[54]=o('

__VUEPRESS_DEV__

  • Type: boolean

  • Details:

    An environment flag indicating whether it is currently running in dev mode.

__VUEPRESS_SSR__

  • Type: boolean

  • Details:

    An environment flag indicating whether it is currently running in server-side-rendering (SSR) build.

Advanced

',5)),l("h3",v,[l("a",D,[l("span",null,[e[42]||(e[42]=s("resolvers ")),n(r,{text:"experimental"})])])]),e[55]||(e[55]=o(`
  • Type: Record<string, Function>

  • Details:

    An reactive object, methods of which determining how to resolve global computed.

  • Example:

Customizing the format of <title> in client config file:

import { defineClientConfig, resolvers } from 'vuepress/client'
+
+export default defineClientConfig({
+  enhance({ app, router, siteData }) {
+    resolvers.resolvePageHeadTitle = (page, siteLocale) =>
+      \`\${siteLocale.title} > \${page.title}\`
+  },
+})

Caution

resolvers will affect the basic functionality of VuePress. Please make sure you have fully understood its purpose before modifying it.

`,4))])}const m=p(c,[["render",g],["__file","client-api.html.vue"]]),y=JSON.parse('{"path":"/reference/client-api.html","title":"Client API","lang":"en-US","frontmatter":{"description":"Client API Client API can be imported from vuepress/client. Composition API useClientData Details: Returns all the client data ref objects. Each property can also be accessed by...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/reference/client-api.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/reference/client-api.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Client API"}],["meta",{"property":"og:description","content":"Client API Client API can be imported from vuepress/client. Composition API useClientData Details: Returns all the client data ref objects. Each property can also be accessed by..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-05-24T08:18:58.000Z"}],["meta",{"property":"article:modified_time","content":"2024-05-24T08:18:58.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Client API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-05-24T08:18:58.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Composition API","slug":"composition-api","link":"#composition-api","children":[{"level":3,"title":"useClientData","slug":"useclientdata","link":"#useclientdata","children":[]},{"level":3,"title":"usePageData","slug":"usepagedata","link":"#usepagedata","children":[]},{"level":3,"title":"usePageFrontmatter","slug":"usepagefrontmatter","link":"#usepagefrontmatter","children":[]},{"level":3,"title":"usePageHead","slug":"usepagehead","link":"#usepagehead","children":[]},{"level":3,"title":"usePageHeadTitle","slug":"usepageheadtitle","link":"#usepageheadtitle","children":[]},{"level":3,"title":"usePageLang","slug":"usepagelang","link":"#usepagelang","children":[]}]},{"level":2,"title":"useRoutes","slug":"useroutes","link":"#useroutes","children":[{"level":3,"title":"useRouteLocale","slug":"useroutelocale","link":"#useroutelocale","children":[]},{"level":3,"title":"useSiteData","slug":"usesitedata","link":"#usesitedata","children":[]},{"level":3,"title":"useSiteLocaleData","slug":"usesitelocaledata","link":"#usesitelocaledata","children":[]}]},{"level":2,"title":"Helpers","slug":"helpers","link":"#helpers","children":[{"level":3,"title":"defineClientConfig","slug":"defineclientconfig","link":"#defineclientconfig","children":[]},{"level":3,"title":"resolveRoute","slug":"resolveroute","link":"#resolveroute","children":[]}]},{"level":2,"title":"resolveRoutePath","slug":"resolveroutepath","link":"#resolveroutepath","children":[{"level":3,"title":"withBase","slug":"withbase","link":"#withbase","children":[]}]},{"level":2,"title":"Constants","slug":"constants","link":"#constants","children":[{"level":3,"title":"__VUEPRESS_VERSION__","slug":"vuepress-version","link":"#vuepress-version","children":[]},{"level":3,"title":"__VUEPRESS_BASE__","slug":"vuepress-base","link":"#vuepress-base","children":[]},{"level":3,"title":"__VUEPRESS_DEV__","slug":"vuepress-dev","link":"#vuepress-dev","children":[]},{"level":3,"title":"__VUEPRESS_SSR__","slug":"vuepress-ssr","link":"#vuepress-ssr","children":[]}]},{"level":2,"title":"Advanced","slug":"advanced","link":"#advanced","children":[{"level":3,"title":"resolvers","slug":"resolvers","link":"#resolvers","children":[]}]}],"git":{"updatedTime":1716538738000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mister-Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"reference/client-api.md"}');export{m as comp,y as data}; diff --git a/assets/components.html-CHBTFX2a.js b/assets/components.html-CHBTFX2a.js new file mode 100644 index 000000000..507925b83 --- /dev/null +++ b/assets/components.html-CHBTFX2a.js @@ -0,0 +1,56 @@ +import{_ as o,c as t,a as e,b as s,d as l,e as p,f as i,r as c,o as r}from"./app-9HBJsLu_.js";const d={};function u(y,n){const a=c("RouteLink");return r(),t("div",null,[n[3]||(n[3]=e(`

内置组件

  • Props:

    • config
      • 类型:AutoLinkConfig
      • 是否必须:true
interface AutoLinkConfig {
+  /**
+   * 判断该链接是否被激活的模式,优先级高于 \`exact\`
+   */
+  activeMatch?: RegExp | string
+
+  /**
+   * \`aria-label\` 属性
+   */
+  ariaLabel?: string
+
+  /**
+   * 该链接是否只有在 URL 完全匹配时才激活
+   */
+  exact?: boolean
+
+  /**
+   * 自动链接的 URL
+   */
+  link: string
+
+  /**
+   * \`rel\` 属性
+   */
+  rel?: string
+
+  /**
+   * \`target\` 属性
+   */
+  target?: string
+
+  /**
+   * 自动链接的文本
+   */
+  text: string
+}
  • 使用:
<AutoLink :config="autoLinkConfig" />
+
+<AutoLink :config="autoLinkConfig">
+  default 插槽
+</AutoLink>
+
+<AutoLink :config="autoLinkConfig">
+  <template #before>before 插槽</template>
+  <template #after>after 插槽</template>
+</AutoLink>
+
+<AutoLink :config="autoLinkConfig">
+  <template v-slot="config">{{ config.text }}</template>
+</AutoLink>
+
+<AutoLink :config="autoLinkConfig">
+  <template #before="config">{{ config.text }}</template>
+</AutoLink>
  • 详情:

    该组件将会自动将内部链接渲染为 <RouteLink> ,将外部链接渲染为 <a> ,并添加必要的属性。

    你可以通过 beforeafter 插槽,在文本之前和之后渲染内容。也可以通过 default 插槽,直接渲染文本(默认文本是 config.text)。

    该组件主要是为了开发主题时使用,普通用户在绝大多数情况下并不会用到它。对于主题作者来说,我们建议你在不确定链接是内部链接还是外部链接时,尽量使用这个组件。

ClientOnly

  • 使用:
<ClientOnly>
+  <NonSsrFriendlyComponent />
+</ClientOnly>
  • 详情:

    该组件和它的子元素只会在客户端被渲染。也就是说,它不会在构建 (SSR) 过程中被渲染到 HTML 内。

    如果一个组件在 setup() 中直接使用 浏览器 / DOM API ,它会导致构建过程报错,因为这些 API 在 Node.js 的环境中是无法使用的。在这种情况下,你可以选择一种方式:

    • 修改这个组件,只在 onBeforeMount()onMounted() Hook 中使用 浏览器 / DOM API 。
    • 使用 <ClientOnly> 包裹这个组件。

提示

从 Vue 3.5 开始,如果你只是想避免 Hydration Mismatch ,可以尝试使用新的 data-allow-mismatch 属性来代替 <ClientOnly> 组件。

Content

  • Props:

    • path
      • 类型: string
      • 是否必须: false
  • 使用:

<Content path="/path/to/page.md" />
`,15)),s("ul",null,[n[2]||(n[2]=s("li",null,[s("p",null,"详情:"),s("p",null,"该组件会渲染页面的 Markdown 内容。"),s("p",null,[l("如果没有传入 "),s("code",null,"path"),l(" Prop ,它会渲染当前路由下的页面内容。")]),s("p",null,"该组件主要是为了开发主题时使用。在绝大多数情况下你不会用到它。")],-1)),s("li",null,[n[1]||(n[1]=s("p",null,"参考:",-1)),s("ul",null,[s("li",null,[p(a,{to:"/zh/reference/node-api.html#path"},{default:i(()=>n[0]||(n[0]=[l("Node API > Page 属性 > path")])),_:1})])])])]),n[4]||(n[4]=e(`
  • Props:

    • to
      • 类型: string
      • 是否必须: true
    • active
      • 类型: boolean
      • 是否必须: false
      • 默认值: false
    • activeClass
      • 类型: string
      • 是否必须: false
      • 默认值: 'route-link-active'
  • 使用:

<RouteLink to="/path/to/target-page.md">目标页面</RouteLink>
+<RouteLink active to="/path/to/current-page.md">当前页面</RouteLink>
  • 详情:

    该组件会渲染一个链接,用于跳转到指定页面。

    如果 active Prop 被设置为 true ,那么这个链接会被额外添加一个 activeClass 类名。需要注意的是,这里的 active 状态并不会根据当前路由自动更新。

    该组件主要是为了开发主题时使用,普通用户在绝大多数情况下并不会用到它。对于主题作者来说,我们建议你在渲染内部链接时尽量使用这个组件,而不是使用 vue-router<RouterLink> 组件。

`,4))])}const m=o(d,[["render",u],["__file","components.html.vue"]]),D=JSON.parse('{"path":"/zh/reference/components.html","title":"内置组件","lang":"zh-CN","frontmatter":{"description":"内置组件 AutoLink Props: config 类型:AutoLinkConfig 是否必须:true 使用: 详情: 该组件将会自动将内部链接渲染为 ,将外部链接渲染为 ,并添加必要的属性。 你可以通过 before 和 after 插槽,在文本之前和之后渲染内容。也可以通过 default 插槽,直接渲染文本...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/reference/components.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/reference/components.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"内置组件"}],["meta",{"property":"og:description","content":"内置组件 AutoLink Props: config 类型:AutoLinkConfig 是否必须:true 使用: 详情: 该组件将会自动将内部链接渲染为 ,将外部链接渲染为 ,并添加必要的属性。 你可以通过 before 和 after 插槽,在文本之前和之后渲染内容。也可以通过 default 插槽,直接渲染文本..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-09-03T15:31:59.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-03T15:31:59.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"内置组件\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-09-03T15:31:59.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"AutoLink","slug":"autolink","link":"#autolink","children":[]},{"level":2,"title":"ClientOnly","slug":"clientonly","link":"#clientonly","children":[]},{"level":2,"title":"Content","slug":"content","link":"#content","children":[]},{"level":2,"title":"RouteLink","slug":"routelink","link":"#routelink","children":[]}],"git":{"updatedTime":1725377519000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1},{"name":"张怀文","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/reference/components.md"}');export{m as comp,D as data}; diff --git a/assets/components.html-jiMAI3hh.js b/assets/components.html-jiMAI3hh.js new file mode 100644 index 000000000..d1164d680 --- /dev/null +++ b/assets/components.html-jiMAI3hh.js @@ -0,0 +1,56 @@ +import{_ as o,c as t,a as l,b as s,d as e,e as i,f as p,r,o as c}from"./app-9HBJsLu_.js";const d={};function u(y,n){const a=r("RouteLink");return c(),t("div",null,[n[3]||(n[3]=l(`

Built-in Components

  • Props:

    • config
      • Type: AutoLinkConfig
      • Required: true
interface AutoLinkConfig {
+  /**
+   * Pattern to determine if the link should be active, which has higher priority than \`exact\`
+   */
+  activeMatch?: RegExp | string
+
+  /**
+   * The \`aria-label\` attribute
+   */
+  ariaLabel?: string
+
+  /**
+   * Whether the link should be active only if the url is an exact match
+   */
+  exact?: boolean
+
+  /**
+   * URL of the auto link
+   */
+  link: string
+
+  /**
+   * The \`rel\` attribute
+   */
+  rel?: string
+
+  /**
+   * The \`target\` attribute
+   */
+  target?: string
+
+  /**
+   * Text of the auto link
+   */
+  text: string
+}
  • Usage:
<AutoLink :config="autoLinkConfig" />
+
+<AutoLink :config="autoLinkConfig">
+  default slot
+</AutoLink>
+
+<AutoLink :config="autoLinkConfig">
+  <template #before>before slot</template>
+  <template #after>after slot</template>
+</AutoLink>
+
+<AutoLink :config="autoLinkConfig">
+  <template v-slot="config">{{ config.text }}</template>
+</AutoLink>
+
+<AutoLink :config="autoLinkConfig">
+  <template #before="config">{{ config.text }}</template>
+</AutoLink>
  • Details:

    This component will automatically render internal link as <RouteLink>, and render external link as <a>. It will also add necessary attributes correspondingly.

    You can make use of the before and after slots to render content before and after the text. Also, you can use the default slot to render the text (default text is config.text).

    This component is mainly for developing themes. Users won't need it in most cases. For theme authors, it's recommended to use this component to render links that could be either internal or external.

ClientOnly

  • Usage:
<ClientOnly>
+  <NonSsrFriendlyComponent />
+</ClientOnly>
  • Details:

    This component and its children will only be rendered in client-side. That means, it will not be rendered to HTML during build (SSR).

    If a component is trying to access Browser / DOM APIs directly in setup(), an error will occur during build because those APIs are unavailable in Node.js environment. In such case, you could do either:

    • Modify the component to only access Browser / DOM APIs in onBeforeMount() or onMounted() hook.
    • Wrap the component with <ClientOnly>.

Tips

Since Vue 3.5, if you only want to avoid hydration mismatch, you can try the new data-allow-mismatch attribute instead of <ClientOnly> component.

Content

  • Props:

    • path
      • Type: string
      • Required: false
  • Usage:

<Content path="/path/to/page.md" />
`,15)),s("ul",null,[n[2]||(n[2]=s("li",null,[s("p",null,"Details:"),s("p",null,"This component will render the Markdown content of a page."),s("p",null,[e("If the "),s("code",null,"path"),e(" prop is not provided, it will render the page content of current route.")]),s("p",null,"This component is mainly for developing themes. You won't need it in most cases.")],-1)),s("li",null,[n[1]||(n[1]=s("p",null,"Also see:",-1)),s("ul",null,[s("li",null,[i(a,{to:"/reference/node-api.html#path"},{default:p(()=>n[0]||(n[0]=[e("Node API > Page Properties > path")])),_:1})])])])]),n[4]||(n[4]=l(`
  • Props:

    • to
      • Type: string
      • Required: true
    • active
      • Type: boolean
      • Required: false
      • Default: false
    • activeClass
      • Type: string
      • Required: false
      • Default: 'route-link-active'
  • Usage:

<RouteLink to="/path/to/target-page.md">target page</RouteLink>
+<RouteLink active to="/path/to/current-page.md">current page</RouteLink>
  • Details:

    This component will render a link to the target page.

    If the active prop is set to true, the link will have an extra activeClass. Notice that the active status won't be updated automatically when the route changes.

    This component is mainly for developing themes. Users won't need it in most cases. For theme authors, it's recommended to use this component to render internal links instead of the <RouterLink> component from vue-router.

`,4))])}const v=o(d,[["render",u],["__file","components.html.vue"]]),h=JSON.parse('{"path":"/reference/components.html","title":"Built-in Components","lang":"en-US","frontmatter":{"description":"Built-in Components AutoLink Props: config Type: AutoLinkConfig Required: true Usage: Details: This component will automatically render internal link as , and render ...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/reference/components.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/reference/components.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Built-in Components"}],["meta",{"property":"og:description","content":"Built-in Components AutoLink Props: config Type: AutoLinkConfig Required: true Usage: Details: This component will automatically render internal link as , and render ..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-09-03T15:31:59.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-03T15:31:59.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Built-in Components\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-09-03T15:31:59.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"AutoLink","slug":"autolink","link":"#autolink","children":[]},{"level":2,"title":"ClientOnly","slug":"clientonly","link":"#clientonly","children":[]},{"level":2,"title":"Content","slug":"content","link":"#content","children":[]},{"level":2,"title":"RouteLink","slug":"routelink","link":"#routelink","children":[]}],"git":{"updatedTime":1725377519000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1},{"name":"张怀文","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"reference/components.md"}');export{v as comp,h as data}; diff --git a/assets/config.html-8J-gA8_g.js b/assets/config.html-8J-gA8_g.js new file mode 100644 index 000000000..00571699c --- /dev/null +++ b/assets/config.html-8J-gA8_g.js @@ -0,0 +1,15 @@ +import{_ as o,c as r,a as s,b as l,e as i,f as t,d as n,r as p,o as d}from"./app-9HBJsLu_.js";const u={};function m(h,e){const a=p("RouteLink");return d(),r("div",null,[e[86]||(e[86]=s('

配置

站点配置

base

',3)),l("ul",null,[e[3]||(e[3]=s('
  • 类型: string

  • 默认值: /

  • 详情:

    部署站点的基础路径。

    如果你想让你的网站部署到一个子路径下,你将需要设置它。它的值应当总是以斜杠开始,并以斜杠结束。举例来说,如果你想将你的网站部署到 https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/"

    base 将会作为前缀自动地插入到以 / 开始的其他选项的链接中,所以你只需要指定一次。(head 中的属性除外)

    需要注意的是, base 应该是一个以 / 开始和结束的绝对路径名。

  • ',3)),l("li",null,[e[2]||(e[2]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/assets.html#base-helper"},{default:t(()=>e[0]||(e[0]=[n("指南 > 静态资源 > Base Helper")])),_:1})]),l("li",null,[i(a,{to:"/zh/guide/deployment.html"},{default:t(()=>e[1]||(e[1]=[n("指南 > 部署")])),_:1})])])])]),e[87]||(e[87]=s('

    lang

    • 类型: string

    • 默认值: en-US

    • 详情:

      站点的语言。

      它将会在最终渲染出的 HTML 中作为 <html> 标签的 lang 属性。

      它可以设置在不同语言的 locales 中。

    • 参考:

    title

    • 类型: string

    • 默认值: ''

    • 详情:

      站点的标题。

      它将会作为所有页面标题的后缀,并且在默认主题的导航栏中显示。

      它可以设置在不同语言的 locales 中。

    • 参考:

    description

    ',5)),l("ul",null,[e[7]||(e[7]=s("
  • 类型: string

  • 默认值: ''

  • 详情:

    站点的描述。

    它将会在最终渲染出的 HTML 中作为 <meta name="description" /> 标签的 content 属性。它会被每个页面的 Frontmatter 中的 description 字段覆盖。

    它可以设置在不同语言的 locales 中。

  • ",3)),l("li",null,[e[6]||(e[6]=l("p",null,"参考:",-1)),l("ul",null,[e[5]||(e[5]=l("li",null,[l("a",{href:"#locales"},"配置 > locales")],-1)),l("li",null,[i(a,{to:"/zh/reference/frontmatter.html#description"},{default:t(()=>e[4]||(e[4]=[n("Frontmatter > description")])),_:1})])])])]),e[88]||(e[88]=s(`
    • 类型: HeadConfig[]

    • 默认值: []

    • 详情:

      在最终渲染出的 HTML 的 <head> 标签内加入的额外标签。

      你可以通过 [tagName, { attrName: attrValue }, innerHTML?] 的格式来添加标签。

      它可以设置在不同语言的 locales 中。

      需要注意的是,如果 attrValue 是一个 pathname ,它不会被自动添加 base 前缀,所以如果需要的话请记得手动添加前缀。

    • 示例:

      增加一个自定义的 favicon :

    export default {
    +  head: [['link', { rel: 'icon', href: '/images/logo.png' }]],
    +}

    渲染为:

    <head>
    +  <link rel="icon" href="/images/logo.png" />
    +</head>
    `,5)),l("ul",null,[l("li",null,[e[10]||(e[10]=n("参考: ")),l("ul",null,[e[9]||(e[9]=l("li",null,[l("a",{href:"#locales"},"配置 > locales")],-1)),l("li",null,[i(a,{to:"/zh/reference/frontmatter.html#head"},{default:t(()=>e[8]||(e[8]=[n("Frontmatter > head")])),_:1})])])])]),e[89]||(e[89]=l("h3",{id:"locales",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#locales"},[l("span",null,"locales")])],-1)),l("ul",null,[e[13]||(e[13]=s('
  • 类型: { [path: string]: Partial<SiteLocaleData> }

  • 默认值: {}

  • 详情:

    多语言支持的各个语言 locales 。

    可以使用的字段有:

  • ',3)),l("li",null,[e[12]||(e[12]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/i18n.html"},{default:t(()=>e[11]||(e[11]=[n("指南 > I18n")])),_:1})])])])]),e[90]||(e[90]=l("h2",{id:"主题配置",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#主题配置"},[l("span",null,"主题配置")])],-1)),e[91]||(e[91]=l("h3",{id:"theme",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#theme"},[l("span",null,"theme")])],-1)),l("ul",null,[e[17]||(e[17]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"Theme")])],-1)),e[18]||(e[18]=l("li",null,[l("p",null,"详情:"),l("p",null,"设置站点要使用的主题。"),l("p",null,"如果不设置该选项,将会使用默认主题。")],-1)),l("li",null,[e[16]||(e[16]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/theme.html"},{default:t(()=>e[14]||(e[14]=[n("指南 > 主题")])),_:1})]),e[15]||(e[15]=l("li",null,[l("a",{href:"https://ecosystem.vuejs.press/zh/themes/default/config.html",target:"_blank",rel:"noopener noreferrer"},"默认主题 > 配置")],-1))])])]),e[92]||(e[92]=l("h2",{id:"打包工具配置",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#打包工具配置"},[l("span",null,"打包工具配置")])],-1)),e[93]||(e[93]=l("h3",{id:"bundler",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#bundler"},[l("span",null,"bundler")])],-1)),l("ul",null,[e[23]||(e[23]=s("
  • 类型: Bundler

  • 详情:

    设置站点要使用的打包工具。

    如果不设置该选项,将会使用默认的打包工具:

    • 使用 vuepressvuepress-vite 时,默认的打包工具是 Vite 。
    • 使用 vuepress-webpack 时,默认的打包工具是 Webpack 。
  • ",2)),l("li",null,[e[22]||(e[22]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/bundler.html"},{default:t(()=>e[19]||(e[19]=[n("指南 > 打包工具")])),_:1})]),l("li",null,[i(a,{to:"/zh/reference/bundler/vite.html"},{default:t(()=>e[20]||(e[20]=[n("打包工具 > Vite")])),_:1})]),l("li",null,[i(a,{to:"/zh/reference/bundler/webpack.html"},{default:t(()=>e[21]||(e[21]=[n("打包工具 > Webpack")])),_:1})])])])]),e[94]||(e[94]=s('

    通用配置项

    dest

    • 类型: string

    • 默认值: `${sourceDir}/.vuepress/dist`

    • 详情:

      指定 vuepress build 命令的输出目录。

    temp

    • 类型: string

    • 默认值: `${sourceDir}/.vuepress/.temp`

    • 详情:

      指定临时文件目录。

    注意

    VuePress 在开发和构建时会加载临时文件,因此临时文件目录应位于项目根目录内部,以便可以正确地解析到依赖。

    cache

    • 类型: string

    • 默认值: `${sourceDir}/.vuepress/.cache`

    • 详情:

      指定缓存文件目录。

    public

    ',9)),l("ul",null,[e[26]||(e[26]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"string")])],-1)),e[27]||(e[27]=l("li",null,[l("p",null,[n("默认值: "),l("code",null,"`${sourceDir}/.vuepress/public`")])],-1)),e[28]||(e[28]=l("li",null,[l("p",null,"详情:"),l("p",null,"指定 Public 文件目录。")],-1)),l("li",null,[e[25]||(e[25]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/assets.html#public-%E6%96%87%E4%BB%B6"},{default:t(()=>e[24]||(e[24]=[n("指南 > 静态资源 > Public 文件")])),_:1})])])])]),e[95]||(e[95]=s('

    debug

    • 类型: boolean

    • 默认值: false

    • 详情:

      是否启用 Debug 模式。

      该配置项主要提供给开发者使用。同时,我们使用了 debug 模块打印 Debug 日志,可以通过 DEBUG=vuepress* 环境变量来启用。

    pagePatterns

    • 类型: string[]

    • 默认值: ['**/*.md', '!.vuepress', '!node_modules']

    • 详情:

      指定页面文件的 Patterns 。这些 Patterns 是相对于 Source 目录的。

    permalinkPattern

    ',5)),l("ul",null,[e[31]||(e[31]=s("
  • 类型: string | null

  • 默认值: null

  • 详情:

    指定为页面生成永久链接的 Pattern 。

    它会被每个页面的 Frontmatter 中的 permalinkPattern 字段覆盖。

  • ",3)),l("li",null,[e[30]||(e[30]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/reference/frontmatter.html#permalinkpattern"},{default:t(()=>e[29]||(e[29]=[n("Frontmatter > permalinkPattern")])),_:1})])])])]),e[96]||(e[96]=s('

    Dev 配置项

    host

    • 类型: string

    • 默认值: '0.0.0.0'

    • 详情:

      指定开发服务器的主机名。

    port

    • 类型: number

    • 默认值: 8080

    • 详情:

      指定开发服务器的端口号。

    open

    • 类型: boolean

    • 默认值: false

    • 详情:

      是否在开发服务器启动后打开浏览器。

    templateDev

    • 类型: string

    • 默认值: '@vuepress/client/templates/dev.html'

    • 详情:

      指定开发时使用的 HTML 模板。

    Build 配置项

    shouldPreload

    • 类型: ((file: string, type: string) => boolean)) | boolean

    • 默认值: true

    • 详情:

      一个函数,用来控制哪些文件是需要生成对应的 <link rel="preload"> 标签的。设置为 true 或者 false 来完全启用或禁用它。

      默认情况下,只有当前页面所需的文件会被预加载。所以在绝大部分情况下,你只需要使用 true 就可以了。

    shouldPrefetch

    • 类型: ((file: string, type: string) => boolean)) | boolean

    • 默认值: true

    • 详情:

      一个函数,用来控制哪些文件是需要生成对应的 <link rel="prefetch"> 标签的。设置为 true 或者 false 来完全启用或禁用它。

      如果你将它设置为 true ,所有其它页面所需的文件都会被预拉取。这对于小型站点来说是十分有帮助的,因为它会大大提升页面切换的速度。但是在你的网站有很多页面时不建议你这么做。

    templateBuild

    • 类型: string

    • 默认值: '@vuepress/client/templates/build.html'

    • 详情:

      指定构建时使用的 HTML 模板路径。

    templateBuildRenderer

    • 类型: TemplateRenderer

    • 默认值: templateRenderer

    • 详情:

      指定构建时使用的 HTML 模板渲染函数。

    Markdown 配置

    markdown

    ',20)),l("ul",null,[e[35]||(e[35]=s('
  • 类型: MarkdownOptions

  • 默认值: {}

  • 详情:

    对 VuePress 内置的 Markdown 语法扩展进行配置。

    它可以接收 markdown-it 的所有配置项,以及下列额外的配置项。

  • ',3)),l("li",null,[e[34]||(e[34]=l("p",null,"参考:",-1)),l("ul",null,[e[33]||(e[33]=l("li",null,[l("a",{href:"https://github.com/markdown-it/markdown-it#init-with-presets-and-options",target:"_blank",rel:"noopener noreferrer"},"markdown-it > Init with presets and options")],-1)),l("li",null,[i(a,{to:"/zh/guide/markdown.html#%E8%AF%AD%E6%B3%95%E6%89%A9%E5%B1%95"},{default:t(()=>e[32]||(e[32]=[n("指南 > Markdown > 语法扩展")])),_:1})])])])]),e[97]||(e[97]=s(`

    markdown.anchor

    • 类型: AnchorPluginOptions | false

    • 默认值:

    const defaultOptions = {
    +  level: [1, 2, 3, 4, 5, 6],
    +  permalink: anchorPlugin.permalink.headerLink({
    +    class: 'header-anchor',
    +    safariReaderFix: true,
    +  }),
    +}
    `,3)),l("ul",null,[e[38]||(e[38]=l("li",null,[l("p",null,"详情:"),l("p",null,[l("a",{href:"https://github.com/valeriangalliat/markdown-it-anchor",target:"_blank",rel:"noopener noreferrer"},"markdown-it-anchor"),n(" 的配置项。")]),l("p",null,[n("设置为 "),l("code",null,"false"),n(" 可以禁用该插件。")])],-1)),l("li",null,[e[37]||(e[37]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/markdown.html#%E6%A0%87%E9%A2%98%E9%94%9A%E7%82%B9"},{default:t(()=>e[36]||(e[36]=[n("指南 > Markdown > 语法扩展 > 标题锚点")])),_:1})])])])]),e[98]||(e[98]=s('

    markdown.assets

    • 类型: AssetsPluginOptions | false

    • 详情:

      VuePress 内置的 markdown-it assets 插件的配置项。

      设置为 false 可以禁用该插件。

    警告

    除非你了解它的用途,否则你不应该设置该配置项。

    markdown.component

    警告

    除非你了解它的用途,否则你不应该设置该配置项。

    markdown.emoji

    ',7)),l("ul",null,[e[41]||(e[41]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"EmojiPluginOptions | false")])],-1)),e[42]||(e[42]=l("li",null,[l("p",null,"详情:"),l("p",null,[l("a",{href:"https://github.com/markdown-it/markdown-it-emoji",target:"_blank",rel:"noopener noreferrer"},"markdown-it-emoji"),n(" 的配置项。")]),l("p",null,[n("设置为 "),l("code",null,"false"),n(" 可以禁用该插件。")])],-1)),l("li",null,[e[40]||(e[40]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/markdown.html#emoji"},{default:t(()=>e[39]||(e[39]=[n("指南 > Markdown > 语法扩展 > Emoji")])),_:1})])])])]),e[99]||(e[99]=l("h3",{id:"markdown-frontmatter",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#markdown-frontmatter"},[l("span",null,"markdown.frontmatter")])],-1)),l("ul",null,[e[46]||(e[46]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"FrontmatterPluginOptions | false")])],-1)),e[47]||(e[47]=l("li",null,[l("p",null,"详情:"),l("p",null,[l("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-frontmatter",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-frontmatter"),n(" 插件的配置项。")]),l("p",null,[n("设置为 "),l("code",null,"false"),n(" 可以禁用该插件。")])],-1)),l("li",null,[e[45]||(e[45]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/page.html#frontmatter"},{default:t(()=>e[43]||(e[43]=[n("指南 > 页面 > Frontmatter")])),_:1})]),l("li",null,[i(a,{to:"/zh/reference/node-api.html#frontmatter"},{default:t(()=>e[44]||(e[44]=[n("Node API > Page 属性 > frontmatter")])),_:1})])])])]),e[100]||(e[100]=s(`

    警告

    除非你了解它的用途,否则你不应该设置该配置项。

    markdown.headers

    • 类型: HeadersPluginOptions | false

    • 默认值:

    const defaultOptions = {
    +  level: [2, 3],
    +}
    `,4)),l("ul",null,[e[50]||(e[50]=l("li",null,[l("p",null,"详情:"),l("p",null,[l("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-headers",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-headers"),n(" 插件的配置项。")]),l("p",null,[n("设置为 "),l("code",null,"false"),n(" 可以禁用该插件。")])],-1)),l("li",null,[e[49]||(e[49]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/reference/node-api.html#headers"},{default:t(()=>e[48]||(e[48]=[n("Node API > Page 属性 > headers")])),_:1})])])])]),e[101]||(e[101]=l("h3",{id:"markdown-importcode",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#markdown-importcode"},[l("span",null,"markdown.importCode")])],-1)),l("ul",null,[e[53]||(e[53]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"ImportCodePluginOptions | false")])],-1)),e[54]||(e[54]=l("li",null,[l("p",null,"详情:"),l("p",null,"VuePress 内置的 markdown-it 导入代码插件的配置项。"),l("p",null,[n("设置为 "),l("code",null,"false"),n(" 可以禁用该插件。")])],-1)),l("li",null,[e[52]||(e[52]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/markdown.html#%E5%AF%BC%E5%85%A5%E4%BB%A3%E7%A0%81%E5%9D%97"},{default:t(()=>e[51]||(e[51]=[n("指南 > Markdown > 语法扩展 > 导入代码块")])),_:1})])])])]),e[102]||(e[102]=s('

    markdown.importCode.handleImportPath

    • 类型: (str: string) => string

    • 默认值: (str) => str

    • 详情:

      一个函数,用于处理导入代码语法中的文件导入路径。

    ',3)),l("ul",null,[e[57]||(e[57]=s('
  • 类型: LinkPluginOptions | false

  • 详情:

    VuePress 内置的 markdown-it 链接插件的配置项。

    它可以把站内链接的 tag 转换为 internalTag ,并且可以在站外链接上添加额外的属性和图标。

    设置为 false 可以禁用该插件。

  • ',2)),l("li",null,[e[56]||(e[56]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/markdown.html#%E9%93%BE%E6%8E%A5"},{default:t(()=>e[55]||(e[55]=[n("指南 > Markdown > 语法扩展 > 链接")])),_:1})])])])]),e[103]||(e[103]=l("h4",{id:"markdown-links-internaltag",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#markdown-links-internaltag"},[l("span",null,"markdown.links.internalTag")])],-1)),l("ul",null,[e[63]||(e[63]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"string")])],-1)),e[64]||(e[64]=l("li",null,[l("p",null,[n("默认值: "),l("code",null,"'RouteLink'")])],-1)),l("li",null,[e[61]||(e[61]=l("p",null,"详情:",-1)),e[62]||(e[62]=l("p",null,"内部链接所使用的标签。",-1)),l("p",null,[e[59]||(e[59]=n("默认情况下,该插件会把内部链接转换为 ")),i(a,{to:"/zh/reference/components.html#routelink"},{default:t(()=>e[58]||(e[58]=[n("RouteLink")])),_:1}),e[60]||(e[60]=n(" 。"))])])]),e[104]||(e[104]=s('
    • 类型: Record<string, string>

    • 默认值: { target: '_blank', rel: 'noopener noreferrer' }

    • 详情:

      为外部链接添加额外的属性。

    markdown.sfc

    ',3)),l("ul",null,[e[68]||(e[68]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"SfcPluginOptions | false")])],-1)),e[69]||(e[69]=l("li",null,[l("p",null,"详情:"),l("p",null,[l("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-sfc",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-sfc"),n(" 插件的配置项。")]),l("p",null,[n("设置为 "),l("code",null,"false"),n(" 可以禁用该插件。")])],-1)),l("li",null,[e[67]||(e[67]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/advanced/cookbook/markdown-and-vue-sfc.html"},{default:t(()=>e[65]||(e[65]=[n("Cookbook > Markdown 与 Vue SFC")])),_:1})]),l("li",null,[i(a,{to:"/zh/reference/node-api.html#sfcblocks"},{default:t(()=>e[66]||(e[66]=[n("Node API > Page 属性 > sfcBlocks")])),_:1})])])])]),e[105]||(e[105]=s(`

    警告

    除非你了解它的用途,否则你不应该设置该配置项。

    markdown.slugify

    • 类型: (str: string) => string

    • 详情:

      默认使用的 slugify 函数。

    markdown.title

    • 类型: undefined | false

    • 详情:

      @mdit-vue/plugin-title 插件的配置项。

      设置为 false 可以禁用该插件。

    警告

    除非你了解它的用途,否则你不应该设置该配置项。

    markdown.toc

    • 类型: TocPluginOptions | false

    • 默认值:

    const defaultOptions = {
    +  level: [2, 3],
    +}
    `,9)),l("ul",null,[e[72]||(e[72]=l("li",null,[l("p",null,"详情:"),l("p",null,[l("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-toc",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-toc"),n(" 插件的配置项。")]),l("p",null,[n("设置为 "),l("code",null,"false"),n(" 可以禁用该插件。")])],-1)),l("li",null,[e[71]||(e[71]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/markdown.html#%E7%9B%AE%E5%BD%95"},{default:t(()=>e[70]||(e[70]=[n("指南 > Markdown > 语法扩展 > 目录")])),_:1})])])])]),e[106]||(e[106]=l("h4",{id:"markdown-vpre-block",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#markdown-vpre-block"},[l("span",null,"markdown.vPre.block")])],-1)),l("ul",null,[e[75]||(e[75]=s("
  • 类型: boolean

  • 默认值: true

  • 详情:

    是否在代码块的 <pre> 标签上添加 v-pre 指令。

  • ",3)),l("li",null,[e[74]||(e[74]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/markdown.html#%E6%B7%BB%E5%8A%A0-v-pre"},{default:t(()=>e[73]||(e[73]=[n("指南 > Markdown > 语法扩展 > 代码块 > 添加 v-pre")])),_:1})])])])]),e[107]||(e[107]=l("h4",{id:"markdown-vpre-inline",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#markdown-vpre-inline"},[l("span",null,"markdown.vPre.inline")])],-1)),l("ul",null,[e[78]||(e[78]=s("
  • 类型: boolean

  • 默认值: true

  • 详情:

    是否在行内代码的 <code> 标签上添加 v-pre 指令。

  • ",3)),l("li",null,[e[77]||(e[77]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/markdown.html#%E6%B7%BB%E5%8A%A0-v-pre"},{default:t(()=>e[76]||(e[76]=[n("指南 > Markdown > 语法扩展 > 代码块 > 添加 v-pre")])),_:1})])])])]),e[108]||(e[108]=l("h2",{id:"插件配置",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#插件配置"},[l("span",null,"插件配置")])],-1)),e[109]||(e[109]=l("h3",{id:"plugins",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#plugins"},[l("span",null,"plugins")])],-1)),l("ul",null,[e[81]||(e[81]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"PluginConfig[]")])],-1)),e[82]||(e[82]=l("li",null,[l("p",null,"详情:"),l("p",null,"要使用的插件。"),l("p",null,"该配置项接收一个数组,其中的每一个数组项是一个或一组插件。")],-1)),l("li",null,[e[80]||(e[80]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[i(a,{to:"/zh/guide/plugin.html"},{default:t(()=>e[79]||(e[79]=[n("指南 > 插件")])),_:1})])])])]),e[110]||(e[110]=l("h2",{id:"插件-api",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#插件-api"},[l("span",null,"插件 API")])],-1)),e[111]||(e[111]=l("p",null,[n("用户配置文件同样可以作为一个 VuePress 插件,所以除了 "),l("code",null,"name"),n(" 和 "),l("code",null,"multiple"),n(" 配置项以外的所有插件 API 都可以在配置文件中使用。")],-1)),l("p",null,[e[84]||(e[84]=n("前往 ")),i(a,{to:"/zh/reference/plugin-api.html"},{default:t(()=>e[83]||(e[83]=[n("插件 API 参考")])),_:1}),e[85]||(e[85]=n(" 查看所有插件 API 。"))])])}const g=o(u,[["render",m],["__file","config.html.vue"]]),k=JSON.parse('{"path":"/zh/reference/config.html","title":"配置","lang":"zh-CN","frontmatter":{"description":"配置 站点配置 base 类型: string 默认值: / 详情: 部署站点的基础路径。 如果你想让你的网站部署到一个子路径下,你将需要设置它。它的值应当总是以斜杠开始,并以斜杠结束。举例来说,如果你想将你的网站部署到 https://foo.github.io/bar/,那么 base 应该被设置成 \\"/bar/\\"。 base 将会作为前缀自动地插...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/reference/config.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/reference/config.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"配置"}],["meta",{"property":"og:description","content":"配置 站点配置 base 类型: string 默认值: / 详情: 部署站点的基础路径。 如果你想让你的网站部署到一个子路径下,你将需要设置它。它的值应当总是以斜杠开始,并以斜杠结束。举例来说,如果你想将你的网站部署到 https://foo.github.io/bar/,那么 base 应该被设置成 \\"/bar/\\"。 base 将会作为前缀自动地插..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-07-14T14:29:58.000Z"}],["meta",{"property":"article:modified_time","content":"2024-07-14T14:29:58.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"配置\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-07-14T14:29:58.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"站点配置","slug":"站点配置","link":"#站点配置","children":[{"level":3,"title":"base","slug":"base","link":"#base","children":[]},{"level":3,"title":"lang","slug":"lang","link":"#lang","children":[]},{"level":3,"title":"title","slug":"title","link":"#title","children":[]},{"level":3,"title":"description","slug":"description","link":"#description","children":[]},{"level":3,"title":"head","slug":"head","link":"#head","children":[]},{"level":3,"title":"locales","slug":"locales","link":"#locales","children":[]}]},{"level":2,"title":"主题配置","slug":"主题配置","link":"#主题配置","children":[{"level":3,"title":"theme","slug":"theme","link":"#theme","children":[]}]},{"level":2,"title":"打包工具配置","slug":"打包工具配置","link":"#打包工具配置","children":[{"level":3,"title":"bundler","slug":"bundler","link":"#bundler","children":[]}]},{"level":2,"title":"通用配置项","slug":"通用配置项","link":"#通用配置项","children":[{"level":3,"title":"dest","slug":"dest","link":"#dest","children":[]},{"level":3,"title":"temp","slug":"temp","link":"#temp","children":[]},{"level":3,"title":"cache","slug":"cache","link":"#cache","children":[]},{"level":3,"title":"public","slug":"public","link":"#public","children":[]},{"level":3,"title":"debug","slug":"debug","link":"#debug","children":[]},{"level":3,"title":"pagePatterns","slug":"pagepatterns","link":"#pagepatterns","children":[]},{"level":3,"title":"permalinkPattern","slug":"permalinkpattern","link":"#permalinkpattern","children":[]}]},{"level":2,"title":"Dev 配置项","slug":"dev-配置项","link":"#dev-配置项","children":[{"level":3,"title":"host","slug":"host","link":"#host","children":[]},{"level":3,"title":"port","slug":"port","link":"#port","children":[]},{"level":3,"title":"open","slug":"open","link":"#open","children":[]},{"level":3,"title":"templateDev","slug":"templatedev","link":"#templatedev","children":[]}]},{"level":2,"title":"Build 配置项","slug":"build-配置项","link":"#build-配置项","children":[{"level":3,"title":"shouldPreload","slug":"shouldpreload","link":"#shouldpreload","children":[]},{"level":3,"title":"shouldPrefetch","slug":"shouldprefetch","link":"#shouldprefetch","children":[]},{"level":3,"title":"templateBuild","slug":"templatebuild","link":"#templatebuild","children":[]},{"level":3,"title":"templateBuildRenderer","slug":"templatebuildrenderer","link":"#templatebuildrenderer","children":[]}]},{"level":2,"title":"Markdown 配置","slug":"markdown-配置","link":"#markdown-配置","children":[{"level":3,"title":"markdown","slug":"markdown","link":"#markdown","children":[]},{"level":3,"title":"markdown.anchor","slug":"markdown-anchor","link":"#markdown-anchor","children":[]},{"level":3,"title":"markdown.assets","slug":"markdown-assets","link":"#markdown-assets","children":[]},{"level":3,"title":"markdown.component","slug":"markdown-component","link":"#markdown-component","children":[]},{"level":3,"title":"markdown.emoji","slug":"markdown-emoji","link":"#markdown-emoji","children":[]},{"level":3,"title":"markdown.frontmatter","slug":"markdown-frontmatter","link":"#markdown-frontmatter","children":[]},{"level":3,"title":"markdown.headers","slug":"markdown-headers","link":"#markdown-headers","children":[]},{"level":3,"title":"markdown.importCode","slug":"markdown-importcode","link":"#markdown-importcode","children":[]},{"level":3,"title":"markdown.links","slug":"markdown-links","link":"#markdown-links","children":[]},{"level":3,"title":"markdown.sfc","slug":"markdown-sfc","link":"#markdown-sfc","children":[]},{"level":3,"title":"markdown.slugify","slug":"markdown-slugify","link":"#markdown-slugify","children":[]},{"level":3,"title":"markdown.title","slug":"markdown-title","link":"#markdown-title","children":[]},{"level":3,"title":"markdown.toc","slug":"markdown-toc","link":"#markdown-toc","children":[]}]},{"level":2,"title":"插件配置","slug":"插件配置","link":"#插件配置","children":[{"level":3,"title":"plugins","slug":"plugins","link":"#plugins","children":[]}]},{"level":2,"title":"插件 API","slug":"插件-api","link":"#插件-api","children":[]}],"git":{"updatedTime":1720967398000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":2},{"name":"lebennington","email":"100212066+lebennington@users.noreply.github.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/reference/config.md"}');export{g as comp,k as data}; diff --git a/assets/config.html-CDKipwFP.js b/assets/config.html-CDKipwFP.js new file mode 100644 index 000000000..27a6c3be9 --- /dev/null +++ b/assets/config.html-CDKipwFP.js @@ -0,0 +1,15 @@ +import{_ as a,c as r,a as s,b as e,e as i,f as o,d as n,r as p,o as d}from"./app-9HBJsLu_.js";const u={};function f(h,l){const t=p("RouteLink");return d(),r("div",null,[l[90]||(l[90]=s('

    Config

    Site Config

    base

    ',3)),e("ul",null,[l[3]||(l[3]=s('
  • Type: string

  • Default: /

  • Details:

    The base URL the site will be deployed at.

    You will need to set this if you plan to deploy your site under a sub path. It should always start and end with a slash. For example, if you plan to deploy your site to GitHub pages at https://foo.github.io/bar/, then you should set base to "/bar/".

    The base is automatically prepended to the URLs that start with / in other options, so you only need to specify it once. (Except for attrs of head)

    Notice that base should be an absolute URL pathname starting and ending with / .

  • ',3)),e("li",null,[l[2]||(l[2]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/assets.html#base-helper"},{default:o(()=>l[0]||(l[0]=[n("Guide > Assets > Base Helper")])),_:1})]),e("li",null,[i(t,{to:"/guide/deployment.html"},{default:o(()=>l[1]||(l[1]=[n("Guide > Deployment")])),_:1})])])])]),l[91]||(l[91]=e("h3",{id:"lang",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#lang"},[e("span",null,"lang")])],-1)),e("ul",null,[l[7]||(l[7]=s("
  • Type: string

  • Default: en-US

  • Details:

    Language for the site.

    This will be the lang attribute of the <html> tag in the rendered HTML.

    This can be specified in different locales.

  • ",3)),e("li",null,[l[6]||(l[6]=e("p",null,"Also see:",-1)),e("ul",null,[l[5]||(l[5]=e("li",null,[e("a",{href:"#locales"},"Config > locales")],-1)),e("li",null,[i(t,{to:"/reference/frontmatter.html#lang"},{default:o(()=>l[4]||(l[4]=[n("Frontmatter > lang")])),_:1})])])])]),l[92]||(l[92]=s('

    title

    • Type: string

    • Default: ''

    • Details:

      Title for the site.

      This will be the suffix for all page titles, and displayed in the navbar in the default theme.

      This can be specified in different locales.

    • Also see:

    description

    ',3)),e("ul",null,[l[11]||(l[11]=s("
  • Type: string

  • Default: ''

  • Details:

    Description for the site.

    This will be the content attribute of <meta name="description" /> tag in the rendered HTML, which will be overrode by the description field of page frontmatter.

    This can be specified in different locales.

  • ",3)),e("li",null,[l[10]||(l[10]=e("p",null,"Also see:",-1)),e("ul",null,[l[9]||(l[9]=e("li",null,[e("a",{href:"#locales"},"Config > locales")],-1)),e("li",null,[i(t,{to:"/reference/frontmatter.html#description"},{default:o(()=>l[8]||(l[8]=[n("Frontmatter > description")])),_:1})])])])]),l[93]||(l[93]=s(`
    • Type: HeadConfig[]

    • Default: []

    • Details:

      Extra tags to inject into the <head> tag in the rendered HTML.

      You can specify each tag in the form of [tagName, { attrName: attrValue }, innerHTML?].

      This can be specified in different locales.

      Notice that if the attrValue is a pathname, it will be kept as-is without prepending base automatically, so remember to prepend it manually if needed.

    • Example:

      To add a custom favicon:

    export default {
    +  head: [['link', { rel: 'icon', href: '/images/logo.png' }]],
    +}

    Rendered as:

    <head>
    +  <link rel="icon" href="/images/logo.png" />
    +</head>
    `,5)),e("ul",null,[e("li",null,[l[14]||(l[14]=n("Also see: ")),e("ul",null,[l[13]||(l[13]=e("li",null,[e("a",{href:"#locales"},"Config > locales")],-1)),e("li",null,[i(t,{to:"/reference/frontmatter.html#head"},{default:o(()=>l[12]||(l[12]=[n("Frontmatter > head")])),_:1})])])])]),l[94]||(l[94]=e("h3",{id:"locales",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#locales"},[e("span",null,"locales")])],-1)),e("ul",null,[l[17]||(l[17]=s('
  • Type: { [path: string]: Partial<SiteLocaleData> }

  • Default: {}

  • Details:

    Specify locales for i18n support.

    Acceptable fields:

  • ',3)),e("li",null,[l[16]||(l[16]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/i18n.html"},{default:o(()=>l[15]||(l[15]=[n("Guide > I18n")])),_:1})])])])]),l[95]||(l[95]=e("h2",{id:"theme-config",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#theme-config"},[e("span",null,"Theme Config")])],-1)),l[96]||(l[96]=e("h3",{id:"theme",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#theme"},[e("span",null,"theme")])],-1)),e("ul",null,[l[21]||(l[21]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"Theme")])],-1)),l[22]||(l[22]=e("li",null,[e("p",null,"Details:"),e("p",null,"Set the theme of your site."),e("p",null,"If this option is not set, the default theme will be used.")],-1)),e("li",null,[l[20]||(l[20]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/theme.html"},{default:o(()=>l[18]||(l[18]=[n("Guide > Theme")])),_:1})]),l[19]||(l[19]=e("li",null,[e("a",{href:"https://ecosystem.vuejs.press/themes/default/config.html",target:"_blank",rel:"noopener noreferrer"},"Default Theme > Config")],-1))])])]),l[97]||(l[97]=e("h2",{id:"bundler-config",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#bundler-config"},[e("span",null,"Bundler Config")])],-1)),l[98]||(l[98]=e("h3",{id:"bundler",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#bundler"},[e("span",null,"bundler")])],-1)),e("ul",null,[l[27]||(l[27]=s("
  • Type: Bundler

  • Details:

    Set the bundler of your site.

    If this option is not set, the default bundler will be used:

    • With vuepress or vuepress-vite, the default bundler is vite.
    • With vuepress-webpack, the default bundler is webpack.
  • ",2)),e("li",null,[l[26]||(l[26]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/bundler.html"},{default:o(()=>l[23]||(l[23]=[n("Guide > Bundler")])),_:1})]),e("li",null,[i(t,{to:"/reference/bundler/vite.html"},{default:o(()=>l[24]||(l[24]=[n("Bundlers > Vite")])),_:1})]),e("li",null,[i(t,{to:"/reference/bundler/webpack.html"},{default:o(()=>l[25]||(l[25]=[n("Bundlers > Webpack")])),_:1})])])])]),l[99]||(l[99]=s('

    Common Config

    dest

    • Type: string

    • Default: `${sourceDir}/.vuepress/dist`

    • Details:

      Specify the output directory for vuepress build command.

    temp

    • Type: string

    • Default: `${sourceDir}/.vuepress/.temp`

    • Details:

      Specify the directory for temporary files.

    Warning

    Since VuePress will load temp files during dev and build, the temp directory should be inside project root to resolve dependencies correctly.

    cache

    • Type: string

    • Default: `${sourceDir}/.vuepress/.cache`

    • Details:

      Specify the directory for cache files.

    public

    ',9)),e("ul",null,[l[30]||(l[30]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"string")])],-1)),l[31]||(l[31]=e("li",null,[e("p",null,[n("Default: "),e("code",null,"`${sourceDir}/.vuepress/public`")])],-1)),l[32]||(l[32]=e("li",null,[e("p",null,"Details:"),e("p",null,"Specify the directory for public files.")],-1)),e("li",null,[l[29]||(l[29]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/assets.html#public-files"},{default:o(()=>l[28]||(l[28]=[n("Guide > Assets > Public Files")])),_:1})])])])]),l[100]||(l[100]=s('

    debug

    • Type: boolean

    • Default: false

    • Details:

      Enable debug mode or not.

      This would be helpful for developers. Also, we are using debug package for debug logging, which can be enabled via DEBUG=vuepress* environment variable.

    pagePatterns

    • Type: string[]

    • Default: ['**/*.md', '!.vuepress', '!node_modules']

    • Details:

      Specify the patterns of files you want to be resolved as pages. The patterns are relative to the source directory.

    permalinkPattern

    ',5)),e("ul",null,[l[35]||(l[35]=s("
  • Type: string | null

  • Default: null

  • Details:

    Specify the pattern to generate permalink.

    This will be overrode by the permalinkPattern field of page frontmatter.

  • ",3)),e("li",null,[l[34]||(l[34]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/reference/frontmatter.html#permalinkpattern"},{default:o(()=>l[33]||(l[33]=[n("Frontmatter > permalinkPattern")])),_:1})])])])]),l[101]||(l[101]=s('

    Dev Config

    host

    • Type: string

    • Default: '0.0.0.0'

    • Details:

      Specify the host to use for the dev server.

    port

    • Type: number

    • Default: 8080

    • Details:

      Specify the port to use for the dev server.

    open

    • Type: boolean

    • Default: false

    • Details:

      Whether to open the browser after dev-server had been started.

    templateDev

    • Type: string

    • Default: '@vuepress/client/templates/dev.html'

    • Details:

      Specify the path of the HTML template to be used for dev.

    Build Config

    shouldPreload

    • Type: ((file: string, type: string) => boolean)) | boolean

    • Default: true

    • Details:

      A function to control what files should have <link rel="preload"> resource hints generated. Set to true or false to enable or disable totally.

      By default, only those files that are required by current page will be preloaded. So you can keep it true in most cases.

    shouldPrefetch

    • Type: ((file: string, type: string) => boolean)) | boolean

    • Default: true

    • Details:

      A function to control what files should have <link rel="prefetch"> resource hints generated. Set to true or false to enable or disable for all files.

      If you set it to true, all files that required by other pages will be prefetched. This is good for small sites, which will speed up the navigation, but it might not be a good idea if you have lots of pages in your site.

    templateBuild

    • Type: string

    • Default: '@vuepress/client/templates/build.html'

    • Details:

      Specify the path of the HTML template to be used for build.

    templateBuildRenderer

    • Type: TemplateRenderer

    • Default: templateRenderer

    • Details:

      Specify the HTML template renderer to be used for build.

    Markdown Config

    markdown

    ',20)),e("ul",null,[l[39]||(l[39]=s('
  • Type: MarkdownOptions

  • Default: {}

  • Details:

    Configure VuePress built-in Markdown syntax extensions.

    It accepts all options of markdown-it, and the following additional options.

  • ',3)),e("li",null,[l[38]||(l[38]=e("p",null,"Also see:",-1)),e("ul",null,[l[37]||(l[37]=e("li",null,[e("a",{href:"https://github.com/markdown-it/markdown-it#init-with-presets-and-options",target:"_blank",rel:"noopener noreferrer"},"markdown-it > Init with presets and options")],-1)),e("li",null,[i(t,{to:"/guide/markdown.html#syntax-extensions"},{default:o(()=>l[36]||(l[36]=[n("Guide > Markdown > Syntax Extensions")])),_:1})])])])]),l[102]||(l[102]=s(`

    markdown.anchor

    • Type: AnchorPluginOptions | false

    • Default:

    const defaultOptions = {
    +  level: [1, 2, 3, 4, 5, 6],
    +  permalink: anchorPlugin.permalink.headerLink({
    +    class: 'header-anchor',
    +    safariReaderFix: true,
    +  }),
    +}
    `,3)),e("ul",null,[l[42]||(l[42]=e("li",null,[e("p",null,"Details:"),e("p",null,[n("Options for "),e("a",{href:"https://github.com/valeriangalliat/markdown-it-anchor",target:"_blank",rel:"noopener noreferrer"},"markdown-it-anchor"),n(".")]),e("p",null,[n("Set to "),e("code",null,"false"),n(" to disable this plugin.")])],-1)),e("li",null,[l[41]||(l[41]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/markdown.html#header-anchors"},{default:o(()=>l[40]||(l[40]=[n("Guide > Markdown > Syntax Extensions > Header Anchors")])),_:1})])])])]),l[103]||(l[103]=s('

    markdown.assets

    • Type: AssetsPluginOptions | false

    • Details:

      Options for VuePress built-in markdown-it assets plugin.

      Set to false to disable this plugin.

    Caution

    You should not configure it unless you understand what it is for.

    markdown.component

    Caution

    You should not configure it unless you understand what it is for.

    markdown.emoji

    ',7)),e("ul",null,[l[45]||(l[45]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"EmojiPluginOptions | false")])],-1)),l[46]||(l[46]=e("li",null,[e("p",null,"Details:"),e("p",null,[n("Options for "),e("a",{href:"https://github.com/markdown-it/markdown-it-emoji",target:"_blank",rel:"noopener noreferrer"},"markdown-it-emoji"),n(".")]),e("p",null,[n("Set to "),e("code",null,"false"),n(" to disable this plugin.")])],-1)),e("li",null,[l[44]||(l[44]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/markdown.html#emoji"},{default:o(()=>l[43]||(l[43]=[n("Guide > Markdown > Syntax Extensions > Emoji")])),_:1})])])])]),l[104]||(l[104]=e("h3",{id:"markdown-frontmatter",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#markdown-frontmatter"},[e("span",null,"markdown.frontmatter")])],-1)),e("ul",null,[l[50]||(l[50]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"FrontmatterPluginOptions | false")])],-1)),l[51]||(l[51]=e("li",null,[e("p",null,"Details:"),e("p",null,[n("Options for "),e("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-frontmatter",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-frontmatter"),n(".")]),e("p",null,[n("Set to "),e("code",null,"false"),n(" to disable this plugin.")])],-1)),e("li",null,[l[49]||(l[49]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/page.html#frontmatter"},{default:o(()=>l[47]||(l[47]=[n("Guide > Page > Frontmatter")])),_:1})]),e("li",null,[i(t,{to:"/reference/node-api.html#frontmatter"},{default:o(()=>l[48]||(l[48]=[n("Node API > Page Properties > frontmatter")])),_:1})])])])]),l[105]||(l[105]=s(`

    Caution

    You should not configure it unless you understand what it is for.

    markdown.headers

    • Type: HeadersPluginOptions | false

    • Default:

    const defaultOptions = {
    +  level: [2, 3],
    +}
    `,4)),e("ul",null,[l[54]||(l[54]=e("li",null,[e("p",null,"Details:"),e("p",null,[n("Options for "),e("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-headers",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-headers"),n(".")]),e("p",null,[n("Set to "),e("code",null,"false"),n(" to disable this plugin.")])],-1)),e("li",null,[l[53]||(l[53]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/reference/node-api.html#headers"},{default:o(()=>l[52]||(l[52]=[n("Node API > Page Properties > headers")])),_:1})])])])]),l[106]||(l[106]=e("h3",{id:"markdown-importcode",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#markdown-importcode"},[e("span",null,"markdown.importCode")])],-1)),e("ul",null,[l[57]||(l[57]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"ImportCodePluginOptions | false")])],-1)),l[58]||(l[58]=e("li",null,[e("p",null,"Details:"),e("p",null,"Options for VuePress built-in markdown-it import-code plugin."),e("p",null,[n("Set to "),e("code",null,"false"),n(" to disable this plugin.")])],-1)),e("li",null,[l[56]||(l[56]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/markdown.html#import-code-blocks"},{default:o(()=>l[55]||(l[55]=[n("Guide > Markdown > Syntax Extensions > Import Code Blocks")])),_:1})])])])]),l[107]||(l[107]=s('

    markdown.importCode.handleImportPath

    • Type: (str: string) => string

    • Default: (str) => str

    • Details:

      A function to handle the import path of the import code syntax.

    ',3)),e("ul",null,[l[61]||(l[61]=s('
  • Type: LinksPluginOptions | false

  • Details:

    Options for VuePress built-in markdown-it links plugin.

    It will convert the tag of internal links to internalTag, and add extra attributes and icon to external links.

    Set to false to disable this plugin.

  • ',2)),e("li",null,[l[60]||(l[60]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/markdown.html#links"},{default:o(()=>l[59]||(l[59]=[n("Guide > Markdown > Syntax Extensions > Links")])),_:1})])])])]),l[108]||(l[108]=e("h4",{id:"markdown-links-internaltag",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#markdown-links-internaltag"},[e("span",null,"markdown.links.internalTag")])],-1)),e("ul",null,[l[67]||(l[67]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"'a' | 'RouteLink' | 'RouterLink'")])],-1)),l[68]||(l[68]=e("li",null,[e("p",null,[n("Default: "),e("code",null,"'RouteLink'")])],-1)),e("li",null,[l[65]||(l[65]=e("p",null,"Details:",-1)),l[66]||(l[66]=e("p",null,"Tag for internal links.",-1)),e("p",null,[l[63]||(l[63]=n("By default, this plugin will transform internal links to ")),i(t,{to:"/reference/components.html#routelink"},{default:o(()=>l[62]||(l[62]=[n("RouteLink")])),_:1}),l[64]||(l[64]=n("."))])])]),l[109]||(l[109]=s('
    • Type: Record<string, string>

    • Default: { target: '_blank', rel: 'noopener noreferrer' }

    • Details:

      Additional attributes for external links.

    markdown.sfc

    ',3)),e("ul",null,[l[72]||(l[72]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"SfcPluginOptions | false")])],-1)),l[73]||(l[73]=e("li",null,[e("p",null,"Details:"),e("p",null,[n("Options for "),e("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-sfc",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-sfc"),n(".")]),e("p",null,[n("Set to "),e("code",null,"false"),n(" to disable this plugin.")])],-1)),e("li",null,[l[71]||(l[71]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/advanced/cookbook/markdown-and-vue-sfc.html"},{default:o(()=>l[69]||(l[69]=[n("Cookbook > Markdown and Vue SFC")])),_:1})]),e("li",null,[i(t,{to:"/reference/node-api.html#sfcblocks"},{default:o(()=>l[70]||(l[70]=[n("Node API > Page Properties > sfcBlocks")])),_:1})])])])]),l[110]||(l[110]=s(`

    Caution

    You should not configure it unless you understand what it is for.

    markdown.slugify

    • Type: (str: string) => string

    • Details:

      The default slugify function.

    markdown.title

    Caution

    You should not configure it unless you understand what it is for.

    markdown.toc

    • Type: TocPluginOptions | false

    • Default:

    const defaultOptions = {
    +  level: [2, 3],
    +}
    `,9)),e("ul",null,[l[76]||(l[76]=e("li",null,[e("p",null,"Details:"),e("p",null,[n("Options for "),e("a",{href:"https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-toc",target:"_blank",rel:"noopener noreferrer"},"@mdit-vue/plugin-toc"),n(".")]),e("p",null,[n("Set to "),e("code",null,"false"),n(" to disable this plugin.")])],-1)),e("li",null,[l[75]||(l[75]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/markdown.html#table-of-contents"},{default:o(()=>l[74]||(l[74]=[n("Guide > Markdown > Syntax Extensions > Table of Contents")])),_:1})])])])]),l[111]||(l[111]=e("h4",{id:"markdown-vpre-block",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#markdown-vpre-block"},[e("span",null,"markdown.vPre.block")])],-1)),e("ul",null,[l[79]||(l[79]=s("
  • Type: boolean

  • Default: true

  • Details:

    Add v-pre directive to <pre> tag of code block or not.

  • ",3)),e("li",null,[l[78]||(l[78]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/markdown.html#wrap-with-v-pre"},{default:o(()=>l[77]||(l[77]=[n("Guide > Markdown > Syntax Extensions > Code Blocks > Wrap with v-pre")])),_:1})])])])]),l[112]||(l[112]=e("h4",{id:"markdown-vpre-inline",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#markdown-vpre-inline"},[e("span",null,"markdown.vPre.inline")])],-1)),e("ul",null,[l[82]||(l[82]=s("
  • Type: boolean

  • Default: true

  • Details:

    Add v-pre directive to <code> tag of inline code or not.

  • ",3)),e("li",null,[l[81]||(l[81]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/markdown.html#wrap-with-v-pre"},{default:o(()=>l[80]||(l[80]=[n("Guide > Markdown > Syntax Extensions > Code Blocks > Wrap with v-pre")])),_:1})])])])]),l[113]||(l[113]=e("h2",{id:"plugin-config",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#plugin-config"},[e("span",null,"Plugin Config")])],-1)),l[114]||(l[114]=e("h3",{id:"plugins",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#plugins"},[e("span",null,"plugins")])],-1)),e("ul",null,[l[85]||(l[85]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"(Plugin | Plugin[])[]")])],-1)),l[86]||(l[86]=e("li",null,[e("p",null,"Details:"),e("p",null,"Plugins to use."),e("p",null,"This option accepts an array, each item of which could be a plugin or an array of plugins.")],-1)),e("li",null,[l[84]||(l[84]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[i(t,{to:"/guide/plugin.html"},{default:o(()=>l[83]||(l[83]=[n("Guide > Plugin")])),_:1})])])])]),l[115]||(l[115]=e("h2",{id:"plugin-api",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#plugin-api"},[e("span",null,"Plugin API")])],-1)),l[116]||(l[116]=e("p",null,[n("User config file also works as a VuePress plugin, so all of the Plugin APIs are available except the "),e("code",null,"name"),n(" and "),e("code",null,"multiple"),n(" options.")],-1)),e("p",null,[l[88]||(l[88]=n("Please check out ")),i(t,{to:"/reference/plugin-api.html"},{default:o(()=>l[87]||(l[87]=[n("Plugin API Reference")])),_:1}),l[89]||(l[89]=n(" for a full list of Plugin APIs."))])])}const m=a(u,[["render",f],["__file","config.html.vue"]]),g=JSON.parse('{"path":"/reference/config.html","title":"Config","lang":"en-US","frontmatter":{"description":"Config Site Config base Type: string Default: / Details: The base URL the site will be deployed at. You will need to set this if you plan to deploy your site under a sub path. I...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/reference/config.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/reference/config.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Config"}],["meta",{"property":"og:description","content":"Config Site Config base Type: string Default: / Details: The base URL the site will be deployed at. You will need to set this if you plan to deploy your site under a sub path. I..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-07-14T14:29:58.000Z"}],["meta",{"property":"article:modified_time","content":"2024-07-14T14:29:58.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Config\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-07-14T14:29:58.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Site Config","slug":"site-config","link":"#site-config","children":[{"level":3,"title":"base","slug":"base","link":"#base","children":[]},{"level":3,"title":"lang","slug":"lang","link":"#lang","children":[]},{"level":3,"title":"title","slug":"title","link":"#title","children":[]},{"level":3,"title":"description","slug":"description","link":"#description","children":[]},{"level":3,"title":"head","slug":"head","link":"#head","children":[]},{"level":3,"title":"locales","slug":"locales","link":"#locales","children":[]}]},{"level":2,"title":"Theme Config","slug":"theme-config","link":"#theme-config","children":[{"level":3,"title":"theme","slug":"theme","link":"#theme","children":[]}]},{"level":2,"title":"Bundler Config","slug":"bundler-config","link":"#bundler-config","children":[{"level":3,"title":"bundler","slug":"bundler","link":"#bundler","children":[]}]},{"level":2,"title":"Common Config","slug":"common-config","link":"#common-config","children":[{"level":3,"title":"dest","slug":"dest","link":"#dest","children":[]},{"level":3,"title":"temp","slug":"temp","link":"#temp","children":[]},{"level":3,"title":"cache","slug":"cache","link":"#cache","children":[]},{"level":3,"title":"public","slug":"public","link":"#public","children":[]},{"level":3,"title":"debug","slug":"debug","link":"#debug","children":[]},{"level":3,"title":"pagePatterns","slug":"pagepatterns","link":"#pagepatterns","children":[]},{"level":3,"title":"permalinkPattern","slug":"permalinkpattern","link":"#permalinkpattern","children":[]}]},{"level":2,"title":"Dev Config","slug":"dev-config","link":"#dev-config","children":[{"level":3,"title":"host","slug":"host","link":"#host","children":[]},{"level":3,"title":"port","slug":"port","link":"#port","children":[]},{"level":3,"title":"open","slug":"open","link":"#open","children":[]},{"level":3,"title":"templateDev","slug":"templatedev","link":"#templatedev","children":[]}]},{"level":2,"title":"Build Config","slug":"build-config","link":"#build-config","children":[{"level":3,"title":"shouldPreload","slug":"shouldpreload","link":"#shouldpreload","children":[]},{"level":3,"title":"shouldPrefetch","slug":"shouldprefetch","link":"#shouldprefetch","children":[]},{"level":3,"title":"templateBuild","slug":"templatebuild","link":"#templatebuild","children":[]},{"level":3,"title":"templateBuildRenderer","slug":"templatebuildrenderer","link":"#templatebuildrenderer","children":[]}]},{"level":2,"title":"Markdown Config","slug":"markdown-config","link":"#markdown-config","children":[{"level":3,"title":"markdown","slug":"markdown","link":"#markdown","children":[]},{"level":3,"title":"markdown.anchor","slug":"markdown-anchor","link":"#markdown-anchor","children":[]},{"level":3,"title":"markdown.assets","slug":"markdown-assets","link":"#markdown-assets","children":[]},{"level":3,"title":"markdown.component","slug":"markdown-component","link":"#markdown-component","children":[]},{"level":3,"title":"markdown.emoji","slug":"markdown-emoji","link":"#markdown-emoji","children":[]},{"level":3,"title":"markdown.frontmatter","slug":"markdown-frontmatter","link":"#markdown-frontmatter","children":[]},{"level":3,"title":"markdown.headers","slug":"markdown-headers","link":"#markdown-headers","children":[]},{"level":3,"title":"markdown.importCode","slug":"markdown-importcode","link":"#markdown-importcode","children":[]},{"level":3,"title":"markdown.links","slug":"markdown-links","link":"#markdown-links","children":[]},{"level":3,"title":"markdown.sfc","slug":"markdown-sfc","link":"#markdown-sfc","children":[]},{"level":3,"title":"markdown.slugify","slug":"markdown-slugify","link":"#markdown-slugify","children":[]},{"level":3,"title":"markdown.title","slug":"markdown-title","link":"#markdown-title","children":[]},{"level":3,"title":"markdown.toc","slug":"markdown-toc","link":"#markdown-toc","children":[]}]},{"level":2,"title":"Plugin Config","slug":"plugin-config","link":"#plugin-config","children":[{"level":3,"title":"plugins","slug":"plugins","link":"#plugins","children":[]}]},{"level":2,"title":"Plugin API","slug":"plugin-api","link":"#plugin-api","children":[]}],"git":{"updatedTime":1720967398000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":2},{"name":"lebennington","email":"100212066+lebennington@users.noreply.github.com","commits":1}]},"autoDesc":true,"filePathRelative":"reference/config.md"}');export{m as comp,g as data}; diff --git a/assets/configuration.html-DM_-Lxly.js b/assets/configuration.html-DM_-Lxly.js new file mode 100644 index 000000000..201a214b8 --- /dev/null +++ b/assets/configuration.html-DM_-Lxly.js @@ -0,0 +1,24 @@ +import{_ as t,c as r,a as i,b as s,d as n,e as o,f as a,r as p,o as c}from"./app-9HBJsLu_.js";const d={},u={class:"hint-container tip"},f={class:"hint-container tip"};function g(v,e){const l=p("RouteLink");return c(),r("div",null,[e[13]||(e[13]=i('

    Configuration

    Config File

    The essential file for configuring a VuePress site is .vuepress/config.js, while TypeScript config file is also supported. You can use .vuepress/config.ts instead to get better types hint for VuePress config.

    To be more specific, we have a convention for config file paths (in order of precedence):

    • In current working directory cwd:
      • vuepress.config.ts
      • vuepress.config.js
      • vuepress.config.mjs
    • In source directory sourceDir:
      • .vuepress/config.ts
      • .vuepress/config.js
      • .vuepress/config.mjs
    ',5)),s("p",null,[e[1]||(e[1]=n("You can also specify the config file via ")),e[2]||(e[2]=s("code",null,"--config",-1)),e[3]||(e[3]=n(" option of ")),o(l,{to:"/reference/cli.html"},{default:a(()=>e[0]||(e[0]=[n("CLI")])),_:1}),e[4]||(e[4]=n(":"))]),e[14]||(e[14]=i(`
    vuepress dev docs --config my-config.ts

    A basic config file looks like this:

    import { viteBundler } from '@vuepress/bundler-vite'
    +import { defaultTheme } from '@vuepress/theme-default'
    +import { defineUserConfig } from 'vuepress'
    +
    +export default defineUserConfig({
    +  bundler: viteBundler(),
    +  theme: defaultTheme(),
    +
    +  lang: 'en-US',
    +  title: 'Hello VuePress',
    +  description: 'Just playing around',
    +})
    `,3)),s("div",u,[e[8]||(e[8]=s("p",{class:"hint-container-title"},"Tips",-1)),s("p",null,[e[6]||(e[6]=n("Check out the ")),o(l,{to:"/reference/config.html"},{default:a(()=>e[5]||(e[5]=[n("Config Reference")])),_:1}),e[7]||(e[7]=n(" for a full list of VuePress config."))])]),e[15]||(e[15]=i(`

    Client Config File

    In most cases, the config file is sufficient to configure your VuePress site. However, sometimes users may want to add some client-side code directly. To help with this, VuePress also supports a client config file:

    ├─ docs
    +│  ├─ .vuepress
    +│  │  ├─ client.js   <--- client config file
    +│  │  └─ config.js   <--- config file
    +│  └─ README.md
    +├─ .gitignore
    +└─ package.json

    Similarly, we also have a convention for client config file paths (in order of precedence):

    • In current working directory cwd:
      • vuepress.client.ts
      • vuepress.client.js
      • vuepress.client.mjs
    • In source directory sourceDir:
      • .vuepress/client.ts
      • .vuepress/client.js
      • .vuepress/client.mjs

    A basic client config file looks like this:

    import { defineClientConfig } from 'vuepress/client'
    +
    +export default defineClientConfig({
    +  enhance({ app, router, siteData }) {},
    +  setup() {},
    +  rootComponents: [],
    +})
    `,7)),s("div",f,[e[11]||(e[11]=s("p",{class:"hint-container-title"},"Tips",-1)),e[12]||(e[12]=s("p",null,"Unlike config file, client config file could not be specified via CLI options.",-1)),s("p",null,[e[10]||(e[10]=n("To learn more about client config file, see ")),o(l,{to:"/advanced/cookbook/usage-of-client-config.html"},{default:a(()=>e[9]||(e[9]=[n("Advanced > Cookbook > Usage of Client Config")])),_:1})])])])}const m=t(d,[["render",g],["__file","configuration.html.vue"]]),C=JSON.parse('{"path":"/guide/configuration.html","title":"Configuration","lang":"en-US","frontmatter":{"description":"Configuration Config File The essential file for configuring a VuePress site is .vuepress/config.js, while TypeScript config file is also supported. You can use .vuepress/config...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/guide/configuration.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/guide/configuration.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Configuration"}],["meta",{"property":"og:description","content":"Configuration Config File The essential file for configuring a VuePress site is .vuepress/config.js, while TypeScript config file is also supported. You can use .vuepress/config..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-01-26T16:29:43.000Z"}],["meta",{"property":"article:modified_time","content":"2024-01-26T16:29:43.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Configuration\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-01-26T16:29:43.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Config File","slug":"config-file","link":"#config-file","children":[]},{"level":2,"title":"Client Config File","slug":"client-config-file","link":"#client-config-file","children":[]}],"git":{"updatedTime":1706286583000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":4}]},"autoDesc":true,"filePathRelative":"guide/configuration.md"}');export{m as comp,C as data}; diff --git a/assets/configuration.html-DvWzyqpP.js b/assets/configuration.html-DvWzyqpP.js new file mode 100644 index 000000000..9b9566d11 --- /dev/null +++ b/assets/configuration.html-DvWzyqpP.js @@ -0,0 +1,24 @@ +import{_ as p,c as t,a,b as n,d as e,e as o,f as i,r,o as c}from"./app-9HBJsLu_.js";const d={},u={class:"hint-container tip"},v={class:"hint-container tip"};function D(m,s){const l=r("RouteLink");return c(),t("div",null,[s[14]||(s[14]=a('

    配置

    配置文件

    VuePress 站点的基本配置文件是 .vuepress/config.js ,但也同样支持 TypeScript 配置文件。你可以使用 .vuepress/config.ts 来得到更好的类型提示。

    具体而言,我们对于配置文件的路径有着约定(按照优先顺序):

    • 当前工作目录 cwd 下:
      • vuepress.config.ts
      • vuepress.config.js
      • vuepress.config.mjs
    • 源文件目录 sourceDir 下:
      • .vuepress/config.ts
      • .vuepress/config.js
      • .vuepress/config.mjs
    ',5)),n("p",null,[s[1]||(s[1]=e("你也可以通过 ")),o(l,{to:"/zh/reference/cli.html"},{default:i(()=>s[0]||(s[0]=[e("命令行接口")])),_:1}),s[2]||(s[2]=e(" 的 ")),s[3]||(s[3]=n("code",null,"--config",-1)),s[4]||(s[4]=e(" 选项来指定配置文件:"))]),s[15]||(s[15]=a(`
    vuepress dev docs --config my-config.ts

    一个基础的配置文件是这样的:

    import { viteBundler } from '@vuepress/bundler-vite'
    +import { defaultTheme } from '@vuepress/theme-default'
    +import { defineUserConfig } from 'vuepress'
    +
    +export default defineUserConfig({
    +  bundler: viteBundler(),
    +  theme: defaultTheme(),
    +
    +  lang: 'zh-CN',
    +  title: '你好, VuePress !',
    +  description: '这是我的第一个 VuePress 站点',
    +})
    `,3)),n("div",u,[s[8]||(s[8]=n("p",{class:"hint-container-title"},"提示",-1)),n("p",null,[s[6]||(s[6]=e("前往 ")),o(l,{to:"/zh/reference/config.html"},{default:i(()=>s[5]||(s[5]=[e("配置参考")])),_:1}),s[7]||(s[7]=e(" 查看所有 VuePress 配置。"))])]),s[16]||(s[16]=a(`

    客户端配置文件

    在大多数情况下,配置文件已经足够帮助你配置好你的 VuePress 站点。不过,有些时候用户们可能希望直接添加一些客户端代码。 VuePress 通过客户端配置文件来支持这种需求:

    ├─ docs
    +│  ├─ .vuepress
    +│  │  ├─ client.js   <--- 客户端配置文件
    +│  │  └─ config.js   <--- 配置文件
    +│  └─ README.md
    +├─ .gitignore
    +└─ package.json

    同样的,我们也有关于客户端配置文件的路径约定(按照优先顺序):

    • 当前工作目录 cwd 下:
      • vuepress.client.ts
      • vuepress.client.js
      • vuepress.client.mjs
    • 源文件目录 sourceDir 下:
      • .vuepress/client.ts
      • .vuepress/client.js
      • .vuepress/client.mjs

    一个基础的客户端配置文件是这样的:

    import { defineClientConfig } from 'vuepress/client'
    +
    +export default defineClientConfig({
    +  enhance({ app, router, siteData }) {},
    +  setup() {},
    +  rootComponents: [],
    +})
    `,7)),n("div",v,[s[12]||(s[12]=n("p",{class:"hint-container-title"},"提示",-1)),s[13]||(s[13]=n("p",null,"和配置文件不同,客户端配置文件不能通过命令行接口的选项来指定。",-1)),n("p",null,[s[10]||(s[10]=e("可以前往 ")),o(l,{to:"/zh/advanced/cookbook/usage-of-client-config.html"},{default:i(()=>s[9]||(s[9]=[e("深入 > Cookbook > 客户端配置的使用方法")])),_:1}),s[11]||(s[11]=e(" 来了解更多信息。"))])])])}const C=p(d,[["render",D],["__file","configuration.html.vue"]]),g=JSON.parse('{"path":"/zh/guide/configuration.html","title":"配置","lang":"zh-CN","frontmatter":{"description":"配置 配置文件 VuePress 站点的基本配置文件是 .vuepress/config.js ,但也同样支持 TypeScript 配置文件。你可以使用 .vuepress/config.ts 来得到更好的类型提示。 具体而言,我们对于配置文件的路径有着约定(按照优先顺序): 当前工作目录 cwd 下: vuepress.config.ts vuep...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/guide/configuration.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/guide/configuration.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"配置"}],["meta",{"property":"og:description","content":"配置 配置文件 VuePress 站点的基本配置文件是 .vuepress/config.js ,但也同样支持 TypeScript 配置文件。你可以使用 .vuepress/config.ts 来得到更好的类型提示。 具体而言,我们对于配置文件的路径有着约定(按照优先顺序): 当前工作目录 cwd 下: vuepress.config.ts vuep..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-01-26T16:29:43.000Z"}],["meta",{"property":"article:modified_time","content":"2024-01-26T16:29:43.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"配置\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-01-26T16:29:43.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"配置文件","slug":"配置文件","link":"#配置文件","children":[]},{"level":2,"title":"客户端配置文件","slug":"客户端配置文件","link":"#客户端配置文件","children":[]}],"git":{"updatedTime":1706286583000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":4}]},"autoDesc":true,"filePathRelative":"zh/guide/configuration.md"}');export{C as comp,g as data}; diff --git a/assets/deployment.html-5h8r2bCx.js b/assets/deployment.html-5h8r2bCx.js new file mode 100644 index 000000000..737f78b93 --- /dev/null +++ b/assets/deployment.html-5h8r2bCx.js @@ -0,0 +1,95 @@ +import{_ as r,c as t,a,b as n,d as e,e as i,f as p,r as o,o as d}from"./app-9HBJsLu_.js";const c={};function u(v,s){const l=o("RouteLink");return d(),t("div",null,[s[10]||(s[10]=a(`

    部署

    下述的指南基于以下条件:

    • Markdown 源文件放置在你项目的 docs 目录;
    • 使用的是默认的构建输出目录 (.vuepress/dist) ;
    • 使用 pnpm 作为包管理器,当然也支持使用 npm 或 yarn 。
    • VuePress 作为项目依赖安装,并在 package.json 中配置了如下脚本:
    {
    +  "scripts": {
    +    "docs:build": "vuepress build docs"
    +  }
    +}

    GitHub Pages

    `,5)),n("ol",null,[n("li",null,[n("p",null,[s[1]||(s[1]=e("设置正确的 ")),i(l,{to:"/zh/reference/config.html#base"},{default:p(()=>s[0]||(s[0]=[e("base")])),_:1}),s[2]||(s[2]=e(" 选项。"))]),s[3]||(s[3]=a("

    如果你准备发布到 https://<USERNAME>.github.io/ ,你可以省略这一步,因为 base 默认就是 "/"

    如果你准备发布到 https://<USERNAME>.github.io/<REPO>/ ,也就是说你的仓库地址是 https://github.com/<USERNAME>/<REPO> ,则将 base 设置为 "/<REPO>/"

    ",2))]),s[4]||(s[4]=n("li",null,[n("p",null,[e("选择你想要使用的 CI 工具。这里我们以 "),n("a",{href:"https://github.com/features/actions",target:"_blank",rel:"noopener noreferrer"},"GitHub Actions"),e(" 为例。")]),n("p",null,[e("创建 "),n("code",null,".github/workflows/docs.yml"),e(" 文件来配置工作流。")])],-1))]),s[11]||(s[11]=a(`
    点击展开配置样例
    name: docs
    +
    +on:
    +  # 每当 push 到 main 分支时触发部署
    +  push:
    +    branches: [main]
    +  # 手动触发部署
    +  workflow_dispatch:
    +
    +jobs:
    +  docs:
    +    runs-on: ubuntu-latest
    +
    +    steps:
    +      - uses: actions/checkout@v4
    +        with:
    +          # “最近更新时间” 等 git 日志相关信息,需要拉取全部提交记录
    +          fetch-depth: 0
    +
    +      - name: Setup pnpm
    +        uses: pnpm/action-setup@v2
    +        with:
    +          # 选择要使用的 pnpm 版本
    +          version: 8
    +          # 使用 pnpm 安装依赖
    +          run_install: true
    +
    +      - name: Setup Node.js
    +        uses: actions/setup-node@v4
    +        with:
    +          # 选择要使用的 node 版本
    +          node-version: 20
    +          # 缓存 pnpm 依赖
    +          cache: pnpm
    +
    +      # 运行构建脚本
    +      - name: Build VuePress site
    +        run: pnpm docs:build
    +
    +      # 查看 workflow 的文档来获取更多信息
    +      # @see https://github.com/crazy-max/ghaction-github-pages
    +      - name: Deploy to GitHub Pages
    +        uses: crazy-max/ghaction-github-pages@v4
    +        with:
    +          # 部署到 gh-pages 分支
    +          target_branch: gh-pages
    +          # 部署目录为 VuePress 的默认输出目录
    +          build_dir: docs/.vuepress/dist
    +        env:
    +          # @see https://docs.github.com/cn/actions/reference/authentication-in-a-workflow#about-the-github_token-secret
    +          GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}

    提示

    请参考 GitHub Pages 官方指南 来获取更多信息。

    GitLab Pages

    `,3)),n("ol",null,[n("li",null,[n("p",null,[s[6]||(s[6]=e("设置正确的 ")),i(l,{to:"/zh/reference/config.html#base"},{default:p(()=>s[5]||(s[5]=[e("base")])),_:1}),s[7]||(s[7]=e(" 选项。"))]),s[8]||(s[8]=a("

    如果你准备发布到 https://<USERNAME>.gitlab.io/ ,你可以省略这一步,因此 base 默认就是 "/"

    如果你准备发布到 https://<USERNAME>.gitlab.io/<REPO>/ ,也就是说你的仓库地址是 https://gitlab.com/<USERNAME>/<REPO> ,则将 base 设置为 "/<REPO>/"

    ",2))]),s[9]||(s[9]=n("li",null,[n("p",null,[e("创建 "),n("code",null,".gitlab-ci.yml"),e(" 文件来配置 "),n("a",{href:"https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/",target:"_blank",rel:"noopener noreferrer"},"GitLab CI"),e(" 工作流。")])],-1))]),s[12]||(s[12]=a(`
    点击展开配置样例
    # 选择你要使用的 docker 镜像
    +image: node:18-buster
    +
    +pages:
    +  # 每当 push 到 main 分支时触发部署
    +  only:
    +    - main
    +
    +  # 缓存 node_modules
    +  cache:
    +    key:
    +      files:
    +        - pnpm-lock.yaml
    +    paths:
    +      - .pnpm-store
    +
    +  # 安装 pnpm
    +  before_script:
    +    - curl -fsSL https://get.pnpm.io/install.sh | sh -
    +    - pnpm config set store-dir .pnpm-store
    +
    +  # 安装依赖并运行构建脚本
    +  script:
    +    - pnpm install --frozen-lockfile
    +    - pnpm docs:build --dest public
    +
    +  artifacts:
    +    paths:
    +      - public

    提示

    请参考 GitLab Pages 官方指南 来获取更多信息。

    Google Firebase

    1. 请确保你已经安装了 firebase-tools

    2. 在你项目的根目录下创建 firebase.json.firebaserc,并包含以下内容:

    firebase.json:

    {
    +  "hosting": {
    +    "public": "./docs/.vuepress/dist",
    +    "ignore": []
    +  }
    +}

    .firebaserc:

    {
    +  "projects": {
    +    "default": "<YOUR_FIREBASE_ID>"
    +  }
    +}
    1. 在执行了 pnpm docs:build 后, 使用 firebase deploy 指令来部署。

    提示

    请参考 Firebase CLI 官方指南 来获取更多信息。

    Heroku

    1. 首先安装 Heroku CLI

    2. 在这里 注册一个 Heroku 账号;

    3. 运行 heroku login 并填写你的 Heroku 认证信息:

    heroku login
    1. 在你的项目根目录中,创建一个名为 static.json 的文件,并包含下述内容:

    static.json:

    {
    +  "root": "./docs/.vuepress/dist"
    +}

    这里是你项目的配置,请参考 heroku-buildpack-static 来获取更多信息。

    Kinsta

    请查看 Set Up VuePress on Kinsta

    Edgio

    请查看 Edgio Documentation > Framework Guides > VuePress

    Netlify

    1. 前往 Netlify ,从 GitHub 创建一个新项目,并进行如下配置:

      • Build Command: pnpm docs:build
      • Publish directory: docs/.vuepress/dist
    2. 设置 Environment variables 来选择 Node 版本:

      • NODE_VERSION: 20
    3. 点击 deploy 按钮。

    Vercel

    1. 前往 Vercel ,从 GitHub 创建一个新项目,并进行如下配置:

      • FRAMEWORK PRESET: Other
      • BUILD COMMAND: pnpm docs:build
      • OUTPUT DIRECTORY: docs/.vuepress/dist
    2. 点击 deploy 按钮。

    云开发 CloudBase

    云开发 CloudBase 是一个云原生一体化的 Serverless 云平台,支持静态网站、容器等多种托管能力,并提供简便的部署工具 CloudBase Framework 来一键部署应用。

    1. 全局安装 CloudBase CLI :
    pnpm install -g @cloudbase/cli
    1. 在项目根目录运行以下命令一键部署 VuePress 应用,在部署之前可以先 开通环境
    cloudbase init --without-template
    +cloudbase framework:deploy

    CloudBase CLI 首先会跳转到控制台进行登录授权,然后将会交互式进行确认。

    确认信息后会立即进行部署,部署完成后,可以获得一个自动 SSL,CDN 加速的网站应用,你也可以搭配使用 GitHub Action 来持续部署 GitHub 上的 VuePress 应用。

    也可以使用 cloudbase init --template vuepress 快速创建和部署一个新的 VuePress 应用。

    提示

    更多详细信息请查看 CloudBase Framework 的部署项目示例

    21 云盒子

    请查看 21 云盒子 - 部署一个 VuePress 静态网页

    `,37))])}const m=r(c,[["render",u],["__file","deployment.html.vue"]]),h=JSON.parse('{"path":"/zh/guide/deployment.html","title":"部署","lang":"zh-CN","frontmatter":{"description":"部署 下述的指南基于以下条件: Markdown 源文件放置在你项目的 docs 目录; 使用的是默认的构建输出目录 (.vuepress/dist) ; 使用 pnpm 作为包管理器,当然也支持使用 npm 或 yarn 。 VuePress 作为项目依赖安装,并在 package.json 中配置了如下脚本: GitHub Pages 设置正确的 ...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/guide/deployment.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/guide/deployment.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"部署"}],["meta",{"property":"og:description","content":"部署 下述的指南基于以下条件: Markdown 源文件放置在你项目的 docs 目录; 使用的是默认的构建输出目录 (.vuepress/dist) ; 使用 pnpm 作为包管理器,当然也支持使用 npm 或 yarn 。 VuePress 作为项目依赖安装,并在 package.json 中配置了如下脚本: GitHub Pages 设置正确的 ..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-10-03T04:37:36.000Z"}],["meta",{"property":"article:modified_time","content":"2024-10-03T04:37:36.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"部署\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-10-03T04:37:36.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"GitHub Pages","slug":"github-pages","link":"#github-pages","children":[]},{"level":2,"title":"GitLab Pages","slug":"gitlab-pages","link":"#gitlab-pages","children":[]},{"level":2,"title":"Google Firebase","slug":"google-firebase","link":"#google-firebase","children":[]},{"level":2,"title":"Heroku","slug":"heroku","link":"#heroku","children":[]},{"level":2,"title":"Kinsta","slug":"kinsta","link":"#kinsta","children":[]},{"level":2,"title":"Edgio","slug":"edgio","link":"#edgio","children":[]},{"level":2,"title":"Netlify","slug":"netlify","link":"#netlify","children":[]},{"level":2,"title":"Vercel","slug":"vercel","link":"#vercel","children":[]},{"level":2,"title":"云开发 CloudBase","slug":"云开发-cloudbase","link":"#云开发-cloudbase","children":[]},{"level":2,"title":"21 云盒子","slug":"_21-云盒子","link":"#_21-云盒子","children":[]}],"git":{"updatedTime":1727930256000,"contributors":[{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":3},{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/guide/deployment.md"}');export{m as comp,h as data}; diff --git a/assets/deployment.html-BEoPXJ1X.js b/assets/deployment.html-BEoPXJ1X.js new file mode 100644 index 000000000..5c555e9a5 --- /dev/null +++ b/assets/deployment.html-BEoPXJ1X.js @@ -0,0 +1,94 @@ +import{_ as o,c as t,a,b as e,d as n,e as i,f as p,r,o as d}from"./app-9HBJsLu_.js";const c={};function u(m,s){const l=r("RouteLink");return d(),t("div",null,[s[10]||(s[10]=a(`

    Deployment

    The following guides are based on some shared assumptions:

    • You are placing your Markdown source files inside the docs directory of your project;
    • You are using the default build output location (.vuepress/dist);
    • You are using pnpm as package manager, while npm and yarn are also supported;
    • VuePress is installed as a local dependency in your project, and you have setup the following script in package.json:
    {
    +  "scripts": {
    +    "docs:build": "vuepress build docs"
    +  }
    +}

    GitHub Pages

    `,5)),e("ol",null,[e("li",null,[e("p",null,[s[1]||(s[1]=n("Set the correct ")),i(l,{to:"/reference/config.html#base"},{default:p(()=>s[0]||(s[0]=[n("base")])),_:1}),s[2]||(s[2]=n(" config."))]),s[3]||(s[3]=a("

    If you are deploying to https://<USERNAME>.github.io/, you can omit this step as base defaults to "/".

    If you are deploying to https://<USERNAME>.github.io/<REPO>/, for example your repository is at https://github.com/<USERNAME>/<REPO>, then set base to "/<REPO>/".

    ",2))]),s[4]||(s[4]=e("li",null,[e("p",null,[n("Choose your preferred CI tools. Here we take "),e("a",{href:"https://github.com/features/actions",target:"_blank",rel:"noopener noreferrer"},"GitHub Actions"),n(" as an example.")]),e("p",null,[n("Create "),e("code",null,".github/workflows/docs.yml"),n(" to set up the workflow.")])],-1))]),s[11]||(s[11]=a(`
    Click to expand sample config
    name: docs
    +
    +on:
    +  # trigger deployment on every push to main branch
    +  push:
    +    branches: [main]
    +  # trigger deployment manually
    +  workflow_dispatch:
    +
    +jobs:
    +  docs:
    +    runs-on: ubuntu-latest
    +
    +    steps:
    +      - uses: actions/checkout@v4
    +        with:
    +          # fetch all commits to get last updated time or other git log info
    +          fetch-depth: 0
    +
    +      - name: Setup pnpm
    +        uses: pnpm/action-setup@v2
    +        with:
    +          # choose pnpm version to use
    +          version: 8
    +          # install deps with pnpm
    +          run_install: true
    +
    +      - name: Setup Node.js
    +        uses: actions/setup-node@v4
    +        with:
    +          # choose node.js version to use
    +          node-version: 20
    +          # cache deps for pnpm
    +          cache: pnpm
    +
    +      # run build script
    +      - name: Build VuePress site
    +        run: pnpm docs:build
    +
    +      # please check out the docs of the workflow for more details
    +      # @see https://github.com/crazy-max/ghaction-github-pages
    +      - name: Deploy to GitHub Pages
    +        uses: crazy-max/ghaction-github-pages@v4
    +        with:
    +          # deploy to gh-pages branch
    +          target_branch: gh-pages
    +          # deploy the default output dir of VuePress
    +          build_dir: docs/.vuepress/dist
    +        env:
    +          # @see https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret
    +          GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}

    Tips

    Please refer to GitHub Pages official guide for more details.

    GitLab Pages

    `,3)),e("ol",null,[e("li",null,[e("p",null,[s[6]||(s[6]=n("Set the correct ")),i(l,{to:"/reference/config.html#base"},{default:p(()=>s[5]||(s[5]=[n("base")])),_:1}),s[7]||(s[7]=n(" config."))]),s[8]||(s[8]=a("

    If you are deploying to https://<USERNAME>.gitlab.io/, you can omit base as it defaults to "/".

    If you are deploying to https://<USERNAME>.gitlab.io/<REPO>/, for example your repository is at https://gitlab.com/<USERNAME>/<REPO>, then set base to "/<REPO>/".

    ",2))]),s[9]||(s[9]=e("li",null,[e("p",null,[n("Create "),e("code",null,".gitlab-ci.yml"),n(" to set up "),e("a",{href:"https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/",target:"_blank",rel:"noopener noreferrer"},"GitLab CI"),n(" workflow.")])],-1))]),s[12]||(s[12]=a(`
    Click to expand sample config
    # choose a docker image to use
    +image: node:18-buster
    +
    +pages:
    +  # trigger deployment on every push to main branch
    +  only:
    +    - main
    +
    +  # cache node_modules
    +  cache:
    +    key:
    +      files:
    +        - pnpm-lock.yaml
    +    paths:
    +      - .pnpm-store
    +
    +  # Install pnpm
    +  before_script:
    +    - curl -fsSL https://get.pnpm.io/install.sh | sh -
    +    - pnpm config set store-dir .pnpm-store
    +
    +  # install dependencies and run build script
    +  script:
    +    - pnpm i --frozen-lockfile
    +    - pnpm docs:build --dest public
    +
    +  artifacts:
    +    paths:
    +      - public

    Tips

    Please refer to GitLab Pages official guide for more details.

    Google Firebase

    1. Make sure you have firebase-tools installed.

    2. Create firebase.json and .firebaserc at the root of your project with the following content:

    firebase.json:

    {
    +  "hosting": {
    +    "public": "./docs/.vuepress/dist",
    +    "ignore": []
    +  }
    +}

    .firebaserc:

    {
    +  "projects": {
    +    "default": "<YOUR_FIREBASE_ID>"
    +  }
    +}
    1. After running pnpm docs:build, deploy using the command firebase deploy.

    Tips

    Please refer to Firebase CLI official guide for more details.

    Heroku

    1. Install Heroku CLI.

    2. Create a Heroku account by signing up.

    3. Run heroku login and fill in your Heroku credentials:

    heroku login
    1. Create a file called static.json in the root of your project with the below content:

    static.json:

    {
    +  "root": "./docs/.vuepress/dist"
    +}

    This is the configuration of your site; read more at heroku-buildpack-static.

    Kinsta

    See Set Up VuePress on Kinsta.

    Edgio

    See Edgio Documentation > Framework Guides > VuePress.

    Netlify

    1. On Netlify, set up a new project from GitHub with the following settings:

      • Build Command: pnpm docs:build
      • Publish directory: docs/.vuepress/dist
    2. Set Environment variables to choose node version:

      • NODE_VERSION: 20
    3. Hit the deploy button.

    Vercel

    1. Go to Vercel, set up a new project from GitHub with the following settings:

      • FRAMEWORK PRESET: Other
      • BUILD COMMAND: pnpm docs:build
      • OUTPUT DIRECTORY: docs/.vuepress/dist
    2. Hit the deploy button.

    `,25))])}const b=o(c,[["render",u],["__file","deployment.html.vue"]]),h=JSON.parse('{"path":"/guide/deployment.html","title":"Deployment","lang":"en-US","frontmatter":{"description":"Deployment The following guides are based on some shared assumptions: You are placing your Markdown source files inside the docs directory of your project; You are using the def...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/guide/deployment.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/guide/deployment.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Deployment"}],["meta",{"property":"og:description","content":"Deployment The following guides are based on some shared assumptions: You are placing your Markdown source files inside the docs directory of your project; You are using the def..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-10-03T04:37:36.000Z"}],["meta",{"property":"article:modified_time","content":"2024-10-03T04:37:36.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Deployment\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-10-03T04:37:36.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"GitHub Pages","slug":"github-pages","link":"#github-pages","children":[]},{"level":2,"title":"GitLab Pages","slug":"gitlab-pages","link":"#gitlab-pages","children":[]},{"level":2,"title":"Google Firebase","slug":"google-firebase","link":"#google-firebase","children":[]},{"level":2,"title":"Heroku","slug":"heroku","link":"#heroku","children":[]},{"level":2,"title":"Kinsta","slug":"kinsta","link":"#kinsta","children":[]},{"level":2,"title":"Edgio","slug":"edgio","link":"#edgio","children":[]},{"level":2,"title":"Netlify","slug":"netlify","link":"#netlify","children":[]},{"level":2,"title":"Vercel","slug":"vercel","link":"#vercel","children":[]}],"git":{"updatedTime":1727930256000,"contributors":[{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":3},{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":1}]},"autoDesc":true,"filePathRelative":"guide/deployment.md"}');export{b as comp,h as data}; diff --git a/assets/frontmatter.html-Diet5G1N.js b/assets/frontmatter.html-Diet5G1N.js new file mode 100644 index 000000000..d89d2ce39 --- /dev/null +++ b/assets/frontmatter.html-Diet5G1N.js @@ -0,0 +1,24 @@ +import{_ as r,c as i,b as l,d as n,e as s,f as a,a as o,r as p,o as d}from"./app-9HBJsLu_.js";const u={};function m(c,e){const t=p("RouteLink");return d(),i("div",null,[e[34]||(e[34]=l("h1",{id:"frontmatter",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#frontmatter"},[l("span",null,"Frontmatter")])],-1)),e[35]||(e[35]=l("h2",{id:"date",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#date"},[l("span",null,"date")])],-1)),l("ul",null,[e[2]||(e[2]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"string")])],-1)),e[3]||(e[3]=l("li",null,[l("p",null,"详情:"),l("p",null,"页面的创建日期。"),l("p",null,[n("应按照 "),l("code",null,"yyyy-MM-dd"),n(" 的格式来指定日期,或者遵循 "),l("a",{href:"https://yaml.org/type/timestamp.html",target:"_blank",rel:"noopener noreferrer"},"YAML Timestamp Type"),n(" 。")])],-1)),l("li",null,[e[1]||(e[1]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[s(t,{to:"/zh/reference/node-api.html#date"},{default:a(()=>e[0]||(e[0]=[n("Node API > Page 属性 > date")])),_:1})])])])]),e[36]||(e[36]=l("h2",{id:"description",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#description"},[l("span",null,"description")])],-1)),l("ul",null,[e[6]||(e[6]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"string")])],-1)),e[7]||(e[7]=l("li",null,[l("p",null,"详情:"),l("p",null,"页面的描述。"),l("p",null,[n("它将会覆盖站点配置中的 "),l("code",null,"description"),n(" 配置项。")])],-1)),l("li",null,[e[5]||(e[5]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[s(t,{to:"/zh/reference/config.html#description"},{default:a(()=>e[4]||(e[4]=[n("配置 > description")])),_:1})])])])]),e[37]||(e[37]=o(`
    • 类型: HeadConfig[]

    • 详情:

      页面 <head> 标签内添加的额外标签。

    • 示例:

    ---
    +head:
    +  - - meta
    +    - name: foo
    +      content: yaml 数组语法
    +  - [meta, { name: bar, content: 方括号语法 }]
    +---

    渲染为:

    <head>
    +  <meta name="foo" content="yaml 数组语法" />
    +  <meta name="bar" content="方括号语法" />
    +</head>
    `,5)),l("ul",null,[l("li",null,[e[9]||(e[9]=n("参考: ")),l("ul",null,[l("li",null,[s(t,{to:"/zh/reference/config.html#head"},{default:a(()=>e[8]||(e[8]=[n("配置 > head")])),_:1})])])])]),e[38]||(e[38]=l("h2",{id:"lang",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#lang"},[l("span",null,"lang")])],-1)),l("ul",null,[e[13]||(e[13]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"string")])],-1)),e[14]||(e[14]=l("li",null,[l("p",null,"详情:"),l("p",null,"页面的语言。"),l("p",null,[n("它将会覆盖站点配置中的 "),l("code",null,"lang"),n(" 配置项")])],-1)),l("li",null,[e[12]||(e[12]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[s(t,{to:"/zh/reference/config.html#lang"},{default:a(()=>e[10]||(e[10]=[n("配置 > lang")])),_:1})]),l("li",null,[s(t,{to:"/zh/reference/node-api.html#lang"},{default:a(()=>e[11]||(e[11]=[n("Node API > Page 属性 > lang")])),_:1})])])])]),e[39]||(e[39]=o(`

    layout

    • 类型: string

    • 详情:

      页面的布局。

      布局是由主题提供的。如果你不指定该 Frontmatter ,则会使用默认布局。你应该参考主题自身的文档来了解其提供了哪些布局。

      如果主题布局无法满足你的需求,你可以使用自定义布局组件。

    • 示例:

    .vuepress/client.ts 文件中注册一个布局组件:

    import { defineClientConfig } from 'vuepress/client'
    +import CustomLayout from './CustomLayout.vue'
    +
    +export default defineClientConfig({
    +  layouts: {
    +    CustomLayout,
    +  },
    +})

    在 Frontmatter 中设置自定义布局:

    ---
    +layout: CustomLayout
    +---
    `,7)),l("ul",null,[e[19]||(e[19]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"string | null")])],-1)),e[20]||(e[20]=l("li",null,[l("p",null,"详情:"),l("p",null,"页面的永久链接。"),l("p",null,"它将会覆盖根据文件路径来决定的默认路由路径。"),l("p",null,[n("当被设置为 "),l("code",null,"null"),n(" 时,将会禁用页面的永久链接。")])],-1)),l("li",null,[e[18]||(e[18]=l("p",null,"参考:",-1)),l("ul",null,[e[17]||(e[17]=l("li",null,[l("a",{href:"#permalinkpattern"},"Frontmatter > permalinkPattern")],-1)),l("li",null,[s(t,{to:"/zh/guide/page.html#%E8%B7%AF%E7%94%B1"},{default:a(()=>e[15]||(e[15]=[n("指南 > 页面 > 路由")])),_:1})]),l("li",null,[s(t,{to:"/zh/reference/node-api.html#permalink"},{default:a(()=>e[16]||(e[16]=[n("Node API > Page 属性 > permalink")])),_:1})])])])]),e[40]||(e[40]=o(`

    permalinkPattern

    • 类型: string | null

    • 详情:

      为页面生成永久链接的 Pattern 。

      它将会覆盖站点配置中的 permalinkPattern 配置项。

      如果 Frontmatter 中设置了 permalink ,那么这个字段则不会生效。

    • 使用:

      Pattern描述
      :year创建日期的 年 部分
      :month创建日期的 月 部分
      :day创建日期的 日 部分
      :slug页面文件名的 Slug
      :raw原始路由路径

      :year, :month:day Pattern 根据如下优先级进行解析:

      • Frontmatter 中的 date 字段。
      • 符合 yyyy-MM-dd-foobar.mdyyyy-MM-foobar.md 日期格式的文件名。
      • 符合 yyyy/MM/dd/foobar.mdyyyy/MM/foobar.md 日期格式的目录名。
      • 默认值 0000-00-00
    • 示例 1 :

      页面文件名是 foo-bar.md

      页面 Frontmatter 是:

    ---
    +date: 2021-01-03
    +permalinkPattern: :year/:month/:day/:slug.html
    +---

    那么页面的永久链接将会是 2021/01/03/foo-bar.html

    • 示例 2 :

      页面文件名是 2021-01-03-bar-baz.md

      页面 Frontmatter 是:

    ---
    +permalinkPattern: :year/:month/:day/:slug.html
    +---

    那么页面的永久链接将会是 2021/01/03/bar-baz.html

    `,7)),l("ul",null,[l("li",null,[e[25]||(e[25]=n("参考: ")),l("ul",null,[l("li",null,[s(t,{to:"/zh/reference/config.html#permalinkpattern"},{default:a(()=>e[21]||(e[21]=[n("配置 > permalinkPattern")])),_:1})]),e[23]||(e[23]=l("li",null,[l("a",{href:"#date"},"Frontmatter > date")],-1)),e[24]||(e[24]=l("li",null,[l("a",{href:"#permalink"},"Frontmatter > permalink")],-1)),l("li",null,[s(t,{to:"/zh/reference/node-api.html#permalink"},{default:a(()=>e[22]||(e[22]=[n("Node API > Page 属性 > permalink")])),_:1})])])])]),e[41]||(e[41]=l("h2",{id:"routemeta",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#routemeta"},[l("span",null,"routeMeta")])],-1)),l("ul",null,[e[28]||(e[28]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"Record")])],-1)),e[29]||(e[29]=l("li",null,[l("p",null,"详情:"),l("p",null,"附加到页面路由的自定义数据。")],-1)),l("li",null,[e[27]||(e[27]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[s(t,{to:"/zh/reference/node-api.html#routeMeta"},{default:a(()=>e[26]||(e[26]=[n("Node API > Page 属性 > routeMeta")])),_:1})])])])]),e[42]||(e[42]=l("h2",{id:"title",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#title"},[l("span",null,"title")])],-1)),l("ul",null,[e[32]||(e[32]=l("li",null,[l("p",null,[n("类型: "),l("code",null,"string")])],-1)),e[33]||(e[33]=l("li",null,[l("p",null,"详情:"),l("p",null,"页面的标题。"),l("p",null,[n("如果你不在 Frontmatter 中设置 "),l("code",null,"title"),n(" ,那么页面中第一个一级标题(即 "),l("code",null,"# title"),n(")的内容会被当作标题使用。")])],-1)),l("li",null,[e[31]||(e[31]=l("p",null,"参考:",-1)),l("ul",null,[l("li",null,[s(t,{to:"/zh/reference/node-api.html#title"},{default:a(()=>e[30]||(e[30]=[n("Node API > Page 属性 > title")])),_:1})])])])])])}const D=r(u,[["render",m],["__file","frontmatter.html.vue"]]),v=JSON.parse('{"path":"/zh/reference/frontmatter.html","title":"Frontmatter","lang":"zh-CN","frontmatter":{"description":"Frontmatter date 类型: string 详情: 页面的创建日期。 应按照 yyyy-MM-dd 的格式来指定日期,或者遵循 YAML Timestamp Type 。 参考: description 类型: string 详情: 页面的描述。 它将会覆盖站点配置中的 description 配置项。 参考: head 类型: HeadC...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/reference/frontmatter.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/reference/frontmatter.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Frontmatter"}],["meta",{"property":"og:description","content":"Frontmatter date 类型: string 详情: 页面的创建日期。 应按照 yyyy-MM-dd 的格式来指定日期,或者遵循 YAML Timestamp Type 。 参考: description 类型: string 详情: 页面的描述。 它将会覆盖站点配置中的 description 配置项。 参考: head 类型: HeadC..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-05-16T12:45:44.000Z"}],["meta",{"property":"article:modified_time","content":"2024-05-16T12:45:44.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Frontmatter\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-05-16T12:45:44.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"date","slug":"date","link":"#date","children":[]},{"level":2,"title":"description","slug":"description","link":"#description","children":[]},{"level":2,"title":"head","slug":"head","link":"#head","children":[]},{"level":2,"title":"lang","slug":"lang","link":"#lang","children":[]},{"level":2,"title":"layout","slug":"layout","link":"#layout","children":[]},{"level":2,"title":"permalink","slug":"permalink","link":"#permalink","children":[]},{"level":2,"title":"permalinkPattern","slug":"permalinkpattern","link":"#permalinkpattern","children":[]},{"level":2,"title":"routeMeta","slug":"routemeta","link":"#routemeta","children":[]},{"level":2,"title":"title","slug":"title","link":"#title","children":[]}],"git":{"updatedTime":1715863544000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1},{"name":"张怀文","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/reference/frontmatter.md"}');export{D as comp,v as data}; diff --git a/assets/frontmatter.html-DjGtDI42.js b/assets/frontmatter.html-DjGtDI42.js new file mode 100644 index 000000000..b6cd4f822 --- /dev/null +++ b/assets/frontmatter.html-DjGtDI42.js @@ -0,0 +1,24 @@ +import{_ as i,c as r,b as e,d as n,e as a,f as s,a as o,r as p,o as d}from"./app-9HBJsLu_.js";const u={};function m(c,l){const t=p("RouteLink");return d(),r("div",null,[l[34]||(l[34]=e("h1",{id:"frontmatter",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#frontmatter"},[e("span",null,"Frontmatter")])],-1)),l[35]||(l[35]=e("h2",{id:"date",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#date"},[e("span",null,"date")])],-1)),e("ul",null,[l[2]||(l[2]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"string")])],-1)),l[3]||(l[3]=e("li",null,[e("p",null,"Details:"),e("p",null,"Created date for the page."),e("p",null,[n("You should specify the date in the form of "),e("code",null,"yyyy-MM-dd"),n(", or follow the "),e("a",{href:"https://yaml.org/type/timestamp.html",target:"_blank",rel:"noopener noreferrer"},"YAML Timestamp Type"),n(".")])],-1)),e("li",null,[l[1]||(l[1]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[a(t,{to:"/reference/node-api.html#date"},{default:s(()=>l[0]||(l[0]=[n("Node API > Page Properties > date")])),_:1})])])])]),l[36]||(l[36]=e("h2",{id:"description",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#description"},[e("span",null,"description")])],-1)),e("ul",null,[l[6]||(l[6]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"string")])],-1)),l[7]||(l[7]=e("li",null,[e("p",null,"Details:"),e("p",null,"Description for the page."),e("p",null,[n("This will override the "),e("code",null,"description"),n(" option in your site config.")])],-1)),e("li",null,[l[5]||(l[5]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[a(t,{to:"/reference/config.html#description"},{default:s(()=>l[4]||(l[4]=[n("Config > description")])),_:1})])])])]),l[37]||(l[37]=o(`
    • Type: HeadConfig[]

    • Details:

      Extra tags in <head> tag for the page.

    • Example:

    ---
    +head:
    +  - - meta
    +    - name: foo
    +      content: yaml array syntax
    +  - [meta, { name: bar, content: square brackets syntax }]
    +---

    Rendered as:

    <head>
    +  <meta name="foo" content="yaml array syntax" />
    +  <meta name="bar" content="square brackets syntax" />
    +</head>
    `,5)),e("ul",null,[e("li",null,[l[9]||(l[9]=n("Also see: ")),e("ul",null,[e("li",null,[a(t,{to:"/reference/config.html#head"},{default:s(()=>l[8]||(l[8]=[n("Config > head")])),_:1})])])])]),l[38]||(l[38]=e("h2",{id:"lang",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#lang"},[e("span",null,"lang")])],-1)),e("ul",null,[l[13]||(l[13]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"string")])],-1)),l[14]||(l[14]=e("li",null,[e("p",null,"Details:"),e("p",null,"Language for the page."),e("p",null,[n("This will override the "),e("code",null,"lang"),n(" option in your site config.")])],-1)),e("li",null,[l[12]||(l[12]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[a(t,{to:"/reference/config.html#lang"},{default:s(()=>l[10]||(l[10]=[n("Config > lang")])),_:1})]),e("li",null,[a(t,{to:"/reference/node-api.html#lang"},{default:s(()=>l[11]||(l[11]=[n("Node API > Page Properties > lang")])),_:1})])])])]),l[39]||(l[39]=o(`

    layout

    • Type: string

    • Details:

      Layout for the page.

      Layouts are provided by theme. If you don't specify this frontmatter, the default layout will be used. You should refer to the theme's own documentation to find what layouts it provides.

      If the theme layouts cannot meet your needs, you can use a custom layout component.

    • Example:

    Register a layout component in .vuepress/client.ts file:

    import { defineClientConfig } from 'vuepress/client'
    +import CustomLayout from './CustomLayout.vue'
    +
    +export default defineClientConfig({
    +  layouts: {
    +    CustomLayout,
    +  },
    +})

    Set custom layout in frontmatter:

    ---
    +layout: CustomLayout
    +---
    `,7)),e("ul",null,[l[19]||(l[19]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"string | null")])],-1)),l[20]||(l[20]=e("li",null,[e("p",null,"Details:"),e("p",null,"Permalink for the page."),e("p",null,"This will override the default route path that determined by the file path of the page."),e("p",null,[n("When it is set to "),e("code",null,"null"),n(", the permalink of the page will be disabled.")])],-1)),e("li",null,[l[18]||(l[18]=e("p",null,"Also see:",-1)),e("ul",null,[l[17]||(l[17]=e("li",null,[e("a",{href:"#permalinkpattern"},"Frontmatter > permalinkPattern")],-1)),e("li",null,[a(t,{to:"/guide/page.html#routing"},{default:s(()=>l[15]||(l[15]=[n("Guide > Page > Routing")])),_:1})]),e("li",null,[a(t,{to:"/reference/node-api.html#permalink"},{default:s(()=>l[16]||(l[16]=[n("Node API > Page Properties > permalink")])),_:1})])])])]),l[40]||(l[40]=o(`

    permalinkPattern

    • Type: string | null

    • Details:

      Pattern to generate permalink for the page.

      This will override the permalinkPattern option in your site config.

      This won't take effect if the permalink frontmatter has been set.

    • Usage:

      PatternDescription
      :yearYear part of created date
      :monthMonth part of created date
      :dayDay part of created date
      :slugSlug of page filename
      :rawRaw route path

      The :year, :month and :day patterns are resolved according to the following priority:

      • The date frontmatter.
      • The filename that matches the date pattern yyyy-MM-dd-foobar.md or yyyy-MM-foobar.md.
      • The dirname that matches the date pattern yyyy/MM/dd/foobar.md or yyyy/MM/foobar.md.
      • Fallback to 0000-00-00.
    • Example 1:

      The page filename is foo-bar.md.

      The page frontmatter is:

    ---
    +date: 2021-01-03
    +permalinkPattern: :year/:month/:day/:slug.html
    +---

    Then the permalink of the page would be 2021/01/03/foo-bar.html.

    • Example 2:

      The page filename is 2021-01-03-bar-baz.md.

      The page frontmatter is:

    ---
    +permalinkPattern: :year/:month/:day/:slug.html
    +---

    Then the permalink of the page would be 2021/01/03/bar-baz.html.

    `,7)),e("ul",null,[e("li",null,[l[25]||(l[25]=n("Also see: ")),e("ul",null,[e("li",null,[a(t,{to:"/reference/config.html#permalinkpattern"},{default:s(()=>l[21]||(l[21]=[n("Config > permalinkPattern")])),_:1})]),l[23]||(l[23]=e("li",null,[e("a",{href:"#date"},"Frontmatter > date")],-1)),l[24]||(l[24]=e("li",null,[e("a",{href:"#permalink"},"Frontmatter > permalink")],-1)),e("li",null,[a(t,{to:"/reference/node-api.html#permalink"},{default:s(()=>l[22]||(l[22]=[n("Node API > Page Properties > permalink")])),_:1})])])])]),l[41]||(l[41]=e("h2",{id:"routemeta",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#routemeta"},[e("span",null,"routeMeta")])],-1)),e("ul",null,[l[28]||(l[28]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"Record")])],-1)),l[29]||(l[29]=e("li",null,[e("p",null,"Details:"),e("p",null,"Custom data to be attached to the page route.")],-1)),e("li",null,[l[27]||(l[27]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[a(t,{to:"/reference/node-api.html#routeMeta"},{default:s(()=>l[26]||(l[26]=[n("Node API > Page Properties > routeMeta")])),_:1})])])])]),l[42]||(l[42]=e("h2",{id:"title",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#title"},[e("span",null,"title")])],-1)),e("ul",null,[l[32]||(l[32]=e("li",null,[e("p",null,[n("Type: "),e("code",null,"string")])],-1)),l[33]||(l[33]=e("li",null,[e("p",null,"Details:"),e("p",null,"Title for the page."),e("p",null,[n("If you don't specify "),e("code",null,"title"),n(" in frontmatter, content of the first level-one header (i.e. "),e("code",null,"# title"),n(") will be used as the title.")])],-1)),e("li",null,[l[31]||(l[31]=e("p",null,"Also see:",-1)),e("ul",null,[e("li",null,[a(t,{to:"/reference/node-api.html#title"},{default:s(()=>l[30]||(l[30]=[n("Node API > Page Properties > title")])),_:1})])])])])])}const h=i(u,[["render",m],["__file","frontmatter.html.vue"]]),f=JSON.parse('{"path":"/reference/frontmatter.html","title":"Frontmatter","lang":"en-US","frontmatter":{"description":"Frontmatter date Type: string Details: Created date for the page. You should specify the date in the form of yyyy-MM-dd, or follow the YAML Timestamp Type. Also see: description...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/reference/frontmatter.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/reference/frontmatter.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Frontmatter"}],["meta",{"property":"og:description","content":"Frontmatter date Type: string Details: Created date for the page. You should specify the date in the form of yyyy-MM-dd, or follow the YAML Timestamp Type. Also see: description..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-05-16T12:45:44.000Z"}],["meta",{"property":"article:modified_time","content":"2024-05-16T12:45:44.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Frontmatter\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-05-16T12:45:44.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"date","slug":"date","link":"#date","children":[]},{"level":2,"title":"description","slug":"description","link":"#description","children":[]},{"level":2,"title":"head","slug":"head","link":"#head","children":[]},{"level":2,"title":"lang","slug":"lang","link":"#lang","children":[]},{"level":2,"title":"layout","slug":"layout","link":"#layout","children":[]},{"level":2,"title":"permalink","slug":"permalink","link":"#permalink","children":[]},{"level":2,"title":"permalinkPattern","slug":"permalinkpattern","link":"#permalinkpattern","children":[]},{"level":2,"title":"routeMeta","slug":"routemeta","link":"#routemeta","children":[]},{"level":2,"title":"title","slug":"title","link":"#title","children":[]}],"git":{"updatedTime":1715863544000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1},{"name":"张怀文","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"reference/frontmatter.md"}');export{h as comp,f as data}; diff --git a/assets/getting-started.html-CbWxeq6y.js b/assets/getting-started.html-CbWxeq6y.js new file mode 100644 index 000000000..b56b9bd2f --- /dev/null +++ b/assets/getting-started.html-CbWxeq6y.js @@ -0,0 +1,36 @@ +import{_ as c,c as u,a as o,e as r,f as a,b as e,d as l,r as d,o as v}from"./app-9HBJsLu_.js";const m={};function b(h,s){const t=d("CodeTabs"),p=d("RouteLink");return v(),u("div",null,[s[38]||(s[38]=o('

    快速上手

    注意

    VuePress v2 目前仍处于 RC (Release Candidate) 阶段。你已经可以用它来构建你的站点,但是它的配置和 API 还不够稳定,有可能会发生一些微小的 Breaking Changes 。因此,在每次更新 RC 版本之后,请一定要仔细阅读 更新日志

    在线试一试

    你可以通过 StackBlitz 在你的浏览器里直接使用 VuePress 。

    安装

    依赖环境

    提示

    • 使用 pnpm 时,你需要安装 vue 作为 peer-dependencies 。
    • 使用 yarn 2+ 时,你需要在 .yarnrc.yml 文件中设置 nodeLinker: 'node-modules'

    创建项目

    通过命令行创建

    你可以通过 create-vuepress 直接创建项目模板。

    ',11)),r(t,{id:"55",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:a(({value:n,isActive:i})=>s[0]||(s[0]=[l("pnpm")])),title1:a(({value:n,isActive:i})=>s[1]||(s[1]=[l("yarn")])),title2:a(({value:n,isActive:i})=>s[2]||(s[2]=[l("npm")])),tab0:a(({value:n,isActive:i})=>s[3]||(s[3]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," create"),e("span",{style:{color:"#CE9178"}}," vuepress"),e("span",{style:{color:"#CE9178"}}," vuepress-starter")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab1:a(({value:n,isActive:i})=>s[4]||(s[4]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," create"),e("span",{style:{color:"#CE9178"}}," vuepress"),e("span",{style:{color:"#CE9178"}}," vuepress-starter")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab2:a(({value:n,isActive:i})=>s[5]||(s[5]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," init"),e("span",{style:{color:"#CE9178"}}," vuepress"),e("span",{style:{color:"#CE9178"}}," vuepress-starter")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),_:1}),s[39]||(s[39]=o(`

    手动创建

    这一章节会帮助你从头搭建一个简单的 VuePress 文档网站。

    • 创建并进入一个新目录
    mkdir vuepress-starter
    +cd vuepress-starter
    • 初始化项目
    `,5)),r(t,{id:"87",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:a(({value:n,isActive:i})=>s[6]||(s[6]=[l("pnpm")])),title1:a(({value:n,isActive:i})=>s[7]||(s[7]=[l("yarn")])),title2:a(({value:n,isActive:i})=>s[8]||(s[8]=[l("npm")])),tab0:a(({value:n,isActive:i})=>s[9]||(s[9]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"git"),e("span",{style:{color:"#CE9178"}}," init")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," init")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab1:a(({value:n,isActive:i})=>s[10]||(s[10]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"git"),e("span",{style:{color:"#CE9178"}}," init")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," init")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab2:a(({value:n,isActive:i})=>s[11]||(s[11]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"git"),e("span",{style:{color:"#CE9178"}}," init")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," init")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),_:1}),s[40]||(s[40]=e("ul",null,[e("li",null,"安装 VuePress")],-1)),r(t,{id:"105",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:a(({value:n,isActive:i})=>s[12]||(s[12]=[l("pnpm")])),title1:a(({value:n,isActive:i})=>s[13]||(s[13]=[l("yarn")])),title2:a(({value:n,isActive:i})=>s[14]||(s[14]=[l("npm")])),tab0:a(({value:n,isActive:i})=>s[15]||(s[15]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 vuepress 和 vue")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," vue")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装打包工具和主题")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/theme-default@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab1:a(({value:n,isActive:i})=>s[16]||(s[16]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 vuepress")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装打包工具和主题")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/theme-default@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab2:a(({value:n,isActive:i})=>s[17]||(s[17]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装 vuepress")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# 安装打包工具和主题")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/theme-default@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),_:1}),s[41]||(s[41]=o(`
    • 创建 docs 目录和 docs/.vuepress 目录
    mkdir docs
    +mkdir docs/.vuepress
    • 创建 VuePress 配置文件 docs/.vuepress/config.js
    import { viteBundler } from '@vuepress/bundler-vite'
    +import { defaultTheme } from '@vuepress/theme-default'
    +import { defineUserConfig } from 'vuepress'
    +
    +export default defineUserConfig({
    +  bundler: viteBundler(),
    +  theme: defaultTheme(),
    +})
    • 创建你的第一篇文档
    echo '# Hello VuePress' > docs/README.md

    目录结构

    创建完成后,你项目的目录结构应该是这样的:

    ├─ docs
    +│  ├─ .vuepress
    +│  │  └─ config.js
    +│  └─ README.md
    +└─ package.json

    docs 目录是你放置 Markdown 文件的地方,它同时也会作为 VuePress 的源文件目录。

    docs/.vuepress 目录,即源文件目录下的 .vuepress 目录,是放置所有和 VuePress 相关的文件的地方。当前这里只有一个配置文件。默认还会在该目录下生成临时文件、缓存文件和构建输出文件。建议你把它们添加到 .gitignore 文件中。

    示例 \`.gitignore\` 文件
    # VuePress 默认临时文件目录
    +.vuepress/.temp
    +# VuePress 默认缓存目录
    +.vuepress/.cache
    +# VuePress 默认构建生成的静态文件目录
    +.vuepress/dist

    开始使用 VuePress

    启动开发服务器

    你可以在 package.json 中添加一些 scripts

    {
    +  "scripts": {
    +    "docs:dev": "vuepress dev docs",
    +    "docs:build": "vuepress build docs"
    +  }
    +}

    运行 docs:dev 脚本可以启动开发服务器:

    `,17)),r(t,{id:"169",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:a(({value:n,isActive:i})=>s[18]||(s[18]=[l("pnpm")])),title1:a(({value:n,isActive:i})=>s[19]||(s[19]=[l("yarn")])),title2:a(({value:n,isActive:i})=>s[20]||(s[20]=[l("npm")])),tab0:a(({value:n,isActive:i})=>s[21]||(s[21]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," docs:dev")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab1:a(({value:n,isActive:i})=>s[22]||(s[22]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," docs:dev")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab2:a(({value:n,isActive:i})=>s[23]||(s[23]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," run"),e("span",{style:{color:"#CE9178"}}," docs:dev")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),_:1}),s[42]||(s[42]=e("p",null,[l("VuePress 会在 "),e("a",{href:"http://localhost:8080",target:"_blank",rel:"noopener noreferrer"},"http://localhost:8080"),l(" 启动一个热重载的开发服务器。当你修改你的 Markdown 文件时,浏览器中的内容也会自动更新。")],-1)),s[43]||(s[43]=e("h3",{id:"构建你的网站",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#构建你的网站"},[e("span",null,"构建你的网站")])],-1)),s[44]||(s[44]=e("p",null,[l("运行 "),e("code",null,"docs:build"),l(" 脚本可以构建你的网站:")],-1)),r(t,{id:"189",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:a(({value:n,isActive:i})=>s[24]||(s[24]=[l("pnpm")])),title1:a(({value:n,isActive:i})=>s[25]||(s[25]=[l("yarn")])),title2:a(({value:n,isActive:i})=>s[26]||(s[26]=[l("npm")])),tab0:a(({value:n,isActive:i})=>s[27]||(s[27]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," docs:build")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab1:a(({value:n,isActive:i})=>s[28]||(s[28]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," docs:build")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab2:a(({value:n,isActive:i})=>s[29]||(s[29]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," run"),e("span",{style:{color:"#CE9178"}}," docs:build")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),_:1}),e("p",null,[s[31]||(s[31]=l("在 ")),s[32]||(s[32]=e("code",null,"docs/.vuepress/dist",-1)),s[33]||(s[33]=l(" 目录中可以找到构建生成的静态文件。你可以查看 ")),r(p,{to:"/zh/guide/deployment.html"},{default:a(()=>s[30]||(s[30]=[l("部署")])),_:1}),s[34]||(s[34]=l(" 来了解如何部署你的网站。"))]),s[45]||(s[45]=e("h2",{id:"进一步了解-vuepress",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#进一步了解-vuepress"},[e("span",null,"进一步了解 VuePress")])],-1)),s[46]||(s[46]=e("p",null,"现在,你应该已经有了一个简单可用的 VuePress 网站。但你可能仍需要阅读后续的指南来更加了解 VuePress 。",-1)),e("p",null,[s[36]||(s[36]=l("下一步,前往 ")),r(p,{to:"/zh/guide/configuration.html"},{default:a(()=>s[35]||(s[35]=[l("配置")])),_:1}),s[37]||(s[37]=l(" 了解更多配置文件相关的内容。"))])])}const D=c(m,[["render",b],["__file","getting-started.html.vue"]]),g=JSON.parse('{"path":"/zh/guide/getting-started.html","title":"快速上手","lang":"zh-CN","frontmatter":{"description":"快速上手 注意 VuePress v2 目前仍处于 RC (Release Candidate) 阶段。你已经可以用它来构建你的站点,但是它的配置和 API 还不够稳定,有可能会发生一些微小的 Breaking Changes 。因此,在每次更新 RC 版本之后,请一定要仔细阅读 更新日志。 在线试一试 你可以通过 StackBlitz 在你的浏览器里...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/guide/getting-started.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/guide/getting-started.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"快速上手"}],["meta",{"property":"og:description","content":"快速上手 注意 VuePress v2 目前仍处于 RC (Release Candidate) 阶段。你已经可以用它来构建你的站点,但是它的配置和 API 还不够稳定,有可能会发生一些微小的 Breaking Changes 。因此,在每次更新 RC 版本之后,请一定要仔细阅读 更新日志。 在线试一试 你可以通过 StackBlitz 在你的浏览器里..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-09-23T11:25:41.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-23T11:25:41.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"快速上手\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-09-23T11:25:41.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"在线试一试","slug":"在线试一试","link":"#在线试一试","children":[]},{"level":2,"title":"安装","slug":"安装","link":"#安装","children":[{"level":3,"title":"依赖环境","slug":"依赖环境","link":"#依赖环境","children":[]},{"level":3,"title":"创建项目","slug":"创建项目","link":"#创建项目","children":[]}]},{"level":2,"title":"目录结构","slug":"目录结构","link":"#目录结构","children":[]},{"level":2,"title":"开始使用 VuePress","slug":"开始使用-vuepress","link":"#开始使用-vuepress","children":[{"level":3,"title":"启动开发服务器","slug":"启动开发服务器","link":"#启动开发服务器","children":[]},{"level":3,"title":"构建你的网站","slug":"构建你的网站","link":"#构建你的网站","children":[]}]},{"level":2,"title":"进一步了解 VuePress","slug":"进一步了解-vuepress","link":"#进一步了解-vuepress","children":[]}],"git":{"updatedTime":1727090741000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mister-Hope","email":"mister-hope@outlook.com","commits":1},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/guide/getting-started.md"}');export{D as comp,g as data}; diff --git a/assets/getting-started.html-CgQZcPJf.js b/assets/getting-started.html-CgQZcPJf.js new file mode 100644 index 000000000..2f9d765c6 --- /dev/null +++ b/assets/getting-started.html-CgQZcPJf.js @@ -0,0 +1,36 @@ +import{_ as u,c,a as o,e as r,f as n,b as e,d as l,r as p,o as v}from"./app-9HBJsLu_.js";const m={};function b(h,s){const i=p("CodeTabs"),d=p("RouteLink");return v(),c("div",null,[s[38]||(s[38]=o('

    Getting Started

    Warning

    VuePress v2 is currently in RC (Release Candidate) stage. It's ready to be used for building your site, but the config and API are not stable enough, which is possibly to have minor breaking changes. So make sure to read the changelog carefully each time you upgrade a RC version.

    Try It Online

    You can try VuePress directly in your browser on StackBlitz.

    Installation

    Prerequisites

    Tips

    • When using pnpm, you need to install vue as peer-dependencies.
    • When using yarn 2+, you need to set nodeLinker: 'node-modules' in your .yarnrc.yml file.

    Project Setup

    Setup via CLI

    You can use create-vuepress to generate a template directly.

    ',11)),r(i,{id:"55",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:n(({value:a,isActive:t})=>s[0]||(s[0]=[l("pnpm")])),title1:n(({value:a,isActive:t})=>s[1]||(s[1]=[l("yarn")])),title2:n(({value:a,isActive:t})=>s[2]||(s[2]=[l("npm")])),tab0:n(({value:a,isActive:t})=>s[3]||(s[3]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," create"),e("span",{style:{color:"#CE9178"}}," vuepress"),e("span",{style:{color:"#CE9178"}}," vuepress-starter")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab1:n(({value:a,isActive:t})=>s[4]||(s[4]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," create"),e("span",{style:{color:"#CE9178"}}," vuepress"),e("span",{style:{color:"#CE9178"}}," vuepress-starter")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab2:n(({value:a,isActive:t})=>s[5]||(s[5]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," init"),e("span",{style:{color:"#CE9178"}}," vuepress"),e("span",{style:{color:"#CE9178"}}," vuepress-starter")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),_:1}),s[39]||(s[39]=o(`

    Setup Manually

    This section will help you build a basic VuePress documentation site from ground up.

    • Create and change into a new directory
    mkdir vuepress-starter
    +cd vuepress-starter
    • Initialize your project
    `,5)),r(i,{id:"87",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:n(({value:a,isActive:t})=>s[6]||(s[6]=[l("pnpm")])),title1:n(({value:a,isActive:t})=>s[7]||(s[7]=[l("yarn")])),title2:n(({value:a,isActive:t})=>s[8]||(s[8]=[l("npm")])),tab0:n(({value:a,isActive:t})=>s[9]||(s[9]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"git"),e("span",{style:{color:"#CE9178"}}," init")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," init")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab1:n(({value:a,isActive:t})=>s[10]||(s[10]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"git"),e("span",{style:{color:"#CE9178"}}," init")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," init")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab2:n(({value:a,isActive:t})=>s[11]||(s[11]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"git"),e("span",{style:{color:"#CE9178"}}," init")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," init")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),_:1}),s[40]||(s[40]=e("ul",null,[e("li",null,"Install VuePress")],-1)),r(i,{id:"105",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:n(({value:a,isActive:t})=>s[12]||(s[12]=[l("pnpm")])),title1:n(({value:a,isActive:t})=>s[13]||(s[13]=[l("yarn")])),title2:n(({value:a,isActive:t})=>s[14]||(s[14]=[l("npm")])),tab0:n(({value:a,isActive:t})=>s[15]||(s[15]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install vuepress and vue")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next"),e("span",{style:{color:"#CE9178"}}," vue")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install bundler and theme")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/theme-default@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab1:n(({value:a,isActive:t})=>s[16]||(s[16]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install vuepress")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install bundler and theme")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," add"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/theme-default@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),tab2:n(({value:a,isActive:t})=>s[17]||(s[17]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install vuepress")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," vuepress@next")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"# install bundler and theme")]),l(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," install"),e("span",{style:{color:"#569CD6"}}," -D"),e("span",{style:{color:"#CE9178"}}," @vuepress/bundler-vite@next"),e("span",{style:{color:"#CE9178"}}," @vuepress/theme-default@next")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1)])),_:1}),s[41]||(s[41]=o(`
    • Create docs directory and docs/.vuepress directory
    mkdir docs
    +mkdir docs/.vuepress
    • Create the VuePress config file docs/.vuepress/config.js
    import { viteBundler } from '@vuepress/bundler-vite'
    +import { defaultTheme } from '@vuepress/theme-default'
    +import { defineUserConfig } from 'vuepress'
    +
    +export default defineUserConfig({
    +  bundler: viteBundler(),
    +  theme: defaultTheme(),
    +})
    • Create your first document
    echo '# Hello VuePress' > docs/README.md

    Directory Structure

    After the setup, the minimal structure of your project should look like this:

    ├─ docs
    +│  ├─ .vuepress
    +│  │  └─ config.js
    +│  └─ README.md
    +└─ package.json

    The docs directory is where you put your markdown files, and it will be used as the source directory of VuePress.

    The docs/.vuepress directory, i.e. the .vuepress directory in the source directory, is where all VuePress-specific files will be placed. Currently there is only one config file in it. By default, the temp, cache and output directory will also be generated inside this directory. It is suggested to add them to your .gitignore file.

    Example \`.gitignore\` file
    # VuePress default temp directory
    +.vuepress/.temp
    +# VuePress default cache directory
    +.vuepress/.cache
    +# VuePress default build output directory
    +.vuepress/dist

    Work with VuePress

    Start Dev Server

    You can add some scripts to package.json:

    {
    +  "scripts": {
    +    "docs:dev": "vuepress dev docs",
    +    "docs:build": "vuepress build docs"
    +  }
    +}

    Then, run docs:dev script to start the dev server:

    `,17)),r(i,{id:"169",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:n(({value:a,isActive:t})=>s[18]||(s[18]=[l("pnpm")])),title1:n(({value:a,isActive:t})=>s[19]||(s[19]=[l("yarn")])),title2:n(({value:a,isActive:t})=>s[20]||(s[20]=[l("npm")])),tab0:n(({value:a,isActive:t})=>s[21]||(s[21]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," docs:dev")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab1:n(({value:a,isActive:t})=>s[22]||(s[22]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," docs:dev")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab2:n(({value:a,isActive:t})=>s[23]||(s[23]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," run"),e("span",{style:{color:"#CE9178"}}," docs:dev")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),_:1}),s[42]||(s[42]=e("p",null,[l("VuePress will start a hot-reloading development server at "),e("a",{href:"http://localhost:8080",target:"_blank",rel:"noopener noreferrer"},"http://localhost:8080"),l(". When you modify your markdown files, the content in the browser will be auto updated.")],-1)),s[43]||(s[43]=e("h3",{id:"build-your-site",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#build-your-site"},[e("span",null,"Build Your Site")])],-1)),s[44]||(s[44]=e("p",null,[l("To build your site, run "),e("code",null,"docs:build"),l(" script:")],-1)),r(i,{id:"189",data:[{id:"pnpm"},{id:"yarn"},{id:"npm"}],"tab-id":"shell"},{title0:n(({value:a,isActive:t})=>s[24]||(s[24]=[l("pnpm")])),title1:n(({value:a,isActive:t})=>s[25]||(s[25]=[l("yarn")])),title2:n(({value:a,isActive:t})=>s[26]||(s[26]=[l("npm")])),tab0:n(({value:a,isActive:t})=>s[27]||(s[27]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"pnpm"),e("span",{style:{color:"#CE9178"}}," docs:build")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab1:n(({value:a,isActive:t})=>s[28]||(s[28]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"yarn"),e("span",{style:{color:"#CE9178"}}," docs:build")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),tab2:n(({value:a,isActive:t})=>s[29]||(s[29]=[e("div",{class:"language-bash line-numbers-mode","data-highlighter":"shiki","data-ext":"bash","data-title":"bash",style:{"background-color":"#1E1E1E",color:"#D4D4D4"}},[e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," run"),e("span",{style:{color:"#CE9178"}}," docs:build")])])]),e("div",{class:"line-numbers","aria-hidden":"true",style:{"counter-reset":"line-number 0"}},[e("div",{class:"line-number"})])],-1)])),_:1}),e("p",null,[s[31]||(s[31]=l("You will see the generated static files in the ")),s[32]||(s[32]=e("code",null,"docs/.vuepress/dist",-1)),s[33]||(s[33]=l(" directory. You can check out ")),r(d,{to:"/guide/deployment.html"},{default:n(()=>s[30]||(s[30]=[l("deployment")])),_:1}),s[34]||(s[34]=l(" for how to deploy them."))]),s[45]||(s[45]=e("h2",{id:"learn-more-about-vuepress",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#learn-more-about-vuepress"},[e("span",null,"Learn More about VuePress")])],-1)),s[46]||(s[46]=e("p",null,"By now, you should have a basic but functional VuePress site. But you may still need to read the subsequent guide to learn more about VuePress.",-1)),e("p",null,[s[36]||(s[36]=l("Next step, learn more about the ")),r(d,{to:"/guide/configuration.html"},{default:n(()=>s[35]||(s[35]=[l("configuration")])),_:1}),s[37]||(s[37]=l("."))])])}const g=u(m,[["render",b],["__file","getting-started.html.vue"]]),D=JSON.parse(`{"path":"/guide/getting-started.html","title":"Getting Started","lang":"en-US","frontmatter":{"description":"Getting Started Warning VuePress v2 is currently in RC (Release Candidate) stage. It's ready to be used for building your site, but the config and API are not stable enough, whi...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/guide/getting-started.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/guide/getting-started.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Getting Started"}],["meta",{"property":"og:description","content":"Getting Started Warning VuePress v2 is currently in RC (Release Candidate) stage. It's ready to be used for building your site, but the config and API are not stable enough, whi..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-09-23T11:25:41.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-23T11:25:41.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Getting Started\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-09-23T11:25:41.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Try It Online","slug":"try-it-online","link":"#try-it-online","children":[]},{"level":2,"title":"Installation","slug":"installation","link":"#installation","children":[{"level":3,"title":"Prerequisites","slug":"prerequisites","link":"#prerequisites","children":[]},{"level":3,"title":"Project Setup","slug":"project-setup","link":"#project-setup","children":[]}]},{"level":2,"title":"Directory Structure","slug":"directory-structure","link":"#directory-structure","children":[]},{"level":2,"title":"Work with VuePress","slug":"work-with-vuepress","link":"#work-with-vuepress","children":[{"level":3,"title":"Start Dev Server","slug":"start-dev-server","link":"#start-dev-server","children":[]},{"level":3,"title":"Build Your Site","slug":"build-your-site","link":"#build-your-site","children":[]}]},{"level":2,"title":"Learn More about VuePress","slug":"learn-more-about-vuepress","link":"#learn-more-about-vuepress","children":[]}],"git":{"updatedTime":1727090741000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":5},{"name":"Mister-Hope","email":"mister-hope@outlook.com","commits":1},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"guide/getting-started.md"}`);export{g as comp,D as data}; diff --git a/assets/hero-BNkrhNQ6.js b/assets/hero-BNkrhNQ6.js new file mode 100644 index 000000000..d90d6d577 --- /dev/null +++ b/assets/hero-BNkrhNQ6.js @@ -0,0 +1 @@ +const o="/images/hero.png";export{o as _}; diff --git a/assets/i18n.html-BxHmK_XU.js b/assets/i18n.html-BxHmK_XU.js new file mode 100644 index 000000000..4d434d22b --- /dev/null +++ b/assets/i18n.html-BxHmK_XU.js @@ -0,0 +1,39 @@ +import{_ as t,c as p,a,b as n,d as e,e as i,f as o,r,o as c}from"./app-9HBJsLu_.js";const d={},u={class:"hint-container tip"};function m(D,s){const l=r("RouteLink");return c(),p("div",null,[s[8]||(s[8]=a(`

    I18n

    Site I18n Config

    To take advantage of multi-language support in VuePress, you first need to use the following file and directory structure:

    docs
    +├─ README.md
    +├─ foo.md
    +├─ nested
    +│  └─ README.md
    +└─ zh
    +   ├─ README.md
    +   ├─ foo.md
    +   └─ nested
    +      └─ README.md
    `,4)),n("p",null,[s[1]||(s[1]=e("Then, specify the ")),s[2]||(s[2]=n("code",null,"locales",-1)),s[3]||(s[3]=e(" option in your ")),i(l,{to:"/guide/configuration.html#config-file"},{default:o(()=>s[0]||(s[0]=[e("config file")])),_:1}),s[4]||(s[4]=e(":"))]),s[9]||(s[9]=a(`
    export default {
    +  locales: {
    +    // The key is the path for the locale to be nested under.
    +    // As a special case, the default locale can use '/' as its path.
    +    '/': {
    +      lang: 'en-US',
    +      title: 'VuePress',
    +      description: 'Vue-powered Static Site Generator',
    +    },
    +    '/zh/': {
    +      lang: 'zh-CN',
    +      title: 'VuePress',
    +      description: 'Vue 驱动的静态网站生成器',
    +    },
    +  },
    +}

    If a locale does not have a lang, title, description or head, VuePress will fallback to the root-level values. You can omit the root level config as long as they are provided in each locale.

    `,2)),n("div",u,[s[7]||(s[7]=n("p",{class:"hint-container-title"},"Tips",-1)),n("p",null,[s[6]||(s[6]=e("Config reference: ")),i(l,{to:"/reference/config.html#locales"},{default:o(()=>s[5]||(s[5]=[e("locales")])),_:1})])]),s[10]||(s[10]=a(`

    Theme I18n Config

    VuePress does not restrict how themes provide multi-language support, so each theme may have different way to handle i18n, and some themes may not provide multi-language support at all. You'd better refer to the theme documentation for detailed guide.

    If you are using default theme, the multi-language support is the same as above:

    import { defaultTheme } from '@vuepress/theme-default'
    +import { defineUserConfig } from 'vuepress'
    +
    +export default defineUserConfig({
    +  theme: defaultTheme({
    +    locales: {
    +      '/': {
    +        selectLanguageName: 'English',
    +      },
    +      '/zh/': {
    +        selectLanguageName: '简体中文',
    +      },
    +    },
    +  }),
    +})
    `,5))])}const y=t(d,[["render",m],["__file","i18n.html.vue"]]),h=JSON.parse('{"path":"/guide/i18n.html","title":"I18n","lang":"en-US","frontmatter":{"description":"I18n Site I18n Config To take advantage of multi-language support in VuePress, you first need to use the following file and directory structure: Then, specify the locales option...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/guide/i18n.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/guide/i18n.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"I18n"}],["meta",{"property":"og:description","content":"I18n Site I18n Config To take advantage of multi-language support in VuePress, you first need to use the following file and directory structure: Then, specify the locales option..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-02-01T10:07:08.000Z"}],["meta",{"property":"article:modified_time","content":"2024-02-01T10:07:08.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"I18n\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-02-01T10:07:08.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Site I18n Config","slug":"site-i18n-config","link":"#site-i18n-config","children":[]},{"level":2,"title":"Theme I18n Config","slug":"theme-i18n-config","link":"#theme-i18n-config","children":[]}],"git":{"updatedTime":1706782028000,"contributors":[{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":2},{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2}]},"autoDesc":true,"filePathRelative":"guide/i18n.md"}');export{y as comp,h as data}; diff --git a/assets/i18n.html-cok13upx.js b/assets/i18n.html-cok13upx.js new file mode 100644 index 000000000..a3117cbdc --- /dev/null +++ b/assets/i18n.html-cok13upx.js @@ -0,0 +1,39 @@ +import{_ as o,c as t,a,b as e,d as n,e as p,f as i,r,o as c}from"./app-9HBJsLu_.js";const d={},D={class:"hint-container tip"};function u(m,s){const l=r("RouteLink");return c(),t("div",null,[s[8]||(s[8]=a(`

    多语言支持

    站点多语言配置

    要启用 VuePress 的多语言支持,首先需要使用如下的文件目录结构:

    docs
    +├─ README.md
    +├─ foo.md
    +├─ nested
    +│  └─ README.md
    +└─ zh
    +   ├─ README.md
    +   ├─ foo.md
    +   └─ nested
    +      └─ README.md
    `,4)),e("p",null,[s[1]||(s[1]=n("然后,在你的 ")),p(l,{to:"/zh/guide/configuration.html#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"},{default:i(()=>s[0]||(s[0]=[n("配置文件")])),_:1}),s[2]||(s[2]=n(" 中设置 ")),s[3]||(s[3]=e("code",null,"locales",-1)),s[4]||(s[4]=n(" 选项:"))]),s[9]||(s[9]=a(`
    export default {
    +  locales: {
    +    // 键名是该语言所属的子路径
    +    // 作为特例,默认语言可以使用 '/' 作为其路径。
    +    '/': {
    +      lang: 'en-US',
    +      title: 'VuePress',
    +      description: 'Vue-powered Static Site Generator',
    +    },
    +    '/zh/': {
    +      lang: 'zh-CN',
    +      title: 'VuePress',
    +      description: 'Vue 驱动的静态网站生成器',
    +    },
    +  },
    +}

    如果一个语言没有声明 lang, title, description 或者 head ,VuePress 将会尝试使用顶层配置的对应值。如果每个语言都声明了这些值,那么顶层配置中的对应值可以被省略。

    `,2)),e("div",D,[s[7]||(s[7]=e("p",{class:"hint-container-title"},"提示",-1)),e("p",null,[s[6]||(s[6]=n("配置参考: ")),p(l,{to:"/zh/reference/config.html#locales"},{default:i(()=>s[5]||(s[5]=[n("locales")])),_:1})])]),s[10]||(s[10]=a(`

    主题多语言配置

    VuePress 没有限制主题如何提供多语言支持,因此每个主题可能会有不同的多语言配置方式,而且部分主题可能不会提供多语言支持。建议你查看主题本身的文档来获取更详细的指引。

    如果你使用的是默认主题,那么它提供多语言支持的方式和上述是一致的:

    import { defaultTheme } from '@vuepress/theme-default'
    +import { defineUserConfig } from 'vuepress'
    +
    +export default defineUserConfig({
    +  theme: defaultTheme({
    +    locales: {
    +      '/': {
    +        selectLanguageName: 'English',
    +      },
    +      '/zh/': {
    +        selectLanguageName: '简体中文',
    +      },
    +    },
    +  }),
    +})
    `,5))])}const y=o(d,[["render",u],["__file","i18n.html.vue"]]),C=JSON.parse('{"path":"/zh/guide/i18n.html","title":"多语言支持","lang":"zh-CN","frontmatter":{"description":"多语言支持 站点多语言配置 要启用 VuePress 的多语言支持,首先需要使用如下的文件目录结构: 然后,在你的 中设置 locales 选项: 如果一个语言没有声明 lang, title, description 或者 head ,VuePress 将会尝试使用顶层配置的对应值。如果每个语言都声明了这些值,那么顶层配置中的对应值可以被省略。 提示...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/guide/i18n.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/guide/i18n.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"多语言支持"}],["meta",{"property":"og:description","content":"多语言支持 站点多语言配置 要启用 VuePress 的多语言支持,首先需要使用如下的文件目录结构: 然后,在你的 中设置 locales 选项: 如果一个语言没有声明 lang, title, description 或者 head ,VuePress 将会尝试使用顶层配置的对应值。如果每个语言都声明了这些值,那么顶层配置中的对应值可以被省略。 提示..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-02-01T10:07:08.000Z"}],["meta",{"property":"article:modified_time","content":"2024-02-01T10:07:08.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"多语言支持\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-02-01T10:07:08.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"站点多语言配置","slug":"站点多语言配置","link":"#站点多语言配置","children":[]},{"level":2,"title":"主题多语言配置","slug":"主题多语言配置","link":"#主题多语言配置","children":[]}],"git":{"updatedTime":1706782028000,"contributors":[{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":2},{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":2}]},"autoDesc":true,"filePathRelative":"zh/guide/i18n.md"}');export{y as comp,C as data}; diff --git a/assets/index-DCs6OeCW.js b/assets/index-DCs6OeCW.js new file mode 100644 index 000000000..966d59315 --- /dev/null +++ b/assets/index-DCs6OeCW.js @@ -0,0 +1,14 @@ +/*! @docsearch/js 3.6.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function on(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function N(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n3)for(n=[n],i=3;i0?Ue(d.type,d.props,d.key,null,d.__v):d)!=null){if(d.__=n,d.__b=n.__b+1,(y=g[a])===null||y&&d.key==y.key&&d.type===y.type)g[a]=void 0;else for(h=0;h<_;h++){if((y=g[h])&&d.key==y.key&&d.type===y.type){g[h]=void 0;break}y=null}Qt(t,d,y=y||Et,o,i,u,s,l,f),v=d.__e,(h=d.ref)&&y.ref!=h&&(m||(m=[]),y.ref&&m.push(y.ref,null,d),m.push(h,d.__c||v,d)),v!=null?(p==null&&(p=v),typeof d.type=="function"&&d.__k!=null&&d.__k===y.__k?d.__d=l=vr(d,l,t):l=dr(t,d,y,g,v,l),f||n.type!=="option"?typeof n.type=="function"&&(n.__d=l):t.value=""):l&&y.__e==l&&l.parentNode!=t&&(l=nt(y))}for(n.__e=p,a=_;a--;)g[a]!=null&&(typeof n.type=="function"&&g[a].__e!=null&&g[a].__e==n.__d&&(n.__d=nt(r,a+1)),gr(g[a],g[a]));if(m)for(a=0;a3)for(n=[n],i=3;i=n.__.length&&n.__.push({}),n.__[t]}function Gt(t){return Ce=1,br(Sr,t)}function br(t,e,n){var r=it(xe++,2);return r.t=t,r.__c||(r.__=[n?n(e):Sr(void 0,e),function(o){var i=r.t(r.__[0],o);r.__[0]!==i&&(r.__=[i,r.__[1]],r.__c.setState({}))}],r.__c=K),r.__}function Yt(t,e){var n=it(xe++,3);!j.__s&&Xt(n.__H,e)&&(n.__=t,n.__H=e,K.__H.__h.push(n))}function hn(t,e){var n=it(xe++,4);!j.__s&&Xt(n.__H,e)&&(n.__=t,n.__H=e,K.__h.push(n))}function Ct(t,e){var n=it(xe++,7);return Xt(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function eo(){Ft.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(bt),t.__H.__h.forEach(Bt),t.__H.__h=[]}catch(e){t.__H.__h=[],j.__e(e,t.__v)}}),Ft=[]}j.__b=function(t){K=null,fn&&fn(t)},j.__r=function(t){mn&&mn(t),xe=0;var e=(K=t.__c).__H;e&&(e.__h.forEach(bt),e.__h.forEach(Bt),e.__h=[])},j.diffed=function(t){pn&&pn(t);var e=t.__c;e&&e.__H&&e.__H.__h.length&&(Ft.push(e)!==1&&sn===j.requestAnimationFrame||((sn=j.requestAnimationFrame)||function(n){var r,o=function(){clearTimeout(i),yn&&cancelAnimationFrame(r),setTimeout(n)},i=setTimeout(o,100);yn&&(r=requestAnimationFrame(o))})(eo)),K=void 0},j.__c=function(t,e){e.some(function(n){try{n.__h.forEach(bt),n.__h=n.__h.filter(function(r){return!r.__||Bt(r)})}catch(r){e.some(function(o){o.__h&&(o.__h=[])}),e=[],j.__e(r,n.__v)}}),vn&&vn(t,e)},j.unmount=function(t){dn&&dn(t);var e=t.__c;if(e&&e.__H)try{e.__H.__.forEach(bt)}catch(n){j.__e(n,e.__v)}};var yn=typeof requestAnimationFrame=="function";function bt(t){var e=K;typeof t.__c=="function"&&t.__c(),K=e}function Bt(t){var e=K;t.__c=t.__(),K=e}function Xt(t,e){return!t||t.length!==e.length||e.some(function(n,r){return n!==t[r]})}function Sr(t,e){return typeof e=="function"?e(t):e}function Or(t,e){for(var n in e)t[n]=e[n];return t}function Vt(t,e){for(var n in t)if(n!=="__source"&&!(n in e))return!0;for(var r in e)if(r!=="__source"&&t[r]!==e[r])return!0;return!1}function Kt(t){this.props=t}(Kt.prototype=new te).isPureReactComponent=!0,Kt.prototype.shouldComponentUpdate=function(t,e){return Vt(this.props,t)||Vt(this.state,e)};var gn=j.__b;j.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),gn&&gn(t)};var to=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,_n=function(t,e){return t==null?null:ie(ie(t).map(e))},no={map:_n,forEach:_n,count:function(t){return t?ie(t).length:0},only:function(t){var e=ie(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:ie},ro=j.__e;function St(){this.__u=0,this.t=null,this.__b=null}function wr(t){var e=t.__.__c;return e&&e.__e&&e.__e(t)}function Le(){this.u=null,this.o=null}j.__e=function(t,e,n){if(t.then){for(var r,o=e;o=o.__;)if((r=o.__c)&&r.__c)return e.__e==null&&(e.__e=n.__e,e.__k=n.__k),r.__c(t,e)}ro(t,e,n)},(St.prototype=new te).__c=function(t,e){var n=e.__c,r=this;r.t==null&&(r.t=[]),r.t.push(n);var o=wr(r.__v),i=!1,u=function(){i||(i=!0,n.componentWillUnmount=n.__c,o?o(s):s())};n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){u(),n.__c&&n.__c()};var s=function(){if(!--r.__u){if(r.state.__e){var f=r.state.__e;r.__v.__k[0]=function h(y,d,v){return y&&(y.__v=null,y.__k=y.__k&&y.__k.map(function(p){return h(p,d,v)}),y.__c&&y.__c.__P===d&&(y.__e&&v.insertBefore(y.__e,y.__d),y.__c.__e=!0,y.__c.__P=v)),y}(f,f.__c.__P,f.__c.__O)}var a;for(r.setState({__e:r.__b=null});a=r.t.pop();)a.forceUpdate()}},l=e.__h===!0;r.__u++||l||r.setState({__e:r.__b=r.__v.__k[0]}),t.then(u,u)},St.prototype.componentWillUnmount=function(){this.t=[]},St.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function i(u,s,l){return u&&(u.__c&&u.__c.__H&&(u.__c.__H.__.forEach(function(f){typeof f.__c=="function"&&f.__c()}),u.__c.__H=null),(u=Or({},u)).__c!=null&&(u.__c.__P===l&&(u.__c.__P=s),u.__c=null),u.__k=u.__k&&u.__k.map(function(f){return i(f,s,l)})),u}(this.__b,n,r.__O=r.__P)}this.__b=null}var o=e.__e&&ee(pe,null,t.fallback);return o&&(o.__h=null),[ee(pe,null,e.__e?null:t.children),o]};var bn=function(t,e,n){if(++n[1]===n[0]&&t.o.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.o.size))for(n=t.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),e.i.removeChild(r)}}),rt(ee(oo,{context:e.context},t.__v),e.l)):e.l&&e.componentWillUnmount()}function Er(t,e){return ee(io,{__v:t,i:e})}(Le.prototype=new te).__e=function(t){var e=this,n=wr(e.__v),r=e.o.get(t);return r[0]++,function(o){var i=function(){e.props.revealOrder?(r.push(o),bn(e,t,r)):o()};n?n(i):i()}},Le.prototype.render=function(t){this.u=null,this.o=new Map;var e=ie(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var n=e.length;n--;)this.o.set(e[n],this.u=[1,0,this.u]);return t.children},Le.prototype.componentDidUpdate=Le.prototype.componentDidMount=function(){var t=this;this.o.forEach(function(e,n){bn(t,n,e)})};var jr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,ao=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,co=function(t){return(typeof Symbol<"u"&&D(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(t)};function Pr(t,e,n){return e.__k==null&&(e.textContent=""),rt(t,e),typeof n=="function"&&n(),t?t.__c:null}te.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(te.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Sn=j.event;function uo(){}function lo(){return this.cancelBubble}function so(){return this.defaultPrevented}j.event=function(t){return Sn&&(t=Sn(t)),t.persist=uo,t.isPropagationStopped=lo,t.isDefaultPrevented=so,t.nativeEvent=t};var Ir,On={configurable:!0,get:function(){return this.class}},wn=j.vnode;j.vnode=function(t){var e=t.type,n=t.props,r=n;if(typeof e=="string"){for(var o in r={},n){var i=n[o];o==="value"&&"defaultValue"in n&&i==null||(o==="defaultValue"&&"value"in n&&n.value==null?o="value":o==="download"&&i===!0?i="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+e)&&!co(n.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():ao.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():i===null&&(i=void 0),r[o]=i)}e=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=ie(n.children).forEach(function(u){u.props.selected=r.value.indexOf(u.props.value)!=-1})),e=="select"&&r.defaultValue!=null&&(r.value=ie(n.children).forEach(function(u){u.props.selected=r.multiple?r.defaultValue.indexOf(u.props.value)!=-1:r.defaultValue==u.props.value})),t.props=r}e&&n.class!=n.className&&(On.enumerable="className"in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",On)),t.$$typeof=jr,wn&&wn(t)};var En=j.__r;j.__r=function(t){En&&En(t),Ir=t.__c};var fo={ReactCurrentDispatcher:{current:{readContext:function(t){return Ir.__n[t.__c].props.value}}}};function jn(t){return!!t&&t.$$typeof===jr}(typeof performance>"u"?"undefined":D(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);var c={useState:Gt,useReducer:br,useEffect:Yt,useLayoutEffect:hn,useRef:function(t){return Ce=5,Ct(function(){return{current:t}},[])},useImperativeHandle:function(t,e,n){Ce=6,hn(function(){typeof t=="function"?t(e()):t&&(t.current=e())},n==null?n:n.concat(t))},useMemo:Ct,useCallback:function(t,e){return Ce=8,Ct(function(){return t},e)},useContext:function(t){var e=K.context[t.__c],n=it(xe++,9);return n.__c=t,e?(n.__==null&&(n.__=!0,e.sub(K)),e.props.value):t.__},useDebugValue:function(t,e){j.useDebugValue&&j.useDebugValue(e?e(t):t)},version:"16.8.0",Children:no,render:Pr,hydrate:function(t,e,n){return _r(t,e),typeof n=="function"&&n(),t?t.__c:null},unmountComponentAtNode:function(t){return!!t.__k&&(rt(null,t),!0)},createPortal:Er,createElement:ee,createContext:function(t,e){var n={__c:e="__cC"+sr++,__:t,Consumer:function(r,o){return r.children(o)},Provider:function(r){var o,i;return this.getChildContext||(o=[],(i={})[e]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(u){this.props.value!==u.value&&o.some(Ut)},this.sub=function(u){o.push(u);var s=u.componentWillUnmount;u.componentWillUnmount=function(){o.splice(o.indexOf(u),1),s&&s.call(u)}}),r.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(t){return ee.bind(null,t)},cloneElement:function(t){return jn(t)?Xr.apply(null,arguments):t},createRef:function(){return{current:null}},Fragment:pe,isValidElement:jn,findDOMNode:function(t){return t&&(t.base||t.nodeType===1&&t)||null},Component:te,PureComponent:Kt,memo:function(t,e){function n(o){var i=this.props.ref,u=i==o.ref;return!u&&i&&(i.call?i(null):i.current=null),e?!e(this.props,o)||!u:Vt(this.props,o)}function r(o){return this.shouldComponentUpdate=n,ee(t,o)}return r.displayName="Memo("+(t.displayName||t.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r},forwardRef:function(t){function e(n,r){var o=Or({},n);return delete o.ref,t(o,(r=n.ref||r)&&(D(r)!="object"||"current"in r)?r:null)}return e.$$typeof=to,e.render=e,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e},unstable_batchedUpdates:function(t,e){return t(e)},StrictMode:pe,Suspense:St,SuspenseList:Le,lazy:function(t){var e,n,r;function o(i){if(e||(e=t()).then(function(u){n=u.default||u},function(u){r=u}),r)throw r;if(!n)throw e;return ee(n,i)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:fo},mo=["facetName","facetQuery"];function Pn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function Fe(t){for(var e=1;e=0||(a[l]=u[l]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function be(t,e){return function(n){if(Array.isArray(n))return n}(t)||function(n,r){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var i,u,s=[],l=!0,f=!1;try{for(o=o.call(n);!(l=(i=o.next()).done)&&(s.push(i.value),!r||s.length!==r);l=!0);}catch(a){f=!0,u=a}finally{try{l||o.return==null||o.return()}finally{if(f)throw u}}return s}}(t,e)||Dr(t,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Dr(t,e){if(t){if(typeof t=="string")return Wt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set"?Array.from(t):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Wt(t,e):void 0}}function Wt(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0||(a[l]=u[l]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function An(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function Ae(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:20,n=[],r=0;rt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=3||y===2&&d>=4||y===1&&d>=10);function p(m,g,_){if(v&&_!==void 0){var b=_[0].__autocomplete_algoliaCredentials,S={"X-Algolia-Application-Id":b.appId,"X-Algolia-API-Key":b.apiKey};a.apply(void 0,[m].concat(st(g),[{headers:S}]))}else a.apply(void 0,[m].concat(st(g)))}return{init:function(m,g){a("init",{appId:m,apiKey:g})},setUserToken:function(m){a("setUserToken",m)},clickedObjectIDsAfterSearch:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&p("clickedObjectIDsAfterSearch",ft(g),g[0].items)},clickedObjectIDs:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&p("clickedObjectIDs",ft(g),g[0].items)},clickedFilters:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&a.apply(void 0,["clickedFilters"].concat(g))},convertedObjectIDsAfterSearch:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&p("convertedObjectIDsAfterSearch",ft(g),g[0].items)},convertedObjectIDs:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&p("convertedObjectIDs",ft(g),g[0].items)},convertedFilters:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&a.apply(void 0,["convertedFilters"].concat(g))},viewedObjectIDs:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&g.reduce(function(b,S){var O=S.items,E=xr(S,So);return[].concat(st(b),st(wo(Ae(Ae({},E),{},{objectIDs:(O==null?void 0:O.map(function(k){return k.objectID}))||E.objectIDs})).map(function(k){return{items:O,payload:k}})))},[]).forEach(function(b){var S=b.items;return p("viewedObjectIDs",[b.payload],S)})},viewedFilters:function(){for(var m=arguments.length,g=new Array(m),_=0;_0&&a.apply(void 0,["viewedFilters"].concat(g))}}}(u),l={current:[]},f=Cr(function(a){var h=a.state;if(h.isOpen){var y=h.collections.reduce(function(d,v){return[].concat(Oe(d),Oe(v.items))},[]).filter(xt);Ar(l.current.map(function(d){return d.objectID}),y.map(function(d){return d.objectID}))||(l.current=y,y.length>0&&Io({onItemsChange:r,items:y,insights:s,state:h}))}},0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(a){var h=a.setContext,y=a.onSelect,d=a.onActive;u("addAlgoliaAgent","insights-plugin"),h({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:s}}),y(function(v){var p=v.item,m=v.state,g=v.event;xt(p)&&o({state:m,event:g,insights:s,item:p,insightsEvents:[me({eventName:"Item Selected"},kn({item:p,items:l.current}))]})}),d(function(v){var p=v.item,m=v.state,g=v.event;xt(p)&&i({state:m,event:g,insights:s,item:p,insightsEvents:[me({eventName:"Item Active"},kn({item:p,items:l.current}))]})})},onStateChange:function(a){var h=a.state;f({state:h})},__autocomplete_pluginOptions:t}}function wt(t,e){var n=e;return{then:function(r,o){return wt(t.then(mt(r,n,t),mt(o,n,t)),n)},catch:function(r){return wt(t.catch(mt(r,n,t)),n)},finally:function(r){return r&&n.onCancelList.push(r),wt(t.finally(mt(r&&function(){return n.onCancelList=[],r()},n,t)),n)},cancel:function(){n.isCanceled=!0;var r=n.onCancelList;n.onCancelList=[],r.forEach(function(o){o()})},isCanceled:function(){return n.isCanceled===!0}}}function Nn(t){return wt(t,{isCanceled:!1,onCancelList:[]})}function mt(t,e,n){return t?function(r){return e.isCanceled?r:t(r)}:n}function Tn(t,e,n,r){if(!n)return null;if(t<0&&(e===null||r!==null&&e===0))return n+t;var o=(e===null?-1:e)+t;return o<=-1||o>=n?r===null?null:0:o}function Rn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function qn(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0||(M[w]=P[w]);return M}(_,b);if(Object.getOwnPropertySymbols){var k=Object.getOwnPropertySymbols(_);for(O=0;O=0||Object.prototype.propertyIsEnumerable.call(_,S)&&(E[S]=_[S])}return E}(t,qo);qe&&o.environment.clearTimeout(qe);var f=l.setCollections,a=l.setIsOpen,h=l.setQuery,y=l.setActiveItemId,d=l.setStatus;if(h(i),y(o.defaultActiveItemId),!i&&o.openOnFocus===!1){var v,p=s.getState().collections.map(function(_){return Re(Re({},_),{},{items:[]})});d("idle"),f(p),a((v=r.isOpen)!==null&&v!==void 0?v:o.shouldPanelOpen({state:s.getState()}));var m=Nn(Kn(p).then(function(){return Promise.resolve()}));return s.pendingRequests.add(m)}d("loading"),qe=o.environment.setTimeout(function(){d("stalled")},o.stallThreshold);var g=Nn(Kn(o.getSources(Re({query:i,refresh:u,state:s.getState()},l)).then(function(_){return Promise.all(_.map(function(b){return Promise.resolve(b.getItems(Re({query:i,refresh:u,state:s.getState()},l))).then(function(S){return function(O,E,k){if(I=O,!!(I!=null&&I.execute)){var P=O.requesterId==="algolia"?Object.assign.apply(Object,[{}].concat(Tr(Object.keys(k.context).map(function(w){var T;return(T=k.context[w])===null||T===void 0?void 0:T.__algoliaSearchParameters})))):{};return Ee(Ee({},O),{},{requests:O.queries.map(function(w){return{query:O.requesterId==="algolia"?Ee(Ee({},w),{},{params:Ee(Ee({},P),w.params)}):w,sourceId:E,transformResponse:O.transformResponse}})})}var I;return{items:O,sourceId:E}}(S,b.sourceId,s.getState())})})).then(Ro).then(function(b){return function(S,O,E){return O.map(function(k){var P,I=S.filter(function(C){return C.sourceId===k.sourceId}),w=I.map(function(C){return C.items}),T=I[0].transformResponse,M=T?T({results:P=w,hits:P.map(function(C){return C.hits}).filter(Boolean),facetHits:P.map(function(C){var z;return(z=C.facetHits)===null||z===void 0?void 0:z.map(function(ae){return{label:ae.value,count:ae.count,_highlightResult:{label:{value:ae.highlighted}}}})}).filter(Boolean)}):w;return k.onResolve({source:k,results:w,items:M,state:E.getState()}),M.every(Boolean),'The `getItems` function from source "'.concat(k.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),`. + +Did you forget to return items? + +See: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`),{source:k,items:M}})}(b,_,s)}).then(function(b){return function(S){var O=S.props,E=S.state,k=S.collections.reduce(function(I,w){return vt(vt({},I),{},Nr({},w.source.sourceId,vt(vt({},w.source),{},{getItems:function(){return ot(w.items)}})))},{}),P=O.plugins.reduce(function(I,w){return w.reshape?w.reshape(I):I},{sourcesBySourceId:k,state:E}).sourcesBySourceId;return ot(O.reshape({sourcesBySourceId:P,sources:Object.values(P),state:E})).filter(Boolean).map(function(I){return{source:I,items:I.getItems()}})}({collections:b,props:o,state:s.getState()})})}))).then(function(_){var b;d("idle"),f(_);var S=o.shouldPanelOpen({state:s.getState()});a((b=r.isOpen)!==null&&b!==void 0?b:o.openOnFocus&&!i&&S||S);var O=De(s.getState());if(s.getState().activeItemId!==null&&O){var E=O.item,k=O.itemInputValue,P=O.itemUrl,I=O.source;I.onActive(Re({event:e,item:E,itemInputValue:k,itemUrl:P,refresh:u,source:I,state:s.getState()},l))}}).finally(function(){d("idle"),qe&&o.environment.clearTimeout(qe)});return s.pendingRequests.add(g)}function Ge(t){return Ge=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Ge(t)}var Mo=["event","props","refresh","store"];function Wn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function ye(t){for(var e=1;e=0||(a[l]=u[l]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function Xe(t){return Xe=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Xe(t)}function Jn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function $o(t){for(var e=1;e0},reshape:function(d){return d.sources}},l),{},{id:(a=l.id)!==null&&a!==void 0?a:"autocomplete-".concat(go++),plugins:y,initialState:we({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},l.initialState),onStateChange:function(d){var v;(v=l.onStateChange)===null||v===void 0||v.call(l,d),y.forEach(function(p){var m;return(m=p.onStateChange)===null||m===void 0?void 0:m.call(p,d)})},onSubmit:function(d){var v;(v=l.onSubmit)===null||v===void 0||v.call(l,d),y.forEach(function(p){var m;return(m=p.onSubmit)===null||m===void 0?void 0:m.call(p,d)})},onReset:function(d){var v;(v=l.onReset)===null||v===void 0||v.call(l,d),y.forEach(function(p){var m;return(m=p.onReset)===null||m===void 0?void 0:m.call(p,d)})},getSources:function(d){return Promise.all([].concat(function(v){return function(p){if(Array.isArray(p))return Tt(p)}(v)||function(p){if(typeof Symbol<"u"&&p[Symbol.iterator]!=null||p["@@iterator"]!=null)return Array.from(p)}(v)||function(p,m){if(p){if(typeof p=="string")return Tt(p,m);var g=Object.prototype.toString.call(p).slice(8,-1);return g==="Object"&&p.constructor&&(g=p.constructor.name),g==="Map"||g==="Set"?Array.from(p):g==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g)?Tt(p,m):void 0}}(v)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}(y.map(function(v){return v.getSources})),[l.getSources]).filter(Boolean).map(function(v){return function(p,m){var g=[];return Promise.resolve(p(m)).then(function(_){return Promise.all(_.filter(function(b){return!!b}).map(function(b){if(b.sourceId,g.includes(b.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(b.sourceId)," is not unique."));g.push(b.sourceId);var S={getItemInputValue:function(E){return E.state.query},getItemUrl:function(){},onSelect:function(E){(0,E.setIsOpen)(!1)},onActive:Ot,onResolve:Ot};Object.keys(S).forEach(function(E){S[E].__default=!0});var O=qn(qn({},S),b);return Promise.resolve(O)}))})}(v,d)})).then(function(v){return ot(v)}).then(function(v){return v.map(function(p){return we(we({},p),{},{onSelect:function(m){p.onSelect(m),f.forEach(function(g){var _;return(_=g.onSelect)===null||_===void 0?void 0:_.call(g,m)})},onActive:function(m){p.onActive(m),f.forEach(function(g){var _;return(_=g.onActive)===null||_===void 0?void 0:_.call(g,m)})},onResolve:function(m){p.onResolve(m),f.forEach(function(g){var _;return(_=g.onResolve)===null||_===void 0?void 0:_.call(g,m)})}})})})},navigator:we({navigate:function(d){var v=d.itemUrl;h.location.assign(v)},navigateNewTab:function(d){var v=d.itemUrl,p=h.open(v,"_blank","noopener");p==null||p.focus()},navigateNewWindow:function(d){var v=d.itemUrl;h.open(v,"_blank","noopener")}},l.navigator)})}(t,e),r=function(l,f,a){var h,y=f.initialState;return{getState:function(){return y},dispatch:function(d,v){var p=function(m){for(var g=1;g=0||(ct[G]=Se[G]);return ct}(L,ne);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(L);for(V=0;V=0||Object.prototype.propertyIsEnumerable.call(L,$)&&(ce[$]=L[$])}return ce}(I,Mo);if(w.key==="ArrowUp"||w.key==="ArrowDown"){var ae=function(){var L=T.environment.document.getElementById("".concat(T.id,"-item-").concat(C.getState().activeItemId));L&&(L.scrollIntoViewIfNeeded?L.scrollIntoViewIfNeeded(!1):L.scrollIntoView(!1))},at=function(){var L=De(C.getState());if(C.getState().activeItemId!==null&&L){var ne=L.item,$=L.itemInputValue,V=L.itemUrl,ce=L.source;ce.onActive(ye({event:w,item:ne,itemInputValue:$,itemUrl:V,refresh:M,source:ce,state:C.getState()},z))}};w.preventDefault(),C.getState().isOpen===!1&&(T.openOnFocus||C.getState().query)?je(ye({event:w,props:T,query:C.getState().query,refresh:M,store:C},z)).then(function(){C.dispatch(w.key,{nextActiveItemId:T.defaultActiveItemId}),at(),setTimeout(ae,0)}):(C.dispatch(w.key,{}),at(),ae())}else if(w.key==="Escape")w.preventDefault(),C.dispatch(w.key,null),C.pendingRequests.cancelAll();else if(w.key==="Tab")C.dispatch("blur",null),C.pendingRequests.cancelAll();else if(w.key==="Enter"){if(C.getState().activeItemId===null||C.getState().collections.every(function(L){return L.items.length===0}))return void(T.debug||C.pendingRequests.cancelAll());w.preventDefault();var de=De(C.getState()),H=de.item,he=de.itemInputValue,J=de.itemUrl,Z=de.source;if(w.metaKey||w.ctrlKey)J!==void 0&&(Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z)),T.navigator.navigateNewTab({itemUrl:J,item:H,state:C.getState()}));else if(w.shiftKey)J!==void 0&&(Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z)),T.navigator.navigateNewWindow({itemUrl:J,item:H,state:C.getState()}));else if(!w.altKey){if(J!==void 0)return Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z)),void T.navigator.navigate({itemUrl:J,item:H,state:C.getState()});je(ye({event:w,nextState:{isOpen:!1},props:T,query:he,refresh:M,store:C},z)).then(function(){Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z))})}}})(F({event:P,props:f,refresh:a,store:h},y))},onFocus:m,onBlur:Ot,onClick:function(P){v.inputElement!==f.environment.document.activeElement||h.getState().isOpen||m(P)}},S)},getPanelProps:function(v){return F({onMouseDown:function(p){p.preventDefault()},onMouseLeave:function(){h.dispatch("mouseleave",null)}},v)},getListProps:function(v){var p=v||{},m=p.sourceIndex,g=ge(p,Wo);return F({role:"listbox","aria-labelledby":"".concat(d(f.id,m),"-label"),id:"".concat(d(f.id,m),"-list")},g)},getItemProps:function(v){var p=v.item,m=v.source,g=v.sourceIndex,_=ge(v,zo);return F({id:"".concat(d(f.id,g),"-item-").concat(p.__autocomplete_id),role:"option","aria-selected":h.getState().activeItemId===p.__autocomplete_id,onMouseMove:function(b){if(p.__autocomplete_id!==h.getState().activeItemId){h.dispatch("mousemove",p.__autocomplete_id);var S=De(h.getState());if(h.getState().activeItemId!==null&&S){var O=S.item,E=S.itemInputValue,k=S.itemUrl,P=S.source;P.onActive(F({event:b,item:O,itemInputValue:E,itemUrl:k,refresh:a,source:P,state:h.getState()},y))}}},onMouseDown:function(b){b.preventDefault()},onClick:function(b){var S=m.getItemInputValue({item:p,state:h.getState()}),O=m.getItemUrl({item:p,state:h.getState()});(O?Promise.resolve():je(F({event:b,nextState:{isOpen:!1},props:f,query:S,refresh:a,store:h},y))).then(function(){m.onSelect(F({event:b,item:p,itemInputValue:S,itemUrl:O,refresh:a,source:m,state:h.getState()},y))})}},_)}}}(_e({props:n,refresh:u,store:r,navigator:n.navigator},o));function u(){return je(_e({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,navigator:n.navigator,query:r.getState().query,refresh:u,store:r},o))}if(t.insights&&!n.plugins.some(function(l){return l.name==="aa.algoliaInsightsPlugin"})){var s=typeof t.insights=="boolean"?{}:t.insights;n.plugins.push(Do(s))}return n.plugins.forEach(function(l){var f;return(f=l.subscribe)===null||f===void 0?void 0:f.call(l,_e(_e({},o),{},{navigator:n.navigator,refresh:u,onSelect:function(a){e.push({onSelect:a})},onActive:function(a){e.push({onActive:a})},onResolve:function(a){e.push({onResolve:a})}}))}),function(l){var f,a,h=l.metadata,y=l.environment;if(!((f=y.navigator)===null||f===void 0||(a=f.userAgent)===null||a===void 0)&&a.includes("Algolia Crawler")){var d=y.document.createElement("meta"),v=y.document.querySelector("head");d.name="algolia:metadata",setTimeout(function(){d.content=JSON.stringify(h),v.appendChild(d)},0)}}({metadata:Zo({plugins:n.plugins,options:t}),environment:n.environment}),_e(_e({refresh:u,navigator:n.navigator},i),o)}function ei(t){var e=t.translations,n=(e===void 0?{}:e).searchByText,r=n===void 0?"Search by":n;return c.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},c.createElement("span",{className:"DocSearch-Label"},r),c.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},c.createElement("defs",null,c.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),c.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),c.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),c.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),c.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),c.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),c.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),c.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),c.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),c.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function yt(t){return c.createElement("svg",{width:"15",height:"15","aria-label":t.ariaLabel,role:"img"},c.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},t.children))}function ti(t){var e=t.translations,n=e===void 0?{}:e,r=n.selectText,o=r===void 0?"to select":r,i=n.selectKeyAriaLabel,u=i===void 0?"Enter key":i,s=n.navigateText,l=s===void 0?"to navigate":s,f=n.navigateUpKeyAriaLabel,a=f===void 0?"Arrow up":f,h=n.navigateDownKeyAriaLabel,y=h===void 0?"Arrow down":h,d=n.closeText,v=d===void 0?"to close":d,p=n.closeKeyAriaLabel,m=p===void 0?"Escape key":p,g=n.searchByText,_=g===void 0?"Search by":g;return c.createElement(c.Fragment,null,c.createElement("div",{className:"DocSearch-Logo"},c.createElement(ei,{translations:{searchByText:_}})),c.createElement("ul",{className:"DocSearch-Commands"},c.createElement("li",null,c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:u},c.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),c.createElement("span",{className:"DocSearch-Label"},o)),c.createElement("li",null,c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:y},c.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:a},c.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),c.createElement("span",{className:"DocSearch-Label"},l)),c.createElement("li",null,c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:m},c.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),c.createElement("span",{className:"DocSearch-Label"},v))))}function ni(t){var e=t.hit,n=t.children;return c.createElement("a",{href:e.url},n)}function ri(){return c.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},c.createElement("g",{fill:"none",fillRule:"evenodd"},c.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},c.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),c.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},c.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}function oi(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),c.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function Jt(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function ii(){return c.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),c.createElement("path",{d:"M8 17l-6-6 6-6"})))}var ai=function(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function ci(t){switch(t.type){case"lvl1":return c.createElement(ai,null);case"content":return c.createElement(li,null);default:return c.createElement(ui,null)}}function ui(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function li(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Gn(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function si(){return c.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function fi(){return c.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}function mi(t){var e=t.translations,n=e===void 0?{}:e,r=n.titleText,o=r===void 0?"Unable to fetch results":r,i=n.helpText,u=i===void 0?"You might want to check your network connection.":i;return c.createElement("div",{className:"DocSearch-ErrorScreen"},c.createElement("div",{className:"DocSearch-Screen-Icon"},c.createElement(si,null)),c.createElement("p",{className:"DocSearch-Title"},o),c.createElement("p",{className:"DocSearch-Help"},u))}var pi=["translations"];function vi(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,pi),o=n.noResultsText,i=o===void 0?"No results for":o,u=n.suggestedQueryText,s=u===void 0?"Try searching for":u,l=n.reportMissingResultsText,f=l===void 0?"Believe this query should return results?":l,a=n.reportMissingResultsLinkText,h=a===void 0?"Let us know.":a,y=r.state.context.searchSuggestions;return c.createElement("div",{className:"DocSearch-NoResults"},c.createElement("div",{className:"DocSearch-Screen-Icon"},c.createElement(fi,null)),c.createElement("p",{className:"DocSearch-Title"},i,' "',c.createElement("strong",null,r.state.query),'"'),y&&y.length>0&&c.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},c.createElement("p",{className:"DocSearch-Help"},s,":"),c.createElement("ul",null,y.slice(0,3).reduce(function(d,v){return[].concat(function(p){return function(m){if(Array.isArray(m))return Wt(m)}(p)||function(m){if(typeof Symbol<"u"&&m[Symbol.iterator]!=null||m["@@iterator"]!=null)return Array.from(m)}(p)||Dr(p)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}(d),[c.createElement("li",{key:v},c.createElement("button",{className:"DocSearch-Prefill",key:v,type:"button",onClick:function(){r.setQuery(v.toLowerCase()+" "),r.refresh(),r.inputRef.current.focus()}},v))])},[]))),r.getMissingResultsUrl&&c.createElement("p",{className:"DocSearch-Help"},"".concat(f," "),c.createElement("a",{href:r.getMissingResultsUrl({query:r.state.query}),target:"_blank",rel:"noopener noreferrer"},h)))}var di=["hit","attribute","tagName"];function Yn(t,e){return e.split(".").reduce(function(n,r){return n!=null&&n[r]?n[r]:null},t)}function Pe(t){var e=t.hit,n=t.attribute,r=t.tagName;return ee(r===void 0?"span":r,Fe(Fe({},ve(t,di)),{},{dangerouslySetInnerHTML:{__html:Yn(e,"_snippetResult.".concat(n,".value"))||Yn(e,n)}}))}function $t(t){return t.collection&&t.collection.items.length!==0?c.createElement("section",{className:"DocSearch-Hits"},c.createElement("div",{className:"DocSearch-Hit-source"},t.title),c.createElement("ul",t.getListProps(),t.collection.items.map(function(e,n){return c.createElement(hi,B({key:[t.title,e.objectID].join(":"),item:e,index:n},t))}))):null}function hi(t){var e=t.item,n=t.index,r=t.renderIcon,o=t.renderAction,i=t.getItemProps,u=t.onItemClick,s=t.collection,l=t.hitComponent,f=be(c.useState(!1),2),a=f[0],h=f[1],y=be(c.useState(!1),2),d=y[0],v=y[1],p=c.useRef(null),m=l;return c.createElement("li",B({className:["DocSearch-Hit",e.__docsearch_parent&&"DocSearch-Hit--Child",a&&"DocSearch-Hit--deleting",d&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){p.current&&p.current()}},i({item:e,source:s.source,onClick:function(g){u(e,g)}})),c.createElement(m,{hit:e},c.createElement("div",{className:"DocSearch-Hit-Container"},r({item:e,index:n}),e.hierarchy[e.type]&&e.type==="lvl1"&&c.createElement("div",{className:"DocSearch-Hit-content-wrapper"},c.createElement(Pe,{className:"DocSearch-Hit-title",hit:e,attribute:"hierarchy.lvl1"}),e.content&&c.createElement(Pe,{className:"DocSearch-Hit-path",hit:e,attribute:"content"})),e.hierarchy[e.type]&&(e.type==="lvl2"||e.type==="lvl3"||e.type==="lvl4"||e.type==="lvl5"||e.type==="lvl6")&&c.createElement("div",{className:"DocSearch-Hit-content-wrapper"},c.createElement(Pe,{className:"DocSearch-Hit-title",hit:e,attribute:"hierarchy.".concat(e.type)}),c.createElement(Pe,{className:"DocSearch-Hit-path",hit:e,attribute:"hierarchy.lvl1"})),e.type==="content"&&c.createElement("div",{className:"DocSearch-Hit-content-wrapper"},c.createElement(Pe,{className:"DocSearch-Hit-title",hit:e,attribute:"content"}),c.createElement(Pe,{className:"DocSearch-Hit-path",hit:e,attribute:"hierarchy.lvl1"})),o({item:e,runDeleteTransition:function(g){h(!0),p.current=g},runFavoriteTransition:function(g){v(!0),p.current=g}}))))}function Xn(t,e,n){return t.reduce(function(r,o){var i=e(o);return r.hasOwnProperty(i)||(r[i]=[]),r[i].length<(n||5)&&r[i].push(o),r},{})}function er(t){return t}function gt(t){return t.button===1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}function yi(){}var qr=/(|<\/mark>)/g,gi=RegExp(qr.source);function Lr(t){var e,n,r=t;if(!r.__docsearch_parent&&!t._highlightResult)return t.hierarchy.lvl0;var o=r.__docsearch_parent?(e=r.__docsearch_parent)===null||e===void 0||(e=e._highlightResult)===null||e===void 0||(e=e.hierarchy)===null||e===void 0?void 0:e.lvl0:(n=t._highlightResult)===null||n===void 0||(n=n.hierarchy)===null||n===void 0?void 0:n.lvl0;return o?o.value&&gi.test(o.value)?o.value.replace(qr,""):o.value:t.hierarchy.lvl0}function _i(t){return c.createElement("div",{className:"DocSearch-Dropdown-Container"},t.state.collections.map(function(e){if(e.items.length===0)return null;var n=Lr(e.items[0]);return c.createElement($t,B({},t,{key:e.source.sourceId,title:n,collection:e,renderIcon:function(r){var o,i=r.item,u=r.index;return c.createElement(c.Fragment,null,i.__docsearch_parent&&c.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},c.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},i.__docsearch_parent!==((o=e.items[u+1])===null||o===void 0?void 0:o.__docsearch_parent)?c.createElement("path",{d:"M8 6v21M20 27H8.3"}):c.createElement("path",{d:"M8 6v42M20 27H8.3"}))),c.createElement("div",{className:"DocSearch-Hit-icon"},c.createElement(ci,{type:i.type})))},renderAction:function(){return c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement(ii,null))}}))}),t.resultsFooterComponent&&c.createElement("section",{className:"DocSearch-HitsFooter"},c.createElement(t.resultsFooterComponent,{state:t.state})))}var bi=["translations"];function Si(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,bi),o=n.recentSearchesTitle,i=o===void 0?"Recent":o,u=n.noRecentSearchesText,s=u===void 0?"No recent searches":u,l=n.saveRecentSearchButtonTitle,f=l===void 0?"Save this search":l,a=n.removeRecentSearchButtonTitle,h=a===void 0?"Remove this search from history":a,y=n.favoriteSearchesTitle,d=y===void 0?"Favorite":y,v=n.removeFavoriteSearchButtonTitle,p=v===void 0?"Remove this search from favorites":v;return r.state.status==="idle"&&r.hasCollections===!1?r.disableUserPersonalization?null:c.createElement("div",{className:"DocSearch-StartScreen"},c.createElement("p",{className:"DocSearch-Help"},s)):r.hasCollections===!1?null:c.createElement("div",{className:"DocSearch-Dropdown-Container"},c.createElement($t,B({},r,{title:i,collection:r.state.collections[0],renderIcon:function(){return c.createElement("div",{className:"DocSearch-Hit-icon"},c.createElement(oi,null))},renderAction:function(m){var g=m.item,_=m.runFavoriteTransition,b=m.runDeleteTransition;return c.createElement(c.Fragment,null,c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(S){S.preventDefault(),S.stopPropagation(),_(function(){r.favoriteSearches.add(g),r.recentSearches.remove(g),r.refresh()})}},c.createElement(Gn,null))),c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(S){S.preventDefault(),S.stopPropagation(),b(function(){r.recentSearches.remove(g),r.refresh()})}},c.createElement(Jt,null))))}})),c.createElement($t,B({},r,{title:d,collection:r.state.collections[1],renderIcon:function(){return c.createElement("div",{className:"DocSearch-Hit-icon"},c.createElement(Gn,null))},renderAction:function(m){var g=m.item,_=m.runDeleteTransition;return c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement("button",{className:"DocSearch-Hit-action-button",title:p,type:"submit",onClick:function(b){b.preventDefault(),b.stopPropagation(),_(function(){r.favoriteSearches.remove(g),r.refresh()})}},c.createElement(Jt,null)))}})))}var Oi=["translations"],wi=c.memo(function(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,Oi);if(r.state.status==="error")return c.createElement(mi,{translations:n==null?void 0:n.errorScreen});var o=r.state.collections.some(function(i){return i.items.length>0});return r.state.query?o===!1?c.createElement(vi,B({},r,{translations:n==null?void 0:n.noResultsScreen})):c.createElement(_i,r):c.createElement(Si,B({},r,{hasCollections:o,translations:n==null?void 0:n.startScreen}))},function(t,e){return e.state.status==="loading"||e.state.status==="stalled"}),Ei=["translations"];function ji(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,Ei),o=n.resetButtonTitle,i=o===void 0?"Clear the query":o,u=n.resetButtonAriaLabel,s=u===void 0?"Clear the query":u,l=n.cancelButtonText,f=l===void 0?"Cancel":l,a=n.cancelButtonAriaLabel,h=a===void 0?"Cancel":a,y=n.searchInputLabel,d=y===void 0?"Search":y,v=r.getFormProps({inputElement:r.inputRef.current}).onReset;return c.useEffect(function(){r.autoFocus&&r.inputRef.current&&r.inputRef.current.focus()},[r.autoFocus,r.inputRef]),c.useEffect(function(){r.isFromSelection&&r.inputRef.current&&r.inputRef.current.select()},[r.isFromSelection,r.inputRef]),c.createElement(c.Fragment,null,c.createElement("form",{className:"DocSearch-Form",onSubmit:function(p){p.preventDefault()},onReset:v},c.createElement("label",B({className:"DocSearch-MagnifierLabel"},r.getLabelProps()),c.createElement(kr,null),c.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},d)),c.createElement("div",{className:"DocSearch-LoadingIndicator"},c.createElement(ri,null)),c.createElement("input",B({className:"DocSearch-Input",ref:r.inputRef},r.getInputProps({inputElement:r.inputRef.current,autoFocus:r.autoFocus,maxLength:64}))),c.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":s,hidden:!r.state.query},c.createElement(Jt,null))),c.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":h,onClick:r.onClose},f))}var Pi=["_highlightResult","_snippetResult"];function tr(t){var e=t.key,n=t.limit,r=n===void 0?5:n,o=function(u){return function(){var s="__TEST_KEY__";try{return localStorage.setItem(s,""),localStorage.removeItem(s),!0}catch{return!1}}()===!1?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(s){return window.localStorage.setItem(u,JSON.stringify(s))},getItem:function(){var s=window.localStorage.getItem(u);return s?JSON.parse(s):[]}}}(e),i=o.getItem().slice(0,r);return{add:function(u){var s=u,l=(s._highlightResult,s._snippetResult,ve(s,Pi)),f=i.findIndex(function(a){return a.objectID===l.objectID});f>-1&&i.splice(f,1),i.unshift(l),i=i.slice(0,r),o.setItem(i)},remove:function(u){i=i.filter(function(s){return s.objectID!==u.objectID}),o.setItem(i)},getAll:function(){return i}}}function Ii(t){var e,n="algoliasearch-client-js-".concat(t.key),r=function(){return e===void 0&&(e=t.localStorage||window.localStorage),e},o=function(){return JSON.parse(r().getItem(n)||"{}")},i=function(u){r().setItem(n,JSON.stringify(u))};return{get:function(u,s){var l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){(function(){var a=t.timeToLive?1e3*t.timeToLive:null,h=o(),y=Object.fromEntries(Object.entries(h).filter(function(v){return Ie(v,2)[1].timestamp!==void 0}));if(i(y),a){var d=Object.fromEntries(Object.entries(y).filter(function(v){var p=Ie(v,2)[1],m=new Date().getTime();return!(p.timestamp+a2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return o().then(function(u){return Promise.all([u,i.miss(u)])}).then(function(u){return Ie(u,1)[0]})},set:function(r,o){return Promise.resolve(o)},delete:function(r){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(r,o){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(r,o,i).catch(function(){return Me({caches:e}).get(r,o,i)})},set:function(r,o){return n.set(r,o).catch(function(){return Me({caches:e}).set(r,o)})},delete:function(r){return n.delete(r).catch(function(){return Me({caches:e}).delete(r)})},clear:function(){return n.clear().catch(function(){return Me({caches:e}).clear()})}}}function Lt(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},e={};return{get:function(n,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},i=JSON.stringify(n);if(i in e)return Promise.resolve(t.serializable?JSON.parse(e[i]):e[i]);var u=r(),s=o&&o.miss||function(){return Promise.resolve()};return u.then(function(l){return s(l)}).then(function(){return u})},set:function(n,r){return e[JSON.stringify(n)]=t.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(n){return delete e[JSON.stringify(n)],Promise.resolve()},clear:function(){return e={},Promise.resolve()}}}function Di(t){for(var e=t.length-1;e>0;e--){var n=Math.floor(Math.random()*(e+1)),r=t[e];t[e]=t[n],t[n]=r}return t}function Mr(t,e){return e&&Object.keys(e).forEach(function(n){t[n]=e[n](t)}),t}function Pt(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r0?r:void 0,timeout:n.timeout||e,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}var ke={Read:1,Write:2,Any:3};function rr(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;return N(N({},t),{},{status:e,lastUpdate:Date.now()})}function Hr(t){return typeof t=="string"?{protocol:"https",url:t,accept:ke.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||ke.Any}}var It="POST";function or(t,e,n,r){var o=[],i=function(y,d){if(y.method!=="GET"&&(y.data!==void 0||d.data!==void 0)){var v=Array.isArray(y.data)?y.data:N(N({},y.data),d.data);return JSON.stringify(v)}}(n,r),u=function(y,d){var v=N(N({},y.headers),d.headers),p={};return Object.keys(v).forEach(function(m){var g=v[m];p[m.toLowerCase()]=g}),p}(t,r),s=n.method,l=n.method!=="GET"?{}:N(N({},n.data),r.data),f=N(N(N({"x-algolia-agent":t.userAgent.value},t.queryParameters),l),r.queryParameters),a=0,h=function y(d,v){var p=d.pop();if(p===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:ir(o)};var m={data:i,headers:u,method:s,url:Ci(p,n.path,f),connectTimeout:v(a,t.timeouts.connect),responseTimeout:v(a,r.timeout)},g=function(b){var S={request:m,response:b,host:p,triesLeft:d.length};return o.push(S),S},_={onSuccess:function(b){return function(S){try{return JSON.parse(S.content)}catch(O){throw function(E,k){return{name:"DeserializationError",message:E,response:k}}(O.message,S)}}(b)},onRetry:function(b){var S=g(b);return b.isTimedOut&&a++,Promise.all([t.logger.info("Retryable failure",Fr(S)),t.hostsCache.set(p,rr(p,b.isTimedOut?3:2))]).then(function(){return y(d,v)})},onFail:function(b){throw g(b),function(S,O){var E=S.content,k=S.status,P=E;try{P=JSON.parse(E).message}catch{}return function(I,w,T){return{name:"ApiError",message:I,status:w,transporterStackTrace:T}}(P,k,O)}(b,ir(o))}};return t.requester.send(m).then(function(b){return function(S,O){return function(E){var k=E.status;return E.isTimedOut||function(P){var I=P.isTimedOut,w=P.status;return!I&&~~w==0}(E)||~~(k/100)!=2&&~~(k/100)!=4}(S)?O.onRetry(S):~~(S.status/100)==2?O.onSuccess(S):O.onFail(S)}(b,_)})};return function(y,d){return Promise.all(d.map(function(v){return y.get(v,function(){return Promise.resolve(rr(v))})})).then(function(v){var p=v.filter(function(_){return function(b){return b.status===1||Date.now()-b.lastUpdate>12e4}(_)}),m=v.filter(function(_){return function(b){return b.status===3&&Date.now()-b.lastUpdate<=12e4}(_)}),g=[].concat(_t(p),_t(m));return{getTimeout:function(_,b){return(m.length===0&&_===0?1:m.length+3+_)*b},statelessHosts:g.length>0?g.map(function(_){return Hr(_)}):d}})}(t.hostsCache,e).then(function(y){return h(_t(y.statelessHosts).reverse(),y.getTimeout)})}function ki(t){var e={value:"Algolia for JavaScript (".concat(t,")"),add:function(n){var r="; ".concat(n.segment).concat(n.version!==void 0?" (".concat(n.version,")"):"");return e.value.indexOf(r)===-1&&(e.value="".concat(e.value).concat(r)),e}};return e}function Ci(t,e,n){var r=Ur(n),o="".concat(t.protocol,"://").concat(t.url,"/").concat(e.charAt(0)==="/"?e.substr(1):e);return r.length&&(o+="?".concat(r)),o}function Ur(t){return Object.keys(t).map(function(e){return Pt("%s=%s",e,(n=t[e],Object.prototype.toString.call(n)==="[object Object]"||Object.prototype.toString.call(n)==="[object Array]"?JSON.stringify(t[e]):t[e]));var n}).join("&")}function ir(t){return t.map(function(e){return Fr(e)})}function Fr(t){var e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return N(N({},t),{},{request:N(N({},t.request),{},{headers:N(N({},t.request.headers),e)})})}var Ai=function(t){return function(e,n){return e.method==="GET"?t.transporter.read(e,n):t.transporter.write(e,n)}},Br=function(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Mr({transporter:t.transporter,appId:t.appId,indexName:e},n.methods)}},ar=function(t){return function(e,n){var r=e.map(function(o){return N(N({},o),{},{params:Ur(o.params||{})})});return t.transporter.read({method:It,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)}},cr=function(t){return function(e,n){return Promise.all(e.map(function(r){var o=r.params,i=o.facetName,u=o.facetQuery,s=function(l,f){if(l==null)return{};var a,h,y=function(v,p){if(v==null)return{};var m,g,_={},b=Object.keys(v);for(g=0;g=0||(_[m]=v[m]);return _}(l,f);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(l);for(h=0;h=0||Object.prototype.propertyIsEnumerable.call(l,a)&&(y[a]=l[a])}return y}(o,mo);return Br(t)(r.indexName,{methods:{searchForFacetValues:Vr}}).searchForFacetValues(i,u,N(N({},n),s))}))}},xi=function(t){return function(e,n,r){return t.transporter.read({method:It,path:Pt("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:n},cacheable:!0},r)}},Ni=function(t){return function(e,n){return t.transporter.read({method:It,path:Pt("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},n)}},Vr=function(t){return function(e,n,r){return t.transporter.read({method:It,path:Pt("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:n},cacheable:!0},r)}};function Kr(t,e,n){var r={appId:t,apiKey:e,timeouts:{connect:1,read:2,write:30},requester:{send:function(o){return new Promise(function(i){var u=new XMLHttpRequest;u.open(o.method,o.url,!0),Object.keys(o.headers).forEach(function(a){return u.setRequestHeader(a,o.headers[a])});var s,l=function(a,h){return setTimeout(function(){u.abort(),i({status:0,content:h,isTimedOut:!0})},1e3*a)},f=l(o.connectTimeout,"Connection timeout");u.onreadystatechange=function(){u.readyState>u.OPENED&&s===void 0&&(clearTimeout(f),s=l(o.responseTimeout,"Socket timeout"))},u.onerror=function(){u.status===0&&(clearTimeout(f),clearTimeout(s),i({content:u.responseText||"Network request failed",status:u.status,isTimedOut:!1}))},u.onload=function(){clearTimeout(f),clearTimeout(s),i({content:u.responseText,status:u.status,isTimedOut:!1})},u.send(o.data)})}},logger:{debug:function(o,i){return Promise.resolve()},info:function(o,i){return Promise.resolve()},error:function(o,i){return console.error(o,i),Promise.resolve()}},responsesCache:Lt(),requestsCache:Lt({serializable:!1}),hostsCache:Me({caches:[Ii({key:"4.19.1-".concat(t)}),Lt()]}),userAgent:ki("4.19.1").add({segment:"Browser",version:"lite"}),authMode:0};return function(o){var i=o.appId,u=function(f,a,h){var y={"x-algolia-api-key":h,"x-algolia-application-id":a};return{headers:function(){return f===1?y:{}},queryParameters:function(){return f===0?y:{}}}}(o.authMode!==void 0?o.authMode:1,i,o.apiKey),s=function(f){var a=f.hostsCache,h=f.logger,y=f.requester,d=f.requestsCache,v=f.responsesCache,p=f.timeouts,m=f.userAgent,g=f.hosts,_=f.queryParameters,b={hostsCache:a,logger:h,requester:y,requestsCache:d,responsesCache:v,timeouts:p,userAgent:m,headers:f.headers,queryParameters:_,hosts:g.map(function(S){return Hr(S)}),read:function(S,O){var E=nr(O,b.timeouts.read),k=function(){return or(b,b.hosts.filter(function(I){return(I.accept&ke.Read)!=0}),S,E)};if((E.cacheable!==void 0?E.cacheable:S.cacheable)!==!0)return k();var P={request:S,mappedRequestOptions:E,transporter:{queryParameters:b.queryParameters,headers:b.headers}};return b.responsesCache.get(P,function(){return b.requestsCache.get(P,function(){return b.requestsCache.set(P,k()).then(function(I){return Promise.all([b.requestsCache.delete(P),I])},function(I){return Promise.all([b.requestsCache.delete(P),Promise.reject(I)])}).then(function(I){var w=Ie(I,2);return w[0],w[1]})})},{miss:function(I){return b.responsesCache.set(P,I)}})},write:function(S,O){return or(b,b.hosts.filter(function(E){return(E.accept&ke.Write)!=0}),S,nr(O,b.timeouts.write))}};return b}(N(N({hosts:[{url:"".concat(i,"-dsn.algolia.net"),accept:ke.Read},{url:"".concat(i,".algolia.net"),accept:ke.Write}].concat(Di([{url:"".concat(i,"-1.algolianet.com")},{url:"".concat(i,"-2.algolianet.com")},{url:"".concat(i,"-3.algolianet.com")}]))},o),{},{headers:N(N({},u.headers()),{},{"content-type":"application/x-www-form-urlencoded"},o.headers),queryParameters:N(N({},u.queryParameters()),o.queryParameters)})),l={transporter:s,appId:i,addAlgoliaAgent:function(f,a){s.userAgent.add({segment:f,version:a})},clearCache:function(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(function(){})}};return Mr(l,o.methods)}(N(N(N({},r),n),{},{methods:{search:ar,searchForFacetValues:cr,multipleQueries:ar,multipleSearchForFacetValues:cr,customRequest:Ai,initIndex:function(o){return function(i){return Br(o)(i,{methods:{search:Ni,searchForFacetValues:Vr,findAnswers:xi}})}}}}))}Kr.version="4.19.1";var Ti=["footer","searchBox"];function Ri(t){var e=t.appId,n=t.apiKey,r=t.indexName,o=t.placeholder,i=o===void 0?"Search docs":o,u=t.searchParameters,s=t.maxResultsPerGroup,l=t.onClose,f=l===void 0?yi:l,a=t.transformItems,h=a===void 0?er:a,y=t.hitComponent,d=y===void 0?ni:y,v=t.resultsFooterComponent,p=v===void 0?function(){return null}:v,m=t.navigator,g=t.initialScrollY,_=g===void 0?0:g,b=t.transformSearchClient,S=b===void 0?er:b,O=t.disableUserPersonalization,E=O!==void 0&&O,k=t.initialQuery,P=k===void 0?"":k,I=t.translations,w=I===void 0?{}:I,T=t.getMissingResultsUrl,M=t.insights,C=M!==void 0&&M,z=w.footer,ae=w.searchBox,at=ve(w,Ti),de=be(c.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),H=de[0],he=de[1],J=c.useRef(null),Z=c.useRef(null),L=c.useRef(null),ne=c.useRef(null),$=c.useRef(null),V=c.useRef(10),ce=c.useRef(typeof window<"u"?window.getSelection().toString().slice(0,64):"").current,Q=c.useRef(P||ce).current,Se=function(A,R,U){return c.useMemo(function(){var W=Kr(A,R);return W.addAlgoliaAgent("docsearch","3.6.2"),/docsearch.js \(.*\)/.test(W.transporter.userAgent.value)===!1&&W.addAlgoliaAgent("docsearch-react","3.6.2"),U(W)},[A,R,U])}(e,n,S),ue=c.useRef(tr({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(r),limit:10})).current,G=c.useRef(tr({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(r),limit:ue.getAll().length===0?7:4})).current,Y=c.useCallback(function(A){if(!E){var R=A.type==="content"?A.__docsearch_parent:A;R&&ue.getAll().findIndex(function(U){return U.objectID===R.objectID})===-1&&G.add(R)}},[ue,G,E]),ct=c.useCallback(function(A){if(H.context.algoliaInsightsPlugin&&A.__autocomplete_id){var R=A,U={eventName:"Item Selected",index:R.__autocomplete_indexName,items:[R],positions:[A.__autocomplete_id],queryID:R.__autocomplete_queryID};H.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(U)}},[H.context.algoliaInsightsPlugin]),le=c.useMemo(function(){return Xo({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:Q,context:{searchSuggestions:[]}},insights:C,navigator:m,onStateChange:function(A){he(A.state)},getSources:function(A){var R=A.query,U=A.state,W=A.setContext,se=A.setStatus;if(!R)return E?[]:[{sourceId:"recentSearches",onSelect:function(q){var X=q.item,Ne=q.event;Y(X),gt(Ne)||f()},getItemUrl:function(q){return q.item.url},getItems:function(){return G.getAll()}},{sourceId:"favoriteSearches",onSelect:function(q){var X=q.item,Ne=q.event;Y(X),gt(Ne)||f()},getItemUrl:function(q){return q.item.url},getItems:function(){return ue.getAll()}}];var fe=!!C;return Se.search([{query:R,indexName:r,params:Fe({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(V.current),"hierarchy.lvl2:".concat(V.current),"hierarchy.lvl3:".concat(V.current),"hierarchy.lvl4:".concat(V.current),"hierarchy.lvl5:".concat(V.current),"hierarchy.lvl6:".concat(V.current),"content:".concat(V.current)],snippetEllipsisText:"…",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:fe},u)}]).catch(function(q){throw q.name==="RetryError"&&se("error"),q}).then(function(q){var X=q.results[0],Ne=X.hits,Jr=X.nbHits,Dt=Xn(Ne,function(kt){return Lr(kt)},s);U.context.searchSuggestions.length0&&(en(),$.current&&$.current.focus())},[Q,en]),c.useEffect(function(){function A(){if(Z.current){var R=.01*window.innerHeight;Z.current.style.setProperty("--docsearch-vh","".concat(R,"px"))}}return A(),window.addEventListener("resize",A),function(){window.removeEventListener("resize",A)}},[]),c.createElement("div",B({ref:J},zr({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container",H.status==="stalled"&&"DocSearch-Container--Stalled",H.status==="error"&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(A){A.target===A.currentTarget&&f()}}),c.createElement("div",{className:"DocSearch-Modal",ref:Z},c.createElement("header",{className:"DocSearch-SearchBar",ref:L},c.createElement(ji,B({},le,{state:H,autoFocus:Q.length===0,inputRef:$,isFromSelection:!!Q&&Q===ce,translations:ae,onClose:f}))),c.createElement("div",{className:"DocSearch-Dropdown",ref:ne},c.createElement(wi,B({},le,{indexName:r,state:H,hitComponent:d,resultsFooterComponent:p,disableUserPersonalization:E,recentSearches:G,favoriteSearches:ue,inputRef:$,translations:at,getMissingResultsUrl:T,onItemClick:function(A,R){ct(A),Y(A),gt(R)||f()}}))),c.createElement("footer",{className:"DocSearch-Footer"},c.createElement(ti,{translations:z}))))}function qi(t){var e,n,r=c.useRef(null),o=be(c.useState(!1),2),i=o[0],u=o[1],s=be(c.useState((t==null?void 0:t.initialQuery)||void 0),2),l=s[0],f=s[1],a=c.useCallback(function(){u(!0)},[u]),h=c.useCallback(function(){u(!1)},[u]);return function(y){var d=y.isOpen,v=y.onOpen,p=y.onClose,m=y.onInput,g=y.searchButtonRef;c.useEffect(function(){function _(b){var S;(b.keyCode===27&&d||((S=b.key)===null||S===void 0?void 0:S.toLowerCase())==="k"&&(b.metaKey||b.ctrlKey)||!function(O){var E=O.target,k=E.tagName;return E.isContentEditable||k==="INPUT"||k==="SELECT"||k==="TEXTAREA"}(b)&&b.key==="/"&&!d)&&(b.preventDefault(),d?p():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||v()),g&&g.current===document.activeElement&&m&&/[a-zA-Z0-9]/.test(String.fromCharCode(b.keyCode))&&m(b)}return window.addEventListener("keydown",_),function(){window.removeEventListener("keydown",_)}},[d,v,p,m,g])}({isOpen:i,onOpen:a,onClose:h,onInput:c.useCallback(function(y){u(!0),f(y.key)},[u,f]),searchButtonRef:r}),c.createElement(c.Fragment,null,c.createElement(yo,{ref:r,translations:t==null||(e=t.translations)===null||e===void 0?void 0:e.button,onClick:a}),i&&Er(c.createElement(Ri,B({},t,{initialScrollY:window.scrollY,initialQuery:l,translations:t==null||(n=t.translations)===null||n===void 0?void 0:n.modal,onClose:h})),document.body))}function Li(t){Pr(c.createElement(qi,Mt({},t,{transformSearchClient:function(e){return e.addAlgoliaAgent("docsearch.js","3.6.2"),t.transformSearchClient?t.transformSearchClient(e):e}})),function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:window;return typeof e=="string"?n.document.querySelector(e):e}(t.container,t.environment))}export{Li as default}; diff --git a/assets/index.html-CD_6dpmJ.js b/assets/index.html-CD_6dpmJ.js new file mode 100644 index 000000000..782bf18a7 --- /dev/null +++ b/assets/index.html-CD_6dpmJ.js @@ -0,0 +1 @@ +import{_ as o,c as t,a as n,o as a}from"./app-9HBJsLu_.js";const r={};function i(c,e){return a(),t("div",null,e[0]||(e[0]=[n('

    Introduction

    What's the Cookbook for?

    • We are introducing essential concepts in the Guide, but you may not know how to dig deeper.
    • We are listing APIs in the Reference, but you may not know how to take full advantage of them.

    So here comes the Cookbook.

    Each recipe will focus on one specific aspect, providing more detailed examples to show you the usages and possibilities of VuePress.

    ',5)]))}const d=o(r,[["render",i],["__file","index.html.vue"]]),l=JSON.parse(`{"path":"/advanced/cookbook/","title":"Introduction","lang":"en-US","frontmatter":{"description":"Introduction What's the Cookbook for? We are introducing essential concepts in the Guide, but you may not know how to dig deeper. We are listing APIs in the Reference, but you m...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/advanced/cookbook/"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/advanced/cookbook/"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Introduction"}],["meta",{"property":"og:description","content":"Introduction What's the Cookbook for? We are introducing essential concepts in the Guide, but you may not know how to dig deeper. We are listing APIs in the Reference, but you m..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-12-03T14:44:37.000Z"}],["meta",{"property":"article:modified_time","content":"2023-12-03T14:44:37.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Introduction\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-12-03T14:44:37.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"What's the Cookbook for?","slug":"what-s-the-cookbook-for","link":"#what-s-the-cookbook-for","children":[]}],"git":{"updatedTime":1701614677000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":1}]},"autoDesc":true,"filePathRelative":"advanced/cookbook/README.md"}`);export{d as comp,l as data}; diff --git a/assets/index.html-CoimyeYp.js b/assets/index.html-CoimyeYp.js new file mode 100644 index 000000000..ec2b84a23 --- /dev/null +++ b/assets/index.html-CoimyeYp.js @@ -0,0 +1 @@ +import{_ as e,c as t,a,o as r}from"./app-9HBJsLu_.js";const n={};function c(s,o){return r(),t("div",null,o[0]||(o[0]=[a('

    介绍

    Cookbook 的目的是什么?

    • 我们在 指南 中介绍了基本概念,但你可能不知道怎么才能了解得更深入。
    • 我们在 参考 中列出了 API ,但你可能不知道如何充分利用它们。

    于是就有了 Cookbook 。

    每个案例都会针对某个特定的方面,通过提供更详细的示例来向你展示 VuePress 的用法和其他可能性。

    ',5)]))}const p=e(n,[["render",c],["__file","index.html.vue"]]),l=JSON.parse('{"path":"/zh/advanced/cookbook/","title":"介绍","lang":"zh-CN","frontmatter":{"description":"介绍 Cookbook 的目的是什么? 我们在 指南 中介绍了基本概念,但你可能不知道怎么才能了解得更深入。 我们在 参考 中列出了 API ,但你可能不知道如何充分利用它们。 于是就有了 Cookbook 。 每个案例都会针对某个特定的方面,通过提供更详细的示例来向你展示 VuePress 的用法和其他可能性。","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/advanced/cookbook/"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/advanced/cookbook/"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"介绍"}],["meta",{"property":"og:description","content":"介绍 Cookbook 的目的是什么? 我们在 指南 中介绍了基本概念,但你可能不知道怎么才能了解得更深入。 我们在 参考 中列出了 API ,但你可能不知道如何充分利用它们。 于是就有了 Cookbook 。 每个案例都会针对某个特定的方面,通过提供更详细的示例来向你展示 VuePress 的用法和其他可能性。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-12-03T14:44:37.000Z"}],["meta",{"property":"article:modified_time","content":"2023-12-03T14:44:37.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"介绍\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-12-03T14:44:37.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Cookbook 的目的是什么?","slug":"cookbook-的目的是什么","link":"#cookbook-的目的是什么","children":[]}],"git":{"updatedTime":1701614677000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/advanced/cookbook/README.md"}');export{p as comp,l as data}; diff --git a/assets/index.html-DC9fO_G1.js b/assets/index.html-DC9fO_G1.js new file mode 100644 index 000000000..a072c58f4 --- /dev/null +++ b/assets/index.html-DC9fO_G1.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./app-9HBJsLu_.js";const r={};function n(a,i){return o(),t("div")}const l=e(r,[["render",n],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/","title":"Home","lang":"en-US","frontmatter":{"home":true,"title":"Home","heroImage":"/images/hero.png","actions":[{"text":"Get Started","link":"/guide/getting-started.html","type":"primary"},{"text":"Introduction","link":"/guide/introduction.html","type":"secondary"}],"features":[{"title":"Simplicity First","details":"Minimal setup with markdown-centered project structure helps you focus on writing."},{"title":"Vue-Powered","details":"Enjoy the dev experience of Vue, use Vue components in markdown, and develop custom themes with Vue."},{"title":"Performant","details":"VuePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded."},{"title":"Themes","details":"Providing a default theme out of the box. You can also choose a community theme or create your own one."},{"title":"Plugins","details":"Flexible plugin API, allowing plugins to provide lots of plug-and-play features for your site."},{"title":"Bundlers","details":"Recommended bundler is Vite, while Webpack is also supported. Choose the one you like!"}],"footer":"MIT Licensed | Copyright © 2018-present VuePress Community","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Home"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-07-25T05:28:18.000Z"}],["meta",{"property":"article:modified_time","content":"2024-07-25T05:28:18.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Home\\"}"]]},"headers":[],"git":{"updatedTime":1721885298000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":3},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"filePathRelative":"README.md"}');export{l as comp,m as data}; diff --git a/assets/index.html-mQpMmmTc.js b/assets/index.html-mQpMmmTc.js new file mode 100644 index 000000000..2d330eafd --- /dev/null +++ b/assets/index.html-mQpMmmTc.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./app-9HBJsLu_.js";const r={};function a(i,n){return o(),t("div")}const l=e(r,[["render",a],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/zh/","title":"首页","lang":"zh-CN","frontmatter":{"home":true,"title":"首页","heroImage":"/images/hero.png","actions":[{"text":"快速上手","link":"/zh/guide/getting-started.html","type":"primary"},{"text":"项目简介","link":"/zh/guide/introduction.html","type":"secondary"}],"features":[{"title":"简洁至上","details":"以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。"},{"title":"Vue 驱动","details":"享受 Vue 的开发体验,可以在 Markdown 中使用 Vue 组件,又可以使用 Vue 来开发自定义主题。"},{"title":"高性能","details":"VuePress 会为每个页面预渲染生成静态的 HTML,同时,每个页面被加载的时候,将作为 SPA 运行。"},{"title":"主题","details":"提供了一个开箱即用的默认主题。你也可以挑选一个社区主题,或者创建一个你自己的主题。"},{"title":"插件","details":"灵活的插件API,使得插件可以为你的站点提供许多即插即用的功能。"},{"title":"打包工具","details":"推荐的打包工具是 Vite ,但也同样支持使用 Webpack 。选一个你喜欢的来使用吧!"}],"footer":"MIT 协议 | 版权所有 © 2018-至今 VuePress 社区","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"首页"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-07-25T05:28:18.000Z"}],["meta",{"property":"article:modified_time","content":"2024-07-25T05:28:18.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"首页\\"}"]]},"headers":[],"git":{"updatedTime":1721885298000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":3},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":2}]},"filePathRelative":"zh/README.md"}');export{l as comp,m as data}; diff --git a/assets/introduction.html-CrZCSGtL.js b/assets/introduction.html-CrZCSGtL.js new file mode 100644 index 000000000..e3f7c867f --- /dev/null +++ b/assets/introduction.html-CrZCSGtL.js @@ -0,0 +1 @@ +import{_ as t,c as o,a as n,o as r}from"./app-9HBJsLu_.js";const a={};function i(s,e){return r(),o("div",null,e[0]||(e[0]=[n('

    Introduction

    VuePress is a markdown-centered static site generator. You can write your content (documentations, blogs, etc.) in Markdown, then VuePress will help you to generate a static site to host them.

    The purpose of creating VuePress was to support the documentation of Vue.js and its sub-projects, but now it has been helping a large amount of users to build their documentation, blogs, and other static sites.

    How It Works

    A VuePress site is in fact a single-page application (SPA) powered by Vue and Vue Router.

    Routes are generated according to the relative path of your markdown files. Each Markdown file is compiled into HTML with markdown-it and then processed as the template of a Vue component. This allows you to directly use Vue inside your Markdown files and is great when you need to embed dynamic content.

    During development, we start a normal dev-server, and serve the VuePress site as a normal SPA. If you’ve used Vue before, you will notice the familiar development experience when you are writing and developing with VuePress.

    During build, we create a server-rendered version of the VuePress site and render the corresponding HTML by virtually visiting each route. This approach is inspired by Nuxt's nuxt generate command and other projects like Gatsby.

    Why Not ...?

    Nuxt

    Nuxt is an outstanding Vue SSR framework, and it is capable of doing what VuePress does. But Nuxt is designed for building applications, while VuePress is more lightweight and focused on content-centric static sites.

    VitePress

    VitePress is the little brother of VuePress. It's also created and maintained by our Vue.js team. It's even more lightweight and faster than VuePress. However, as a tradeoff, it's more opinionated and less configurable. For example, it does not support plugins. But VitePress is powerful enough to make your content online if you don't need advanced customizations.

    It might not be an appropriate comparison, but you can take VuePress and VitePress as Laravel and Lumen.

    Docsify / Docute

    Both are great projects and also Vue-powered. Except they are both fully runtime-driven and therefore not SEO-friendly. If you don’t care for SEO and don’t want to mess with installing dependencies, these are still great choices.

    Hexo

    Hexo has been serving the Vue 2.x docs well. The biggest problem is that its theming system is static and string-based - we want to take advantage of Vue for both the layout and the interactivity. Also, Hexo’s Markdown rendering isn’t the most flexible to configure.

    GitBook

    We’ve been using GitBook for most of our sub project docs. The primary problem with GitBook is that its development reload performance is intolerable with a large amount of files. The default theme also has a pretty limiting navigation structure, and the theming system is, again, not Vue based. The team behind GitBook is also more focused on turning it into a commercial product rather than an open-source tool.

    ',20)]))}const l=t(a,[["render",i],["__file","introduction.html.vue"]]),c=JSON.parse('{"path":"/guide/introduction.html","title":"Introduction","lang":"en-US","frontmatter":{"description":"Introduction VuePress is a markdown-centered static site generator. You can write your content (documentations, blogs, etc.) in Markdown, then VuePress will help you to generate...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/guide/introduction.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/guide/introduction.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Introduction"}],["meta",{"property":"og:description","content":"Introduction VuePress is a markdown-centered static site generator. You can write your content (documentations, blogs, etc.) in Markdown, then VuePress will help you to generate..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-12-20T05:41:12.000Z"}],["meta",{"property":"article:modified_time","content":"2023-12-20T05:41:12.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Introduction\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-12-20T05:41:12.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"How It Works","slug":"how-it-works","link":"#how-it-works","children":[]},{"level":2,"title":"Why Not ...?","slug":"why-not","link":"#why-not","children":[{"level":3,"title":"Nuxt","slug":"nuxt","link":"#nuxt","children":[]},{"level":3,"title":"VitePress","slug":"vitepress","link":"#vitepress","children":[]},{"level":3,"title":"Docsify / Docute","slug":"docsify-docute","link":"#docsify-docute","children":[]},{"level":3,"title":"Hexo","slug":"hexo","link":"#hexo","children":[]},{"level":3,"title":"GitBook","slug":"gitbook","link":"#gitbook","children":[]}]}],"git":{"updatedTime":1703050872000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":1}]},"autoDesc":true,"filePathRelative":"guide/introduction.md"}');export{l as comp,c as data}; diff --git a/assets/introduction.html-DV4zKs5N.js b/assets/introduction.html-DV4zKs5N.js new file mode 100644 index 000000000..cd67a9522 --- /dev/null +++ b/assets/introduction.html-DV4zKs5N.js @@ -0,0 +1 @@ +import{_ as t,c as r,a as o,o as a}from"./app-9HBJsLu_.js";const n={};function s(i,e){return a(),r("div",null,e[0]||(e[0]=[o('

    介绍

    VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。

    VuePress 诞生的初衷是为了支持 Vue.js 及其子项目的文档需求,但是现在它已经在帮助大量用户构建他们的文档、博客和其他静态网站。

    它是如何工作的?

    一个 VuePress 站点本质上是一个由 VueVue Router 驱动的单页面应用 (SPA)。

    路由会根据你的 Markdown 文件的相对路径来自动生成。每个 Markdown 文件都通过 markdown-it 编译为 HTML ,然后将其作为 Vue 组件的模板。因此,你可以在 Markdown 文件中直接使用 Vue 语法,便于你嵌入一些动态内容。

    在开发过程中,我们启动一个常规的开发服务器 (dev-server) ,并将 VuePress 站点作为一个常规的 SPA。如果你以前使用过 Vue 的话,你在使用时会感受到非常熟悉的开发体验。

    在构建过程中,我们会为 VuePress 站点创建一个服务端渲染 (SSR) 的版本,然后通过虚拟访问每一条路径来渲染对应的 HTML 。这种做法的灵感来源于 Nuxtnuxt generate 命令,以及其他的一些项目,比如 Gatsby

    为什么不是 ...?

    Nuxt

    Nuxt 是一套出色的 Vue SSR 框架, VuePress 能做的事情,Nuxt 实际上也同样能够胜任。但 Nuxt 是为构建应用程序而生的,而 VuePress 则更为轻量化并且专注在以内容为中心的静态网站上。

    VitePress

    VitePress 是 VuePress 的孪生兄弟,它同样由 Vue.js 团队创建和维护。 VitePress 甚至比 VuePress 要更轻更快,但它在灵活性和可配置性上作出了一些让步,比如它不支持插件系统。当然,如果你没有进阶的定制化需求, VitePress 已经足够支持你将你的内容部署到线上。

    这个比喻可能不是很恰当,但是你可以把 VuePress 和 VitePress 的关系看作 Laravel 和 Lumen 。

    Docsify / Docute

    这两个项目同样都是基于 Vue,然而它们都是完全的运行时驱动,因此对 SEO 不够友好。如果你并不关注 SEO,同时也不想安装大量依赖,它们仍然是非常好的选择!

    Hexo

    Hexo 一直驱动着 Vue 2.x 的文档。Hexo 最大的问题在于他的主题系统太过于静态以及过度地依赖纯字符串,而我们十分希望能够好好地利用 Vue 来处理我们的布局和交互。同时,Hexo 在配置 Markdown 渲染方面的灵活性也不是最佳的。

    GitBook

    过去我们的子项目文档一直都在使用 GitBook 。 GitBook 最大的问题在于当文件很多时,每次编辑后的重新加载时间长得令人无法忍受。它的默认主题导航结构也比较有限制性,并且,主题系统也不是 Vue 驱动的。GitBook 背后的团队如今也更专注于将其打造为一个商业产品而不是开源工具。

    ',20)]))}const p=t(n,[["render",s],["__file","introduction.html.vue"]]),u=JSON.parse('{"path":"/zh/guide/introduction.html","title":"介绍","lang":"zh-CN","frontmatter":{"description":"介绍 VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。 VuePress 诞生的初衷是为了支持 Vue.js 及其子项目的文档需求,但是现在它已经在帮助大量用户构建他们的文档、博客和其他静态网站。 它是如何工作的...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/guide/introduction.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/guide/introduction.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"介绍"}],["meta",{"property":"og:description","content":"介绍 VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会帮助你生成一个静态网站来展示它们。 VuePress 诞生的初衷是为了支持 Vue.js 及其子项目的文档需求,但是现在它已经在帮助大量用户构建他们的文档、博客和其他静态网站。 它是如何工作的..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-12-20T05:41:12.000Z"}],["meta",{"property":"article:modified_time","content":"2023-12-20T05:41:12.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"介绍\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-12-20T05:41:12.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"它是如何工作的?","slug":"它是如何工作的","link":"#它是如何工作的","children":[]},{"level":2,"title":"为什么不是 ...?","slug":"为什么不是","link":"#为什么不是","children":[{"level":3,"title":"Nuxt","slug":"nuxt","link":"#nuxt","children":[]},{"level":3,"title":"VitePress","slug":"vitepress","link":"#vitepress","children":[]},{"level":3,"title":"Docsify / Docute","slug":"docsify-docute","link":"#docsify-docute","children":[]},{"level":3,"title":"Hexo","slug":"hexo","link":"#hexo","children":[]},{"level":3,"title":"GitBook","slug":"gitbook","link":"#gitbook","children":[]}]}],"git":{"updatedTime":1703050872000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/guide/introduction.md"}');export{p as comp,u as data}; diff --git a/assets/making-a-theme-extendable.html-DvtTFh8W.js b/assets/making-a-theme-extendable.html-DvtTFh8W.js new file mode 100644 index 000000000..0948e13f2 --- /dev/null +++ b/assets/making-a-theme-extendable.html-DvtTFh8W.js @@ -0,0 +1,30 @@ +import{_ as l,c as o,b as n,d as a,e as p,f as t,a as r,r as c,o as i}from"./app-9HBJsLu_.js";const d={};function y(D,s){const e=c("RouteLink");return i(),o("div",null,[s[3]||(s[3]=n("h1",{id:"开发一个可继承的主题",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#开发一个可继承的主题"},[n("span",null,"开发一个可继承的主题")])],-1)),s[4]||(s[4]=n("p",null,"有时用户可能希望对一个主题进行一些小改动,但是又不想 Fork 并修改整个项目。",-1)),n("p",null,[s[1]||(s[1]=a("借助于 ")),p(e,{to:"/zh/reference/theme-api.html"},{default:t(()=>s[0]||(s[0]=[a("主题 API")])),_:1}),s[2]||(s[2]=a(" ,你可以让用户继承你的主题,允许用户对你的主题进行改动。"))]),s[5]||(s[5]=r(`

    你肯定已经知道了如何 继承默认主题 。接下来我们将介绍如何让你的主题像默认主题一样被用户继承。

    布局插槽

    这种方式需要你来决定主题的哪些部分是可以被扩展的,它更适合用于一些常见的自定义需求,比如页眉或页脚。

    你只需要在你的布局文件中提供 slots ,并告诉用户如何使用它们即可:

    <template>
    +  <div class="my-theme-layout">
    +    <slot name="page-header" />
    +    <Content />
    +    <slot name="page-footer" />
    +  </div>
    +</template>

    组件别名

    这种方式需要你考虑清楚你的主题的哪些组件可以被替换,并且你需要将组件拆分到合适的粒度。

    首先,为你主题的可替换组件设置 alias 别名:

    import type { Theme } from 'vuepress/core'
    +import { getDirname, path } from 'vuepress/utils'
    +
    +const __dirname = getDirname(import.meta.url)
    +
    +export const fooTheme = (options): Theme => ({
    +  name: 'vuepress-theme-foo',
    +  alias: {
    +    // 为可替换的组件设置别名
    +    '@theme/Navbar.vue': path.resolve(__dirname, 'components/Navbar.vue'),
    +    '@theme/Sidebar.vue': path.resolve(__dirname, 'components/Sidebar.vue'),
    +  },
    +})

    然后,在你的主题中通过别名来使用这些组件:

    <script setup lang="ts">
    +import Navbar from '@theme/Navbar.vue'
    +import Sidebar from '@theme/Sidebar.vue'
    +</script>
    +
    +<template>
    +  <div class="my-theme-layout">
    +    <Navbar />
    +    <Sidebar />
    +    <Content />
    +  </div>
    +</template>

    这样,用户在继承或使用你的主题时,就可以通过覆盖 alias 来替换特定的组件了。

    `,12))])}const v=l(d,[["render",y],["__file","making-a-theme-extendable.html.vue"]]),C=JSON.parse('{"path":"/zh/advanced/cookbook/making-a-theme-extendable.html","title":"开发一个可继承的主题","lang":"zh-CN","frontmatter":{"description":"开发一个可继承的主题 有时用户可能希望对一个主题进行一些小改动,但是又不想 Fork 并修改整个项目。 借助于 ,你可以让用户继承你的主题,允许用户对你的主题进行改动。 你肯定已经知道了如何 继承默认主题 。接下来我们将介绍如何让你的主题像默认主题一样被用户继承。 布局插槽 这种方式需要你来决定主题的哪些部分是可以被扩展的,它更适合用于一些常见的自定义...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://vuepress.vuejs.org/advanced/cookbook/making-a-theme-extendable.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/zh/advanced/cookbook/making-a-theme-extendable.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"开发一个可继承的主题"}],["meta",{"property":"og:description","content":"开发一个可继承的主题 有时用户可能希望对一个主题进行一些小改动,但是又不想 Fork 并修改整个项目。 借助于 ,你可以让用户继承你的主题,允许用户对你的主题进行改动。 你肯定已经知道了如何 继承默认主题 。接下来我们将介绍如何让你的主题像默认主题一样被用户继承。 布局插槽 这种方式需要你来决定主题的哪些部分是可以被扩展的,它更适合用于一些常见的自定义..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-31T07:59:53.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-31T07:59:53.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"开发一个可继承的主题\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-31T07:59:53.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"布局插槽","slug":"布局插槽","link":"#布局插槽","children":[]},{"level":2,"title":"组件别名","slug":"组件别名","link":"#组件别名","children":[]}],"git":{"updatedTime":1725091193000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":3},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"zh/advanced/cookbook/making-a-theme-extendable.md"}');export{v as comp,C as data}; diff --git a/assets/making-a-theme-extendable.html-H08JTuS9.js b/assets/making-a-theme-extendable.html-H08JTuS9.js new file mode 100644 index 000000000..d9ddb11e6 --- /dev/null +++ b/assets/making-a-theme-extendable.html-H08JTuS9.js @@ -0,0 +1,30 @@ +import{_ as l,c as o,b as e,d as n,e as t,f as p,a as r,r as i,o as c}from"./app-9HBJsLu_.js";const d={};function m(y,s){const a=i("RouteLink");return c(),o("div",null,[s[3]||(s[3]=e("h1",{id:"making-a-theme-extendable",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#making-a-theme-extendable"},[e("span",null,"Making a Theme Extendable")])],-1)),s[4]||(s[4]=e("p",null,"Sometimes users might want make some minor changes to a theme, but they don't want to fork and modify the entire project.",-1)),e("p",null,[s[1]||(s[1]=n("With the help of ")),t(a,{to:"/reference/theme-api.html"},{default:p(()=>s[0]||(s[0]=[n("Theme API")])),_:1}),s[2]||(s[2]=n(", you can make your theme extendable, allowing users to make their own modifications easily."))]),s[5]||(s[5]=r(`

    You must have known that how to extend default theme. Here we'll introduce how to make your own theme extendable like default theme.

    Layout Slots

    This approach requires you to determine which parts of your theme could be extended. It is more suitable for those common customizations like page footer or header.

    You just need to provide slots in your layouts, and tell users how to make use of them:

    <template>
    +  <div class="my-theme-layout">
    +    <slot name="page-header" />
    +    <Content />
    +    <slot name="page-footer" />
    +  </div>
    +</template>

    Component Aliases

    This approach requires you to consider which components of your theme should be replaceable, and you also need to split components into a suitable granularity.

    First, set alias for replaceable components of you theme:

    import type { Theme } from 'vuepress/core'
    +import { getDirname } from 'vuepress/utils'
    +
    +const __dirname = getDirname(import.meta.url)
    +
    +export const fooTheme = (options): Theme => ({
    +  name: 'vuepress-theme-foo',
    +  alias: {
    +    // set alias for replaceable components
    +    '@theme/Navbar.vue': path.resolve(__dirname, 'components/Navbar.vue'),
    +    '@theme/Sidebar.vue': path.resolve(__dirname, 'components/Sidebar.vue'),
    +  },
    +})

    Next, use those components via aliases in your theme:

    <script setup lang="ts">
    +import Navbar from '@theme/Navbar.vue'
    +import Sidebar from '@theme/Sidebar.vue'
    +</script>
    +
    +<template>
    +  <div class="my-theme-layout">
    +    <Navbar />
    +    <Sidebar />
    +    <Content />
    +  </div>
    +</template>

    Then, users can replace specific components by overriding the alias when extending or using your theme.

    `,12))])}const D=l(d,[["render",m],["__file","making-a-theme-extendable.html.vue"]]),h=JSON.parse(`{"path":"/advanced/cookbook/making-a-theme-extendable.html","title":"Making a Theme Extendable","lang":"en-US","frontmatter":{"description":"Making a Theme Extendable Sometimes users might want make some minor changes to a theme, but they don't want to fork and modify the entire project. With the help of , you can ma...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://vuepress.vuejs.org/zh/advanced/cookbook/making-a-theme-extendable.html"}],["meta",{"property":"og:url","content":"https://vuepress.vuejs.org/advanced/cookbook/making-a-theme-extendable.html"}],["meta",{"property":"og:site_name","content":"VuePress"}],["meta",{"property":"og:title","content":"Making a Theme Extendable"}],["meta",{"property":"og:description","content":"Making a Theme Extendable Sometimes users might want make some minor changes to a theme, but they don't want to fork and modify the entire project. With the help of , you can ma..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-31T07:59:53.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-31T07:59:53.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Making a Theme Extendable\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-08-31T07:59:53.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Layout Slots","slug":"layout-slots","link":"#layout-slots","children":[]},{"level":2,"title":"Component Aliases","slug":"component-aliases","link":"#component-aliases","children":[]}],"git":{"updatedTime":1725091193000,"contributors":[{"name":"meteorlxy","email":"meteor.lxy@foxmail.com","commits":3},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"autoDesc":true,"filePathRelative":"advanced/cookbook/making-a-theme-extendable.md"}`);export{D as comp,h as data}; diff --git a/assets/markdown-and-vue-sfc.html-CMOmEnQT.js b/assets/markdown-and-vue-sfc.html-CMOmEnQT.js new file mode 100644 index 000000000..de3e83132 --- /dev/null +++ b/assets/markdown-and-vue-sfc.html-CMOmEnQT.js @@ -0,0 +1,30 @@ +import{_ as d,h as p,c as D,a as u,b as a,t,e as y,f as m,i as c,o as v}from"./app-9HBJsLu_.js";const C="Markdown 中的 Vue",g={__name:"markdown-and-vue-sfc.html",setup(r,{expose:s}){s();const l=(i,o)=>c("div",{class:"red-div"},o.slots.default()),n=p(0),e={RedDiv:l,msg:C,count:n,h:c,ref:p};return Object.defineProperty(e,"__isScriptSetup",{enumerable:!1,value:!0}),e}};function b(r,s,l,n,e,i){return v(),D("div",null,[s[1]||(s[1]=u(`

    Markdown 与 Vue SFC

    每一个 Markdown 文件,首先都会编译为 HTML ,然后转换为一个 Vue 单文件组件 (SFC) 。换句话说,你可以像写 Vue SFC 一样来写 Markdown 文件:

    • <script><style> 标签会直接被当作 Vue SFC 中的标签。换句话说,它们是从 <template> 标签中提升到了 SFC 的顶层。
    • 所有 <script><style> 标签的以外的内容,会先被编译为 HTML ,然后被当作 Vue SFC 的 <template> 标签。

    注意

    由于 Vue 单文件组件只能包含一个 <script> 标签,你应该避免在 VuePress Markdown 中使用多于一个 <script> 标签。

    我们来看一个例子:

    输入

    _你好, {{ msg }}_
    +
    +<RedDiv>
    +
    +_当前计数为: {{ count }}_
    +
    +</RedDiv>
    +
    +<button @click="count++">点我!</button>
    +
    +<script setup>
    +import { h, ref } from 'vue'
    +
    +const RedDiv = (_, ctx) =>
    +  h(
    +    'div',
    +    {
    +      class: 'red-div',
    +    },
    +    ctx.slots.default(),
    +  )
    +const msg = 'Markdown 中的 Vue'
    +const count = ref(0)
    +</script>
    +
    +<style>
    +.red-div {
    +  color: red;
    +}
    +</style>

    输出

    `,8)),a("p",null,[a("em",null,"你好, "+t(n.msg))]),y(n.RedDiv,null,{default:m(()=>[a("p",null,[a("em",null,"当前计数为: "+t(n.count),1)])]),_:1}),a("p",null,[a("button",{onClick:s[0]||(s[0]=o=>n.count++)},"点我!")])])}const h=d(g,[["render",b],["__file","markdown-and-vue-sfc.html.vue"]]),f=JSON.parse('{"path":"/zh/advanced/cookbook/markdown-and-vue-sfc.html","title":"Markdown 与 Vue SFC","lang":"zh-CN","frontmatter":{"description":"Markdown 与 Vue SFC 每一个 Markdown 文件,首先都会编译为 HTML ,然后转换为一个 Vue 单文件组件 (SFC) 。换句话说,你可以像写 Vue SFC 一样来写 Markdown 文件: + Assets | VuePress + + + + + +
    + + + diff --git a/guide/bundler.html b/guide/bundler.html new file mode 100644 index 000000000..b7be73182 --- /dev/null +++ b/guide/bundler.html @@ -0,0 +1,58 @@ + + + + + + + + + Bundler | VuePress + + + + + +
    + + + diff --git a/guide/configuration.html b/guide/configuration.html new file mode 100644 index 000000000..c3a0102c2 --- /dev/null +++ b/guide/configuration.html @@ -0,0 +1,66 @@ + + + + + + + + + Configuration | VuePress + + + + + +
    + + + diff --git a/guide/deployment.html b/guide/deployment.html new file mode 100644 index 000000000..1f9eff2f3 --- /dev/null +++ b/guide/deployment.html @@ -0,0 +1,136 @@ + + + + + + + + + Deployment | VuePress + + + + + +
    + + + diff --git a/guide/getting-started.html b/guide/getting-started.html new file mode 100644 index 000000000..d2e21600c --- /dev/null +++ b/guide/getting-started.html @@ -0,0 +1,78 @@ + + + + + + + + + Getting Started | VuePress + + + + + +
    + + + diff --git a/guide/i18n.html b/guide/i18n.html new file mode 100644 index 000000000..579aaad43 --- /dev/null +++ b/guide/i18n.html @@ -0,0 +1,81 @@ + + + + + + + + + I18n | VuePress + + + + + +
    + + + diff --git a/guide/introduction.html b/guide/introduction.html new file mode 100644 index 000000000..e41a7d6ec --- /dev/null +++ b/guide/introduction.html @@ -0,0 +1,43 @@ + + + + + + + + + Introduction | VuePress + + + + + +
    + + + diff --git a/guide/markdown.html b/guide/markdown.html new file mode 100644 index 000000000..ace904f93 --- /dev/null +++ b/guide/markdown.html @@ -0,0 +1,171 @@ + + + + + + + + + Markdown | VuePress + + + + + +
    + + + diff --git a/guide/migration.html b/guide/migration.html new file mode 100644 index 000000000..eb8eec74c --- /dev/null +++ b/guide/migration.html @@ -0,0 +1,148 @@ + + + + + + + + + Migrating from v1 | VuePress + + + + + +
    + + + diff --git a/guide/page.html b/guide/page.html new file mode 100644 index 000000000..bd97e4817 --- /dev/null +++ b/guide/page.html @@ -0,0 +1,52 @@ + + + + + + + + + Page | VuePress + + + + + +
    + + + diff --git a/guide/plugin.html b/guide/plugin.html new file mode 100644 index 000000000..852837e9e --- /dev/null +++ b/guide/plugin.html @@ -0,0 +1,55 @@ + + + + + + + + + Plugin | VuePress + + + + + +
    + + + diff --git a/guide/theme.html b/guide/theme.html new file mode 100644 index 000000000..9fa43f16f --- /dev/null +++ b/guide/theme.html @@ -0,0 +1,56 @@ + + + + + + + + + Theme | VuePress + + + + + +
    + + + diff --git a/guide/troubleshooting.html b/guide/troubleshooting.html new file mode 100644 index 000000000..030b6397e --- /dev/null +++ b/guide/troubleshooting.html @@ -0,0 +1,43 @@ + + + + + + + + + Troubleshooting | VuePress + + + + + +
    + + + diff --git a/images/cookbook/extending-a-theme-01.png b/images/cookbook/extending-a-theme-01.png new file mode 100644 index 000000000..9ba6d7e81 Binary files /dev/null and b/images/cookbook/extending-a-theme-01.png differ diff --git a/images/guide/vuepress-architecture-overview.png b/images/guide/vuepress-architecture-overview.png new file mode 100644 index 000000000..572bf1a47 Binary files /dev/null and b/images/guide/vuepress-architecture-overview.png differ diff --git a/images/guide/vuepress-core-process.png b/images/guide/vuepress-core-process.png new file mode 100644 index 000000000..acf17029c Binary files /dev/null and b/images/guide/vuepress-core-process.png differ diff --git a/images/hero.png b/images/hero.png new file mode 100644 index 000000000..ac6beaff0 Binary files /dev/null and b/images/hero.png differ diff --git a/images/icons/android-chrome-192x192.png b/images/icons/android-chrome-192x192.png new file mode 100644 index 000000000..ddd043910 Binary files /dev/null and b/images/icons/android-chrome-192x192.png differ diff --git a/images/icons/android-chrome-384x384.png b/images/icons/android-chrome-384x384.png new file mode 100644 index 000000000..86e1fd58b Binary files /dev/null and b/images/icons/android-chrome-384x384.png differ diff --git a/images/icons/apple-touch-icon.png b/images/icons/apple-touch-icon.png new file mode 100644 index 000000000..208915f1d Binary files /dev/null and b/images/icons/apple-touch-icon.png differ diff --git a/images/icons/favicon-16x16.png b/images/icons/favicon-16x16.png new file mode 100644 index 000000000..ca5047e7b Binary files /dev/null and b/images/icons/favicon-16x16.png differ diff --git a/images/icons/favicon-32x32.png b/images/icons/favicon-32x32.png new file mode 100644 index 000000000..e275ce9ba Binary files /dev/null and b/images/icons/favicon-32x32.png differ diff --git a/images/icons/mstile-150x150.png b/images/icons/mstile-150x150.png new file mode 100644 index 000000000..d0b143948 Binary files /dev/null and b/images/icons/mstile-150x150.png differ diff --git a/images/icons/safari-pinned-tab.svg b/images/icons/safari-pinned-tab.svg new file mode 100644 index 000000000..dc0b992c0 --- /dev/null +++ b/images/icons/safari-pinned-tab.svg @@ -0,0 +1,23 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 000000000..60e17006a Binary files /dev/null and b/images/logo.png differ diff --git a/index.html b/index.html new file mode 100644 index 000000000..8b1482775 --- /dev/null +++ b/index.html @@ -0,0 +1,43 @@ + + + + + + + + + Home | VuePress + + + + + +
    + + + diff --git a/manifest.webmanifest b/manifest.webmanifest new file mode 100644 index 000000000..d2e935f1a --- /dev/null +++ b/manifest.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "VuePress", + "short_name": "VuePress", + "description": "Vue-powered Static Site Generator", + "start_url": "/index.html", + "display": "standalone", + "background_color": "#fff", + "theme_color": "#3eaf7c", + "icons": [ + { + "src": "/images/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/images/icons/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ] +} diff --git a/new.html b/new.html new file mode 100644 index 000000000..b83ab7cb6 --- /dev/null +++ b/new.html @@ -0,0 +1,3 @@ + diff --git a/reference/bundler/vite.html b/reference/bundler/vite.html new file mode 100644 index 000000000..ed5c1d173 --- /dev/null +++ b/reference/bundler/vite.html @@ -0,0 +1,51 @@ + + + + + + + + + Vite | VuePress + + + + + +
    + + + diff --git a/reference/bundler/webpack.html b/reference/bundler/webpack.html new file mode 100644 index 000000000..cf9f865be --- /dev/null +++ b/reference/bundler/webpack.html @@ -0,0 +1,51 @@ + + + + + + + + + Webpack | VuePress + + + + + +
    + + + diff --git a/reference/cli.html b/reference/cli.html new file mode 100644 index 000000000..19bd8d1fc --- /dev/null +++ b/reference/cli.html @@ -0,0 +1,85 @@ + + + + + + + + + Command Line Interface | VuePress + + + + + +
    + + + diff --git a/reference/client-api.html b/reference/client-api.html new file mode 100644 index 000000000..1c72925be --- /dev/null +++ b/reference/client-api.html @@ -0,0 +1,67 @@ + + + + + + + + + Client API | VuePress + + + + + +
    + + + diff --git a/reference/components.html b/reference/components.html new file mode 100644 index 000000000..bc2408d93 --- /dev/null +++ b/reference/components.html @@ -0,0 +1,98 @@ + + + + + + + + + Built-in Components | VuePress + + + + + +
    + + + diff --git a/reference/config.html b/reference/config.html new file mode 100644 index 000000000..42f126963 --- /dev/null +++ b/reference/config.html @@ -0,0 +1,57 @@ + + + + + + + + + Config | VuePress + + + + + +
    + + + diff --git a/reference/frontmatter.html b/reference/frontmatter.html new file mode 100644 index 000000000..dd22508cc --- /dev/null +++ b/reference/frontmatter.html @@ -0,0 +1,66 @@ + + + + + + + + + Frontmatter | VuePress + + + + + +
    + + + diff --git a/reference/node-api.html b/reference/node-api.html new file mode 100644 index 000000000..24eef0709 --- /dev/null +++ b/reference/node-api.html @@ -0,0 +1,126 @@ + + + + + + + + + Node API | VuePress + + + + + +
    + + + diff --git a/reference/plugin-api.html b/reference/plugin-api.html new file mode 100644 index 000000000..2116edcd8 --- /dev/null +++ b/reference/plugin-api.html @@ -0,0 +1,121 @@ + + + + + + + + + Plugin API | VuePress + + + + + +
    + + + diff --git a/reference/theme-api.html b/reference/theme-api.html new file mode 100644 index 000000000..5a3e09a7d --- /dev/null +++ b/reference/theme-api.html @@ -0,0 +1,51 @@ + + + + + + + + + Theme API | VuePress + + + + + +
    + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 000000000..45b301e34 --- /dev/null +++ b/robots.txt @@ -0,0 +1,5 @@ + +User-agent:* +Disallow: + +Sitemap: https://vuepress.vuejs.org/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..6a8f31645 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,3 @@ + + +https://vuepress.vuejs.org/2024-07-25T05:28:18.000Zdailyhttps://vuepress.vuejs.org/advanced/architecture.html2024-02-05T05:23:13.000Zdailyhttps://vuepress.vuejs.org/advanced/plugin.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/advanced/theme.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/guide/assets.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/guide/bundler.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/guide/configuration.html2024-01-26T16:29:43.000Zdailyhttps://vuepress.vuejs.org/guide/deployment.html2024-10-03T04:37:36.000Zdailyhttps://vuepress.vuejs.org/guide/getting-started.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/guide/i18n.html2024-02-01T10:07:08.000Zdailyhttps://vuepress.vuejs.org/guide/introduction.html2023-12-20T05:41:12.000Zdailyhttps://vuepress.vuejs.org/guide/markdown.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/guide/migration.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/guide/page.html2024-01-31T11:46:38.000Zdailyhttps://vuepress.vuejs.org/guide/plugin.html2024-09-12T14:31:52.000Zdailyhttps://vuepress.vuejs.org/guide/theme.html2024-09-12T14:31:52.000Zdailyhttps://vuepress.vuejs.org/guide/troubleshooting.html2024-02-05T10:24:24.000Zdailyhttps://vuepress.vuejs.org/reference/cli.html2024-02-06T15:46:43.000Zdailyhttps://vuepress.vuejs.org/reference/client-api.html2024-05-24T08:18:58.000Zdailyhttps://vuepress.vuejs.org/reference/components.html2024-09-03T15:31:59.000Zdailyhttps://vuepress.vuejs.org/reference/config.html2024-07-14T14:29:58.000Zdailyhttps://vuepress.vuejs.org/reference/frontmatter.html2024-05-16T12:45:44.000Zdailyhttps://vuepress.vuejs.org/reference/node-api.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/reference/plugin-api.html2024-02-06T15:46:43.000Zdailyhttps://vuepress.vuejs.org/reference/theme-api.html2024-02-06T15:46:43.000Zdailyhttps://vuepress.vuejs.org/zh/2024-07-25T05:28:18.000Zdailyhttps://vuepress.vuejs.org/advanced/cookbook/2023-12-03T14:44:37.000Zdailyhttps://vuepress.vuejs.org/advanced/cookbook/adding-extra-pages.html2023-12-28T05:20:14.000Zdailyhttps://vuepress.vuejs.org/advanced/cookbook/making-a-theme-extendable.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/advanced/cookbook/markdown-and-vue-sfc.html2024-01-03T06:15:51.000Zdailyhttps://vuepress.vuejs.org/advanced/cookbook/passing-data-to-client-code.html2023-12-10T13:10:46.000Zdailyhttps://vuepress.vuejs.org/advanced/cookbook/resolving-routes.html2024-05-24T08:18:58.000Zdailyhttps://vuepress.vuejs.org/advanced/cookbook/usage-of-client-config.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/reference/bundler/vite.html2024-01-26T16:29:43.000Zdailyhttps://vuepress.vuejs.org/reference/bundler/webpack.html2024-01-26T16:29:43.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/architecture.html2024-02-05T05:23:13.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/plugin.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/theme.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/zh/guide/assets.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/zh/guide/bundler.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/zh/guide/configuration.html2024-01-26T16:29:43.000Zdailyhttps://vuepress.vuejs.org/zh/guide/deployment.html2024-10-03T04:37:36.000Zdailyhttps://vuepress.vuejs.org/zh/guide/getting-started.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/zh/guide/i18n.html2024-02-01T10:07:08.000Zdailyhttps://vuepress.vuejs.org/zh/guide/introduction.html2023-12-20T05:41:12.000Zdailyhttps://vuepress.vuejs.org/zh/guide/markdown.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/zh/guide/migration.html2024-09-23T11:25:41.000Zdailyhttps://vuepress.vuejs.org/zh/guide/page.html2024-01-31T11:46:38.000Zdailyhttps://vuepress.vuejs.org/zh/guide/plugin.html2024-09-12T14:31:52.000Zdailyhttps://vuepress.vuejs.org/zh/guide/theme.html2024-09-12T14:31:52.000Zdailyhttps://vuepress.vuejs.org/zh/guide/troubleshooting.html2024-02-05T10:24:24.000Zdailyhttps://vuepress.vuejs.org/zh/reference/cli.html2024-02-06T15:46:43.000Zdailyhttps://vuepress.vuejs.org/zh/reference/client-api.html2024-05-24T08:18:58.000Zdailyhttps://vuepress.vuejs.org/zh/reference/components.html2024-09-03T15:31:59.000Zdailyhttps://vuepress.vuejs.org/zh/reference/config.html2024-07-14T14:29:58.000Zdailyhttps://vuepress.vuejs.org/zh/reference/frontmatter.html2024-05-16T12:45:44.000Zdailyhttps://vuepress.vuejs.org/zh/reference/node-api.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/zh/reference/plugin-api.html2024-02-06T15:46:43.000Zdailyhttps://vuepress.vuejs.org/zh/reference/theme-api.html2024-02-06T15:46:43.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/cookbook/2023-12-03T14:44:37.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/cookbook/adding-extra-pages.html2023-12-28T05:20:14.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/cookbook/making-a-theme-extendable.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/cookbook/markdown-and-vue-sfc.html2024-01-03T06:15:51.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/cookbook/passing-data-to-client-code.html2023-12-10T13:10:46.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/cookbook/resolving-routes.html2024-05-24T08:18:58.000Zdailyhttps://vuepress.vuejs.org/zh/advanced/cookbook/usage-of-client-config.html2024-08-31T07:59:53.000Zdailyhttps://vuepress.vuejs.org/zh/reference/bundler/vite.html2024-01-26T16:29:43.000Zdailyhttps://vuepress.vuejs.org/zh/reference/bundler/webpack.html2024-01-26T16:29:43.000Zdaily \ No newline at end of file diff --git a/sitemap.xsl b/sitemap.xsl new file mode 100644 index 000000000..a76881a48 --- /dev/null +++ b/sitemap.xsl @@ -0,0 +1,207 @@ + + + + + + + XML Sitemap + + + + + +
    +

    Sitemap

    + + + + + + + + + + + + + + + + + + + + + +
    + + PriorityChange FrequencyLast Updated Time
    + + + + + + + + + + + + + 0.5 + + + + + + + + + - + + + + +
    +
    + + + +
    +
    diff --git a/zh/advanced/architecture.html b/zh/advanced/architecture.html new file mode 100644 index 000000000..2712ce83d --- /dev/null +++ b/zh/advanced/architecture.html @@ -0,0 +1,43 @@ + + + + + + + + + 架构 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/cookbook/adding-extra-pages.html b/zh/advanced/cookbook/adding-extra-pages.html new file mode 100644 index 000000000..0008b564f --- /dev/null +++ b/zh/advanced/cookbook/adding-extra-pages.html @@ -0,0 +1,68 @@ + + + + + + + + + 添加额外页面 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/cookbook/index.html b/zh/advanced/cookbook/index.html new file mode 100644 index 000000000..b1ba1294a --- /dev/null +++ b/zh/advanced/cookbook/index.html @@ -0,0 +1,43 @@ + + + + + + + + + 介绍 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/cookbook/making-a-theme-extendable.html b/zh/advanced/cookbook/making-a-theme-extendable.html new file mode 100644 index 000000000..55dcd9bd8 --- /dev/null +++ b/zh/advanced/cookbook/making-a-theme-extendable.html @@ -0,0 +1,72 @@ + + + + + + + + + 开发一个可继承的主题 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/cookbook/markdown-and-vue-sfc.html b/zh/advanced/cookbook/markdown-and-vue-sfc.html new file mode 100644 index 000000000..009f12fe2 --- /dev/null +++ b/zh/advanced/cookbook/markdown-and-vue-sfc.html @@ -0,0 +1,72 @@ + + + + + + + + + Markdown 与 Vue SFC | VuePress + + + + + +
    + + + diff --git a/zh/advanced/cookbook/passing-data-to-client-code.html b/zh/advanced/cookbook/passing-data-to-client-code.html new file mode 100644 index 000000000..fbe6dda72 --- /dev/null +++ b/zh/advanced/cookbook/passing-data-to-client-code.html @@ -0,0 +1,62 @@ + + + + + + + + + 向客户端代码传递数据 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/cookbook/resolving-routes.html b/zh/advanced/cookbook/resolving-routes.html new file mode 100644 index 000000000..eb6968592 --- /dev/null +++ b/zh/advanced/cookbook/resolving-routes.html @@ -0,0 +1,60 @@ + + + + + + + + + 解析路由 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/cookbook/usage-of-client-config.html b/zh/advanced/cookbook/usage-of-client-config.html new file mode 100644 index 000000000..d7d4208c9 --- /dev/null +++ b/zh/advanced/cookbook/usage-of-client-config.html @@ -0,0 +1,120 @@ + + + + + + + + + 客户端配置的使用方法 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/plugin.html b/zh/advanced/plugin.html new file mode 100644 index 000000000..ac4be0721 --- /dev/null +++ b/zh/advanced/plugin.html @@ -0,0 +1,60 @@ + + + + + + + + + 开发插件 | VuePress + + + + + +
    + + + diff --git a/zh/advanced/theme.html b/zh/advanced/theme.html new file mode 100644 index 000000000..d11a179da --- /dev/null +++ b/zh/advanced/theme.html @@ -0,0 +1,92 @@ + + + + + + + + + 开发主题 | VuePress + + + + + +
    + + + diff --git a/zh/guide/assets.html b/zh/guide/assets.html new file mode 100644 index 000000000..02bd36ce5 --- /dev/null +++ b/zh/guide/assets.html @@ -0,0 +1,68 @@ + + + + + + + + + 静态资源 | VuePress + + + + + +
    + + + diff --git a/zh/guide/bundler.html b/zh/guide/bundler.html new file mode 100644 index 000000000..a8ddc8505 --- /dev/null +++ b/zh/guide/bundler.html @@ -0,0 +1,58 @@ + + + + + + + + + 打包工具 | VuePress + + + + + +
    + + + diff --git a/zh/guide/configuration.html b/zh/guide/configuration.html new file mode 100644 index 000000000..6c067bf5e --- /dev/null +++ b/zh/guide/configuration.html @@ -0,0 +1,66 @@ + + + + + + + + + 配置 | VuePress + + + + + +
    + + + diff --git a/zh/guide/deployment.html b/zh/guide/deployment.html new file mode 100644 index 000000000..497d32b8a --- /dev/null +++ b/zh/guide/deployment.html @@ -0,0 +1,137 @@ + + + + + + + + + 部署 | VuePress + + + + + +
    + + + diff --git a/zh/guide/getting-started.html b/zh/guide/getting-started.html new file mode 100644 index 000000000..432a2f945 --- /dev/null +++ b/zh/guide/getting-started.html @@ -0,0 +1,78 @@ + + + + + + + + + 快速上手 | VuePress + + + + + +
    + + + diff --git a/zh/guide/i18n.html b/zh/guide/i18n.html new file mode 100644 index 000000000..70171c78e --- /dev/null +++ b/zh/guide/i18n.html @@ -0,0 +1,81 @@ + + + + + + + + + 多语言支持 | VuePress + + + + + +
    + + + diff --git a/zh/guide/introduction.html b/zh/guide/introduction.html new file mode 100644 index 000000000..4c7af0a4c --- /dev/null +++ b/zh/guide/introduction.html @@ -0,0 +1,43 @@ + + + + + + + + + 介绍 | VuePress + + + + + +
    + + + diff --git a/zh/guide/markdown.html b/zh/guide/markdown.html new file mode 100644 index 000000000..55ed680f8 --- /dev/null +++ b/zh/guide/markdown.html @@ -0,0 +1,172 @@ + + + + + + + + + Markdown | VuePress + + + + + +
    + + + diff --git a/zh/guide/migration.html b/zh/guide/migration.html new file mode 100644 index 000000000..58782d18d --- /dev/null +++ b/zh/guide/migration.html @@ -0,0 +1,148 @@ + + + + + + + + + 从 v1 迁移 | VuePress + + + + + +
    + + + diff --git a/zh/guide/page.html b/zh/guide/page.html new file mode 100644 index 000000000..2c61d5018 --- /dev/null +++ b/zh/guide/page.html @@ -0,0 +1,52 @@ + + + + + + + + + 页面 | VuePress + + + + + +
    + + + diff --git a/zh/guide/plugin.html b/zh/guide/plugin.html new file mode 100644 index 000000000..80ba23654 --- /dev/null +++ b/zh/guide/plugin.html @@ -0,0 +1,55 @@ + + + + + + + + + 插件 | VuePress + + + + + +
    + + + diff --git a/zh/guide/theme.html b/zh/guide/theme.html new file mode 100644 index 000000000..c103e1c3f --- /dev/null +++ b/zh/guide/theme.html @@ -0,0 +1,56 @@ + + + + + + + + + 主题 | VuePress + + + + + +
    + + + diff --git a/zh/guide/troubleshooting.html b/zh/guide/troubleshooting.html new file mode 100644 index 000000000..47129f6f0 --- /dev/null +++ b/zh/guide/troubleshooting.html @@ -0,0 +1,43 @@ + + + + + + + + + 常见问题 | VuePress + + + + + +
    + + + diff --git a/zh/index.html b/zh/index.html new file mode 100644 index 000000000..b0a32618b --- /dev/null +++ b/zh/index.html @@ -0,0 +1,43 @@ + + + + + + + + + 首页 | VuePress + + + + + +
    + + + diff --git a/zh/reference/bundler/vite.html b/zh/reference/bundler/vite.html new file mode 100644 index 000000000..04abba199 --- /dev/null +++ b/zh/reference/bundler/vite.html @@ -0,0 +1,51 @@ + + + + + + + + + Vite | VuePress + + + + + +
    + + + diff --git a/zh/reference/bundler/webpack.html b/zh/reference/bundler/webpack.html new file mode 100644 index 000000000..81d6e87a6 --- /dev/null +++ b/zh/reference/bundler/webpack.html @@ -0,0 +1,51 @@ + + + + + + + + + Webpack | VuePress + + + + + +
    + + + diff --git a/zh/reference/cli.html b/zh/reference/cli.html new file mode 100644 index 000000000..9131cadfa --- /dev/null +++ b/zh/reference/cli.html @@ -0,0 +1,85 @@ + + + + + + + + + 命令行接口 | VuePress + + + + + +
    + + + diff --git a/zh/reference/client-api.html b/zh/reference/client-api.html new file mode 100644 index 000000000..a0dcf4099 --- /dev/null +++ b/zh/reference/client-api.html @@ -0,0 +1,67 @@ + + + + + + + + + 客户端 API | VuePress + + + + + +
    + + + diff --git a/zh/reference/components.html b/zh/reference/components.html new file mode 100644 index 000000000..6109eabd0 --- /dev/null +++ b/zh/reference/components.html @@ -0,0 +1,98 @@ + + + + + + + + + 内置组件 | VuePress + + + + + +
    + + + diff --git a/zh/reference/config.html b/zh/reference/config.html new file mode 100644 index 000000000..bbc3ee744 --- /dev/null +++ b/zh/reference/config.html @@ -0,0 +1,57 @@ + + + + + + + + + 配置 | VuePress + + + + + +
    + + + diff --git a/zh/reference/frontmatter.html b/zh/reference/frontmatter.html new file mode 100644 index 000000000..7f1d0e648 --- /dev/null +++ b/zh/reference/frontmatter.html @@ -0,0 +1,66 @@ + + + + + + + + + Frontmatter | VuePress + + + + + +
    + + + diff --git a/zh/reference/node-api.html b/zh/reference/node-api.html new file mode 100644 index 000000000..a37082099 --- /dev/null +++ b/zh/reference/node-api.html @@ -0,0 +1,126 @@ + + + + + + + + + Node API | VuePress + + + + + +
    + + + diff --git a/zh/reference/plugin-api.html b/zh/reference/plugin-api.html new file mode 100644 index 000000000..600ffc670 --- /dev/null +++ b/zh/reference/plugin-api.html @@ -0,0 +1,121 @@ + + + + + + + + + 插件 API | VuePress + + + + + +
    + + + diff --git a/zh/reference/theme-api.html b/zh/reference/theme-api.html new file mode 100644 index 000000000..b6357168b --- /dev/null +++ b/zh/reference/theme-api.html @@ -0,0 +1,51 @@ + + + + + + + + + 主题 API | VuePress + + + + + +
    + + +