diff --git a/assets/app.54944ef9.js b/assets/app.54944ef9.js deleted file mode 100644 index 9535c3ff..00000000 --- a/assets/app.54944ef9.js +++ /dev/null @@ -1 +0,0 @@ -const Io="modulepreload",Ms={},Oo="/",rn=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Oo}${s}`,s in Ms)return;Ms[s]=!0;const r=s.endsWith(".css"),o=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${o}`))return;const i=document.createElement("link");if(i.rel=r?"stylesheet":Io,r||(i.as="script",i.crossOrigin=""),i.href=s,document.head.appendChild(i),r)return new Promise((l,c)=>{i.addEventListener("load",l),i.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};function ss(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const Ro="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Mo=ss(Ro);function gr(e){return!!e||e===""}function rs(e){if(M(e)){const t={};for(let n=0;n{if(n){const s=n.split(Fo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ut(e){let t="";if(pe(e))t=e;else if(M(e))for(let n=0;npe(e)?e:e==null?"":M(e)||fe(e)&&(e.toString===xr||!H(e.toString))?JSON.stringify(e,mr,2):String(e),mr=(e,t)=>t&&t.__v_isRef?mr(e,t.value):vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:vr(t)?{[`Set(${t.size})`]:[...t.values()]}:fe(t)&&!M(t)&&!yr(t)?String(t):t,Z={},mt=[],Re=()=>{},Ho=()=>!1,Uo=/^on[^a-z]/,Vt=e=>Uo.test(e),os=e=>e.startsWith("onUpdate:"),ye=Object.assign,is=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Bo=Object.prototype.hasOwnProperty,q=(e,t)=>Bo.call(e,t),M=Array.isArray,vt=e=>xn(e)==="[object Map]",vr=e=>xn(e)==="[object Set]",H=e=>typeof e=="function",pe=e=>typeof e=="string",ls=e=>typeof e=="symbol",fe=e=>e!==null&&typeof e=="object",br=e=>fe(e)&&H(e.then)&&H(e.catch),xr=Object.prototype.toString,xn=e=>xr.call(e),Do=e=>xn(e).slice(8,-1),yr=e=>xn(e)==="[object Object]",cs=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ot=ss(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),yn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},jo=/-(\w)/g,He=yn(e=>e.replace(jo,(t,n)=>n?n.toUpperCase():"")),Ko=/\B([A-Z])/g,kt=yn(e=>e.replace(Ko,"-$1").toLowerCase()),wn=yn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Sn=yn(e=>e?`on${wn(e)}`:""),Ut=(e,t)=>!Object.is(e,t),Fn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Wo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ss;const qo=()=>Ss||(Ss=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Fe;class Vo{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Fe&&(this.parent=Fe,this.index=(Fe.scopes||(Fe.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Fe;try{return Fe=this,t()}finally{Fe=n}}}on(){Fe=this}off(){Fe=this.parent}stop(t){if(this.active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},wr=e=>(e.w&Ge)>0,kr=e=>(e.n&Ge)>0,Yo=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(f==="length"||f>=s)&&l.push(c)});else switch(n!==void 0&&l.push(i.get(n)),t){case"add":M(e)?cs(n)&&l.push(i.get("length")):(l.push(i.get(rt)),vt(e)&&l.push(i.get(Vn)));break;case"delete":M(e)||(l.push(i.get(rt)),vt(e)&&l.push(i.get(Vn)));break;case"set":vt(e)&&l.push(i.get(rt));break}if(l.length===1)l[0]&&zn(l[0]);else{const c=[];for(const f of l)f&&c.push(...f);zn(us(c))}}function zn(e,t){for(const n of M(e)?e:[...e])(n!==Ie||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const Xo=ss("__proto__,__v_isRef,__isVue"),Cr=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(ls)),Zo=fs(),Qo=fs(!1,!0),Go=fs(!0),Ns=ei();function ei(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=z(this);for(let o=0,i=this.length;o{e[t]=function(...n){$t();const s=z(this)[t].apply(this,n);return Et(),s}}),e}function fs(e=!1,t=!1){return function(s,r,o){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&o===(e?t?gi:Ir:t?Lr:Pr).get(s))return s;const i=M(s);if(!e&&i&&q(Ns,r))return Reflect.get(Ns,r,o);const l=Reflect.get(s,r,o);return(ls(r)?Cr.has(r):Xo(r))||(e||Te(s,"get",r),t)?l:he(l)?!i||!cs(r)?l.value:l:fe(l)?e?Or(l):$n(l):l}}const ti=Tr(),ni=Tr(!0);function Tr(e=!1){return function(n,s,r,o){let i=n[s];if(Bt(i)&&he(i)&&!he(r))return!1;if(!e&&!Bt(r)&&(Rr(r)||(r=z(r),i=z(i)),!M(n)&&he(i)&&!he(r)))return i.value=r,!0;const l=M(n)&&cs(s)?Number(s)e,kn=e=>Reflect.getPrototypeOf(e);function Zt(e,t,n=!1,s=!1){e=e.__v_raw;const r=z(e),o=z(t);t!==o&&!n&&Te(r,"get",t),!n&&Te(r,"get",o);const{has:i}=kn(r),l=s?ds:n?_s:Dt;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));e!==r&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,s=z(n),r=z(e);return e!==r&&!t&&Te(s,"has",e),!t&&Te(s,"has",r),e===r?n.has(e):n.has(e)||n.has(r)}function Gt(e,t=!1){return e=e.__v_raw,!t&&Te(z(e),"iterate",rt),Reflect.get(e,"size",e)}function Hs(e){e=z(e);const t=z(this);return kn(t).has.call(t,e)||(t.add(e),Ke(t,"add",e,e)),this}function Us(e,t){t=z(t);const n=z(this),{has:s,get:r}=kn(n);let o=s.call(n,e);o||(e=z(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?Ut(t,i)&&Ke(n,"set",e,t):Ke(n,"add",e,t),this}function Bs(e){const t=z(this),{has:n,get:s}=kn(t);let r=n.call(t,e);r||(e=z(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&Ke(t,"delete",e,void 0),o}function Ds(){const e=z(this),t=e.size!==0,n=e.clear();return t&&Ke(e,"clear",void 0,void 0),n}function en(e,t){return function(s,r){const o=this,i=o.__v_raw,l=z(i),c=t?ds:e?_s:Dt;return!e&&Te(l,"iterate",rt),i.forEach((f,h)=>s.call(r,c(f),c(h),o))}}function tn(e,t,n){return function(...s){const r=this.__v_raw,o=z(r),i=vt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=r[e](...s),h=n?ds:t?_s:Dt;return!t&&Te(o,"iterate",c?Vn:rt),{next(){const{value:m,done:b}=f.next();return b?{value:m,done:b}:{value:l?[h(m[0]),h(m[1])]:h(m),done:b}},[Symbol.iterator](){return this}}}}function ze(e){return function(...t){return e==="delete"?!1:this}}function ci(){const e={get(o){return Zt(this,o)},get size(){return Gt(this)},has:Qt,add:Hs,set:Us,delete:Bs,clear:Ds,forEach:en(!1,!1)},t={get(o){return Zt(this,o,!1,!0)},get size(){return Gt(this)},has:Qt,add:Hs,set:Us,delete:Bs,clear:Ds,forEach:en(!1,!0)},n={get(o){return Zt(this,o,!0)},get size(){return Gt(this,!0)},has(o){return Qt.call(this,o,!0)},add:ze("add"),set:ze("set"),delete:ze("delete"),clear:ze("clear"),forEach:en(!0,!1)},s={get(o){return Zt(this,o,!0,!0)},get size(){return Gt(this,!0)},has(o){return Qt.call(this,o,!0)},add:ze("add"),set:ze("set"),delete:ze("delete"),clear:ze("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),s[o]=tn(o,!0,!0)}),[e,n,t,s]}const[ui,ai,fi,di]=ci();function hs(e,t){const n=t?e?di:fi:e?ai:ui;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(q(n,r)&&r in s?n:s,r,o)}const hi={get:hs(!1,!1)},pi={get:hs(!1,!0)},_i={get:hs(!0,!1)},Pr=new WeakMap,Lr=new WeakMap,Ir=new WeakMap,gi=new WeakMap;function mi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function vi(e){return e.__v_skip||!Object.isExtensible(e)?0:mi(Do(e))}function $n(e){return Bt(e)?e:ps(e,!1,Ar,hi,Pr)}function bi(e){return ps(e,!1,li,pi,Lr)}function Or(e){return ps(e,!0,ii,_i,Ir)}function ps(e,t,n,s,r){if(!fe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=vi(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function bt(e){return Bt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function Bt(e){return!!(e&&e.__v_isReadonly)}function Rr(e){return!!(e&&e.__v_isShallow)}function Mr(e){return bt(e)||Bt(e)}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Rt(e){return ln(e,"__v_skip",!0),e}const Dt=e=>fe(e)?$n(e):e,_s=e=>fe(e)?Or(e):e;function Sr(e){Ze&&Ie&&(e=z(e),Er(e.dep||(e.dep=us())))}function Fr(e,t){e=z(e),e.dep&&zn(e.dep)}function he(e){return!!(e&&e.__v_isRef===!0)}function ot(e){return Nr(e,!1)}function xi(e){return Nr(e,!0)}function Nr(e,t){return he(e)?e:new yi(e,t)}class yi{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:z(t),this._value=n?t:Dt(t)}get value(){return Sr(this),this._value}set value(t){t=this.__v_isShallow?t:z(t),Ut(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Dt(t),Fr(this))}}function $(e){return he(e)?e.value:e}const wi={get:(e,t,n)=>$(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return he(r)&&!he(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Hr(e){return bt(e)?e:new Proxy(e,wi)}function Ur(e){const t=M(e)?new Array(e.length):{};for(const n in e)t[n]=$i(e,n);return t}class ki{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function $i(e,t,n){const s=e[t];return he(s)?s:new ki(e,t,n)}class Ei{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new as(t,()=>{this._dirty||(this._dirty=!0,Fr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=z(this);return Sr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Ci(e,t,n=!1){let s,r;const o=H(e);return o?(s=e,r=Re):(s=e.get,r=e.set),new Ei(s,r,o||!r,n)}function Qe(e,t,n,s){let r;try{r=s?e(...s):e()}catch(o){zt(o,t,n)}return r}function Me(e,t,n,s){if(H(e)){const o=Qe(e,t,n,s);return o&&br(o)&&o.catch(i=>{zt(i,t,n)}),o}const r=[];for(let o=0;o>>1;jt(Ce[s])je&&Ce.splice(t,1)}function Kr(e,t,n,s){M(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?s+1:s))&&n.push(e),jr()}function Li(e){Kr(e,It,Mt,pt)}function Ii(e){Kr(e,Je,St,_t)}function vs(e,t=null){if(Mt.length){for(Jn=t,It=[...new Set(Mt)],Mt.length=0,pt=0;ptjt(n)-jt(s)),_t=0;_te.id==null?1/0:e.id;function Wr(e){Yn=!1,cn=!0,vs(e),Ce.sort((n,s)=>jt(n)-jt(s));const t=Re;try{for(je=0;jeE.trim()):m&&(r=n.map(Wo))}let l,c=s[l=Sn(t)]||s[l=Sn(He(t))];!c&&o&&(c=s[l=Sn(kt(t))]),c&&Me(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Me(f,e,6,r)}}function qr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!H(e)){const c=f=>{const h=qr(f,t,!0);h&&(l=!0,ye(i,h))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(s.set(e,null),null):(M(o)?o.forEach(c=>i[c]=null):ye(i,o),s.set(e,i),i)}function En(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),q(e,t[0].toLowerCase()+t.slice(1))||q(e,kt(t))||q(e,t))}let be=null,Cn=null;function an(e){const t=be;return be=e,Cn=e&&e.type.__scopeId||null,t}function Vr(e){Cn=e}function zr(){Cn=null}function De(e,t=be,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Zs(-1);const o=an(t),i=e(...r);return an(o),s._d&&Zs(1),i};return s._n=!0,s._c=!0,s._d=!0,s}function Nn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[i],slots:l,attrs:c,emit:f,render:h,renderCache:m,data:b,setupState:E,ctx:A,inheritAttrs:U}=e;let g,x;const T=an(e);try{if(n.shapeFlag&4){const B=r||s;g=Le(h.call(B,B,m,o,E,b,A)),x=c}else{const B=t;g=Le(B.length>1?B(o,{attrs:c,slots:l,emit:f}):B(o,null)),x=t.props?c:Ri(c)}}catch(B){Ht.length=0,zt(B,e,1),g=S(We)}let j=g;if(x&&U!==!1){const B=Object.keys(x),{shapeFlag:X}=j;B.length&&X&7&&(i&&B.some(os)&&(x=Mi(x,i)),j=qt(j,x))}return n.dirs&&(j.dirs=j.dirs?j.dirs.concat(n.dirs):n.dirs),n.transition&&(j.transition=n.transition),g=j,an(T),g}const Ri=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vt(n))&&((t||(t={}))[n]=e[n]);return t},Mi=(e,t)=>{const n={};for(const s in e)(!os(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Si(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?js(s,i,f):!!i;if(c&8){const h=t.dynamicProps;for(let m=0;me.__isSuspense;function Yr(e,t){t&&t.pendingBranch?M(e)?t.effects.push(...e):t.effects.push(e):Ii(e)}function Hi(e,t){if(ae){let n=ae.provides;const s=ae.parent&&ae.parent.provides;s===n&&(n=ae.provides=Object.create(s)),n[e]=t}}function Ft(e,t,n=!1){const s=ae||be;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&H(t)?t.call(s.proxy):t}}function Jr(e,t){return bs(e,null,t)}const Ks={};function it(e,t,n){return bs(e,t,n)}function bs(e,t,{immediate:n,deep:s,flush:r,onTrack:o,onTrigger:i}=Z){const l=ae;let c,f=!1,h=!1;if(he(e)?(c=()=>e.value,f=Rr(e)):bt(e)?(c=()=>e,s=!0):M(e)?(h=!0,f=e.some(bt),c=()=>e.map(x=>{if(he(x))return x.value;if(bt(x))return gt(x);if(H(x))return Qe(x,l,2)})):H(e)?t?c=()=>Qe(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return m&&m(),Me(e,l,3,[b])}:c=Re,t&&s){const x=c;c=()=>gt(x())}let m,b=x=>{m=g.onStop=()=>{Qe(x,l,4)}};if(yt)return b=Re,t?n&&Me(t,l,3,[c(),h?[]:void 0,b]):c(),Re;let E=h?[]:Ks;const A=()=>{if(!!g.active)if(t){const x=g.run();(s||f||(h?x.some((T,j)=>Ut(T,E[j])):Ut(x,E)))&&(m&&m(),Me(t,l,3,[x,E===Ks?void 0:E,b]),E=x)}else g.run()};A.allowRecurse=!!t;let U;r==="sync"?U=A:r==="post"?U=()=>$e(A,l&&l.suspense):U=()=>{!l||l.isMounted?Li(A):A()};const g=new as(c,U);return t?n?A():E=g.run():r==="post"?$e(g.run.bind(g),l&&l.suspense):g.run(),()=>{g.stop(),l&&l.scope&&is(l.scope.effects,g)}}function Ui(e,t,n){const s=this.proxy,r=pe(e)?e.includes(".")?Xr(s,e):()=>s[e]:e.bind(s,s);let o;H(t)?o=t:(o=t.handler,n=t);const i=ae;xt(this);const l=bs(r,o.bind(s),n);return i?xt(i):ct(),l}function Xr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{gt(n,t)});else if(yr(e))for(const n in e)gt(e[n],t);return e}function re(e){return H(e)?{setup:e,name:e.name}:e}const Kt=e=>!!e.type.__asyncLoader;function Hn(e){H(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,f,h=0;const m=()=>(h++,c=null,b()),b=()=>{let E;return c||(E=c=t().catch(A=>{if(A=A instanceof Error?A:new Error(String(A)),l)return new Promise((U,g)=>{l(A,()=>U(m()),()=>g(A),h+1)});throw A}).then(A=>E!==c&&c?c:(A&&(A.__esModule||A[Symbol.toStringTag]==="Module")&&(A=A.default),f=A,A)))};return re({name:"AsyncComponentWrapper",__asyncLoader:b,get __asyncResolved(){return f},setup(){const E=ae;if(f)return()=>Un(f,E);const A=T=>{c=null,zt(T,E,13,!s)};if(i&&E.suspense||yt)return b().then(T=>()=>Un(T,E)).catch(T=>(A(T),()=>s?S(s,{error:T}):null));const U=ot(!1),g=ot(),x=ot(!!r);return r&&setTimeout(()=>{x.value=!1},r),o!=null&&setTimeout(()=>{if(!U.value&&!g.value){const T=new Error(`Async component timed out after ${o}ms.`);A(T),g.value=T}},o),b().then(()=>{U.value=!0,E.parent&&xs(E.parent.vnode)&&ms(E.parent.update)}).catch(T=>{A(T),g.value=T}),()=>{if(U.value&&f)return Un(f,E);if(g.value&&s)return S(s,{error:g.value});if(n&&!x.value)return S(n)}}})}function Un(e,{vnode:{ref:t,props:n,children:s}}){const r=S(e,n,s);return r.ref=t,r}const xs=e=>e.type.__isKeepAlive;function Bi(e,t){Zr(e,"a",t)}function Di(e,t){Zr(e,"da",t)}function Zr(e,t,n=ae){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Tn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)xs(r.parent.vnode)&&ji(s,t,n,r),r=r.parent}}function ji(e,t,n,s){const r=Tn(t,e,s,!0);An(()=>{is(s[t],r)},n)}function Tn(e,t,n=ae,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;$t(),xt(n);const l=Me(t,n,e,i);return ct(),Et(),l});return s?r.unshift(o):r.push(o),o}}const qe=e=>(t,n=ae)=>(!yt||e==="sp")&&Tn(e,t,n),Ki=qe("bm"),Ct=qe("m"),Wi=qe("bu"),Qr=qe("u"),qi=qe("bum"),An=qe("um"),Vi=qe("sp"),zi=qe("rtg"),Yi=qe("rtc");function Ji(e,t=ae){Tn("ec",e,t)}let Xn=!0;function Xi(e){const t=eo(e),n=e.proxy,s=e.ctx;Xn=!1,t.beforeCreate&&Ws(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:f,created:h,beforeMount:m,mounted:b,beforeUpdate:E,updated:A,activated:U,deactivated:g,beforeDestroy:x,beforeUnmount:T,destroyed:j,unmounted:B,render:X,renderTracked:Q,renderTriggered:K,errorCaptured:le,serverPrefetch:ne,expose:oe,inheritAttrs:_e,components:W,directives:ie,filters:we}=t;if(f&&Zi(f,s,null,e.appContext.config.unwrapInjectedRef),i)for(const se in i){const G=i[se];H(G)&&(s[se]=G.bind(n))}if(r){const se=r.call(n,n);fe(se)&&(e.data=$n(se))}if(Xn=!0,o)for(const se in o){const G=o[se],Ue=H(G)?G.bind(n,n):H(G.get)?G.get.bind(n,n):Re,On=!H(G)&&H(G.set)?G.set.bind(n):Re,Tt=D({get:Ue,set:On});Object.defineProperty(s,se,{enumerable:!0,configurable:!0,get:()=>Tt.value,set:ft=>Tt.value=ft})}if(l)for(const se in l)Gr(l[se],s,n,se);if(c){const se=H(c)?c.call(n):c;Reflect.ownKeys(se).forEach(G=>{Hi(G,se[G])})}h&&Ws(h,e,"c");function ke(se,G){M(G)?G.forEach(Ue=>se(Ue.bind(n))):G&&se(G.bind(n))}if(ke(Ki,m),ke(Ct,b),ke(Wi,E),ke(Qr,A),ke(Bi,U),ke(Di,g),ke(Ji,le),ke(Yi,Q),ke(zi,K),ke(qi,T),ke(An,B),ke(Vi,ne),M(oe))if(oe.length){const se=e.exposed||(e.exposed={});oe.forEach(G=>{Object.defineProperty(se,G,{get:()=>n[G],set:Ue=>n[G]=Ue})})}else e.exposed||(e.exposed={});X&&e.render===Re&&(e.render=X),_e!=null&&(e.inheritAttrs=_e),W&&(e.components=W),ie&&(e.directives=ie)}function Zi(e,t,n=Re,s=!1){M(e)&&(e=Zn(e));for(const r in e){const o=e[r];let i;fe(o)?"default"in o?i=Ft(o.from||r,o.default,!0):i=Ft(o.from||r):i=Ft(o),he(i)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[r]=i}}function Ws(e,t,n){Me(M(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Gr(e,t,n,s){const r=s.includes(".")?Xr(n,s):()=>n[s];if(pe(e)){const o=t[e];H(o)&&it(r,o)}else if(H(e))it(r,e.bind(n));else if(fe(e))if(M(e))e.forEach(o=>Gr(o,t,n,s));else{const o=H(e.handler)?e.handler.bind(n):t[e.handler];H(o)&&it(r,o,e)}}function eo(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>fn(c,f,i,!0)),fn(c,t,i)),o.set(t,c),c}function fn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&fn(e,o,n,!0),r&&r.forEach(i=>fn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Qi[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Qi={data:qs,props:nt,emits:nt,methods:nt,computed:nt,beforeCreate:ve,created:ve,beforeMount:ve,mounted:ve,beforeUpdate:ve,updated:ve,beforeDestroy:ve,beforeUnmount:ve,destroyed:ve,unmounted:ve,activated:ve,deactivated:ve,errorCaptured:ve,serverPrefetch:ve,components:nt,directives:nt,watch:el,provide:qs,inject:Gi};function qs(e,t){return t?e?function(){return ye(H(e)?e.call(this,this):e,H(t)?t.call(this,this):t)}:t:e}function Gi(e,t){return nt(Zn(e),Zn(t))}function Zn(e){if(M(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const h=e.vnode.dynamicProps;for(let m=0;m{c=!0;const[b,E]=no(m,t,!0);ye(i,b),E&&l.push(...E)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!o&&!c)return s.set(e,mt),mt;if(M(o))for(let h=0;h-1,E[1]=U<0||A-1||q(E,"default"))&&l.push(m)}}}const f=[i,l];return s.set(e,f),f}function Vs(e){return e[0]!=="$"}function zs(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Ys(e,t){return zs(e)===zs(t)}function Js(e,t){return M(t)?t.findIndex(n=>Ys(n,e)):H(t)&&Ys(t,e)?0:-1}const so=e=>e[0]==="_"||e==="$stable",ys=e=>M(e)?e.map(Le):[Le(e)],sl=(e,t,n)=>{const s=De((...r)=>ys(t(...r)),n);return s._c=!1,s},ro=(e,t,n)=>{const s=e._ctx;for(const r in e){if(so(r))continue;const o=e[r];if(H(o))t[r]=sl(r,o,s);else if(o!=null){const i=ys(o);t[r]=()=>i}}},oo=(e,t)=>{const n=ys(t);e.slots.default=()=>n},rl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=z(t),ln(t,"_",n)):ro(t,e.slots={})}else e.slots={},t&&oo(e,t);ln(e.slots,Pn,1)},ol=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ye(r,t),!n&&l===1&&delete r._):(o=!t.$stable,ro(t,r)),i=t}else t&&(oo(e,t),i={default:1});if(o)for(const l in r)!so(l)&&!(l in i)&&delete r[l]};function Ne(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let i=0;idn(b,t&&(M(t)?t[E]:t),n,s,r));return}if(Kt(s)&&!r)return;const o=s.shapeFlag&4?$s(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:c}=e,f=t&&t.r,h=l.refs===Z?l.refs={}:l.refs,m=l.setupState;if(f!=null&&f!==c&&(pe(f)?(h[f]=null,q(m,f)&&(m[f]=null)):he(f)&&(f.value=null)),H(c))Qe(c,l,12,[i,h]);else{const b=pe(c),E=he(c);if(b||E){const A=()=>{if(e.f){const U=b?h[c]:c.value;r?M(U)&&is(U,o):M(U)?U.includes(o)||U.push(o):b?(h[c]=[o],q(m,c)&&(m[c]=h[c])):(c.value=[o],e.k&&(h[e.k]=c.value))}else b?(h[c]=i,q(m,c)&&(m[c]=i)):he(c)&&(c.value=i,e.k&&(h[e.k]=i))};i?(A.id=-1,$e(A,n)):A()}}}let Ye=!1;const nn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Bn=e=>e.nodeType===8;function cl(e){const{mt:t,p:n,o:{patchProp:s,nextSibling:r,parentNode:o,remove:i,insert:l,createComment:c}}=e,f=(g,x)=>{if(!x.hasChildNodes()){n(null,g,x),un();return}Ye=!1,h(x.firstChild,g,null,null,null),un(),Ye&&console.error("Hydration completed but contains mismatches.")},h=(g,x,T,j,B,X=!1)=>{const Q=Bn(g)&&g.data==="[",K=()=>A(g,x,T,j,B,Q),{type:le,ref:ne,shapeFlag:oe}=x,_e=g.nodeType;x.el=g;let W=null;switch(le){case Wt:_e!==3?W=K():(g.data!==x.children&&(Ye=!0,g.data=x.children),W=r(g));break;case We:_e!==8||Q?W=K():W=r(g);break;case Nt:if(_e!==1)W=K();else{W=g;const ie=!x.children.length;for(let we=0;we{X=X||!!x.dynamicChildren;const{type:Q,props:K,patchFlag:le,shapeFlag:ne,dirs:oe}=x,_e=Q==="input"&&oe||Q==="option";if(_e||le!==-1){if(oe&&Ne(x,null,T,"created"),K)if(_e||!X||le&48)for(const ie in K)(_e&&ie.endsWith("value")||Vt(ie)&&!Ot(ie))&&s(g,ie,null,K[ie],!1,void 0,T);else K.onClick&&s(g,"onClick",null,K.onClick,!1,void 0,T);let W;if((W=K&&K.onVnodeBeforeMount)&&Ae(W,T,x),oe&&Ne(x,null,T,"beforeMount"),((W=K&&K.onVnodeMounted)||oe)&&Yr(()=>{W&&Ae(W,T,x),oe&&Ne(x,null,T,"mounted")},j),ne&16&&!(K&&(K.innerHTML||K.textContent))){let ie=b(g.firstChild,x,g,T,j,B,X);for(;ie;){Ye=!0;const we=ie;ie=ie.nextSibling,i(we)}}else ne&8&&g.textContent!==x.children&&(Ye=!0,g.textContent=x.children)}return g.nextSibling},b=(g,x,T,j,B,X,Q)=>{Q=Q||!!x.dynamicChildren;const K=x.children,le=K.length;for(let ne=0;ne{const{slotScopeIds:Q}=x;Q&&(B=B?B.concat(Q):Q);const K=o(g),le=b(r(g),x,K,T,j,B,X);return le&&Bn(le)&&le.data==="]"?r(x.anchor=le):(Ye=!0,l(x.anchor=c("]"),K,le),le)},A=(g,x,T,j,B,X)=>{if(Ye=!0,x.el=null,X){const le=U(g);for(;;){const ne=r(g);if(ne&&ne!==le)i(ne);else break}}const Q=r(g),K=o(g);return i(g),n(null,x,K,Q,T,j,nn(K),B),Q},U=g=>{let x=0;for(;g;)if(g=r(g),g&&Bn(g)&&(g.data==="["&&x++,g.data==="]")){if(x===0)return r(g);x--}return g};return[f,h]}const $e=Yr;function ul(e){return al(e,cl)}function al(e,t){const n=qo();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:f,setElementText:h,parentNode:m,nextSibling:b,setScopeId:E=Re,cloneNode:A,insertStaticContent:U}=e,g=(u,a,d,_=null,p=null,w=null,C=!1,y=null,k=!!a.dynamicChildren)=>{if(u===a)return;u&&!Pt(u,a)&&(_=Xt(u),Ve(u,p,w,!0),u=null),a.patchFlag===-2&&(k=!1,a.dynamicChildren=null);const{type:v,ref:I,shapeFlag:P}=a;switch(v){case Wt:x(u,a,d,_);break;case We:T(u,a,d,_);break;case Nt:u==null&&j(a,d,_,C);break;case de:ie(u,a,d,_,p,w,C,y,k);break;default:P&1?Q(u,a,d,_,p,w,C,y,k):P&6?we(u,a,d,_,p,w,C,y,k):(P&64||P&128)&&v.process(u,a,d,_,p,w,C,y,k,dt)}I!=null&&p&&dn(I,u&&u.ref,w,a||u,!a)},x=(u,a,d,_)=>{if(u==null)s(a.el=l(a.children),d,_);else{const p=a.el=u.el;a.children!==u.children&&f(p,a.children)}},T=(u,a,d,_)=>{u==null?s(a.el=c(a.children||""),d,_):a.el=u.el},j=(u,a,d,_)=>{[u.el,u.anchor]=U(u.children,a,d,_,u.el,u.anchor)},B=({el:u,anchor:a},d,_)=>{let p;for(;u&&u!==a;)p=b(u),s(u,d,_),u=p;s(a,d,_)},X=({el:u,anchor:a})=>{let d;for(;u&&u!==a;)d=b(u),r(u),u=d;r(a)},Q=(u,a,d,_,p,w,C,y,k)=>{C=C||a.type==="svg",u==null?K(a,d,_,p,w,C,y,k):oe(u,a,p,w,C,y,k)},K=(u,a,d,_,p,w,C,y)=>{let k,v;const{type:I,props:P,shapeFlag:O,transition:R,patchFlag:V,dirs:te}=u;if(u.el&&A!==void 0&&V===-1)k=u.el=A(u.el);else{if(k=u.el=i(u.type,w,P&&P.is,P),O&8?h(k,u.children):O&16&&ne(u.children,k,null,_,p,w&&I!=="foreignObject",C,y),te&&Ne(u,null,_,"created"),P){for(const ee in P)ee!=="value"&&!Ot(ee)&&o(k,ee,null,P[ee],w,u.children,_,p,Be);"value"in P&&o(k,"value",null,P.value),(v=P.onVnodeBeforeMount)&&Ae(v,_,u)}le(k,u,u.scopeId,C,_)}te&&Ne(u,null,_,"beforeMount");const J=(!p||p&&!p.pendingBranch)&&R&&!R.persisted;J&&R.beforeEnter(k),s(k,a,d),((v=P&&P.onVnodeMounted)||J||te)&&$e(()=>{v&&Ae(v,_,u),J&&R.enter(k),te&&Ne(u,null,_,"mounted")},p)},le=(u,a,d,_,p)=>{if(d&&E(u,d),_)for(let w=0;w<_.length;w++)E(u,_[w]);if(p){let w=p.subTree;if(a===w){const C=p.vnode;le(u,C,C.scopeId,C.slotScopeIds,p.parent)}}},ne=(u,a,d,_,p,w,C,y,k=0)=>{for(let v=k;v{const y=a.el=u.el;let{patchFlag:k,dynamicChildren:v,dirs:I}=a;k|=u.patchFlag&16;const P=u.props||Z,O=a.props||Z;let R;d&&tt(d,!1),(R=O.onVnodeBeforeUpdate)&&Ae(R,d,a,u),I&&Ne(a,u,d,"beforeUpdate"),d&&tt(d,!0);const V=p&&a.type!=="foreignObject";if(v?_e(u.dynamicChildren,v,y,d,_,V,w):C||Ue(u,a,y,null,d,_,V,w,!1),k>0){if(k&16)W(y,a,P,O,d,_,p);else if(k&2&&P.class!==O.class&&o(y,"class",null,O.class,p),k&4&&o(y,"style",P.style,O.style,p),k&8){const te=a.dynamicProps;for(let J=0;J{R&&Ae(R,d,a,u),I&&Ne(a,u,d,"updated")},_)},_e=(u,a,d,_,p,w,C)=>{for(let y=0;y{if(d!==_){for(const y in _){if(Ot(y))continue;const k=_[y],v=d[y];k!==v&&y!=="value"&&o(u,y,v,k,C,a.children,p,w,Be)}if(d!==Z)for(const y in d)!Ot(y)&&!(y in _)&&o(u,y,d[y],null,C,a.children,p,w,Be);"value"in _&&o(u,"value",d.value,_.value)}},ie=(u,a,d,_,p,w,C,y,k)=>{const v=a.el=u?u.el:l(""),I=a.anchor=u?u.anchor:l("");let{patchFlag:P,dynamicChildren:O,slotScopeIds:R}=a;R&&(y=y?y.concat(R):R),u==null?(s(v,d,_),s(I,d,_),ne(a.children,d,I,p,w,C,y,k)):P>0&&P&64&&O&&u.dynamicChildren?(_e(u.dynamicChildren,O,d,p,w,C,y),(a.key!=null||p&&a===p.subTree)&&lo(u,a,!0)):Ue(u,a,d,I,p,w,C,y,k)},we=(u,a,d,_,p,w,C,y,k)=>{a.slotScopeIds=y,u==null?a.shapeFlag&512?p.ctx.activate(a,d,_,C,k):In(a,d,_,p,w,C,k):ke(u,a,k)},In=(u,a,d,_,p,w,C)=>{const y=u.component=yl(u,_,p);if(xs(u)&&(y.ctx.renderer=dt),wl(y),y.asyncDep){if(p&&p.registerDep(y,se),!u.el){const k=y.subTree=S(We);T(null,k,a,d)}return}se(y,u,a,d,p,w,C)},ke=(u,a,d)=>{const _=a.component=u.component;if(Si(u,a,d))if(_.asyncDep&&!_.asyncResolved){G(_,a,d);return}else _.next=a,Pi(_.update),_.update();else a.component=u.component,a.el=u.el,_.vnode=a},se=(u,a,d,_,p,w,C)=>{const y=()=>{if(u.isMounted){let{next:I,bu:P,u:O,parent:R,vnode:V}=u,te=I,J;tt(u,!1),I?(I.el=V.el,G(u,I,C)):I=V,P&&Fn(P),(J=I.props&&I.props.onVnodeBeforeUpdate)&&Ae(J,R,I,V),tt(u,!0);const ee=Nn(u),Pe=u.subTree;u.subTree=ee,g(Pe,ee,m(Pe.el),Xt(Pe),u,p,w),I.el=ee.el,te===null&&Fi(u,ee.el),O&&$e(O,p),(J=I.props&&I.props.onVnodeUpdated)&&$e(()=>Ae(J,R,I,V),p)}else{let I;const{el:P,props:O}=a,{bm:R,m:V,parent:te}=u,J=Kt(a);if(tt(u,!1),R&&Fn(R),!J&&(I=O&&O.onVnodeBeforeMount)&&Ae(I,te,a),tt(u,!0),P&&Mn){const ee=()=>{u.subTree=Nn(u),Mn(P,u.subTree,u,p,null)};J?a.type.__asyncLoader().then(()=>!u.isUnmounted&&ee()):ee()}else{const ee=u.subTree=Nn(u);g(null,ee,d,_,u,p,w),a.el=ee.el}if(V&&$e(V,p),!J&&(I=O&&O.onVnodeMounted)){const ee=a;$e(()=>Ae(I,te,ee),p)}a.shapeFlag&256&&u.a&&$e(u.a,p),u.isMounted=!0,a=d=_=null}},k=u.effect=new as(y,()=>ms(u.update),u.scope),v=u.update=k.run.bind(k);v.id=u.uid,tt(u,!0),v()},G=(u,a,d)=>{a.component=u;const _=u.vnode.props;u.vnode=a,u.next=null,nl(u,a.props,_,d),ol(u,a.children,d),$t(),vs(void 0,u.update),Et()},Ue=(u,a,d,_,p,w,C,y,k=!1)=>{const v=u&&u.children,I=u?u.shapeFlag:0,P=a.children,{patchFlag:O,shapeFlag:R}=a;if(O>0){if(O&128){Tt(v,P,d,_,p,w,C,y,k);return}else if(O&256){On(v,P,d,_,p,w,C,y,k);return}}R&8?(I&16&&Be(v,p,w),P!==v&&h(d,P)):I&16?R&16?Tt(v,P,d,_,p,w,C,y,k):Be(v,p,w,!0):(I&8&&h(d,""),R&16&&ne(P,d,_,p,w,C,y,k))},On=(u,a,d,_,p,w,C,y,k)=>{u=u||mt,a=a||mt;const v=u.length,I=a.length,P=Math.min(v,I);let O;for(O=0;OI?Be(u,p,w,!0,!1,P):ne(a,d,_,p,w,C,y,k,P)},Tt=(u,a,d,_,p,w,C,y,k)=>{let v=0;const I=a.length;let P=u.length-1,O=I-1;for(;v<=P&&v<=O;){const R=u[v],V=a[v]=k?Xe(a[v]):Le(a[v]);if(Pt(R,V))g(R,V,d,null,p,w,C,y,k);else break;v++}for(;v<=P&&v<=O;){const R=u[P],V=a[O]=k?Xe(a[O]):Le(a[O]);if(Pt(R,V))g(R,V,d,null,p,w,C,y,k);else break;P--,O--}if(v>P){if(v<=O){const R=O+1,V=RO)for(;v<=P;)Ve(u[v],p,w,!0),v++;else{const R=v,V=v,te=new Map;for(v=V;v<=O;v++){const Ee=a[v]=k?Xe(a[v]):Le(a[v]);Ee.key!=null&&te.set(Ee.key,v)}let J,ee=0;const Pe=O-V+1;let ht=!1,Is=0;const At=new Array(Pe);for(v=0;v=Pe){Ve(Ee,p,w,!0);continue}let Se;if(Ee.key!=null)Se=te.get(Ee.key);else for(J=V;J<=O;J++)if(At[J-V]===0&&Pt(Ee,a[J])){Se=J;break}Se===void 0?Ve(Ee,p,w,!0):(At[Se-V]=v+1,Se>=Is?Is=Se:ht=!0,g(Ee,a[Se],d,null,p,w,C,y,k),ee++)}const Os=ht?fl(At):mt;for(J=Os.length-1,v=Pe-1;v>=0;v--){const Ee=V+v,Se=a[Ee],Rs=Ee+1{const{el:w,type:C,transition:y,children:k,shapeFlag:v}=u;if(v&6){ft(u.component.subTree,a,d,_);return}if(v&128){u.suspense.move(a,d,_);return}if(v&64){C.move(u,a,d,dt);return}if(C===de){s(w,a,d);for(let P=0;Py.enter(w),p);else{const{leave:P,delayLeave:O,afterLeave:R}=y,V=()=>s(w,a,d),te=()=>{P(w,()=>{V(),R&&R()})};O?O(w,V,te):te()}else s(w,a,d)},Ve=(u,a,d,_=!1,p=!1)=>{const{type:w,props:C,ref:y,children:k,dynamicChildren:v,shapeFlag:I,patchFlag:P,dirs:O}=u;if(y!=null&&dn(y,null,d,u,!0),I&256){a.ctx.deactivate(u);return}const R=I&1&&O,V=!Kt(u);let te;if(V&&(te=C&&C.onVnodeBeforeUnmount)&&Ae(te,a,u),I&6)Lo(u.component,d,_);else{if(I&128){u.suspense.unmount(d,_);return}R&&Ne(u,null,a,"beforeUnmount"),I&64?u.type.remove(u,a,d,p,dt,_):v&&(w!==de||P>0&&P&64)?Be(v,a,d,!1,!0):(w===de&&P&384||!p&&I&16)&&Be(k,a,d),_&&Ps(u)}(V&&(te=C&&C.onVnodeUnmounted)||R)&&$e(()=>{te&&Ae(te,a,u),R&&Ne(u,null,a,"unmounted")},d)},Ps=u=>{const{type:a,el:d,anchor:_,transition:p}=u;if(a===de){Po(d,_);return}if(a===Nt){X(u);return}const w=()=>{r(d),p&&!p.persisted&&p.afterLeave&&p.afterLeave()};if(u.shapeFlag&1&&p&&!p.persisted){const{leave:C,delayLeave:y}=p,k=()=>C(d,w);y?y(u.el,w,k):k()}else w()},Po=(u,a)=>{let d;for(;u!==a;)d=b(u),r(u),u=d;r(a)},Lo=(u,a,d)=>{const{bum:_,scope:p,update:w,subTree:C,um:y}=u;_&&Fn(_),p.stop(),w&&(w.active=!1,Ve(C,u,a,d)),y&&$e(y,a),$e(()=>{u.isUnmounted=!0},a),a&&a.pendingBranch&&!a.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===a.pendingId&&(a.deps--,a.deps===0&&a.resolve())},Be=(u,a,d,_=!1,p=!1,w=0)=>{for(let C=w;Cu.shapeFlag&6?Xt(u.component.subTree):u.shapeFlag&128?u.suspense.next():b(u.anchor||u.el),Ls=(u,a,d)=>{u==null?a._vnode&&Ve(a._vnode,null,null,!0):g(a._vnode||null,u,a,null,null,null,d),un(),a._vnode=u},dt={p:g,um:Ve,m:ft,r:Ps,mt:In,mc:ne,pc:Ue,pbc:_e,n:Xt,o:e};let Rn,Mn;return t&&([Rn,Mn]=t(dt)),{render:Ls,hydrate:Rn,createApp:ll(Ls,Rn)}}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function lo(e,t,n=!1){const s=e.children,r=t.children;if(M(s)&&M(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}const dl=e=>e.__isTeleport,co="components";function hn(e,t){return pl(co,e,!0,t)||e}const hl=Symbol();function pl(e,t,n=!0,s=!1){const r=be||ae;if(r){const o=r.type;if(e===co){const l=Cl(o);if(l&&(l===t||l===He(t)||l===wn(He(t))))return o}const i=Xs(r[e]||o[e],t)||Xs(r.appContext[e],t);return!i&&s?o:i}}function Xs(e,t){return e&&(e[t]||e[He(t)]||e[wn(He(t))])}const de=Symbol(void 0),Wt=Symbol(void 0),We=Symbol(void 0),Nt=Symbol(void 0),Ht=[];let lt=null;function L(e=!1){Ht.push(lt=e?null:[])}function _l(){Ht.pop(),lt=Ht[Ht.length-1]||null}let pn=1;function Zs(e){pn+=e}function uo(e){return e.dynamicChildren=pn>0?lt||mt:null,_l(),pn>0&<&<.push(e),e}function F(e,t,n,s,r,o){return uo(N(e,t,n,s,r,o,!0))}function ge(e,t,n,s,r){return uo(S(e,t,n,s,r,!0))}function _n(e){return e?e.__v_isVNode===!0:!1}function Pt(e,t){return e.type===t.type&&e.key===t.key}const Pn="__vInternal",ao=({key:e})=>e!=null?e:null,on=({ref:e,ref_key:t,ref_for:n})=>e!=null?pe(e)||he(e)||H(e)?{i:be,r:e,k:t,f:!!n}:e:null;function N(e,t=null,n=null,s=0,r=null,o=e===de?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ao(t),ref:t&&on(t),scopeId:Cn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null};return l?(ws(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=pe(n)?8:16),pn>0&&!i&<&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&<.push(c),c}const S=gl;function gl(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===hl)&&(e=We),_n(e)){const l=qt(e,t,!0);return n&&ws(l,n),l}if(Tl(e)&&(e=e.__vccOpts),t){t=ml(t);let{class:l,style:c}=t;l&&!pe(l)&&(t.class=ut(l)),fe(c)&&(Mr(c)&&!M(c)&&(c=ye({},c)),t.style=rs(c))}const i=pe(e)?1:Ni(e)?128:dl(e)?64:fe(e)?4:H(e)?2:0;return N(e,t,n,s,r,i,o,!0)}function ml(e){return e?Mr(e)||Pn in e?ye({},e):e:null}function qt(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:i}=e,l=t?ks(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&ao(l),ref:t&&t.ref?n&&r?M(r)?r.concat(on(t)):[r,on(t)]:on(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==de?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),el:e.el,anchor:e.anchor}}function Yt(e=" ",t=0){return S(Wt,null,e,t)}function nf(e,t){const n=S(Nt,null,e);return n.staticCount=t,n}function Y(e="",t=!1){return t?(L(),ge(We,null,e)):S(We,null,e)}function Le(e){return e==null||typeof e=="boolean"?S(We):M(e)?S(de,null,e.slice()):typeof e=="object"?Xe(e):S(Wt,null,String(e))}function Xe(e){return e.el===null||e.memo?e:qt(e)}function ws(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(M(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ws(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Pn in t)?t._ctx=be:r===3&&be&&(be.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else H(t)?(t={default:t,_ctx:be},n=32):(t=String(t),s&64?(n=16,t=[Yt(t)]):n=8);e.children=t,e.shapeFlag|=n}function ks(...e){const t={};for(let n=0;nt(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;l_n(t)?!(t.type===We||t.type===de&&!fo(t.children)):!0)?e:null}const Gn=e=>e?ho(e)?$s(e)||e.proxy:Gn(e.parent):null,gn=ye(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=>Gn(e.parent),$root:e=>Gn(e.root),$emit:e=>e.emit,$options:e=>eo(e),$forceUpdate:e=>()=>ms(e.update),$nextTick:e=>Dr.bind(e.proxy),$watch:e=>Ui.bind(e)}),vl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const E=i[t];if(E!==void 0)switch(E){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(s!==Z&&q(s,t))return i[t]=1,s[t];if(r!==Z&&q(r,t))return i[t]=2,r[t];if((f=e.propsOptions[0])&&q(f,t))return i[t]=3,o[t];if(n!==Z&&q(n,t))return i[t]=4,n[t];Xn&&(i[t]=0)}}const h=gn[t];let m,b;if(h)return t==="$attrs"&&Te(e,"get",t),h(e);if((m=l.__cssModules)&&(m=m[t]))return m;if(n!==Z&&q(n,t))return i[t]=4,n[t];if(b=c.config.globalProperties,q(b,t))return b[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return r!==Z&&q(r,t)?(r[t]=n,!0):s!==Z&&q(s,t)?(s[t]=n,!0):q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==Z&&q(e,i)||t!==Z&&q(t,i)||(l=o[0])&&q(l,i)||q(s,i)||q(gn,i)||q(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},bl=io();let xl=0;function yl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||bl,o={uid:xl++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new Vo(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:no(s,r),emitsOptions:qr(s,r),emit:null,emitted:null,propsDefaults:Z,inheritAttrs:s.inheritAttrs,ctx:Z,data:Z,props:Z,attrs:Z,slots:Z,refs:Z,setupState:Z,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=Oi.bind(null,o),e.ce&&e.ce(o),o}let ae=null;const sf=()=>ae||be,xt=e=>{ae=e,e.scope.on()},ct=()=>{ae&&ae.scope.off(),ae=null};function ho(e){return e.vnode.shapeFlag&4}let yt=!1;function wl(e,t=!1){yt=t;const{props:n,children:s}=e.vnode,r=ho(e);tl(e,n,r,t),rl(e,s);const o=r?kl(e,t):void 0;return yt=!1,o}function kl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Rt(new Proxy(e.ctx,vl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?El(e):null;xt(e),$t();const o=Qe(s,e,0,[e.props,r]);if(Et(),ct(),br(o)){if(o.then(ct,ct),t)return o.then(i=>{Qs(e,i,t)}).catch(i=>{zt(i,e,0)});e.asyncDep=o}else Qs(e,o,t)}else po(e,t)}function Qs(e,t,n){H(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:fe(t)&&(e.setupState=Hr(t)),po(e,n)}let Gs;function po(e,t,n){const s=e.type;if(!e.render){if(!t&&Gs&&!s.render){const r=s.template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ye(ye({isCustomElement:o,delimiters:l},i),c);s.render=Gs(r,f)}}e.render=s.render||Re}xt(e),$t(),Xi(e),Et(),ct()}function $l(e){return new Proxy(e.attrs,{get(t,n){return Te(e,"get","$attrs"),t[n]}})}function El(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=$l(e))},slots:e.slots,emit:e.emit,expose:t}}function $s(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Hr(Rt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in gn)return gn[n](e)}}))}function Cl(e){return H(e)&&e.displayName||e.name}function Tl(e){return H(e)&&"__vccOpts"in e}const D=(e,t)=>Ci(e,t,yt);function at(e,t,n){const s=arguments.length;return s===2?fe(t)&&!M(t)?_n(t)?S(e,null,[t]):S(e,t):S(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&_n(n)&&(n=[n]),S(e,t,n))}const Al="3.2.33",Pl="http://www.w3.org/2000/svg",st=typeof document!="undefined"?document:null,er=st&&st.createElement("template"),Ll={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?st.createElementNS(Pl,e):st.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{er.innerHTML=s?`${e}`:e;const l=er.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Il(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Ol(e,t,n){const s=e.style,r=pe(n);if(n&&!r){for(const o in n)es(s,o,n[o]);if(t&&!pe(t))for(const o in t)n[o]==null&&es(s,o,"")}else{const o=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=o)}}const tr=/\s*!important$/;function es(e,t,n){if(M(n))n.forEach(s=>es(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Rl(e,t);tr.test(n)?e.setProperty(kt(s),n.replace(tr,""),"important"):e[s]=n}}const nr=["Webkit","Moz","ms"],Dn={};function Rl(e,t){const n=Dn[t];if(n)return n;let s=He(t);if(s!=="filter"&&s in e)return Dn[t]=s;s=wn(s);for(let r=0;r{let e=Date.now,t=!1;if(typeof window!="undefined"){Date.now()>document.createEvent("Event").timeStamp&&(e=()=>performance.now());const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let ts=0;const Nl=Promise.resolve(),Hl=()=>{ts=0},Ul=()=>ts||(Nl.then(Hl),ts=_o());function Bl(e,t,n,s){e.addEventListener(t,n,s)}function Dl(e,t,n,s){e.removeEventListener(t,n,s)}function jl(e,t,n,s,r=null){const o=e._vei||(e._vei={}),i=o[t];if(s&&i)i.value=s;else{const[l,c]=Kl(t);if(s){const f=o[t]=Wl(s,r);Bl(e,l,f,c)}else i&&(Dl(e,l,i,c),o[t]=void 0)}}const rr=/(?:Once|Passive|Capture)$/;function Kl(e){let t;if(rr.test(e)){t={};let n;for(;n=e.match(rr);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[kt(e.slice(2)),t]}function Wl(e,t){const n=s=>{const r=s.timeStamp||_o();(Fl||r>=n.attached-1)&&Me(ql(s,n.value),t,5,[s])};return n.value=e,n.attached=Ul(),n}function ql(e,t){if(M(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const or=/^on[a-z]/,Vl=(e,t,n,s,r=!1,o,i,l,c)=>{t==="class"?Il(e,s,r):t==="style"?Ol(e,n,s):Vt(t)?os(t)||jl(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):zl(e,t,s,r))?Sl(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ml(e,t,s,r))};function zl(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&or.test(t)&&H(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||or.test(t)&&pe(n)?!1:t in e}const Yl=ye({patchProp:Vl},Ll);let jn,ir=!1;function Jl(){return jn=ir?jn:ul(Yl),ir=!0,jn}const Xl=(...e)=>{const t=Jl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Zl(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Zl(e){return pe(e)?document.querySelector(e):e}var Ql='{"lang":"en-US","title":"VitePress","description":"Vite & Vue powered static site generator.","base":"/","head":[],"themeConfig":{"repo":"vuejs/vitepress","docsDir":"docs","docsBranch":"main","editLinks":true,"editLinkText":"Edit this page on GitHub","lastUpdated":"Last Updated","algolia":{"appId":"8J64VVRP8K","apiKey":"a18e2f4cc5665f6602c5631fd868adfd","indexName":"vitepress"},"carbonAds":{"carbon":"CEBDT27Y","custom":"CKYD62QM","placement":"vuejsorg"},"nav":[{"text":"Guide","link":"/","activeMatch":"^/$|^/guide/"},{"text":"Config Reference","link":"/config/basics","activeMatch":"^/config/"},{"text":"Release Notes","link":"https://github.com/vuejs/vitepress/releases"}],"sidebar":{"/guide/":[{"text":"Introduction","children":[{"text":"What is VitePress?","link":"/"},{"text":"Getting Started","link":"/guide/getting-started"},{"text":"Configuration","link":"/guide/configuration"},{"text":"Asset Handling","link":"/guide/assets"},{"text":"Markdown Extensions","link":"/guide/markdown"},{"text":"Using Vue in Markdown","link":"/guide/using-vue"},{"text":"Deploying","link":"/guide/deploy"}]},{"text":"Advanced","children":[{"text":"Frontmatter","link":"/guide/frontmatter"},{"text":"Theming","link":"/guide/theming"},{"text":"API Reference","link":"/guide/api"},{"text":"Differences from Vuepress","link":"/guide/differences-from-vuepress"}]}],"/config/":[{"text":"App Config","children":[{"text":"Basics","link":"/config/basics"}]},{"text":"Theme Config","children":[{"text":"Homepage","link":"/config/homepage"},{"text":"Algolia Search","link":"/config/algolia-search"},{"text":"Carbon Ads","link":"/config/carbon-ads"}]}],"/":[{"text":"Introduction","children":[{"text":"What is VitePress?","link":"/"},{"text":"Getting Started","link":"/guide/getting-started"},{"text":"Configuration","link":"/guide/configuration"},{"text":"Asset Handling","link":"/guide/assets"},{"text":"Markdown Extensions","link":"/guide/markdown"},{"text":"Using Vue in Markdown","link":"/guide/using-vue"},{"text":"Deploying","link":"/guide/deploy"}]},{"text":"Advanced","children":[{"text":"Frontmatter","link":"/guide/frontmatter"},{"text":"Theming","link":"/guide/theming"},{"text":"API Reference","link":"/guide/api"},{"text":"Differences from Vuepress","link":"/guide/differences-from-vuepress"}]}]}},"locales":{},"langs":{},"scrollOffset":90}';const go=/^https?:/i,Oe=typeof window!="undefined";function Gl(e,t){t.sort((n,s)=>{const r=s.split("/").length-n.split("/").length;return r!==0?r:s.length-n.length});for(const n of t)if(e.startsWith(n))return n}function lr(e,t){const n=Gl(t,Object.keys(e));return n?e[n]:void 0}function ec(e){const{locales:t}=e.themeConfig||{},n=e.locales;return t&&n?Object.keys(t).reduce((s,r)=>(s[r]={label:t[r].label,lang:n[r].lang},s),{}):{}}function tc(e,t){t=nc(e,t);const n=lr(e.locales||{},t),s=lr(e.themeConfig.locales||{},t);return Object.assign({},e,n,{themeConfig:Object.assign({},e.themeConfig,s,{locales:{}}),lang:(n||e).lang,locales:{},langs:ec(e)})}function nc(e,t){if(!Oe)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}const mo=Symbol(),Jt=xi(sc(Ql));function sc(e){return JSON.parse(e)}function rc(e){const t=D(()=>tc(Jt.value,e.path));return{site:t,theme:D(()=>t.value.themeConfig),page:D(()=>e.data),frontmatter:D(()=>e.data.frontmatter),lang:D(()=>t.value.lang),localePath:D(()=>{const{langs:n,lang:s}=t.value,r=Object.keys(n).find(o=>n[o].lang===s);return wt(r||"/")}),title:D(()=>e.data.title?e.data.title+" | "+t.value.title:t.value.title),description:D(()=>e.data.description||t.value.description)}}function me(){const e=Ft(mo);if(!e)throw new Error("vitepress data not properly injected in app");return e}function oc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function wt(e){return go.test(e)?e:oc(Jt.value.base,e)}function vo(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t.endsWith("/")&&(t+="index"),Oe){const n="/";t=t.slice(n.length).replace(/\//g,"_")+".md";const s=__VP_HASH_MAP__[t.toLowerCase()];t=`${n}assets/${t}.${s}.js`}else t=`./${t.slice(1).replace(/\//g,"_")}.md.js`;return t}const bo=Symbol(),cr="http://a.com",xo={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{},lastUpdated:0},ic=()=>({path:"/",component:null,data:xo});function lc(e,t){const n=$n(ic());function s(i=Oe?location.href:"/"){const l=new URL(i,cr);return!l.pathname.endsWith("/")&&!l.pathname.endsWith(".html")&&(l.pathname+=".html",i=l.pathname+l.search+l.hash),Oe&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",i)),o(i)}let r=null;async function o(i,l=0,c=!1){const f=new URL(i,cr),h=r=f.pathname;try{let m=e(h);if("then"in m&&typeof m.then=="function"&&(m=await m),r===h){r=null;const{default:b,__pageData:E}=m;if(!b)throw new Error(`Invalid route component: ${b}`);n.path=h,n.component=Rt(b),n.data=Rt(JSON.parse(E)),Oe&&Dr(()=>{if(f.hash&&!l){let A=null;try{A=document.querySelector(decodeURIComponent(f.hash))}catch(U){console.warn(U)}if(A){ur(A,f.hash);return}}window.scrollTo(0,l)})}}catch(m){if(m.message.match(/fetch/)||console.error(m),!c)try{const b=await fetch(Jt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await o(i,l,!0);return}catch{}r===h&&(r=null,n.path=h,n.component=t?Rt(t):null,n.data=xo)}}return Oe&&(window.addEventListener("click",i=>{const l=i.target.closest("a");if(l){const{href:c,protocol:f,hostname:h,pathname:m,hash:b,target:E}=l,A=window.location,U=m.match(/\.\w+$/);!i.ctrlKey&&!i.shiftKey&&!i.altKey&&!i.metaKey&&E!=="_blank"&&f===A.protocol&&h===A.hostname&&!(U&&U[0]!==".html")&&(i.preventDefault(),m===A.pathname?b&&b!==A.hash&&(history.pushState(null,"",b),window.dispatchEvent(new Event("hashchange")),ur(l,b,l.classList.contains("header-anchor"))):s(c))}},{capture:!0}),window.addEventListener("popstate",i=>{o(location.href,i.state&&i.state.scrollPosition||0)}),window.addEventListener("hashchange",i=>{i.preventDefault()})),{route:n,go:s}}function cc(){const e=Ft(bo);if(!e)throw new Error("useRouter() is called without provider.");return e}function et(){return cc().route}function ur(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(r){console.warn(r)}if(s){let r=Jt.value.scrollOffset;typeof r=="string"&&(r=document.querySelector(r).getBoundingClientRect().bottom+24);const o=parseInt(window.getComputedStyle(s).paddingTop,10),i=window.scrollY+s.getBoundingClientRect().top-r+o;!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})}}function uc(e,t){let n=[],s=!0;const r=o=>{if(s){s=!1;return}const i=[],l=Math.min(n.length,o.length);for(let c=0;cdocument.head.removeChild(c)),o.slice(l).forEach(c=>{const f=ar(c);document.head.appendChild(f),i.push(f)}),n=i};Jr(()=>{const o=e.data,i=t.value,l=o&&o.title,c=o&&o.description,f=o&&o.frontmatter.head;document.title=(l?l+" | ":"")+i.title,document.querySelector("meta[name=description]").setAttribute("content",c||i.description),r([...f?fc(f):[]])})}function ar([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function ac(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function fc(e){return e.filter(t=>!ac(t))}const dc=re({name:"VitePressContent",setup(){const e=et();return()=>at("div",{style:{position:"relative"}},[e.component?at(e.component):null])}});var ce=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const hc=/#.*$/,pc=/(index)?\.(md|html)$/,mn=/\/$/,_c=/^[a-z]+:/i;function Es(e){return Array.isArray(e)}function Cs(e){return _c.test(e)}function gc(e,t){if(t===void 0)return!1;const n=fr(`/${e.data.relativePath}`),s=fr(t);return n===s}function fr(e){return decodeURI(e).replace(hc,"").replace(pc,"")}function mc(e,t){const n=e.endsWith("/"),s=t.startsWith("/");return n&&s?e.slice(0,-1)+t:!n&&!s?`${e}/${t}`:e+t}function ns(e){return/^\//.test(e)?e:`/${e}`}function yo(e){return e.replace(/(index)?(\.(md|html))?$/,"")||"/"}function vc(e){return e===!1||e==="auto"||Es(e)}function bc(e){return e.children!==void 0}function xc(e){return Es(e)?e.length===0:!e}function Ts(e,t){if(vc(e))return e;t=ns(t);for(const n in e)if(t.startsWith(ns(n)))return e[n];return"auto"}function wo(e){return e.reduce((t,n)=>(n.link&&t.push({text:n.text,link:yo(n.link)}),bc(n)&&(t=[...t,...wo(n.children)]),t),[])}function ko(e){const t=et(),n=Cs(e.value.link);return{props:D(()=>{const r=dr(`/${t.data.relativePath}`);let o=!1;if(e.value.activeMatch)o=new RegExp(e.value.activeMatch).test(r);else{const i=dr(e.value.link);o=i==="/"?i===r:r.startsWith(i)}return{class:{active:o,isExternal:n},href:n?e.value.link:wt(e.value.link),target:e.value.target||(n?"_blank":null),rel:e.value.rel||(n?"noopener noreferrer":null),"aria-label":e.value.ariaLabel}}),isExternal:n}}function dr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\.(html|md)$/,"").replace(/\/index$/,"/")}const yc={},wc={class:"icon outbound",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},kc=N("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"},null,-1),$c=N("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"},null,-1),Ec=[kc,$c];function Cc(e,t){return L(),F("svg",wc,Ec)}var As=ce(yc,[["render",Cc]]);const Tc={class:"nav-link"},Ac=re({props:{item:null},setup(e){const n=Ur(e),{props:s,isExternal:r}=ko(n.item);return(o,i)=>(L(),F("div",Tc,[N("a",ks({class:"item"},$(s)),[Yt(xe(e.item.text)+" ",1),$(r)?(L(),ge(As,{key:0})):Y("",!0)],16)]))}});var vn=ce(Ac,[["__scopeId","data-v-b8818f8c"]]);const Pc={key:0,class:"home-hero"},Lc={key:0,class:"figure"},Ic=["src","alt"],Oc={key:1,id:"main-title",class:"title"},Rc={key:2,class:"tagline"},Mc=re({setup(e){const{site:t,frontmatter:n}=me(),s=D(()=>{const{heroImage:i,heroText:l,tagline:c,actionLink:f,actionText:h}=n.value;return i||l||c||f&&h}),r=D(()=>n.value.heroText||t.value.title),o=D(()=>n.value.tagline||t.value.description);return(i,l)=>$(s)?(L(),F("header",Pc,[$(n).heroImage?(L(),F("figure",Lc,[N("img",{class:"image",src:$(wt)($(n).heroImage),alt:$(n).heroAlt},null,8,Ic)])):Y("",!0),$(r)?(L(),F("h1",Oc,xe($(r)),1)):Y("",!0),$(o)?(L(),F("p",Rc,xe($(o)),1)):Y("",!0),$(n).actionLink&&$(n).actionText?(L(),ge(vn,{key:3,item:{link:$(n).actionLink,text:$(n).actionText},class:"action"},null,8,["item"])):Y("",!0),$(n).altActionLink&&$(n).altActionText?(L(),ge(vn,{key:4,item:{link:$(n).altActionLink,text:$(n).altActionText},class:"action alt"},null,8,["item"])):Y("",!0)])):Y("",!0)}});var Sc=ce(Mc,[["__scopeId","data-v-370f18c0"]]);const Fc={key:0,class:"home-features"},Nc={class:"wrapper"},Hc={class:"container"},Uc={class:"features"},Bc={key:0,class:"title"},Dc={key:1,class:"details"},jc=re({setup(e){const{frontmatter:t}=me(),n=D(()=>t.value.features&&t.value.features.length>0),s=D(()=>t.value.features?t.value.features:[]);return(r,o)=>$(n)?(L(),F("div",Fc,[N("div",Nc,[N("div",Hc,[N("div",Uc,[(L(!0),F(de,null,Ln($(s),(i,l)=>(L(),F("section",{key:l,class:"feature"},[i.title?(L(),F("h2",Bc,xe(i.title),1)):Y("",!0),i.details?(L(),F("p",Dc,xe(i.details),1)):Y("",!0)]))),128))])])])])):Y("",!0)}});var Kc=ce(jc,[["__scopeId","data-v-e39c13e0"]]);const Wc={key:0,class:"footer"},qc={class:"container"},Vc={class:"text"},zc=re({setup(e){const{frontmatter:t}=me();return(n,s)=>$(t).footer?(L(),F("footer",Wc,[N("div",qc,[N("p",Vc,xe($(t).footer),1)])])):Y("",!0)}});var Yc=ce(zc,[["__scopeId","data-v-30918238"]]);const Jc={class:"home","aria-labelledby":"main-title"},Xc={class:"home-content"},Zc=re({setup(e){return(t,n)=>{const s=hn("Content");return L(),F("main",Jc,[S(Sc),ue(t.$slots,"hero",{},void 0,!0),S(Kc),N("div",Xc,[S(s)]),ue(t.$slots,"features",{},void 0,!0),S(Yc),ue(t.$slots,"footer",{},void 0,!0)])}}});var Qc=ce(Zc,[["__scopeId","data-v-10122c92"]]);const Gc=["href","aria-label"],eu=["src"],tu=re({setup(e){const{site:t,theme:n,localePath:s}=me();return(r,o)=>(L(),F("a",{class:"nav-bar-title",href:$(s),"aria-label":`${$(t).title}, back to home`},[$(n).logo?(L(),F("img",{key:0,class:"logo",src:$(wt)($(n).logo),alt:"Logo"},null,8,eu)):Y("",!0),Yt(" "+xe($(t).title),1)],8,Gc))}});var nu=ce(tu,[["__scopeId","data-v-cc01ef16"]]);function su(){const{site:e,localePath:t,theme:n}=me();return D(()=>{const s=e.value.langs,r=Object.keys(s);if(r.length<2)return null;const i=et().path.replace(t.value,""),l=r.map(f=>({text:s[f].label,link:`${f}${i}`}));return{text:n.value.selectText||"Languages",items:l}})}const ru=["GitHub","GitLab","Bitbucket"].map(e=>[e,new RegExp(e,"i")]);function ou(){const{site:e}=me();return D(()=>{const t=e.value.themeConfig,n=t.docsRepo||t.repo;if(!n)return null;const s=iu(n);return{text:lu(s,t.repoLabel),link:s}})}function iu(e){return go.test(e)?e:`https://github.com/${e}`}function lu(e,t){if(t)return t;const n=e.match(/^https?:\/\/[^/]+/);if(!n)return"Source";const s=ru.find(([r,o])=>o.test(n[0]));return s&&s[0]?s[0]:"Source"}const cu=e=>(Vr("data-v-bbc27490"),e=e(),zr(),e),uu={class:"nav-dropdown-link-item"},au=cu(()=>N("span",{class:"arrow"},null,-1)),fu={class:"text"},du={class:"icon"},hu=re({props:{item:null},setup(e){const n=Ur(e),{props:s,isExternal:r}=ko(n.item);return(o,i)=>(L(),F("div",uu,[N("a",ks({class:"item"},$(s)),[au,N("span",fu,xe(e.item.text),1),N("span",du,[$(r)?(L(),ge(As,{key:0})):Y("",!0)])],16)]))}});var pu=ce(hu,[["__scopeId","data-v-bbc27490"]]);const _u=["aria-label"],gu={class:"button-text"},mu={class:"dialog"},vu=re({props:{item:null},setup(e){const t=et(),n=ot(!1);it(()=>t.path,()=>{n.value=!1});function s(){n.value=!n.value}return(r,o)=>(L(),F("div",{class:ut(["nav-dropdown-link",{open:n.value}])},[N("button",{class:"button","aria-label":e.item.ariaLabel,onClick:s},[N("span",gu,xe(e.item.text),1),N("span",{class:ut(["button-arrow",n.value?"down":"right"])},null,2)],8,_u),N("ul",mu,[(L(!0),F(de,null,Ln(e.item.items,i=>(L(),F("li",{key:i.text,class:"dialog-item"},[S(pu,{item:i},null,8,["item"])]))),128))])],2))}});var hr=ce(vu,[["__scopeId","data-v-56bf3a3f"]]);const bu={key:0,class:"nav-links"},xu={key:1,class:"item"},yu={key:2,class:"item"},wu=re({setup(e){const{theme:t}=me(),n=su(),s=ou(),r=D(()=>t.value.nav||s.value||n.value);return(o,i)=>$(r)?(L(),F("nav",bu,[$(t).nav?(L(!0),F(de,{key:0},Ln($(t).nav,l=>(L(),F("div",{key:l.text,class:"item"},[l.items?(L(),ge(hr,{key:0,item:l},null,8,["item"])):(L(),ge(vn,{key:1,item:l},null,8,["item"]))]))),128)):Y("",!0),$(n)?(L(),F("div",xu,[S(hr,{item:$(n)},null,8,["item"])])):Y("",!0),$(s)?(L(),F("div",yu,[S(vn,{item:$(s)},null,8,["item"])])):Y("",!0)])):Y("",!0)}});var $o=ce(wu,[["__scopeId","data-v-eab3edfe"]]);const ku={emits:["toggle"]},$u=N("svg",{class:"icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"},[N("path",{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z",class:""})],-1),Eu=[$u];function Cu(e,t,n,s,r,o){return L(),F("div",{class:"sidebar-button",onClick:t[0]||(t[0]=i=>e.$emit("toggle"))},Eu)}var Tu=ce(ku,[["render",Cu]]);const Au=e=>(Vr("data-v-675d8756"),e=e(),zr(),e),Pu={class:"nav-bar"},Lu=Au(()=>N("div",{class:"flex-grow"},null,-1)),Iu={class:"nav"},Ou=re({emits:["toggle"],setup(e){return(t,n)=>(L(),F("header",Pu,[S(Tu,{onToggle:n[0]||(n[0]=s=>t.$emit("toggle"))}),S(nu),Lu,N("div",Iu,[S($o)]),ue(t.$slots,"search",{},void 0,!0)]))}});var Ru=ce(Ou,[["__scopeId","data-v-675d8756"]]);function Mu(){let e=null,t=null;const n=Uu(s,300);function s(){const i=Su(),l=Fu(i);for(let c=0;c ul > li");l&&l!==t.parentElement?(e=l.querySelector("a"),e&&e.classList.add("active")):e=null}function o(i){i&&i.classList.remove("active")}Ct(()=>{s(),window.addEventListener("scroll",n)}),Qr(()=>{r(decodeURIComponent(location.hash))}),An(()=>{window.removeEventListener("scroll",n)})}function Su(){return[].slice.call(document.querySelectorAll(".sidebar a.sidebar-link-item"))}function Fu(e){return[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(n=>n.hash===t.hash))}function Nu(){return document.querySelector(".nav-bar").offsetHeight}function pr(e){const t=Nu();return e.parentElement.offsetTop-t-15}function Hu(e,t,n){const s=window.scrollY;return e===0&&s===0?[!0,null]:s{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),s=!0,setTimeout(()=>{s=!1},t))}}function Bu(){const e=et(),{site:t}=me();return Mu(),D(()=>{const n=e.data.headers,s=e.data.frontmatter.sidebar,r=e.data.frontmatter.sidebarDepth;if(s===!1)return[];if(s==="auto")return _r(n,r);const o=Ts(t.value.themeConfig.sidebar,e.data.relativePath);return o===!1?[]:o==="auto"?_r(n,r):o})}function _r(e,t){const n=[];if(e===void 0)return[];let s;return e.forEach(({level:r,title:o,slug:i})=>{if(r-1>t)return;const l={text:o,link:`#${i}`};r===2?(s=l,n.push(l)):s&&(s.children||(s.children=[])).push(l)}),n}const Eo=e=>{const t=et(),{site:n,frontmatter:s}=me(),r=e.depth||1,o=s.value.sidebarDepth||1/0,i=t.data.headers,l=e.item.text,c=Du(n.value.base,e.item.link),f=e.item.children,h=gc(t,e.item.link),m=r0?at("ul",{class:"sidebar-links"},t.map(r=>at(Eo,{item:r,depth:s}))):e&&n?Co(!1,ju(n),void 0,s):null}function ju(e){return To(Ku(e))}function Ku(e){e=e.map(n=>Object.assign({},n));let t;return e.forEach(n=>{n.level===2?t=n:t&&(t.children||(t.children=[])).push(n)}),e.filter(n=>n.level===2)}function To(e){return e.map(t=>({text:t.title,link:`#${t.slug}`,children:t.children?To(t.children):void 0}))}const Wu={key:0,class:"sidebar-links"},qu=re({setup(e){const t=Bu();return(n,s)=>$(t).length>0?(L(),F("ul",Wu,[(L(!0),F(de,null,Ln($(t),r=>(L(),ge($(Eo),{item:r},null,8,["item"]))),256))])):Y("",!0)}});const Vu=re({props:{open:{type:Boolean}},setup(e){return(t,n)=>(L(),F("aside",{class:ut(["sidebar",{open:e.open}])},[S($o,{class:"nav"}),ue(t.$slots,"sidebar-top",{},void 0,!0),S(qu),ue(t.$slots,"sidebar-bottom",{},void 0,!0)],2))}});var zu=ce(Vu,[["__scopeId","data-v-83e92a68"]]);const Yu=/bitbucket.org/;function Ju(){const{page:e,theme:t,frontmatter:n}=me(),s=D(()=>{const{repo:o,docsDir:i="",docsBranch:l="master",docsRepo:c=o,editLinks:f}=t.value,h=n.value.editLink!=null?n.value.editLink:f,{relativePath:m}=e.value;return!h||!m||!o?null:Xu(o,c,i,l,m)}),r=D(()=>t.value.editLinkText||"Edit this page");return{url:s,text:r}}function Xu(e,t,n,s,r){return Yu.test(e)?Qu(e,t,n,s,r):Zu(e,t,n,s,r)}function Zu(e,t,n,s,r){return(Cs(t)?t:`https://github.com/${t}`).replace(mn,"")+`/edit/${s}/`+(n?n.replace(mn,"")+"/":"")+r}function Qu(e,t,n,s,r){return(Cs(t)?t:e).replace(mn,"")+`/src/${s}/`+(n?n.replace(mn,"")+"/":"")+r+`?mode=edit&spa=0&at=${s}&fileviewer=file-view-default`}const Gu={class:"edit-link"},ea=["href"],ta=re({setup(e){const{url:t,text:n}=Ju();return(s,r)=>(L(),F("div",Gu,[$(t)?(L(),F("a",{key:0,class:"link",href:$(t),target:"_blank",rel:"noopener noreferrer"},[Yt(xe($(n))+" ",1),S(As,{class:"icon"})],8,ea)):Y("",!0)]))}});var na=ce(ta,[["__scopeId","data-v-1ed99556"]]);const sa={key:0,class:"last-updated"},ra={class:"prefix"},oa={class:"datetime"},ia=re({setup(e){const{theme:t,page:n}=me(),s=D(()=>{const i=t.value.lastUpdated;return i!==void 0&&i!==!1&&n.value.lastUpdated!==0}),r=D(()=>{const i=t.value.lastUpdated;return i===!0?"Last Updated":i}),o=ot("");return Ct(()=>{Jr(()=>{o.value=new Date(n.value.lastUpdated).toLocaleString("en-US")})}),(i,l)=>$(s)?(L(),F("p",sa,[N("span",ra,xe($(r))+":",1),N("span",oa,xe(o.value),1)])):Y("",!0)}});var la=ce(ia,[["__scopeId","data-v-abce3432"]]);const ca={class:"page-footer"},ua={class:"edit"},aa={class:"updated"},fa=re({setup(e){const{page:t}=me();return(n,s)=>(L(),F("footer",ca,[N("div",ua,[S(na)]),N("div",aa,[$(t).lastUpdated?(L(),ge(la,{key:0})):Y("",!0)])]))}});var da=ce(fa,[["__scopeId","data-v-07c132fc"]]);function ha(){const{page:e,theme:t}=me(),n=D(()=>yo(ns(e.value.relativePath))),s=D(()=>{const c=Ts(t.value.sidebar,n.value);return Es(c)?wo(c):[]}),r=D(()=>s.value.findIndex(c=>c.link===n.value)),o=D(()=>{if(t.value.nextLinks!==!1&&r.value>-1&&r.value{if(t.value.prevLinks!==!1&&r.value>0)return s.value[r.value-1]}),l=D(()=>!!o.value||!!i.value);return{next:o,prev:i,hasLinks:l}}const pa={},_a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},ga=N("path",{d:"M19,11H7.4l5.3-5.3c0.4-0.4,0.4-1,0-1.4s-1-0.4-1.4,0l-7,7c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.2-0.1,0.5,0,0.8c0.1,0.1,0.1,0.2,0.2,0.3l7,7c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4L7.4,13H19c0.6,0,1-0.4,1-1S19.6,11,19,11z"},null,-1),ma=[ga];function va(e,t){return L(),F("svg",_a,ma)}var ba=ce(pa,[["render",va]]);const xa={},ya={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},wa=N("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),ka=[wa];function $a(e,t){return L(),F("svg",ya,ka)}var Ea=ce(xa,[["render",$a]]);const Ca={key:0,class:"next-and-prev-link"},Ta={class:"container"},Aa={class:"prev"},Pa=["href"],La={class:"text"},Ia={class:"next"},Oa=["href"],Ra={class:"text"},Ma=re({setup(e){const{hasLinks:t,prev:n,next:s}=ha();return(r,o)=>$(t)?(L(),F("div",Ca,[N("div",Ta,[N("div",Aa,[$(n)?(L(),F("a",{key:0,class:"link",href:$(wt)($(n).link)},[S(ba,{class:"icon icon-prev"}),N("span",La,xe($(n).text),1)],8,Pa)):Y("",!0)]),N("div",Ia,[$(s)?(L(),F("a",{key:0,class:"link",href:$(wt)($(s).link)},[N("span",Ra,xe($(s).text),1),S(Ea,{class:"icon icon-next"})],8,Oa)):Y("",!0)])])])):Y("",!0)}});var Sa=ce(Ma,[["__scopeId","data-v-38ede35f"]]);const Fa={class:"page"},Na={class:"container"},Ha=re({setup(e){return(t,n)=>{const s=hn("Content");return L(),F("main",Fa,[N("div",Na,[ue(t.$slots,"top",{},void 0,!0),S(s,{class:"content"}),S(da),S(Sa),ue(t.$slots,"bottom",{},void 0,!0)])])}}});var Ua=ce(Ha,[["__scopeId","data-v-7eddb2c4"]]);const Ba={key:0,id:"ads-container"},Da=re({setup(e){const t=Hn(()=>rn(()=>import("./chunks/ui-custom.1a068566.js"),[])),n=Hn(()=>rn(()=>import("./chunks/ui-custom.30ce3a39.js"),[])),s=Hn(()=>rn(()=>import("./chunks/AlgoliaSearchBox.e5144af4.js"),[])),r=et(),{site:o,page:i,theme:l,frontmatter:c}=me(),f=D(()=>!!c.value.customLayout),h=D(()=>!!c.value.home),m=D(()=>Object.keys(o.value.langs).length>1),b=D(()=>{const T=l.value;return c.value.navbar===!1||T.navbar===!1?!1:o.value.title||T.logo||T.repo||T.nav}),E=ot(!1),A=D(()=>c.value.home||c.value.sidebar===!1?!1:!xc(Ts(l.value.sidebar,r.data.relativePath))),U=T=>{E.value=typeof T=="boolean"?T:!E.value},g=U.bind(null,!1);it(r,g);const x=D(()=>[{"no-navbar":!b.value,"sidebar-open":E.value,"no-sidebar":!A.value}]);return(T,j)=>{const B=hn("Content"),X=hn("Debug");return L(),F(de,null,[N("div",{class:ut(["theme",$(x)])},[$(b)?(L(),ge(Ru,{key:0,onToggle:U},{search:De(()=>[ue(T.$slots,"navbar-search",{},()=>[$(l).algolia?(L(),ge($(s),{key:0,options:$(l).algolia,multilang:$(m)},null,8,["options","multilang"])):Y("",!0)])]),_:3})):Y("",!0),S(zu,{open:E.value},{"sidebar-top":De(()=>[ue(T.$slots,"sidebar-top")]),"sidebar-bottom":De(()=>[ue(T.$slots,"sidebar-bottom")]),_:3},8,["open"]),N("div",{class:"sidebar-mask",onClick:j[0]||(j[0]=Q=>U(!1))}),$(f)?(L(),ge(B,{key:1})):$(h)?ue(T.$slots,"home",{key:2},()=>[S(Qc,null,{hero:De(()=>[ue(T.$slots,"home-hero")]),features:De(()=>[ue(T.$slots,"home-features")]),footer:De(()=>[ue(T.$slots,"home-footer")]),_:3})]):(L(),ge(Ua,{key:3},{top:De(()=>[ue(T.$slots,"page-top-ads",{},()=>[$(l).carbonAds&&$(l).carbonAds.carbon?(L(),F("div",Ba,[(L(),ge($(t),{key:"carbon"+$(i).relativePath,code:$(l).carbonAds.carbon,placement:$(l).carbonAds.placement},null,8,["code","placement"]))])):Y("",!0)]),ue(T.$slots,"page-top")]),bottom:De(()=>[ue(T.$slots,"page-bottom"),ue(T.$slots,"page-bottom-ads",{},()=>[$(l).carbonAds&&$(l).carbonAds.custom?(L(),ge($(n),{key:"custom"+$(i).relativePath,code:$(l).carbonAds.custom,placement:$(l).carbonAds.placement},null,8,["code","placement"])):Y("",!0)])]),_:3}))],2),S(X)],64)}}}),ja={class:"theme"},Ka=N("h1",null,"404",-1),Wa=["href"],qa=re({setup(e){const{site:t}=me(),n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."];function s(){return n[Math.floor(Math.random()*n.length)]}return(r,o)=>(L(),F("div",ja,[Ka,N("blockquote",null,xe(s()),1),N("a",{href:$(t).base,"aria-label":"go to home"},"Take me home.",8,Wa)]))}}),bn={Layout:Da,NotFound:qa},Kn=new Set,Ao=()=>document.createElement("link"),Va=e=>{const t=Ao();t.rel="prefetch",t.href=e,document.head.appendChild(t)},za=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let sn;const Ya=Oe&&(sn=Ao())&&sn.relList&&sn.relList.supports&&sn.relList.supports("prefetch")?Va:za;function Ja(){if(!Oe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!Kn.has(c)){Kn.add(c);const f=vo(c);Ya(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{target:i,hostname:l,pathname:c}=o,f=c.match(/\.\w+$/);f&&f[0]!==".html"||i!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(o):Kn.add(c))})})};Ct(s);const r=et();it(()=>r.path,s),An(()=>{n&&n.disconnect()})}const Xa=re({setup(e,{slots:t}){const n=ot(!1);return Ct(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}}),Za=bn.NotFound||(()=>"404 Not Found"),Qa={name:"VitePressApp",setup(){const{site:e}=me();return Ct(()=>{it(()=>e.value.lang,t=>{document.documentElement.lang=t},{immediate:!0})}),Ja(),()=>at(bn.Layout)}};function Ga(){const e=tf(),t=ef();t.provide(bo,e);const n=rc(e.route);return t.provide(mo,n),t.component("Content",dc),t.component("ClientOnly",Xa),t.component("Debug",()=>null),Object.defineProperty(t.config.globalProperties,"$frontmatter",{get(){return n.frontmatter.value}}),bn.enhanceApp&&bn.enhanceApp({app:t,router:e,siteData:Jt}),{app:t,router:e,data:n}}function ef(){return Xl(Qa)}function tf(){let e=Oe,t;return lc(n=>{let s=vo(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),Oe?(e=!1,rn(()=>import(s),[])):require(s)},Za)}if(Oe){const{app:e,router:t,data:n}=Ga();t.go().then(()=>{uc(t.route,n.site),e.mount("#app")})}export{de as F,ce as _,nf as a,N as b,F as c,Ga as createApp,S as d,Yt as e,hn as f,re as g,ot as h,Ct as i,zr as j,cc as k,me as l,sf as m,ut as n,L as o,Vr as p,Ln as r,xe as t,et as u,it as w}; diff --git a/assets/app.61e847e1.js b/assets/app.61e847e1.js new file mode 100644 index 00000000..b6b28b4d --- /dev/null +++ b/assets/app.61e847e1.js @@ -0,0 +1 @@ +const Si="modulepreload",As={},Ti="/",Ai=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Ti}${s}`,s in As)return;As[s]=!0;const r=s.endsWith(".css"),i=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${i}`))return;const o=document.createElement("link");if(o.rel=r?"stylesheet":Si,r||(o.as="script",o.crossOrigin=""),o.href=s,document.head.appendChild(o),r)return new Promise((l,c)=>{o.addEventListener("load",l),o.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};function es(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const Li="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Pi=es(Li);function fr(e){return!!e||e===""}function ts(e){if(O(e)){const t={};for(let n=0;n{if(n){const s=n.split(Mi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ct(e){let t="";if(he(e))t=e;else if(O(e))for(let n=0;nhe(e)?e:e==null?"":O(e)||ue(e)&&(e.toString===_r||!F(e.toString))?JSON.stringify(e,dr,2):String(e),dr=(e,t)=>t&&t.__v_isRef?dr(e,t.value):mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:hr(t)?{[`Set(${t.size})`]:[...t.values()]}:ue(t)&&!O(t)&&!gr(t)?String(t):t,Z={},gt=[],Me=()=>{},Ui=()=>!1,Ri=/^on[^a-z]/,Wt=e=>Ri.test(e),ns=e=>e.startsWith("onUpdate:"),xe=Object.assign,ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Fi=Object.prototype.hasOwnProperty,q=(e,t)=>Fi.call(e,t),O=Array.isArray,mt=e=>mn(e)==="[object Map]",hr=e=>mn(e)==="[object Set]",F=e=>typeof e=="function",he=e=>typeof e=="string",rs=e=>typeof e=="symbol",ue=e=>e!==null&&typeof e=="object",pr=e=>ue(e)&&F(e.then)&&F(e.catch),_r=Object.prototype.toString,mn=e=>_r.call(e),Ni=e=>mn(e).slice(8,-1),gr=e=>mn(e)==="[object Object]",is=e=>he(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Lt=es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),vn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Hi=/-(\w)/g,Ne=vn(e=>e.replace(Hi,(t,n)=>n?n.toUpperCase():"")),Bi=/\B([A-Z])/g,yt=vn(e=>e.replace(Bi,"-$1").toLowerCase()),bn=vn(e=>e.charAt(0).toUpperCase()+e.slice(1)),On=vn(e=>e?`on${bn(e)}`:""),Ft=(e,t)=>!Object.is(e,t),Un=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Di=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ls;const ji=()=>Ls||(Ls=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Re;class qi{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Re&&(this.parent=Re,this.index=(Re.scopes||(Re.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Re;try{return Re=this,t()}finally{Re=n}}}on(){Re=this}off(){Re=this.parent}stop(t){if(this.active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},mr=e=>(e.w&Ge)>0,vr=e=>(e.n&Ge)>0,Wi=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(f==="length"||f>=s)&&l.push(c)});else switch(n!==void 0&&l.push(o.get(n)),t){case"add":O(e)?is(n)&&l.push(o.get("length")):(l.push(o.get(rt)),mt(e)&&l.push(o.get(qn)));break;case"delete":O(e)||(l.push(o.get(rt)),mt(e)&&l.push(o.get(qn)));break;case"set":mt(e)&&l.push(o.get(rt));break}if(l.length===1)l[0]&&Kn(l[0]);else{const c=[];for(const f of l)f&&c.push(...f);Kn(os(c))}}function Kn(e,t){for(const n of O(e)?e:[...e])(n!==Pe||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const Vi=es("__proto__,__v_isRef,__isVue"),yr=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(rs)),Ji=cs(),Qi=cs(!1,!0),Yi=cs(!0),Is=Xi();function Xi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=z(this);for(let i=0,o=this.length;i{e[t]=function(...n){wt();const s=z(this)[t].apply(this,n);return kt(),s}}),e}function cs(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?po:Er:t?Cr:$r).get(s))return s;const o=O(s);if(!e&&o&&q(Is,r))return Reflect.get(Is,r,i);const l=Reflect.get(s,r,i);return(rs(r)?yr.has(r):Vi(r))||(e||Se(s,"get",r),t)?l:de(l)?!o||!is(r)?l.value:l:ue(l)?e?Sr(l):yn(l):l}}const Zi=wr(),Gi=wr(!0);function wr(e=!1){return function(n,s,r,i){let o=n[s];if(Nt(o)&&de(o)&&!de(r))return!1;if(!e&&!Nt(r)&&(Tr(r)||(r=z(r),o=z(o)),!O(n)&&de(o)&&!de(r)))return o.value=r,!0;const l=O(n)&&is(s)?Number(s)e,xn=e=>Reflect.getPrototypeOf(e);function Qt(e,t,n=!1,s=!1){e=e.__v_raw;const r=z(e),i=z(t);t!==i&&!n&&Se(r,"get",t),!n&&Se(r,"get",i);const{has:o}=xn(r),l=s?as:n?ds:Ht;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Yt(e,t=!1){const n=this.__v_raw,s=z(n),r=z(e);return e!==r&&!t&&Se(s,"has",e),!t&&Se(s,"has",r),e===r?n.has(e):n.has(e)||n.has(r)}function Xt(e,t=!1){return e=e.__v_raw,!t&&Se(z(e),"iterate",rt),Reflect.get(e,"size",e)}function Ms(e){e=z(e);const t=z(this);return xn(t).has.call(t,e)||(t.add(e),qe(t,"add",e,e)),this}function Os(e,t){t=z(t);const n=z(this),{has:s,get:r}=xn(n);let i=s.call(n,e);i||(e=z(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Ft(t,o)&&qe(n,"set",e,t):qe(n,"add",e,t),this}function Us(e){const t=z(this),{has:n,get:s}=xn(t);let r=n.call(t,e);r||(e=z(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&qe(t,"delete",e,void 0),i}function Rs(){const e=z(this),t=e.size!==0,n=e.clear();return t&&qe(e,"clear",void 0,void 0),n}function Zt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=z(o),c=t?as:e?ds:Ht;return!e&&Se(l,"iterate",rt),o.forEach((f,h)=>s.call(r,c(f),c(h),i))}}function Gt(e,t,n){return function(...s){const r=this.__v_raw,i=z(r),o=mt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),h=n?as:t?ds:Ht;return!t&&Se(i,"iterate",c?qn:rt),{next(){const{value:g,done:y}=f.next();return y?{value:g,done:y}:{value:l?[h(g[0]),h(g[1])]:h(g),done:y}},[Symbol.iterator](){return this}}}}function Ve(e){return function(...t){return e==="delete"?!1:this}}function io(){const e={get(i){return Qt(this,i)},get size(){return Xt(this)},has:Yt,add:Ms,set:Os,delete:Us,clear:Rs,forEach:Zt(!1,!1)},t={get(i){return Qt(this,i,!1,!0)},get size(){return Xt(this)},has:Yt,add:Ms,set:Os,delete:Us,clear:Rs,forEach:Zt(!1,!0)},n={get(i){return Qt(this,i,!0)},get size(){return Xt(this,!0)},has(i){return Yt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Zt(!0,!1)},s={get(i){return Qt(this,i,!0,!0)},get size(){return Xt(this,!0)},has(i){return Yt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Gt(i,!1,!1),n[i]=Gt(i,!0,!1),t[i]=Gt(i,!1,!0),s[i]=Gt(i,!0,!0)}),[e,n,t,s]}const[oo,lo,co,ao]=io();function us(e,t){const n=t?e?ao:co:e?lo:oo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(q(n,r)&&r in s?n:s,r,i)}const uo={get:us(!1,!1)},fo={get:us(!1,!0)},ho={get:us(!0,!1)},$r=new WeakMap,Cr=new WeakMap,Er=new WeakMap,po=new WeakMap;function _o(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function go(e){return e.__v_skip||!Object.isExtensible(e)?0:_o(Ni(e))}function yn(e){return Nt(e)?e:fs(e,!1,kr,uo,$r)}function mo(e){return fs(e,!1,ro,fo,Cr)}function Sr(e){return fs(e,!0,so,ho,Er)}function fs(e,t,n,s,r){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=go(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function vt(e){return Nt(e)?vt(e.__v_raw):!!(e&&e.__v_isReactive)}function Nt(e){return!!(e&&e.__v_isReadonly)}function Tr(e){return!!(e&&e.__v_isShallow)}function Ar(e){return vt(e)||Nt(e)}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Pt(e){return sn(e,"__v_skip",!0),e}const Ht=e=>ue(e)?yn(e):e,ds=e=>ue(e)?Sr(e):e;function Lr(e){Xe&&Pe&&(e=z(e),xr(e.dep||(e.dep=os())))}function Pr(e,t){e=z(e),e.dep&&Kn(e.dep)}function de(e){return!!(e&&e.__v_isRef===!0)}function wn(e){return Ir(e,!1)}function vo(e){return Ir(e,!0)}function Ir(e,t){return de(e)?e:new bo(e,t)}class bo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:z(t),this._value=n?t:Ht(t)}get value(){return Lr(this),this._value}set value(t){t=this.__v_isShallow?t:z(t),Ft(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Ht(t),Pr(this))}}function $(e){return de(e)?e.value:e}const xo={get:(e,t,n)=>$(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return de(r)&&!de(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Mr(e){return vt(e)?e:new Proxy(e,xo)}function Or(e){const t=O(e)?new Array(e.length):{};for(const n in e)t[n]=wo(e,n);return t}class yo{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function wo(e,t,n){const s=e[t];return de(s)?s:new yo(e,t,n)}class ko{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new ls(t,()=>{this._dirty||(this._dirty=!0,Pr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=z(this);return Lr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function $o(e,t,n=!1){let s,r;const i=F(e);return i?(s=e,r=Me):(s=e.get,r=e.set),new ko(s,r,i||!r,n)}function Ze(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){kn(i,t,n)}return r}function Oe(e,t,n,s){if(F(e)){const i=Ze(e,t,n,s);return i&&pr(i)&&i.catch(o=>{kn(o,t,n)}),i}const r=[];for(let i=0;i>>1;Bt(Ee[s])je&&Ee.splice(t,1)}function Hr(e,t,n,s){O(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?s+1:s))&&n.push(e),Nr()}function To(e){Hr(e,At,It,ht)}function Ao(e){Hr(e,Qe,Mt,pt)}function ps(e,t=null){if(It.length){for(zn=t,At=[...new Set(It)],It.length=0,ht=0;htBt(n)-Bt(s)),pt=0;pte.id==null?1/0:e.id;function Br(e){Wn=!1,rn=!0,ps(e),Ee.sort((n,s)=>Bt(n)-Bt(s));const t=Me;try{for(je=0;jeT.trim()):g&&(r=n.map(Di))}let l,c=s[l=On(t)]||s[l=On(Ne(t))];!c&&i&&(c=s[l=On(yt(t))]),c&&Oe(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Oe(f,e,6,r)}}function Dr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!F(e)){const c=f=>{const h=Dr(f,t,!0);h&&(l=!0,xe(o,h))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(s.set(e,null),null):(O(i)?i.forEach(c=>o[c]=null):xe(o,i),s.set(e,o),o)}function $n(e,t){return!e||!Wt(t)?!1:(t=t.slice(2).replace(/Once$/,""),q(e,t[0].toLowerCase()+t.slice(1))||q(e,yt(t))||q(e,t))}let $e=null,Cn=null;function ln(e){const t=$e;return $e=e,Cn=e&&e.type.__scopeId||null,t}function jr(e){Cn=e}function qr(){Cn=null}function De(e,t=$e,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&zs(-1);const i=ln(t),o=e(...r);return ln(i),s._d&&zs(1),o};return s._n=!0,s._c=!0,s._d=!0,s}function Rn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:f,render:h,renderCache:g,data:y,setupState:T,ctx:M,inheritAttrs:V}=e;let m,w;const K=ln(e);try{if(n.shapeFlag&4){const H=r||s;m=Le(h.call(H,H,g,i,T,y,M)),w=c}else{const H=t;m=Le(H.length>1?H(i,{attrs:c,slots:l,emit:f}):H(i,null)),w=t.props?c:Po(c)}}catch(H){Rt.length=0,kn(H,e,1),m=N(Ke)}let P=m;if(w&&V!==!1){const H=Object.keys(w),{shapeFlag:Y}=P;H.length&&Y&7&&(o&&H.some(ns)&&(w=Io(w,o)),P=qt(P,w))}return n.dirs&&(P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition&&(P.transition=n.transition),m=P,ln(K),m}const Po=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},Io=(e,t)=>{const n={};for(const s in e)(!ns(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Mo(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Fs(s,o,f):!!o;if(c&8){const h=t.dynamicProps;for(let g=0;ge.__isSuspense;function Kr(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):Ao(e)}function Ro(e,t){if(pe){let n=pe.provides;const s=pe.parent&&pe.parent.provides;s===n&&(n=pe.provides=Object.create(s)),n[e]=t}}function Ot(e,t,n=!1){const s=pe||$e;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&F(t)?t.call(s.proxy):t}}function Wr(e,t){return _s(e,null,t)}const Ns={};function it(e,t,n){return _s(e,t,n)}function _s(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=Z){const l=pe;let c,f=!1,h=!1;if(de(e)?(c=()=>e.value,f=Tr(e)):vt(e)?(c=()=>e,s=!0):O(e)?(h=!0,f=e.some(vt),c=()=>e.map(w=>{if(de(w))return w.value;if(vt(w))return _t(w);if(F(w))return Ze(w,l,2)})):F(e)?t?c=()=>Ze(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return g&&g(),Oe(e,l,3,[y])}:c=Me,t&&s){const w=c;c=()=>_t(w())}let g,y=w=>{g=m.onStop=()=>{Ze(w,l,4)}};if(Kt)return y=Me,t?n&&Oe(t,l,3,[c(),h?[]:void 0,y]):c(),Me;let T=h?[]:Ns;const M=()=>{if(!!m.active)if(t){const w=m.run();(s||f||(h?w.some((K,P)=>Ft(K,T[P])):Ft(w,T)))&&(g&&g(),Oe(t,l,3,[w,T===Ns?void 0:T,y]),T=w)}else m.run()};M.allowRecurse=!!t;let V;r==="sync"?V=M:r==="post"?V=()=>ke(M,l&&l.suspense):V=()=>{!l||l.isMounted?To(M):M()};const m=new ls(c,V);return t?n?M():T=m.run():r==="post"?ke(m.run.bind(m),l&&l.suspense):m.run(),()=>{m.stop(),l&&l.scope&&ss(l.scope.effects,m)}}function Fo(e,t,n){const s=this.proxy,r=he(e)?e.includes(".")?zr(s,e):()=>s[e]:e.bind(s,s);let i;F(t)?i=t:(i=t.handler,n=t);const o=pe;bt(this);const l=_s(r,i.bind(s),n);return o?bt(o):lt(),l}function zr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{_t(n,t)});else if(gr(e))for(const n in e)_t(e[n],t);return e}function oe(e){return F(e)?{setup:e,name:e.name}:e}const Dt=e=>!!e.type.__asyncLoader,Vr=e=>e.type.__isKeepAlive;function No(e,t){Jr(e,"a",t)}function Ho(e,t){Jr(e,"da",t)}function Jr(e,t,n=pe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(En(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Vr(r.parent.vnode)&&Bo(s,t,n,r),r=r.parent}}function Bo(e,t,n,s){const r=En(t,e,s,!0);Sn(()=>{ss(s[t],r)},n)}function En(e,t,n=pe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;wt(),bt(n);const l=Oe(t,n,e,o);return lt(),kt(),l});return s?r.unshift(i):r.push(i),i}}const We=e=>(t,n=pe)=>(!Kt||e==="sp")&&En(e,t,n),Do=We("bm"),$t=We("m"),jo=We("bu"),Qr=We("u"),qo=We("bum"),Sn=We("um"),Ko=We("sp"),Wo=We("rtg"),zo=We("rtc");function Vo(e,t=pe){En("ec",e,t)}let Vn=!0;function Jo(e){const t=Xr(e),n=e.proxy,s=e.ctx;Vn=!1,t.beforeCreate&&Hs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:h,beforeMount:g,mounted:y,beforeUpdate:T,updated:M,activated:V,deactivated:m,beforeDestroy:w,beforeUnmount:K,destroyed:P,unmounted:H,render:Y,renderTracked:X,renderTriggered:B,errorCaptured:le,serverPrefetch:ne,expose:re,inheritAttrs:_e,components:j,directives:ie,filters:ye}=t;if(f&&Qo(f,s,null,e.appContext.config.unwrapInjectedRef),o)for(const se in o){const G=o[se];F(G)&&(s[se]=G.bind(n))}if(r){const se=r.call(n,n);ue(se)&&(e.data=yn(se))}if(Vn=!0,i)for(const se in i){const G=i[se],He=F(G)?G.bind(n,n):F(G.get)?G.get.bind(n,n):Me,Pn=!F(G)&&F(G.set)?G.set.bind(n):Me,Ct=D({get:He,set:Pn});Object.defineProperty(s,se,{enumerable:!0,configurable:!0,get:()=>Ct.value,set:ut=>Ct.value=ut})}if(l)for(const se in l)Yr(l[se],s,n,se);if(c){const se=F(c)?c.call(n):c;Reflect.ownKeys(se).forEach(G=>{Ro(G,se[G])})}h&&Hs(h,e,"c");function we(se,G){O(G)?G.forEach(He=>se(He.bind(n))):G&&se(G.bind(n))}if(we(Do,g),we($t,y),we(jo,T),we(Qr,M),we(No,V),we(Ho,m),we(Vo,le),we(zo,X),we(Wo,B),we(qo,K),we(Sn,H),we(Ko,ne),O(re))if(re.length){const se=e.exposed||(e.exposed={});re.forEach(G=>{Object.defineProperty(se,G,{get:()=>n[G],set:He=>n[G]=He})})}else e.exposed||(e.exposed={});Y&&e.render===Me&&(e.render=Y),_e!=null&&(e.inheritAttrs=_e),j&&(e.components=j),ie&&(e.directives=ie)}function Qo(e,t,n=Me,s=!1){O(e)&&(e=Jn(e));for(const r in e){const i=e[r];let o;ue(i)?"default"in i?o=Ot(i.from||r,i.default,!0):o=Ot(i.from||r):o=Ot(i),de(o)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[r]=o}}function Hs(e,t,n){Oe(O(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Yr(e,t,n,s){const r=s.includes(".")?zr(n,s):()=>n[s];if(he(e)){const i=t[e];F(i)&&it(r,i)}else if(F(e))it(r,e.bind(n));else if(ue(e))if(O(e))e.forEach(i=>Yr(i,t,n,s));else{const i=F(e.handler)?e.handler.bind(n):t[e.handler];F(i)&&it(r,i,e)}}function Xr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>cn(c,f,o,!0)),cn(c,t,o)),i.set(t,c),c}function cn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&cn(e,i,n,!0),r&&r.forEach(o=>cn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Yo[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Yo={data:Bs,props:nt,emits:nt,methods:nt,computed:nt,beforeCreate:ve,created:ve,beforeMount:ve,mounted:ve,beforeUpdate:ve,updated:ve,beforeDestroy:ve,beforeUnmount:ve,destroyed:ve,unmounted:ve,activated:ve,deactivated:ve,errorCaptured:ve,serverPrefetch:ve,components:nt,directives:nt,watch:Zo,provide:Bs,inject:Xo};function Bs(e,t){return t?e?function(){return xe(F(e)?e.call(this,this):e,F(t)?t.call(this,this):t)}:t:e}function Xo(e,t){return nt(Jn(e),Jn(t))}function Jn(e){if(O(e)){const t={};for(let n=0;n0)&&!(o&16)){if(o&8){const h=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[y,T]=Gr(g,t,!0);xe(o,y),T&&l.push(...T)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!i&&!c)return s.set(e,gt),gt;if(O(i))for(let h=0;h-1,T[1]=V<0||M-1||q(T,"default"))&&l.push(g)}}}const f=[o,l];return s.set(e,f),f}function Ds(e){return e[0]!=="$"}function js(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function qs(e,t){return js(e)===js(t)}function Ks(e,t){return O(t)?t.findIndex(n=>qs(n,e)):F(t)&&qs(t,e)?0:-1}const ei=e=>e[0]==="_"||e==="$stable",gs=e=>O(e)?e.map(Le):[Le(e)],tl=(e,t,n)=>{const s=De((...r)=>gs(t(...r)),n);return s._c=!1,s},ti=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ei(r))continue;const i=e[r];if(F(i))t[r]=tl(r,i,s);else if(i!=null){const o=gs(i);t[r]=()=>o}}},ni=(e,t)=>{const n=gs(t);e.slots.default=()=>n},nl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=z(t),sn(t,"_",n)):ti(t,e.slots={})}else e.slots={},t&&ni(e,t);sn(e.slots,Tn,1)},sl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(xe(r,t),!n&&l===1&&delete r._):(i=!t.$stable,ti(t,r)),o=t}else t&&(ni(e,t),o={default:1});if(i)for(const l in r)!ei(l)&&!(l in o)&&delete r[l]};function Fe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;oan(y,t&&(O(t)?t[T]:t),n,s,r));return}if(Dt(s)&&!r)return;const i=s.shapeFlag&4?bs(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,h=l.refs===Z?l.refs={}:l.refs,g=l.setupState;if(f!=null&&f!==c&&(he(f)?(h[f]=null,q(g,f)&&(g[f]=null)):de(f)&&(f.value=null)),F(c))Ze(c,l,12,[o,h]);else{const y=he(c),T=de(c);if(y||T){const M=()=>{if(e.f){const V=y?h[c]:c.value;r?O(V)&&ss(V,i):O(V)?V.includes(i)||V.push(i):y?(h[c]=[i],q(g,c)&&(g[c]=h[c])):(c.value=[i],e.k&&(h[e.k]=c.value))}else y?(h[c]=o,q(g,c)&&(g[c]=o)):de(c)&&(c.value=o,e.k&&(h[e.k]=o))};o?(M.id=-1,ke(M,n)):M()}}}let Je=!1;const en=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Fn=e=>e.nodeType===8;function ol(e){const{mt:t,p:n,o:{patchProp:s,nextSibling:r,parentNode:i,remove:o,insert:l,createComment:c}}=e,f=(m,w)=>{if(!w.hasChildNodes()){n(null,m,w),on();return}Je=!1,h(w.firstChild,m,null,null,null),on(),Je&&console.error("Hydration completed but contains mismatches.")},h=(m,w,K,P,H,Y=!1)=>{const X=Fn(m)&&m.data==="[",B=()=>M(m,w,K,P,H,X),{type:le,ref:ne,shapeFlag:re}=w,_e=m.nodeType;w.el=m;let j=null;switch(le){case jt:_e!==3?j=B():(m.data!==w.children&&(Je=!0,m.data=w.children),j=r(m));break;case Ke:_e!==8||X?j=B():j=r(m);break;case Ut:if(_e!==1)j=B();else{j=m;const ie=!w.children.length;for(let ye=0;ye{Y=Y||!!w.dynamicChildren;const{type:X,props:B,patchFlag:le,shapeFlag:ne,dirs:re}=w,_e=X==="input"&&re||X==="option";if(_e||le!==-1){if(re&&Fe(w,null,K,"created"),B)if(_e||!Y||le&48)for(const ie in B)(_e&&ie.endsWith("value")||Wt(ie)&&!Lt(ie))&&s(m,ie,null,B[ie],!1,void 0,K);else B.onClick&&s(m,"onClick",null,B.onClick,!1,void 0,K);let j;if((j=B&&B.onVnodeBeforeMount)&&Te(j,K,w),re&&Fe(w,null,K,"beforeMount"),((j=B&&B.onVnodeMounted)||re)&&Kr(()=>{j&&Te(j,K,w),re&&Fe(w,null,K,"mounted")},P),ne&16&&!(B&&(B.innerHTML||B.textContent))){let ie=y(m.firstChild,w,m,K,P,H,Y);for(;ie;){Je=!0;const ye=ie;ie=ie.nextSibling,o(ye)}}else ne&8&&m.textContent!==w.children&&(Je=!0,m.textContent=w.children)}return m.nextSibling},y=(m,w,K,P,H,Y,X)=>{X=X||!!w.dynamicChildren;const B=w.children,le=B.length;for(let ne=0;ne{const{slotScopeIds:X}=w;X&&(H=H?H.concat(X):X);const B=i(m),le=y(r(m),w,B,K,P,H,Y);return le&&Fn(le)&&le.data==="]"?r(w.anchor=le):(Je=!0,l(w.anchor=c("]"),B,le),le)},M=(m,w,K,P,H,Y)=>{if(Je=!0,w.el=null,Y){const le=V(m);for(;;){const ne=r(m);if(ne&&ne!==le)o(ne);else break}}const X=r(m),B=i(m);return o(m),n(null,w,B,X,K,P,en(B),H),X},V=m=>{let w=0;for(;m;)if(m=r(m),m&&Fn(m)&&(m.data==="["&&w++,m.data==="]")){if(w===0)return r(m);w--}return m};return[f,h]}const ke=Kr;function ll(e){return cl(e,ol)}function cl(e,t){const n=ji();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:h,parentNode:g,nextSibling:y,setScopeId:T=Me,cloneNode:M,insertStaticContent:V}=e,m=(a,u,d,_=null,p=null,x=null,C=!1,b=null,k=!!u.dynamicChildren)=>{if(a===u)return;a&&!St(a,u)&&(_=Jt(a),ze(a,p,x,!0),a=null),u.patchFlag===-2&&(k=!1,u.dynamicChildren=null);const{type:v,ref:A,shapeFlag:E}=u;switch(v){case jt:w(a,u,d,_);break;case Ke:K(a,u,d,_);break;case Ut:a==null&&P(u,d,_,C);break;case fe:ie(a,u,d,_,p,x,C,b,k);break;default:E&1?X(a,u,d,_,p,x,C,b,k):E&6?ye(a,u,d,_,p,x,C,b,k):(E&64||E&128)&&v.process(a,u,d,_,p,x,C,b,k,ft)}A!=null&&p&&an(A,a&&a.ref,x,u||a,!u)},w=(a,u,d,_)=>{if(a==null)s(u.el=l(u.children),d,_);else{const p=u.el=a.el;u.children!==a.children&&f(p,u.children)}},K=(a,u,d,_)=>{a==null?s(u.el=c(u.children||""),d,_):u.el=a.el},P=(a,u,d,_)=>{[a.el,a.anchor]=V(a.children,u,d,_,a.el,a.anchor)},H=({el:a,anchor:u},d,_)=>{let p;for(;a&&a!==u;)p=y(a),s(a,d,_),a=p;s(u,d,_)},Y=({el:a,anchor:u})=>{let d;for(;a&&a!==u;)d=y(a),r(a),a=d;r(u)},X=(a,u,d,_,p,x,C,b,k)=>{C=C||u.type==="svg",a==null?B(u,d,_,p,x,C,b,k):re(a,u,p,x,C,b,k)},B=(a,u,d,_,p,x,C,b)=>{let k,v;const{type:A,props:E,shapeFlag:L,transition:I,patchFlag:W,dirs:te}=a;if(a.el&&M!==void 0&&W===-1)k=a.el=M(a.el);else{if(k=a.el=o(a.type,x,E&&E.is,E),L&8?h(k,a.children):L&16&&ne(a.children,k,null,_,p,x&&A!=="foreignObject",C,b),te&&Fe(a,null,_,"created"),E){for(const ee in E)ee!=="value"&&!Lt(ee)&&i(k,ee,null,E[ee],x,a.children,_,p,Be);"value"in E&&i(k,"value",null,E.value),(v=E.onVnodeBeforeMount)&&Te(v,_,a)}le(k,a,a.scopeId,C,_)}te&&Fe(a,null,_,"beforeMount");const Q=(!p||p&&!p.pendingBranch)&&I&&!I.persisted;Q&&I.beforeEnter(k),s(k,u,d),((v=E&&E.onVnodeMounted)||Q||te)&&ke(()=>{v&&Te(v,_,a),Q&&I.enter(k),te&&Fe(a,null,_,"mounted")},p)},le=(a,u,d,_,p)=>{if(d&&T(a,d),_)for(let x=0;x<_.length;x++)T(a,_[x]);if(p){let x=p.subTree;if(u===x){const C=p.vnode;le(a,C,C.scopeId,C.slotScopeIds,p.parent)}}},ne=(a,u,d,_,p,x,C,b,k=0)=>{for(let v=k;v{const b=u.el=a.el;let{patchFlag:k,dynamicChildren:v,dirs:A}=u;k|=a.patchFlag&16;const E=a.props||Z,L=u.props||Z;let I;d&&tt(d,!1),(I=L.onVnodeBeforeUpdate)&&Te(I,d,u,a),A&&Fe(u,a,d,"beforeUpdate"),d&&tt(d,!0);const W=p&&u.type!=="foreignObject";if(v?_e(a.dynamicChildren,v,b,d,_,W,x):C||He(a,u,b,null,d,_,W,x,!1),k>0){if(k&16)j(b,u,E,L,d,_,p);else if(k&2&&E.class!==L.class&&i(b,"class",null,L.class,p),k&4&&i(b,"style",E.style,L.style,p),k&8){const te=u.dynamicProps;for(let Q=0;Q{I&&Te(I,d,u,a),A&&Fe(u,a,d,"updated")},_)},_e=(a,u,d,_,p,x,C)=>{for(let b=0;b{if(d!==_){for(const b in _){if(Lt(b))continue;const k=_[b],v=d[b];k!==v&&b!=="value"&&i(a,b,v,k,C,u.children,p,x,Be)}if(d!==Z)for(const b in d)!Lt(b)&&!(b in _)&&i(a,b,d[b],null,C,u.children,p,x,Be);"value"in _&&i(a,"value",d.value,_.value)}},ie=(a,u,d,_,p,x,C,b,k)=>{const v=u.el=a?a.el:l(""),A=u.anchor=a?a.anchor:l("");let{patchFlag:E,dynamicChildren:L,slotScopeIds:I}=u;I&&(b=b?b.concat(I):I),a==null?(s(v,d,_),s(A,d,_),ne(u.children,d,A,p,x,C,b,k)):E>0&&E&64&&L&&a.dynamicChildren?(_e(a.dynamicChildren,L,d,p,x,C,b),(u.key!=null||p&&u===p.subTree)&&ri(a,u,!0)):He(a,u,d,A,p,x,C,b,k)},ye=(a,u,d,_,p,x,C,b,k)=>{u.slotScopeIds=b,a==null?u.shapeFlag&512?p.ctx.activate(u,d,_,C,k):Ln(u,d,_,p,x,C,k):we(a,u,k)},Ln=(a,u,d,_,p,x,C)=>{const b=a.component=bl(a,_,p);if(Vr(a)&&(b.ctx.renderer=ft),xl(b),b.asyncDep){if(p&&p.registerDep(b,se),!a.el){const k=b.subTree=N(Ke);K(null,k,u,d)}return}se(b,a,u,d,p,x,C)},we=(a,u,d)=>{const _=u.component=a.component;if(Mo(a,u,d))if(_.asyncDep&&!_.asyncResolved){G(_,u,d);return}else _.next=u,So(_.update),_.update();else u.component=a.component,u.el=a.el,_.vnode=u},se=(a,u,d,_,p,x,C)=>{const b=()=>{if(a.isMounted){let{next:A,bu:E,u:L,parent:I,vnode:W}=a,te=A,Q;tt(a,!1),A?(A.el=W.el,G(a,A,C)):A=W,E&&Un(E),(Q=A.props&&A.props.onVnodeBeforeUpdate)&&Te(Q,I,A,W),tt(a,!0);const ee=Rn(a),Ae=a.subTree;a.subTree=ee,m(Ae,ee,g(Ae.el),Jt(Ae),a,p,x),A.el=ee.el,te===null&&Oo(a,ee.el),L&&ke(L,p),(Q=A.props&&A.props.onVnodeUpdated)&&ke(()=>Te(Q,I,A,W),p)}else{let A;const{el:E,props:L}=u,{bm:I,m:W,parent:te}=a,Q=Dt(u);if(tt(a,!1),I&&Un(I),!Q&&(A=L&&L.onVnodeBeforeMount)&&Te(A,te,u),tt(a,!0),E&&Mn){const ee=()=>{a.subTree=Rn(a),Mn(E,a.subTree,a,p,null)};Q?u.type.__asyncLoader().then(()=>!a.isUnmounted&&ee()):ee()}else{const ee=a.subTree=Rn(a);m(null,ee,d,_,a,p,x),u.el=ee.el}if(W&&ke(W,p),!Q&&(A=L&&L.onVnodeMounted)){const ee=u;ke(()=>Te(A,te,ee),p)}u.shapeFlag&256&&a.a&&ke(a.a,p),a.isMounted=!0,u=d=_=null}},k=a.effect=new ls(b,()=>Fr(a.update),a.scope),v=a.update=k.run.bind(k);v.id=a.uid,tt(a,!0),v()},G=(a,u,d)=>{u.component=a;const _=a.vnode.props;a.vnode=u,a.next=null,el(a,u.props,_,d),sl(a,u.children,d),wt(),ps(void 0,a.update),kt()},He=(a,u,d,_,p,x,C,b,k=!1)=>{const v=a&&a.children,A=a?a.shapeFlag:0,E=u.children,{patchFlag:L,shapeFlag:I}=u;if(L>0){if(L&128){Ct(v,E,d,_,p,x,C,b,k);return}else if(L&256){Pn(v,E,d,_,p,x,C,b,k);return}}I&8?(A&16&&Be(v,p,x),E!==v&&h(d,E)):A&16?I&16?Ct(v,E,d,_,p,x,C,b,k):Be(v,p,x,!0):(A&8&&h(d,""),I&16&&ne(E,d,_,p,x,C,b,k))},Pn=(a,u,d,_,p,x,C,b,k)=>{a=a||gt,u=u||gt;const v=a.length,A=u.length,E=Math.min(v,A);let L;for(L=0;LA?Be(a,p,x,!0,!1,E):ne(u,d,_,p,x,C,b,k,E)},Ct=(a,u,d,_,p,x,C,b,k)=>{let v=0;const A=u.length;let E=a.length-1,L=A-1;for(;v<=E&&v<=L;){const I=a[v],W=u[v]=k?Ye(u[v]):Le(u[v]);if(St(I,W))m(I,W,d,null,p,x,C,b,k);else break;v++}for(;v<=E&&v<=L;){const I=a[E],W=u[L]=k?Ye(u[L]):Le(u[L]);if(St(I,W))m(I,W,d,null,p,x,C,b,k);else break;E--,L--}if(v>E){if(v<=L){const I=L+1,W=IL)for(;v<=E;)ze(a[v],p,x,!0),v++;else{const I=v,W=v,te=new Map;for(v=W;v<=L;v++){const Ce=u[v]=k?Ye(u[v]):Le(u[v]);Ce.key!=null&&te.set(Ce.key,v)}let Q,ee=0;const Ae=L-W+1;let dt=!1,Es=0;const Et=new Array(Ae);for(v=0;v=Ae){ze(Ce,p,x,!0);continue}let Ue;if(Ce.key!=null)Ue=te.get(Ce.key);else for(Q=W;Q<=L;Q++)if(Et[Q-W]===0&&St(Ce,u[Q])){Ue=Q;break}Ue===void 0?ze(Ce,p,x,!0):(Et[Ue-W]=v+1,Ue>=Es?Es=Ue:dt=!0,m(Ce,u[Ue],d,null,p,x,C,b,k),ee++)}const Ss=dt?al(Et):gt;for(Q=Ss.length-1,v=Ae-1;v>=0;v--){const Ce=W+v,Ue=u[Ce],Ts=Ce+1{const{el:x,type:C,transition:b,children:k,shapeFlag:v}=a;if(v&6){ut(a.component.subTree,u,d,_);return}if(v&128){a.suspense.move(u,d,_);return}if(v&64){C.move(a,u,d,ft);return}if(C===fe){s(x,u,d);for(let E=0;Eb.enter(x),p);else{const{leave:E,delayLeave:L,afterLeave:I}=b,W=()=>s(x,u,d),te=()=>{E(x,()=>{W(),I&&I()})};L?L(x,W,te):te()}else s(x,u,d)},ze=(a,u,d,_=!1,p=!1)=>{const{type:x,props:C,ref:b,children:k,dynamicChildren:v,shapeFlag:A,patchFlag:E,dirs:L}=a;if(b!=null&&an(b,null,d,a,!0),A&256){u.ctx.deactivate(a);return}const I=A&1&&L,W=!Dt(a);let te;if(W&&(te=C&&C.onVnodeBeforeUnmount)&&Te(te,u,a),A&6)Ei(a.component,d,_);else{if(A&128){a.suspense.unmount(d,_);return}I&&Fe(a,null,u,"beforeUnmount"),A&64?a.type.remove(a,u,d,p,ft,_):v&&(x!==fe||E>0&&E&64)?Be(v,u,d,!1,!0):(x===fe&&E&384||!p&&A&16)&&Be(k,u,d),_&&$s(a)}(W&&(te=C&&C.onVnodeUnmounted)||I)&&ke(()=>{te&&Te(te,u,a),I&&Fe(a,null,u,"unmounted")},d)},$s=a=>{const{type:u,el:d,anchor:_,transition:p}=a;if(u===fe){Ci(d,_);return}if(u===Ut){Y(a);return}const x=()=>{r(d),p&&!p.persisted&&p.afterLeave&&p.afterLeave()};if(a.shapeFlag&1&&p&&!p.persisted){const{leave:C,delayLeave:b}=p,k=()=>C(d,x);b?b(a.el,x,k):k()}else x()},Ci=(a,u)=>{let d;for(;a!==u;)d=y(a),r(a),a=d;r(u)},Ei=(a,u,d)=>{const{bum:_,scope:p,update:x,subTree:C,um:b}=a;_&&Un(_),p.stop(),x&&(x.active=!1,ze(C,a,u,d)),b&&ke(b,u),ke(()=>{a.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Be=(a,u,d,_=!1,p=!1,x=0)=>{for(let C=x;Ca.shapeFlag&6?Jt(a.component.subTree):a.shapeFlag&128?a.suspense.next():y(a.anchor||a.el),Cs=(a,u,d)=>{a==null?u._vnode&&ze(u._vnode,null,null,!0):m(u._vnode||null,a,u,null,null,null,d),on(),u._vnode=a},ft={p:m,um:ze,m:ut,r:$s,mt:Ln,mc:ne,pc:He,pbc:_e,n:Jt,o:e};let In,Mn;return t&&([In,Mn]=t(ft)),{render:Cs,hydrate:In,createApp:il(Cs,In)}}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ri(e,t,n=!1){const s=e.children,r=t.children;if(O(s)&&O(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const ul=e=>e.__isTeleport,ii="components";function un(e,t){return dl(ii,e,!0,t)||e}const fl=Symbol();function dl(e,t,n=!0,s=!1){const r=$e||pe;if(r){const i=r.type;if(e===ii){const l=$l(i);if(l&&(l===t||l===Ne(t)||l===bn(Ne(t))))return i}const o=Ws(r[e]||i[e],t)||Ws(r.appContext[e],t);return!o&&s?i:o}}function Ws(e,t){return e&&(e[t]||e[Ne(t)]||e[bn(Ne(t))])}const fe=Symbol(void 0),jt=Symbol(void 0),Ke=Symbol(void 0),Ut=Symbol(void 0),Rt=[];let ot=null;function S(e=!1){Rt.push(ot=e?null:[])}function hl(){Rt.pop(),ot=Rt[Rt.length-1]||null}let fn=1;function zs(e){fn+=e}function oi(e){return e.dynamicChildren=fn>0?ot||gt:null,hl(),fn>0&&ot&&ot.push(e),e}function U(e,t,n,s,r,i){return oi(R(e,t,n,s,r,i,!0))}function ge(e,t,n,s,r){return oi(N(e,t,n,s,r,!0))}function dn(e){return e?e.__v_isVNode===!0:!1}function St(e,t){return e.type===t.type&&e.key===t.key}const Tn="__vInternal",li=({key:e})=>e!=null?e:null,nn=({ref:e,ref_key:t,ref_for:n})=>e!=null?he(e)||de(e)||F(e)?{i:$e,r:e,k:t,f:!!n}:e:null;function R(e,t=null,n=null,s=0,r=null,i=e===fe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&li(t),ref:t&&nn(t),scopeId:Cn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null};return l?(ms(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=he(n)?8:16),fn>0&&!o&&ot&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&ot.push(c),c}const N=pl;function pl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===fl)&&(e=Ke),dn(e)){const l=qt(e,t,!0);return n&&ms(l,n),l}if(Cl(e)&&(e=e.__vccOpts),t){t=_l(t);let{class:l,style:c}=t;l&&!he(l)&&(t.class=ct(l)),ue(c)&&(Ar(c)&&!O(c)&&(c=xe({},c)),t.style=ts(c))}const o=he(e)?1:Uo(e)?128:ul(e)?64:ue(e)?4:F(e)?2:0;return R(e,t,n,s,r,o,i,!0)}function _l(e){return e?Ar(e)||Tn in e?xe({},e):e:null}function qt(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?vs(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&li(l),ref:t&&t.ref?n&&r?O(r)?r.concat(nn(t)):[r,nn(t)]:nn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),el:e.el,anchor:e.anchor}}function zt(e=" ",t=0){return N(jt,null,e,t)}function ef(e,t){const n=N(Ut,null,e);return n.staticCount=t,n}function J(e="",t=!1){return t?(S(),ge(Ke,null,e)):N(Ke,null,e)}function Le(e){return e==null||typeof e=="boolean"?N(Ke):O(e)?N(fe,null,e.slice()):typeof e=="object"?Ye(e):N(jt,null,String(e))}function Ye(e){return e.el===null||e.memo?e:qt(e)}function ms(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(O(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ms(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Tn in t)?t._ctx=$e:r===3&&$e&&($e.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else F(t)?(t={default:t,_ctx:$e},n=32):(t=String(t),s&64?(n=16,t=[zt(t)]):n=8);e.children=t,e.shapeFlag|=n}function vs(...e){const t={};for(let n=0;nt(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;ldn(t)?!(t.type===Ke||t.type===fe&&!ci(t.children)):!0)?e:null}const Yn=e=>e?ai(e)?bs(e)||e.proxy:Yn(e.parent):null,hn=xe(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=>Yn(e.parent),$root:e=>Yn(e.root),$emit:e=>e.emit,$options:e=>Xr(e),$forceUpdate:e=>()=>Fr(e.update),$nextTick:e=>Rr.bind(e.proxy),$watch:e=>Fo.bind(e)}),gl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const T=o[t];if(T!==void 0)switch(T){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(s!==Z&&q(s,t))return o[t]=1,s[t];if(r!==Z&&q(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&q(f,t))return o[t]=3,i[t];if(n!==Z&&q(n,t))return o[t]=4,n[t];Vn&&(o[t]=0)}}const h=hn[t];let g,y;if(h)return t==="$attrs"&&Se(e,"get",t),h(e);if((g=l.__cssModules)&&(g=g[t]))return g;if(n!==Z&&q(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,q(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return r!==Z&&q(r,t)?(r[t]=n,!0):s!==Z&&q(s,t)?(s[t]=n,!0):q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&q(e,o)||t!==Z&&q(t,o)||(l=i[0])&&q(l,o)||q(s,o)||q(hn,o)||q(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},ml=si();let vl=0;function bl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||ml,i={uid:vl++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new qi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Gr(s,r),emitsOptions:Dr(s,r),emit:null,emitted:null,propsDefaults:Z,inheritAttrs:s.inheritAttrs,ctx:Z,data:Z,props:Z,attrs:Z,slots:Z,refs:Z,setupState:Z,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=Lo.bind(null,i),e.ce&&e.ce(i),i}let pe=null;const bt=e=>{pe=e,e.scope.on()},lt=()=>{pe&&pe.scope.off(),pe=null};function ai(e){return e.vnode.shapeFlag&4}let Kt=!1;function xl(e,t=!1){Kt=t;const{props:n,children:s}=e.vnode,r=ai(e);Go(e,n,r,t),nl(e,s);const i=r?yl(e,t):void 0;return Kt=!1,i}function yl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Pt(new Proxy(e.ctx,gl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?kl(e):null;bt(e),wt();const i=Ze(s,e,0,[e.props,r]);if(kt(),lt(),pr(i)){if(i.then(lt,lt),t)return i.then(o=>{Vs(e,o,t)}).catch(o=>{kn(o,e,0)});e.asyncDep=i}else Vs(e,i,t)}else ui(e,t)}function Vs(e,t,n){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=Mr(t)),ui(e,n)}let Js;function ui(e,t,n){const s=e.type;if(!e.render){if(!t&&Js&&!s.render){const r=s.template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=xe(xe({isCustomElement:i,delimiters:l},o),c);s.render=Js(r,f)}}e.render=s.render||Me}bt(e),wt(),Jo(e),kt(),lt()}function wl(e){return new Proxy(e.attrs,{get(t,n){return Se(e,"get","$attrs"),t[n]}})}function kl(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=wl(e))},slots:e.slots,emit:e.emit,expose:t}}function bs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Mr(Pt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hn)return hn[n](e)}}))}function $l(e){return F(e)&&e.displayName||e.name}function Cl(e){return F(e)&&"__vccOpts"in e}const D=(e,t)=>$o(e,t,Kt);function at(e,t,n){const s=arguments.length;return s===2?ue(t)&&!O(t)?dn(t)?N(e,null,[t]):N(e,t):N(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&dn(n)&&(n=[n]),N(e,t,n))}const El="3.2.33",Sl="http://www.w3.org/2000/svg",st=typeof document!="undefined"?document:null,Qs=st&&st.createElement("template"),Tl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?st.createElementNS(Sl,e):st.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Qs.innerHTML=s?`${e}`:e;const l=Qs.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Al(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Ll(e,t,n){const s=e.style,r=he(n);if(n&&!r){for(const i in n)Xn(s,i,n[i]);if(t&&!he(t))for(const i in t)n[i]==null&&Xn(s,i,"")}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const Ys=/\s*!important$/;function Xn(e,t,n){if(O(n))n.forEach(s=>Xn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Pl(e,t);Ys.test(n)?e.setProperty(yt(s),n.replace(Ys,""),"important"):e[s]=n}}const Xs=["Webkit","Moz","ms"],Nn={};function Pl(e,t){const n=Nn[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return Nn[t]=s;s=bn(s);for(let r=0;r{let e=Date.now,t=!1;if(typeof window!="undefined"){Date.now()>document.createEvent("Event").timeStamp&&(e=()=>performance.now());const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Zn=0;const Ul=Promise.resolve(),Rl=()=>{Zn=0},Fl=()=>Zn||(Ul.then(Rl),Zn=fi());function Nl(e,t,n,s){e.addEventListener(t,n,s)}function Hl(e,t,n,s){e.removeEventListener(t,n,s)}function Bl(e,t,n,s,r=null){const i=e._vei||(e._vei={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Dl(t);if(s){const f=i[t]=jl(s,r);Nl(e,l,f,c)}else o&&(Hl(e,l,o,c),i[t]=void 0)}}const Gs=/(?:Once|Passive|Capture)$/;function Dl(e){let t;if(Gs.test(e)){t={};let n;for(;n=e.match(Gs);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[yt(e.slice(2)),t]}function jl(e,t){const n=s=>{const r=s.timeStamp||fi();(Ol||r>=n.attached-1)&&Oe(ql(s,n.value),t,5,[s])};return n.value=e,n.attached=Fl(),n}function ql(e,t){if(O(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const er=/^on[a-z]/,Kl=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?Al(e,s,r):t==="style"?Ll(e,n,s):Wt(t)?ns(t)||Bl(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Wl(e,t,s,r))?Ml(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Il(e,t,s,r))};function Wl(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&er.test(t)&&F(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||er.test(t)&&he(n)?!1:t in e}const zl=xe({patchProp:Kl},Tl);let Hn,tr=!1;function Vl(){return Hn=tr?Hn:ll(zl),tr=!0,Hn}const Jl=(...e)=>{const t=Vl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ql(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Ql(e){return he(e)?document.querySelector(e):e}var Yl='{"lang":"en-US","title":"VitePress","description":"A VitePress site","base":"/","head":[],"themeConfig":{"locales":{"/":{"label":"\u7B80\u4F53\u4E2D\u6587","nav":[{"text":"\u4F7F\u7528\u6307\u5357","link":"/","activeMatch":"^/$|^/guide/"},{"text":"\u5F00\u53D1\u624B\u518C","link":"/developer/basics","activeMatch":"^/developer/"}],"sidebar":{"/guide/":[{"text":"\u54EA\u5412\u76D1\u63A7","children":[{"text":"\u4ECB\u7ECD","link":"/"}]},{"text":"\u5B89\u88C5\u624B\u518C","children":[{"text":"\u5B89\u88C5 Dashboard","link":"/guide/dashboard"},{"text":"\u5B89\u88C5 Agent","link":"/guide/agent"}]},{"text":"\u7BA1\u7406\u9762\u677F\u914D\u7F6E","children":[{"text":"\u4E3B\u673A","link":"/guide/servers"},{"text":"\u670D\u52A1","link":"/guide/services"},{"text":"\u5B9A\u65F6\u4EFB\u52A1","link":"/guide/tasks"},{"text":"\u62A5\u8B66\u901A\u77E5","link":"/guide/notifications"},{"text":"\u8BBE\u7F6E","link":"/guide/settings"}]},{"text":"\u5E38\u89C1\u95EE\u9898","children":[{"text":"\u95EE\u98981","link":"/guide/q1"},{"text":"\u95EE\u98982","link":"/guide/q2"},{"text":"\u95EE\u98983","link":"/guide/q3"},{"text":"\u95EE\u98984","link":"/guide/q4"},{"text":"\u95EE\u98985","link":"/guide/q5"}]}],"/developer/":[{"text":"App Config","children":[{"text":"Basics","link":"/developer/basics"}]},{"text":"Theme Config","children":[{"text":"Homepage","link":"/developer/homepage"},{"text":"Algolia Search","link":"/developer/algolia-search"},{"text":"Carbon Ads","link":"/developer/carbon-ads"}]}],"/":[{"text":"\u54EA\u5412\u76D1\u63A7","children":[{"text":"\u4ECB\u7ECD","link":"/"}]},{"text":"\u5B89\u88C5\u624B\u518C","children":[{"text":"\u5B89\u88C5 Dashboard","link":"/guide/dashboard"},{"text":"\u5B89\u88C5 Agent","link":"/guide/agent"}]},{"text":"\u7BA1\u7406\u9762\u677F\u914D\u7F6E","children":[{"text":"\u4E3B\u673A","link":"/guide/servers"},{"text":"\u670D\u52A1","link":"/guide/services"},{"text":"\u5B9A\u65F6\u4EFB\u52A1","link":"/guide/tasks"},{"text":"\u62A5\u8B66\u901A\u77E5","link":"/guide/notifications"},{"text":"\u8BBE\u7F6E","link":"/guide/settings"}]},{"text":"\u5E38\u89C1\u95EE\u9898","children":[{"text":"\u95EE\u98981","link":"/guide/q1"},{"text":"\u95EE\u98982","link":"/guide/q2"},{"text":"\u95EE\u98983","link":"/guide/q3"},{"text":"\u95EE\u98984","link":"/guide/q4"},{"text":"\u95EE\u98985","link":"/guide/q5"}]}]},"repo":"nezhahq/nezhahq.github.io","docsDir":"docs","docsBranch":"main","editLinks":true,"editLinkText":"\u5728GitHub\u4E2D\u7F16\u8F91","lastUpdated":"\u4E0A\u6B21\u66F4\u65B0"},"/en_US/":{"label":"English","nav":[{"text":"User Guide","link":"/en_US/","activeMatch":"^/$|^/en_US/guide/"},{"text":"Development Manual","link":"/en_US/developer/basics","activeMatch":"^/en_US/developer/"}],"sidebar":{"/en_US/guide/":[{"text":"Nezha Monitoring","children":[{"text":"Introduction","link":"/en_US/"}]},{"text":"Installation Manual","children":[{"text":"Install Dashboard","link":"/en_US/guide/dashboard"},{"text":"Install Agent","link":"/en_US/guide/agent"}]},{"text":"Admin Panel","children":[{"text":"Servers","link":"/en_US/guide/servers"},{"text":"Services","link":"/en_US/guide/services"},{"text":"Tasks","link":"/en_US/guide/tasks"},{"text":"Notifications","link":"/en_US/guide/notifications"},{"text":"Settings","link":"/en_US/guide/settings"}]},{"text":"FAQ","children":[{"text":"Q1","link":"/en_US/guide/q1"},{"text":"Q2","link":"/en_US/guide/q2"},{"text":"Q3","link":"/en_US/guide/q3"},{"text":"Q4","link":"/en_US/guide/q4"},{"text":"Q5","link":"/en_US/guide/q5"}]}],"/en_US/developer/":[{"text":"App Config","children":[{"text":"Basics","link":"/en_US/developer/basics"}]},{"text":"Theme Config","children":[{"text":"Homepage","link":"/en_US/developer/homepage"},{"text":"Algolia Search","link":"/en_US/developer/algolia-search"},{"text":"Carbon Ads","link":"/en_US/developer/carbon-ads"}]}],"/en_US/":[{"text":"Nezha Monitoring","children":[{"text":"Introduction","link":"/en_US/"}]},{"text":"Installation Manual","children":[{"text":"Install Dashboard","link":"/en_US/guide/dashboard"},{"text":"Install Agent","link":"/en_US/guide/agent"}]},{"text":"Admin Panel","children":[{"text":"Servers","link":"/en_US/guide/servers"},{"text":"Services","link":"/en_US/guide/services"},{"text":"Tasks","link":"/en_US/guide/tasks"},{"text":"Notifications","link":"/en_US/guide/notifications"},{"text":"Settings","link":"/en_US/guide/settings"}]},{"text":"FAQ","children":[{"text":"Q1","link":"/en_US/guide/q1"},{"text":"Q2","link":"/en_US/guide/q2"},{"text":"Q3","link":"/en_US/guide/q3"},{"text":"Q4","link":"/en_US/guide/q4"},{"text":"Q5","link":"/en_US/guide/q5"}]}]},"repo":"nezhahq/nezhahq.github.io","docsDir":"docs","docsBranch":"main","editLinks":true,"editLinkText":"Edit this page on GitHub","lastUpdated":"Last Updated"}}},"locales":{"/":{"lang":"zh-CN","title":"\u54EA\u5412\u76D1\u63A7","description":"\u54EA\u5412\u76D1\u63A7\u662F\u4E00\u4E2A\u8F7B\u91CF\u5316\u7684\u8FD0\u7EF4\u5DE5\u5177"},"/en_US/":{"lang":"en-US","title":"Nezha Monitoring","description":"Nezha Monitoring is a lightweight O&M tool"}},"langs":{"/":{"label":"\u7B80\u4F53\u4E2D\u6587","lang":"zh-CN"},"/en_US/":{"label":"English","lang":"en-US"}},"scrollOffset":90}';const di=/^https?:/i,Ie=typeof window!="undefined";function Xl(e,t){t.sort((n,s)=>{const r=s.split("/").length-n.split("/").length;return r!==0?r:s.length-n.length});for(const n of t)if(e.startsWith(n))return n}function nr(e,t){const n=Xl(t,Object.keys(e));return n?e[n]:void 0}function Zl(e){const{locales:t}=e.themeConfig||{},n=e.locales;return t&&n?Object.keys(t).reduce((s,r)=>(s[r]={label:t[r].label,lang:n[r].lang},s),{}):{}}function Gl(e,t){t=ec(e,t);const n=nr(e.locales||{},t),s=nr(e.themeConfig.locales||{},t);return Object.assign({},e,n,{themeConfig:Object.assign({},e.themeConfig,s,{locales:{}}),lang:(n||e).lang,locales:{},langs:Zl(e)})}function ec(e,t){if(!Ie)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}const hi=Symbol(),Vt=vo(tc(Yl));function tc(e){return JSON.parse(e)}function nc(e){const t=D(()=>Gl(Vt.value,e.path));return{site:t,theme:D(()=>t.value.themeConfig),page:D(()=>e.data),frontmatter:D(()=>e.data.frontmatter),lang:D(()=>t.value.lang),localePath:D(()=>{const{langs:n,lang:s}=t.value,r=Object.keys(n).find(i=>n[i].lang===s);return xt(r||"/")}),title:D(()=>e.data.title?e.data.title+" | "+t.value.title:t.value.title),description:D(()=>e.data.description||t.value.description)}}function me(){const e=Ot(hi);if(!e)throw new Error("vitepress data not properly injected in app");return e}function sc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function xt(e){return di.test(e)?e:sc(Vt.value.base,e)}function pi(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t.endsWith("/")&&(t+="index"),Ie){const n="/";t=t.slice(n.length).replace(/\//g,"_")+".md";const s=__VP_HASH_MAP__[t.toLowerCase()];t=`${n}assets/${t}.${s}.js`}else t=`./${t.slice(1).replace(/\//g,"_")}.md.js`;return t}const _i=Symbol(),sr="http://a.com",gi={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{},lastUpdated:0},rc=()=>({path:"/",component:null,data:gi});function ic(e,t){const n=yn(rc());function s(o=Ie?location.href:"/"){const l=new URL(o,sr);return!l.pathname.endsWith("/")&&!l.pathname.endsWith(".html")&&(l.pathname+=".html",o=l.pathname+l.search+l.hash),Ie&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",o)),i(o)}let r=null;async function i(o,l=0,c=!1){const f=new URL(o,sr),h=r=f.pathname;try{let g=e(h);if("then"in g&&typeof g.then=="function"&&(g=await g),r===h){r=null;const{default:y,__pageData:T}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=h,n.component=Pt(y),n.data=Pt(JSON.parse(T)),Ie&&Rr(()=>{if(f.hash&&!l){let M=null;try{M=document.querySelector(decodeURIComponent(f.hash))}catch(V){console.warn(V)}if(M){rr(M,f.hash);return}}window.scrollTo(0,l)})}}catch(g){if(g.message.match(/fetch/)||console.error(g),!c)try{const y=await fetch(Vt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await y.json(),await i(o,l,!0);return}catch{}r===h&&(r=null,n.path=h,n.component=t?Pt(t):null,n.data=gi)}}return Ie&&(window.addEventListener("click",o=>{const l=o.target.closest("a");if(l){const{href:c,protocol:f,hostname:h,pathname:g,hash:y,target:T}=l,M=window.location,V=g.match(/\.\w+$/);!o.ctrlKey&&!o.shiftKey&&!o.altKey&&!o.metaKey&&T!=="_blank"&&f===M.protocol&&h===M.hostname&&!(V&&V[0]!==".html")&&(o.preventDefault(),g===M.pathname?y&&y!==M.hash&&(history.pushState(null,"",y),window.dispatchEvent(new Event("hashchange")),rr(l,y,l.classList.contains("header-anchor"))):s(c))}},{capture:!0}),window.addEventListener("popstate",o=>{i(location.href,o.state&&o.state.scrollPosition||0)}),window.addEventListener("hashchange",o=>{o.preventDefault()})),{route:n,go:s}}function oc(){const e=Ot(_i);if(!e)throw new Error("useRouter() is called without provider.");return e}function et(){return oc().route}function rr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(r){console.warn(r)}if(s){let r=Vt.value.scrollOffset;typeof r=="string"&&(r=document.querySelector(r).getBoundingClientRect().bottom+24);const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-r+i;!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})}}function lc(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}const o=[],l=Math.min(n.length,i.length);for(let c=0;cdocument.head.removeChild(c)),i.slice(l).forEach(c=>{const f=ir(c);document.head.appendChild(f),o.push(f)}),n=o};Wr(()=>{const i=e.data,o=t.value,l=i&&i.title,c=i&&i.description,f=i&&i.frontmatter.head;document.title=(l?l+" | ":"")+o.title,document.querySelector("meta[name=description]").setAttribute("content",c||o.description),r([...f?ac(f):[]])})}function ir([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function cc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function ac(e){return e.filter(t=>!cc(t))}const uc=oe({name:"VitePressContent",setup(){const e=et();return()=>at("div",{style:{position:"relative"}},[e.component?at(e.component):null])}});var ce=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const fc=/#.*$/,dc=/(index)?\.(md|html)$/,pn=/\/$/,hc=/^[a-z]+:/i;function xs(e){return Array.isArray(e)}function ys(e){return hc.test(e)}function pc(e,t){if(t===void 0)return!1;const n=or(`/${e.data.relativePath}`),s=or(t);return n===s}function or(e){return decodeURI(e).replace(fc,"").replace(dc,"")}function _c(e,t){const n=e.endsWith("/"),s=t.startsWith("/");return n&&s?e.slice(0,-1)+t:!n&&!s?`${e}/${t}`:e+t}function Gn(e){return/^\//.test(e)?e:`/${e}`}function mi(e){return e.replace(/(index)?(\.(md|html))?$/,"")||"/"}function gc(e){return e===!1||e==="auto"||xs(e)}function mc(e){return e.children!==void 0}function vc(e){return xs(e)?e.length===0:!e}function ws(e,t){if(gc(e))return e;t=Gn(t);for(const n in e)if(t.startsWith(Gn(n)))return e[n];return"auto"}function vi(e){return e.reduce((t,n)=>(n.link&&t.push({text:n.text,link:mi(n.link)}),mc(n)&&(t=[...t,...vi(n.children)]),t),[])}function bi(e){const t=et(),n=ys(e.value.link);return{props:D(()=>{const r=lr(`/${t.data.relativePath}`);let i=!1;if(e.value.activeMatch)i=new RegExp(e.value.activeMatch).test(r);else{const o=lr(e.value.link);i=o==="/"?o===r:r.startsWith(o)}return{class:{active:i,isExternal:n},href:n?e.value.link:xt(e.value.link),target:e.value.target||(n?"_blank":null),rel:e.value.rel||(n?"noopener noreferrer":null),"aria-label":e.value.ariaLabel}}),isExternal:n}}function lr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\.(html|md)$/,"").replace(/\/index$/,"/")}const bc={},xc={class:"icon outbound",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},yc=R("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"},null,-1),wc=R("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"},null,-1),kc=[yc,wc];function $c(e,t){return S(),U("svg",xc,kc)}var ks=ce(bc,[["render",$c]]);const Cc={class:"nav-link"},Ec=oe({props:{item:null},setup(e){const n=Or(e),{props:s,isExternal:r}=bi(n.item);return(i,o)=>(S(),U("div",Cc,[R("a",vs({class:"item"},$(s)),[zt(be(e.item.text)+" ",1),$(r)?(S(),ge(ks,{key:0})):J("",!0)],16)]))}});var _n=ce(Ec,[["__scopeId","data-v-b8818f8c"]]);const Sc={key:0,class:"home-hero"},Tc={key:0,class:"figure"},Ac=["src","alt"],Lc={key:1,id:"main-title",class:"title"},Pc={key:2,class:"tagline"},Ic=oe({setup(e){const{site:t,frontmatter:n}=me(),s=D(()=>{const{heroImage:o,heroText:l,tagline:c,actionLink:f,actionText:h}=n.value;return o||l||c||f&&h}),r=D(()=>n.value.heroText||t.value.title),i=D(()=>n.value.tagline||t.value.description);return(o,l)=>$(s)?(S(),U("header",Sc,[$(n).heroImage?(S(),U("figure",Tc,[R("img",{class:"image",src:$(xt)($(n).heroImage),alt:$(n).heroAlt},null,8,Ac)])):J("",!0),$(r)?(S(),U("h1",Lc,be($(r)),1)):J("",!0),$(i)?(S(),U("p",Pc,be($(i)),1)):J("",!0),$(n).actionLink&&$(n).actionText?(S(),ge(_n,{key:3,item:{link:$(n).actionLink,text:$(n).actionText},class:"action"},null,8,["item"])):J("",!0),$(n).altActionLink&&$(n).altActionText?(S(),ge(_n,{key:4,item:{link:$(n).altActionLink,text:$(n).altActionText},class:"action alt"},null,8,["item"])):J("",!0)])):J("",!0)}});var Mc=ce(Ic,[["__scopeId","data-v-370f18c0"]]);const Oc={key:0,class:"home-features"},Uc={class:"wrapper"},Rc={class:"container"},Fc={class:"features"},Nc={key:0,class:"title"},Hc={key:1,class:"details"},Bc=oe({setup(e){const{frontmatter:t}=me(),n=D(()=>t.value.features&&t.value.features.length>0),s=D(()=>t.value.features?t.value.features:[]);return(r,i)=>$(n)?(S(),U("div",Oc,[R("div",Uc,[R("div",Rc,[R("div",Fc,[(S(!0),U(fe,null,An($(s),(o,l)=>(S(),U("section",{key:l,class:"feature"},[o.title?(S(),U("h2",Nc,be(o.title),1)):J("",!0),o.details?(S(),U("p",Hc,be(o.details),1)):J("",!0)]))),128))])])])])):J("",!0)}});var Dc=ce(Bc,[["__scopeId","data-v-e39c13e0"]]);const jc={key:0,class:"footer"},qc={class:"container"},Kc={class:"text"},Wc=oe({setup(e){const{frontmatter:t}=me();return(n,s)=>$(t).footer?(S(),U("footer",jc,[R("div",qc,[R("p",Kc,be($(t).footer),1)])])):J("",!0)}});var zc=ce(Wc,[["__scopeId","data-v-30918238"]]);const Vc={class:"home","aria-labelledby":"main-title"},Jc={class:"home-content"},Qc=oe({setup(e){return(t,n)=>{const s=un("Content");return S(),U("main",Vc,[N(Mc),ae(t.$slots,"hero",{},void 0,!0),N(Dc),R("div",Jc,[N(s)]),ae(t.$slots,"features",{},void 0,!0),N(zc),ae(t.$slots,"footer",{},void 0,!0)])}}});var Yc=ce(Qc,[["__scopeId","data-v-10122c92"]]);const Xc=["href","aria-label"],Zc=["src"],Gc=oe({setup(e){const{site:t,theme:n,localePath:s}=me();return(r,i)=>(S(),U("a",{class:"nav-bar-title",href:$(s),"aria-label":`${$(t).title}, back to home`},[$(n).logo?(S(),U("img",{key:0,class:"logo",src:$(xt)($(n).logo),alt:"Logo"},null,8,Zc)):J("",!0),zt(" "+be($(t).title),1)],8,Xc))}});var ea=ce(Gc,[["__scopeId","data-v-cc01ef16"]]);function ta(){const{site:e,localePath:t,theme:n}=me();return D(()=>{const s=e.value.langs,r=Object.keys(s);if(r.length<2)return null;const o=et().path.replace(t.value,""),l=r.map(f=>({text:s[f].label,link:`${f}${o}`}));return{text:n.value.selectText||"Languages",items:l}})}const na=["GitHub","GitLab","Bitbucket"].map(e=>[e,new RegExp(e,"i")]);function sa(){const{site:e}=me();return D(()=>{const t=e.value.themeConfig,n=t.docsRepo||t.repo;if(!n)return null;const s=ra(n);return{text:ia(s,t.repoLabel),link:s}})}function ra(e){return di.test(e)?e:`https://github.com/${e}`}function ia(e,t){if(t)return t;const n=e.match(/^https?:\/\/[^/]+/);if(!n)return"Source";const s=na.find(([r,i])=>i.test(n[0]));return s&&s[0]?s[0]:"Source"}const oa=e=>(jr("data-v-bbc27490"),e=e(),qr(),e),la={class:"nav-dropdown-link-item"},ca=oa(()=>R("span",{class:"arrow"},null,-1)),aa={class:"text"},ua={class:"icon"},fa=oe({props:{item:null},setup(e){const n=Or(e),{props:s,isExternal:r}=bi(n.item);return(i,o)=>(S(),U("div",la,[R("a",vs({class:"item"},$(s)),[ca,R("span",aa,be(e.item.text),1),R("span",ua,[$(r)?(S(),ge(ks,{key:0})):J("",!0)])],16)]))}});var da=ce(fa,[["__scopeId","data-v-bbc27490"]]);const ha=["aria-label"],pa={class:"button-text"},_a={class:"dialog"},ga=oe({props:{item:null},setup(e){const t=et(),n=wn(!1);it(()=>t.path,()=>{n.value=!1});function s(){n.value=!n.value}return(r,i)=>(S(),U("div",{class:ct(["nav-dropdown-link",{open:n.value}])},[R("button",{class:"button","aria-label":e.item.ariaLabel,onClick:s},[R("span",pa,be(e.item.text),1),R("span",{class:ct(["button-arrow",n.value?"down":"right"])},null,2)],8,ha),R("ul",_a,[(S(!0),U(fe,null,An(e.item.items,o=>(S(),U("li",{key:o.text,class:"dialog-item"},[N(da,{item:o},null,8,["item"])]))),128))])],2))}});var cr=ce(ga,[["__scopeId","data-v-56bf3a3f"]]);const ma={key:0,class:"nav-links"},va={key:1,class:"item"},ba={key:2,class:"item"},xa=oe({setup(e){const{theme:t}=me(),n=ta(),s=sa(),r=D(()=>t.value.nav||s.value||n.value);return(i,o)=>$(r)?(S(),U("nav",ma,[$(t).nav?(S(!0),U(fe,{key:0},An($(t).nav,l=>(S(),U("div",{key:l.text,class:"item"},[l.items?(S(),ge(cr,{key:0,item:l},null,8,["item"])):(S(),ge(_n,{key:1,item:l},null,8,["item"]))]))),128)):J("",!0),$(n)?(S(),U("div",va,[N(cr,{item:$(n)},null,8,["item"])])):J("",!0),$(s)?(S(),U("div",ba,[N(_n,{item:$(s)},null,8,["item"])])):J("",!0)])):J("",!0)}});var xi=ce(xa,[["__scopeId","data-v-eab3edfe"]]);const ya={emits:["toggle"]},wa=R("svg",{class:"icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"},[R("path",{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z",class:""})],-1),ka=[wa];function $a(e,t,n,s,r,i){return S(),U("div",{class:"sidebar-button",onClick:t[0]||(t[0]=o=>e.$emit("toggle"))},ka)}var Ca=ce(ya,[["render",$a]]);const Ea=e=>(jr("data-v-675d8756"),e=e(),qr(),e),Sa={class:"nav-bar"},Ta=Ea(()=>R("div",{class:"flex-grow"},null,-1)),Aa={class:"nav"},La=oe({emits:["toggle"],setup(e){return(t,n)=>(S(),U("header",Sa,[N(Ca,{onToggle:n[0]||(n[0]=s=>t.$emit("toggle"))}),N(ea),Ta,R("div",Aa,[N(xi)]),ae(t.$slots,"search",{},void 0,!0)]))}});var Pa=ce(La,[["__scopeId","data-v-675d8756"]]);function Ia(){let e=null,t=null;const n=Fa(s,300);function s(){const o=Ma(),l=Oa(o);for(let c=0;c ul > li");l&&l!==t.parentElement?(e=l.querySelector("a"),e&&e.classList.add("active")):e=null}function i(o){o&&o.classList.remove("active")}$t(()=>{s(),window.addEventListener("scroll",n)}),Qr(()=>{r(decodeURIComponent(location.hash))}),Sn(()=>{window.removeEventListener("scroll",n)})}function Ma(){return[].slice.call(document.querySelectorAll(".sidebar a.sidebar-link-item"))}function Oa(e){return[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(n=>n.hash===t.hash))}function Ua(){return document.querySelector(".nav-bar").offsetHeight}function ar(e){const t=Ua();return e.parentElement.offsetTop-t-15}function Ra(e,t,n){const s=window.scrollY;return e===0&&s===0?[!0,null]:s{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),s=!0,setTimeout(()=>{s=!1},t))}}function Na(){const e=et(),{site:t}=me();return Ia(),D(()=>{const n=e.data.headers,s=e.data.frontmatter.sidebar,r=e.data.frontmatter.sidebarDepth;if(s===!1)return[];if(s==="auto")return ur(n,r);const i=ws(t.value.themeConfig.sidebar,e.data.relativePath);return i===!1?[]:i==="auto"?ur(n,r):i})}function ur(e,t){const n=[];if(e===void 0)return[];let s;return e.forEach(({level:r,title:i,slug:o})=>{if(r-1>t)return;const l={text:i,link:`#${o}`};r===2?(s=l,n.push(l)):s&&(s.children||(s.children=[])).push(l)}),n}const yi=e=>{const t=et(),{site:n,frontmatter:s}=me(),r=e.depth||1,i=s.value.sidebarDepth||1/0,o=t.data.headers,l=e.item.text,c=Ha(n.value.base,e.item.link),f=e.item.children,h=pc(t,e.item.link),g=r0?at("ul",{class:"sidebar-links"},t.map(r=>at(yi,{item:r,depth:s}))):e&&n?wi(!1,Ba(n),void 0,s):null}function Ba(e){return ki(Da(e))}function Da(e){e=e.map(n=>Object.assign({},n));let t;return e.forEach(n=>{n.level===2?t=n:t&&(t.children||(t.children=[])).push(n)}),e.filter(n=>n.level===2)}function ki(e){return e.map(t=>({text:t.title,link:`#${t.slug}`,children:t.children?ki(t.children):void 0}))}const ja={key:0,class:"sidebar-links"},qa=oe({setup(e){const t=Na();return(n,s)=>$(t).length>0?(S(),U("ul",ja,[(S(!0),U(fe,null,An($(t),r=>(S(),ge($(yi),{item:r},null,8,["item"]))),256))])):J("",!0)}});const Ka=oe({props:{open:{type:Boolean}},setup(e){return(t,n)=>(S(),U("aside",{class:ct(["sidebar",{open:e.open}])},[N(xi,{class:"nav"}),ae(t.$slots,"sidebar-top",{},void 0,!0),N(qa),ae(t.$slots,"sidebar-bottom",{},void 0,!0)],2))}});var Wa=ce(Ka,[["__scopeId","data-v-83e92a68"]]);const za=/bitbucket.org/;function Va(){const{page:e,theme:t,frontmatter:n}=me(),s=D(()=>{const{repo:i,docsDir:o="",docsBranch:l="master",docsRepo:c=i,editLinks:f}=t.value,h=n.value.editLink!=null?n.value.editLink:f,{relativePath:g}=e.value;return!h||!g||!i?null:Ja(i,c,o,l,g)}),r=D(()=>t.value.editLinkText||"Edit this page");return{url:s,text:r}}function Ja(e,t,n,s,r){return za.test(e)?Ya(e,t,n,s,r):Qa(e,t,n,s,r)}function Qa(e,t,n,s,r){return(ys(t)?t:`https://github.com/${t}`).replace(pn,"")+`/edit/${s}/`+(n?n.replace(pn,"")+"/":"")+r}function Ya(e,t,n,s,r){return(ys(t)?t:e).replace(pn,"")+`/src/${s}/`+(n?n.replace(pn,"")+"/":"")+r+`?mode=edit&spa=0&at=${s}&fileviewer=file-view-default`}const Xa={class:"edit-link"},Za=["href"],Ga=oe({setup(e){const{url:t,text:n}=Va();return(s,r)=>(S(),U("div",Xa,[$(t)?(S(),U("a",{key:0,class:"link",href:$(t),target:"_blank",rel:"noopener noreferrer"},[zt(be($(n))+" ",1),N(ks,{class:"icon"})],8,Za)):J("",!0)]))}});var eu=ce(Ga,[["__scopeId","data-v-1ed99556"]]);const tu={key:0,class:"last-updated"},nu={class:"prefix"},su={class:"datetime"},ru=oe({setup(e){const{theme:t,page:n}=me(),s=D(()=>{const o=t.value.lastUpdated;return o!==void 0&&o!==!1&&n.value.lastUpdated!==0}),r=D(()=>{const o=t.value.lastUpdated;return o===!0?"Last Updated":o}),i=wn("");return $t(()=>{Wr(()=>{i.value=new Date(n.value.lastUpdated).toLocaleString("en-US")})}),(o,l)=>$(s)?(S(),U("p",tu,[R("span",nu,be($(r))+":",1),R("span",su,be(i.value),1)])):J("",!0)}});var iu=ce(ru,[["__scopeId","data-v-abce3432"]]);const ou={class:"page-footer"},lu={class:"edit"},cu={class:"updated"},au=oe({setup(e){const{page:t}=me();return(n,s)=>(S(),U("footer",ou,[R("div",lu,[N(eu)]),R("div",cu,[$(t).lastUpdated?(S(),ge(iu,{key:0})):J("",!0)])]))}});var uu=ce(au,[["__scopeId","data-v-07c132fc"]]);function fu(){const{page:e,theme:t}=me(),n=D(()=>mi(Gn(e.value.relativePath))),s=D(()=>{const c=ws(t.value.sidebar,n.value);return xs(c)?vi(c):[]}),r=D(()=>s.value.findIndex(c=>c.link===n.value)),i=D(()=>{if(t.value.nextLinks!==!1&&r.value>-1&&r.value{if(t.value.prevLinks!==!1&&r.value>0)return s.value[r.value-1]}),l=D(()=>!!i.value||!!o.value);return{next:i,prev:o,hasLinks:l}}const du={},hu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},pu=R("path",{d:"M19,11H7.4l5.3-5.3c0.4-0.4,0.4-1,0-1.4s-1-0.4-1.4,0l-7,7c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.2-0.1,0.5,0,0.8c0.1,0.1,0.1,0.2,0.2,0.3l7,7c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4L7.4,13H19c0.6,0,1-0.4,1-1S19.6,11,19,11z"},null,-1),_u=[pu];function gu(e,t){return S(),U("svg",hu,_u)}var mu=ce(du,[["render",gu]]);const vu={},bu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},xu=R("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),yu=[xu];function wu(e,t){return S(),U("svg",bu,yu)}var ku=ce(vu,[["render",wu]]);const $u={key:0,class:"next-and-prev-link"},Cu={class:"container"},Eu={class:"prev"},Su=["href"],Tu={class:"text"},Au={class:"next"},Lu=["href"],Pu={class:"text"},Iu=oe({setup(e){const{hasLinks:t,prev:n,next:s}=fu();return(r,i)=>$(t)?(S(),U("div",$u,[R("div",Cu,[R("div",Eu,[$(n)?(S(),U("a",{key:0,class:"link",href:$(xt)($(n).link)},[N(mu,{class:"icon icon-prev"}),R("span",Tu,be($(n).text),1)],8,Su)):J("",!0)]),R("div",Au,[$(s)?(S(),U("a",{key:0,class:"link",href:$(xt)($(s).link)},[R("span",Pu,be($(s).text),1),N(ku,{class:"icon icon-next"})],8,Lu)):J("",!0)])])])):J("",!0)}});var Mu=ce(Iu,[["__scopeId","data-v-38ede35f"]]);const Ou={class:"page"},Uu={class:"container"},Ru=oe({setup(e){return(t,n)=>{const s=un("Content");return S(),U("main",Ou,[R("div",Uu,[ae(t.$slots,"top",{},void 0,!0),N(s,{class:"content"}),N(uu),N(Mu),ae(t.$slots,"bottom",{},void 0,!0)])])}}});var Fu=ce(Ru,[["__scopeId","data-v-7eddb2c4"]]);const Nu={key:0,id:"ads-container"},Hu=oe({setup(e){const t=()=>null,n=t,s=t,r=t,i=et(),{site:o,page:l,theme:c,frontmatter:f}=me(),h=D(()=>!!f.value.customLayout),g=D(()=>!!f.value.home),y=D(()=>Object.keys(o.value.langs).length>1),T=D(()=>{const P=c.value;return f.value.navbar===!1||P.navbar===!1?!1:o.value.title||P.logo||P.repo||P.nav}),M=wn(!1),V=D(()=>f.value.home||f.value.sidebar===!1?!1:!vc(ws(c.value.sidebar,i.data.relativePath))),m=P=>{M.value=typeof P=="boolean"?P:!M.value},w=m.bind(null,!1);it(i,w);const K=D(()=>[{"no-navbar":!T.value,"sidebar-open":M.value,"no-sidebar":!V.value}]);return(P,H)=>{const Y=un("Content"),X=un("Debug");return S(),U(fe,null,[R("div",{class:ct(["theme",$(K)])},[$(T)?(S(),ge(Pa,{key:0,onToggle:m},{search:De(()=>[ae(P.$slots,"navbar-search",{},()=>[$(c).algolia?(S(),ge($(r),{key:0,options:$(c).algolia,multilang:$(y)},null,8,["options","multilang"])):J("",!0)])]),_:3})):J("",!0),N(Wa,{open:M.value},{"sidebar-top":De(()=>[ae(P.$slots,"sidebar-top")]),"sidebar-bottom":De(()=>[ae(P.$slots,"sidebar-bottom")]),_:3},8,["open"]),R("div",{class:"sidebar-mask",onClick:H[0]||(H[0]=B=>m(!1))}),$(h)?(S(),ge(Y,{key:1})):$(g)?ae(P.$slots,"home",{key:2},()=>[N(Yc,null,{hero:De(()=>[ae(P.$slots,"home-hero")]),features:De(()=>[ae(P.$slots,"home-features")]),footer:De(()=>[ae(P.$slots,"home-footer")]),_:3})]):(S(),ge(Fu,{key:3},{top:De(()=>[ae(P.$slots,"page-top-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.carbon?(S(),U("div",Nu,[(S(),ge($(n),{key:"carbon"+$(l).relativePath,code:$(c).carbonAds.carbon,placement:$(c).carbonAds.placement},null,8,["code","placement"]))])):J("",!0)]),ae(P.$slots,"page-top")]),bottom:De(()=>[ae(P.$slots,"page-bottom"),ae(P.$slots,"page-bottom-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.custom?(S(),ge($(s),{key:"custom"+$(l).relativePath,code:$(c).carbonAds.custom,placement:$(c).carbonAds.placement},null,8,["code","placement"])):J("",!0)])]),_:3}))],2),N(X)],64)}}}),Bu={class:"theme"},Du=R("h1",null,"404",-1),ju=["href"],qu=oe({setup(e){const{site:t}=me(),n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."];function s(){return n[Math.floor(Math.random()*n.length)]}return(r,i)=>(S(),U("div",Bu,[Du,R("blockquote",null,be(s()),1),R("a",{href:$(t).base,"aria-label":"go to home"},"Take me home.",8,ju)]))}}),gn={Layout:Hu,NotFound:qu},Bn=new Set,$i=()=>document.createElement("link"),Ku=e=>{const t=$i();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Wu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const zu=Ie&&(tn=$i())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?Ku:Wu;function Vu(){if(!Ie||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Bn.has(c)){Bn.add(c);const f=pi(c);zu(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{target:o,hostname:l,pathname:c}=i,f=c.match(/\.\w+$/);f&&f[0]!==".html"||o!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(i):Bn.add(c))})})};$t(s);const r=et();it(()=>r.path,s),Sn(()=>{n&&n.disconnect()})}const Ju=oe({setup(e,{slots:t}){const n=wn(!1);return $t(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}}),Qu=gn.NotFound||(()=>"404 Not Found"),Yu={name:"VitePressApp",setup(){const{site:e}=me();return $t(()=>{it(()=>e.value.lang,t=>{document.documentElement.lang=t},{immediate:!0})}),Vu(),()=>at(gn.Layout)}};function Xu(){const e=Gu(),t=Zu();t.provide(_i,e);const n=nc(e.route);return t.provide(hi,n),t.component("Content",uc),t.component("ClientOnly",Ju),t.component("Debug",()=>null),Object.defineProperty(t.config.globalProperties,"$frontmatter",{get(){return n.frontmatter.value}}),gn.enhanceApp&&gn.enhanceApp({app:t,router:e,siteData:Vt}),{app:t,router:e,data:n}}function Zu(){return Jl(Yu)}function Gu(){let e=Ie,t;return ic(n=>{let s=pi(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),Ie?(e=!1,Ai(()=>import(s),[])):require(s)},Qu)}if(Ie){const{app:e,router:t,data:n}=Xu();t.go().then(()=>{lc(t.route,n.site),e.mount("#app")})}export{ce as _,ef as a,R as b,U as c,Xu as createApp,zt as d,S as o}; diff --git a/assets/chunks/AlgoliaSearchBox.e5144af4.js b/assets/chunks/AlgoliaSearchBox.e5144af4.js deleted file mode 100644 index 718fd204..00000000 --- a/assets/chunks/AlgoliaSearchBox.e5144af4.js +++ /dev/null @@ -1,13 +0,0 @@ -import{g as Sr,u as Er,k as wr,w as Ct,i as jr,l as Pr,o as Ir,c as kr,m as Cr}from"../app.54944ef9.js";/*! @docsearch/js 3.0.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function Dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function P(e){for(var t=1;t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Fe(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,r){var o=n==null?null:typeof Symbol!="undefined"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var a,i,u=[],s=!0,l=!1;try{for(o=o.call(n);!(s=(a=o.next()).done)&&(u.push(a.value),!r||u.length!==r);s=!0);}catch(c){l=!0,i=c}finally{try{s||o.return==null||o.return()}finally{if(l)throw i}}return u}}(e,t)||qn(e,t)||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 Be(e){return function(t){if(Array.isArray(t))return lt(t)}(e)||function(t){if(typeof Symbol!="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||qn(e)||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.`)}()}function qn(e,t){if(e){if(typeof e=="string")return lt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?lt(e,t):void 0}}function lt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n3)for(n=[n],a=3;a0?ge(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=n,p.__b=n.__b+1,(m=_[c])===null||m&&p.key==m.key&&p.type===m.type)_[c]=void 0;else for(d=0;d3)for(n=[n],a=3;a=n.__.length&&n.__.push({}),n.__[e]}function Ft(e,t,n){var r=we(ce++,2);return r.t=e,r.__c||(r.__=[n?n(t):Qn(void 0,t),function(o){var a=r.t(r.__[0],o);r.__[0]!==a&&(r.__=[a,r.__[1]],r.__c.setState({}))}],r.__c=L),r.__}function Bt(e,t){var n=we(ce++,4);!E.__s&&Et(n.__H,t)&&(n.__=e,n.__H=t,L.__h.push(n))}function Le(e,t){var n=we(ce++,7);return Et(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Lr(){ft.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(qe),e.__H.__h.forEach(pt),e.__H.__h=[]}catch(t){e.__H.__h=[],E.__e(t,e.__v)}}),ft=[]}E.__b=function(e){L=null,Lt&&Lt(e)},E.__r=function(e){qt&&qt(e),ce=0;var t=(L=e.__c).__H;t&&(t.__h.forEach(qe),t.__h.forEach(pt),t.__h=[])},E.diffed=function(e){Mt&&Mt(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(ft.push(t)!==1&&Tt===E.requestAnimationFrame||((Tt=E.requestAnimationFrame)||function(n){var r,o=function(){clearTimeout(a),Vt&&cancelAnimationFrame(r),setTimeout(n)},a=setTimeout(o,100);Vt&&(r=requestAnimationFrame(o))})(Lr)),L=void 0},E.__c=function(e,t){t.some(function(n){try{n.__h.forEach(qe),n.__h=n.__h.filter(function(r){return!r.__||pt(r)})}catch(r){t.some(function(o){o.__h&&(o.__h=[])}),t=[],E.__e(r,n.__v)}}),Ht&&Ht(e,t)},E.unmount=function(e){Ut&&Ut(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(qe)}catch(n){E.__e(n,t.__v)}};var Vt=typeof requestAnimationFrame=="function";function qe(e){var t=L;typeof e.__c=="function"&&e.__c(),L=t}function pt(e){var t=L;e.__c=e.__(),L=t}function Et(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Qn(e,t){return typeof t=="function"?t(e):t}function Yn(e,t){for(var n in t)e[n]=t[n];return e}function mt(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function dt(e){this.props=e}(dt.prototype=new B).isPureReactComponent=!0,dt.prototype.shouldComponentUpdate=function(e,t){return mt(this.props,e)||mt(this.state,t)};var zt=E.__b;E.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),zt&&zt(e)};var qr=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,Kt=function(e,t){return e==null?null:K(K(e).map(t))},Mr={map:Kt,forEach:Kt,count:function(e){return e?K(e).length:0},only:function(e){var t=K(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:K},Hr=E.__e;function Me(){this.__u=0,this.t=null,this.__b=null}function Gn(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function ve(){this.u=null,this.o=null}E.__e=function(e,t,n){if(e.then){for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t)}Hr(e,t,n)},(Me.prototype=new B).__c=function(e,t){var n=t.__c,r=this;r.t==null&&(r.t=[]),r.t.push(n);var o=Gn(r.__v),a=!1,i=function(){a||(a=!0,n.componentWillUnmount=n.__c,o?o(u):u())};n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){i(),n.__c&&n.__c()};var u=function(){if(!--r.__u){if(r.state.__e){var l=r.state.__e;r.__v.__k[0]=function d(m,p,v){return m&&(m.__v=null,m.__k=m.__k&&m.__k.map(function(h){return d(h,p,v)}),m.__c&&m.__c.__P===p&&(m.__e&&v.insertBefore(m.__e,m.__d),m.__c.__e=!0,m.__c.__P=v)),m}(l,l.__c.__P,l.__c.__O)}var c;for(r.setState({__e:r.__b=null});c=r.t.pop();)c.forceUpdate()}},s=t.__h===!0;r.__u++||s||r.setState({__e:r.__b=r.__v.__k[0]}),e.then(i,i)},Me.prototype.componentWillUnmount=function(){this.t=[]},Me.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function a(i,u,s){return i&&(i.__c&&i.__c.__H&&(i.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),i.__c.__H=null),(i=Yn({},i)).__c!=null&&(i.__c.__P===s&&(i.__c.__P=u),i.__c=null),i.__k=i.__k&&i.__k.map(function(l){return a(l,u,s)})),i}(this.__b,n,r.__O=r.__P)}this.__b=null}var o=t.__e&&F(Q,null,e.fallback);return o&&(o.__h=null),[F(Q,null,t.__e?null:e.children),o]};var Wt=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(r)}}),Ee(F(Ur,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function Zn(e,t){return F(Fr,{__v:e,i:t})}(ve.prototype=new B).__e=function(e){var t=this,n=Gn(t.__v),r=t.o.get(e);return r[0]++,function(o){var a=function(){t.props.revealOrder?(r.push(o),Wt(t,e,r)):o()};n?n(a):a()}},ve.prototype.render=function(e){this.u=null,this.o=new Map;var t=K(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},ve.prototype.componentDidUpdate=ve.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){Wt(e,n,t)})};var Xn=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,Br=/^(?: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]/,Vr=function(e){return(typeof Symbol!="undefined"&&Oe(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function er(e,t,n){return t.__k==null&&(t.textContent=""),Ee(e,t),typeof n=="function"&&n(),e?e.__c:null}B.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(B.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Jt=E.event;function zr(){}function Kr(){return this.cancelBubble}function Wr(){return this.defaultPrevented}E.event=function(e){return Jt&&(e=Jt(e)),e.persist=zr,e.isPropagationStopped=Kr,e.isDefaultPrevented=Wr,e.nativeEvent=e};var tr,$t={configurable:!0,get:function(){return this.class}},Qt=E.vnode;E.vnode=function(e){var t=e.type,n=e.props,r=n;if(typeof t=="string"){for(var o in r={},n){var a=n[o];o==="value"&&"defaultValue"in n&&a==null||(o==="defaultValue"&&"value"in n&&n.value==null?o="value":o==="download"&&a===!0?a="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!Vr(n.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():Br.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():a===null&&(a=void 0),r[o]=a)}t=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=K(n.children).forEach(function(i){i.props.selected=r.value.indexOf(i.props.value)!=-1})),t=="select"&&r.defaultValue!=null&&(r.value=K(n.children).forEach(function(i){i.props.selected=r.multiple?r.defaultValue.indexOf(i.props.value)!=-1:r.defaultValue==i.props.value})),e.props=r}t&&n.class!=n.className&&($t.enumerable="className"in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",$t)),e.$$typeof=Xn,Qt&&Qt(e)};var Yt=E.__r;E.__r=function(e){Yt&&Yt(e),tr=e.__c};var Jr={ReactCurrentDispatcher:{current:{readContext:function(e){return tr.__n[e.__c].props.value}}}};(typeof performance=="undefined"?"undefined":Oe(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);function Gt(e){return!!e&&e.$$typeof===Xn}var f={useState:function(e){return oe=1,Ft(Qn,e)},useReducer:Ft,useEffect:function(e,t){var n=we(ce++,3);!E.__s&&Et(n.__H,t)&&(n.__=e,n.__H=t,L.__H.__h.push(n))},useLayoutEffect:Bt,useRef:function(e){return oe=5,Le(function(){return{current:e}},[])},useImperativeHandle:function(e,t,n){oe=6,Bt(function(){typeof e=="function"?e(t()):e&&(e.current=t())},n==null?n:n.concat(e))},useMemo:Le,useCallback:function(e,t){return oe=8,Le(function(){return e},t)},useContext:function(e){var t=L.context[e.__c],n=we(ce++,9);return n.__c=e,t?(n.__==null&&(n.__=!0,t.sub(L)),t.props.value):e.__},useDebugValue:function(e,t){E.useDebugValue&&E.useDebugValue(t?t(e):e)},version:"16.8.0",Children:Mr,render:er,hydrate:function(e,t,n){return $n(e,t),typeof n=="function"&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(Ee(null,e),!0)},createPortal:Zn,createElement:F,createContext:function(e,t){var n={__c:t="__cC"+Hn++,__:e,Consumer:function(r,o){return r.children(o)},Provider:function(r){var o,a;return this.getChildContext||(o=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(i){this.props.value!==i.value&&o.some(st)},this.sub=function(i){o.push(i);var u=i.componentWillUnmount;i.componentWillUnmount=function(){o.splice(o.indexOf(i),1),u&&u.call(i)}}),r.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(e){return F.bind(null,e)},cloneElement:function(e){return Gt(e)?Tr.apply(null,arguments):e},createRef:function(){return{current:null}},Fragment:Q,isValidElement:Gt,findDOMNode:function(e){return e&&(e.base||e.nodeType===1&&e)||null},Component:B,PureComponent:dt,memo:function(e,t){function n(o){var a=this.props.ref,i=a==o.ref;return!i&&a&&(a.call?a(null):a.current=null),t?!t(this.props,o)||!i:mt(this.props,o)}function r(o){return this.shouldComponentUpdate=n,F(e,o)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r},forwardRef:function(e){function t(n,r){var o=Yn({},n);return delete o.ref,e(o,(r=n.ref||r)&&(Oe(r)!="object"||"current"in r)?r:null)}return t.$$typeof=qr,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t},unstable_batchedUpdates:function(e,t){return e(t)},StrictMode:Q,Suspense:Me,SuspenseList:ve,lazy:function(e){var t,n,r;function o(a){if(t||(t=e()).then(function(i){n=i.default||i},function(i){r=i}),r)throw r;if(!n)throw t;return F(n,a)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Jr};function $r(){return f.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},f.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function nr(){return f.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},f.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var Qr=["translations"];function ht(){return ht=Object.assign||function(e){for(var t=1;t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Gr=f.forwardRef(function(e,t){var n=e.translations,r=n===void 0?{}:n,o=Yr(e,Qr),a=r.buttonText,i=a===void 0?"Search":a,u=r.buttonAriaLabel,s=u===void 0?"Search":u,l=Le(function(){return typeof navigator!="undefined"?/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"\u2318":"Ctrl":null},[]);return f.createElement("button",ht({type:"button",className:"DocSearch DocSearch-Button","aria-label":s},o,{ref:t}),f.createElement("span",{className:"DocSearch-Button-Container"},f.createElement(nr,null),f.createElement("span",{className:"DocSearch-Button-Placeholder"},i)),f.createElement("span",{className:"DocSearch-Button-Keys"},l!==null&&f.createElement(f.Fragment,null,f.createElement("span",{className:"DocSearch-Button-Key"},l==="Ctrl"?f.createElement($r,null):l),f.createElement("span",{className:"DocSearch-Button-Key"},"K"))))});function je(e){return e.reduce(function(t,n){return t.concat(n)},[])}var Zr=0;function vt(e){return e.collections.length===0?0:e.collections.reduce(function(t,n){return t+n.items.length},0)}var Xr=function(){},eo=[{segment:"autocomplete-core",version:"1.5.2"}];function He(e,t){var n=t;return{then:function(r,o){return He(e.then(Ce(r,n,e),Ce(o,n,e)),n)},catch:function(r){return He(e.catch(Ce(r,n,e)),n)},finally:function(r){return r&&n.onCancelList.push(r),He(e.finally(Ce(r&&function(){return n.onCancelList=[],r()},n,e)),n)},cancel:function(){n.isCanceled=!0;var r=n.onCancelList;n.onCancelList=[],r.forEach(function(o){o()})},isCanceled:function(){return n.isCanceled===!0}}}function Zt(e){return He(e,{isCanceled:!1,onCancelList:[]})}function Ce(e,t,n){return e?function(r){return t.isCanceled?r:e(r)}:n}function Xt(e,t,n,r){if(!n)return null;if(e<0&&(t===null||r!==null&&t===0))return n+e;var o=(t===null?-1:t)+e;return o<=-1||o>=n?r===null?null:0:o}function en(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function to(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function no(e,t){var n=[];return Promise.resolve(e(t)).then(function(r){return Promise.all(r.filter(function(o){return Boolean(o)}).map(function(o){if(o.sourceId,n.includes(o.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(o.sourceId)," is not unique."));n.push(o.sourceId);var a=function(i){for(var u=1;ue.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var sn,ot,Re,de=null,fn=(sn=-1,ot=-1,Re=void 0,function(e){var t=++sn;return Promise.resolve(e).then(function(n){return Re&&t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Oo=["props","refresh","store"],So=["inputElement","formElement","panelElement"],Eo=["inputElement"],wo=["inputElement","maxLength"],jo=["item","source"];function mn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function T(e){for(var t=1;t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Io(e){var t=e.props,n=e.refresh,r=e.store,o=he(e,Oo);return{getEnvironmentProps:function(a){var i=a.inputElement,u=a.formElement,s=a.panelElement;return T({onTouchStart:function(l){!r.getState().isOpen&&r.pendingRequests.isEmpty()||l.target===i||[u,s].some(function(c){return d=c,m=l.target,d===m||d.contains(m);var d,m})===!1&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())},onTouchMove:function(l){r.getState().isOpen!==!1&&i===t.environment.document.activeElement&&l.target!==i&&i.blur()}},he(a,So))},getRootProps:function(a){return T({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},a)},getFormProps:function(a){return a.inputElement,T({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(T({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),(u=a.inputElement)===null||u===void 0||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(T({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),(u=a.inputElement)===null||u===void 0||u.focus()}},he(a,Eo))},getLabelProps:function(a){return T({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},a)},getInputProps:function(a){function i(p){(t.openOnFocus||Boolean(r.getState().query))&&re(T({event:p,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var u="ontouchstart"in t.environment,s=a||{},l=(s.inputElement,s.maxLength),c=l===void 0?512:l,d=he(s,wo),m=ae(r.getState());return T({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&r.getState().activeItemId!==null?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:m!=null&&m.itemUrl?"go":"search",spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(p){re(T({event:p,props:t,query:p.currentTarget.value.slice(0,c),refresh:n,store:r},o))},onKeyDown:function(p){(function(v){var h=v.event,y=v.props,_=v.refresh,g=v.store,b=bo(v,_o);if(h.key==="ArrowUp"||h.key==="ArrowDown"){var O=function(){var R=y.environment.document.getElementById("".concat(y.id,"-item-").concat(g.getState().activeItemId));R&&(R.scrollIntoViewIfNeeded?R.scrollIntoViewIfNeeded(!1):R.scrollIntoView(!1))},S=function(){var R=ae(g.getState());if(g.getState().activeItemId!==null&&R){var Ge=R.item,Ze=R.itemInputValue,Pe=R.itemUrl,W=R.source;W.onActive(G({event:h,item:Ge,itemInputValue:Ze,itemUrl:Pe,refresh:_,source:W,state:g.getState()},b))}};h.preventDefault(),g.getState().isOpen===!1&&(y.openOnFocus||Boolean(g.getState().query))?re(G({event:h,props:y,query:g.getState().query,refresh:_,store:g},b)).then(function(){g.dispatch(h.key,{nextActiveItemId:y.defaultActiveItemId}),S(),setTimeout(O,0)}):(g.dispatch(h.key,{}),S(),O())}else if(h.key==="Escape")h.preventDefault(),g.dispatch(h.key,null),g.pendingRequests.cancelAll();else if(h.key==="Enter"){if(g.getState().activeItemId===null||g.getState().collections.every(function(R){return R.items.length===0}))return;h.preventDefault();var I=ae(g.getState()),D=I.item,A=I.itemInputValue,k=I.itemUrl,N=I.source;if(h.metaKey||h.ctrlKey)k!==void 0&&(N.onSelect(G({event:h,item:D,itemInputValue:A,itemUrl:k,refresh:_,source:N,state:g.getState()},b)),y.navigator.navigateNewTab({itemUrl:k,item:D,state:g.getState()}));else if(h.shiftKey)k!==void 0&&(N.onSelect(G({event:h,item:D,itemInputValue:A,itemUrl:k,refresh:_,source:N,state:g.getState()},b)),y.navigator.navigateNewWindow({itemUrl:k,item:D,state:g.getState()}));else if(!h.altKey){if(k!==void 0)return N.onSelect(G({event:h,item:D,itemInputValue:A,itemUrl:k,refresh:_,source:N,state:g.getState()},b)),void y.navigator.navigate({itemUrl:k,item:D,state:g.getState()});re(G({event:h,nextState:{isOpen:!1},props:y,query:A,refresh:_,store:g},b)).then(function(){N.onSelect(G({event:h,item:D,itemInputValue:A,itemUrl:k,refresh:_,source:N,state:g.getState()},b))})}}})(T({event:p,props:t,refresh:n,store:r},o))},onFocus:i,onBlur:function(){u||(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())},onClick:function(p){a.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(p)}},d)},getPanelProps:function(a){return T({onMouseDown:function(i){i.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},a)},getListProps:function(a){return T({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},a)},getItemProps:function(a){var i=a.item,u=a.source,s=he(a,jo);return T({id:"".concat(t.id,"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(l){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var c=ae(r.getState());if(r.getState().activeItemId!==null&&c){var d=c.item,m=c.itemInputValue,p=c.itemUrl,v=c.source;v.onActive(T({event:l,item:d,itemInputValue:m,itemUrl:p,refresh:n,source:v,state:r.getState()},o))}}},onMouseDown:function(l){l.preventDefault()},onClick:function(l){var c=u.getItemInputValue({item:i,state:r.getState()}),d=u.getItemUrl({item:i,state:r.getState()});(d?Promise.resolve():re(T({event:l,nextState:{isOpen:!1},props:t,query:c,refresh:n,store:r},o))).then(function(){u.onSelect(T({event:l,item:i,itemInputValue:c,itemUrl:d,refresh:n,source:u,state:r.getState()},o))})}},s)}}}function dn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function ko(e){for(var t=1;t0},reshape:function(m){return m.sources}},u),{},{id:(l=u.id)!==null&&l!==void 0?l:"autocomplete-".concat(Zr++),plugins:d,initialState:te({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},u.initialState),onStateChange:function(m){var p;(p=u.onStateChange)===null||p===void 0||p.call(u,m),d.forEach(function(v){var h;return(h=v.onStateChange)===null||h===void 0?void 0:h.call(v,m)})},onSubmit:function(m){var p;(p=u.onSubmit)===null||p===void 0||p.call(u,m),d.forEach(function(v){var h;return(h=v.onSubmit)===null||h===void 0?void 0:h.call(v,m)})},onReset:function(m){var p;(p=u.onReset)===null||p===void 0||p.call(u,m),d.forEach(function(v){var h;return(h=v.onReset)===null||h===void 0?void 0:h.call(v,m)})},getSources:function(m){return Promise.all([].concat(co(d.map(function(p){return p.getSources})),[u.getSources]).filter(Boolean).map(function(p){return no(p,m)})).then(function(p){return je(p)}).then(function(p){return p.map(function(v){return te(te({},v),{},{onSelect:function(h){v.onSelect(h),s.forEach(function(y){var _;return(_=y.onSelect)===null||_===void 0?void 0:_.call(y,h)})},onActive:function(h){v.onActive(h),s.forEach(function(y){var _;return(_=y.onActive)===null||_===void 0?void 0:_.call(y,h)})}})})})},navigator:te({navigate:function(m){var p=m.itemUrl;c.location.assign(p)},navigateNewTab:function(m){var p=m.itemUrl,v=c.open(p,"_blank","noopener");v==null||v.focus()},navigateNewWindow:function(m){var p=m.itemUrl;c.open(p,"_blank","noopener")}},u.navigator)})}(e,t),r=ao(xo,n,function(u){var s=u.prevState,l=u.state;n.onStateChange(Z({prevState:s,state:l,refresh:i},o))}),o=function(u){var s=u.store;return{setActiveItemId:function(l){s.dispatch("setActiveItemId",l)},setQuery:function(l){s.dispatch("setQuery",l)},setCollections:function(l){var c=0,d=l.map(function(m){return xe(xe({},m),{},{items:je(m.items).map(function(p){return xe(xe({},p),{},{__autocomplete_id:c++})})})});s.dispatch("setCollections",d)},setIsOpen:function(l){s.dispatch("setIsOpen",l)},setStatus:function(l){s.dispatch("setStatus",l)},setContext:function(l){s.dispatch("setContext",l)}}}({store:r}),a=Io(Z({props:n,refresh:i,store:r},o));function i(){return re(Z({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:i,store:r},o))}return n.plugins.forEach(function(u){var s;return(s=u.subscribe)===null||s===void 0?void 0:s.call(u,Z(Z({},o),{},{refresh:i,onSelect:function(l){t.push({onSelect:l})},onActive:function(l){t.push({onActive:l})}}))}),function(u){var s,l=u.metadata,c=u.environment;if(!((s=c.navigator)===null||s===void 0)&&s.userAgent.includes("Algolia Crawler")){var d=c.document.createElement("meta"),m=c.document.querySelector("head");d.name="algolia:metadata",setTimeout(function(){d.content=JSON.stringify(l),m.appendChild(d)},0)}}({metadata:Co({plugins:n.plugins,options:e}),environment:n.environment}),Z(Z({refresh:i},a),o)}function Ro(e){var t=e.translations,n=(t===void 0?{}:t).searchByText,r=n===void 0?"Search by":n;return f.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"},f.createElement("span",{className:"DocSearch-Label"},r),f.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img"},f.createElement("path",{d:"M2.5067 0h14.0245c1.384.001 2.5058 1.1205 2.5068 2.5017V16.5c-.0014 1.3808-1.1232 2.4995-2.5068 2.5H2.5067C1.1232 18.9995.0014 17.8808 0 16.5V2.4958A2.495 2.495 0 01.735.7294 2.505 2.505 0 012.5068 0zM37.95 15.0695c-3.7068.0168-3.7068-2.986-3.7068-3.4634L34.2372.3576 36.498 0v11.1794c0 .2715 0 1.9889 1.452 1.994v1.8961zm-9.1666-1.8388c.694 0 1.2086-.0397 1.5678-.1088v-2.2934a5.3639 5.3639 0 00-1.3303-.1679 4.8283 4.8283 0 00-.758.0582 2.2845 2.2845 0 00-.688.2024c-.2029.0979-.371.2362-.4919.4142-.1268.1788-.185.2826-.185.5533 0 .5297.185.8359.5205 1.0375.3355.2016.7928.3053 1.365.3053v-.0008zm-.1969-8.1817c.7463 0 1.3768.092 1.8856.2767.5088.1838.9195.4428 1.2204.7717.3068.334.5147.7777.6423 1.251.1327.4723.196.991.196 1.5603v5.798c-.5235.1036-1.05.192-1.5787.2649-.7048.1037-1.4976.156-2.3774.156-.5832 0-1.1215-.0582-1.6016-.167a3.385 3.385 0 01-1.2432-.5364 2.6034 2.6034 0 01-.8037-.9565c-.191-.3922-.29-.9447-.29-1.5208 0-.5533.11-.905.3246-1.2863a2.7351 2.7351 0 01.8849-.9329c.376-.242.8029-.415 1.2948-.5187a7.4517 7.4517 0 011.5381-.156 7.1162 7.1162 0 011.6667.2024V8.886c0-.259-.0296-.5061-.093-.7372a1.5847 1.5847 0 00-.3245-.6158 1.5079 1.5079 0 00-.6119-.4158 2.6788 2.6788 0 00-.966-.173c-.5206 0-.9948.0634-1.4283.1384a6.5481 6.5481 0 00-1.065.259l-.2712-1.849c.2831-.0986.7048-.1964 1.2491-.2943a9.2979 9.2979 0 011.752-.1501v.0008zm44.6597 8.1193c.6947 0 1.2086-.0405 1.567-.1097v-2.2942a5.3743 5.3743 0 00-1.3303-.1679c-.2485 0-.503.0177-.7573.0582a2.2853 2.2853 0 00-.688.2024 1.2333 1.2333 0 00-.4918.4142c-.1268.1788-.1843.2826-.1843.5533 0 .5297.1843.8359.5198 1.0375.3414.2066.7927.3053 1.365.3053v.0009zm-.191-8.1767c.7463 0 1.3768.0912 1.8856.2759.5087.1847.9195.4436 1.2204.7717.3.329.5147.7786.6414 1.251a5.7248 5.7248 0 01.197 1.562v5.7972c-.3466.0742-.874.1602-1.5788.2648-.7049.1038-1.4976.1552-2.3774.1552-.5832 0-1.1215-.0573-1.6016-.167a3.385 3.385 0 01-1.2432-.5356 2.6034 2.6034 0 01-.8038-.9565c-.191-.3922-.2898-.9447-.2898-1.5216 0-.5533.1098-.905.3245-1.2854a2.7373 2.7373 0 01.8849-.9338c.376-.2412.8029-.4141 1.2947-.5178a7.4545 7.4545 0 012.325-.1097c.2781.0287.5672.081.879.156v-.3686a2.7781 2.7781 0 00-.092-.738 1.5788 1.5788 0 00-.3246-.6166 1.5079 1.5079 0 00-.612-.415 2.6797 2.6797 0 00-.966-.1729c-.5205 0-.9947.0633-1.4282.1384a6.5608 6.5608 0 00-1.065.259l-.2712-1.8498c.283-.0979.7048-.1957 1.2491-.2935a9.8597 9.8597 0 011.752-.1494zm-6.79-1.072c-.7576.001-1.373-.6103-1.3759-1.3664 0-.755.6128-1.3664 1.376-1.3664.764 0 1.3775.6115 1.3775 1.3664s-.6195 1.3664-1.3776 1.3664zm1.1393 11.1507h-2.2726V5.3409l2.2734-.3568v10.0845l-.0008.0017zm-3.984 0c-3.707.0168-3.707-2.986-3.707-3.4642L59.7069.3576 61.9685 0v11.1794c0 .2715 0 1.9889 1.452 1.994V15.0703zm-7.3512-4.979c0-.975-.2138-1.7873-.6305-2.3516-.4167-.571-.9998-.852-1.747-.852-.7454 0-1.3302.281-1.7452.852-.4166.5702-.6195 1.3765-.6195 2.3516 0 .9851.208 1.6473.6254 2.2183.4158.576.9998.8587 1.7461.8587.7454 0 1.3303-.2885 1.747-.8595.4158-.5761.6237-1.2315.6237-2.2184v.0009zm2.3132-.006c0 .7609-.1099 1.3361-.3356 1.9654a4.654 4.654 0 01-.9533 1.6076A4.214 4.214 0 0155.613 14.69c-.579.2412-1.4697.3795-1.9143.3795-.4462-.005-1.3303-.1324-1.9033-.3795a4.307 4.307 0 01-1.474-1.0316c-.4115-.4445-.7293-.9801-.9609-1.6076a5.3423 5.3423 0 01-.3465-1.9653c0-.7608.104-1.493.3356-2.1155a4.683 4.683 0 01.9719-1.5958 4.3383 4.3383 0 011.479-1.0257c.5739-.242 1.2043-.3567 1.8864-.3567.6829 0 1.3125.1197 1.8906.3567a4.1245 4.1245 0 011.4816 1.0257 4.7587 4.7587 0 01.9592 1.5958c.2426.6225.3643 1.3547.3643 2.1155zm-17.0198 0c0 .9448.208 1.9932.6238 2.431.4166.4386.955.6579 1.6142.6579.3584 0 .6998-.0523 1.0176-.1502.3186-.0978.5721-.2134.775-.3517V7.0784a8.8706 8.8706 0 00-1.4926-.1906c-.8206-.0236-1.4452.312-1.8847.8468-.4335.5365-.6533 1.476-.6533 2.3516v-.0008zm6.2863 4.4485c0 1.5385-.3938 2.662-1.1866 3.3773-.791.7136-2.0005 1.0712-3.6308 1.0712-.5958 0-1.834-.1156-2.8228-.334l.3643-1.7865c.8282.173 1.9202.2193 2.4932.2193.9077 0 1.555-.1847 1.943-.5533.388-.3686.578-.916.578-1.643v-.3687a6.8289 6.8289 0 01-.8848.3349c-.3634.1096-.786.167-1.261.167-.6246 0-1.1917-.0979-1.7055-.2944a3.5554 3.5554 0 01-1.3244-.8645c-.3642-.3796-.6541-.8579-.8561-1.4289-.2028-.571-.3068-1.59-.3068-2.339 0-.7034.1099-1.5856.3245-2.1735.2198-.5871.5316-1.0949.9542-1.515.4167-.42.9255-.743 1.5213-.98a5.5923 5.5923 0 012.052-.3855c.7353 0 1.4114.092 2.0707.2024.6592.1088 1.2204.2236 1.6776.35v8.945-.0008zM11.5026 4.2418v-.6511c-.0005-.4553-.3704-.8241-.8266-.8241H8.749c-.4561 0-.826.3688-.8265.824v.669c0 .0742.0693.1264.1445.1096a6.0346 6.0346 0 011.6768-.2362 6.125 6.125 0 011.6202.2185.1116.1116 0 00.1386-.1097zm-5.2806.852l-.3296-.3282a.8266.8266 0 00-1.168 0l-.393.3922a.8199.8199 0 000 1.164l.3237.323c.0524.0515.1268.0397.1733-.0117.191-.259.3989-.507.6305-.7372.2374-.2362.48-.4437.7462-.6335.0575-.0354.0634-.1155.017-.1687zm3.5159 2.069v2.818c0 .081.0879.1392.1622.0987l2.5102-1.2964c.0574-.0287.0752-.0987.0464-.1552a3.1237 3.1237 0 00-2.603-1.574c-.0575 0-.115.0456-.115.1097l-.0008-.0009zm.0008 6.789c-2.0933.0005-3.7915-1.6912-3.7947-3.7804C5.9468 8.0821 7.6452 6.39 9.7387 6.391c2.0932-.0005 3.7911 1.6914 3.794 3.7804a3.7783 3.7783 0 01-1.1124 2.675 3.7936 3.7936 0 01-2.6824 1.1054h.0008zM9.738 4.8002c-1.9218 0-3.6975 1.0232-4.6584 2.6841a5.359 5.359 0 000 5.3683c.9609 1.661 2.7366 2.6841 4.6584 2.6841a5.3891 5.3891 0 003.8073-1.5725 5.3675 5.3675 0 001.578-3.7987 5.3574 5.3574 0 00-1.5771-3.797A5.379 5.379 0 009.7387 4.801l-.0008-.0008z",fill:"currentColor",fillRule:"evenodd"})))}function Te(e){return f.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},f.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function To(e){var t=e.translations,n=t===void 0?{}:t,r=n.selectText,o=r===void 0?"to select":r,a=n.selectKeyAriaLabel,i=a===void 0?"Enter key":a,u=n.navigateText,s=u===void 0?"to navigate":u,l=n.navigateUpKeyAriaLabel,c=l===void 0?"Arrow up":l,d=n.navigateDownKeyAriaLabel,m=d===void 0?"Arrow down":d,p=n.closeText,v=p===void 0?"to close":p,h=n.closeKeyAriaLabel,y=h===void 0?"Escape key":h,_=n.searchByText,g=_===void 0?"Search by":_;return f.createElement(f.Fragment,null,f.createElement("div",{className:"DocSearch-Logo"},f.createElement(Ro,{translations:{searchByText:g}})),f.createElement("ul",{className:"DocSearch-Commands"},f.createElement("li",null,f.createElement("span",{className:"DocSearch-Commands-Key"},f.createElement(Te,{ariaLabel:i},f.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),f.createElement("span",{className:"DocSearch-Label"},o)),f.createElement("li",null,f.createElement("span",{className:"DocSearch-Commands-Key"},f.createElement(Te,{ariaLabel:m},f.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),f.createElement("span",{className:"DocSearch-Commands-Key"},f.createElement(Te,{ariaLabel:c},f.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),f.createElement("span",{className:"DocSearch-Label"},s)),f.createElement("li",null,f.createElement("span",{className:"DocSearch-Commands-Key"},f.createElement(Te,{ariaLabel:y},f.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"}))),f.createElement("span",{className:"DocSearch-Label"},v))))}function Lo(e){var t=e.hit,n=e.children;return f.createElement("a",{href:t.url},n)}function qo(){return f.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},f.createElement("g",{fill:"none",fillRule:"evenodd"},f.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},f.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),f.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},f.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}function Mo(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},f.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),f.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function yt(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.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 Ho(){return f.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},f.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),f.createElement("path",{d:"M8 17l-6-6 6-6"})))}var Uo=function(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.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 Fo(e){switch(e.type){case"lvl1":return f.createElement(Uo,null);case"content":return f.createElement(Vo,null);default:return f.createElement(Bo,null)}}function Bo(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Vo(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function _n(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.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 zo(){return f.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},f.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 Ko(){return f.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},f.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 Wo(e){var t=e.translations,n=t===void 0?{}:t,r=n.titleText,o=r===void 0?"Unable to fetch results":r,a=n.helpText,i=a===void 0?"You might want to check your network connection.":a;return f.createElement("div",{className:"DocSearch-ErrorScreen"},f.createElement("div",{className:"DocSearch-Screen-Icon"},f.createElement(zo,null)),f.createElement("p",{className:"DocSearch-Title"},o),f.createElement("p",{className:"DocSearch-Help"},i))}var Jo=["translations"];function $o(e){return function(t){if(Array.isArray(t))return at(t)}(e)||function(t){if(typeof Symbol!="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||function(t,n){if(!!t){if(typeof t=="string")return at(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return at(t,n)}}(e)||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.`)}()}function at(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Yo(e){var t=e.translations,n=t===void 0?{}:t,r=Qo(e,Jo),o=n.noResultsText,a=o===void 0?"No results for":o,i=n.suggestedQueryText,u=i===void 0?"Try searching for":i,s=n.reportMissingResultsText,l=s===void 0?"Believe this query should return results?":s,c=n.reportMissingResultsLinkText,d=c===void 0?"Let us know.":c,m=r.state.context.searchSuggestions;return f.createElement("div",{className:"DocSearch-NoResults"},f.createElement("div",{className:"DocSearch-Screen-Icon"},f.createElement(Ko,null)),f.createElement("p",{className:"DocSearch-Title"},a,' "',f.createElement("strong",null,r.state.query),'"'),m&&m.length>0&&f.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},f.createElement("p",{className:"DocSearch-Help"},u,":"),f.createElement("ul",null,m.slice(0,3).reduce(function(p,v){return[].concat($o(p),[f.createElement("li",{key:v},f.createElement("button",{className:"DocSearch-Prefill",key:v,type:"button",onClick:function(){r.setQuery(v.toLowerCase()+" "),r.refresh(),r.inputRef.current.focus()}},v))])},[]))),r.getMissingResultsUrl&&f.createElement("p",{className:"DocSearch-Help"},"".concat(l," "),f.createElement("a",{href:r.getMissingResultsUrl({query:r.state.query}),target:"_blank",rel:"noopener noreferrer"},d)))}var Go=["hit","attribute","tagName"];function gn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function bn(e){for(var t=1;t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function On(e,t){return t.split(".").reduce(function(n,r){return n!=null&&n[r]?n[r]:null},e)}function ne(e){var t=e.hit,n=e.attribute,r=e.tagName;return F(r===void 0?"span":r,bn(bn({},Xo(e,Go)),{},{dangerouslySetInnerHTML:{__html:On(t,"_snippetResult.".concat(n,".value"))||On(t,n)}}))}function Sn(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,r){var o=n==null?null:typeof Symbol!="undefined"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var a,i,u=[],s=!0,l=!1;try{for(o=o.call(n);!(s=(a=o.next()).done)&&(u.push(a.value),!r||u.length!==r);s=!0);}catch(c){l=!0,i=c}finally{try{s||o.return==null||o.return()}finally{if(l)throw i}}return u}}(e,t)||function(n,r){if(!!n){if(typeof n=="string")return En(n,r);var o=Object.prototype.toString.call(n).slice(8,-1);if(o==="Object"&&n.constructor&&(o=n.constructor.name),o==="Map"||o==="Set")return Array.from(n);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return En(n,r)}}(e,t)||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 En(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n|<\/mark>)/g,na=RegExp(ar.source);function ir(e){var t,n,r,o,a,i=e;if(!i.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var u=((i.__docsearch_parent?(t=i.__docsearch_parent)===null||t===void 0||(n=t._highlightResult)===null||n===void 0||(r=n.hierarchy)===null||r===void 0?void 0:r.lvl0:(o=e._highlightResult)===null||o===void 0||(a=o.hierarchy)===null||a===void 0?void 0:a.lvl0)||{}).value;return u&&na.test(u)?u.replace(ar,""):u}function gt(){return gt=Object.assign||function(e){for(var t=1;t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ia(e){var t=e.translations,n=t===void 0?{}:t,r=aa(e,oa),o=n.recentSearchesTitle,a=o===void 0?"Recent":o,i=n.noRecentSearchesText,u=i===void 0?"No recent searches":i,s=n.saveRecentSearchButtonTitle,l=s===void 0?"Save this search":s,c=n.removeRecentSearchButtonTitle,d=c===void 0?"Remove this search from history":c,m=n.favoriteSearchesTitle,p=m===void 0?"Favorite":m,v=n.removeFavoriteSearchButtonTitle,h=v===void 0?"Remove this search from favorites":v;return r.state.status==="idle"&&r.hasCollections===!1?r.disableUserPersonalization?null:f.createElement("div",{className:"DocSearch-StartScreen"},f.createElement("p",{className:"DocSearch-Help"},u)):r.hasCollections===!1?null:f.createElement("div",{className:"DocSearch-Dropdown-Container"},f.createElement(_t,We({},r,{title:a,collection:r.state.collections[0],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(Mo,null))},renderAction:function(y){var _=y.item,g=y.runFavoriteTransition,b=y.runDeleteTransition;return f.createElement(f.Fragment,null,f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:l,type:"submit",onClick:function(O){O.preventDefault(),O.stopPropagation(),g(function(){r.favoriteSearches.add(_),r.recentSearches.remove(_),r.refresh()})}},f.createElement(_n,null))),f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:d,type:"submit",onClick:function(O){O.preventDefault(),O.stopPropagation(),b(function(){r.recentSearches.remove(_),r.refresh()})}},f.createElement(yt,null))))}})),f.createElement(_t,We({},r,{title:p,collection:r.state.collections[1],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(_n,null))},renderAction:function(y){var _=y.item,g=y.runDeleteTransition;return f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(b){b.preventDefault(),b.stopPropagation(),g(function(){r.favoriteSearches.remove(_),r.refresh()})}},f.createElement(yt,null)))}})))}var ca=["translations"];function Je(){return Je=Object.assign||function(e){for(var t=1;t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var la=f.memo(function(e){var t=e.translations,n=t===void 0?{}:t,r=ua(e,ca);if(r.state.status==="error")return f.createElement(Wo,{translations:n==null?void 0:n.errorScreen});var o=r.state.collections.some(function(a){return a.items.length>0});return r.state.query?o===!1?f.createElement(Yo,Je({},r,{translations:n==null?void 0:n.noResultsScreen})):f.createElement(ra,r):f.createElement(ia,Je({},r,{hasCollections:o,translations:n==null?void 0:n.startScreen}))},function(e,t){return t.state.status==="loading"||t.state.status==="stalled"}),sa=["translations"];function $e(){return $e=Object.assign||function(e){for(var t=1;t=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function pa(e){var t=e.translations,n=t===void 0?{}:t,r=fa(e,sa),o=n.resetButtonTitle,a=o===void 0?"Clear the query":o,i=n.resetButtonAriaLabel,u=i===void 0?"Clear the query":i,s=n.cancelButtonText,l=s===void 0?"Cancel":s,c=n.cancelButtonAriaLabel,d=c===void 0?"Cancel":c,m=r.getFormProps({inputElement:r.inputRef.current}).onReset;return f.useEffect(function(){r.autoFocus&&r.inputRef.current&&r.inputRef.current.focus()},[r.autoFocus,r.inputRef]),f.useEffect(function(){r.isFromSelection&&r.inputRef.current&&r.inputRef.current.select()},[r.isFromSelection,r.inputRef]),f.createElement(f.Fragment,null,f.createElement("form",{className:"DocSearch-Form",onSubmit:function(p){p.preventDefault()},onReset:m},f.createElement("label",$e({className:"DocSearch-MagnifierLabel"},r.getLabelProps()),f.createElement(nr,null)),f.createElement("div",{className:"DocSearch-LoadingIndicator"},f.createElement(qo,null)),f.createElement("input",$e({className:"DocSearch-Input",ref:r.inputRef},r.getInputProps({inputElement:r.inputRef.current,autoFocus:r.autoFocus,maxLength:64}))),f.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":u,hidden:!r.state.query},f.createElement(yt,null))),f.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":d,onClick:r.onClose},l))}var ma=["_highlightResult","_snippetResult"];function da(e,t){if(e==null)return{};var n,r,o=function(i,u){if(i==null)return{};var s,l,c={},d=Object.keys(i);for(l=0;l=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ha(e){return function(){var t="__TEST_KEY__";try{return localStorage.setItem(t,""),localStorage.removeItem(t),!0}catch{return!1}}()===!1?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function Pn(e){var t=e.key,n=e.limit,r=n===void 0?5:n,o=ha(t),a=o.getItem().slice(0,r);return{add:function(i){var u=i,s=(u._highlightResult,u._snippetResult,da(u,ma)),l=a.findIndex(function(c){return c.objectID===s.objectID});l>-1&&a.splice(l,1),a.unshift(s),a=a.slice(0,r),o.setItem(a)},remove:function(i){a=a.filter(function(u){return u.objectID!==i.objectID}),o.setItem(a)},getAll:function(){return a}}}var va=["facetName","facetQuery"];function ya(e){var t,n="algoliasearch-client-js-".concat(e.key),r=function(){return t===void 0&&(t=e.localStorage||window.localStorage),t},o=function(){return JSON.parse(r().getItem(n)||"{}")};return{get:function(a,i){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){var s=JSON.stringify(a),l=o()[s];return Promise.all([l||i(),l!==void 0])}).then(function(s){var l=Fe(s,2),c=l[0],d=l[1];return Promise.all([c,d||u.miss(c)])}).then(function(s){return Fe(s,1)[0]})},set:function(a,i){return Promise.resolve().then(function(){var u=o();return u[JSON.stringify(a)]=i,r().setItem(n,JSON.stringify(u)),i})},delete:function(a){return Promise.resolve().then(function(){var i=o();delete i[JSON.stringify(a)],r().setItem(n,JSON.stringify(i))})},clear:function(){return Promise.resolve().then(function(){r().removeItem(n)})}}}function ye(e){var t=Be(e.caches),n=t.shift();return n===void 0?{get:function(r,o){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return o().then(function(i){return Promise.all([i,a.miss(i)])}).then(function(i){return Fe(i,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 a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(r,o,a).catch(function(){return ye({caches:t}).get(r,o,a)})},set:function(r,o){return n.set(r,o).catch(function(){return ye({caches:t}).set(r,o)})},delete:function(r){return n.delete(r).catch(function(){return ye({caches:t}).delete(r)})},clear:function(){return n.clear().catch(function(){return ye({caches:t}).clear()})}}}function it(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},t={};return{get:function(n,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(n);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var i=r(),u=o&&o.miss||function(){return Promise.resolve()};return i.then(function(s){return u(s)}).then(function(){return i})},set:function(n,r){return t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(n){return delete t[JSON.stringify(n)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function _a(e){for(var t=e.length-1;t>0;t--){var n=Math.floor(Math.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}return e}function cr(e,t){return t&&Object.keys(t).forEach(function(n){e[n]=t[n](e)}),e}function Qe(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r0?r:void 0,timeout:n.timeout||t,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}var ie={Read:1,Write:2,Any:3},ur=1,ga=2,lr=3;function sr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ur;return P(P({},e),{},{status:t,lastUpdate:Date.now()})}function fr(e){return typeof e=="string"?{protocol:"https",url:e,accept:ie.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||ie.Any}}var kn="GET",Ye="POST";function ba(e,t){return Promise.all(t.map(function(n){return e.get(n,function(){return Promise.resolve(sr(n))})})).then(function(n){var r=n.filter(function(i){return function(u){return u.status===ur||Date.now()-u.lastUpdate>12e4}(i)}),o=n.filter(function(i){return function(u){return u.status===lr&&Date.now()-u.lastUpdate<=12e4}(i)}),a=[].concat(Be(r),Be(o));return{getTimeout:function(i,u){return(o.length===0&&i===0?1:o.length+3+i)*u},statelessHosts:a.length>0?a.map(function(i){return fr(i)}):t}})}function Cn(e,t,n,r){var o=[],a=function(m,p){if(!(m.method===kn||m.data===void 0&&p.data===void 0)){var v=Array.isArray(m.data)?m.data:P(P({},m.data),p.data);return JSON.stringify(v)}}(n,r),i=function(m,p){var v=P(P({},m.headers),p.headers),h={};return Object.keys(v).forEach(function(y){var _=v[y];h[y.toLowerCase()]=_}),h}(e,r),u=n.method,s=n.method!==kn?{}:P(P({},n.data),r.data),l=P(P(P({"x-algolia-agent":e.userAgent.value},e.queryParameters),s),r.queryParameters),c=0,d=function m(p,v){var h=p.pop();if(h===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Dn(o)};var y={data:a,headers:i,method:u,url:Sa(h,n.path,l),connectTimeout:v(c,e.timeouts.connect),responseTimeout:v(c,r.timeout)},_=function(b){var O={request:y,response:b,host:h,triesLeft:p.length};return o.push(O),O},g={onSucess:function(b){return function(O){try{return JSON.parse(O.content)}catch(S){throw function(I,D){return{name:"DeserializationError",message:I,response:D}}(S.message,O)}}(b)},onRetry:function(b){var O=_(b);return b.isTimedOut&&c++,Promise.all([e.logger.info("Retryable failure",mr(O)),e.hostsCache.set(h,sr(h,b.isTimedOut?lr:ga))]).then(function(){return m(p,v)})},onFail:function(b){throw _(b),function(O,S){var I=O.content,D=O.status,A=I;try{A=JSON.parse(I).message}catch{}return function(k,N,R){return{name:"ApiError",message:k,status:N,transporterStackTrace:R}}(A,D,S)}(b,Dn(o))}};return e.requester.send(y).then(function(b){return function(O,S){return function(I){var D=I.status;return I.isTimedOut||function(A){var k=A.isTimedOut,N=A.status;return!k&&~~N==0}(I)||~~(D/100)!=2&&~~(D/100)!=4}(O)?S.onRetry(O):~~(O.status/100)==2?S.onSucess(O):S.onFail(O)}(b,g)})};return ba(e.hostsCache,t).then(function(m){return d(Be(m.statelessHosts).reverse(),m.getTimeout)})}function Oa(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(n){var r="; ".concat(n.segment).concat(n.version!==void 0?" (".concat(n.version,")"):"");return t.value.indexOf(r)===-1&&(t.value="".concat(t.value).concat(r)),t}};return t}function Sa(e,t,n){var r=pr(n),o="".concat(e.protocol,"://").concat(e.url,"/").concat(t.charAt(0)==="/"?t.substr(1):t);return r.length&&(o+="?".concat(r)),o}function pr(e){return Object.keys(e).map(function(t){return Qe("%s=%s",t,(n=e[t],Object.prototype.toString.call(n)==="[object Object]"||Object.prototype.toString.call(n)==="[object Array]"?JSON.stringify(e[t]):e[t]));var n}).join("&")}function Dn(e){return e.map(function(t){return mr(t)})}function mr(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return P(P({},e),{},{request:P(P({},e.request),{},{headers:P(P({},e.request.headers),t)})})}var Ea=function(e){var t=e.appId,n=function(a,i,u){var s={"x-algolia-api-key":u,"x-algolia-application-id":i};return{headers:function(){return a===Ue.WithinHeaders?s:{}},queryParameters:function(){return a===Ue.WithinQueryParameters?s:{}}}}(e.authMode!==void 0?e.authMode:Ue.WithinHeaders,t,e.apiKey),r=function(a){var i=a.hostsCache,u=a.logger,s=a.requester,l=a.requestsCache,c=a.responsesCache,d=a.timeouts,m=a.userAgent,p=a.hosts,v=a.queryParameters,h={hostsCache:i,logger:u,requester:s,requestsCache:l,responsesCache:c,timeouts:d,userAgent:m,headers:a.headers,queryParameters:v,hosts:p.map(function(y){return fr(y)}),read:function(y,_){var g=In(_,h.timeouts.read),b=function(){return Cn(h,h.hosts.filter(function(S){return(S.accept&ie.Read)!=0}),y,g)};if((g.cacheable!==void 0?g.cacheable:y.cacheable)!==!0)return b();var O={request:y,mappedRequestOptions:g,transporter:{queryParameters:h.queryParameters,headers:h.headers}};return h.responsesCache.get(O,function(){return h.requestsCache.get(O,function(){return h.requestsCache.set(O,b()).then(function(S){return Promise.all([h.requestsCache.delete(O),S])},function(S){return Promise.all([h.requestsCache.delete(O),Promise.reject(S)])}).then(function(S){var I=Fe(S,2);return I[0],I[1]})})},{miss:function(S){return h.responsesCache.set(O,S)}})},write:function(y,_){return Cn(h,h.hosts.filter(function(g){return(g.accept&ie.Write)!=0}),y,In(_,h.timeouts.write))}};return h}(P(P({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:ie.Read},{url:"".concat(t,".algolia.net"),accept:ie.Write}].concat(_a([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:P(P(P({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:P(P({},n.queryParameters()),e.queryParameters)})),o={transporter:r,appId:t,addAlgoliaAgent:function(a,i){r.userAgent.add({segment:a,version:i})},clearCache:function(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(function(){})}};return cr(o,e.methods)},dr=function(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r={transporter:e.transporter,appId:e.appId,indexName:t};return cr(r,n.methods)}},xn=function(e){return function(t,n){var r=t.map(function(o){return P(P({},o),{},{params:pr(o.params||{})})});return e.transporter.read({method:Ye,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)}},An=function(e){return function(t,n){return Promise.all(t.map(function(r){var o=r.params,a=o.facetName,i=o.facetQuery,u=xr(o,va);return dr(e)(r.indexName,{methods:{searchForFacetValues:hr}}).searchForFacetValues(a,i,P(P({},n),u))}))}},wa=function(e){return function(t,n,r){return e.transporter.read({method:Ye,path:Qe("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:n},cacheable:!0},r)}},ja=function(e){return function(t,n){return e.transporter.read({method:Ye,path:Qe("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},n)}},hr=function(e){return function(t,n,r){return e.transporter.read({method:Ye,path:Qe("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:n},cacheable:!0},r)}},Pa=1,Ia=2,ka=3;function vr(e,t,n){var r,o={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(a){return new Promise(function(i){var u=new XMLHttpRequest;u.open(a.method,a.url,!0),Object.keys(a.headers).forEach(function(d){return u.setRequestHeader(d,a.headers[d])});var s,l=function(d,m){return setTimeout(function(){u.abort(),i({status:0,content:m,isTimedOut:!0})},1e3*d)},c=l(a.connectTimeout,"Connection timeout");u.onreadystatechange=function(){u.readyState>u.OPENED&&s===void 0&&(clearTimeout(c),s=l(a.responseTimeout,"Socket timeout"))},u.onerror=function(){u.status===0&&(clearTimeout(c),clearTimeout(s),i({content:u.responseText||"Network request failed",status:u.status,isTimedOut:!1}))},u.onload=function(){clearTimeout(c),clearTimeout(s),i({content:u.responseText,status:u.status,isTimedOut:!1})},u.send(a.data)})}},logger:(r=ka,{debug:function(a,i){return Pa>=r&&console.debug(a,i),Promise.resolve()},info:function(a,i){return Ia>=r&&console.info(a,i),Promise.resolve()},error:function(a,i){return console.error(a,i),Promise.resolve()}}),responsesCache:it(),requestsCache:it({serializable:!1}),hostsCache:ye({caches:[ya({key:"".concat("4.8.5","-").concat(e)}),it()]}),userAgent:Oa("4.8.5").add({segment:"Browser",version:"lite"}),authMode:Ue.WithinQueryParameters};return Ea(P(P(P({},o),n),{},{methods:{search:xn,searchForFacetValues:An,multipleQueries:xn,multipleSearchForFacetValues:An,initIndex:function(a){return function(i){return dr(a)(i,{methods:{search:ja,searchForFacetValues:hr,findAnswers:wa}})}}}}))}vr.version="4.8.5";var Ca=["footer","searchBox"];function be(){return be=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(c[s]=i[s]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Na(e){var t=e.appId,n=e.apiKey,r=e.indexName,o=e.placeholder,a=o===void 0?"Search docs":o,i=e.searchParameters,u=e.onClose,s=u===void 0?ta:u,l=e.transformItems,c=l===void 0?jn:l,d=e.hitComponent,m=d===void 0?Lo:d,p=e.resultsFooterComponent,v=p===void 0?function(){return null}:p,h=e.navigator,y=e.initialScrollY,_=y===void 0?0:y,g=e.transformSearchClient,b=g===void 0?jn:g,O=e.disableUserPersonalization,S=O!==void 0&&O,I=e.initialQuery,D=I===void 0?"":I,A=e.translations,k=A===void 0?{}:A,N=e.getMissingResultsUrl,R=k.footer,Ge=k.searchBox,Ze=Aa(k,Ca),Pe=xa(f.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),W=Pe[0],yr=Pe[1],wt=f.useRef(null),Xe=f.useRef(null),jt=f.useRef(null),Ie=f.useRef(null),ue=f.useRef(null),J=f.useRef(10),Pt=f.useRef(typeof window!="undefined"?window.getSelection().toString().slice(0,64):"").current,Y=f.useRef(D||Pt).current,It=function(j,C,q){return f.useMemo(function(){var M=vr(j,C);return M.addAlgoliaAgent("docsearch","3.0.0"),/docsearch.js \(.*\)/.test(M.transporter.userAgent.value)===!1&&M.addAlgoliaAgent("docsearch-react","3.0.0"),q(M)},[j,C,q])}(t,n,b),X=f.useRef(Pn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(r),limit:10})).current,le=f.useRef(Pn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(r),limit:X.getAll().length===0?7:4})).current,se=f.useCallback(function(j){if(!S){var C=j.type==="content"?j.__docsearch_parent:j;C&&X.getAll().findIndex(function(q){return q.objectID===C.objectID})===-1&&le.add(C)}},[X,le,S]),fe=f.useMemo(function(){return No({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:Y,context:{searchSuggestions:[]}},navigator:h,onStateChange:function(j){yr(j.state)},getSources:function(j){var C=j.query,q=j.state,M=j.setContext,$=j.setStatus;return C?It.search([{query:C,indexName:r,params:ct({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(J.current),"hierarchy.lvl2:".concat(J.current),"hierarchy.lvl3:".concat(J.current),"hierarchy.lvl4:".concat(J.current),"hierarchy.lvl5:".concat(J.current),"hierarchy.lvl6:".concat(J.current),"content:".concat(J.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20},i)}]).catch(function(x){throw x.name==="RetryError"&&$("error"),x}).then(function(x){var H=x.results[0],U=H.hits,br=H.nbHits,et=wn(U,function(tt){return ir(tt)});return q.context.searchSuggestions.length0&&(kt(),ue.current&&ue.current.focus())},[Y,kt]),f.useEffect(function(){function j(){if(Xe.current){var C=.01*window.innerHeight;Xe.current.style.setProperty("--docsearch-vh","".concat(C,"px"))}}return j(),window.addEventListener("resize",j),function(){window.removeEventListener("resize",j)}},[]),f.createElement("div",be({ref:wt},gr({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container",W.status==="stalled"&&"DocSearch-Container--Stalled",W.status==="error"&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(j){j.target===j.currentTarget&&s()}}),f.createElement("div",{className:"DocSearch-Modal",ref:Xe},f.createElement("header",{className:"DocSearch-SearchBar",ref:jt},f.createElement(pa,be({},fe,{state:W,autoFocus:Y.length===0,inputRef:ue,isFromSelection:Boolean(Y)&&Y===Pt,translations:Ge,onClose:s}))),f.createElement("div",{className:"DocSearch-Dropdown",ref:Ie},f.createElement(la,be({},fe,{indexName:r,state:W,hitComponent:m,resultsFooterComponent:v,disableUserPersonalization:S,recentSearches:le,favoriteSearches:X,inputRef:ue,translations:Ze,getMissingResultsUrl:N,onItemClick:function(j){se(j),s()}}))),f.createElement("footer",{className:"DocSearch-Footer"},f.createElement(To,{translations:R}))))}function bt(){return bt=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:window;return typeof t=="string"?n.document.querySelector(t):t}(e.container,e.environment))}const La={class:"algolia-search-box",id:"docsearch"},Ma=Sr({props:{options:null,multilang:{type:Boolean}},setup(e){var d;const t=e,n=Cr(),r=Er(),o=wr();Ct(()=>t.options,m=>{u(m)}),jr(()=>{c(t.options)});function a(m){return m.button===1||m.altKey||m.ctrlKey||m.metaKey||m.shiftKey}function i(m){const{pathname:p,hash:v}=new URL(m);return p+v}function u(m){n&&n.vnode.el&&(n.vnode.el.innerHTML='',c(m))}const{lang:s}=Pr(),l=t.multilang?["lang:"+s.value]:[];(d=t.options.searchParameters)!=null&&d.facetFilters&&l.push(...t.options.searchParameters.facetFilters),Ct(s,(m,p)=>{const v=l.findIndex(h=>h==="lang:"+p);v>-1&&l.splice(v,1,"lang:"+m)});function c(m){Ta(Object.assign({},m,{container:"#docsearch",searchParameters:Object.assign({},m.searchParameters,{facetFilters:l}),navigator:{navigate:({itemUrl:p})=>{const{pathname:v}=new URL(window.location.origin+p);r.path===v?window.location.assign(window.location.origin+p):o.go(p)}},transformItems:p=>p.map(v=>Object.assign({},v,{url:i(v.url)})),hitComponent:({hit:p,children:v})=>{const h=p.url.startsWith("http")?i(p.url):p.url;return{type:"a",ref:void 0,constructor:void 0,key:void 0,props:{href:p.url,onClick:y=>{a(y)||r.path!==h&&(r.path!==h&&y.preventDefault(),o.go(h))},children:v},__v:null}}}))}return(m,p)=>(Ir(),kr("div",La))}});export{Ma as default}; diff --git a/assets/chunks/ui-custom.1a068566.js b/assets/chunks/ui-custom.1a068566.js deleted file mode 100644 index 3e755bcc..00000000 --- a/assets/chunks/ui-custom.1a068566.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,g as t,h as r,i as l,o as _,c as d}from"../app.54944ef9.js";const p=t({props:{code:null,placement:null},setup(n){const{code:c,placement:s}=n,a=r();return l(()=>{const e=document.createElement("script");e.id="_carbonads_js",e.src=`//cdn.carbonads.com/carbon.js?serve=${c}&placement=${s}`,a.value.appendChild(e)}),(e,u)=>(_(),d("div",{class:"carbon-ads",ref_key:"el",ref:a},null,512))}});var i=o(p,[["__scopeId","data-v-5941b830"]]);export{i as default}; diff --git a/assets/chunks/ui-custom.30ce3a39.js b/assets/chunks/ui-custom.30ce3a39.js deleted file mode 100644 index 7c86b4d8..00000000 --- a/assets/chunks/ui-custom.30ce3a39.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,g as d,i as l,o as p,c as _,p as i,j as r,b as u}from"../app.54944ef9.js";const m=s=>(i("data-v-4ce5ad17"),s=s(),r(),s),b={class:"buy-sell-ads"},f=m(()=>u("div",{class:"bsa-cpc"},null,-1)),y=[f],h=d({props:{code:null,placement:null},setup(s){const{code:a,placement:o}=s,t="bsa-cpc-script";l(()=>{if(document.getElementById(t))c();else{const e=document.createElement("script");e.id=t,e.src="//m.servedby-buysellads.com/monetization.js",document.head.appendChild(e),e.onload=()=>{c()}}});function c(){if(typeof _bsa!="undefined"&&_bsa){const e=document.querySelector(".bsa-cpc");e.innerHTML="",_bsa.init("default",a,`placement:${o}`,{target:".bsa-cpc",align:"horizontal",disable_css:"true"})}}return(e,v)=>(p(),_("div",b,y))}});var I=n(h,[["__scopeId","data-v-4ce5ad17"]]);export{I as default}; diff --git a/assets/config_algolia-search.md.da33e9e2.lean.js b/assets/config_algolia-search.md.da33e9e2.lean.js deleted file mode 100644 index fa70cb74..00000000 --- a/assets/config_algolia-search.md.da33e9e2.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as n,o as s,a as e}from"./app.54944ef9.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"config/algolia-search.md","lastUpdated":1652768268000}',t={},p=e("",9),o=[p];function r(l,c,i,u,k,d){return s(),n("div",null,o)}var g=a(t,[["render",r]]);export{y as __pageData,g as default}; diff --git a/assets/config_basics.md.8b6d1758.lean.js b/assets/config_basics.md.8b6d1758.lean.js deleted file mode 100644 index da10e0ce..00000000 --- a/assets/config_basics.md.8b6d1758.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as s,a as t}from"./app.54944ef9.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"config/basics.md","lastUpdated":1652768268000}',n={},o=t("",19),i=[o];function p(l,r,c,d,u,h){return s(),a("div",null,i)}var b=e(n,[["render",p]]);export{f as __pageData,b as default}; diff --git a/assets/config_carbon-ads.md.2699d04a.lean.js b/assets/config_carbon-ads.md.2699d04a.lean.js deleted file mode 100644 index b721ebbe..00000000 --- a/assets/config_carbon-ads.md.2699d04a.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as n,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"config/carbon-ads.md","lastUpdated":1652768268000}',t={},o=e("",3),p=[o];function r(c,l,i,d,u,_){return s(),n("div",null,p)}var f=a(t,[["render",r]]);export{h as __pageData,f as default}; diff --git a/assets/config_homepage.md.2f01ca2d.lean.js b/assets/config_homepage.md.2f01ca2d.lean.js deleted file mode 100644 index 54e34d87..00000000 --- a/assets/config_homepage.md.2f01ca2d.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,c as a,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"config/homepage.md","lastUpdated":1652768268000}',t={},o=e("",3),p=[o];function c(u,i,l,r,k,d){return s(),a("div",null,p)}var g=n(t,[["render",c]]);export{h as __pageData,g as default}; diff --git a/assets/config_algolia-search.md.da33e9e2.js b/assets/developer_algolia-search.md.9d2c511a.js similarity index 87% rename from assets/config_algolia-search.md.da33e9e2.js rename to assets/developer_algolia-search.md.9d2c511a.js index 7836db57..a71bfa8f 100644 --- a/assets/config_algolia-search.md.da33e9e2.js +++ b/assets/developer_algolia-search.md.9d2c511a.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,o as s,a as e}from"./app.54944ef9.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"config/algolia-search.md","lastUpdated":1652768268000}',t={},p=e(`

Theme Config: Algolia Search

The themeConfig.algolia option allows you to use Algolia DocSearch. To enable it, you need to provide at least appId, apiKey and indexName:

module.exports = {
+import{_ as a,c as n,o as s,a as e}from"./app.61e847e1.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"developer/algolia-search.md"}',t={},p=e(`

Theme Config: Algolia Search

The themeConfig.algolia option allows you to use Algolia DocSearch. To enable it, you need to provide at least appId, apiKey and indexName:

module.exports = {
   themeConfig: {
     algolia: {
       appId: 'your_app_id',
diff --git a/assets/developer_algolia-search.md.9d2c511a.lean.js b/assets/developer_algolia-search.md.9d2c511a.lean.js
new file mode 100644
index 00000000..3b93c6e1
--- /dev/null
+++ b/assets/developer_algolia-search.md.9d2c511a.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as n,o as s,a as e}from"./app.61e847e1.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"developer/algolia-search.md"}',t={},p=e("",9),o=[p];function r(l,c,i,u,k,d){return s(),n("div",null,o)}var g=a(t,[["render",r]]);export{y as __pageData,g as default};
diff --git a/assets/config_basics.md.8b6d1758.js b/assets/developer_basics.md.6e738cda.js
similarity index 63%
rename from assets/config_basics.md.8b6d1758.js
rename to assets/developer_basics.md.6e738cda.js
index 47696434..262c261e 100644
--- a/assets/config_basics.md.8b6d1758.js
+++ b/assets/developer_basics.md.6e738cda.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a,o as s,a as t}from"./app.54944ef9.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"config/basics.md","lastUpdated":1652768268000}',n={},o=t(`

App Config: Basics

TIP

The config reference is incomplete since the config format may still receive further changes. For a complete reference of the current available options, refer to config.ts.

base

  • Type: string
  • Default: /

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, for example, GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/, then you should set base to '/bar/'. It should always start and end with a slash.

The base is automatically prepended to all the URLs that start with / in other options, so you only need to specify it once.

module.exports = {
+import{_ as e,c as a,o as s,a as t}from"./app.61e847e1.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"developer/basics.md"}',n={},o=t(`

App Config: Basics

TIP

The config reference is incomplete since the config format may still receive further changes. For a complete reference of the current available options, refer to config.ts.

base

  • Type: string
  • Default: /

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, for example, GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/, then you should set base to '/bar/'. It should always start and end with a slash.

The base is automatically prepended to all the URLs that start with / in other options, so you only need to specify it once.

module.exports = {
   base: '/base/'
 }
 

lang

  • Type: string
  • Default: en-US

The lang attribute for the site. This will render as a <html lang="en-US"> tag in the page HTML.

module.exports = {
diff --git a/assets/developer_basics.md.6e738cda.lean.js b/assets/developer_basics.md.6e738cda.lean.js
new file mode 100644
index 00000000..9bf5329d
--- /dev/null
+++ b/assets/developer_basics.md.6e738cda.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as a,o as s,a as t}from"./app.61e847e1.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"developer/basics.md"}',n={},o=t("",19),i=[o];function p(l,r,c,d,u,h){return s(),a("div",null,i)}var b=e(n,[["render",p]]);export{f as __pageData,b as default};
diff --git a/assets/config_carbon-ads.md.2699d04a.js b/assets/developer_carbon-ads.md.6f2a5c7f.js
similarity index 59%
rename from assets/config_carbon-ads.md.2699d04a.js
rename to assets/developer_carbon-ads.md.6f2a5c7f.js
index 9524249a..7cc7c90e 100644
--- a/assets/config_carbon-ads.md.2699d04a.js
+++ b/assets/developer_carbon-ads.md.6f2a5c7f.js
@@ -1,4 +1,4 @@
-import{_ as a,c as n,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"config/carbon-ads.md","lastUpdated":1652768268000}',t={},o=e(`

Theme Config: Carbon Ads

VitePress has built in native support for Carbon Ads. By defining the Carbon Ads credentials in config, VitePress will display ads on the page.

module.exports = {
+import{_ as n,c as a,o as s,a as e}from"./app.61e847e1.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"developer/carbon-ads.md"}',t={},o=e(`

Theme Config: Carbon Ads

VitePress has built in native support for Carbon Ads. By defining the Carbon Ads credentials in config, VitePress will display ads on the page.

module.exports = {
   themeConfig: {
     carbonAds: {
       carbon: 'your-carbon-key',
@@ -7,4 +7,4 @@ import{_ as a,c as n,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"Th
     }
   }
 }
-
`,3),p=[o];function r(c,l,i,d,u,_){return s(),n("div",null,p)}var f=a(t,[["render",r]]);export{h as __pageData,f as default}; +
`,3),p=[o];function r(c,l,i,d,u,_){return s(),a("div",null,p)}var f=n(t,[["render",r]]);export{h as __pageData,f as default}; diff --git a/assets/developer_carbon-ads.md.6f2a5c7f.lean.js b/assets/developer_carbon-ads.md.6f2a5c7f.lean.js new file mode 100644 index 00000000..4c8b73f1 --- /dev/null +++ b/assets/developer_carbon-ads.md.6f2a5c7f.lean.js @@ -0,0 +1 @@ +import{_ as n,c as a,o as s,a as e}from"./app.61e847e1.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"developer/carbon-ads.md"}',t={},o=e("",3),p=[o];function r(c,l,i,d,u,_){return s(),a("div",null,p)}var f=n(t,[["render",r]]);export{h as __pageData,f as default}; diff --git a/assets/config_homepage.md.2f01ca2d.js b/assets/developer_homepage.md.ce767e19.js similarity index 74% rename from assets/config_homepage.md.2f01ca2d.js rename to assets/developer_homepage.md.ce767e19.js index f4f3d5aa..04a8f410 100644 --- a/assets/config_homepage.md.2f01ca2d.js +++ b/assets/developer_homepage.md.ce767e19.js @@ -1,4 +1,4 @@ -import{_ as n,c as a,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"config/homepage.md","lastUpdated":1652768268000}',t={},o=e(`

Theme Config: Homepage

VitePress provides a homepage layout. To use it, specify home: true plus some other metadata in your root index.md's YAML frontmatter. This is an example of how it works:

---
+import{_ as n,c as a,o as s,a as e}from"./app.61e847e1.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"developer/homepage.md"}',t={},o=e(`

Theme Config: Homepage

VitePress provides a homepage layout. To use it, specify home: true plus some other metadata in your root index.md's YAML frontmatter. This is an example of how it works:

---
 home: true
 heroImage: /logo.png
 heroAlt: Logo image
@@ -15,4 +15,4 @@ import{_ as n,c as a,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"Th
     details: VitePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded.
 footer: MIT Licensed | Copyright \xA9 2019-present Evan You
 ---
-
`,3),p=[o];function c(u,i,l,r,k,d){return s(),a("div",null,p)}var g=n(t,[["render",c]]);export{h as __pageData,g as default}; +
`,3),p=[o];function c(u,l,i,r,k,d){return s(),a("div",null,p)}var _=n(t,[["render",c]]);export{h as __pageData,_ as default}; diff --git a/assets/developer_homepage.md.ce767e19.lean.js b/assets/developer_homepage.md.ce767e19.lean.js new file mode 100644 index 00000000..2a16a6c9 --- /dev/null +++ b/assets/developer_homepage.md.ce767e19.lean.js @@ -0,0 +1 @@ +import{_ as n,c as a,o as s,a as e}from"./app.61e847e1.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"developer/homepage.md"}',t={},o=e("",3),p=[o];function c(u,l,i,r,k,d){return s(),a("div",null,p)}var _=n(t,[["render",c]]);export{h as __pageData,_ as default}; diff --git a/assets/en_US_developer_algolia-search.md.3a14c84d.js b/assets/en_US_developer_algolia-search.md.3a14c84d.js new file mode 100644 index 00000000..e71236ce --- /dev/null +++ b/assets/en_US_developer_algolia-search.md.3a14c84d.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as t,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/algolia-search.md"}',c={},s=e("h1",{id:"theme-config-algolia-search",tabindex:"-1"},[r("Theme Config: Algolia Search "),e("a",{class:"header-anchor",href:"#theme-config-algolia-search","aria-hidden":"true"},"#")],-1),i=[s];function n(l,h,d,_,f,g){return t(),o("div",null,i)}var u=a(c,[["render",n]]);export{m as __pageData,u as default}; diff --git a/assets/en_US_developer_algolia-search.md.3a14c84d.lean.js b/assets/en_US_developer_algolia-search.md.3a14c84d.lean.js new file mode 100644 index 00000000..e71236ce --- /dev/null +++ b/assets/en_US_developer_algolia-search.md.3a14c84d.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as t,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/algolia-search.md"}',c={},s=e("h1",{id:"theme-config-algolia-search",tabindex:"-1"},[r("Theme Config: Algolia Search "),e("a",{class:"header-anchor",href:"#theme-config-algolia-search","aria-hidden":"true"},"#")],-1),i=[s];function n(l,h,d,_,f,g){return t(),o("div",null,i)}var u=a(c,[["render",n]]);export{m as __pageData,u as default}; diff --git a/assets/en_US_developer_basics.md.b46eb68d.js b/assets/en_US_developer_basics.md.b46eb68d.js new file mode 100644 index 00000000..f7377f3e --- /dev/null +++ b/assets/en_US_developer_basics.md.b46eb68d.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as t,b as e,d as c}from"./app.61e847e1.js";const m='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/basics.md"}',o={},r=e("h1",{id:"app-config-basics",tabindex:"-1"},[c("App Config: Basics "),e("a",{class:"header-anchor",href:"#app-config-basics","aria-hidden":"true"},"#")],-1),i=[r];function n(d,p,_,f,h,l){return t(),s("div",null,i)}var u=a(o,[["render",n]]);export{m as __pageData,u as default}; diff --git a/assets/en_US_developer_basics.md.b46eb68d.lean.js b/assets/en_US_developer_basics.md.b46eb68d.lean.js new file mode 100644 index 00000000..f7377f3e --- /dev/null +++ b/assets/en_US_developer_basics.md.b46eb68d.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as t,b as e,d as c}from"./app.61e847e1.js";const m='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/basics.md"}',o={},r=e("h1",{id:"app-config-basics",tabindex:"-1"},[c("App Config: Basics "),e("a",{class:"header-anchor",href:"#app-config-basics","aria-hidden":"true"},"#")],-1),i=[r];function n(d,p,_,f,h,l){return t(),s("div",null,i)}var u=a(o,[["render",n]]);export{m as __pageData,u as default}; diff --git a/assets/en_US_developer_carbon-ads.md.c38e789e.js b/assets/en_US_developer_carbon-ads.md.c38e789e.js new file mode 100644 index 00000000..86db94e7 --- /dev/null +++ b/assets/en_US_developer_carbon-ads.md.c38e789e.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as t,b as e,d as r}from"./app.61e847e1.js";const b='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/carbon-ads.md"}',n={},s=e("h1",{id:"theme-config-carbon-ads",tabindex:"-1"},[r("Theme Config: Carbon Ads "),e("a",{class:"header-anchor",href:"#theme-config-carbon-ads","aria-hidden":"true"},"#")],-1),c=[s];function d(i,_,h,f,p,l){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{b as __pageData,u as default}; diff --git a/assets/en_US_developer_carbon-ads.md.c38e789e.lean.js b/assets/en_US_developer_carbon-ads.md.c38e789e.lean.js new file mode 100644 index 00000000..86db94e7 --- /dev/null +++ b/assets/en_US_developer_carbon-ads.md.c38e789e.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as t,b as e,d as r}from"./app.61e847e1.js";const b='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/carbon-ads.md"}',n={},s=e("h1",{id:"theme-config-carbon-ads",tabindex:"-1"},[r("Theme Config: Carbon Ads "),e("a",{class:"header-anchor",href:"#theme-config-carbon-ads","aria-hidden":"true"},"#")],-1),c=[s];function d(i,_,h,f,p,l){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{b as __pageData,u as default}; diff --git a/assets/en_US_developer_homepage.md.1539b68e.js b/assets/en_US_developer_homepage.md.1539b68e.js new file mode 100644 index 00000000..a1283e01 --- /dev/null +++ b/assets/en_US_developer_homepage.md.1539b68e.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as t,b as e,d as r}from"./app.61e847e1.js";const l='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/homepage.md"}',n={},s=e("h1",{id:"theme-config-homepage",tabindex:"-1"},[r("Theme Config: Homepage "),e("a",{class:"header-anchor",href:"#theme-config-homepage","aria-hidden":"true"},"#")],-1),c=[s];function d(i,h,p,m,_,f){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{l as __pageData,u as default}; diff --git a/assets/en_US_developer_homepage.md.1539b68e.lean.js b/assets/en_US_developer_homepage.md.1539b68e.lean.js new file mode 100644 index 00000000..a1283e01 --- /dev/null +++ b/assets/en_US_developer_homepage.md.1539b68e.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as t,b as e,d as r}from"./app.61e847e1.js";const l='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/homepage.md"}',n={},s=e("h1",{id:"theme-config-homepage",tabindex:"-1"},[r("Theme Config: Homepage "),e("a",{class:"header-anchor",href:"#theme-config-homepage","aria-hidden":"true"},"#")],-1),c=[s];function d(i,h,p,m,_,f){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{l as __pageData,u as default}; diff --git a/assets/en_US_guide_agent.md.8a7cb7f6.js b/assets/en_US_guide_agent.md.8a7cb7f6.js new file mode 100644 index 00000000..a4964b3b --- /dev/null +++ b/assets/en_US_guide_agent.md.8a7cb7f6.js @@ -0,0 +1,24 @@ +import{_ as n,c as e,o as a,a as t}from"./app.61e847e1.js";const b='{"title":"Install Agent using one-click script","description":"","frontmatter":{},"headers":[{"level":2,"title":"Install Agent using one-click script","slug":"install-agent-using-one-click-script"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"en_US/guide/agent.md"}',s={},i=t(`

\u54EA\u5412\u76D1\u63A7\u7684\u88AB\u63A7\u7AEF\u670D\u52A1\u88AB\u79F0\u4E3AAgent\uFF0C\u672C\u6587\u6863\u5C06\u4ECB\u7ECD\u5982\u4F55\u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E0A\u5B89\u88C5Agent\uFF0C\u5E76\u4E0EDashboard\u8FDE\u63A5

Install Agent using one-click script

\u76EE\u524D\u54EA\u5412\u76D1\u63A7\u5DF2\u652F\u6301\u5728WIndows\u548CLinux\u4E0A\u4E00\u952E\u5B89\u88C5Agent\uFF0C\u9075\u5FAA\u672C\u6587\u6863\u7684\u6B65\u9AA4\uFF0C\u4F60\u53EF\u4EE5\u5F88\u8F7B\u677E\u7684\u5728\u670D\u52A1\u5668\u4E0A\u90E8\u7F72\u5B83

\u51C6\u5907\u5DE5\u4F5C


\u4F60\u9700\u8981\u63D0\u524D\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u8BBE\u7F6E\u597D\u901A\u4FE1\u57DF\u540D\uFF0C\u6B64\u57DF\u540D\u4E0D\u53EF\u4EE5\u63A5\u5165CDN\uFF0C\u8FD9\u91CC\u4EE5\u524D\u9762\u63D0\u5230\u8FC7\u7684\u793A\u4F8B\u901A\u4FE1\u57DF\u540D \u201Cdata.example.com\u201D \u6765\u505A\u6F14\u793A
\u8FDB\u5165\u540E\u53F0\u7BA1\u7406\u9762\u677F\uFF0C\u8F6C\u5230\u201C\u8BBE\u7F6E\u201D\u9875\uFF0C\u5728\u201C\u672A\u63A5\u5165CDN\u7684\u9762\u677F\u670D\u52A1\u5668\u57DF\u540D/IP\u201D\u9879\u4E2D\u586B\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u7136\u540E\u70B9\u51FB"\u4FDD\u5B58"

Linux\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Linux\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\uFF0C\u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DE\u5230Dashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Windows\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u8FDB\u5165Windows\u670D\u52A1\u5668\uFF0C\u8FD0\u884CPowerShell\uFF0C\u5728PowerShell\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u5B89\u88C5\u547D\u4EE4
  • \u5982\u9047\u5230\u786E\u8BA4\u300C\u6267\u884C\u7B56\u7565\u53D8\u66F4\u300D\u8BF7\u9009\u62E9 Y
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF



\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent



Linux\u5B89\u88C5Agent


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u5728\u88AB\u63A7\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u811A\u672C\uFF08\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\u7684\u670D\u52A1\u5668\u8BF7\u4F7F\u7528\u955C\u50CF\uFF09\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+
+
  • \u9009\u62E9\u201C\u5B89\u88C5\u76D1\u63A7Agent\u201D
  • \u8F93\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u5982\uFF1A\u201Ddata.example.com\u201C
  • \u8F93\u5165\u9762\u677F\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA4\u4E3A5555
  • \u8F93\u5165Agent\u5BC6\u94A5\uFF0CAgent\u5BC6\u94A5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u670D\u52A1\u5668\u65F6\u751F\u6210\uFF0C\u53EF\u4EE5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u7684\u201C\u4E3B\u673A\u201D\u9875\u4E2D\u627E\u5230
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u5B89\u88C5Agent


OpenWRT\u5B89\u88C5Agent


\u5982\u4F55\u4F7F \u65E7\u7248OpenWRT/LEDE \u81EA\u542F\u52A8

\u5982\u4F55\u4F7F \u65B0\u7248OpenWRT \u81EA\u542F\u52A8\uFF1F\u6765\u81EA @\u827E\u65AF\u5FB7\u65AF

  • \u9996\u5148\u5728 release \u4E0B\u8F7D\u5BF9\u5E94\u7684\u4E8C\u8FDB\u5236\u89E3\u538B zip \u5305\u540E\u653E\u7F6E\u5230 /root
  • \u8FD0\u884C chmod +x /root/nezha-agent \u8D4B\u4E88\u6267\u884C\u6743\u9650\uFF0C\u7136\u540E\u521B\u5EFA /etc/init.d/nezha-service\uFF1A
#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+start_service() {
+ procd_open_instance
+ procd_set_param command /root/nezha-agent -s \u9762\u677F\u901A\u4FE1\u5730\u5740:\u7AEF\u53E3 -p \u79D8\u94A5 -d
+ procd_set_param respawn
+ procd_close_instance
+}
+
+stop_service() {
+    killall nezha-agent
+}
+
+restart() {
+ stop
+ sleep 2
+ start
+}
+
  • \u8FD0\u884C chmod +x /etc/init.d/nezha-service \u8D4B\u4E88\u6267\u884C\u6743\u9650
  • \u542F\u52A8\u670D\u52A1\uFF1A /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE


\u81EA\u5B9A\u4E49\u76D1\u63A7\u7684\u7F51\u5361\u548C\u786C\u76D8\u5206\u533A

  • \u6267\u884C /opt/nezha/agent/nezha-agent --edit-agent-config \u6765\u9009\u62E9\u81EA\u5B9A\u4E49\u7684\u7F51\u5361\u548C\u5206\u533A\uFF0C\u7136\u540E\u91CD\u542F Agent \u5373\u53EF\u751F\u6548

\u5176\u4ED6\u8FD0\u884C\u53C2\u6570

\u901A\u8FC7\u6267\u884C ./nezha-agent --help \u67E5\u770B\u652F\u6301\u7684\u53C2\u6570\uFF0C\u5982\u679C\u4F60\u4F7F\u7528\u4E86\u4E00\u952E\u811A\u672C\u5B89\u88C5Agent\uFF0C\u53EF\u4EE5\u7F16\u8F91 /etc/systemd/system/nezha-agent.service\uFF0C\u5728 ExecStart= \u8FD9\u4E00\u884C\u7684\u672B\u5C3E\u52A0\u4E0A\u4EE5\u4E0B\u53C2\u6570

  • --report-delay \u63A7\u5236\u7CFB\u7EDF\u4FE1\u606F\u4E0A\u62A5\u7684\u95F4\u9694\uFF0C\u9ED8\u8BA4\u4E3A 1 \u79D2\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u4E3A 3 \u6765\u8FDB\u4E00\u6B65\u964D\u4F4E agent \u7AEF\u7CFB\u7EDF\u8D44\u6E90\u5360\u7528\uFF08\u914D\u7F6E\u533A\u95F4 1-4\uFF09
  • --skip-conn \u4E0D\u76D1\u63A7\u8FDE\u63A5\u6570\uFF0C\u63A8\u8350 \u673A\u573A/\u8FDE\u63A5\u5BC6\u96C6\u578B\u670D\u52A1\u5668\u6216CPU\u5360\u7528\u8F83\u9AD8\u7684\u670D\u52A1\u5668\u8BBE\u7F6E
  • --skip-procs \u4E0D\u76D1\u63A7\u8FDB\u7A0B\u6570\uFF0C\u4E5F\u53EF\u4EE5\u964D\u4F4E agent \u5360\u7528
  • --disable-auto-update \u7981\u6B62 \u81EA\u52A8\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-force-update \u7981\u6B62 \u5F3A\u5236\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-command-execute \u7981\u6B62\u5728 Agent \u4E0A\u6267\u884C\u5B9A\u65F6\u4EFB\u52A1\u3001\u6253\u5F00\u5728\u7EBF\u7EC8\u7AEF\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --tls \u542F\u7528 SSL/TLS \u52A0\u5BC6\uFF08\u4F7F\u7528 nginx \u53CD\u5411\u4EE3\u7406 Agent \u7684 grpc \u8FDE\u63A5\uFF0C\u5E76\u4E14 nginx \u5F00\u542F SSL/TLS \u65F6\uFF0C\u9700\u8981\u542F\u7528\u8BE5\u9879\u914D\u7F6E\uFF09
`,38),l=[i];function o(r,c,p,d,h,u){return a(),e("div",null,l)}var k=n(s,[["render",o]]);export{b as __pageData,k as default}; diff --git a/assets/en_US_guide_agent.md.8a7cb7f6.lean.js b/assets/en_US_guide_agent.md.8a7cb7f6.lean.js new file mode 100644 index 00000000..f22ba406 --- /dev/null +++ b/assets/en_US_guide_agent.md.8a7cb7f6.lean.js @@ -0,0 +1 @@ +import{_ as n,c as e,o as a,a as t}from"./app.61e847e1.js";const b='{"title":"Install Agent using one-click script","description":"","frontmatter":{},"headers":[{"level":2,"title":"Install Agent using one-click script","slug":"install-agent-using-one-click-script"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"en_US/guide/agent.md"}',s={},i=t("",38),l=[i];function o(r,c,p,d,h,u){return a(),e("div",null,l)}var k=n(s,[["render",o]]);export{b as __pageData,k as default}; diff --git a/assets/en_US_guide_dashboard.md.6fea9c12.js b/assets/en_US_guide_dashboard.md.6fea9c12.js new file mode 100644 index 00000000..d78b6c37 --- /dev/null +++ b/assets/en_US_guide_dashboard.md.6fea9c12.js @@ -0,0 +1,24 @@ +import{_ as e,c as a,o as n,a as t}from"./app.61e847e1.js";const k='{"title":"Preparations","description":"","frontmatter":{},"headers":[{"level":3,"title":"Preparations","slug":"preparations"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"en_US/guide/dashboard.md"}',s={},o=t(`

Preparations


\u642D\u5EFA\u4E00\u4E2A\u54EA\u5412\u76D1\u63A7\uFF0C\u4F60\u9700\u8981\uFF1A

  1. \u4E00\u53F0\u53EF\u4EE5\u8FDE\u63A5\u516C\u7F51\u7684VPS\uFF0C\u9632\u706B\u5899\u548C\u5B89\u5168\u7B56\u7565\u9700\u8981\u653E\u884C8008\u548C5555\u7AEF\u53E3\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u8BBF\u95EE\u548C\u65E0\u6CD5\u63A5\u6536\u6570\u636E\u3002\u5355\u6838512MB\u5185\u5B58\u7684\u670D\u52A1\u5668\u914D\u7F6E\u5C31\u8DB3\u4EE5\u6EE1\u8DB3\u5927\u591A\u6570\u4F7F\u7528\u573A\u666F
  2. \u4E00\u4E2A\u5DF2\u7ECF\u8BBE\u7F6E\u597DA\u8BB0\u5F55\uFF0C\u6307\u5411Dashboard\u670D\u52A1\u5668ip\u7684\u57DF\u540D

TIP

\u5982\u679C\u4F60\u60F3\u4F7F\u7528CDN\uFF0C\u8BF7\u51C6\u5907\u4E24\u4E2A\u57DF\u540D\uFF0C\u4E00\u4E2A\u914D\u7F6E\u597DCDN\u7528\u4F5C\u516C\u5F00\u8BBF\u95EE\uFF0CCDN\u9700\u8981\u652F\u6301WebSocket\u534F\u8BAE\uFF1B\u53E6\u4E00\u4E2A\u57DF\u540D\u4E0D\u8981\u4F7F\u7528CDN\uFF0C\u7528\u4F5CAgent\u7AEF\u4E0EDashboard\u7684\u901A\u4FE1
\u672C\u6587\u6863\u5206\u522B\u4EE5 "cdn.example.com" \u548C "data.example.com" \u4E24\u4E2A\u57DF\u540D\u6765\u6F14\u793A

  1. \u4E00\u4E2AGithub/Gitee\u8D26\u53F7

\u672C\u6587\u6863\u5C06\u4EE5\u5B9D\u5854\u9762\u677F\u53CD\u4EE3\u9762\u677F\u7684\u8FC7\u7A0B\u4F5C\u4E3A\u8303\u4F8B\uFF0C\u968F\u7740\u672A\u6765\u7248\u672C\u7684\u53D8\u5316\uFF0C\u90E8\u5206\u529F\u80FD\u7684\u5165\u53E3\u53EF\u80FD\u4F1A\u53D1\u751F\u6539\u53D8\uFF0C\u672C\u6587\u6863\u4EC5\u4F9B\u53C2\u8003

\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5


\u54EA\u5412\u76D1\u63A7\u63A5\u5165Github\u548CGitee\u4F5C\u4E3A\u540E\u53F0\u7BA1\u7406\u5458\u8D26\u53F7

  • \u9996\u5148\u6211\u4EEC\u9700\u8981\u65B0\u5EFA\u4E00\u4E2A\u9A8C\u8BC1\u5E94\u7528\uFF0C\u4EE5Github\u4E3A\u4F8B\uFF0C\u767B\u9646Github\u540E\uFF0C\u6253\u5F00 https://github.com/settings/developers \uFF0C\u4F9D\u6B21\u9009\u62E9\u201COAuth Apps\u201D - \u201CNew OAuth App\u201D
    Application name - \u968F\u610F\u586B\u5199
    Homepage URL - \u586B\u5199\u9762\u677F\u7684\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982\uFF1A"http://cdn.example.com"
    Authorization callback URL - \u586B\u5199\u56DE\u8C03\u5730\u5740\uFF0C\u5982\uFF1A"http://cdn.example.com/oauth2/callback"
  • \u70B9\u51FB\u201CRegister application\u201D
  • \u4FDD\u5B58\u9875\u9762\u4E2D\u7684Client ID\uFF0C\u7136\u540E\u70B9\u51FB \u201CGenerate a new client secret\u201C\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684Client Secret\uFF0C\u65B0\u5EFA\u7684\u5BC6\u94A5\u4EC5\u4F1A\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58

\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard


  • \u5728\u9762\u677F\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u5B89\u88C5\u811A\u672C\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+

\u5982\u679C\u4F60\u7684\u9762\u677F\u670D\u52A1\u5668\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\uFF0C\u53EF\u4EE5\u4F7F\u7528\u955C\u50CF\uFF1A

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
+
  • \u7B49\u5F85Docker\u5B89\u88C5\u5B8C\u6BD5\u540E\uFF0C\u5206\u522B\u8F93\u5165\u4EE5\u4E0B\u503C\uFF1A
    OAuth\u63D0\u4F9B\u5546 - Github\u6216Gitee
    Client ID - \u4E4B\u524D\u4FDD\u5B58\u7684Client ID
    Client Secret - \u4E4B\u524D\u4FDD\u5B58\u7684\u5BC6\u94A5
    \u7528\u6237\u540D - Github\u6216Gitee\u7684\u7528\u6237\u540D
    \u7AD9\u70B9\u6807\u9898 - \u81EA\u5B9A\u4E49\u7AD9\u70B9\u6807\u9898
    \u8BBF\u95EE\u7AEF\u53E3 - \u516C\u5F00\u8BBF\u95EE\u7AEF\u53E3\uFF0C\u53EF\u81EA\u5B9A\u4E49\uFF0C\u9ED8\u8BA48008
    Agent\u7684\u901A\u4FE1\u7AEF\u53E3 - Agent\u4E0EDashboard\u7684\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA45555

  • \u8F93\u5165\u5B8C\u6210\u540E\uFF0C\u7B49\u5F85\u62C9\u53D6\u955C\u50CF
    \u5B89\u88C5\u7ED3\u675F\u540E\uFF0C\u5982\u679C\u4E00\u5207\u6B63\u5E38\uFF0C\u6B64\u65F6\u4F60\u53EF\u4EE5\u8BBF\u95EE\u57DF\u540D+\u7AEF\u53E3\u53F7\uFF0C\u5982 \u201Chttp://cdn.example.com:8008\u201D \u6765\u67E5\u770B\u9762\u677F

  • \u5C06\u6765\u5982\u679C\u9700\u8981\u518D\u6B21\u8FD0\u884C\u811A\u672C\uFF0C\u53EF\u4EE5\u8FD0\u884C\uFF1A

./nezha.sh
+

\u6765\u6253\u5F00\u7BA1\u7406\u811A\u672C


\u914D\u7F6E\u53CD\u5411\u4EE3\u7406


  • \u5728\u5B9D\u5854\u9762\u677F\u4E2D\u65B0\u5EFA\u4E00\u4E2A\u7AD9\u70B9\uFF0C\u57DF\u540D\u586B\u5199\u516C\u5F00\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982 \u201Chttp://cdn.example.com\u201C \uFF0C\u7136\u540E\u70B9\u51FB\u201C\u8BBE\u7F6E\u201D\u8FDB\u5165\u7AD9\u70B9\u8BBE\u7F6E\u9009\u9879\uFF0C\u9009\u62E9\u201C\u53CD\u5411\u4EE3\u7406\u201D - \u201C\u65B0\u5EFA\u53CD\u5411\u4EE3\u7406\u201D

  • \u81EA\u5B9A\u4E49\u4E00\u4E2A\u4EE3\u7406\u540D\u79F0\uFF0C\u5728\u4E0B\u65B9\u201C\u76EE\u6807URL\u201D\u4E2D\u586B\u5165 http://127.0.0.1 \u7136\u540E\u70B9\u51FB\u201C\u4FDD\u5B58\u201D

  • \u6253\u5F00\u521A\u521A\u65B0\u5EFA\u7684\u53CD\u5411\u4EE3\u7406\u53F3\u8FB9\u7684\u201C\u914D\u7F6E\u6587\u4EF6\u201D\uFF0C\u5C06\u914D\u7F6E\u6587\u4EF6\u66FF\u6362\u4E3A\u4EE5\u4E0B\u5185\u5BB9\uFF1A

#PROXY-START/
+location / {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_set_header Host $host;
+    proxy_set_header      Upgrade $http_upgrade;
+}
+location ~ ^/(ws|terminal/.+)$  {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "Upgrade";
+    proxy_set_header Host $host;
+}
+#PROXY-END/
+
  • \u70B9\u51FB\u201C\u4FDD\u5B58\u201D
    \u73B0\u5728\uFF0C\u4F60\u5E94\u8BE5\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u57DF\u540D\uFF0C\u5982\uFF1A\u201Chttp://cdn.example.com\u201C \u6765\u8BBF\u95EE\u9762\u677F\u4E86

\u6269\u5C55\u5185\u5BB9\uFF1A

  • CaddyServer v1\uFF08v2 \u65E0\u9700\u7279\u522B\u914D\u7F6E\uFF09

    proxy /ws http://ip:8008 {
    +    websocket
    +}
    +proxy /terminal/* http://ip:8008 {
    +    websocket
    +}
    +


\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL


\u9996\u5148\uFF0C\u5148\u6682\u65F6\u5173\u95ED\u53CD\u5411\u4EE3\u7406
\u6B63\u5982\u5728\u5176\u4ED6\u7F51\u7AD9\u4E2D\u914D\u7F6ESSL\u8BC1\u4E66\u4E00\u6837\uFF0C\u8FDB\u5165\u7AD9\u70B9\u8BBE\u7F6E\u4E2D\u7684\u201CSSL\u201D\uFF0C\u4F60\u53EF\u4EE5\u9009\u62E9\u81EA\u52A8\u7533\u8BF7 Let\xB4s Encrypt \u8BC1\u4E66\u6216\u624B\u52A8\u914D\u7F6E\u5DF2\u6709\u7684\u8BC1\u4E66
\u5B8C\u6210SSL\u7684\u8BBE\u7F6E\u540E\uFF0C\u4F60\u9700\u8981\u56DE\u5230 https://github.com/settings/developers \uFF0C\u7F16\u8F91\u4E4B\u524D\u521B\u5EFA\u7684\u9A8C\u8BC1\u5E94\u7528\u7A0B\u5E8F\uFF0C\u5C06\u4E4B\u524D\u6211\u4EEC\u586B\u5165\u7684"Homepage URL"\u548C"Authorization callback URL"\u4E2D\u7684\u57DF\u540D\u5168\u90E8\u4ECEhttp\u6539\u4E3Ahttps\uFF0C\u5982\uFF1A"https://cdn.example.com" \u548C "https://cdn.example.com/oauth2/callback" \uFF0C\u4E0D\u66F4\u6539\u6B64\u9879\u53EF\u80FD\u4F1A\u5BFC\u81F4\u4F60\u65E0\u6CD5\u767B\u9646\u9762\u677F\u540E\u53F0

`,32),r=[o];function p(l,c,i,d,h,u){return n(),a("div",null,r)}var m=e(s,[["render",p]]);export{k as __pageData,m as default}; diff --git a/assets/en_US_guide_dashboard.md.6fea9c12.lean.js b/assets/en_US_guide_dashboard.md.6fea9c12.lean.js new file mode 100644 index 00000000..258df896 --- /dev/null +++ b/assets/en_US_guide_dashboard.md.6fea9c12.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as n,a as t}from"./app.61e847e1.js";const k='{"title":"Preparations","description":"","frontmatter":{},"headers":[{"level":3,"title":"Preparations","slug":"preparations"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"en_US/guide/dashboard.md"}',s={},o=t("",32),r=[o];function p(l,c,i,d,h,u){return n(),a("div",null,r)}var m=e(s,[["render",p]]);export{k as __pageData,m as default}; diff --git a/assets/en_US_guide_notifications.md.5ae91a4b.js b/assets/en_US_guide_notifications.md.5ae91a4b.js new file mode 100644 index 00000000..3d85cdc9 --- /dev/null +++ b/assets/en_US_guide_notifications.md.5ae91a4b.js @@ -0,0 +1 @@ +import{_ as t,c as e,o,b as a}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/notifications.md"}',n={},s=a("p",null,"notifications",-1),i=[s];function c(r,_,d,p,f,l){return o(),e("div",null,i)}var h=t(n,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_notifications.md.5ae91a4b.lean.js b/assets/en_US_guide_notifications.md.5ae91a4b.lean.js new file mode 100644 index 00000000..3d85cdc9 --- /dev/null +++ b/assets/en_US_guide_notifications.md.5ae91a4b.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o,b as a}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/notifications.md"}',n={},s=a("p",null,"notifications",-1),i=[s];function c(r,_,d,p,f,l){return o(),e("div",null,i)}var h=t(n,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q1.md.fa5773ca.js b/assets/en_US_guide_q1.md.fa5773ca.js new file mode 100644 index 00000000..9da443a1 --- /dev/null +++ b/assets/en_US_guide_q1.md.fa5773ca.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q1.md"}',s={},r=o("p",null,"q1",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q1.md.fa5773ca.lean.js b/assets/en_US_guide_q1.md.fa5773ca.lean.js new file mode 100644 index 00000000..9da443a1 --- /dev/null +++ b/assets/en_US_guide_q1.md.fa5773ca.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q1.md"}',s={},r=o("p",null,"q1",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q2.md.f321ac98.js b/assets/en_US_guide_q2.md.f321ac98.js new file mode 100644 index 00000000..479e1bef --- /dev/null +++ b/assets/en_US_guide_q2.md.f321ac98.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md"}',s={},r=o("p",null,"q2",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q2.md.f321ac98.lean.js b/assets/en_US_guide_q2.md.f321ac98.lean.js new file mode 100644 index 00000000..479e1bef --- /dev/null +++ b/assets/en_US_guide_q2.md.f321ac98.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md"}',s={},r=o("p",null,"q2",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q3.md.31314441.js b/assets/en_US_guide_q3.md.31314441.js new file mode 100644 index 00000000..7fd446fe --- /dev/null +++ b/assets/en_US_guide_q3.md.31314441.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md"}',s={},r=o("p",null,"q3",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q3.md.31314441.lean.js b/assets/en_US_guide_q3.md.31314441.lean.js new file mode 100644 index 00000000..7fd446fe --- /dev/null +++ b/assets/en_US_guide_q3.md.31314441.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md"}',s={},r=o("p",null,"q3",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q4.md.9d306ec0.js b/assets/en_US_guide_q4.md.9d306ec0.js new file mode 100644 index 00000000..6122d4c4 --- /dev/null +++ b/assets/en_US_guide_q4.md.9d306ec0.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md"}',s={},r=o("p",null,"q4",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q4.md.9d306ec0.lean.js b/assets/en_US_guide_q4.md.9d306ec0.lean.js new file mode 100644 index 00000000..6122d4c4 --- /dev/null +++ b/assets/en_US_guide_q4.md.9d306ec0.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md"}',s={},r=o("p",null,"q4",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q5.md.709d6485.js b/assets/en_US_guide_q5.md.709d6485.js new file mode 100644 index 00000000..addf075d --- /dev/null +++ b/assets/en_US_guide_q5.md.709d6485.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md"}',s={},r=o("p",null,"q5",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_q5.md.709d6485.lean.js b/assets/en_US_guide_q5.md.709d6485.lean.js new file mode 100644 index 00000000..addf075d --- /dev/null +++ b/assets/en_US_guide_q5.md.709d6485.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,b as o}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md"}',s={},r=o("p",null,"q5",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_servers.md.e153f6cc.js b/assets/en_US_guide_servers.md.e153f6cc.js new file mode 100644 index 00000000..105b79e3 --- /dev/null +++ b/assets/en_US_guide_servers.md.e153f6cc.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as r}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/servers.md"}',a={},o=r("p",null,"servers",-1),n=[o];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var v=e(a,[["render",c]]);export{m as __pageData,v as default}; diff --git a/assets/en_US_guide_servers.md.e153f6cc.lean.js b/assets/en_US_guide_servers.md.e153f6cc.lean.js new file mode 100644 index 00000000..105b79e3 --- /dev/null +++ b/assets/en_US_guide_servers.md.e153f6cc.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as r}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/servers.md"}',a={},o=r("p",null,"servers",-1),n=[o];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var v=e(a,[["render",c]]);export{m as __pageData,v as default}; diff --git a/assets/en_US_guide_services.md.48d769db.js b/assets/en_US_guide_services.md.48d769db.js new file mode 100644 index 00000000..7c7a4f56 --- /dev/null +++ b/assets/en_US_guide_services.md.48d769db.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as r}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',a={},o=r("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(a,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/en_US_guide_services.md.48d769db.lean.js b/assets/en_US_guide_services.md.48d769db.lean.js new file mode 100644 index 00000000..7c7a4f56 --- /dev/null +++ b/assets/en_US_guide_services.md.48d769db.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as r}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',a={},o=r("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(a,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/en_US_guide_settings.md.85014554.js b/assets/en_US_guide_settings.md.85014554.js new file mode 100644 index 00000000..6b7297a7 --- /dev/null +++ b/assets/en_US_guide_settings.md.85014554.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as a}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/settings.md"}',n={},o=a("p",null,"settings",-1),r=[o];function c(_,i,d,p,l,f){return s(),t("div",null,r)}var g=e(n,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/en_US_guide_settings.md.85014554.lean.js b/assets/en_US_guide_settings.md.85014554.lean.js new file mode 100644 index 00000000..6b7297a7 --- /dev/null +++ b/assets/en_US_guide_settings.md.85014554.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as a}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/settings.md"}',n={},o=a("p",null,"settings",-1),r=[o];function c(_,i,d,p,l,f){return s(),t("div",null,r)}var g=e(n,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/en_US_guide_tasks.md.b89a1dc0.js b/assets/en_US_guide_tasks.md.b89a1dc0.js new file mode 100644 index 00000000..8828f397 --- /dev/null +++ b/assets/en_US_guide_tasks.md.b89a1dc0.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as a}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/tasks.md"}',o={},r=a("p",null,"tasks",-1),n=[r];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var h=e(o,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_guide_tasks.md.b89a1dc0.lean.js b/assets/en_US_guide_tasks.md.b89a1dc0.lean.js new file mode 100644 index 00000000..8828f397 --- /dev/null +++ b/assets/en_US_guide_tasks.md.b89a1dc0.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as s,b as a}from"./app.61e847e1.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/tasks.md"}',o={},r=a("p",null,"tasks",-1),n=[r];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var h=e(o,[["render",c]]);export{m as __pageData,h as default}; diff --git a/assets/en_US_index.md.9c539dde.js b/assets/en_US_index.md.9c539dde.js new file mode 100644 index 00000000..e8859f96 --- /dev/null +++ b/assets/en_US_index.md.9c539dde.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./app.61e847e1.js";const m='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Nezha Monitoring","tagline":"Self-hosted lightweight multi-server and website monitoring and alerting.","actionText":"Learn more \u2192","actionLink":"/en_US/guide/dashboard","features":[{"title":"\u7279\u60271","details":"\u7279\u60271\u7279\u60271\u7279\u60271"},{"title":"\u7279\u60272","details":"\u7279\u60272\u7279\u60272\u7279\u60272"},{"title":"\u7279\u60273","details":"\u7279\u60273\u7279\u60273\u7279\u60273"}],"footer":"Licence | Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/index.md"}',r={};function i(n,o,s,c,d,h){return a(),t("div")}var p=e(r,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/en_US_index.md.9c539dde.lean.js b/assets/en_US_index.md.9c539dde.lean.js new file mode 100644 index 00000000..e8859f96 --- /dev/null +++ b/assets/en_US_index.md.9c539dde.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./app.61e847e1.js";const m='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Nezha Monitoring","tagline":"Self-hosted lightweight multi-server and website monitoring and alerting.","actionText":"Learn more \u2192","actionLink":"/en_US/guide/dashboard","features":[{"title":"\u7279\u60271","details":"\u7279\u60271\u7279\u60271\u7279\u60271"},{"title":"\u7279\u60272","details":"\u7279\u60272\u7279\u60272\u7279\u60272"},{"title":"\u7279\u60273","details":"\u7279\u60273\u7279\u60273\u7279\u60273"}],"footer":"Licence | Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/index.md"}',r={};function i(n,o,s,c,d,h){return a(),t("div")}var p=e(r,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/guide_agent.md.4f40dc30.js b/assets/guide_agent.md.4f40dc30.js new file mode 100644 index 00000000..e6830d66 --- /dev/null +++ b/assets/guide_agent.md.4f40dc30.js @@ -0,0 +1,24 @@ +import{_ as e,c as n,o as a,a as t}from"./app.61e847e1.js";const b='{"title":"\u4E00\u952E\u5B89\u88C5Agent","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4E00\u952E\u5B89\u88C5Agent","slug":"\u4E00\u952E\u5B89\u88C5agent"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"guide/agent.md"}',s={},o=t(`

\u54EA\u5412\u76D1\u63A7\u7684\u88AB\u63A7\u7AEF\u670D\u52A1\u88AB\u79F0\u4E3AAgent\uFF0C\u672C\u6587\u6863\u5C06\u4ECB\u7ECD\u5982\u4F55\u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E0A\u5B89\u88C5Agent\uFF0C\u5E76\u4E0EDashboard\u8FDE\u63A5

\u4E00\u952E\u5B89\u88C5Agent


\u76EE\u524D\u54EA\u5412\u76D1\u63A7\u5DF2\u652F\u6301\u5728WIndows\u548CLinux\u4E0A\u4E00\u952E\u5B89\u88C5Agent\uFF0C\u9075\u5FAA\u672C\u6587\u6863\u7684\u6B65\u9AA4\uFF0C\u4F60\u53EF\u4EE5\u5F88\u8F7B\u677E\u7684\u5728\u670D\u52A1\u5668\u4E0A\u90E8\u7F72\u5B83

\u51C6\u5907\u5DE5\u4F5C


\u4F60\u9700\u8981\u63D0\u524D\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u8BBE\u7F6E\u597D\u901A\u4FE1\u57DF\u540D\uFF0C\u6B64\u57DF\u540D\u4E0D\u53EF\u4EE5\u63A5\u5165CDN\uFF0C\u8FD9\u91CC\u4EE5\u524D\u9762\u63D0\u5230\u8FC7\u7684\u793A\u4F8B\u901A\u4FE1\u57DF\u540D \u201Cdata.example.com\u201D \u6765\u505A\u6F14\u793A
\u8FDB\u5165\u540E\u53F0\u7BA1\u7406\u9762\u677F\uFF0C\u8F6C\u5230\u201C\u8BBE\u7F6E\u201D\u9875\uFF0C\u5728\u201C\u672A\u63A5\u5165CDN\u7684\u9762\u677F\u670D\u52A1\u5668\u57DF\u540D/IP\u201D\u9879\u4E2D\u586B\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u7136\u540E\u70B9\u51FB"\u4FDD\u5B58"

Linux\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Linux\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\uFF0C\u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DE\u5230Dashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Windows\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u8FDB\u5165Windows\u670D\u52A1\u5668\uFF0C\u8FD0\u884CPowerShell\uFF0C\u5728PowerShell\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u5B89\u88C5\u547D\u4EE4
  • \u5982\u9047\u5230\u786E\u8BA4\u300C\u6267\u884C\u7B56\u7565\u53D8\u66F4\u300D\u8BF7\u9009\u62E9 Y
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF



\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent



Linux\u5B89\u88C5Agent


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u5728\u88AB\u63A7\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u811A\u672C\uFF08\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\u7684\u670D\u52A1\u5668\u8BF7\u4F7F\u7528\u955C\u50CF\uFF09\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+
+
  • \u9009\u62E9\u201C\u5B89\u88C5\u76D1\u63A7Agent\u201D
  • \u8F93\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u5982\uFF1A\u201Ddata.example.com\u201C
  • \u8F93\u5165\u9762\u677F\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA4\u4E3A5555
  • \u8F93\u5165Agent\u5BC6\u94A5\uFF0CAgent\u5BC6\u94A5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u670D\u52A1\u5668\u65F6\u751F\u6210\uFF0C\u53EF\u4EE5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u7684\u201C\u4E3B\u673A\u201D\u9875\u4E2D\u627E\u5230
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u5B89\u88C5Agent


OpenWRT\u5B89\u88C5Agent


\u5982\u4F55\u4F7F \u65E7\u7248OpenWRT/LEDE \u81EA\u542F\u52A8

\u5982\u4F55\u4F7F \u65B0\u7248OpenWRT \u81EA\u542F\u52A8\uFF1F\u6765\u81EA @\u827E\u65AF\u5FB7\u65AF

  • \u9996\u5148\u5728 release \u4E0B\u8F7D\u5BF9\u5E94\u7684\u4E8C\u8FDB\u5236\u89E3\u538B zip \u5305\u540E\u653E\u7F6E\u5230 /root
  • \u8FD0\u884C chmod +x /root/nezha-agent \u8D4B\u4E88\u6267\u884C\u6743\u9650\uFF0C\u7136\u540E\u521B\u5EFA /etc/init.d/nezha-service\uFF1A
#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+start_service() {
+ procd_open_instance
+ procd_set_param command /root/nezha-agent -s \u9762\u677F\u901A\u4FE1\u5730\u5740:\u7AEF\u53E3 -p \u79D8\u94A5 -d
+ procd_set_param respawn
+ procd_close_instance
+}
+
+stop_service() {
+    killall nezha-agent
+}
+
+restart() {
+ stop
+ sleep 2
+ start
+}
+
  • \u8FD0\u884C chmod +x /etc/init.d/nezha-service \u8D4B\u4E88\u6267\u884C\u6743\u9650
  • \u542F\u52A8\u670D\u52A1\uFF1A /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE


\u81EA\u5B9A\u4E49\u76D1\u63A7\u7684\u7F51\u5361\u548C\u786C\u76D8\u5206\u533A

  • \u6267\u884C /opt/nezha/agent/nezha-agent --edit-agent-config \u6765\u9009\u62E9\u81EA\u5B9A\u4E49\u7684\u7F51\u5361\u548C\u5206\u533A\uFF0C\u7136\u540E\u91CD\u542F Agent \u5373\u53EF\u751F\u6548

\u5176\u4ED6\u8FD0\u884C\u53C2\u6570

\u901A\u8FC7\u6267\u884C ./nezha-agent --help \u67E5\u770B\u652F\u6301\u7684\u53C2\u6570\uFF0C\u5982\u679C\u4F60\u4F7F\u7528\u4E86\u4E00\u952E\u811A\u672C\u5B89\u88C5Agent\uFF0C\u53EF\u4EE5\u7F16\u8F91 /etc/systemd/system/nezha-agent.service\uFF0C\u5728 ExecStart= \u8FD9\u4E00\u884C\u7684\u672B\u5C3E\u52A0\u4E0A\u4EE5\u4E0B\u53C2\u6570

  • --report-delay \u63A7\u5236\u7CFB\u7EDF\u4FE1\u606F\u4E0A\u62A5\u7684\u95F4\u9694\uFF0C\u9ED8\u8BA4\u4E3A 1 \u79D2\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u4E3A 3 \u6765\u8FDB\u4E00\u6B65\u964D\u4F4E agent \u7AEF\u7CFB\u7EDF\u8D44\u6E90\u5360\u7528\uFF08\u914D\u7F6E\u533A\u95F4 1-4\uFF09
  • --skip-conn \u4E0D\u76D1\u63A7\u8FDE\u63A5\u6570\uFF0C\u63A8\u8350 \u673A\u573A/\u8FDE\u63A5\u5BC6\u96C6\u578B\u670D\u52A1\u5668\u6216CPU\u5360\u7528\u8F83\u9AD8\u7684\u670D\u52A1\u5668\u8BBE\u7F6E
  • --skip-procs \u4E0D\u76D1\u63A7\u8FDB\u7A0B\u6570\uFF0C\u4E5F\u53EF\u4EE5\u964D\u4F4E agent \u5360\u7528
  • --disable-auto-update \u7981\u6B62 \u81EA\u52A8\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-force-update \u7981\u6B62 \u5F3A\u5236\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-command-execute \u7981\u6B62\u5728 Agent \u4E0A\u6267\u884C\u5B9A\u65F6\u4EFB\u52A1\u3001\u6253\u5F00\u5728\u7EBF\u7EC8\u7AEF\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --tls \u542F\u7528 SSL/TLS \u52A0\u5BC6\uFF08\u4F7F\u7528 nginx \u53CD\u5411\u4EE3\u7406 Agent \u7684 grpc \u8FDE\u63A5\uFF0C\u5E76\u4E14 nginx \u5F00\u542F SSL/TLS \u65F6\uFF0C\u9700\u8981\u542F\u7528\u8BE5\u9879\u914D\u7F6E\uFF09
`,39),i=[o];function l(r,c,p,d,h,u){return a(),n("div",null,i)}var m=e(s,[["render",l]]);export{b as __pageData,m as default}; diff --git a/assets/guide_agent.md.4f40dc30.lean.js b/assets/guide_agent.md.4f40dc30.lean.js new file mode 100644 index 00000000..c0e730e3 --- /dev/null +++ b/assets/guide_agent.md.4f40dc30.lean.js @@ -0,0 +1 @@ +import{_ as e,c as n,o as a,a as t}from"./app.61e847e1.js";const b='{"title":"\u4E00\u952E\u5B89\u88C5Agent","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4E00\u952E\u5B89\u88C5Agent","slug":"\u4E00\u952E\u5B89\u88C5agent"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"guide/agent.md"}',s={},o=t("",39),i=[o];function l(r,c,p,d,h,u){return a(),n("div",null,i)}var m=e(s,[["render",l]]);export{b as __pageData,m as default}; diff --git a/assets/guide_api.md.03e88529.js b/assets/guide_api.md.03e88529.js deleted file mode 100644 index 6f115ba2..00000000 --- a/assets/guide_api.md.03e88529.js +++ /dev/null @@ -1,35 +0,0 @@ -import{_ as a,c as n,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"API Reference","description":"","frontmatter":{},"headers":[{"level":2,"title":"Helper Methods","slug":"helper-methods"},{"level":3,"title":"useData","slug":"usedata"},{"level":3,"title":"useRoute","slug":"useroute"},{"level":3,"title":"useRouter","slug":"userouter"},{"level":3,"title":"withBase","slug":"withbase"},{"level":2,"title":"Global Components","slug":"global-components"},{"level":3,"title":"","slug":"content"},{"level":3,"title":"","slug":"clientonly"}],"relativePath":"guide/api.md","lastUpdated":1652768268000}',t={},o=e(`

API Reference

Helper Methods

The following methods are globally importable from vitepress and are typically used in custom theme Vue components. However, they are also usable inside .md pages because markdown files are compiled into Vue single-file components.

Methods that start with use* indicates that it is a Vue 3 Composition API function that can only be used inside setup() or <script setup>.

useData

Returns page-specific data. The returned object has the following type:

interface VitePressData {
-  site: Ref<SiteData>
-  page: Ref<PageData>
-  theme: Ref<any> // themeConfig from .vitepress/config.js
-  frontmatter: Ref<PageData['frontmatter']>
-  title: Ref<string>
-  description: Ref<string>
-  lang: Ref<string>
-  localePath: Ref<string>
-}
-

Example:

<script setup>
-import { useData } from 'vitepress'
-const { theme } = useData()
-</script>
-
-<template>
-  <h1>{{ theme.heroText }}</h1>
-</template>
-

useRoute

Returns the current route object with the following type:

interface Route {
-  path: string
-  data: PageData
-  component: Component | null
-}
-

useRouter

Returns the VitePress router instance so you can programmatically navigate to another page.

interface Router {
-  route: Route
-  go: (href?: string) => Promise<void>
-}
-

withBase

  • Type: (path: string) => string

    Appends the configured base to a given URL path. Also see Base URL.

Global Components

VitePress comes with few built-in component that can be used globally. You may use these components in your markdown or your custom theme configuration.

<Content/>

The <Content/> component displays the rendered markdown contents. Useful when creating your own theme.

<template>
-  <h1>Custom Layout!</h1>
-  <Content />
-</template>
-

<ClientOnly/>

The <ClientOnly/> component renders its slot only at client side.

Because VitePress applications are server-rendered in Node.js when generating static builds, any Vue usage must conform to the universal code requirements. In short, make sure to only access Browser / DOM APIs in beforeMount or mounted hooks.

If you are using or demoing components that are not SSR-friendly (for example, contain custom directives), you can wrap them inside the ClientOnly component.

<ClientOnly>
-  <NonSSRFriendlyComponent />
-</ClientOnly>
-
`,27),p=[o];function c(l,r,i,u,d,k){return s(),n("div",null,p)}var m=a(t,[["render",c]]);export{h as __pageData,m as default}; diff --git a/assets/guide_api.md.03e88529.lean.js b/assets/guide_api.md.03e88529.lean.js deleted file mode 100644 index 8fced4b8..00000000 --- a/assets/guide_api.md.03e88529.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as n,o as s,a as e}from"./app.54944ef9.js";const h='{"title":"API Reference","description":"","frontmatter":{},"headers":[{"level":2,"title":"Helper Methods","slug":"helper-methods"},{"level":3,"title":"useData","slug":"usedata"},{"level":3,"title":"useRoute","slug":"useroute"},{"level":3,"title":"useRouter","slug":"userouter"},{"level":3,"title":"withBase","slug":"withbase"},{"level":2,"title":"Global Components","slug":"global-components"},{"level":3,"title":"","slug":"content"},{"level":3,"title":"","slug":"clientonly"}],"relativePath":"guide/api.md","lastUpdated":1652768268000}',t={},o=e("",27),p=[o];function c(l,r,i,u,d,k){return s(),n("div",null,p)}var m=a(t,[["render",c]]);export{h as __pageData,m as default}; diff --git a/assets/guide_assets.md.aae76804.js b/assets/guide_assets.md.aae76804.js deleted file mode 100644 index 0ab098b4..00000000 --- a/assets/guide_assets.md.aae76804.js +++ /dev/null @@ -1,13 +0,0 @@ -import{_ as e,c as a,o as s,a as n}from"./app.54944ef9.js";const k='{"title":"Asset Handling","description":"","frontmatter":{},"headers":[{"level":2,"title":"Public Files","slug":"public-files"},{"level":2,"title":"Base URL","slug":"base-url"}],"relativePath":"guide/assets.md","lastUpdated":1652768268000}',t={},o=n(`

Asset Handling

All Markdown files are compiled into Vue components and processed by Vite. You can, and should, reference any assets using relative URLs:

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

You can reference static assets in your markdown files, your *.vue components in the theme, styles and plain .css files either using absolute public paths (based on project root) or relative paths (based on your file system). The latter is similar to the behavior you are used to if you have used vue-cli or webpack's file-loader.

Common image, media, and font filetypes are detected and included as assets automatically.

All referenced assets, including those using absolute paths, will be copied to the dist folder with a hashed file name in the production build. Never-referenced assets will not be copied. Similar to vue-cli, image assets smaller than 4kb will be base64 inlined.

All static path references, including absolute paths, should be based on your working directory structure.

Public Files

Sometimes you may need to provide static assets that are not directly referenced in any of your Markdown or theme components (for example, favicons and PWA icons). The public directory under project root can be used as an escape hatch to provide static assets that either are never referenced in source code (e.g. robots.txt), or must retain the exact same file name (without hashing).

Assets placed in public will be copied to the root of the dist directory as-is.

Note that you should reference files placed in public using root absolute path - for example, public/icon.png should always be referenced in source code as /icon.png.

Base URL

If your site is deployed to a non-root URL, you will need to set the base option in .vitepress/config.js. For example, if you plan to deploy your site to https://foo.github.io/bar/, then base should be set to '/bar/' (it should always start and end with a slash).

All your static asset paths are automatically processed to adjust for different base config values. For example, if you have an absolute reference to an asset under public in your markdown:

![An image](/image-inside-public.png)
-

You do not need to update it when you change the base config value in this case.

However, if you are authoring a theme component that links to assets dynamically, e.g. an image whose src is based on a theme config value:

<img :src="theme.logoPath" />
-

In this case it is recommended to wrap the path with the withBase helper provided by VitePress:

<script setup>
-import { withBase, useData } from 'vitepress'
-
-const { theme } = useData()
-</script>
-
-<template>
-  <img :src="withBase(theme.logoPath)" />
-</template>
-
`,20),p=[o];function c(i,l,r,d,u,h){return s(),a("div",null,p)}var m=e(t,[["render",c]]);export{k as __pageData,m as default}; diff --git a/assets/guide_assets.md.aae76804.lean.js b/assets/guide_assets.md.aae76804.lean.js deleted file mode 100644 index bfbf95c1..00000000 --- a/assets/guide_assets.md.aae76804.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as s,a as n}from"./app.54944ef9.js";const k='{"title":"Asset Handling","description":"","frontmatter":{},"headers":[{"level":2,"title":"Public Files","slug":"public-files"},{"level":2,"title":"Base URL","slug":"base-url"}],"relativePath":"guide/assets.md","lastUpdated":1652768268000}',t={},o=n("",20),p=[o];function c(i,l,r,d,u,h){return s(),a("div",null,p)}var m=e(t,[["render",c]]);export{k as __pageData,m as default}; diff --git a/assets/guide_configuration.md.bb340dd8.js b/assets/guide_configuration.md.bb340dd8.js deleted file mode 100644 index cb38b199..00000000 --- a/assets/guide_configuration.md.bb340dd8.js +++ /dev/null @@ -1,39 +0,0 @@ -import{_ as n,c as s,o as e,a}from"./app.54944ef9.js";const h='{"title":"Configuration","description":"","frontmatter":{},"headers":[{"level":2,"title":"Overview","slug":"overview"},{"level":2,"title":"Config Intellisense","slug":"config-intellisense"},{"level":2,"title":"Typed Theme Config","slug":"typed-theme-config"}],"relativePath":"guide/configuration.md","lastUpdated":1652768268000}',t={},o=a(`

Configuration

Overview

Without any configuration, the page is pretty minimal, and the user has no way to navigate around the site. To customize your site, let\u2019s first create a .vitepress directory inside your docs directory. This is where all VitePress-specific files will be placed. Your project structure is probably like this:

.
-\u251C\u2500 docs
-\u2502  \u251C\u2500 .vitepress
-\u2502  \u2502  \u2514\u2500 config.js
-\u2502  \u2514\u2500 index.md
-\u2514\u2500 package.json
-

The essential file for configuring a VitePress site is .vitepress/config.js, which should export a JavaScript object:

export default {
-  title: 'Hello VitePress',
-  description: 'Just playing around.'
-}
-

Check out the Config Reference for a full list of options.

Config Intellisense

Since VitePress ships with TypeScript typings, you can leverage your IDE's intellisense with jsdoc type hints:

/**
- * @type {import('vitepress').UserConfig}
- */
-const config = {
-  // ...
-}
-
-export default config
-

Alternatively, you can use the defineConfig helper at which should provide intellisense without the need for jsdoc annotations:

import { defineConfig } from 'vitepress'
-
-export default defineConfig({
-  // ...
-})
-

VitePress also directly supports TS config files. You can use .vitepress/config.ts with the defineConfig helper as well.

Typed Theme Config

By default, defineConfig helper leverages the theme config type from default theme:

import { defineConfig } from 'vitepress'
-
-export default defineConfig({
-  themeConfig: {
-    // Type is \`DefaultTheme.Config\`
-  }
-})
-

If you use a custom theme and want type checks for the theme config, you'll need to use defineConfigWithTheme instead, and pass the config type for your custom theme via a generic argument:

import { defineConfigWithTheme } from 'vitepress'
-import { ThemeConfig } from 'your-theme'
-
-export default defineConfigWithTheme<ThemeConfig>({
-  themeConfig: {
-    // Type is \`ThemeConfig\`
-  }
-})
-
`,18),p=[o];function i(c,r,l,d,u,f){return e(),s("div",null,p)}var g=n(t,[["render",i]]);export{h as __pageData,g as default}; diff --git a/assets/guide_configuration.md.bb340dd8.lean.js b/assets/guide_configuration.md.bb340dd8.lean.js deleted file mode 100644 index 6ca35f91..00000000 --- a/assets/guide_configuration.md.bb340dd8.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,c as s,o as e,a}from"./app.54944ef9.js";const h='{"title":"Configuration","description":"","frontmatter":{},"headers":[{"level":2,"title":"Overview","slug":"overview"},{"level":2,"title":"Config Intellisense","slug":"config-intellisense"},{"level":2,"title":"Typed Theme Config","slug":"typed-theme-config"}],"relativePath":"guide/configuration.md","lastUpdated":1652768268000}',t={},o=a("",18),p=[o];function i(c,r,l,d,u,f){return e(),s("div",null,p)}var g=n(t,[["render",i]]);export{h as __pageData,g as default}; diff --git a/assets/guide_dashboard.md.82ab28f6.js b/assets/guide_dashboard.md.82ab28f6.js new file mode 100644 index 00000000..60d0b815 --- /dev/null +++ b/assets/guide_dashboard.md.82ab28f6.js @@ -0,0 +1,24 @@ +import{_ as e,c as a,o as n,a as t}from"./app.61e847e1.js";const k='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"guide/dashboard.md"}',s={},o=t(`

\u51C6\u5907\u5DE5\u4F5C


\u642D\u5EFA\u4E00\u4E2A\u54EA\u5412\u76D1\u63A7\uFF0C\u4F60\u9700\u8981\uFF1A

  1. \u4E00\u53F0\u53EF\u4EE5\u8FDE\u63A5\u516C\u7F51\u7684VPS\uFF0C\u9632\u706B\u5899\u548C\u5B89\u5168\u7B56\u7565\u9700\u8981\u653E\u884C8008\u548C5555\u7AEF\u53E3\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u8BBF\u95EE\u548C\u65E0\u6CD5\u63A5\u6536\u6570\u636E\u3002\u5355\u6838512MB\u5185\u5B58\u7684\u670D\u52A1\u5668\u914D\u7F6E\u5C31\u8DB3\u4EE5\u6EE1\u8DB3\u5927\u591A\u6570\u4F7F\u7528\u573A\u666F
  2. \u4E00\u4E2A\u5DF2\u7ECF\u8BBE\u7F6E\u597DA\u8BB0\u5F55\uFF0C\u6307\u5411Dashboard\u670D\u52A1\u5668ip\u7684\u57DF\u540D

TIP

\u5982\u679C\u4F60\u60F3\u4F7F\u7528CDN\uFF0C\u8BF7\u51C6\u5907\u4E24\u4E2A\u57DF\u540D\uFF0C\u4E00\u4E2A\u914D\u7F6E\u597DCDN\u7528\u4F5C\u516C\u5F00\u8BBF\u95EE\uFF0CCDN\u9700\u8981\u652F\u6301WebSocket\u534F\u8BAE\uFF1B\u53E6\u4E00\u4E2A\u57DF\u540D\u4E0D\u8981\u4F7F\u7528CDN\uFF0C\u7528\u4F5CAgent\u7AEF\u4E0EDashboard\u7684\u901A\u4FE1
\u672C\u6587\u6863\u5206\u522B\u4EE5 "cdn.example.com" \u548C "data.example.com" \u4E24\u4E2A\u57DF\u540D\u6765\u6F14\u793A

  1. \u4E00\u4E2AGithub/Gitee\u8D26\u53F7

\u672C\u6587\u6863\u5C06\u4EE5\u5B9D\u5854\u9762\u677F\u53CD\u4EE3\u9762\u677F\u7684\u8FC7\u7A0B\u4F5C\u4E3A\u8303\u4F8B\uFF0C\u968F\u7740\u672A\u6765\u7248\u672C\u7684\u53D8\u5316\uFF0C\u90E8\u5206\u529F\u80FD\u7684\u5165\u53E3\u53EF\u80FD\u4F1A\u53D1\u751F\u6539\u53D8\uFF0C\u672C\u6587\u6863\u4EC5\u4F9B\u53C2\u8003

\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5


\u54EA\u5412\u76D1\u63A7\u63A5\u5165Github\u548CGitee\u4F5C\u4E3A\u540E\u53F0\u7BA1\u7406\u5458\u8D26\u53F7

  • \u9996\u5148\u6211\u4EEC\u9700\u8981\u65B0\u5EFA\u4E00\u4E2A\u9A8C\u8BC1\u5E94\u7528\uFF0C\u4EE5Github\u4E3A\u4F8B\uFF0C\u767B\u9646Github\u540E\uFF0C\u6253\u5F00 https://github.com/settings/developers \uFF0C\u4F9D\u6B21\u9009\u62E9\u201COAuth Apps\u201D - \u201CNew OAuth App\u201D
    Application name - \u968F\u610F\u586B\u5199
    Homepage URL - \u586B\u5199\u9762\u677F\u7684\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982\uFF1A"http://cdn.example.com"
    Authorization callback URL - \u586B\u5199\u56DE\u8C03\u5730\u5740\uFF0C\u5982\uFF1A"http://cdn.example.com/oauth2/callback"
  • \u70B9\u51FB\u201CRegister application\u201D
  • \u4FDD\u5B58\u9875\u9762\u4E2D\u7684Client ID\uFF0C\u7136\u540E\u70B9\u51FB \u201CGenerate a new client secret\u201C\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684Client Secret\uFF0C\u65B0\u5EFA\u7684\u5BC6\u94A5\u4EC5\u4F1A\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58

\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard


  • \u5728\u9762\u677F\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u5B89\u88C5\u811A\u672C\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+

\u5982\u679C\u4F60\u7684\u9762\u677F\u670D\u52A1\u5668\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\uFF0C\u53EF\u4EE5\u4F7F\u7528\u955C\u50CF\uFF1A

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
+
  • \u7B49\u5F85Docker\u5B89\u88C5\u5B8C\u6BD5\u540E\uFF0C\u5206\u522B\u8F93\u5165\u4EE5\u4E0B\u503C\uFF1A
    OAuth\u63D0\u4F9B\u5546 - Github\u6216Gitee
    Client ID - \u4E4B\u524D\u4FDD\u5B58\u7684Client ID
    Client Secret - \u4E4B\u524D\u4FDD\u5B58\u7684\u5BC6\u94A5
    \u7528\u6237\u540D - Github\u6216Gitee\u7684\u7528\u6237\u540D
    \u7AD9\u70B9\u6807\u9898 - \u81EA\u5B9A\u4E49\u7AD9\u70B9\u6807\u9898
    \u8BBF\u95EE\u7AEF\u53E3 - \u516C\u5F00\u8BBF\u95EE\u7AEF\u53E3\uFF0C\u53EF\u81EA\u5B9A\u4E49\uFF0C\u9ED8\u8BA48008
    Agent\u7684\u901A\u4FE1\u7AEF\u53E3 - Agent\u4E0EDashboard\u7684\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA45555

  • \u8F93\u5165\u5B8C\u6210\u540E\uFF0C\u7B49\u5F85\u62C9\u53D6\u955C\u50CF
    \u5B89\u88C5\u7ED3\u675F\u540E\uFF0C\u5982\u679C\u4E00\u5207\u6B63\u5E38\uFF0C\u6B64\u65F6\u4F60\u53EF\u4EE5\u8BBF\u95EE\u57DF\u540D+\u7AEF\u53E3\u53F7\uFF0C\u5982 \u201Chttp://cdn.example.com:8008\u201D \u6765\u67E5\u770B\u9762\u677F

  • \u5C06\u6765\u5982\u679C\u9700\u8981\u518D\u6B21\u8FD0\u884C\u811A\u672C\uFF0C\u53EF\u4EE5\u8FD0\u884C\uFF1A

./nezha.sh
+

\u6765\u6253\u5F00\u7BA1\u7406\u811A\u672C


\u914D\u7F6E\u53CD\u5411\u4EE3\u7406


  • \u5728\u5B9D\u5854\u9762\u677F\u4E2D\u65B0\u5EFA\u4E00\u4E2A\u7AD9\u70B9\uFF0C\u57DF\u540D\u586B\u5199\u516C\u5F00\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982 \u201Chttp://cdn.example.com\u201C \uFF0C\u7136\u540E\u70B9\u51FB\u201C\u8BBE\u7F6E\u201D\u8FDB\u5165\u7AD9\u70B9\u8BBE\u7F6E\u9009\u9879\uFF0C\u9009\u62E9\u201C\u53CD\u5411\u4EE3\u7406\u201D - \u201C\u65B0\u5EFA\u53CD\u5411\u4EE3\u7406\u201D

  • \u81EA\u5B9A\u4E49\u4E00\u4E2A\u4EE3\u7406\u540D\u79F0\uFF0C\u5728\u4E0B\u65B9\u201C\u76EE\u6807URL\u201D\u4E2D\u586B\u5165 http://127.0.0.1 \u7136\u540E\u70B9\u51FB\u201C\u4FDD\u5B58\u201D

  • \u6253\u5F00\u521A\u521A\u65B0\u5EFA\u7684\u53CD\u5411\u4EE3\u7406\u53F3\u8FB9\u7684\u201C\u914D\u7F6E\u6587\u4EF6\u201D\uFF0C\u5C06\u914D\u7F6E\u6587\u4EF6\u66FF\u6362\u4E3A\u4EE5\u4E0B\u5185\u5BB9\uFF1A

#PROXY-START/
+location / {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_set_header Host $host;
+    proxy_set_header      Upgrade $http_upgrade;
+}
+location ~ ^/(ws|terminal/.+)$  {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "Upgrade";
+    proxy_set_header Host $host;
+}
+#PROXY-END/
+
  • \u70B9\u51FB\u201C\u4FDD\u5B58\u201D
    \u73B0\u5728\uFF0C\u4F60\u5E94\u8BE5\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u57DF\u540D\uFF0C\u5982\uFF1A\u201Chttp://cdn.example.com\u201C \u6765\u8BBF\u95EE\u9762\u677F\u4E86

\u6269\u5C55\u5185\u5BB9\uFF1A

  • CaddyServer v1\uFF08v2 \u65E0\u9700\u7279\u522B\u914D\u7F6E\uFF09

    proxy /ws http://ip:8008 {
    +    websocket
    +}
    +proxy /terminal/* http://ip:8008 {
    +    websocket
    +}
    +


\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL


\u9996\u5148\uFF0C\u5148\u6682\u65F6\u5173\u95ED\u53CD\u5411\u4EE3\u7406
\u6B63\u5982\u5728\u5176\u4ED6\u7F51\u7AD9\u4E2D\u914D\u7F6ESSL\u8BC1\u4E66\u4E00\u6837\uFF0C\u8FDB\u5165\u7AD9\u70B9\u8BBE\u7F6E\u4E2D\u7684\u201CSSL\u201D\uFF0C\u4F60\u53EF\u4EE5\u9009\u62E9\u81EA\u52A8\u7533\u8BF7 Let\xB4s Encrypt \u8BC1\u4E66\u6216\u624B\u52A8\u914D\u7F6E\u5DF2\u6709\u7684\u8BC1\u4E66
\u5B8C\u6210SSL\u7684\u8BBE\u7F6E\u540E\uFF0C\u4F60\u9700\u8981\u56DE\u5230 https://github.com/settings/developers \uFF0C\u7F16\u8F91\u4E4B\u524D\u521B\u5EFA\u7684\u9A8C\u8BC1\u5E94\u7528\u7A0B\u5E8F\uFF0C\u5C06\u4E4B\u524D\u6211\u4EEC\u586B\u5165\u7684"Homepage URL"\u548C"Authorization callback URL"\u4E2D\u7684\u57DF\u540D\u5168\u90E8\u4ECEhttp\u6539\u4E3Ahttps\uFF0C\u5982\uFF1A"https://cdn.example.com" \u548C "https://cdn.example.com/oauth2/callback" \uFF0C\u4E0D\u66F4\u6539\u6B64\u9879\u53EF\u80FD\u4F1A\u5BFC\u81F4\u4F60\u65E0\u6CD5\u767B\u9646\u9762\u677F\u540E\u53F0

`,32),r=[o];function p(l,c,i,d,h,u){return n(),a("div",null,r)}var m=e(s,[["render",p]]);export{k as __pageData,m as default}; diff --git a/assets/guide_dashboard.md.82ab28f6.lean.js b/assets/guide_dashboard.md.82ab28f6.lean.js new file mode 100644 index 00000000..7d7a9a61 --- /dev/null +++ b/assets/guide_dashboard.md.82ab28f6.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as n,a as t}from"./app.61e847e1.js";const k='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"guide/dashboard.md"}',s={},o=t("",32),r=[o];function p(l,c,i,d,h,u){return n(),a("div",null,r)}var m=e(s,[["render",p]]);export{k as __pageData,m as default}; diff --git a/assets/guide_deploy.md.661eacb4.js b/assets/guide_deploy.md.661eacb4.js deleted file mode 100644 index 8b361b2a..00000000 --- a/assets/guide_deploy.md.661eacb4.js +++ /dev/null @@ -1,101 +0,0 @@ -import{_ as e,c as s,o as n,a}from"./app.54944ef9.js";var t="/assets/vercel-configuration.e8badd11.png";const b='{"title":"Deploying","description":"","frontmatter":{"sidebarDepth":3},"headers":[{"level":2,"title":"Building The Docs","slug":"building-the-docs"},{"level":3,"title":"Testing The Docs Locally","slug":"testing-the-docs-locally"},{"level":2,"title":"GitHub Pages","slug":"github-pages"},{"level":3,"title":"GitHub Pages and Travis CI","slug":"github-pages-and-travis-ci"},{"level":2,"title":"GitLab Pages and GitLab CI","slug":"gitlab-pages-and-gitlab-ci"},{"level":2,"title":"Netlify","slug":"netlify"},{"level":2,"title":"Google Firebase","slug":"google-firebase"},{"level":2,"title":"Surge","slug":"surge"},{"level":2,"title":"Heroku","slug":"heroku"},{"level":2,"title":"Vercel","slug":"vercel"}],"relativePath":"guide/deploy.md","lastUpdated":1652768268000}',o={},p=a(`

Deploying

The following guides are based on some shared assumptions:

  • You are placing your docs inside the docs directory of your project;
  • You are using the default build output location (.vitepress/dist);
  • VitePress is installed as a local dependency in your project, and you have setup the following npm scripts:
{
-  "scripts": {
-    "docs:build": "vitepress build docs",
-    "docs:serve": "vitepress serve docs"
-  }
-}
-

Building The Docs

You may run yarn docs:build command to build the docs.

$ yarn docs:build
-

By default, the build output will be placed at .vitepress/dist. You may deploy this dist folder to any of your preferred platforms.

Testing The Docs Locally

Once you've built the docs, you may test them locally by running yarn docs:serve command.

$ yarn docs:build
-$ yarn docs:serve
-

The serve command will boot up local static web server that serves the files from .vitepress/dist at http://localhost:5000. It's an easy way to check if the production build looks OK in your local environment.

You may configure the port of the server py passing --port flag as an argument.

{
-  "scripts": {
-    "docs:serve": "vitepress serve docs --port 8080"
-  }
-}
-

Now the docs:serve method will launch the server at http://localhost:8080.

GitHub Pages

  1. Set the correct base in docs/.vitepress/config.js.

    If you are deploying to https://<USERNAME>.github.io/, you can omit base as it 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. Inside your project, create deploy.sh with the following content (with highlighted lines uncommented appropriately), and run it to deploy:













\xA0






\xA0


\xA0



#!/usr/bin/env sh
-
-# abort on errors
-set -e
-
-# build
-npm run docs:build
-
-# navigate into the build output directory
-cd docs/.vitepress/dist
-
-# if you are deploying to a custom domain
-# echo 'www.example.com' > CNAME
-
-git init
-git add -A
-git commit -m 'deploy'
-
-# if you are deploying to https://<USERNAME>.github.io
-# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git main
-
-# if you are deploying to https://<USERNAME>.github.io/<REPO>
-# git push -f git@github.com:<USERNAME>/<REPO>.git main:gh-pages
-
-cd -
-

TIP

You can also run the above script in your CI setup to enable automatic deployment on each push.

GitHub Pages and Travis CI

  1. Set the correct base in docs/.vitepress/config.js.

    If you are deploying to https://<USERNAME or GROUP>.github.io/, you can omit base as it defaults to '/'.

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

  2. Create a file named .travis.yml in the root of your project.

  3. Run yarn or npm install locally and commit the generated lockfile (that is yarn.lock or package-lock.json).

  4. Use the GitHub Pages deploy provider template, and follow the Travis CI documentation.

language: node_js
-node_js:
-  - lts/*
-install:
-  - yarn install # npm ci
-script:
-  - yarn docs:build # npm run docs:build
-deploy:
-  provider: pages
-  skip_cleanup: true
-  local_dir: docs/.vitepress/dist
-  # A token generated on GitHub allowing Travis to push code on you repository.
-  # Set in the Travis settings page of your repository, as a secure variable.
-  github_token: $GITHUB_TOKEN
-  keep_history: true
-  on:
-    branch: main
-

GitLab Pages and GitLab CI

  1. Set the correct base in docs/.vitepress/config.js.

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

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

  2. Set outDir in .vitepress/config.js to ../public.

  3. Create a file called .gitlab-ci.yml in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content:

image: node:16.5.0
-pages:
-  stage: deploy
-  cache:
-    paths:
-      - node_modules/
-  script:
-    - yarn install # npm install
-    - yarn docs:build # npm run docs:build
-  artifacts:
-    paths:
-      - public
-  rules:
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-

Netlify

  1. On Netlify, setup up a new project from GitHub with the following settings:
  • Build Command: vitepress build docs or yarn docs:build or npm run docs:build
  • Publish directory: docs/.vitepress/dist
  1. Hit the deploy button.

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/.vitepress/dist",
-    "ignore": []
-  }
-}
-

.firebaserc:

{
- "projects": {
-   "default": "<YOUR_FIREBASE_ID>"
- }
-}
-
  1. After running yarn docs:build or npm run docs:build, deploy using the command firebase deploy.

Surge

  1. First install surge, if you haven\u2019t already.

  2. Run yarn docs:build or npm run docs:build.

  3. Deploy to surge by typing surge docs/.vitepress/dist.

You can also deploy to a custom domain by adding surge docs/.vitepress/dist yourdomain.com.

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/.vitepress/dist"
-}
-

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

  1. Set up your Heroku git remote:
# version change
-$ git init
-$ git add .
-$ git commit -m "My site ready for deployment."
-
-# creates a new app with a specified name
-$ heroku apps:create example
-
-# set buildpack for static sites
-$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-static.git
-
  1. Deploy your site:
# publish site
-$ git push heroku main
-
-# opens a browser to view the Dashboard version of Heroku CI
-$ heroku open
-

Vercel

To deploy your VitePress app with a Vercel for Git, make sure it has been pushed to a Git repository.

Go to https://vercel.com/new and import the project into Vercel using your Git of choice (GitHub, GitLab or BitBucket). Follow the wizard to select the project root with the project's package.json and override the build step using yarn docs:build or npm run docs:build and the output dir to be ./docs/.vitepress/dist

After your project has been imported, all subsequent pushes to branches will generate Preview Deployments, and all changes made to the Production Branch (commonly "main") will result in a Production Deployment.

Once deployed, you will get a URL to see your app live, such as the following: https://vitepress.vercel.app

',56),c=[p];function l(i,r,d,u,h,g){return n(),s("div",null,c)}var y=e(o,[["render",l]]);export{b as __pageData,y as default}; diff --git a/assets/guide_deploy.md.661eacb4.lean.js b/assets/guide_deploy.md.661eacb4.lean.js deleted file mode 100644 index f6dd7f23..00000000 --- a/assets/guide_deploy.md.661eacb4.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as s,o as n,a}from"./app.54944ef9.js";var t="/assets/vercel-configuration.e8badd11.png";const b='{"title":"Deploying","description":"","frontmatter":{"sidebarDepth":3},"headers":[{"level":2,"title":"Building The Docs","slug":"building-the-docs"},{"level":3,"title":"Testing The Docs Locally","slug":"testing-the-docs-locally"},{"level":2,"title":"GitHub Pages","slug":"github-pages"},{"level":3,"title":"GitHub Pages and Travis CI","slug":"github-pages-and-travis-ci"},{"level":2,"title":"GitLab Pages and GitLab CI","slug":"gitlab-pages-and-gitlab-ci"},{"level":2,"title":"Netlify","slug":"netlify"},{"level":2,"title":"Google Firebase","slug":"google-firebase"},{"level":2,"title":"Surge","slug":"surge"},{"level":2,"title":"Heroku","slug":"heroku"},{"level":2,"title":"Vercel","slug":"vercel"}],"relativePath":"guide/deploy.md","lastUpdated":1652768268000}',o={},p=a("",56),c=[p];function l(i,r,d,u,h,g){return n(),s("div",null,c)}var y=e(o,[["render",l]]);export{b as __pageData,y as default}; diff --git a/assets/guide_differences-from-vuepress.md.459a9c4a.js b/assets/guide_differences-from-vuepress.md.459a9c4a.js deleted file mode 100644 index 2e599c19..00000000 --- a/assets/guide_differences-from-vuepress.md.459a9c4a.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as r,o as t,a}from"./app.54944ef9.js";const g='{"title":"Differences from VuePress","description":"","frontmatter":{"sidebarDepth":2},"headers":[{"level":2,"title":"General","slug":"general"},{"level":2,"title":"Markdown","slug":"markdown"},{"level":2,"title":"Site Config","slug":"site-config"},{"level":2,"title":"Default Theme Config","slug":"default-theme-config"},{"level":2,"title":"Default Theme","slug":"default-theme"},{"level":2,"title":"Computed Globals","slug":"computed-globals"},{"level":2,"title":"Frontmatter Predefined Variables","slug":"frontmatter-predefined-variables"},{"level":2,"title":"Frontmatter Default Theme Variables","slug":"frontmatter-default-theme-variables"},{"level":2,"title":"siteData","slug":"sitedata"},{"level":2,"title":"pageData","slug":"pagedata"},{"level":2,"title":"Global Components","slug":"global-components"}],"relativePath":"guide/differences-from-vuepress.md","lastUpdated":1652768268000}',o={},l=a('

Differences from VuePress

VitePress and VuePress have different design goals. Both projects share similar config naming conventions. VitePress aims to have the bare minimum features needed for authoring docs. Other features are pushed to Themes. On the other hand, VuePress has more features out-of-the-box or enabled by its ecosystem of plugins.

TIP

If you are using VuePress, there is no need to migrate to VitePress. Both projects are going to continue to co-exist for the foreseeable future.

WARNING

Note this is early WIP! Currently, the focus is on making Vite stable and feature-complete first. It is not recommended to use this for anything serious yet.

In case you decide to move your project to VitePress, this is a list of differences from VuePress v1.7.1 that you need to take into account.

General

Markdown

Site Config

Default Theme Config

Default Theme

Computed Globals

  • Missing
    • $lang
    • $localePath

Frontmatter Predefined Variables

Frontmatter Default Theme Variables

siteData

pageData

  • Missing
    • key
    • path
    • regularPath

Global Components

',27),s=[l];function i(n,d,c,u,h,p){return t(),r("div",null,s)}var m=e(o,[["render",i]]);export{g as __pageData,m as default}; diff --git a/assets/guide_differences-from-vuepress.md.459a9c4a.lean.js b/assets/guide_differences-from-vuepress.md.459a9c4a.lean.js deleted file mode 100644 index 34ff5270..00000000 --- a/assets/guide_differences-from-vuepress.md.459a9c4a.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as r,o as t,a}from"./app.54944ef9.js";const g='{"title":"Differences from VuePress","description":"","frontmatter":{"sidebarDepth":2},"headers":[{"level":2,"title":"General","slug":"general"},{"level":2,"title":"Markdown","slug":"markdown"},{"level":2,"title":"Site Config","slug":"site-config"},{"level":2,"title":"Default Theme Config","slug":"default-theme-config"},{"level":2,"title":"Default Theme","slug":"default-theme"},{"level":2,"title":"Computed Globals","slug":"computed-globals"},{"level":2,"title":"Frontmatter Predefined Variables","slug":"frontmatter-predefined-variables"},{"level":2,"title":"Frontmatter Default Theme Variables","slug":"frontmatter-default-theme-variables"},{"level":2,"title":"siteData","slug":"sitedata"},{"level":2,"title":"pageData","slug":"pagedata"},{"level":2,"title":"Global Components","slug":"global-components"}],"relativePath":"guide/differences-from-vuepress.md","lastUpdated":1652768268000}',o={},l=a("",27),s=[l];function i(n,d,c,u,h,p){return t(),r("div",null,s)}var m=e(o,[["render",i]]);export{g as __pageData,m as default}; diff --git a/assets/guide_frontmatter.md.07dc76f0.js b/assets/guide_frontmatter.md.07dc76f0.js deleted file mode 100644 index 26adb675..00000000 --- a/assets/guide_frontmatter.md.07dc76f0.js +++ /dev/null @@ -1,28 +0,0 @@ -import{_ as e,c as a,o as n,a as t}from"./app.54944ef9.js";const f='{"title":"Frontmatter","description":"","frontmatter":{},"headers":[{"level":2,"title":"Alternative frontmatter Formats","slug":"alternative-frontmatter-formats"},{"level":2,"title":"Predefined Variables","slug":"predefined-variables"},{"level":3,"title":"title","slug":"title"},{"level":3,"title":"head","slug":"head"},{"level":3,"title":"navbar","slug":"navbar"},{"level":3,"title":"sidebar","slug":"sidebar"},{"level":3,"title":"editLink","slug":"editlink"}],"relativePath":"guide/frontmatter.md","lastUpdated":1652768268000}',s={},o=t(`

Frontmatter

Any Markdown file that contains a YAML frontmatter block will be processed by gray-matter. The frontmatter must be at the top of the Markdown file, and must take the form of valid YAML set between triple-dashed lines. Example:

---
-title: Docs with VitePress
-editLink: true
----
-

Between the triple-dashed lines, you can set predefined variables, or even create custom ones of your own. These variables can be used via the special $frontmatter variable.

Here\u2019s an example of how you could use it in your Markdown file:

---
-title: Docs with VitePress
-editLink: true
----
-
-# {{ $frontmatter.title }}
-
-Guide content
-

Alternative frontmatter Formats

VitePress also supports JSON frontmatter syntax, starting and ending in curly braces:

---
-{
-  "title": "Blogging Like a Hacker",
-  "editLink": true
-}
----
-

Predefined Variables

title

  • Type: string
  • Default: h1_title || siteData.title

Title of the current page.

  • Type: array
  • Default: undefined

Specify extra head tags to be injected:

---
-head:
-  - - meta
-    - name: description
-      content: hello
-  - - meta
-    - name: keywords
-      content: super duper SEO
----
-
  • Type: boolean
  • Default: undefined

You can disable the navbar on a specific page with navbar: false

  • Type: boolean|'auto'
  • Default: undefined

You can decide to show the sidebar on a specific page with sidebar: auto or disable it with sidebar: false

  • Type: boolean
  • Default: undefined

Define if this page should include an edit link.

`,26),i=[o];function l(r,p,c,d,u,h){return n(),a("div",null,i)}var m=e(s,[["render",l]]);export{f as __pageData,m as default}; diff --git a/assets/guide_frontmatter.md.07dc76f0.lean.js b/assets/guide_frontmatter.md.07dc76f0.lean.js deleted file mode 100644 index 4562a207..00000000 --- a/assets/guide_frontmatter.md.07dc76f0.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as n,a as t}from"./app.54944ef9.js";const f='{"title":"Frontmatter","description":"","frontmatter":{},"headers":[{"level":2,"title":"Alternative frontmatter Formats","slug":"alternative-frontmatter-formats"},{"level":2,"title":"Predefined Variables","slug":"predefined-variables"},{"level":3,"title":"title","slug":"title"},{"level":3,"title":"head","slug":"head"},{"level":3,"title":"navbar","slug":"navbar"},{"level":3,"title":"sidebar","slug":"sidebar"},{"level":3,"title":"editLink","slug":"editlink"}],"relativePath":"guide/frontmatter.md","lastUpdated":1652768268000}',s={},o=t("",26),i=[o];function l(r,p,c,d,u,h){return n(),a("div",null,i)}var m=e(s,[["render",l]]);export{f as __pageData,m as default}; diff --git a/assets/guide_getting-started.md.f9753073.js b/assets/guide_getting-started.md.f9753073.js deleted file mode 100644 index 0882f31e..00000000 --- a/assets/guide_getting-started.md.f9753073.js +++ /dev/null @@ -1,13 +0,0 @@ -import{_ as s,c as e,o as t,a}from"./app.54944ef9.js";const h='{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","lastUpdated":1652768268000}',n={},o=a(`

Getting Started

This section will help you build a basic VitePress documentation site from ground up. If you already have an existing project and would like to keep documentation inside the project, start from Step 3.

  • Step. 1: Create and change into a new directory.

    $ mkdir vitepress-starter && cd vitepress-starter
    -
  • Step. 2: Initialize with your preferred package manager.

    $ yarn init
    -
  • Step. 3: Install VitePress locally.

    $ yarn add --dev vitepress
    -
  • Step. 4: Create your first document.

    $ mkdir docs && echo '# Hello VitePress' > docs/index.md
    -
  • Step. 5: Add some scripts to package.json.

    {
    -  "scripts": {
    -    "docs:dev": "vitepress dev docs",
    -    "docs:build": "vitepress build docs",
    -    "docs:serve": "vitepress serve docs"
    -  }
    -}
    -
  • Step. 6: Serve the documentation site in the local server.

    $ yarn docs:dev
    -

    VitePress will start a hot-reloading development server at http://localhost:3000.

By now, you should have a basic but functional VitePress documentation site.

When your documentation site starts to take shape, be sure to read the deployment guide.

`,5),p=[o];function r(i,c,d,l,u,g){return t(),e("div",null,p)}var v=s(n,[["render",r]]);export{h as __pageData,v as default}; diff --git a/assets/guide_getting-started.md.f9753073.lean.js b/assets/guide_getting-started.md.f9753073.lean.js deleted file mode 100644 index d0923e05..00000000 --- a/assets/guide_getting-started.md.f9753073.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as e,o as t,a}from"./app.54944ef9.js";const h='{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","lastUpdated":1652768268000}',n={},o=a("",5),p=[o];function r(i,c,d,l,u,g){return t(),e("div",null,p)}var v=s(n,[["render",r]]);export{h as __pageData,v as default}; diff --git a/assets/guide_global-component.md.01405ea5.js b/assets/guide_global-component.md.01405ea5.js deleted file mode 100644 index 9bc1bf93..00000000 --- a/assets/guide_global-component.md.01405ea5.js +++ /dev/null @@ -1,8 +0,0 @@ -import{_ as n,c as t,o as e,a}from"./app.54944ef9.js";const k='{"title":"Global Component","description":"","frontmatter":{},"headers":[{"level":2,"title":"Content","slug":"content"},{"level":2,"title":"ClientOnly","slug":"clientonly"},{"level":2,"title":"OutboundLink","slug":"outboundlink"}],"relativePath":"guide/global-component.md","lastUpdated":1652768268000}',s={},o=a(`

Global Component

VitePress comes with few built-in component that can be used globally. You may use these components in your markdown or your custom theme configuration.

Content

The Content component displays the rendered markdown contents. Useful when creating your own theme.

<template>
-  <h1>Custom Layout!</h1>
-  <Content />
-</template>
-

ClientOnly

The ClientOnly component renderes its slot only at client side.

Because VitePress applications are server-rendered in Node.js when generating static builds, any Vue usage must conform to the universal code requirements. In short, make sure to only access Browser / DOM APIs in beforeMount or mounted hooks.

If you are using or demoing components that are not SSR-friendly (for example, contain custom directives), you can wrap them inside the ClientOnly component.

<ClientOnly>
-  <NonSSRFriendlyComponent />
-</ClientOnly>
-

The indicator OutboundLink is used to denote external links. In VitePress, this component has been followed by every external link.

`,12),l=[o];function p(c,i,r,u,d,h){return e(),t("div",null,l)}var m=n(s,[["render",p]]);export{k as __pageData,m as default}; diff --git a/assets/guide_global-component.md.01405ea5.lean.js b/assets/guide_global-component.md.01405ea5.lean.js deleted file mode 100644 index 006eb849..00000000 --- a/assets/guide_global-component.md.01405ea5.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,c as t,o as e,a}from"./app.54944ef9.js";const k='{"title":"Global Component","description":"","frontmatter":{},"headers":[{"level":2,"title":"Content","slug":"content"},{"level":2,"title":"ClientOnly","slug":"clientonly"},{"level":2,"title":"OutboundLink","slug":"outboundlink"}],"relativePath":"guide/global-component.md","lastUpdated":1652768268000}',s={},o=a("",12),l=[o];function p(c,i,r,u,d,h){return e(),t("div",null,l)}var m=n(s,[["render",p]]);export{k as __pageData,m as default}; diff --git a/assets/guide_markdown.md.6ff83e9e.js b/assets/guide_markdown.md.6ff83e9e.js deleted file mode 100644 index 8b8ba127..00000000 --- a/assets/guide_markdown.md.6ff83e9e.js +++ /dev/null @@ -1,162 +0,0 @@ -import{_ as a,c as e,o as t,a as o}from"./app.54944ef9.js";var n="/assets/line-numbers-mobile.f5ca96ee.gif",s="/assets/line-numbers-desktop.cc304762.png";const v='{"title":"Markdown Extensions","description":"","frontmatter":{"sidebarDepth":3},"headers":[{"level":2,"title":"Header Anchors","slug":"header-anchors"},{"level":2,"title":"Links","slug":"links"},{"level":3,"title":"Internal Links","slug":"internal-links"},{"level":3,"title":"Page Suffix","slug":"page-suffix"},{"level":3,"title":"External Links","slug":"external-links"},{"level":2,"title":"Frontmatter","slug":"frontmatter"},{"level":2,"title":"GitHub-Style Tables","slug":"github-style-tables"},{"level":2,"title":"Emoji \u{1F389}","slug":"emoji"},{"level":2,"title":"Table of Contents","slug":"table-of-contents"},{"level":2,"title":"Custom Containers","slug":"custom-containers"},{"level":3,"title":"Default Title","slug":"default-title"},{"level":3,"title":"Custom Title","slug":"custom-title"},{"level":2,"title":"Syntax Highlighting in Code Blocks","slug":"syntax-highlighting-in-code-blocks"},{"level":2,"title":"Line Highlighting in Code Blocks","slug":"line-highlighting-in-code-blocks"},{"level":2,"title":"Line Numbers","slug":"line-numbers"},{"level":2,"title":"Import Code Snippets","slug":"import-code-snippets"},{"level":2,"title":"Advanced Configuration","slug":"advanced-configuration"}],"relativePath":"guide/markdown.md","lastUpdated":1652768268000}',p={},i=n,l=s,r=o(`

Markdown Extensions

Header Anchors

Headers automatically get anchor links applied. Rendering of anchors can be configured using the markdown.anchor option.

Internal links are converted to router link for SPA navigation. Also, every index.md contained in each sub-directory will automatically be converted to index.html, with corresponding URL /.

For example, given the following directory structure:

.
-\u251C\u2500 index.md
-\u251C\u2500 foo
-\u2502  \u251C\u2500 index.md
-\u2502  \u251C\u2500 one.md
-\u2502  \u2514\u2500 two.md
-\u2514\u2500 bar
-   \u251C\u2500 index.md
-   \u251C\u2500 three.md
-   \u2514\u2500 four.md
-

And providing you are in foo/one.md:

[Home](/) <!-- sends the user to the root index.md -->
-[foo](/foo/) <!-- sends the user to index.html of directory foo -->
-[foo heading](./#heading) <!-- anchors user to a heading in the foo index file -->
-[bar - three](../bar/three) <!-- you can omit extention -->
-[bar - three](../bar/three.md) <!-- you can append .md -->
-[bar - four](../bar/four.html) <!-- or you can append .html -->
-

Page Suffix

Pages and internal links get generated with the .html suffix by default.

Outbound links automatically get target="_blank" rel="noopener noreferrer":

Frontmatter

YAML frontmatter is supported out of the box:

---
-title: Blogging Like a Hacker
-lang: en-US
----
-

This data will be available to the rest of the page, along with all custom and theming components.

For more details, see Frontmatter.

GitHub-Style Tables

Input

| Tables        | Are           | Cool  |
-| ------------- |:-------------:| -----:|
-| col 3 is      | right-aligned | $1600 |
-| col 2 is      | centered      |   $12 |
-| zebra stripes | are neat      |    $1 |
-

Output

TablesAreCool
col 3 isright-aligned$1600
col 2 iscentered$12
zebra stripesare neat$1

Emoji \u{1F389}

Input

:tada: :100:
-

Output

\u{1F389} \u{1F4AF}

A list of all emojis is available.

Table of Contents

Input

[[toc]]
-

Output

Rendering of the TOC can be configured using the markdown.toc option.

Custom Containers

Custom containers can be defined by their types, titles, and contents.

Default Title

Input

::: tip
-This is a tip
-:::
-
-::: info
-This is an info box
-:::
-
-::: warning
-This is a warning
-:::
-
-::: danger
-This is a dangerous warning
-:::
-
-::: details
-This is a details block, which does not work in Internet Explorer or old versions of Edge.
-:::
-

Output

TIP

This is a tip

INFO

This is an info box

WARNING

This is a warning

WARNING

This is a dangerous warning

This is a details block, which does not work in Internet Explorer or Edge.

Custom Title

Input

::: danger STOP
-Danger zone, do not proceed
-:::
-
-::: details Click me to view the code
-
-\`\`\`js
-console.log('Hello, VitePress!')
-\`\`\`
-
-:::
-

Output

STOP

Danger zone, do not proceed

Click me to view the code
console.log('Hello, VitePress!')
-

Syntax Highlighting in Code Blocks

VitePress uses Prism to highlight language syntax in Markdown code blocks, using coloured text. Prism supports a wide variety of programming languages. All you need to do is append a valid language alias to the beginning backticks for the code block:

Input

\`\`\`js
-export default {
-  name: 'MyComponent',
-  // ...
-}
-\`\`\`
-

Output

export default {
-  name: 'MyComponent'
-  // ...
-}
-

Input

\`\`\`html
-<ul>
-  <li v-for="todo in todos" :key="todo.id">
-    {{ todo.text }}
-  </li>
-</ul>
-\`\`\`
-

Output

<ul>
-  <li v-for="todo in todos" :key="todo.id">{{ todo.text }}</li>
-</ul>
-

A list of valid languages is available on Prism\u2019s site.

Line Highlighting in Code Blocks

Input

\`\`\`js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-\`\`\`
-

Output




\xA0




export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-

In addition to a single line, you can also specify multiple single lines, ranges, or both:

  • Line ranges: for example {5-8}, {3-10}, {10-17}
  • Multiple single lines: for example {4,7,9}
  • Line ranges and single lines: for example {4,7-13,16,23-27,40}

Input

\`\`\`js{1,4,6-7}
-export default { // Highlighted
-  data () {
-    return {
-      msg: \`Highlighted!
-      This line isn't highlighted,
-      but this and the next 2 are.\`,
-      motd: 'VitePress is awesome',
-      lorem: 'ipsum',
-    }
-  }
-}
-\`\`\`
-

Output

\xA0


\xA0

\xA0
\xA0
\xA0




export default { // Highlighted
-  data () {
-    return {
-      msg: \`Highlighted!
-      This line isn't highlighted,
-      but this and the next 2 are.\`,
-      motd: 'VitePress is awesome',
-      lorem: 'ipsum',
-    }
-  }
-}
-

Line Numbers

You can enable line numbers for each code blocks via config:

module.exports = {
-  markdown: {
-    lineNumbers: true
-  }
-}
-
  • Demo:
ImageImage

Import Code Snippets

You can import code snippets from existing files via following syntax:

<<< @/filepath
-

It also supports line highlighting:

<<< @/filepath{highlightLines}
-

Input

<<< @/snippets/snippet.js{2}
-

Code file

export default function () {
-  // ..
-}
-

Output


\xA0


export default function () {
-  // ..
-}
-

TIP

The value of @ corresponds to the source root. By default it's the VitePress project root, unless srcDir is configured.

You can also use a VS Code region to only include the corresponding part of the code file. You can provide a custom region name after a # following the filepath (snippet by default):

Input

<<< @/snippets/snippet-with-region.js{1}
-

Code file

// #region snippet
-function foo() {
-  // ..
-}
-// #endregion snippet
-
-export default foo
-

Output

\xA0


function foo() {
-  // ..
-}

Advanced Configuration

VitePress uses markdown-it as the Markdown renderer. A lot of the extensions above are implemented via custom plugins. You can further customize the markdown-it instance using the markdown option in .vitepress/config.js:

const anchor = require('markdown-it-anchor')
-
-module.exports = {
-  markdown: {
-    // options for markdown-it-anchor
-    // https://github.com/valeriangalliat/markdown-it-anchor#permalinks
-    anchor: {
-      permalink: anchor.permalink.headerLink()
-    },
-
-    // options for markdown-it-table-of-contents
-    toc: { includeLevel: [1, 2] },
-
-    config: (md) => {
-      // use more markdown-it plugins!
-      md.use(require('markdown-it-xxx'))
-    }
-  }
-}
-
`,104),c=[r];function d(u,g,h,k,m,f){return t(),e("div",null,c)}var y=a(p,[["render",d]]);export{v as __pageData,y as default}; diff --git a/assets/guide_markdown.md.6ff83e9e.lean.js b/assets/guide_markdown.md.6ff83e9e.lean.js deleted file mode 100644 index 2c1addd2..00000000 --- a/assets/guide_markdown.md.6ff83e9e.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as e,o as t,a as o}from"./app.54944ef9.js";var n="/assets/line-numbers-mobile.f5ca96ee.gif",s="/assets/line-numbers-desktop.cc304762.png";const v='{"title":"Markdown Extensions","description":"","frontmatter":{"sidebarDepth":3},"headers":[{"level":2,"title":"Header Anchors","slug":"header-anchors"},{"level":2,"title":"Links","slug":"links"},{"level":3,"title":"Internal Links","slug":"internal-links"},{"level":3,"title":"Page Suffix","slug":"page-suffix"},{"level":3,"title":"External Links","slug":"external-links"},{"level":2,"title":"Frontmatter","slug":"frontmatter"},{"level":2,"title":"GitHub-Style Tables","slug":"github-style-tables"},{"level":2,"title":"Emoji \u{1F389}","slug":"emoji"},{"level":2,"title":"Table of Contents","slug":"table-of-contents"},{"level":2,"title":"Custom Containers","slug":"custom-containers"},{"level":3,"title":"Default Title","slug":"default-title"},{"level":3,"title":"Custom Title","slug":"custom-title"},{"level":2,"title":"Syntax Highlighting in Code Blocks","slug":"syntax-highlighting-in-code-blocks"},{"level":2,"title":"Line Highlighting in Code Blocks","slug":"line-highlighting-in-code-blocks"},{"level":2,"title":"Line Numbers","slug":"line-numbers"},{"level":2,"title":"Import Code Snippets","slug":"import-code-snippets"},{"level":2,"title":"Advanced Configuration","slug":"advanced-configuration"}],"relativePath":"guide/markdown.md","lastUpdated":1652768268000}',p={},i=n,l=s,r=o("",104),c=[r];function d(u,g,h,k,m,f){return t(),e("div",null,c)}var y=a(p,[["render",d]]);export{v as __pageData,y as default}; diff --git a/assets/guide_notifications.md.cda2998f.js b/assets/guide_notifications.md.cda2998f.js new file mode 100644 index 00000000..12bf8bea --- /dev/null +++ b/assets/guide_notifications.md.cda2998f.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"\u901A\u77E5","description":"","frontmatter":{},"headers":[],"relativePath":"guide/notifications.md"}',s={},n=e("h1",{id:"\u901A\u77E5",tabindex:"-1"},[r("\u901A\u77E5 "),e("a",{class:"header-anchor",href:"#\u901A\u77E5","aria-hidden":"true"},"#")],-1),c=[n];function i(d,_,f,h,p,l){return o(),a("div",null,c)}var x=t(s,[["render",i]]);export{m as __pageData,x as default}; diff --git a/assets/guide_notifications.md.cda2998f.lean.js b/assets/guide_notifications.md.cda2998f.lean.js new file mode 100644 index 00000000..12bf8bea --- /dev/null +++ b/assets/guide_notifications.md.cda2998f.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"\u901A\u77E5","description":"","frontmatter":{},"headers":[],"relativePath":"guide/notifications.md"}',s={},n=e("h1",{id:"\u901A\u77E5",tabindex:"-1"},[r("\u901A\u77E5 "),e("a",{class:"header-anchor",href:"#\u901A\u77E5","aria-hidden":"true"},"#")],-1),c=[n];function i(d,_,f,h,p,l){return o(),a("div",null,c)}var x=t(s,[["render",i]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q1.md.9646973a.js b/assets/guide_q1.md.9646973a.js new file mode 100644 index 00000000..c9ddf711 --- /dev/null +++ b/assets/guide_q1.md.9646973a.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98981","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q1.md"}',s={},c=e("h1",{id:"\u95EE\u98981",tabindex:"-1"},[o("\u95EE\u98981 "),e("a",{class:"header-anchor",href:"#\u95EE\u98981","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q1.md.9646973a.lean.js b/assets/guide_q1.md.9646973a.lean.js new file mode 100644 index 00000000..c9ddf711 --- /dev/null +++ b/assets/guide_q1.md.9646973a.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98981","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q1.md"}',s={},c=e("h1",{id:"\u95EE\u98981",tabindex:"-1"},[o("\u95EE\u98981 "),e("a",{class:"header-anchor",href:"#\u95EE\u98981","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q2.md.85a6bba5.js b/assets/guide_q2.md.85a6bba5.js new file mode 100644 index 00000000..b2c1a24e --- /dev/null +++ b/assets/guide_q2.md.85a6bba5.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98982","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q2.md"}',s={},c=e("h1",{id:"\u95EE\u98982",tabindex:"-1"},[o("\u95EE\u98982 "),e("a",{class:"header-anchor",href:"#\u95EE\u98982","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q2.md.85a6bba5.lean.js b/assets/guide_q2.md.85a6bba5.lean.js new file mode 100644 index 00000000..b2c1a24e --- /dev/null +++ b/assets/guide_q2.md.85a6bba5.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98982","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q2.md"}',s={},c=e("h1",{id:"\u95EE\u98982",tabindex:"-1"},[o("\u95EE\u98982 "),e("a",{class:"header-anchor",href:"#\u95EE\u98982","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q3.md.923aa0b4.js b/assets/guide_q3.md.923aa0b4.js new file mode 100644 index 00000000..7a6f6eb5 --- /dev/null +++ b/assets/guide_q3.md.923aa0b4.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98983","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q3.md"}',s={},c=e("h1",{id:"\u95EE\u98983",tabindex:"-1"},[o("\u95EE\u98983 "),e("a",{class:"header-anchor",href:"#\u95EE\u98983","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q3.md.923aa0b4.lean.js b/assets/guide_q3.md.923aa0b4.lean.js new file mode 100644 index 00000000..7a6f6eb5 --- /dev/null +++ b/assets/guide_q3.md.923aa0b4.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98983","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q3.md"}',s={},c=e("h1",{id:"\u95EE\u98983",tabindex:"-1"},[o("\u95EE\u98983 "),e("a",{class:"header-anchor",href:"#\u95EE\u98983","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q4.md.45e92b83.js b/assets/guide_q4.md.45e92b83.js new file mode 100644 index 00000000..d02a1af5 --- /dev/null +++ b/assets/guide_q4.md.45e92b83.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98984","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q4.md"}',s={},c=e("h1",{id:"\u95EE\u98984",tabindex:"-1"},[o("\u95EE\u98984 "),e("a",{class:"header-anchor",href:"#\u95EE\u98984","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q4.md.45e92b83.lean.js b/assets/guide_q4.md.45e92b83.lean.js new file mode 100644 index 00000000..d02a1af5 --- /dev/null +++ b/assets/guide_q4.md.45e92b83.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98984","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q4.md"}',s={},c=e("h1",{id:"\u95EE\u98984",tabindex:"-1"},[o("\u95EE\u98984 "),e("a",{class:"header-anchor",href:"#\u95EE\u98984","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q5.md.49c9a914.js b/assets/guide_q5.md.49c9a914.js new file mode 100644 index 00000000..fe8a083c --- /dev/null +++ b/assets/guide_q5.md.49c9a914.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98985","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q5.md"}',s={},c=e("h1",{id:"\u95EE\u98985",tabindex:"-1"},[o("\u95EE\u98985 "),e("a",{class:"header-anchor",href:"#\u95EE\u98985","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q5.md.49c9a914.lean.js b/assets/guide_q5.md.49c9a914.lean.js new file mode 100644 index 00000000..fe8a083c --- /dev/null +++ b/assets/guide_q5.md.49c9a914.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as o}from"./app.61e847e1.js";const m='{"title":"\u95EE\u98985","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q5.md"}',s={},c=e("h1",{id:"\u95EE\u98985",tabindex:"-1"},[o("\u95EE\u98985 "),e("a",{class:"header-anchor",href:"#\u95EE\u98985","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_servers.md.d6809f62.js b/assets/guide_servers.md.d6809f62.js new file mode 100644 index 00000000..49084240 --- /dev/null +++ b/assets/guide_servers.md.d6809f62.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as s}from"./app.61e847e1.js";const m='{"title":"\u670D\u52A1\u5668","description":"","frontmatter":{},"headers":[],"relativePath":"guide/servers.md"}',o={},c=e("h1",{id:"\u670D\u52A1\u5668",tabindex:"-1"},[s("\u670D\u52A1\u5668 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1\u5668","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_servers.md.d6809f62.lean.js b/assets/guide_servers.md.d6809f62.lean.js new file mode 100644 index 00000000..49084240 --- /dev/null +++ b/assets/guide_servers.md.d6809f62.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as s}from"./app.61e847e1.js";const m='{"title":"\u670D\u52A1\u5668","description":"","frontmatter":{},"headers":[],"relativePath":"guide/servers.md"}',o={},c=e("h1",{id:"\u670D\u52A1\u5668",tabindex:"-1"},[s("\u670D\u52A1\u5668 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1\u5668","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_services.md.765b29a2.js b/assets/guide_services.md.765b29a2.js new file mode 100644 index 00000000..cc20b1a9 --- /dev/null +++ b/assets/guide_services.md.765b29a2.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as s}from"./app.61e847e1.js";const m='{"title":"\u670D\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/services.md"}',o={},c=e("h1",{id:"\u670D\u52A1",tabindex:"-1"},[s("\u670D\u52A1 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_services.md.765b29a2.lean.js b/assets/guide_services.md.765b29a2.lean.js new file mode 100644 index 00000000..cc20b1a9 --- /dev/null +++ b/assets/guide_services.md.765b29a2.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,b as e,d as s}from"./app.61e847e1.js";const m='{"title":"\u670D\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/services.md"}',o={},c=e("h1",{id:"\u670D\u52A1",tabindex:"-1"},[s("\u670D\u52A1 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_settings.md.10730c80.js b/assets/guide_settings.md.10730c80.js new file mode 100644 index 00000000..3cf440a5 --- /dev/null +++ b/assets/guide_settings.md.10730c80.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"\u8BBE\u7F6E","description":"","frontmatter":{},"headers":[],"relativePath":"guide/settings.md"}',o={},n=e("h1",{id:"\u8BBE\u7F6E",tabindex:"-1"},[r("\u8BBE\u7F6E "),e("a",{class:"header-anchor",href:"#\u8BBE\u7F6E","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,h,p,l,f){return s(),a("div",null,c)}var x=t(o,[["render",d]]);export{m as __pageData,x as default}; diff --git a/assets/guide_settings.md.10730c80.lean.js b/assets/guide_settings.md.10730c80.lean.js new file mode 100644 index 00000000..3cf440a5 --- /dev/null +++ b/assets/guide_settings.md.10730c80.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"\u8BBE\u7F6E","description":"","frontmatter":{},"headers":[],"relativePath":"guide/settings.md"}',o={},n=e("h1",{id:"\u8BBE\u7F6E",tabindex:"-1"},[r("\u8BBE\u7F6E "),e("a",{class:"header-anchor",href:"#\u8BBE\u7F6E","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,h,p,l,f){return s(),a("div",null,c)}var x=t(o,[["render",d]]);export{m as __pageData,x as default}; diff --git a/assets/guide_tasks.md.29cf7921.js b/assets/guide_tasks.md.29cf7921.js new file mode 100644 index 00000000..6a5d2441 --- /dev/null +++ b/assets/guide_tasks.md.29cf7921.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"\u4EFB\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',o={},c=e("h1",{id:"\u4EFB\u52A1",tabindex:"-1"},[r("\u4EFB\u52A1 "),e("a",{class:"header-anchor",href:"#\u4EFB\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return s(),a("div",null,d)}var x=t(o,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_tasks.md.29cf7921.lean.js b/assets/guide_tasks.md.29cf7921.lean.js new file mode 100644 index 00000000..6a5d2441 --- /dev/null +++ b/assets/guide_tasks.md.29cf7921.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,b as e,d as r}from"./app.61e847e1.js";const m='{"title":"\u4EFB\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',o={},c=e("h1",{id:"\u4EFB\u52A1",tabindex:"-1"},[r("\u4EFB\u52A1 "),e("a",{class:"header-anchor",href:"#\u4EFB\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return s(),a("div",null,d)}var x=t(o,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_theming.md.b28ff51e.js b/assets/guide_theming.md.b28ff51e.js deleted file mode 100644 index 703222e5..00000000 --- a/assets/guide_theming.md.b28ff51e.js +++ /dev/null @@ -1,79 +0,0 @@ -import{_ as n,c as s,o as a,a as e}from"./app.54944ef9.js";const h='{"title":"Theming","description":"","frontmatter":{},"headers":[{"level":2,"title":"Using a Custom Theme","slug":"using-a-custom-theme"},{"level":2,"title":"Extending the Default Theme","slug":"extending-the-default-theme"},{"level":3,"title":"Registering Global Components","slug":"registering-global-components"},{"level":3,"title":"Customizing CSS","slug":"customizing-css"},{"level":3,"title":"Layout Slots","slug":"layout-slots"}],"relativePath":"guide/theming.md","lastUpdated":1652768268000}',t={},o=e(`

Theming

Using a Custom Theme

You can enable a custom theme by adding the .vitepress/theme/index.js file (the "theme entry file").

.
-\u251C\u2500 docs
-\u2502  \u251C\u2500 .vitepress
-\u2502  \u2502  \u251C\u2500 theme
-\u2502  \u2502  \u2502  \u2514\u2500 index.js
-\u2502  \u2502  \u2514\u2500 config.js
-\u2502  \u2514\u2500 index.md
-\u2514\u2500 package.json
-

A VitePress custom theme is simply an object containing three properties and is defined as follows:

interface Theme {
-  Layout: Component // Vue 3 component
-  NotFound?: Component
-  enhanceApp?: (ctx: EnhanceAppContext) => void
-}
-
-interface EnhanceAppContext {
-  app: App // Vue 3 app instance
-  router: Router // VitePress router instance
-  siteData: Ref<SiteData>
-}
-

The theme entry file should export the theme as its default export:

// .vitepress/theme/index.js
-import Layout from './Layout.vue'
-
-export default {
-  Layout,
-  NotFound: () => 'custom 404', // <- this is a Vue 3 functional component
-  enhanceApp({ app, router, siteData }) {
-    // app is the Vue 3 app instance from \`createApp()\`. router is VitePress'
-    // custom router. \`siteData\` is a \`ref\` of current site-level metadata.
-  }
-}
-

...where the Layout component could look like this:

<!-- .vitepress/theme/Layout.vue -->
-<template>
-  <h1>Custom Layout!</h1>
-  <Content /><!-- this is where markdown content will be rendered -->
-</template>
-

The default export is the only contract for a custom theme. Inside your custom theme, it works just like a normal Vite + Vue 3 application. Do note the theme also needs to be SSR-compatible.

To distribute a theme, simply export the object in your package entry. To consume an external theme, import and re-export it from the custom theme entry:

// .vitepress/theme/index.js
-import Theme from 'awesome-vitepress-theme'
-export default Theme
-

Extending the Default Theme

If you want to extend and customize the default theme, you can import it from vitepress/theme and augment it in a custom theme entry. Here are some examples of common customizations:

Registering Global Components

// .vitepress/theme/index.js
-import DefaultTheme from 'vitepress/theme'
-
-export default {
-  ...DefaultTheme,
-  enhanceApp({ app }) {
-    // register global components
-    app.component('MyGlobalComponent' /* ... */)
-  }
-}
-

Since we are using Vite, you can also leverage Vite's glob import feature to auto register a directory of components.

Customizing CSS

The default theme CSS is customizable by overriding root level CSS variables:

// .vitepress/theme/index.js
-import DefaultTheme from 'vitepress/theme'
-import './custom.css'
-
-export default DefaultTheme
-
/* .vitepress/theme/custom.css */
-:root {
-  --c-brand: #646cff;
-  --c-brand-light: #747bff;
-}
-

See default theme CSS variables that can be overridden.

Layout Slots

The default theme's <Layout/> component has a few slots that can be used to inject content at certain locations of the page. Here's an example of injecting a component into the top of the sidebar:

// .vitepress/theme/index.js
-import DefaultTheme from 'vitepress/theme'
-import MyLayout from './MyLayout.vue'
-
-export default {
-  ...DefaultTheme,
-  // override the Layout with a wrapper component that injects the slots
-  Layout: MyLayout
-}
-
<!--.vitepress/theme/MyLayout.vue-->
-<script setup>
-import DefaultTheme from 'vitepress/theme'
-const { Layout } = DefaultTheme
-</script>
-
-<template>
-  <Layout>
-    <template #sidebar-top>My custom sidebar top content</template>
-  </Layout>
-</template>
-

Full list of slots available in the default theme layout:

  • navbar-search
  • sidebar-top
  • sidebar-bottom
  • page-top-ads
  • page-top
  • page-bottom
  • page-bottom-ads
  • Only when home: true is enabled via frontmatter:
    • home-hero
    • home-features
    • home-footer
`,29),p=[o];function c(l,i,r,u,k,d){return a(),s("div",null,p)}var g=n(t,[["render",c]]);export{h as __pageData,g as default}; diff --git a/assets/guide_theming.md.b28ff51e.lean.js b/assets/guide_theming.md.b28ff51e.lean.js deleted file mode 100644 index 8426be28..00000000 --- a/assets/guide_theming.md.b28ff51e.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,c as s,o as a,a as e}from"./app.54944ef9.js";const h='{"title":"Theming","description":"","frontmatter":{},"headers":[{"level":2,"title":"Using a Custom Theme","slug":"using-a-custom-theme"},{"level":2,"title":"Extending the Default Theme","slug":"extending-the-default-theme"},{"level":3,"title":"Registering Global Components","slug":"registering-global-components"},{"level":3,"title":"Customizing CSS","slug":"customizing-css"},{"level":3,"title":"Layout Slots","slug":"layout-slots"}],"relativePath":"guide/theming.md","lastUpdated":1652768268000}',t={},o=e("",29),p=[o];function c(l,i,r,u,k,d){return a(),s("div",null,p)}var g=n(t,[["render",c]]);export{h as __pageData,g as default}; diff --git a/assets/guide_using-vue.md.74e82a4f.js b/assets/guide_using-vue.md.74e82a4f.js deleted file mode 100644 index 330fd61c..00000000 --- a/assets/guide_using-vue.md.74e82a4f.js +++ /dev/null @@ -1,84 +0,0 @@ -import{_ as o,o as a,c as t,b as n,F as r,r as u,d,n as k,a as s,e as p,f as g,t as h}from"./app.54944ef9.js";const m={};function y(e,c){return a(),t("span",null,"\u26A1")}var f=o(m,[["render",y]]);const v="_example_t4bci_2";var _={example:v};const w={props:["slot-key"],components:{ComponentInHeader:f},mounted(){document.querySelector(`.${this.$style.example}`).textContent="This is rendered by inline script and styled by inline CSS"}},N='{"title":"Using Vue in Markdown","description":"","frontmatter":{"sidebarDepth":3},"headers":[{"level":2,"title":"Templating","slug":"templating"},{"level":3,"title":"Interpolation","slug":"interpolation"},{"level":3,"title":"Directives","slug":"directives"},{"level":3,"title":"Access to Site & Page Data","slug":"access-to-site-page-data"},{"level":2,"title":"Escaping","slug":"escaping"},{"level":2,"title":"Using Components","slug":"using-components"},{"level":3,"title":"Importing components in markdown","slug":"importing-components-in-markdown"},{"level":3,"title":"Registering global components in the theme","slug":"registering-global-components-in-the-theme"},{"level":3,"title":"Using Components In Headers","slug":"using-components-in-headers"},{"level":2,"title":"Using CSS Pre-processors","slug":"using-css-pre-processors"},{"level":2,"title":"Script & Style Hoisting","slug":"script-style-hoisting"},{"level":2,"title":"Built-In Components","slug":"built-in-components"},{"level":2,"title":"Browser API Access Restrictions","slug":"browser-api-access-restrictions"}],"relativePath":"guide/using-vue.md","lastUpdated":1652768268000}',b=s(`

Using Vue in Markdown

In VitePress, each markdown file is compiled into HTML and then processed as a Vue Single-File Component. This means you can use any Vue features inside the markdown, including dynamic templating, using Vue components, or arbitrary in-page Vue component logic by adding a <script> tag.

It is also important to know that VitePress leverages Vue 3's compiler to automatically detect and optimize the purely static parts of the markdown. Static contents are optimized into single placeholder nodes and eliminated from the page's JavaScript payload. They are also skipped during client-side hydration. In short, you only pay for the dynamic parts on any given page.

Templating

Interpolation

Each Markdown file is first compiled into HTML and then passed on as a Vue component to the Vite process pipeline. This means you can use Vue-style interpolation in text:

Input

{{ 1 + 1 }}
-

Output

2

Directives

Directives also work:

Input

<span v-for="i in 3">{{ i }} </span>
-

Output

`,15),T={class:"language-text"},x=s(`

Access to Site & Page Data

You can use the useData helper in a <script> block and expose the data to the page.

Input

<script setup>
-import { useData } from 'vitepress'
-const { page } = useData()
-</script>
-
-<pre>{{ page }}</pre>
-

Output

{
-  "path": "/using-vue.html",
-  "title": "Using Vue in Markdown",
-  "frontmatter": {}
-}
-

Escaping

By default, fenced code blocks are automatically wrapped with v-pre. To display raw mustaches or Vue-specific syntax inside inline code snippets or plain text, you need to wrap a paragraph with the v-pre custom container:

Input

::: v-pre
-\`{{ This will be displayed as-is }}\`
-:::
-

Output

{{ This will be displayed as-is }}

Using Components

When you need to have more flexibility, VitePress allows you to extend your authoring toolbox with your own Vue Components.

Importing components in markdown

If your components are going to be used in only a few places, the recommended way to use them is to importing the components in the file where it is used.

<script setup>
-import CustomComponent from '../components/CustomComponent.vue'
-</script>
-
-# Docs
-
-This is a .md using a custom component
-
-<CustomComponent />
-
-## More docs
-
-...
-

Registering global components in the theme

If the components are going to be used across several pages in the docs, they can be registered globally in the theme (or as part of extending the default VitePress theme). Check out the Theming Guide for more information.

In .vitepress/theme/index.js, the enhanceApp function receives the Vue app instance so you can register components as you would do in a regular Vue application.

import DefaultTheme from 'vitepress/theme'
-
-export default {
-  ...DefaultTheme,
-  enhanceApp({ app }) {
-    app.component('VueClickAwayExample', VueClickAwayExample)
-  }
-}
-

Later in your markdown files, the component can be interleaved between the content

# Vue Click Away
-
-<VueClickAwayExample />
-

IMPORTANT

Make sure a custom component\u2019s name either contains a hyphen or is in PascalCase. Otherwise, it will be treated as an inline element and wrapped inside a <p> tag, which will lead to hydration mismatch because <p> does not allow block elements to be placed inside it.

`,24),C={id:"using-components-in-headers",tabindex:"-1"},V=p("Using Components In Headers "),I=p(),S=n("a",{class:"header-anchor",href:"#using-components-in-headers","aria-hidden":"true"},"#",-1),A=s(`

You can use Vue components in the headers, but note the difference between the following syntaxes:

MarkdownOutput HTMLParsed Header
 # text <Tag/> 
<h1>text <Tag/></h1>text
 # text \`<Tag/>\` 
<h1>text <code>&lt;Tag/&gt;</code></h1>text <Tag/>

The HTML wrapped by <code> will be displayed as-is; only the HTML that is not wrapped will be parsed by Vue.

TIP

The output HTML is accomplished by markdown-it, while the parsed headers are handled by VitePress (and used for both the sidebar and document title).

Using CSS Pre-processors

VitePress has built-in support for CSS pre-processors: .scss, .sass, .less, .styl and .stylus files. There is no need to install Vite-specific plugins for them, but the corresponding pre-processor itself must be installed:

# .scss and .sass
-npm install -D sass
-
-# .less
-npm install -D less
-
-# .styl and .stylus
-npm install -D stylus
-

Then you can use the following in Markdown and theme components:

<style lang="sass">
-.title
-  font-size: 20px
-</style>
-

Script & Style Hoisting

Sometimes you may need to apply some JavaScript or CSS only to the current page. In those cases, you can directly write root-level <script> or <style> blocks in the Markdown file. These will be hoisted out of the compiled HTML and used as the <script> and <style> blocks for the resulting Vue single-file component:

`,11),P=s(`

Built-In Components

VitePress provides Built-In Vue Components like ClientOnly and OutboundLink, check out the Global Component Guide for more information.

Also see:

Browser API Access Restrictions

Because VitePress applications are server-rendered in Node.js when generating static builds, any Vue usage must conform to the universal code requirements. In short, make sure to only access Browser / DOM APIs in beforeMount or mounted hooks.

If you are using or demoing components that are not SSR-friendly (for example, contain custom directives), you can wrap them inside the built-in <ClientOnly> component:

<ClientOnly>
-  <NonSSRFriendlyComponent/>
-</ClientOnly>
-

Note this does not fix components or libraries that access Browser APIs on import. To use code that assumes a browser environment on import, you need to dynamically import them in proper lifecycle hooks:

<script>
-export default {
-  mounted() {
-    import('./lib-that-access-window-on-import').then((module) => {
-      // use code
-    })
-  }
-}
-</script>
-

If your module export default a Vue component, you can register it dynamically:

<template>
-  <component v-if="dynamicComponent" :is="dynamicComponent"></component>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      dynamicComponent: null
-    }
-  },
-
-  mounted() {
-    import('./lib-that-access-window-on-import').then((module) => {
-      this.dynamicComponent = module.default
-    })
-  }
-}
-</script>
-

Also see:

`,14);function q(e,c,M,H,j,O){const i=g("ComponentInHeader");return a(),t("div",null,[b,n("div",T,[n("pre",null,[n("code",null,[(a(),t(r,null,u(3,l=>n("span",null,h(l)+" ",1)),64))])])]),x,n("h3",C,[V,d(i),I,S]),A,n("p",{class:k(["demo",e.$style.example])},null,2),P])}const D={$style:_};var E=o(w,[["render",q],["__cssModules",D]]);export{N as __pageData,E as default}; diff --git a/assets/guide_using-vue.md.74e82a4f.lean.js b/assets/guide_using-vue.md.74e82a4f.lean.js deleted file mode 100644 index e8d3a41c..00000000 --- a/assets/guide_using-vue.md.74e82a4f.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,o as a,c as t,b as n,F as r,r as u,d,n as k,a as s,e as p,f as g,t as h}from"./app.54944ef9.js";const m={};function y(e,c){return a(),t("span",null,"\u26A1")}var f=o(m,[["render",y]]);const v="_example_t4bci_2";var _={example:v};const w={props:["slot-key"],components:{ComponentInHeader:f},mounted(){document.querySelector(`.${this.$style.example}`).textContent="This is rendered by inline script and styled by inline CSS"}},N='{"title":"Using Vue in Markdown","description":"","frontmatter":{"sidebarDepth":3},"headers":[{"level":2,"title":"Templating","slug":"templating"},{"level":3,"title":"Interpolation","slug":"interpolation"},{"level":3,"title":"Directives","slug":"directives"},{"level":3,"title":"Access to Site & Page Data","slug":"access-to-site-page-data"},{"level":2,"title":"Escaping","slug":"escaping"},{"level":2,"title":"Using Components","slug":"using-components"},{"level":3,"title":"Importing components in markdown","slug":"importing-components-in-markdown"},{"level":3,"title":"Registering global components in the theme","slug":"registering-global-components-in-the-theme"},{"level":3,"title":"Using Components In Headers","slug":"using-components-in-headers"},{"level":2,"title":"Using CSS Pre-processors","slug":"using-css-pre-processors"},{"level":2,"title":"Script & Style Hoisting","slug":"script-style-hoisting"},{"level":2,"title":"Built-In Components","slug":"built-in-components"},{"level":2,"title":"Browser API Access Restrictions","slug":"browser-api-access-restrictions"}],"relativePath":"guide/using-vue.md","lastUpdated":1652768268000}',b=s("",15),T={class:"language-text"},x=s("",24),C={id:"using-components-in-headers",tabindex:"-1"},V=p("Using Components In Headers "),I=p(),S=n("a",{class:"header-anchor",href:"#using-components-in-headers","aria-hidden":"true"},"#",-1),A=s("",11),P=s("",14);function q(e,c,M,H,j,O){const i=g("ComponentInHeader");return a(),t("div",null,[b,n("div",T,[n("pre",null,[n("code",null,[(a(),t(r,null,u(3,l=>n("span",null,h(l)+" ",1)),64))])])]),x,n("h3",C,[V,d(i),I,S]),A,n("p",{class:k(["demo",e.$style.example])},null,2),P])}const D={$style:_};var E=o(w,[["render",q],["__cssModules",D]]);export{N as __pageData,E as default}; diff --git a/assets/index.md.9a001cbe.js b/assets/index.md.9a001cbe.js deleted file mode 100644 index dd60f338..00000000 --- a/assets/index.md.9a001cbe.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as s,a as i}from"./app.54944ef9.js";const v='{"title":"What is VitePress?","description":"","frontmatter":{"sidebarDepth":2},"headers":[{"level":2,"title":"Motivation","slug":"motivation"},{"level":2,"title":"Improvements Over VuePress v1","slug":"improvements-over-vuepress-v1"},{"level":3,"title":"It Uses Vue 3","slug":"it-uses-vue-3"},{"level":3,"title":"It Uses Vite Under The Hood","slug":"it-uses-vite-under-the-hood"},{"level":3,"title":"Lighter Page Weight","slug":"lighter-page-weight"},{"level":2,"title":"Other Differences","slug":"other-differences"},{"level":2,"title":"Will This Become The Next VuePress in The Future?","slug":"will-this-become-the-next-vuepress-in-the-future"}],"relativePath":"index.md","lastUpdated":1652768268000}',a={},r=i('

What is VitePress?

WARNING

VitePress is currently in 0.x status. It is already suitable for out-of-the-box documentation use, but the config and theming API may still change between minor releases.

VitePress is VuePress' little brother, built on top of Vite.

Motivation

We love VuePress v1, but being built on top of Webpack, the time it takes to spin up the dev server for a simple doc site with a few pages is just becoming unbearable. Even HMR updates can take up to seconds to reflect in the browser!

Fundamentally, this is because VuePress v1 is a Webpack app under the hood. Even with just two pages, it's a full on Webpack project (including all the theme source files) being compiled. It gets even worse when the project has many pages \u2013 every page must first be fully compiled before the server can even display anything!

Incidentally, Vite solves these problems really well: nearly instant server start, an on-demand compilation that only compiles the page being served, and lightning-fast HMR. Plus, there are a few additional design issues I have noted in VuePress v1 over time but never had the time to fix due to the amount of refactoring it would require.

Now, with Vite and Vue 3, it is time to rethink what a "Vue-powered static site generator" can really be.

Improvements Over VuePress v1

There're couple of things that are improved from VuePress v1....

It Uses Vue 3

Leverages Vue 3's improved template static analysis to stringify static content as much as possible. Static content is sent as string literals instead of JavaScript render function code \u2013 the JS payload is therefore much cheaper to parse, and hydration also becomes faster.

Note the optimization is applied while still allowing the user to freely mix Vue components inside markdown content \u2013 the compiler does the static/dynamic separation for you automatically and you never need to think about it.

It Uses Vite Under The Hood

  • Faster dev server start
  • Faster hot updates
  • Faster build (uses Rollup internally)

Lighter Page Weight

  • Vue 3 tree-shaking + Rollup code splitting
  • Does not ship metadata for every page on every request. This decouples page weight from total number of pages. Only the current page's metadata is sent. Client side navigation fetches the new page's component and metadata together.
  • Does not use vue-router because the need of VitePress is very simple and specific - a simple custom router (under 200 LOC) is used instead.
  • (WIP) i18n locale data should also be fetched on demand.

Other Differences

VitePress is more opinionated and less configurable: VitePress aims to scale back the complexity in the current VuePress and restart from its minimalist roots.

VitePress is future oriented: VitePress only targets browsers that support native ES module imports. It encourages the use of native JavaScript without transpilation, and CSS variables for theming.

Will This Become The Next VuePress in The Future?

We already have vuepress-next, which would be the next major version of VuePress. It also makes lots of improvements over VuePress v1, and also supports Vite now.

VitePress is not compatible with the current VuePress ecosystem (mostly themes and plugins). The overall idea is that VitePress will have a drastically more minimal theming API (preferring JavaScript APIs instead of file layout conventions) and likely no plugins (all customization is done in themes).

',23),o=[r];function n(l,h,u,d,p,c){return s(),t("div",null,o)}var f=e(a,[["render",n]]);export{v as __pageData,f as default}; diff --git a/assets/index.md.9a001cbe.lean.js b/assets/index.md.9a001cbe.lean.js deleted file mode 100644 index fcbdc5ca..00000000 --- a/assets/index.md.9a001cbe.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as s,a as i}from"./app.54944ef9.js";const v='{"title":"What is VitePress?","description":"","frontmatter":{"sidebarDepth":2},"headers":[{"level":2,"title":"Motivation","slug":"motivation"},{"level":2,"title":"Improvements Over VuePress v1","slug":"improvements-over-vuepress-v1"},{"level":3,"title":"It Uses Vue 3","slug":"it-uses-vue-3"},{"level":3,"title":"It Uses Vite Under The Hood","slug":"it-uses-vite-under-the-hood"},{"level":3,"title":"Lighter Page Weight","slug":"lighter-page-weight"},{"level":2,"title":"Other Differences","slug":"other-differences"},{"level":2,"title":"Will This Become The Next VuePress in The Future?","slug":"will-this-become-the-next-vuepress-in-the-future"}],"relativePath":"index.md","lastUpdated":1652768268000}',a={},r=i("",23),o=[r];function n(l,h,u,d,p,c){return s(),t("div",null,o)}var f=e(a,[["render",n]]);export{v as __pageData,f as default}; diff --git a/assets/index.md.c8bd2718.js b/assets/index.md.c8bd2718.js new file mode 100644 index 00000000..4062c891 --- /dev/null +++ b/assets/index.md.c8bd2718.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./app.61e847e1.js";const p='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u54EA\u5412\u76D1\u63A7","tagline":"\u8F7B\u91CF\u7684\u81EA\u6258\u7BA1\u76D1\u63A7\u3001\u8FD0\u7EF4\u5DE5\u5177","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/guide/dashboard","features":[{"title":"\u7279\u60271","details":"\u7279\u60271\u7279\u60271\u7279\u60271"},{"title":"\u7279\u60272","details":"\u7279\u60272\u7279\u60272\u7279\u60272"},{"title":"\u7279\u60273","details":"\u7279\u60273\u7279\u60273\u7279\u60273"}],"footer":"Licence | Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"index.md"}',r={};function o(i,n,s,c,d,h){return a(),t("div")}var m=e(r,[["render",o]]);export{p as __pageData,m as default}; diff --git a/assets/index.md.c8bd2718.lean.js b/assets/index.md.c8bd2718.lean.js new file mode 100644 index 00000000..4062c891 --- /dev/null +++ b/assets/index.md.c8bd2718.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./app.61e847e1.js";const p='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u54EA\u5412\u76D1\u63A7","tagline":"\u8F7B\u91CF\u7684\u81EA\u6258\u7BA1\u76D1\u63A7\u3001\u8FD0\u7EF4\u5DE5\u5177","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/guide/dashboard","features":[{"title":"\u7279\u60271","details":"\u7279\u60271\u7279\u60271\u7279\u60271"},{"title":"\u7279\u60272","details":"\u7279\u60272\u7279\u60272\u7279\u60272"},{"title":"\u7279\u60273","details":"\u7279\u60273\u7279\u60273\u7279\u60273"}],"footer":"Licence | Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"index.md"}',r={};function o(i,n,s,c,d,h){return a(),t("div")}var m=e(r,[["render",o]]);export{p as __pageData,m as default}; diff --git a/assets/line-numbers-desktop.cc304762.png b/assets/line-numbers-desktop.cc304762.png deleted file mode 100644 index e16e6707..00000000 Binary files a/assets/line-numbers-desktop.cc304762.png and /dev/null differ diff --git a/assets/line-numbers-mobile.f5ca96ee.gif b/assets/line-numbers-mobile.f5ca96ee.gif deleted file mode 100644 index 87af6cf0..00000000 Binary files a/assets/line-numbers-mobile.f5ca96ee.gif and /dev/null differ diff --git a/assets/style.82fdbeb8.css b/assets/style.c3210e46.css similarity index 56% rename from assets/style.82fdbeb8.css rename to assets/style.c3210e46.css index 42dd6885..4a96fa67 100644 --- a/assets/style.82fdbeb8.css +++ b/assets/style.c3210e46.css @@ -1 +1 @@ -:root{--c-white: #ffffff;--c-white-dark: #f8f8f8;--c-black: #000000;--c-divider-light: rgba(60, 60, 67, .12);--c-divider-dark: rgba(84, 84, 88, .48);--c-text-light-1: #2c3e50;--c-text-light-2: #476582;--c-text-light-3: #90a4b7;--c-brand: #3eaf7c;--c-brand-light: #4abf8a;--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-mono: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;--z-index-navbar: 10;--z-index-sidebar: 6;--shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16);--header-height: 3.6rem}:root{--c-divider: var(--c-divider-light);--c-text: var(--c-text-light-1);--c-text-light: var(--c-text-light-2);--c-text-lighter: var(--c-text-light-3);--c-bg: var(--c-white);--c-bg-accent: var(--c-white-dark);--code-line-height: 24px;--code-font-family: var(--font-family-mono);--code-font-size: 14px;--code-inline-bg-color: rgba(27, 31, 35, .05);--code-bg-color: #282c34}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:1.4;font-family:var(--font-family-base);font-size:16px;font-weight:400;color:var(--c-text);background-color:var(--c-bg);direction:ltr;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:1.25}h1,h2,h3,h4,h5,h6,strong,b{font-weight:600}h1:hover .header-anchor,h1:focus .header-anchor,h2:hover .header-anchor,h2:focus .header-anchor,h3:hover .header-anchor,h3:focus .header-anchor,h4:hover .header-anchor,h4:focus .header-anchor,h5:hover .header-anchor,h5:focus .header-anchor,h6:hover .header-anchor,h6:focus .header-anchor{opacity:1}h1{margin-top:1.5rem;font-size:1.9rem}@media screen and (min-width: 420px){h1{font-size:2.2rem}}h2{margin-top:2.25rem;margin-bottom:1.25rem;border-bottom:1px solid var(--c-divider);padding-bottom:.3rem;line-height:1.25;font-size:1.65rem}h2+h3{margin-top:1.5rem}h3{margin-top:2rem;font-size:1.35rem}h4{font-size:1.15rem}p,ol,ul{margin:1rem 0;line-height:1.7}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{text-decoration:none;color:var(--c-brand)}a:hover{text-decoration:underline}a.header-anchor{float:left;margin-top:.125em;margin-left:-.87em;padding-right:.23em;font-size:.85em;opacity:0}a.header-anchor:hover,a.header-anchor:focus{text-decoration:none}figure{margin:0}img{max-width:100%}ul,ol{padding-left:1.25em}li>ul,li>ol{margin:0}table{display:block;border-collapse:collapse;margin:1rem 0;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}th,td{border:1px solid #dfe2e5;padding:.6em 1em}blockquote{margin:1rem 0;border-left:.2rem solid #dfe2e5;padding:.25rem 0 .25rem 1rem;font-size:1rem;color:#999}blockquote>p{margin:0}form{margin:0}.theme.sidebar-open .sidebar-mask{display:block}.theme.no-navbar>h1,.theme.no-navbar>h2,.theme.no-navbar>h3,.theme.no-navbar>h4,.theme.no-navbar>h5,.theme.no-navbar>h6{margin-top:1.5rem;padding-top:0}.theme.no-navbar aside{top:0}@media screen and (min-width: 720px){.theme.no-sidebar aside{display:none}.theme.no-sidebar main{margin-left:0}}.sidebar-mask{position:fixed;z-index:2;display:none;width:100vw;height:100vh}code{margin:0;border-radius:3px;padding:.25rem .5rem;font-family:var(--code-font-family);font-size:.85em;color:var(--c-text-light);background-color:var(--code-inline-bg-color)}code .token.deleted{color:#ec5975}code .token.inserted{color:var(--c-brand)}div[class*=language-]{position:relative;margin:1rem -1.5rem;background-color:var(--code-bg-color);overflow-x:auto}li>div[class*=language-]{border-radius:6px 0 0 6px;margin:1rem -1.5rem 1rem -1.25rem;line-height:initial}@media (min-width: 420px){div[class*=language-]{margin:1rem 0;border-radius:6px}li>div[class*=language-]{margin:1rem 0 1rem 0rem;border-radius:6px}}[class*=language-] pre,[class*=language-] code{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;background:transparent}[class*=language-] pre{position:relative;z-index:1;margin:0;padding:1.25rem 1.5rem;overflow-x:auto}[class*=language-] code{padding:0;line-height:var(--code-line-height);font-size:var(--code-font-size);color:#eee}.highlight-lines{position:absolute;top:0;bottom:0;left:0;padding:1.25rem 0;width:100%;line-height:var(--code-line-height);font-family:var(--code-font-family);font-size:var(--code-font-size);user-select:none;overflow:hidden}.highlight-lines .highlighted{background-color:#000000a8}div[class*=language-].line-numbers-mode{padding-left:3.5rem}.line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid rgba(0,0,0,.5);padding:1.25rem 0;width:3.5rem;text-align:center;line-height:var(--code-line-height);font-family:var(--code-font-family);font-size:var(--code-font-size);color:#888}div[class*=language-]:before{position:absolute;top:.6em;right:1em;z-index:2;font-size:.8rem;color:#888}div[class~=language-html]:before,div[class~=language-markup]:before{content:"html"}div[class~=language-md]:before,div[class~=language-markdown]:before{content:"md"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"styl"}div[class~=language-js]:before,div[class~=language-javascript]:before{content:"js"}div[class~=language-ts]:before,div[class~=language-typescript]:before{content:"ts"}div[class~=language-json]:before{content:"json"}div[class~=language-rb]:before,div[class~=language-ruby]:before{content:"rb"}div[class~=language-py]:before,div[class~=language-python]:before{content:"py"}div[class~=language-sh]:before,div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}div[class~=language-go]:before{content:"go"}div[class~=language-rust]:before{content:"rust"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-vue]:before{content:"vue"}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.custom-block.tip,.custom-block.info,.custom-block.warning,.custom-block.danger{margin:1rem 0;border-left:.5rem solid;padding:.1rem 1.5rem;overflow-x:auto}.custom-block.tip{background-color:#f3f5f7;border-color:var(--c-brand)}.custom-block.info{background-color:#f3f5f7;border-color:var(--c-text-light-2)}.custom-block.warning{border-color:#e7c000;color:#6b5900;background-color:#ffe5644d}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:var(--c-text)}.custom-block.danger{border-color:#c00;color:#4d0000;background-color:#ffe6e6}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:var(--c-text)}.custom-block.details{position:relative;display:block;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.custom-block-title{margin-bottom:-.4rem;font-weight:600}.sidebar-links{margin:0;padding:0;list-style:none}.sidebar-link-item{display:block;margin:0;border-left:.25rem solid transparent;color:var(--c-text)}a.sidebar-link-item:hover{text-decoration:none;color:var(--c-brand)}a.sidebar-link-item.active{color:var(--c-brand)}.sidebar>.sidebar-links{padding:.75rem 0 5rem}@media (min-width: 720px){.sidebar>.sidebar-links{padding:1.5rem 0}}.sidebar>.sidebar-links>.sidebar-link+.sidebar-link{padding-top:.5rem}@media (min-width: 720px){.sidebar>.sidebar-links>.sidebar-link+.sidebar-link{padding-top:1.25rem}}.sidebar>.sidebar-links>.sidebar-link>.sidebar-link-item{padding:.35rem 1.5rem .35rem 1.25rem;font-size:1.1rem;font-weight:700}.sidebar>.sidebar-links>.sidebar-link>a.sidebar-link-item.active{border-left-color:var(--c-brand);font-weight:600}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-link-item{display:block;padding:.35rem 1.5rem .35rem 2rem;line-height:1.4;font-size:1rem;font-weight:400}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>a.sidebar-link-item.active{border-left-color:var(--c-brand);font-weight:600}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-link-item{display:block;padding:.3rem 1.5rem .3rem 3rem;line-height:1.4;font-size:.9rem;font-weight:400}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-link-item{display:block;padding:.3rem 1.5rem .3rem 4rem;line-height:1.4;font-size:.9rem;font-weight:400}.debug[data-v-bf835584]{box-sizing:border-box;position:fixed;right:8px;bottom:8px;z-index:9999;border-radius:4px;width:74px;height:32px;color:#eee;overflow:hidden;cursor:pointer;background-color:#000000d9;transition:all .15s ease}.debug[data-v-bf835584]:hover{background-color:#000000bf}.debug.open[data-v-bf835584]{right:0;bottom:0;width:100%;height:100%;margin-top:0;border-radius:0;padding:0;overflow:scroll}@media (min-width: 512px){.debug.open[data-v-bf835584]{width:512px}}.debug.open[data-v-bf835584]:hover{background-color:#000000d9}.title[data-v-bf835584]{margin:0;padding:6px 16px;line-height:20px;font-size:13px}.block[data-v-bf835584]{margin:2px 0 0;border-top:1px solid rgba(255,255,255,.16);padding:8px 16px;font-family:Hack,monospace;font-size:13px}.block+.block[data-v-bf835584]{margin-top:8px}.icon.outbound{position:relative;top:-1px;display:inline-block;vertical-align:middle;color:var(--c-text-lighter)}.item[data-v-b8818f8c]{display:block;padding:0 1.5rem;line-height:36px;font-size:1rem;font-weight:600;color:var(--c-text);white-space:nowrap}.item[data-v-b8818f8c]:hover,.item.active[data-v-b8818f8c]{text-decoration:none;color:var(--c-brand)}.item.external[data-v-b8818f8c]:hover{border-bottom-color:transparent;color:var(--c-text)}@media (min-width: 720px){.item[data-v-b8818f8c]{border-bottom:2px solid transparent;padding:0;line-height:24px;font-size:.9rem;font-weight:500}.item[data-v-b8818f8c]:hover,.item.active[data-v-b8818f8c]{border-bottom-color:var(--c-brand);color:var(--c-text)}}.home-hero[data-v-370f18c0]{margin:2.5rem 0 2.75rem;padding:0 1.5rem;text-align:center}@media (min-width: 420px){.home-hero[data-v-370f18c0]{margin:3.5rem 0}}@media (min-width: 720px){.home-hero[data-v-370f18c0]{margin:4rem 0 4.25rem}}.figure[data-v-370f18c0]{padding:0 1.5rem}.image[data-v-370f18c0]{display:block;margin:0 auto;width:auto;max-width:100%;max-height:280px}.title[data-v-370f18c0]{margin-top:1.5rem;font-size:2rem}@media (min-width: 420px){.title[data-v-370f18c0]{font-size:3rem}}@media (min-width: 720px){.title[data-v-370f18c0]{margin-top:2rem}}.tagline[data-v-370f18c0]{margin:0;margin-top:.25rem;line-height:1.3;font-size:1.2rem;color:var(--c-text-light)}@media (min-width: 420px){.tagline[data-v-370f18c0]{line-height:1.2;font-size:1.6rem}}.action[data-v-370f18c0]{margin-top:1.5rem;display:inline-block}.action.alt[data-v-370f18c0]{margin-left:1.5rem}@media (min-width: 420px){.action[data-v-370f18c0]{margin-top:2rem;display:inline-block}}.action[data-v-370f18c0] .item{display:inline-block;border-radius:6px;padding:0 20px;line-height:44px;font-size:1rem;font-weight:500;color:var(--c-bg);background-color:var(--c-brand);border:2px solid var(--c-brand);transition:background-color .1s ease}.action.alt[data-v-370f18c0] .item{background-color:var(--c-bg);color:var(--c-brand)}.action[data-v-370f18c0] .item:hover{text-decoration:none;color:var(--c-bg);background-color:var(--c-brand-light)}@media (min-width: 420px){.action[data-v-370f18c0] .item{padding:0 24px;line-height:52px;font-size:1.2rem;font-weight:500}}.home-features[data-v-e39c13e0]{margin:0 auto;padding:2.5rem 0 2.75rem;max-width:960px}.home-hero+.home-features[data-v-e39c13e0]{padding-top:0}@media (min-width: 420px){.home-features[data-v-e39c13e0]{padding:3.25rem 0 3.5rem}.home-hero+.home-features[data-v-e39c13e0]{padding-top:0}}@media (min-width: 720px){.home-features[data-v-e39c13e0]{padding-right:1.5rem;padding-left:1.5rem}}.wrapper[data-v-e39c13e0]{padding:0 1.5rem}.home-hero+.home-features .wrapper[data-v-e39c13e0]{border-top:1px solid var(--c-divider);padding-top:2.5rem}@media (min-width: 420px){.home-hero+.home-features .wrapper[data-v-e39c13e0]{padding-top:3.25rem}}@media (min-width: 720px){.wrapper[data-v-e39c13e0]{padding-right:0;padding-left:0}}.container[data-v-e39c13e0]{margin:0 auto;max-width:392px}@media (min-width: 720px){.container[data-v-e39c13e0]{max-width:960px}}.features[data-v-e39c13e0]{display:flex;flex-wrap:wrap;margin:-20px -24px}.feature[data-v-e39c13e0]{flex-shrink:0;padding:20px 24px;width:100%}@media (min-width: 720px){.feature[data-v-e39c13e0]{width:calc(100% / 3)}}.title[data-v-e39c13e0]{margin:0;border-bottom:0;line-height:1.4;font-size:1.25rem;font-weight:500}@media (min-width: 420px){.title[data-v-e39c13e0]{font-size:1.4rem}}.details[data-v-e39c13e0]{margin:0;line-height:1.6;font-size:1rem;color:var(--c-text-light)}.title+.details[data-v-e39c13e0]{padding-top:.25rem}.footer[data-v-30918238]{margin:0 auto;max-width:960px}@media (min-width: 720px){.footer[data-v-30918238]{padding:0 1.5rem}}.container[data-v-30918238]{padding:2rem 1.5rem 2.25rem}.home-hero+.footer .container[data-v-30918238],.home-features+.footer .container[data-v-30918238],.home-content+.footer .container[data-v-30918238]{border-top:1px solid var(--c-divider)}@media (min-width: 420px){.container[data-v-30918238]{padding:3rem 1.5rem 3.25rem}}.text[data-v-30918238]{margin:0;text-align:center;line-height:1.4;font-size:.9rem;color:var(--c-text-light)}.home[data-v-10122c92]{padding-top:var(--header-height)}.home-content[data-v-10122c92]{max-width:960px;margin:0 auto;padding:0 1.5rem}.nav-bar-title[data-v-cc01ef16]{font-size:1.3rem;font-weight:600;color:var(--c-text);display:flex;justify-content:center;align-items:center}.nav-bar-title[data-v-cc01ef16]:hover{text-decoration:none}.logo[data-v-cc01ef16]{margin-right:.75rem;height:1.3rem;vertical-align:bottom}.item[data-v-bbc27490]{display:block;padding:0 1.5rem 0 2.5rem;line-height:32px;font-size:.9rem;font-weight:500;color:var(--c-text);white-space:nowrap}@media (min-width: 720px){.item[data-v-bbc27490]{padding:0 24px 0 12px;line-height:32px;font-size:.85rem;font-weight:500;color:var(--c-text);white-space:nowrap}.item.active .arrow[data-v-bbc27490]{opacity:1}}.item[data-v-bbc27490]:hover,.item.active[data-v-bbc27490]{text-decoration:none;color:var(--c-brand)}.item.external[data-v-bbc27490]:hover{border-bottom-color:transparent;color:var(--c-text)}@media (min-width: 720px){.arrow[data-v-bbc27490]{display:inline-block;margin-right:8px;border-top:6px solid #ccc;border-right:4px solid transparent;border-bottom:0;border-left:4px solid transparent;vertical-align:middle;opacity:0;transform:translateY(-2px) rotate(-90deg)}}.nav-dropdown-link[data-v-56bf3a3f]{position:relative;height:36px;overflow:hidden;cursor:pointer}@media (min-width: 720px){.nav-dropdown-link[data-v-56bf3a3f]{height:auto;overflow:visible}.nav-dropdown-link:hover .dialog[data-v-56bf3a3f]{display:block}}.nav-dropdown-link.open[data-v-56bf3a3f]{height:auto}.button[data-v-56bf3a3f]{display:block;border:0;padding:0 1.5rem;width:100%;text-align:left;line-height:36px;font-family:var(--font-family-base);font-size:1rem;font-weight:600;color:var(--c-text);white-space:nowrap;background-color:transparent;cursor:pointer}.button[data-v-56bf3a3f]:focus{outline:0}@media (min-width: 720px){.button[data-v-56bf3a3f]{border-bottom:2px solid transparent;padding:0;line-height:24px;font-size:.9rem;font-weight:500}}.button-arrow[data-v-56bf3a3f]{display:inline-block;margin-top:-1px;margin-left:8px;border-top:6px solid #ccc;border-right:4px solid transparent;border-bottom:0;border-left:4px solid transparent;vertical-align:middle}.button-arrow.right[data-v-56bf3a3f]{transform:rotate(-90deg)}@media (min-width: 720px){.button-arrow.right[data-v-56bf3a3f]{transform:rotate(0)}}.dialog[data-v-56bf3a3f]{margin:0;padding:0;list-style:none}@media (min-width: 720px){.dialog[data-v-56bf3a3f]{display:none;position:absolute;top:26px;right:-8px;border-radius:6px;padding:12px 0;min-width:128px;background-color:var(--c-bg);box-shadow:var(--shadow-3)}}.nav-links[data-v-eab3edfe]{padding:.75rem 0;border-bottom:1px solid var(--c-divider)}@media (min-width: 720px){.nav-links[data-v-eab3edfe]{display:flex;padding:6px 0 0;align-items:center;border-bottom:0}.item+.item[data-v-eab3edfe]{padding-left:24px}}.sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media screen and (max-width: 719px){.sidebar-button{display:block}}.nav-bar[data-v-675d8756]{position:fixed;top:0;right:0;left:0;z-index:var(--z-index-navbar);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--c-divider);padding:.7rem 1.5rem .7rem 4rem;height:var(--header-height);background-color:var(--c-bg)}@media (min-width: 720px){.nav-bar[data-v-675d8756]{padding:.7rem 1.5rem}}.flex-grow[data-v-675d8756]{flex-grow:1}.nav[data-v-675d8756]{display:none}@media (min-width: 720px){.nav[data-v-675d8756]{display:block}}.sidebar[data-v-83e92a68]{position:fixed;top:var(--header-height);bottom:0;left:0;z-index:var(--z-index-sidebar);border-right:1px solid var(--c-divider);width:16.4rem;background-color:var(--c-bg);overflow-y:auto;transform:translate(-100%);transition:transform .25s ease}@media (min-width: 720px){.sidebar[data-v-83e92a68]{transform:translate(0)}}@media (min-width: 960px){.sidebar[data-v-83e92a68]{width:20rem}}.sidebar.open[data-v-83e92a68]{transform:translate(0)}.nav[data-v-83e92a68]{display:block}@media (min-width: 720px){.nav[data-v-83e92a68]{display:none}}.link[data-v-1ed99556]{display:inline-block;font-size:1rem;font-weight:500;color:var(--c-text-light)}.link[data-v-1ed99556]:hover{text-decoration:none;color:var(--c-brand)}.icon[data-v-1ed99556]{margin-left:4px}.last-updated[data-v-abce3432]{display:inline-block;margin:0;line-height:1.4;font-size:.9rem;color:var(--c-text-light)}@media (min-width: 960px){.last-updated[data-v-abce3432]{font-size:1rem}}.prefix[data-v-abce3432]{display:inline-block;font-weight:500}.datetime[data-v-abce3432]{display:inline-block;margin-left:6px;font-weight:400}.page-footer[data-v-07c132fc]{padding-top:1rem;padding-bottom:1rem;overflow:auto}@media (min-width: 960px){.page-footer[data-v-07c132fc]{display:flex;justify-content:space-between;align-items:center}}.updated[data-v-07c132fc]{padding-top:4px}@media (min-width: 960px){.updated[data-v-07c132fc]{padding-top:0}}.next-and-prev-link[data-v-38ede35f]{padding-top:1rem}.container[data-v-38ede35f]{display:flex;justify-content:space-between;border-top:1px solid var(--c-divider);padding-top:1rem}.prev[data-v-38ede35f],.next[data-v-38ede35f]{display:flex;flex-shrink:0;width:50%}.prev[data-v-38ede35f]{justify-content:flex-start;padding-right:12px}.next[data-v-38ede35f]{justify-content:flex-end;padding-left:12px}.link[data-v-38ede35f]{display:inline-flex;align-items:center;max-width:100%;font-size:1rem;font-weight:500}.text[data-v-38ede35f]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon[data-v-38ede35f]{display:block;flex-shrink:0;width:16px;height:16px;fill:var(--c-text);transform:translateY(1px)}.icon-prev[data-v-38ede35f]{margin-right:8px}.icon-next[data-v-38ede35f]{margin-left:8px}.page[data-v-7eddb2c4]{padding-top:var(--header-height)}@media (min-width: 720px){.page[data-v-7eddb2c4]{margin-left:16.4rem}}@media (min-width: 960px){.page[data-v-7eddb2c4]{margin-left:20rem}}.container[data-v-7eddb2c4]{margin:0 auto;padding:0 1.5rem 4rem;max-width:48rem}.content[data-v-7eddb2c4]{padding-bottom:1.5rem}@media (max-width: 420px){.content[data-v-7eddb2c4]{clear:both}}#ads-container{margin:0 auto}@media (min-width: 420px){#ads-container{position:relative;right:0;float:right;margin:-8px -8px 24px 24px;width:146px}}@media (max-width: 420px){#ads-container{height:105px;margin:1.75rem 0}}@media (min-width: 1400px){#ads-container{position:fixed;right:8px;bottom:8px}}.line-numbers-mobile-snap{margin:0 -1.5rem;width:100vw;max-width:none!important}.line-numbers-desktop-snap{display:none}@media (min-width: 720px){.line-numbers-mobile-snap{display:none}.line-numbers-desktop-snap{display:block}}._example_t4bci_2{color:#41b883}.carbon-ads[data-v-5941b830]{border-radius:4px;margin:0 auto;padding:8px;max-width:280px;font-size:.75rem;background-color:var(--c-bg-accent);min-height:105.38px}.carbon-ads[data-v-5941b830]:after{clear:both;display:block;content:""}@media (min-width: 420px){.carbon-ads[data-v-5941b830]{z-index:1;float:right;margin:-8px -8px 24px 24px;width:146px;max-width:100%;min-height:200px}}@media (min-width: 1400px){.carbon-ads[data-v-5941b830]{right:8px;float:none;margin:0}}.carbon-ads[data-v-5941b830] .carbon-img{float:left;margin-right:.75rem;max-width:110px;border:1px solid var(--c-divider)}@media (min-width: 420px){.carbon-ads[data-v-5941b830] .carbon-img{float:none;display:block;margin-right:0;max-width:130px}}.carbon-ads[data-v-5941b830] .carbon-img img{display:block;width:100%;height:auto}@media (min-width: 420px){.carbon-ads[data-v-5941b830] .carbon-text{padding-top:8px}}.carbon-ads[data-v-5941b830] .carbon-text{display:block;font-weight:400;color:var(--c-text-light)}.carbon-ads[data-v-5941b830] .carbon-poweredby{display:block;padding-top:2px;font-weight:400;color:var(--c-text-lighter)}.buy-sell-ads[data-v-4ce5ad17]{margin:0 auto;padding-top:2rem;font-size:.85rem}.bsa-cpc[data-v-4ce5ad17]{border-radius:6px;background-color:var(--c-bg-accent)}.bsa-cpc[data-v-4ce5ad17] a._default_{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:20px;padding:12px;text-decoration:none;line-height:1.4;font-weight:400;color:var(--c-text-light)}@media (min-width: 512px){.bsa-cpc[data-v-4ce5ad17] a._default_{flex-wrap:nowrap}}.bsa-cpc[data-v-4ce5ad17] .default-ad{display:none}.bsa-cpc[data-v-4ce5ad17] a._default_ .default-image{flex-shrink:0;margin-right:12px;width:24px}.bsa-cpc[data-v-4ce5ad17] a._default_ .default-image img{border-radius:4px;height:24px;vertical-align:middle}.bsa-cpc[data-v-4ce5ad17] ._default_:after{border:1px solid #1c90f3;border-radius:4px;margin-top:8px;margin-left:36px;padding:0 8px;line-height:22px;font-size:.85em;font-weight:500;color:#1c90f3;content:"Sponsored"}@media (min-width: 512px){.bsa-cpc[data-v-4ce5ad17] ._default_:after{margin-top:0;margin-left:12px}}.bsa-cpc[data-v-4ce5ad17] .default-text{flex-grow:1;align-self:center;width:calc(100% - 36px)}@media (min-width: 512px){.bsa-cpc[data-v-4ce5ad17] .default-text{width:auto}}.bsa-cpc[data-v-4ce5ad17] .default-title{font-weight:600}.bsa-cpc[data-v-4ce5ad17] .default-description{padding-left:8px}/*! @docsearch/css 3.0.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding-bottom:2px;position:relative;top:-1px;width:20px}@media (max-width:750px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:focus{outline:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"\bb "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding-bottom:1px;width:20px}@media (max-width:750px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.algolia-search-box{padding-top:1px}@media (min-width: 720px){.algolia-search-box{padding-left:8px}}@media (min-width: 751px){.algolia-search-box{min-width:176.3px}.algolia-search-box .DocSearch-Button-Placeholder{padding-left:8px;font-size:.9rem;font-weight:500}}.DocSearch{--docsearch-primary-color: var(--c-brand);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-text-color: var(--c-text-light);--docsearch-muted-color: var(--c-text-lighter);--docsearch-searchbox-background: #f2f2f2} +:root{--c-white: #ffffff;--c-white-dark: #f8f8f8;--c-black: #000000;--c-divider-light: rgba(60, 60, 67, .12);--c-divider-dark: rgba(84, 84, 88, .48);--c-text-light-1: #2c3e50;--c-text-light-2: #476582;--c-text-light-3: #90a4b7;--c-brand: #3eaf7c;--c-brand-light: #4abf8a;--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-mono: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;--z-index-navbar: 10;--z-index-sidebar: 6;--shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16);--header-height: 3.6rem}:root{--c-divider: var(--c-divider-light);--c-text: var(--c-text-light-1);--c-text-light: var(--c-text-light-2);--c-text-lighter: var(--c-text-light-3);--c-bg: var(--c-white);--c-bg-accent: var(--c-white-dark);--code-line-height: 24px;--code-font-family: var(--font-family-mono);--code-font-size: 14px;--code-inline-bg-color: rgba(27, 31, 35, .05);--code-bg-color: #282c34}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:1.4;font-family:var(--font-family-base);font-size:16px;font-weight:400;color:var(--c-text);background-color:var(--c-bg);direction:ltr;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:1.25}h1,h2,h3,h4,h5,h6,strong,b{font-weight:600}h1:hover .header-anchor,h1:focus .header-anchor,h2:hover .header-anchor,h2:focus .header-anchor,h3:hover .header-anchor,h3:focus .header-anchor,h4:hover .header-anchor,h4:focus .header-anchor,h5:hover .header-anchor,h5:focus .header-anchor,h6:hover .header-anchor,h6:focus .header-anchor{opacity:1}h1{margin-top:1.5rem;font-size:1.9rem}@media screen and (min-width: 420px){h1{font-size:2.2rem}}h2{margin-top:2.25rem;margin-bottom:1.25rem;border-bottom:1px solid var(--c-divider);padding-bottom:.3rem;line-height:1.25;font-size:1.65rem}h2+h3{margin-top:1.5rem}h3{margin-top:2rem;font-size:1.35rem}h4{font-size:1.15rem}p,ol,ul{margin:1rem 0;line-height:1.7}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{text-decoration:none;color:var(--c-brand)}a:hover{text-decoration:underline}a.header-anchor{float:left;margin-top:.125em;margin-left:-.87em;padding-right:.23em;font-size:.85em;opacity:0}a.header-anchor:hover,a.header-anchor:focus{text-decoration:none}figure{margin:0}img{max-width:100%}ul,ol{padding-left:1.25em}li>ul,li>ol{margin:0}table{display:block;border-collapse:collapse;margin:1rem 0;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}th,td{border:1px solid #dfe2e5;padding:.6em 1em}blockquote{margin:1rem 0;border-left:.2rem solid #dfe2e5;padding:.25rem 0 .25rem 1rem;font-size:1rem;color:#999}blockquote>p{margin:0}form{margin:0}.theme.sidebar-open .sidebar-mask{display:block}.theme.no-navbar>h1,.theme.no-navbar>h2,.theme.no-navbar>h3,.theme.no-navbar>h4,.theme.no-navbar>h5,.theme.no-navbar>h6{margin-top:1.5rem;padding-top:0}.theme.no-navbar aside{top:0}@media screen and (min-width: 720px){.theme.no-sidebar aside{display:none}.theme.no-sidebar main{margin-left:0}}.sidebar-mask{position:fixed;z-index:2;display:none;width:100vw;height:100vh}code{margin:0;border-radius:3px;padding:.25rem .5rem;font-family:var(--code-font-family);font-size:.85em;color:var(--c-text-light);background-color:var(--code-inline-bg-color)}code .token.deleted{color:#ec5975}code .token.inserted{color:var(--c-brand)}div[class*=language-]{position:relative;margin:1rem -1.5rem;background-color:var(--code-bg-color);overflow-x:auto}li>div[class*=language-]{border-radius:6px 0 0 6px;margin:1rem -1.5rem 1rem -1.25rem;line-height:initial}@media (min-width: 420px){div[class*=language-]{margin:1rem 0;border-radius:6px}li>div[class*=language-]{margin:1rem 0 1rem 0rem;border-radius:6px}}[class*=language-] pre,[class*=language-] code{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;background:transparent}[class*=language-] pre{position:relative;z-index:1;margin:0;padding:1.25rem 1.5rem;overflow-x:auto}[class*=language-] code{padding:0;line-height:var(--code-line-height);font-size:var(--code-font-size);color:#eee}.highlight-lines{position:absolute;top:0;bottom:0;left:0;padding:1.25rem 0;width:100%;line-height:var(--code-line-height);font-family:var(--code-font-family);font-size:var(--code-font-size);user-select:none;overflow:hidden}.highlight-lines .highlighted{background-color:#000000a8}div[class*=language-].line-numbers-mode{padding-left:3.5rem}.line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid rgba(0,0,0,.5);padding:1.25rem 0;width:3.5rem;text-align:center;line-height:var(--code-line-height);font-family:var(--code-font-family);font-size:var(--code-font-size);color:#888}div[class*=language-]:before{position:absolute;top:.6em;right:1em;z-index:2;font-size:.8rem;color:#888}div[class~=language-html]:before,div[class~=language-markup]:before{content:"html"}div[class~=language-md]:before,div[class~=language-markdown]:before{content:"md"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"styl"}div[class~=language-js]:before,div[class~=language-javascript]:before{content:"js"}div[class~=language-ts]:before,div[class~=language-typescript]:before{content:"ts"}div[class~=language-json]:before{content:"json"}div[class~=language-rb]:before,div[class~=language-ruby]:before{content:"rb"}div[class~=language-py]:before,div[class~=language-python]:before{content:"py"}div[class~=language-sh]:before,div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}div[class~=language-go]:before{content:"go"}div[class~=language-rust]:before{content:"rust"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-vue]:before{content:"vue"}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.custom-block.tip,.custom-block.info,.custom-block.warning,.custom-block.danger{margin:1rem 0;border-left:.5rem solid;padding:.1rem 1.5rem;overflow-x:auto}.custom-block.tip{background-color:#f3f5f7;border-color:var(--c-brand)}.custom-block.info{background-color:#f3f5f7;border-color:var(--c-text-light-2)}.custom-block.warning{border-color:#e7c000;color:#6b5900;background-color:#ffe5644d}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:var(--c-text)}.custom-block.danger{border-color:#c00;color:#4d0000;background-color:#ffe6e6}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:var(--c-text)}.custom-block.details{position:relative;display:block;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.custom-block-title{margin-bottom:-.4rem;font-weight:600}.sidebar-links{margin:0;padding:0;list-style:none}.sidebar-link-item{display:block;margin:0;border-left:.25rem solid transparent;color:var(--c-text)}a.sidebar-link-item:hover{text-decoration:none;color:var(--c-brand)}a.sidebar-link-item.active{color:var(--c-brand)}.sidebar>.sidebar-links{padding:.75rem 0 5rem}@media (min-width: 720px){.sidebar>.sidebar-links{padding:1.5rem 0}}.sidebar>.sidebar-links>.sidebar-link+.sidebar-link{padding-top:.5rem}@media (min-width: 720px){.sidebar>.sidebar-links>.sidebar-link+.sidebar-link{padding-top:1.25rem}}.sidebar>.sidebar-links>.sidebar-link>.sidebar-link-item{padding:.35rem 1.5rem .35rem 1.25rem;font-size:1.1rem;font-weight:700}.sidebar>.sidebar-links>.sidebar-link>a.sidebar-link-item.active{border-left-color:var(--c-brand);font-weight:600}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-link-item{display:block;padding:.35rem 1.5rem .35rem 2rem;line-height:1.4;font-size:1rem;font-weight:400}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>a.sidebar-link-item.active{border-left-color:var(--c-brand);font-weight:600}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-link-item{display:block;padding:.3rem 1.5rem .3rem 3rem;line-height:1.4;font-size:.9rem;font-weight:400}.sidebar>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-links>.sidebar-link>.sidebar-link-item{display:block;padding:.3rem 1.5rem .3rem 4rem;line-height:1.4;font-size:.9rem;font-weight:400}.debug[data-v-bf835584]{box-sizing:border-box;position:fixed;right:8px;bottom:8px;z-index:9999;border-radius:4px;width:74px;height:32px;color:#eee;overflow:hidden;cursor:pointer;background-color:#000000d9;transition:all .15s ease}.debug[data-v-bf835584]:hover{background-color:#000000bf}.debug.open[data-v-bf835584]{right:0;bottom:0;width:100%;height:100%;margin-top:0;border-radius:0;padding:0;overflow:scroll}@media (min-width: 512px){.debug.open[data-v-bf835584]{width:512px}}.debug.open[data-v-bf835584]:hover{background-color:#000000d9}.title[data-v-bf835584]{margin:0;padding:6px 16px;line-height:20px;font-size:13px}.block[data-v-bf835584]{margin:2px 0 0;border-top:1px solid rgba(255,255,255,.16);padding:8px 16px;font-family:Hack,monospace;font-size:13px}.block+.block[data-v-bf835584]{margin-top:8px}.icon.outbound{position:relative;top:-1px;display:inline-block;vertical-align:middle;color:var(--c-text-lighter)}.item[data-v-b8818f8c]{display:block;padding:0 1.5rem;line-height:36px;font-size:1rem;font-weight:600;color:var(--c-text);white-space:nowrap}.item[data-v-b8818f8c]:hover,.item.active[data-v-b8818f8c]{text-decoration:none;color:var(--c-brand)}.item.external[data-v-b8818f8c]:hover{border-bottom-color:transparent;color:var(--c-text)}@media (min-width: 720px){.item[data-v-b8818f8c]{border-bottom:2px solid transparent;padding:0;line-height:24px;font-size:.9rem;font-weight:500}.item[data-v-b8818f8c]:hover,.item.active[data-v-b8818f8c]{border-bottom-color:var(--c-brand);color:var(--c-text)}}.home-hero[data-v-370f18c0]{margin:2.5rem 0 2.75rem;padding:0 1.5rem;text-align:center}@media (min-width: 420px){.home-hero[data-v-370f18c0]{margin:3.5rem 0}}@media (min-width: 720px){.home-hero[data-v-370f18c0]{margin:4rem 0 4.25rem}}.figure[data-v-370f18c0]{padding:0 1.5rem}.image[data-v-370f18c0]{display:block;margin:0 auto;width:auto;max-width:100%;max-height:280px}.title[data-v-370f18c0]{margin-top:1.5rem;font-size:2rem}@media (min-width: 420px){.title[data-v-370f18c0]{font-size:3rem}}@media (min-width: 720px){.title[data-v-370f18c0]{margin-top:2rem}}.tagline[data-v-370f18c0]{margin:0;margin-top:.25rem;line-height:1.3;font-size:1.2rem;color:var(--c-text-light)}@media (min-width: 420px){.tagline[data-v-370f18c0]{line-height:1.2;font-size:1.6rem}}.action[data-v-370f18c0]{margin-top:1.5rem;display:inline-block}.action.alt[data-v-370f18c0]{margin-left:1.5rem}@media (min-width: 420px){.action[data-v-370f18c0]{margin-top:2rem;display:inline-block}}.action[data-v-370f18c0] .item{display:inline-block;border-radius:6px;padding:0 20px;line-height:44px;font-size:1rem;font-weight:500;color:var(--c-bg);background-color:var(--c-brand);border:2px solid var(--c-brand);transition:background-color .1s ease}.action.alt[data-v-370f18c0] .item{background-color:var(--c-bg);color:var(--c-brand)}.action[data-v-370f18c0] .item:hover{text-decoration:none;color:var(--c-bg);background-color:var(--c-brand-light)}@media (min-width: 420px){.action[data-v-370f18c0] .item{padding:0 24px;line-height:52px;font-size:1.2rem;font-weight:500}}.home-features[data-v-e39c13e0]{margin:0 auto;padding:2.5rem 0 2.75rem;max-width:960px}.home-hero+.home-features[data-v-e39c13e0]{padding-top:0}@media (min-width: 420px){.home-features[data-v-e39c13e0]{padding:3.25rem 0 3.5rem}.home-hero+.home-features[data-v-e39c13e0]{padding-top:0}}@media (min-width: 720px){.home-features[data-v-e39c13e0]{padding-right:1.5rem;padding-left:1.5rem}}.wrapper[data-v-e39c13e0]{padding:0 1.5rem}.home-hero+.home-features .wrapper[data-v-e39c13e0]{border-top:1px solid var(--c-divider);padding-top:2.5rem}@media (min-width: 420px){.home-hero+.home-features .wrapper[data-v-e39c13e0]{padding-top:3.25rem}}@media (min-width: 720px){.wrapper[data-v-e39c13e0]{padding-right:0;padding-left:0}}.container[data-v-e39c13e0]{margin:0 auto;max-width:392px}@media (min-width: 720px){.container[data-v-e39c13e0]{max-width:960px}}.features[data-v-e39c13e0]{display:flex;flex-wrap:wrap;margin:-20px -24px}.feature[data-v-e39c13e0]{flex-shrink:0;padding:20px 24px;width:100%}@media (min-width: 720px){.feature[data-v-e39c13e0]{width:calc(100% / 3)}}.title[data-v-e39c13e0]{margin:0;border-bottom:0;line-height:1.4;font-size:1.25rem;font-weight:500}@media (min-width: 420px){.title[data-v-e39c13e0]{font-size:1.4rem}}.details[data-v-e39c13e0]{margin:0;line-height:1.6;font-size:1rem;color:var(--c-text-light)}.title+.details[data-v-e39c13e0]{padding-top:.25rem}.footer[data-v-30918238]{margin:0 auto;max-width:960px}@media (min-width: 720px){.footer[data-v-30918238]{padding:0 1.5rem}}.container[data-v-30918238]{padding:2rem 1.5rem 2.25rem}.home-hero+.footer .container[data-v-30918238],.home-features+.footer .container[data-v-30918238],.home-content+.footer .container[data-v-30918238]{border-top:1px solid var(--c-divider)}@media (min-width: 420px){.container[data-v-30918238]{padding:3rem 1.5rem 3.25rem}}.text[data-v-30918238]{margin:0;text-align:center;line-height:1.4;font-size:.9rem;color:var(--c-text-light)}.home[data-v-10122c92]{padding-top:var(--header-height)}.home-content[data-v-10122c92]{max-width:960px;margin:0 auto;padding:0 1.5rem}.nav-bar-title[data-v-cc01ef16]{font-size:1.3rem;font-weight:600;color:var(--c-text);display:flex;justify-content:center;align-items:center}.nav-bar-title[data-v-cc01ef16]:hover{text-decoration:none}.logo[data-v-cc01ef16]{margin-right:.75rem;height:1.3rem;vertical-align:bottom}.item[data-v-bbc27490]{display:block;padding:0 1.5rem 0 2.5rem;line-height:32px;font-size:.9rem;font-weight:500;color:var(--c-text);white-space:nowrap}@media (min-width: 720px){.item[data-v-bbc27490]{padding:0 24px 0 12px;line-height:32px;font-size:.85rem;font-weight:500;color:var(--c-text);white-space:nowrap}.item.active .arrow[data-v-bbc27490]{opacity:1}}.item[data-v-bbc27490]:hover,.item.active[data-v-bbc27490]{text-decoration:none;color:var(--c-brand)}.item.external[data-v-bbc27490]:hover{border-bottom-color:transparent;color:var(--c-text)}@media (min-width: 720px){.arrow[data-v-bbc27490]{display:inline-block;margin-right:8px;border-top:6px solid #ccc;border-right:4px solid transparent;border-bottom:0;border-left:4px solid transparent;vertical-align:middle;opacity:0;transform:translateY(-2px) rotate(-90deg)}}.nav-dropdown-link[data-v-56bf3a3f]{position:relative;height:36px;overflow:hidden;cursor:pointer}@media (min-width: 720px){.nav-dropdown-link[data-v-56bf3a3f]{height:auto;overflow:visible}.nav-dropdown-link:hover .dialog[data-v-56bf3a3f]{display:block}}.nav-dropdown-link.open[data-v-56bf3a3f]{height:auto}.button[data-v-56bf3a3f]{display:block;border:0;padding:0 1.5rem;width:100%;text-align:left;line-height:36px;font-family:var(--font-family-base);font-size:1rem;font-weight:600;color:var(--c-text);white-space:nowrap;background-color:transparent;cursor:pointer}.button[data-v-56bf3a3f]:focus{outline:0}@media (min-width: 720px){.button[data-v-56bf3a3f]{border-bottom:2px solid transparent;padding:0;line-height:24px;font-size:.9rem;font-weight:500}}.button-arrow[data-v-56bf3a3f]{display:inline-block;margin-top:-1px;margin-left:8px;border-top:6px solid #ccc;border-right:4px solid transparent;border-bottom:0;border-left:4px solid transparent;vertical-align:middle}.button-arrow.right[data-v-56bf3a3f]{transform:rotate(-90deg)}@media (min-width: 720px){.button-arrow.right[data-v-56bf3a3f]{transform:rotate(0)}}.dialog[data-v-56bf3a3f]{margin:0;padding:0;list-style:none}@media (min-width: 720px){.dialog[data-v-56bf3a3f]{display:none;position:absolute;top:26px;right:-8px;border-radius:6px;padding:12px 0;min-width:128px;background-color:var(--c-bg);box-shadow:var(--shadow-3)}}.nav-links[data-v-eab3edfe]{padding:.75rem 0;border-bottom:1px solid var(--c-divider)}@media (min-width: 720px){.nav-links[data-v-eab3edfe]{display:flex;padding:6px 0 0;align-items:center;border-bottom:0}.item+.item[data-v-eab3edfe]{padding-left:24px}}.sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media screen and (max-width: 719px){.sidebar-button{display:block}}.nav-bar[data-v-675d8756]{position:fixed;top:0;right:0;left:0;z-index:var(--z-index-navbar);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--c-divider);padding:.7rem 1.5rem .7rem 4rem;height:var(--header-height);background-color:var(--c-bg)}@media (min-width: 720px){.nav-bar[data-v-675d8756]{padding:.7rem 1.5rem}}.flex-grow[data-v-675d8756]{flex-grow:1}.nav[data-v-675d8756]{display:none}@media (min-width: 720px){.nav[data-v-675d8756]{display:block}}.sidebar[data-v-83e92a68]{position:fixed;top:var(--header-height);bottom:0;left:0;z-index:var(--z-index-sidebar);border-right:1px solid var(--c-divider);width:16.4rem;background-color:var(--c-bg);overflow-y:auto;transform:translate(-100%);transition:transform .25s ease}@media (min-width: 720px){.sidebar[data-v-83e92a68]{transform:translate(0)}}@media (min-width: 960px){.sidebar[data-v-83e92a68]{width:20rem}}.sidebar.open[data-v-83e92a68]{transform:translate(0)}.nav[data-v-83e92a68]{display:block}@media (min-width: 720px){.nav[data-v-83e92a68]{display:none}}.link[data-v-1ed99556]{display:inline-block;font-size:1rem;font-weight:500;color:var(--c-text-light)}.link[data-v-1ed99556]:hover{text-decoration:none;color:var(--c-brand)}.icon[data-v-1ed99556]{margin-left:4px}.last-updated[data-v-abce3432]{display:inline-block;margin:0;line-height:1.4;font-size:.9rem;color:var(--c-text-light)}@media (min-width: 960px){.last-updated[data-v-abce3432]{font-size:1rem}}.prefix[data-v-abce3432]{display:inline-block;font-weight:500}.datetime[data-v-abce3432]{display:inline-block;margin-left:6px;font-weight:400}.page-footer[data-v-07c132fc]{padding-top:1rem;padding-bottom:1rem;overflow:auto}@media (min-width: 960px){.page-footer[data-v-07c132fc]{display:flex;justify-content:space-between;align-items:center}}.updated[data-v-07c132fc]{padding-top:4px}@media (min-width: 960px){.updated[data-v-07c132fc]{padding-top:0}}.next-and-prev-link[data-v-38ede35f]{padding-top:1rem}.container[data-v-38ede35f]{display:flex;justify-content:space-between;border-top:1px solid var(--c-divider);padding-top:1rem}.prev[data-v-38ede35f],.next[data-v-38ede35f]{display:flex;flex-shrink:0;width:50%}.prev[data-v-38ede35f]{justify-content:flex-start;padding-right:12px}.next[data-v-38ede35f]{justify-content:flex-end;padding-left:12px}.link[data-v-38ede35f]{display:inline-flex;align-items:center;max-width:100%;font-size:1rem;font-weight:500}.text[data-v-38ede35f]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon[data-v-38ede35f]{display:block;flex-shrink:0;width:16px;height:16px;fill:var(--c-text);transform:translateY(1px)}.icon-prev[data-v-38ede35f]{margin-right:8px}.icon-next[data-v-38ede35f]{margin-left:8px}.page[data-v-7eddb2c4]{padding-top:var(--header-height)}@media (min-width: 720px){.page[data-v-7eddb2c4]{margin-left:16.4rem}}@media (min-width: 960px){.page[data-v-7eddb2c4]{margin-left:20rem}}.container[data-v-7eddb2c4]{margin:0 auto;padding:0 1.5rem 4rem;max-width:48rem}.content[data-v-7eddb2c4]{padding-bottom:1.5rem}@media (max-width: 420px){.content[data-v-7eddb2c4]{clear:both}}#ads-container{margin:0 auto}@media (min-width: 420px){#ads-container{position:relative;right:0;float:right;margin:-8px -8px 24px 24px;width:146px}}@media (max-width: 420px){#ads-container{height:105px;margin:1.75rem 0}}@media (min-width: 1400px){#ads-container{position:fixed;right:8px;bottom:8px}} diff --git a/assets/vercel-configuration.e8badd11.png b/assets/vercel-configuration.e8badd11.png deleted file mode 100644 index 51874e15..00000000 Binary files a/assets/vercel-configuration.e8badd11.png and /dev/null differ diff --git a/config/algolia-search.html b/config/algolia-search.html deleted file mode 100644 index a878db04..00000000 --- a/config/algolia-search.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - Theme Config: Algolia Search | VitePress - - - - - - - - - - - - -

Theme Config: Algolia Search

The themeConfig.algolia option allows you to use Algolia DocSearch. To enable it, you need to provide at least appId, apiKey and indexName:

module.exports = {
-  themeConfig: {
-    algolia: {
-      appId: 'your_app_id',
-      apiKey: 'your_api_key',
-      indexName: 'index_name'
-    }
-  }
-}
-

For more options, check out Algolia DocSearch's documentation. You can pass any extra option alongside other options, e.g. passing searchParameters:

module.exports = {
-  themeConfig: {
-    algolia: {
-      appId: 'your_app_id',
-      apiKey: 'your_api_key',
-      indexName: 'index_name',
-      searchParameters: {
-        facetFilters: ['tags:guide,api']
-      }
-    }
-  }
-}
-

Internationalization (i18n)

If you have multiple locales in your documentation and you have defined a locales object in your themeConfig:

module.exports = {
-  themeConfig: {
-    locales: {
-      // ...
-    },
-    algolia: {
-      appId: 'your_app_id',
-      apiKey: 'your_api_key',
-      indexName: 'index_name'
-    }
-  }
-}
-

VitePress will automatically add a lang facetFilter to the searchParameters.facetFilter array with the correct language value. Algolia automatically adds the correct facet filter based on the lang attribute on the <html> tag. This will match search results with the currently viewed language of the page.

- - - - - \ No newline at end of file diff --git a/config/basics.html b/config/basics.html deleted file mode 100644 index 9b19e064..00000000 --- a/config/basics.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - App Config: Basics | VitePress - - - - - - - - - - - - -

App Config: Basics

TIP

The config reference is incomplete since the config format may still receive further changes. For a complete reference of the current available options, refer to config.ts.

base

  • Type: string
  • Default: /

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, for example, GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/, then you should set base to '/bar/'. It should always start and end with a slash.

The base is automatically prepended to all the URLs that start with / in other options, so you only need to specify it once.

module.exports = {
-  base: '/base/'
-}
-

lang

  • Type: string
  • Default: en-US

The lang attribute for the site. This will render as a <html lang="en-US"> tag in the page HTML.

module.exports = {
-  lang: 'en-US'
-}
-

title

  • Type: string
  • Default: VitePress

Title for the site. This will be the suffix for all page titles, and displayed in the navbar.

module.exports = {
-  title: 'VitePress'
-}
-

description

  • Type: string
  • Default: A VitePress site

Description for the site. This will render as a <meta> tag in the page HTML.

module.exports = {
-  description: 'A VitePress site'
-}
-
- - - - - \ No newline at end of file diff --git a/config/carbon-ads.html b/config/carbon-ads.html deleted file mode 100644 index 52e63a88..00000000 --- a/config/carbon-ads.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - Theme Config: Carbon Ads | VitePress - - - - - - - - - - - - -

Theme Config: Carbon Ads

VitePress has built in native support for Carbon Ads. By defining the Carbon Ads credentials in config, VitePress will display ads on the page.

module.exports = {
-  themeConfig: {
-    carbonAds: {
-      carbon: 'your-carbon-key',
-      custom: 'your-carbon-custom',
-      placement: 'your-carbon-placement'
-    }
-  }
-}
-
- - - - - \ No newline at end of file diff --git a/config/homepage.html b/config/homepage.html deleted file mode 100644 index d7fb31a1..00000000 --- a/config/homepage.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Theme Config: Homepage | VitePress - - - - - - - - - - - - -

Theme Config: Homepage

VitePress provides a homepage layout. To use it, specify home: true plus some other metadata in your root index.md's YAML frontmatter. This is an example of how it works:

---
-home: true
-heroImage: /logo.png
-heroAlt: Logo image
-heroText: Hero Title
-tagline: Hero subtitle
-actionText: Get Started
-actionLink: /guide/
-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 + webpack, use Vue components in markdown, and develop custom themes with Vue.
-  - title: Performant
-    details: VitePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded.
-footer: MIT Licensed | Copyright © 2019-present Evan You
----
-
- - - - - \ No newline at end of file diff --git a/developer/algolia-search.html b/developer/algolia-search.html new file mode 100644 index 00000000..5d07e4c0 --- /dev/null +++ b/developer/algolia-search.html @@ -0,0 +1,54 @@ + + + + + + Theme Config: Algolia Search | 哪吒监控 + + + + + + + + + +

Theme Config: Algolia Search

The themeConfig.algolia option allows you to use Algolia DocSearch. To enable it, you need to provide at least appId, apiKey and indexName:

module.exports = {
+  themeConfig: {
+    algolia: {
+      appId: 'your_app_id',
+      apiKey: 'your_api_key',
+      indexName: 'index_name'
+    }
+  }
+}
+

For more options, check out Algolia DocSearch's documentation. You can pass any extra option alongside other options, e.g. passing searchParameters:

module.exports = {
+  themeConfig: {
+    algolia: {
+      appId: 'your_app_id',
+      apiKey: 'your_api_key',
+      indexName: 'index_name',
+      searchParameters: {
+        facetFilters: ['tags:guide,api']
+      }
+    }
+  }
+}
+

Internationalization (i18n)

If you have multiple locales in your documentation and you have defined a locales object in your themeConfig:

module.exports = {
+  themeConfig: {
+    locales: {
+      // ...
+    },
+    algolia: {
+      appId: 'your_app_id',
+      apiKey: 'your_api_key',
+      indexName: 'index_name'
+    }
+  }
+}
+

VitePress will automatically add a lang facetFilter to the searchParameters.facetFilter array with the correct language value. Algolia automatically adds the correct facet filter based on the lang attribute on the <html> tag. This will match search results with the currently viewed language of the page.

+ + + + + \ No newline at end of file diff --git a/developer/basics.html b/developer/basics.html new file mode 100644 index 00000000..88519c7e --- /dev/null +++ b/developer/basics.html @@ -0,0 +1,33 @@ + + + + + + App Config: Basics | 哪吒监控 + + + + + + + + + +

App Config: Basics

TIP

The config reference is incomplete since the config format may still receive further changes. For a complete reference of the current available options, refer to config.ts.

base

  • Type: string
  • Default: /

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, for example, GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/, then you should set base to '/bar/'. It should always start and end with a slash.

The base is automatically prepended to all the URLs that start with / in other options, so you only need to specify it once.

module.exports = {
+  base: '/base/'
+}
+

lang

  • Type: string
  • Default: en-US

The lang attribute for the site. This will render as a <html lang="en-US"> tag in the page HTML.

module.exports = {
+  lang: 'en-US'
+}
+

title

  • Type: string
  • Default: VitePress

Title for the site. This will be the suffix for all page titles, and displayed in the navbar.

module.exports = {
+  title: 'VitePress'
+}
+

description

  • Type: string
  • Default: A VitePress site

Description for the site. This will render as a <meta> tag in the page HTML.

module.exports = {
+  description: 'A VitePress site'
+}
+
+ + + + + \ No newline at end of file diff --git a/developer/carbon-ads.html b/developer/carbon-ads.html new file mode 100644 index 00000000..747c1709 --- /dev/null +++ b/developer/carbon-ads.html @@ -0,0 +1,30 @@ + + + + + + Theme Config: Carbon Ads | 哪吒监控 + + + + + + + + + +

Theme Config: Carbon Ads

VitePress has built in native support for Carbon Ads. By defining the Carbon Ads credentials in config, VitePress will display ads on the page.

module.exports = {
+  themeConfig: {
+    carbonAds: {
+      carbon: 'your-carbon-key',
+      custom: 'your-carbon-custom',
+      placement: 'your-carbon-placement'
+    }
+  }
+}
+
+ + + + + \ No newline at end of file diff --git a/developer/homepage.html b/developer/homepage.html new file mode 100644 index 00000000..21bcba8b --- /dev/null +++ b/developer/homepage.html @@ -0,0 +1,38 @@ + + + + + + Theme Config: Homepage | 哪吒监控 + + + + + + + + + +

Theme Config: Homepage

VitePress provides a homepage layout. To use it, specify home: true plus some other metadata in your root index.md's YAML frontmatter. This is an example of how it works:

---
+home: true
+heroImage: /logo.png
+heroAlt: Logo image
+heroText: Hero Title
+tagline: Hero subtitle
+actionText: Get Started
+actionLink: /guide/
+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 + webpack, use Vue components in markdown, and develop custom themes with Vue.
+  - title: Performant
+    details: VitePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded.
+footer: MIT Licensed | Copyright © 2019-present Evan You
+---
+
+ + + + + \ No newline at end of file diff --git a/en_US/developer/algolia-search.html b/en_US/developer/algolia-search.html new file mode 100644 index 00000000..0d44f054 --- /dev/null +++ b/en_US/developer/algolia-search.html @@ -0,0 +1,21 @@ + + + + + + Theme Config: Algolia Search | Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/developer/basics.html b/en_US/developer/basics.html new file mode 100644 index 00000000..420da6a4 --- /dev/null +++ b/en_US/developer/basics.html @@ -0,0 +1,21 @@ + + + + + + App Config: Basics | Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/developer/carbon-ads.html b/en_US/developer/carbon-ads.html new file mode 100644 index 00000000..730cc41f --- /dev/null +++ b/en_US/developer/carbon-ads.html @@ -0,0 +1,21 @@ + + + + + + Theme Config: Carbon Ads | Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/developer/homepage.html b/en_US/developer/homepage.html new file mode 100644 index 00000000..ee20ebc1 --- /dev/null +++ b/en_US/developer/homepage.html @@ -0,0 +1,21 @@ + + + + + + Theme Config: Homepage | Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/agent.html b/en_US/guide/agent.html new file mode 100644 index 00000000..97893d61 --- /dev/null +++ b/en_US/guide/agent.html @@ -0,0 +1,44 @@ + + + + + + Install Agent using one-click script | Nezha Monitoring + + + + + + + + + +

哪吒监控的被控端服务被称为Agent,本文档将介绍如何在被控端服务器上安装Agent,并与Dashboard连接

Install Agent using one-click script

目前哪吒监控已支持在WIndows和Linux上一键安装Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它

准备工作


你需要提前在管理面板中设置好通信域名,此域名不可以接入CDN,这里以前面提到过的示例通信域名 “data.example.com” 来做演示
进入后台管理面板,转到“设置”页,在“未接入CDN的面板服务器域名/IP”项中填入通信域名,然后点击"保存"

Linux一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Linux图标按钮,复制一键安装命令
  • 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到Dashboard主页查看服务器是否上线

Windows一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Windows图标按钮,复制一键安装命令
  • 进入Windows服务器,运行PowerShell,在PowerShell中运行复制的安装命令
  • 如遇到确认「执行策略变更」请选择 Y
  • 等待安装完成后返回Dashboard主页查看服务器是否上线



其他方式安装Agent



Linux安装Agent


  • 首先在管理面板中添加一台服务器
  • 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+
+
  • 选择“安装监控Agent”
  • 输入通信域名,如:”data.example.com
  • 输入面板通信端口,默认为5555
  • 输入Agent密钥,Agent密钥在管理面板中添加服务器时生成,可以在管理面板中的“主机”页中找到
  • 等待安装完成后返回Dashboard主页查看服务器是否上线

Windows安装Agent


OpenWRT安装Agent


如何使 旧版OpenWRT/LEDE 自启动

如何使 新版OpenWRT 自启动?来自 @艾斯德斯

  • 首先在 release 下载对应的二进制解压 zip 包后放置到 /root
  • 运行 chmod +x /root/nezha-agent 赋予执行权限,然后创建 /etc/init.d/nezha-service
#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+start_service() {
+ procd_open_instance
+ procd_set_param command /root/nezha-agent -s 面板通信地址:端口 -p 秘钥 -d
+ procd_set_param respawn
+ procd_close_instance
+}
+
+stop_service() {
+    killall nezha-agent
+}
+
+restart() {
+ stop
+ sleep 2
+ start
+}
+
  • 运行 chmod +x /etc/init.d/nezha-service 赋予执行权限
  • 启动服务: /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



自定义Agent监控项目


自定义监控的网卡和硬盘分区

  • 执行 /opt/nezha/agent/nezha-agent --edit-agent-config 来选择自定义的网卡和分区,然后重启 Agent 即可生效

其他运行参数

通过执行 ./nezha-agent --help 查看支持的参数,如果你使用了一键脚本安装Agent,可以编辑 /etc/systemd/system/nezha-agent.service,在 ExecStart= 这一行的末尾加上以下参数

  • --report-delay 控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
  • --skip-conn 不监控连接数,推荐 机场/连接密集型服务器或CPU占用较高的服务器设置
  • --skip-procs 不监控进程数,也可以降低 agent 占用
  • --disable-auto-update 禁止 自动更新 Agent(安全特性)
  • --disable-force-update 禁止 强制更新 Agent(安全特性)
  • --disable-command-execute 禁止在 Agent 上执行定时任务、打开在线终端(安全特性)
  • --tls 启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)
+ + + + + \ No newline at end of file diff --git a/en_US/guide/dashboard.html b/en_US/guide/dashboard.html new file mode 100644 index 00000000..c0bd7daa --- /dev/null +++ b/en_US/guide/dashboard.html @@ -0,0 +1,44 @@ + + + + + + Preparations | Nezha Monitoring + + + + + + + + + +

Preparations


搭建一个哪吒监控,你需要:

  1. 一台可以连接公网的VPS,防火墙和安全策略需要放行8008和5555端口,否则会无法访问和无法接收数据。单核512MB内存的服务器配置就足以满足大多数使用场景
  2. 一个已经设置好A记录,指向Dashboard服务器ip的域名

TIP

如果你想使用CDN,请准备两个域名,一个配置好CDN用作公开访问,CDN需要支持WebSocket协议;另一个域名不要使用CDN,用作Agent端与Dashboard的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示

  1. 一个Github/Gitee账号

本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考

获取Github的Client ID和密钥


哪吒监控接入Github和Gitee作为后台管理员账号

  • 首先我们需要新建一个验证应用,以Github为例,登陆Github后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App”
    Application name - 随意填写
    Homepage URL - 填写面板的访问域名,如:"http://cdn.example.com"
    Authorization callback URL - 填写回调地址,如:"http://cdn.example.com/oauth2/callback"
  • 点击“Register application”
  • 保存页面中的Client ID,然后点击 “Generate a new client secret“,创建一个新的Client Secret,新建的密钥仅会显示一次,请妥善保存

在服务器中安装Dashboard


  • 在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+

如果你的面板服务器位于中国大陆,可以使用镜像:

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
+
  • 等待Docker安装完毕后,分别输入以下值:
    OAuth提供商 - Github或Gitee
    Client ID - 之前保存的Client ID
    Client Secret - 之前保存的密钥
    用户名 - Github或Gitee的用户名
    站点标题 - 自定义站点标题
    访问端口 - 公开访问端口,可自定义,默认8008
    Agent的通信端口 - Agent与Dashboard的通信端口,默认5555

  • 输入完成后,等待拉取镜像
    安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://cdn.example.com:8008” 来查看面板

  • 将来如果需要再次运行脚本,可以运行:

./nezha.sh
+

来打开管理脚本


配置反向代理


  • 在宝塔面板中新建一个站点,域名填写公开访问域名,如 “http://cdn.example.com“ ,然后点击“设置”进入站点设置选项,选择“反向代理” - “新建反向代理”

  • 自定义一个代理名称,在下方“目标URL”中填入 http://127.0.0.1 然后点击“保存”

  • 打开刚刚新建的反向代理右边的“配置文件”,将配置文件替换为以下内容:

#PROXY-START/
+location / {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_set_header Host $host;
+    proxy_set_header      Upgrade $http_upgrade;
+}
+location ~ ^/(ws|terminal/.+)$  {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "Upgrade";
+    proxy_set_header Host $host;
+}
+#PROXY-END/
+
  • 点击“保存”
    现在,你应该可以直接使用域名,如:“http://cdn.example.com“ 来访问面板了

扩展内容:

  • CaddyServer v1(v2 无需特别配置)

    proxy /ws http://ip:8008 {
    +    websocket
    +}
    +proxy /terminal/* http://ip:8008 {
    +    websocket
    +}
    +


在宝塔面板中配置SSL


首先,先暂时关闭反向代理
正如在其他网站中配置SSL证书一样,进入站点设置中的“SSL”,你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成SSL的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的"Homepage URL"和"Authorization callback URL"中的域名全部从http改为https,如:"https://cdn.example.com" 和 "https://cdn.example.com/oauth2/callback" ,不更改此项可能会导致你无法登陆面板后台

+ + + + + \ No newline at end of file diff --git a/en_US/guide/notifications.html b/en_US/guide/notifications.html new file mode 100644 index 00000000..090ba297 --- /dev/null +++ b/en_US/guide/notifications.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/q1.html b/en_US/guide/q1.html new file mode 100644 index 00000000..726d6d45 --- /dev/null +++ b/en_US/guide/q1.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/q2.html b/en_US/guide/q2.html new file mode 100644 index 00000000..bc808387 --- /dev/null +++ b/en_US/guide/q2.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/q3.html b/en_US/guide/q3.html new file mode 100644 index 00000000..1745e095 --- /dev/null +++ b/en_US/guide/q3.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/q4.html b/en_US/guide/q4.html new file mode 100644 index 00000000..d47171ad --- /dev/null +++ b/en_US/guide/q4.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/q5.html b/en_US/guide/q5.html new file mode 100644 index 00000000..81758138 --- /dev/null +++ b/en_US/guide/q5.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/servers.html b/en_US/guide/servers.html new file mode 100644 index 00000000..b6260f16 --- /dev/null +++ b/en_US/guide/servers.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/services.html b/en_US/guide/services.html new file mode 100644 index 00000000..5c7a9689 --- /dev/null +++ b/en_US/guide/services.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/settings.html b/en_US/guide/settings.html new file mode 100644 index 00000000..17c034ec --- /dev/null +++ b/en_US/guide/settings.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/tasks.html b/en_US/guide/tasks.html new file mode 100644 index 00000000..e670d3ff --- /dev/null +++ b/en_US/guide/tasks.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/index.html b/en_US/index.html new file mode 100644 index 00000000..c0424679 --- /dev/null +++ b/en_US/index.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + +

Nezha Monitoring

Self-hosted lightweight multi-server and website monitoring and alerting.

特性1

特性1特性1特性1

特性2

特性2特性2特性2

特性3

特性3特性3特性3

Licence | Copyright © 2022-present Nezhahq

+ + + + + \ No newline at end of file diff --git a/guide/agent.html b/guide/agent.html new file mode 100644 index 00000000..242f6cc5 --- /dev/null +++ b/guide/agent.html @@ -0,0 +1,44 @@ + + + + + + 一键安装Agent | 哪吒监控 + + + + + + + + + +

哪吒监控的被控端服务被称为Agent,本文档将介绍如何在被控端服务器上安装Agent,并与Dashboard连接

一键安装Agent


目前哪吒监控已支持在WIndows和Linux上一键安装Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它

准备工作


你需要提前在管理面板中设置好通信域名,此域名不可以接入CDN,这里以前面提到过的示例通信域名 “data.example.com” 来做演示
进入后台管理面板,转到“设置”页,在“未接入CDN的面板服务器域名/IP”项中填入通信域名,然后点击"保存"

Linux一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Linux图标按钮,复制一键安装命令
  • 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到Dashboard主页查看服务器是否上线

Windows一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Windows图标按钮,复制一键安装命令
  • 进入Windows服务器,运行PowerShell,在PowerShell中运行复制的安装命令
  • 如遇到确认「执行策略变更」请选择 Y
  • 等待安装完成后返回Dashboard主页查看服务器是否上线



其他方式安装Agent



Linux安装Agent


  • 首先在管理面板中添加一台服务器
  • 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+
+
  • 选择“安装监控Agent”
  • 输入通信域名,如:”data.example.com
  • 输入面板通信端口,默认为5555
  • 输入Agent密钥,Agent密钥在管理面板中添加服务器时生成,可以在管理面板中的“主机”页中找到
  • 等待安装完成后返回Dashboard主页查看服务器是否上线

Windows安装Agent


OpenWRT安装Agent


如何使 旧版OpenWRT/LEDE 自启动

如何使 新版OpenWRT 自启动?来自 @艾斯德斯

  • 首先在 release 下载对应的二进制解压 zip 包后放置到 /root
  • 运行 chmod +x /root/nezha-agent 赋予执行权限,然后创建 /etc/init.d/nezha-service
#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+start_service() {
+ procd_open_instance
+ procd_set_param command /root/nezha-agent -s 面板通信地址:端口 -p 秘钥 -d
+ procd_set_param respawn
+ procd_close_instance
+}
+
+stop_service() {
+    killall nezha-agent
+}
+
+restart() {
+ stop
+ sleep 2
+ start
+}
+
  • 运行 chmod +x /etc/init.d/nezha-service 赋予执行权限
  • 启动服务: /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



自定义Agent监控项目


自定义监控的网卡和硬盘分区

  • 执行 /opt/nezha/agent/nezha-agent --edit-agent-config 来选择自定义的网卡和分区,然后重启 Agent 即可生效

其他运行参数

通过执行 ./nezha-agent --help 查看支持的参数,如果你使用了一键脚本安装Agent,可以编辑 /etc/systemd/system/nezha-agent.service,在 ExecStart= 这一行的末尾加上以下参数

  • --report-delay 控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
  • --skip-conn 不监控连接数,推荐 机场/连接密集型服务器或CPU占用较高的服务器设置
  • --skip-procs 不监控进程数,也可以降低 agent 占用
  • --disable-auto-update 禁止 自动更新 Agent(安全特性)
  • --disable-force-update 禁止 强制更新 Agent(安全特性)
  • --disable-command-execute 禁止在 Agent 上执行定时任务、打开在线终端(安全特性)
  • --tls 启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)
+ + + + + \ No newline at end of file diff --git a/guide/api.html b/guide/api.html deleted file mode 100644 index 5455b726..00000000 --- a/guide/api.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - API Reference | VitePress - - - - - - - - - - - - -

API Reference

Helper Methods

The following methods are globally importable from vitepress and are typically used in custom theme Vue components. However, they are also usable inside .md pages because markdown files are compiled into Vue single-file components.

Methods that start with use* indicates that it is a Vue 3 Composition API function that can only be used inside setup() or <script setup>.

useData

Returns page-specific data. The returned object has the following type:

interface VitePressData {
-  site: Ref<SiteData>
-  page: Ref<PageData>
-  theme: Ref<any> // themeConfig from .vitepress/config.js
-  frontmatter: Ref<PageData['frontmatter']>
-  title: Ref<string>
-  description: Ref<string>
-  lang: Ref<string>
-  localePath: Ref<string>
-}
-

Example:

<script setup>
-import { useData } from 'vitepress'
-const { theme } = useData()
-</script>
-
-<template>
-  <h1>{{ theme.heroText }}</h1>
-</template>
-

useRoute

Returns the current route object with the following type:

interface Route {
-  path: string
-  data: PageData
-  component: Component | null
-}
-

useRouter

Returns the VitePress router instance so you can programmatically navigate to another page.

interface Router {
-  route: Route
-  go: (href?: string) => Promise<void>
-}
-

withBase

  • Type: (path: string) => string

    Appends the configured base to a given URL path. Also see Base URL.

Global Components

VitePress comes with few built-in component that can be used globally. You may use these components in your markdown or your custom theme configuration.

<Content/>

The <Content/> component displays the rendered markdown contents. Useful when creating your own theme.

<template>
-  <h1>Custom Layout!</h1>
-  <Content />
-</template>
-

<ClientOnly/>

The <ClientOnly/> component renders its slot only at client side.

Because VitePress applications are server-rendered in Node.js when generating static builds, any Vue usage must conform to the universal code requirements. In short, make sure to only access Browser / DOM APIs in beforeMount or mounted hooks.

If you are using or demoing components that are not SSR-friendly (for example, contain custom directives), you can wrap them inside the ClientOnly component.

<ClientOnly>
-  <NonSSRFriendlyComponent />
-</ClientOnly>
-
- - - - - \ No newline at end of file diff --git a/guide/assets.html b/guide/assets.html deleted file mode 100644 index 14ab014b..00000000 --- a/guide/assets.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - Asset Handling | VitePress - - - - - - - - - - - - -

Asset Handling

All Markdown files are compiled into Vue components and processed by Vite. You can, and should, reference any assets using relative URLs:

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

You can reference static assets in your markdown files, your *.vue components in the theme, styles and plain .css files either using absolute public paths (based on project root) or relative paths (based on your file system). The latter is similar to the behavior you are used to if you have used vue-cli or webpack's file-loader.

Common image, media, and font filetypes are detected and included as assets automatically.

All referenced assets, including those using absolute paths, will be copied to the dist folder with a hashed file name in the production build. Never-referenced assets will not be copied. Similar to vue-cli, image assets smaller than 4kb will be base64 inlined.

All static path references, including absolute paths, should be based on your working directory structure.

Public Files

Sometimes you may need to provide static assets that are not directly referenced in any of your Markdown or theme components (for example, favicons and PWA icons). The public directory under project root can be used as an escape hatch to provide static assets that either are never referenced in source code (e.g. robots.txt), or must retain the exact same file name (without hashing).

Assets placed in public will be copied to the root of the dist directory as-is.

Note that you should reference files placed in public using root absolute path - for example, public/icon.png should always be referenced in source code as /icon.png.

Base URL

If your site is deployed to a non-root URL, you will need to set the base option in .vitepress/config.js. For example, if you plan to deploy your site to https://foo.github.io/bar/, then base should be set to '/bar/' (it should always start and end with a slash).

All your static asset paths are automatically processed to adjust for different base config values. For example, if you have an absolute reference to an asset under public in your markdown:

![An image](/image-inside-public.png)
-

You do not need to update it when you change the base config value in this case.

However, if you are authoring a theme component that links to assets dynamically, e.g. an image whose src is based on a theme config value:

<img :src="theme.logoPath" />
-

In this case it is recommended to wrap the path with the withBase helper provided by VitePress:

<script setup>
-import { withBase, useData } from 'vitepress'
-
-const { theme } = useData()
-</script>
-
-<template>
-  <img :src="withBase(theme.logoPath)" />
-</template>
-
- - - - - \ No newline at end of file diff --git a/guide/configuration.html b/guide/configuration.html deleted file mode 100644 index b041bd61..00000000 --- a/guide/configuration.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - Configuration | VitePress - - - - - - - - - - - - -

Configuration

Overview

Without any configuration, the page is pretty minimal, and the user has no way to navigate around the site. To customize your site, let’s first create a .vitepress directory inside your docs directory. This is where all VitePress-specific files will be placed. Your project structure is probably like this:

.
-├─ docs
-│  ├─ .vitepress
-│  │  └─ config.js
-│  └─ index.md
-└─ package.json
-

The essential file for configuring a VitePress site is .vitepress/config.js, which should export a JavaScript object:

export default {
-  title: 'Hello VitePress',
-  description: 'Just playing around.'
-}
-

Check out the Config Reference for a full list of options.

Config Intellisense

Since VitePress ships with TypeScript typings, you can leverage your IDE's intellisense with jsdoc type hints:

/**
- * @type {import('vitepress').UserConfig}
- */
-const config = {
-  // ...
-}
-
-export default config
-

Alternatively, you can use the defineConfig helper at which should provide intellisense without the need for jsdoc annotations:

import { defineConfig } from 'vitepress'
-
-export default defineConfig({
-  // ...
-})
-

VitePress also directly supports TS config files. You can use .vitepress/config.ts with the defineConfig helper as well.

Typed Theme Config

By default, defineConfig helper leverages the theme config type from default theme:

import { defineConfig } from 'vitepress'
-
-export default defineConfig({
-  themeConfig: {
-    // Type is `DefaultTheme.Config`
-  }
-})
-

If you use a custom theme and want type checks for the theme config, you'll need to use defineConfigWithTheme instead, and pass the config type for your custom theme via a generic argument:

import { defineConfigWithTheme } from 'vitepress'
-import { ThemeConfig } from 'your-theme'
-
-export default defineConfigWithTheme<ThemeConfig>({
-  themeConfig: {
-    // Type is `ThemeConfig`
-  }
-})
-
- - - - - \ No newline at end of file diff --git a/guide/dashboard.html b/guide/dashboard.html new file mode 100644 index 00000000..f20c6fe2 --- /dev/null +++ b/guide/dashboard.html @@ -0,0 +1,44 @@ + + + + + + 准备工作 | 哪吒监控 + + + + + + + + + +

准备工作


搭建一个哪吒监控,你需要:

  1. 一台可以连接公网的VPS,防火墙和安全策略需要放行8008和5555端口,否则会无法访问和无法接收数据。单核512MB内存的服务器配置就足以满足大多数使用场景
  2. 一个已经设置好A记录,指向Dashboard服务器ip的域名

TIP

如果你想使用CDN,请准备两个域名,一个配置好CDN用作公开访问,CDN需要支持WebSocket协议;另一个域名不要使用CDN,用作Agent端与Dashboard的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示

  1. 一个Github/Gitee账号

本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考

获取Github的Client ID和密钥


哪吒监控接入Github和Gitee作为后台管理员账号

  • 首先我们需要新建一个验证应用,以Github为例,登陆Github后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App”
    Application name - 随意填写
    Homepage URL - 填写面板的访问域名,如:"http://cdn.example.com"
    Authorization callback URL - 填写回调地址,如:"http://cdn.example.com/oauth2/callback"
  • 点击“Register application”
  • 保存页面中的Client ID,然后点击 “Generate a new client secret“,创建一个新的Client Secret,新建的密钥仅会显示一次,请妥善保存

在服务器中安装Dashboard


  • 在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+

如果你的面板服务器位于中国大陆,可以使用镜像:

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
+
  • 等待Docker安装完毕后,分别输入以下值:
    OAuth提供商 - Github或Gitee
    Client ID - 之前保存的Client ID
    Client Secret - 之前保存的密钥
    用户名 - Github或Gitee的用户名
    站点标题 - 自定义站点标题
    访问端口 - 公开访问端口,可自定义,默认8008
    Agent的通信端口 - Agent与Dashboard的通信端口,默认5555

  • 输入完成后,等待拉取镜像
    安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://cdn.example.com:8008” 来查看面板

  • 将来如果需要再次运行脚本,可以运行:

./nezha.sh
+

来打开管理脚本


配置反向代理


  • 在宝塔面板中新建一个站点,域名填写公开访问域名,如 “http://cdn.example.com“ ,然后点击“设置”进入站点设置选项,选择“反向代理” - “新建反向代理”

  • 自定义一个代理名称,在下方“目标URL”中填入 http://127.0.0.1 然后点击“保存”

  • 打开刚刚新建的反向代理右边的“配置文件”,将配置文件替换为以下内容:

#PROXY-START/
+location / {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_set_header Host $host;
+    proxy_set_header      Upgrade $http_upgrade;
+}
+location ~ ^/(ws|terminal/.+)$  {
+    proxy_pass http://127.0.0.1:8008;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "Upgrade";
+    proxy_set_header Host $host;
+}
+#PROXY-END/
+
  • 点击“保存”
    现在,你应该可以直接使用域名,如:“http://cdn.example.com“ 来访问面板了

扩展内容:

  • CaddyServer v1(v2 无需特别配置)

    proxy /ws http://ip:8008 {
    +    websocket
    +}
    +proxy /terminal/* http://ip:8008 {
    +    websocket
    +}
    +


在宝塔面板中配置SSL


首先,先暂时关闭反向代理
正如在其他网站中配置SSL证书一样,进入站点设置中的“SSL”,你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成SSL的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的"Homepage URL"和"Authorization callback URL"中的域名全部从http改为https,如:"https://cdn.example.com" 和 "https://cdn.example.com/oauth2/callback" ,不更改此项可能会导致你无法登陆面板后台

+ + + + + \ No newline at end of file diff --git a/guide/deploy.html b/guide/deploy.html deleted file mode 100644 index 1afc0262..00000000 --- a/guide/deploy.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Deploying | VitePress - - - - - - - - - - - - -

Deploying

The following guides are based on some shared assumptions:

  • You are placing your docs inside the docs directory of your project;
  • You are using the default build output location (.vitepress/dist);
  • VitePress is installed as a local dependency in your project, and you have setup the following npm scripts:
{
-  "scripts": {
-    "docs:build": "vitepress build docs",
-    "docs:serve": "vitepress serve docs"
-  }
-}
-

Building The Docs

You may run yarn docs:build command to build the docs.

$ yarn docs:build
-

By default, the build output will be placed at .vitepress/dist. You may deploy this dist folder to any of your preferred platforms.

Testing The Docs Locally

Once you've built the docs, you may test them locally by running yarn docs:serve command.

$ yarn docs:build
-$ yarn docs:serve
-

The serve command will boot up local static web server that serves the files from .vitepress/dist at http://localhost:5000. It's an easy way to check if the production build looks OK in your local environment.

You may configure the port of the server py passing --port flag as an argument.

{
-  "scripts": {
-    "docs:serve": "vitepress serve docs --port 8080"
-  }
-}
-

Now the docs:serve method will launch the server at http://localhost:8080.

GitHub Pages

  1. Set the correct base in docs/.vitepress/config.js.

    If you are deploying to https://<USERNAME>.github.io/, you can omit base as it 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. Inside your project, create deploy.sh with the following content (with highlighted lines uncommented appropriately), and run it to deploy:













 






 


 



#!/usr/bin/env sh
-
-# abort on errors
-set -e
-
-# build
-npm run docs:build
-
-# navigate into the build output directory
-cd docs/.vitepress/dist
-
-# if you are deploying to a custom domain
-# echo 'www.example.com' > CNAME
-
-git init
-git add -A
-git commit -m 'deploy'
-
-# if you are deploying to https://<USERNAME>.github.io
-# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git main
-
-# if you are deploying to https://<USERNAME>.github.io/<REPO>
-# git push -f git@github.com:<USERNAME>/<REPO>.git main:gh-pages
-
-cd -
-

TIP

You can also run the above script in your CI setup to enable automatic deployment on each push.

GitHub Pages and Travis CI

  1. Set the correct base in docs/.vitepress/config.js.

    If you are deploying to https://<USERNAME or GROUP>.github.io/, you can omit base as it defaults to '/'.

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

  2. Create a file named .travis.yml in the root of your project.

  3. Run yarn or npm install locally and commit the generated lockfile (that is yarn.lock or package-lock.json).

  4. Use the GitHub Pages deploy provider template, and follow the Travis CI documentation.

language: node_js
-node_js:
-  - lts/*
-install:
-  - yarn install # npm ci
-script:
-  - yarn docs:build # npm run docs:build
-deploy:
-  provider: pages
-  skip_cleanup: true
-  local_dir: docs/.vitepress/dist
-  # A token generated on GitHub allowing Travis to push code on you repository.
-  # Set in the Travis settings page of your repository, as a secure variable.
-  github_token: $GITHUB_TOKEN
-  keep_history: true
-  on:
-    branch: main
-

GitLab Pages and GitLab CI

  1. Set the correct base in docs/.vitepress/config.js.

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

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

  2. Set outDir in .vitepress/config.js to ../public.

  3. Create a file called .gitlab-ci.yml in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content:

image: node:16.5.0
-pages:
-  stage: deploy
-  cache:
-    paths:
-      - node_modules/
-  script:
-    - yarn install # npm install
-    - yarn docs:build # npm run docs:build
-  artifacts:
-    paths:
-      - public
-  rules:
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-

Netlify

  1. On Netlify, setup up a new project from GitHub with the following settings:
  • Build Command: vitepress build docs or yarn docs:build or npm run docs:build
  • Publish directory: docs/.vitepress/dist
  1. Hit the deploy button.

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/.vitepress/dist",
-    "ignore": []
-  }
-}
-

.firebaserc:

{
- "projects": {
-   "default": "<YOUR_FIREBASE_ID>"
- }
-}
-
  1. After running yarn docs:build or npm run docs:build, deploy using the command firebase deploy.

Surge

  1. First install surge, if you haven’t already.

  2. Run yarn docs:build or npm run docs:build.

  3. Deploy to surge by typing surge docs/.vitepress/dist.

You can also deploy to a custom domain by adding surge docs/.vitepress/dist yourdomain.com.

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/.vitepress/dist"
-}
-

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

  1. Set up your Heroku git remote:
# version change
-$ git init
-$ git add .
-$ git commit -m "My site ready for deployment."
-
-# creates a new app with a specified name
-$ heroku apps:create example
-
-# set buildpack for static sites
-$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-static.git
-
  1. Deploy your site:
# publish site
-$ git push heroku main
-
-# opens a browser to view the Dashboard version of Heroku CI
-$ heroku open
-

Vercel

To deploy your VitePress app with a Vercel for Git, make sure it has been pushed to a Git repository.

Go to https://vercel.com/new and import the project into Vercel using your Git of choice (GitHub, GitLab or BitBucket). Follow the wizard to select the project root with the project's package.json and override the build step using yarn docs:build or npm run docs:build and the output dir to be ./docs/.vitepress/dist

After your project has been imported, all subsequent pushes to branches will generate Preview Deployments, and all changes made to the Production Branch (commonly "main") will result in a Production Deployment.

Once deployed, you will get a URL to see your app live, such as the following: https://vitepress.vercel.app

- - - - - \ No newline at end of file diff --git a/guide/differences-from-vuepress.html b/guide/differences-from-vuepress.html deleted file mode 100644 index 3f9f392e..00000000 --- a/guide/differences-from-vuepress.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Differences from VuePress | VitePress - - - - - - - - - - - - -

Differences from VuePress

VitePress and VuePress have different design goals. Both projects share similar config naming conventions. VitePress aims to have the bare minimum features needed for authoring docs. Other features are pushed to Themes. On the other hand, VuePress has more features out-of-the-box or enabled by its ecosystem of plugins.

TIP

If you are using VuePress, there is no need to migrate to VitePress. Both projects are going to continue to co-exist for the foreseeable future.

WARNING

Note this is early WIP! Currently, the focus is on making Vite stable and feature-complete first. It is not recommended to use this for anything serious yet.

In case you decide to move your project to VitePress, this is a list of differences from VuePress v1.7.1 that you need to take into account.

General

Markdown

Site Config

Default Theme Config

Default Theme

Computed Globals

  • Missing
    • $lang
    • $localePath

Frontmatter Predefined Variables

Frontmatter Default Theme Variables

siteData

pageData

  • Missing
    • key
    • path
    • regularPath

Global Components

- - - - - \ No newline at end of file diff --git a/guide/frontmatter.html b/guide/frontmatter.html deleted file mode 100644 index 3647246a..00000000 --- a/guide/frontmatter.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - Frontmatter | VitePress - - - - - - - - - - - - -

Frontmatter

Any Markdown file that contains a YAML frontmatter block will be processed by gray-matter. The frontmatter must be at the top of the Markdown file, and must take the form of valid YAML set between triple-dashed lines. Example:

---
-title: Docs with VitePress
-editLink: true
----
-

Between the triple-dashed lines, you can set predefined variables, or even create custom ones of your own. These variables can be used via the special $frontmatter variable.

Here’s an example of how you could use it in your Markdown file:

---
-title: Docs with VitePress
-editLink: true
----
-
-# {{ $frontmatter.title }}
-
-Guide content
-

Alternative frontmatter Formats

VitePress also supports JSON frontmatter syntax, starting and ending in curly braces:

---
-{
-  "title": "Blogging Like a Hacker",
-  "editLink": true
-}
----
-

Predefined Variables

title

  • Type: string
  • Default: h1_title || siteData.title

Title of the current page.

  • Type: array
  • Default: undefined

Specify extra head tags to be injected:

---
-head:
-  - - meta
-    - name: description
-      content: hello
-  - - meta
-    - name: keywords
-      content: super duper SEO
----
-
  • Type: boolean
  • Default: undefined

You can disable the navbar on a specific page with navbar: false

  • Type: boolean|'auto'
  • Default: undefined

You can decide to show the sidebar on a specific page with sidebar: auto or disable it with sidebar: false

  • Type: boolean
  • Default: undefined

Define if this page should include an edit link.

- - - - - \ No newline at end of file diff --git a/guide/getting-started.html b/guide/getting-started.html deleted file mode 100644 index efbf9b61..00000000 --- a/guide/getting-started.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - Getting Started | VitePress - - - - - - - - - - - - -

Getting Started

This section will help you build a basic VitePress documentation site from ground up. If you already have an existing project and would like to keep documentation inside the project, start from Step 3.

  • Step. 1: Create and change into a new directory.

    $ mkdir vitepress-starter && cd vitepress-starter
    -
  • Step. 2: Initialize with your preferred package manager.

    $ yarn init
    -
  • Step. 3: Install VitePress locally.

    $ yarn add --dev vitepress
    -
  • Step. 4: Create your first document.

    $ mkdir docs && echo '# Hello VitePress' > docs/index.md
    -
  • Step. 5: Add some scripts to package.json.

    {
    -  "scripts": {
    -    "docs:dev": "vitepress dev docs",
    -    "docs:build": "vitepress build docs",
    -    "docs:serve": "vitepress serve docs"
    -  }
    -}
    -
  • Step. 6: Serve the documentation site in the local server.

    $ yarn docs:dev
    -

    VitePress will start a hot-reloading development server at http://localhost:3000.

By now, you should have a basic but functional VitePress documentation site.

When your documentation site starts to take shape, be sure to read the deployment guide.

- - - - - \ No newline at end of file diff --git a/guide/global-component.html b/guide/global-component.html deleted file mode 100644 index 74942483..00000000 --- a/guide/global-component.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Global Component | VitePress - - - - - - - - - - - - -

Global Component

VitePress comes with few built-in component that can be used globally. You may use these components in your markdown or your custom theme configuration.

Content

The Content component displays the rendered markdown contents. Useful when creating your own theme.

<template>
-  <h1>Custom Layout!</h1>
-  <Content />
-</template>
-

ClientOnly

The ClientOnly component renderes its slot only at client side.

Because VitePress applications are server-rendered in Node.js when generating static builds, any Vue usage must conform to the universal code requirements. In short, make sure to only access Browser / DOM APIs in beforeMount or mounted hooks.

If you are using or demoing components that are not SSR-friendly (for example, contain custom directives), you can wrap them inside the ClientOnly component.

<ClientOnly>
-  <NonSSRFriendlyComponent />
-</ClientOnly>
-

The indicator OutboundLink is used to denote external links. In VitePress, this component has been followed by every external link.

- - - - - \ No newline at end of file diff --git a/guide/markdown.html b/guide/markdown.html deleted file mode 100644 index 43bcb888..00000000 --- a/guide/markdown.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - Markdown Extensions | VitePress - - - - - - - - - - - - -

Markdown Extensions

Header Anchors

Headers automatically get anchor links applied. Rendering of anchors can be configured using the markdown.anchor option.

Internal links are converted to router link for SPA navigation. Also, every index.md contained in each sub-directory will automatically be converted to index.html, with corresponding URL /.

For example, given the following directory structure:

.
-├─ index.md
-├─ foo
-│  ├─ index.md
-│  ├─ one.md
-│  └─ two.md
-└─ bar
-   ├─ index.md
-   ├─ three.md
-   └─ four.md
-

And providing you are in foo/one.md:

[Home](/) <!-- sends the user to the root index.md -->
-[foo](/foo/) <!-- sends the user to index.html of directory foo -->
-[foo heading](./#heading) <!-- anchors user to a heading in the foo index file -->
-[bar - three](../bar/three) <!-- you can omit extention -->
-[bar - three](../bar/three.md) <!-- you can append .md -->
-[bar - four](../bar/four.html) <!-- or you can append .html -->
-

Page Suffix

Pages and internal links get generated with the .html suffix by default.

Outbound links automatically get target="_blank" rel="noopener noreferrer":

Frontmatter

YAML frontmatter is supported out of the box:

---
-title: Blogging Like a Hacker
-lang: en-US
----
-

This data will be available to the rest of the page, along with all custom and theming components.

For more details, see Frontmatter.

GitHub-Style Tables

Input

| Tables        | Are           | Cool  |
-| ------------- |:-------------:| -----:|
-| col 3 is      | right-aligned | $1600 |
-| col 2 is      | centered      |   $12 |
-| zebra stripes | are neat      |    $1 |
-

Output

TablesAreCool
col 3 isright-aligned$1600
col 2 iscentered$12
zebra stripesare neat$1

Emoji 🎉

Input

:tada: :100:
-

Output

🎉 💯

A list of all emojis is available.

Table of Contents

Input

[[toc]]
-

Output

Rendering of the TOC can be configured using the markdown.toc option.

Custom Containers

Custom containers can be defined by their types, titles, and contents.

Default Title

Input

::: tip
-This is a tip
-:::
-
-::: info
-This is an info box
-:::
-
-::: warning
-This is a warning
-:::
-
-::: danger
-This is a dangerous warning
-:::
-
-::: details
-This is a details block, which does not work in Internet Explorer or old versions of Edge.
-:::
-

Output

TIP

This is a tip

INFO

This is an info box

WARNING

This is a warning

WARNING

This is a dangerous warning

This is a details block, which does not work in Internet Explorer or Edge.

Custom Title

Input

::: danger STOP
-Danger zone, do not proceed
-:::
-
-::: details Click me to view the code
-
-```js
-console.log('Hello, VitePress!')
-```
-
-:::
-

Output

STOP

Danger zone, do not proceed

Click me to view the code
console.log('Hello, VitePress!')
-

Syntax Highlighting in Code Blocks

VitePress uses Prism to highlight language syntax in Markdown code blocks, using coloured text. Prism supports a wide variety of programming languages. All you need to do is append a valid language alias to the beginning backticks for the code block:

Input

```js
-export default {
-  name: 'MyComponent',
-  // ...
-}
-```
-

Output

export default {
-  name: 'MyComponent'
-  // ...
-}
-

Input

```html
-<ul>
-  <li v-for="todo in todos" :key="todo.id">
-    {{ todo.text }}
-  </li>
-</ul>
-```
-

Output

<ul>
-  <li v-for="todo in todos" :key="todo.id">{{ todo.text }}</li>
-</ul>
-

A list of valid languages is available on Prism’s site.

Line Highlighting in Code Blocks

Input

```js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-```
-

Output




 




export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-

In addition to a single line, you can also specify multiple single lines, ranges, or both:

  • Line ranges: for example {5-8}, {3-10}, {10-17}
  • Multiple single lines: for example {4,7,9}
  • Line ranges and single lines: for example {4,7-13,16,23-27,40}

Input

```js{1,4,6-7}
-export default { // Highlighted
-  data () {
-    return {
-      msg: `Highlighted!
-      This line isn't highlighted,
-      but this and the next 2 are.`,
-      motd: 'VitePress is awesome',
-      lorem: 'ipsum',
-    }
-  }
-}
-```
-

Output

 


 

 
 
 




export default { // Highlighted
-  data () {
-    return {
-      msg: `Highlighted!
-      This line isn't highlighted,
-      but this and the next 2 are.`,
-      motd: 'VitePress is awesome',
-      lorem: 'ipsum',
-    }
-  }
-}
-

Line Numbers

You can enable line numbers for each code blocks via config:

module.exports = {
-  markdown: {
-    lineNumbers: true
-  }
-}
-
  • Demo:
ImageImage

Import Code Snippets

You can import code snippets from existing files via following syntax:

<<< @/filepath
-

It also supports line highlighting:

<<< @/filepath{highlightLines}
-

Input

<<< @/snippets/snippet.js{2}
-

Code file

export default function () {
-  // ..
-}
-

Output


 


export default function () {
-  // ..
-}
-

TIP

The value of @ corresponds to the source root. By default it's the VitePress project root, unless srcDir is configured.

You can also use a VS Code region to only include the corresponding part of the code file. You can provide a custom region name after a # following the filepath (snippet by default):

Input

<<< @/snippets/snippet-with-region.js{1}
-

Code file

// #region snippet
-function foo() {
-  // ..
-}
-// #endregion snippet
-
-export default foo
-

Output

 


function foo() {
-  // ..
-}

Advanced Configuration

VitePress uses markdown-it as the Markdown renderer. A lot of the extensions above are implemented via custom plugins. You can further customize the markdown-it instance using the markdown option in .vitepress/config.js:

const anchor = require('markdown-it-anchor')
-
-module.exports = {
-  markdown: {
-    // options for markdown-it-anchor
-    // https://github.com/valeriangalliat/markdown-it-anchor#permalinks
-    anchor: {
-      permalink: anchor.permalink.headerLink()
-    },
-
-    // options for markdown-it-table-of-contents
-    toc: { includeLevel: [1, 2] },
-
-    config: (md) => {
-      // use more markdown-it plugins!
-      md.use(require('markdown-it-xxx'))
-    }
-  }
-}
-
- - - - - \ No newline at end of file diff --git a/guide/notifications.html b/guide/notifications.html new file mode 100644 index 00000000..269ac0ff --- /dev/null +++ b/guide/notifications.html @@ -0,0 +1,21 @@ + + + + + + 通知 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/q1.html b/guide/q1.html new file mode 100644 index 00000000..ac4083b9 --- /dev/null +++ b/guide/q1.html @@ -0,0 +1,21 @@ + + + + + + 问题1 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/q2.html b/guide/q2.html new file mode 100644 index 00000000..8ac4105e --- /dev/null +++ b/guide/q2.html @@ -0,0 +1,21 @@ + + + + + + 问题2 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/q3.html b/guide/q3.html new file mode 100644 index 00000000..779ca91e --- /dev/null +++ b/guide/q3.html @@ -0,0 +1,21 @@ + + + + + + 问题3 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/q4.html b/guide/q4.html new file mode 100644 index 00000000..6f7e39b3 --- /dev/null +++ b/guide/q4.html @@ -0,0 +1,21 @@ + + + + + + 问题4 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/q5.html b/guide/q5.html new file mode 100644 index 00000000..32455f29 --- /dev/null +++ b/guide/q5.html @@ -0,0 +1,21 @@ + + + + + + 问题5 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/servers.html b/guide/servers.html new file mode 100644 index 00000000..15820fcd --- /dev/null +++ b/guide/servers.html @@ -0,0 +1,21 @@ + + + + + + 服务器 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/services.html b/guide/services.html new file mode 100644 index 00000000..4010225e --- /dev/null +++ b/guide/services.html @@ -0,0 +1,21 @@ + + + + + + 服务 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/settings.html b/guide/settings.html new file mode 100644 index 00000000..5dd84370 --- /dev/null +++ b/guide/settings.html @@ -0,0 +1,21 @@ + + + + + + 设置 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/tasks.html b/guide/tasks.html new file mode 100644 index 00000000..d8e7e465 --- /dev/null +++ b/guide/tasks.html @@ -0,0 +1,21 @@ + + + + + + 任务 | 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/theming.html b/guide/theming.html deleted file mode 100644 index 738dd229..00000000 --- a/guide/theming.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Theming | VitePress - - - - - - - - - - - - -

Theming

Using a Custom Theme

You can enable a custom theme by adding the .vitepress/theme/index.js file (the "theme entry file").

.
-├─ docs
-│  ├─ .vitepress
-│  │  ├─ theme
-│  │  │  └─ index.js
-│  │  └─ config.js
-│  └─ index.md
-└─ package.json
-

A VitePress custom theme is simply an object containing three properties and is defined as follows:

interface Theme {
-  Layout: Component // Vue 3 component
-  NotFound?: Component
-  enhanceApp?: (ctx: EnhanceAppContext) => void
-}
-
-interface EnhanceAppContext {
-  app: App // Vue 3 app instance
-  router: Router // VitePress router instance
-  siteData: Ref<SiteData>
-}
-

The theme entry file should export the theme as its default export:

// .vitepress/theme/index.js
-import Layout from './Layout.vue'
-
-export default {
-  Layout,
-  NotFound: () => 'custom 404', // <- this is a Vue 3 functional component
-  enhanceApp({ app, router, siteData }) {
-    // app is the Vue 3 app instance from `createApp()`. router is VitePress'
-    // custom router. `siteData` is a `ref` of current site-level metadata.
-  }
-}
-

...where the Layout component could look like this:

<!-- .vitepress/theme/Layout.vue -->
-<template>
-  <h1>Custom Layout!</h1>
-  <Content /><!-- this is where markdown content will be rendered -->
-</template>
-

The default export is the only contract for a custom theme. Inside your custom theme, it works just like a normal Vite + Vue 3 application. Do note the theme also needs to be SSR-compatible.

To distribute a theme, simply export the object in your package entry. To consume an external theme, import and re-export it from the custom theme entry:

// .vitepress/theme/index.js
-import Theme from 'awesome-vitepress-theme'
-export default Theme
-

Extending the Default Theme

If you want to extend and customize the default theme, you can import it from vitepress/theme and augment it in a custom theme entry. Here are some examples of common customizations:

Registering Global Components

// .vitepress/theme/index.js
-import DefaultTheme from 'vitepress/theme'
-
-export default {
-  ...DefaultTheme,
-  enhanceApp({ app }) {
-    // register global components
-    app.component('MyGlobalComponent' /* ... */)
-  }
-}
-

Since we are using Vite, you can also leverage Vite's glob import feature to auto register a directory of components.

Customizing CSS

The default theme CSS is customizable by overriding root level CSS variables:

// .vitepress/theme/index.js
-import DefaultTheme from 'vitepress/theme'
-import './custom.css'
-
-export default DefaultTheme
-
/* .vitepress/theme/custom.css */
-:root {
-  --c-brand: #646cff;
-  --c-brand-light: #747bff;
-}
-

See default theme CSS variables that can be overridden.

Layout Slots

The default theme's <Layout/> component has a few slots that can be used to inject content at certain locations of the page. Here's an example of injecting a component into the top of the sidebar:

// .vitepress/theme/index.js
-import DefaultTheme from 'vitepress/theme'
-import MyLayout from './MyLayout.vue'
-
-export default {
-  ...DefaultTheme,
-  // override the Layout with a wrapper component that injects the slots
-  Layout: MyLayout
-}
-
<!--.vitepress/theme/MyLayout.vue-->
-<script setup>
-import DefaultTheme from 'vitepress/theme'
-const { Layout } = DefaultTheme
-</script>
-
-<template>
-  <Layout>
-    <template #sidebar-top>My custom sidebar top content</template>
-  </Layout>
-</template>
-

Full list of slots available in the default theme layout:

  • navbar-search
  • sidebar-top
  • sidebar-bottom
  • page-top-ads
  • page-top
  • page-bottom
  • page-bottom-ads
  • Only when home: true is enabled via frontmatter:
    • home-hero
    • home-features
    • home-footer
- - - - - \ No newline at end of file diff --git a/guide/using-vue.html b/guide/using-vue.html deleted file mode 100644 index 6cac5442..00000000 --- a/guide/using-vue.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - Using Vue in Markdown | VitePress - - - - - - - - - - - - -

Using Vue in Markdown

In VitePress, each markdown file is compiled into HTML and then processed as a Vue Single-File Component. This means you can use any Vue features inside the markdown, including dynamic templating, using Vue components, or arbitrary in-page Vue component logic by adding a <script> tag.

It is also important to know that VitePress leverages Vue 3's compiler to automatically detect and optimize the purely static parts of the markdown. Static contents are optimized into single placeholder nodes and eliminated from the page's JavaScript payload. They are also skipped during client-side hydration. In short, you only pay for the dynamic parts on any given page.

Templating

Interpolation

Each Markdown file is first compiled into HTML and then passed on as a Vue component to the Vite process pipeline. This means you can use Vue-style interpolation in text:

Input

{{ 1 + 1 }}
-

Output

2

Directives

Directives also work:

Input

<span v-for="i in 3">{{ i }} </span>
-

Output

1 2 3 

Access to Site & Page Data

You can use the useData helper in a <script> block and expose the data to the page.

Input

<script setup>
-import { useData } from 'vitepress'
-const { page } = useData()
-</script>
-
-<pre>{{ page }}</pre>
-

Output

{
-  "path": "/using-vue.html",
-  "title": "Using Vue in Markdown",
-  "frontmatter": {}
-}
-

Escaping

By default, fenced code blocks are automatically wrapped with v-pre. To display raw mustaches or Vue-specific syntax inside inline code snippets or plain text, you need to wrap a paragraph with the v-pre custom container:

Input

::: v-pre
-`{{ This will be displayed as-is }}`
-:::
-

Output

{{ This will be displayed as-is }}

Using Components

When you need to have more flexibility, VitePress allows you to extend your authoring toolbox with your own Vue Components.

Importing components in markdown

If your components are going to be used in only a few places, the recommended way to use them is to importing the components in the file where it is used.

<script setup>
-import CustomComponent from '../components/CustomComponent.vue'
-</script>
-
-# Docs
-
-This is a .md using a custom component
-
-<CustomComponent />
-
-## More docs
-
-...
-

Registering global components in the theme

If the components are going to be used across several pages in the docs, they can be registered globally in the theme (or as part of extending the default VitePress theme). Check out the Theming Guide for more information.

In .vitepress/theme/index.js, the enhanceApp function receives the Vue app instance so you can register components as you would do in a regular Vue application.

import DefaultTheme from 'vitepress/theme'
-
-export default {
-  ...DefaultTheme,
-  enhanceApp({ app }) {
-    app.component('VueClickAwayExample', VueClickAwayExample)
-  }
-}
-

Later in your markdown files, the component can be interleaved between the content

# Vue Click Away
-
-<VueClickAwayExample />
-

IMPORTANT

Make sure a custom component’s name either contains a hyphen or is in PascalCase. Otherwise, it will be treated as an inline element and wrapped inside a <p> tag, which will lead to hydration mismatch because <p> does not allow block elements to be placed inside it.

Using Components In Headers

You can use Vue components in the headers, but note the difference between the following syntaxes:

MarkdownOutput HTMLParsed Header
 # text <Tag/> 
<h1>text <Tag/></h1>text
 # text `<Tag/>` 
<h1>text <code>&lt;Tag/&gt;</code></h1>text <Tag/>

The HTML wrapped by <code> will be displayed as-is; only the HTML that is not wrapped will be parsed by Vue.

TIP

The output HTML is accomplished by markdown-it, while the parsed headers are handled by VitePress (and used for both the sidebar and document title).

Using CSS Pre-processors

VitePress has built-in support for CSS pre-processors: .scss, .sass, .less, .styl and .stylus files. There is no need to install Vite-specific plugins for them, but the corresponding pre-processor itself must be installed:

# .scss and .sass
-npm install -D sass
-
-# .less
-npm install -D less
-
-# .styl and .stylus
-npm install -D stylus
-

Then you can use the following in Markdown and theme components:

<style lang="sass">
-.title
-  font-size: 20px
-</style>
-

Script & Style Hoisting

Sometimes you may need to apply some JavaScript or CSS only to the current page. In those cases, you can directly write root-level <script> or <style> blocks in the Markdown file. These will be hoisted out of the compiled HTML and used as the <script> and <style> blocks for the resulting Vue single-file component:

Built-In Components

VitePress provides Built-In Vue Components like ClientOnly and OutboundLink, check out the Global Component Guide for more information.

Also see:

Browser API Access Restrictions

Because VitePress applications are server-rendered in Node.js when generating static builds, any Vue usage must conform to the universal code requirements. In short, make sure to only access Browser / DOM APIs in beforeMount or mounted hooks.

If you are using or demoing components that are not SSR-friendly (for example, contain custom directives), you can wrap them inside the built-in <ClientOnly> component:

<ClientOnly>
-  <NonSSRFriendlyComponent/>
-</ClientOnly>
-

Note this does not fix components or libraries that access Browser APIs on import. To use code that assumes a browser environment on import, you need to dynamically import them in proper lifecycle hooks:

<script>
-export default {
-  mounted() {
-    import('./lib-that-access-window-on-import').then((module) => {
-      // use code
-    })
-  }
-}
-</script>
-

If your module export default a Vue component, you can register it dynamically:

<template>
-  <component v-if="dynamicComponent" :is="dynamicComponent"></component>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      dynamicComponent: null
-    }
-  },
-
-  mounted() {
-    import('./lib-that-access-window-on-import').then((module) => {
-      this.dynamicComponent = module.default
-    })
-  }
-}
-</script>
-

Also see:

- - - - - \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index a1b1c858..9ecc8bf3 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"config_algolia-search.md":"da33e9e2","config_basics.md":"8b6d1758","config_carbon-ads.md":"2699d04a","config_homepage.md":"2f01ca2d","guide_api.md":"03e88529","guide_assets.md":"aae76804","guide_configuration.md":"bb340dd8","guide_deploy.md":"661eacb4","guide_differences-from-vuepress.md":"459a9c4a","guide_frontmatter.md":"07dc76f0","guide_getting-started.md":"f9753073","guide_global-component.md":"01405ea5","guide_markdown.md":"6ff83e9e","guide_theming.md":"b28ff51e","guide_using-vue.md":"74e82a4f","index.md":"9a001cbe"} +{"developer_algolia-search.md":"9d2c511a","developer_basics.md":"6e738cda","developer_carbon-ads.md":"6f2a5c7f","developer_homepage.md":"ce767e19","en_us_developer_algolia-search.md":"3a14c84d","en_us_developer_basics.md":"b46eb68d","en_us_developer_carbon-ads.md":"c38e789e","en_us_developer_homepage.md":"1539b68e","en_us_guide_agent.md":"8a7cb7f6","en_us_guide_dashboard.md":"6fea9c12","en_us_guide_notifications.md":"5ae91a4b","en_us_guide_q1.md":"fa5773ca","en_us_guide_q2.md":"f321ac98","en_us_guide_q3.md":"31314441","en_us_guide_q4.md":"9d306ec0","en_us_guide_q5.md":"709d6485","en_us_guide_servers.md":"e153f6cc","en_us_guide_services.md":"48d769db","en_us_guide_settings.md":"85014554","en_us_guide_tasks.md":"b89a1dc0","en_us_index.md":"9c539dde","guide_agent.md":"4f40dc30","guide_dashboard.md":"82ab28f6","guide_notifications.md":"cda2998f","guide_q1.md":"9646973a","guide_q2.md":"85a6bba5","guide_q3.md":"923aa0b4","guide_q4.md":"45e92b83","guide_q5.md":"49c9a914","guide_servers.md":"d6809f62","guide_services.md":"765b29a2","guide_settings.md":"10730c80","guide_tasks.md":"29cf7921","index.md":"c8bd2718"} diff --git a/index.html b/index.html index cb6ad573..ffb30387 100644 --- a/index.html +++ b/index.html @@ -1,24 +1,21 @@ - + - What is VitePress? | VitePress - - - - - - - + 哪吒监控 + + + + - - + + -

What is VitePress?

WARNING

VitePress is currently in 0.x status. It is already suitable for out-of-the-box documentation use, but the config and theming API may still change between minor releases.

VitePress is VuePress' little brother, built on top of Vite.

Motivation

We love VuePress v1, but being built on top of Webpack, the time it takes to spin up the dev server for a simple doc site with a few pages is just becoming unbearable. Even HMR updates can take up to seconds to reflect in the browser!

Fundamentally, this is because VuePress v1 is a Webpack app under the hood. Even with just two pages, it's a full on Webpack project (including all the theme source files) being compiled. It gets even worse when the project has many pages – every page must first be fully compiled before the server can even display anything!

Incidentally, Vite solves these problems really well: nearly instant server start, an on-demand compilation that only compiles the page being served, and lightning-fast HMR. Plus, there are a few additional design issues I have noted in VuePress v1 over time but never had the time to fix due to the amount of refactoring it would require.

Now, with Vite and Vue 3, it is time to rethink what a "Vue-powered static site generator" can really be.

Improvements Over VuePress v1

There're couple of things that are improved from VuePress v1....

It Uses Vue 3

Leverages Vue 3's improved template static analysis to stringify static content as much as possible. Static content is sent as string literals instead of JavaScript render function code – the JS payload is therefore much cheaper to parse, and hydration also becomes faster.

Note the optimization is applied while still allowing the user to freely mix Vue components inside markdown content – the compiler does the static/dynamic separation for you automatically and you never need to think about it.

It Uses Vite Under The Hood

  • Faster dev server start
  • Faster hot updates
  • Faster build (uses Rollup internally)

Lighter Page Weight

  • Vue 3 tree-shaking + Rollup code splitting
  • Does not ship metadata for every page on every request. This decouples page weight from total number of pages. Only the current page's metadata is sent. Client side navigation fetches the new page's component and metadata together.
  • Does not use vue-router because the need of VitePress is very simple and specific - a simple custom router (under 200 LOC) is used instead.
  • (WIP) i18n locale data should also be fetched on demand.

Other Differences

VitePress is more opinionated and less configurable: VitePress aims to scale back the complexity in the current VuePress and restart from its minimalist roots.

VitePress is future oriented: VitePress only targets browsers that support native ES module imports. It encourages the use of native JavaScript without transpilation, and CSS variables for theming.

Will This Become The Next VuePress in The Future?

We already have vuepress-next, which would be the next major version of VuePress. It also makes lots of improvements over VuePress v1, and also supports Vite now.

VitePress is not compatible with the current VuePress ecosystem (mostly themes and plugins). The overall idea is that VitePress will have a drastically more minimal theming API (preferring JavaScript APIs instead of file layout conventions) and likely no plugins (all customization is done in themes).

- - +

哪吒监控

轻量的自托管监控、运维工具

特性1

特性1特性1特性1

特性2

特性2特性2特性2

特性3

特性3特性3特性3

Licence | Copyright © 2022-present Nezhahq

+ + \ No newline at end of file