P?Fe(a,b,C,!0,!1,j):R(f,g,y,b,C,A,E,x,j)},Kt=(a,f,g,y,b,C,A,E,x)=>{let v=0;const P=f.length;let j=a.length-1,F=P-1;for(;v<=j&&v<=F;){const U=a[v],G=f[v]=x?We(f[v]):Ae(f[v]);if(it(U,G))M(U,G,g,null,b,C,A,E,x);else break;v++}for(;v<=j&&v<=F;){const U=a[j],G=f[F]=x?We(f[F]):Ae(f[F]);if(it(U,G))M(U,G,g,null,b,C,A,E,x);else break;j--,F--}if(v>j){if(v<=F){const U=F+1,G=UF)for(;v<=j;)Oe(a[v],b,C,!0),v++;else{const U=v,G=v,Q=new Map;for(v=G;v<=F;v++){const ye=f[v]=x?We(f[v]):Ae(f[v]);ye.key!=null&&Q.set(ye.key,v)}let ee,oe=0;const Te=F-G+1;let ht=!1,Vs=0;const At=new Array(Te);for(v=0;v=Te){Oe(ye,b,C,!0);continue}let Le;if(ye.key!=null)Le=Q.get(ye.key);else for(ee=G;ee<=F;ee++)if(At[ee-G]===0&&it(ye,f[ee])){Le=ee;break}Le===void 0?Oe(ye,b,C,!0):(At[Le-G]=v+1,Le>=Vs?Vs=Le:ht=!0,M(ye,f[Le],g,null,b,C,A,E,x),oe++)}const Ds=ht?ql(At):mt;for(ee=Ds.length-1,v=Te-1;v>=0;v--){const ye=G+v,Le=f[ye],Bs=ye+1{const{el:C,type:A,transition:E,children:x,shapeFlag:v}=a;if(v&6){et(a.component.subTree,f,g,y);return}if(v&128){a.suspense.move(f,g,y);return}if(v&64){A.move(a,f,g,dt);return}if(A===ge){s(C,f,g);for(let j=0;jE.enter(C),b);else{const{leave:j,delayLeave:F,afterLeave:U}=E,G=()=>s(C,f,g),Q=()=>{j(C,()=>{G(),U&&U()})};F?F(C,G,Q):Q()}else s(C,f,g)},Oe=(a,f,g,y=!1,b=!1)=>{const{type:C,props:A,ref:E,children:x,dynamicChildren:v,shapeFlag:P,patchFlag:j,dirs:F}=a;if(E!=null&&gn(E,null,g,a,!0),P&256){f.ctx.deactivate(a);return}const U=P&1&&F,G=!wt(a);let Q;if(G&&(Q=A&&A.onVnodeBeforeUnmount)&&Ee(Q,f,a),P&6)ro(a.component,g,y);else{if(P&128){a.suspense.unmount(g,y);return}U&&Ie(a,null,f,"beforeUnmount"),P&64?a.type.remove(a,f,g,b,dt,y):v&&(C!==ge||j>0&&j&64)?Fe(v,f,g,!1,!0):(C===ge&&j&384||!b&&P&16)&&Fe(x,f,g),y&&Hs(a)}(G&&(Q=A&&A.onVnodeUnmounted)||U)&&pe(()=>{Q&&Ee(Q,f,a),U&&Ie(a,null,f,"unmounted")},g)},Hs=a=>{const{type:f,el:g,anchor:y,transition:b}=a;if(f===ge){so(g,y);return}if(f===Nt){_(a);return}const C=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:A,delayLeave:E}=b,x=()=>A(g,C);E?E(a.el,C,x):x()}else C()},so=(a,f)=>{let g;for(;a!==f;)g=m(a),r(a),a=g;r(f)},ro=(a,f,g)=>{const{bum:y,scope:b,update:C,subTree:A,um:E}=a;y&&Vn(y),b.stop(),C&&(C.active=!1,Oe(A,a,f,g)),E&&pe(E,f),pe(()=>{a.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},Fe=(a,f,g,y=!1,b=!1,C=0)=>{for(let A=C;Aa.shapeFlag&6?Wt(a.component.subTree):a.shapeFlag&128?a.suspense.next():m(a.anchor||a.el);let $n=!1;const js=(a,f,g)=>{a==null?f._vnode&&Oe(f._vnode,null,null,!0):M(f._vnode||null,a,f,null,null,null,g),$n||($n=!0,Ys(),dn(),$n=!1),f._vnode=a},dt={p:M,um:Oe,m:et,r:Hs,mt:re,mc:R,pc:$,pbc:S,n:Wt,o:e};let Hn,jn;return t&&([Hn,jn]=t(dt)),{render:js,hydrate:Hn,createApp:Nl(js,Hn)}}function Kn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Oi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Li(e,t,n=!1){const s=e.children,r=t.children;if(B(s)&&B(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}function Ii(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ii(t)}const Gl=e=>e.__isTeleport,ge=Symbol.for("v-fgt"),xt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),Nt=Symbol.for("v-stc"),Ft=[];let Re=null;function Pi(e=!1){Ft.push(Re=e?null:[])}function zl(){Ft.pop(),Re=Ft[Ft.length-1]||null}let Dt=1;function cr(e){Dt+=e}function Mi(e){return e.dynamicChildren=Dt>0?Re||mt:null,zl(),Dt>0&&Re&&Re.push(e),e}function Wa(e,t,n,s,r,i){return Mi($i(e,t,n,s,r,i,!0))}function Ni(e,t,n,s,r){return Mi(ae(e,t,n,s,r,!0))}function mn(e){return e?e.__v_isVNode===!0:!1}function it(e,t){return e.type===t.type&&e.key===t.key}const Mn="__vInternal",Fi=({key:e})=>e??null,ln=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||de(e)||k(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function $i(e,t=null,n=null,s=0,r=null,i=e===ge?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Fi(t),ref:t&&ln(t),scopeId:Rn,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,ctx:fe};return l?(Ns(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=ne(n)?8:16),Dt>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const ae=Xl;function Xl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===ui)&&(e=ve),mn(e)){const l=Ze(e,t,!0);return n&&Ns(l,n),Dt>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(ic(e)&&(e=e.__vccOpts),t){t=Yl(t);let{class:l,style:c}=t;l&&!ne(l)&&(t.class=vs(l)),Z(c)&&(ei(c)&&!B(c)&&(c=ie({},c)),t.style=bs(c))}const o=ne(e)?1:al(e)?128:Gl(e)?64:Z(e)?4:k(e)?2:0;return $i(e,t,n,s,r,o,i,!0)}function Yl(e){return e?ei(e)||Mn in e?ie({},e):e:null}function Ze(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?Jl(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Fi(l),ref:t&&t.ref?n&&r?B(r)?r.concat(ln(t)):[r,ln(t)]:ln(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!==ge?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&&Ze(e.ssContent),ssFallback:e.ssFallback&&Ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Hi(e=" ",t=0){return ae(xt,null,e,t)}function qa(e,t){const n=ae(Nt,null,e);return n.staticCount=t,n}function Ga(e="",t=!1){return t?(Pi(),Ni(ve,null,e)):ae(ve,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ae(ve):B(e)?ae(ge,null,e.slice()):typeof e=="object"?We(e):ae(xt,null,String(e))}function We(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ze(e)}function Ns(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ns(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Mn in t)?t._ctx=fe:r===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else k(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),s&64?(n=16,t=[Hi(t)]):n=8);e.children=t,e.shapeFlag|=n}function Jl(...e){const t={};for(let n=0;nce||fe;let _n,fs;{const e=Vr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};_n=t("__VUE_INSTANCE_SETTERS__",n=>ce=n),fs=t("__VUE_SSR_SETTERS__",n=>Fn=n)}const kt=e=>{const t=ce;return _n(e),e.scope.on(),()=>{e.scope.off(),_n(t)}},ar=()=>{ce&&ce.scope.off(),_n(null)};function ji(e){return e.vnode.shapeFlag&4}let Fn=!1;function tc(e,t=!1){t&&fs(t);const{props:n,children:s}=e.vnode,r=ji(e);$l(e,n,r,t),Vl(e,s);const i=r?nc(e,t):void 0;return t&&fs(!1),i}function nc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Lt(new Proxy(e.ctx,Tl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Di(e):null,i=kt(e);ut();const o=ze(s,e,0,[e.props,r]);if(ft(),i(),$r(o)){if(o.then(ar,ar),t)return o.then(l=>{ur(e,l,t)}).catch(l=>{Sn(l,e,0)});e.asyncDep=o}else ur(e,o,t)}else Vi(e,t)}function ur(e,t,n){k(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=ii(t)),Vi(e,n)}let fr;function Vi(e,t,n){const s=e.type;if(!e.render){if(!t&&fr&&!s.render){const r=s.template||Ps(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=ie(ie({isCustomElement:i,delimiters:l},o),c);s.render=fr(r,u)}}e.render=s.render||xe}{const r=kt(e);ut();try{Rl(e)}finally{ft(),r()}}}function sc(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return _e(e,"get","$attrs"),t[n]}}))}function Di(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return sc(e)},slots:e.slots,emit:e.emit,expose:t}}function Fs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ii(Lt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Pt)return Pt[n](e)},has(t,n){return n in t||n in Pt}}))}function rc(e,t=!0){return k(e)?e.displayName||e.name:e.name||t&&e.__name}function ic(e){return k(e)&&"__vccOpts"in e}const se=(e,t)=>ko(e,t,Fn);function ds(e,t,n){const s=arguments.length;return s===2?Z(t)&&!B(t)?mn(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&mn(n)&&(n=[n]),ae(e,t,n))}const oc="3.4.18";/**
+* @vue/runtime-dom v3.4.18
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/const lc="http://www.w3.org/2000/svg",cc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,dr=qe&&qe.createElement("template"),ac={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==="svg"?qe.createElementNS(lc,e):t==="mathml"?qe.createElementNS(cc,e):qe.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(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{dr.innerHTML=s==="svg"?`${e} `:s==="mathml"?`${e} `:e;const l=dr.content;if(s==="svg"||s==="mathml"){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]}},Be="transition",Rt="animation",Bt=Symbol("_vtc"),Bi=(e,{slots:t})=>ds(gl,uc(e),t);Bi.displayName="Transition";const Ui={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Bi.props=ie({},gi,Ui);const nt=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},hr=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function uc(e){const t={};for(const O in e)O in Ui||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:w=`${n}-leave-to`}=e,L=fc(r),M=L&&L[0],V=L&&L[1],{onBeforeEnter:W,onEnter:J,onEnterCancelled:p,onLeave:_,onLeaveCancelled:N,onBeforeAppear:I=W,onAppear:D=J,onAppearCancelled:R=p}=t,T=(O,q,re)=>{st(O,q?d:l),st(O,q?u:o),re&&re()},S=(O,q)=>{O._isLeaving=!1,st(O,h),st(O,w),st(O,m),q&&q()},K=O=>(q,re)=>{const le=O?D:J,H=()=>T(q,O,re);nt(le,[q,H]),pr(()=>{st(q,O?c:i),Ue(q,O?d:l),hr(le)||gr(q,s,M,H)})};return ie(t,{onBeforeEnter(O){nt(W,[O]),Ue(O,i),Ue(O,o)},onBeforeAppear(O){nt(I,[O]),Ue(O,c),Ue(O,u)},onEnter:K(!1),onAppear:K(!0),onLeave(O,q){O._isLeaving=!0;const re=()=>S(O,q);Ue(O,h),pc(),Ue(O,m),pr(()=>{O._isLeaving&&(st(O,h),Ue(O,w),hr(_)||gr(O,s,V,re))}),nt(_,[O,re])},onEnterCancelled(O){T(O,!1),nt(p,[O])},onAppearCancelled(O){T(O,!0),nt(R,[O])},onLeaveCancelled(O){S(O),nt(N,[O])}})}function fc(e){if(e==null)return null;if(Z(e))return[Wn(e.enter),Wn(e.leave)];{const t=Wn(e);return[t,t]}}function Wn(e){return fo(e)}function Ue(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Bt]||(e[Bt]=new Set)).add(t)}function st(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Bt];n&&(n.delete(t),n.size||(e[Bt]=void 0))}function pr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let dc=0;function gr(e,t,n,s){const r=e._endId=++dc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=hc(e,t);if(!o)return s();const u=o+"end";let d=0;const h=()=>{e.removeEventListener(u,m),i()},m=w=>{w.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[L]||"").split(", "),r=s(`${Be}Delay`),i=s(`${Be}Duration`),o=mr(r,i),l=s(`${Rt}Delay`),c=s(`${Rt}Duration`),u=mr(l,c);let d=null,h=0,m=0;t===Be?o>0&&(d=Be,h=o,m=i.length):t===Rt?u>0&&(d=Rt,h=u,m=c.length):(h=Math.max(o,u),d=h>0?o>u?Be:Rt:null,m=d?d===Be?i.length:c.length:0);const w=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:h,propCount:m,hasTransform:w}}function mr(e,t){for(;e.length_r(n)+_r(e[s])))}function _r(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function pc(){return document.body.offsetHeight}function gc(e,t,n){const s=e[Bt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const yr=Symbol("_vod"),mc=Symbol(""),_c=/(^|;)\s*display\s*:/;function yc(e,t,n){const s=e.style,r=ne(n),i=s.display;let o=!1;if(n&&!r){if(t&&!ne(t))for(const l in t)n[l]==null&&hs(s,l,"");for(const l in n)l==="display"&&(o=!0),hs(s,l,n[l])}else if(r){if(t!==n){const l=s[mc];l&&(n+=";"+l),s.cssText=n,o=_c.test(n)}}else t&&e.removeAttribute("style");yr in e&&(e[yr]=o?s.display:"",s.display=i)}const br=/\s*!important$/;function hs(e,t,n){if(B(n))n.forEach(s=>hs(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=bc(e,t);br.test(n)?e.setProperty(at(s),n.replace(br,""),"important"):e[s]=n}}const vr=["Webkit","Moz","ms"],qn={};function bc(e,t){const n=qn[t];if(n)return n;let s=Me(t);if(s!=="filter"&&s in e)return qn[t]=s;s=wn(s);for(let r=0;rGn||(Tc.then(()=>Gn=0),Gn=Date.now());function Rc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Se(Oc(s,n.value),t,5,[s])};return n.value=e,n.attached=Ac(),n}function Oc(e,t){if(B(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 xr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Lc=(e,t,n,s,r,i,o,l,c)=>{const u=r==="svg";t==="class"?gc(e,s,u):t==="style"?yc(e,n,s):Ut(t)?ms(t)||xc(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ic(e,t,s,u))?wc(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),vc(e,t,s,u))};function Ic(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&xr(t)&&k(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return xr(t)&&ne(n)?!1:t in e}const Pc=["ctrl","shift","alt","meta"],Mc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Pc.some(n=>e[`${n}Key`]&&!t.includes(n))},za=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=at(r.key);if(t.some(o=>o===i||Nc[o]===i))return e(r)})},Fc=ie({patchProp:Lc},ac);let zn,Sr=!1;function $c(){return zn=Sr?zn:Kl(Fc),Sr=!0,zn}const Ya=(...e)=>{const t=$c().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=jc(s);if(r)return n(r,!0,Hc(r))},t};function Hc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function jc(e){return ne(e)?document.querySelector(e):e}const Ja=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Vc="modulepreload",Dc=function(e){return"/"+e},Tr={},Qa=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");r=Promise.all(n.map(o=>{if(o=Dc(o),o in Tr)return;Tr[o]=!0;const l=o.endsWith(".css"),c=l?'[rel="stylesheet"]':"";if(!!s)for(let h=i.length-1;h>=0;h--){const m=i[h];if(m.href===o&&(!l||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${c}`))return;const d=document.createElement("link");if(d.rel=l?"stylesheet":Vc,l||(d.as="script",d.crossOrigin=""),d.href=o,document.head.appendChild(d),l)return new Promise((h,m)=>{d.addEventListener("load",h),d.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${o}`)))})}))}return r.then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},Bc=window.__VP_SITE_DATA__;function $s(e){return Ur()?(wo(e),!0):!1}function Ye(e){return typeof e=="function"?e():ri(e)}const ki=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Uc=Object.prototype.toString,kc=e=>Uc.call(e)==="[object Object]",$t=()=>{},ps=Kc();function Kc(){var e,t;return ki&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Wc(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Ki=e=>e();function qc(e=Ki){const t=me(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:xn(t),pause:n,resume:s,eventFilter:r}}function Gc(e){return e||Nn()}function Wi(...e){if(e.length!==1)return Yo(...e);const t=e[0];return typeof t=="function"?xn(Go(()=>({get:t,set:$t}))):me(t)}function zc(e,t,n={}){const{eventFilter:s=Ki,...r}=n;return Xe(e,Wc(s,t),r)}function Xc(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=qc(s);return{stop:zc(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function qi(e,t=!0,n){Gc()?Tt(e,n):t?e():Tn(e)}function gt(e){var t;const n=Ye(e);return(t=n==null?void 0:n.$el)!=null?t:n}const He=ki?window:void 0;function Je(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=He):[t,n,s,r]=e,!t)return $t;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(d=>d()),i.length=0},l=(d,h,m,w)=>(d.addEventListener(h,m,w),()=>d.removeEventListener(h,m,w)),c=Xe(()=>[gt(t),Ye(r)],([d,h])=>{if(o(),!d)return;const m=kc(h)?{...h}:h;i.push(...n.flatMap(w=>s.map(L=>l(d,w,L,m))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return $s(u),u}let Ar=!1;function Za(e,t,n={}){const{window:s=He,ignore:r=[],capture:i=!0,detectIframe:o=!1}=n;if(!s)return $t;ps&&!Ar&&(Ar=!0,Array.from(s.document.body.children).forEach(m=>m.addEventListener("click",$t)),s.document.documentElement.addEventListener("click",$t));let l=!0;const c=m=>r.some(w=>{if(typeof w=="string")return Array.from(s.document.querySelectorAll(w)).some(L=>L===m.target||m.composedPath().includes(L));{const L=gt(w);return L&&(m.target===L||m.composedPath().includes(L))}}),d=[Je(s,"click",m=>{const w=gt(e);if(!(!w||w===m.target||m.composedPath().includes(w))){if(m.detail===0&&(l=!c(m)),!l){l=!0;return}t(m)}},{passive:!0,capture:i}),Je(s,"pointerdown",m=>{const w=gt(e);l=!c(m)&&!!(w&&!m.composedPath().includes(w))},{passive:!0}),o&&Je(s,"blur",m=>{setTimeout(()=>{var w;const L=gt(e);((w=s.document.activeElement)==null?void 0:w.tagName)==="IFRAME"&&!(L!=null&&L.contains(s.document.activeElement))&&t(m)},0)})].filter(Boolean);return()=>d.forEach(m=>m())}function Yc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function eu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=He,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Yc(t);return Je(r,i,d=>{d.repeat&&Ye(l)||c(d)&&n(d)},o)}function Jc(){const e=me(!1);return Nn()&&Tt(()=>{e.value=!0}),e}function Qc(e){const t=Jc();return se(()=>(t.value,!!e()))}function Zc(e,t={}){const{window:n=He}=t,s=Qc(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=me(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=hi(()=>{s.value&&(l(),r=n.matchMedia(Ye(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return $s(()=>{c(),l(),r=void 0}),i}const tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},nn="__vueuse_ssr_handlers__",ea=ta();function ta(){return nn in tn||(tn[nn]=tn[nn]||{}),tn[nn]}function Gi(e,t){return ea[e]||t}function na(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const sa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Rr="vueuse-storage";function ra(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:h=He,eventFilter:m,onError:w=T=>{console.error(T)},initOnMounted:L}=s,M=(d?ni:me)(typeof t=="function"?t():t);if(!n)try{n=Gi("getDefaultStorage",()=>{var T;return(T=He)==null?void 0:T.localStorage})()}catch(T){w(T)}if(!n)return M;const V=Ye(t),W=na(V),J=(r=s.serializer)!=null?r:sa[W],{pause:p,resume:_}=Xc(M,()=>N(M.value),{flush:i,deep:o,eventFilter:m});return h&&l&&qi(()=>{Je(h,"storage",R),Je(h,Rr,D),L&&R()}),L||R(),M;function N(T){try{if(T==null)n.removeItem(e);else{const S=J.write(T),K=n.getItem(e);K!==S&&(n.setItem(e,S),h&&h.dispatchEvent(new CustomEvent(Rr,{detail:{key:e,oldValue:K,newValue:S,storageArea:n}})))}}catch(S){w(S)}}function I(T){const S=T?T.newValue:n.getItem(e);if(S==null)return c&&V!=null&&n.setItem(e,J.write(V)),V;if(!T&&u){const K=J.read(S);return typeof u=="function"?u(K,V):W==="object"&&!Array.isArray(K)?{...V,...K}:K}else return typeof S!="string"?S:J.read(S)}function D(T){R(T.detail)}function R(T){if(!(T&&T.storageArea!==n)){if(T&&T.key==null){M.value=V;return}if(!(T&&T.key!==e)){p();try{(T==null?void 0:T.newValue)!==J.write(M.value)&&(M.value=I(T))}catch(S){w(S)}finally{T?Tn(_):_()}}}}}function zi(e){return Zc("(prefers-color-scheme: dark)",e)}function ia(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=He,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=zi({window:r}),w=se(()=>m.value?"dark":"light"),L=c||(o==null?Wi(s):ra(o,s,i,{window:r,listenToStorageChanges:l})),M=se(()=>L.value==="auto"?w.value:L.value),V=Gi("updateHTMLAttrs",(_,N,I)=>{const D=typeof _=="string"?r==null?void 0:r.document.querySelector(_):gt(_);if(!D)return;let R;if(d&&(R=r.document.createElement("style"),R.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(R)),N==="class"){const T=I.split(/\s/g);Object.values(h).flatMap(S=>(S||"").split(/\s/g)).filter(Boolean).forEach(S=>{T.includes(S)?D.classList.add(S):D.classList.remove(S)})}else D.setAttribute(N,I);d&&(r.getComputedStyle(R).opacity,document.head.removeChild(R))});function W(_){var N;V(t,n,(N=h[_])!=null?N:_)}function J(_){e.onChanged?e.onChanged(_,W):W(_)}Xe(M,J,{flush:"post",immediate:!0}),qi(()=>J(M.value));const p=se({get(){return u?L.value:M.value},set(_){L.value=_}});try{return Object.assign(p,{store:L,system:w,state:M})}catch{return p}}function oa(e={}){const{valueDark:t="dark",valueLight:n="",window:s=He}=e,r=ia({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=se(()=>r.system?r.system.value:zi({window:s}).value?"dark":"light");return se({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function Xn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Xi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const sn=new WeakMap;function tu(e,t=!1){const n=me(t);let s=null,r;Xe(Wi(e),l=>{const c=Xn(Ye(l));if(c){const u=c;sn.get(u)||sn.set(u,r),n.value&&(u.style.overflow="hidden")}},{immediate:!0});const i=()=>{const l=Xn(Ye(e));!l||n.value||(ps&&(s=Je(l,"touchmove",c=>{la(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{var l;const c=Xn(Ye(e));!c||!n.value||(ps&&(s==null||s()),c.style.overflow=(l=sn.get(c))!=null?l:"",sn.delete(c),n.value=!1)};return $s(o),se({get(){return n.value},set(l){l?i():o()}})}function nu(e={}){const{window:t=He,behavior:n="auto"}=e;if(!t)return{x:me(0),y:me(0)};const s=me(t.scrollX),r=me(t.scrollY),i=se({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=se({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Je(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}var Yn={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},ca={};const Yi=/^(?:[a-z]+:|\/\/)/i,aa="vitepress-theme-appearance",ua=/#.*$/,fa=/[?#].*$/,da=/(?:(^|\/)index)?\.(?:md|html)$/,Ce=typeof document<"u",Ji={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function ha(e,t,n=!1){if(t===void 0)return!1;if(e=Or(`/${e}`),n)return new RegExp(t).test(e);if(Or(t)!==e)return!1;const s=t.match(ua);return s?(Ce?location.hash:"")===s[0]:!0}function Or(e){return decodeURI(e).replace(fa,"").replace(da,"$1")}function pa(e){return Yi.test(e)}function ga(e,t){var s,r,i,o,l,c,u;const n=Object.keys(e.locales).find(d=>d!=="root"&&!pa(d)&&ha(t,`/${d}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Zi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function Qi(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=ma(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function ma(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function _a(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Zi(e,t){return[...e.filter(n=>!_a(t,n)),...t]}const ya=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ba=/^[a-z]:/i;function Lr(e){const t=ba.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(ya,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Jn=new Set;function va(e){if(Jn.size===0){const n=typeof process=="object"&&ca.VITE_EXTRA_EXTENSIONS||(Yn==null?void 0:Yn.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>Jn.add(s))}const t=e.split(".").pop();return t==null||!Jn.has(t.toLowerCase())}const wa=Symbol(),ct=ni(Bc);function su(e){const t=se(()=>ga(ct.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?me(!0):n?oa({storageKey:aa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):me(!1);return{site:t,theme:se(()=>t.value.themeConfig),page:se(()=>e.data),frontmatter:se(()=>e.data.frontmatter),params:se(()=>e.data.params),lang:se(()=>t.value.lang),dir:se(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:se(()=>t.value.localeIndex||"root"),title:se(()=>Qi(t.value,e.data)),description:se(()=>e.data.description||t.value.description),isDark:s}}function Ea(){const e=Et(wa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ca(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ir(e){return Yi.test(e)||!e.startsWith("/")?e:Ca(ct.value.base,e)}function xa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/";t=Lr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Lr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let cn=[];function ru(e){cn.push(e),Pn(()=>{cn=cn.filter(t=>t!==e)})}function Sa(){let e=ct.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Pr(e,n);else if(Array.isArray(e))for(const s of e){const r=Pr(s,n);if(r){t=r;break}}return t}function Pr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ta=Symbol(),eo="http://a.com",Aa=()=>({path:"/",component:null,data:Ji});function iu(e,t){const n=Cn(Aa()),s={route:n,go:r};async function r(l=Ce?location.href:"/"){var c,u;l=yn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(Nr(l),await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let i=null;async function o(l,c=0,u=!1){var m;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const d=new URL(l,eo),h=i=d.pathname;try{let w=await e(h);if(!w)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:L,__pageData:M}=w;if(!L)throw new Error(`Invalid route component: ${L}`);n.path=Ce?h:Ir(h),n.component=Lt(L),n.data=Lt(M),Ce&&Tn(()=>{let V=ct.value.base+M.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ct.value.cleanUrls&&!V.endsWith("/")&&(V+=".html"),V!==d.pathname&&(d.pathname=V,l=V+d.search+d.hash,history.replaceState(null,"",l)),d.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(J){console.warn(J)}if(W){Mr(W,d.hash);return}}window.scrollTo(0,c)})}}catch(w){if(!/fetch|Page not found/.test(w.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(w),!u)try{const L=await fetch(ct.value.base+"hashmap.json");window.__VP_HASH_MAP__=await L.json(),await o(l,c,!0);return}catch{}i===h&&(i=null,n.path=Ce?h:Ir(h),n.component=t?Lt(t):null,n.data=Ji)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const u=l.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:d}=u,{href:h,origin:m,pathname:w,hash:L,search:M}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),V=window.location;!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!d&&m===V.origin&&va(w)&&(l.preventDefault(),w===V.pathname&&M===V.search?(L!==V.hash&&(history.pushState(null,"",L),window.dispatchEvent(new Event("hashchange"))),L?Mr(u,L,u.classList.contains("header-anchor")):(Nr(h),window.scrollTo(0,0))):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await o(yn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ra(){const e=Et(Ta);if(!e)throw new Error("useRouter() is called without provider.");return e}function to(){return Ra().route}function Mr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Sa()+i;requestAnimationFrame(r)}}function Nr(e){Ce&&yn(e)!==yn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}function yn(e){const t=new URL(e,eo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ct.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const Qn=()=>cn.forEach(e=>e()),ou=yi({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=to(),{site:n}=Ea();return()=>ds(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?ds(t.component,{onVnodeMounted:Qn,onVnodeUpdated:Qn,onVnodeUnmounted:Qn}):"404 Page Not Found"])}}),lu=yi({setup(e,{slots:t}){const n=me(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function cu(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function au(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),Oa(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function Oa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function uu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=Zn(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(Zn);s.forEach((l,c)=>{const u=o.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};hi(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=Qi(o,i);u!==document.title&&(document.title=u);const d=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):Zn(["meta",{name:"description",content:d}]),r(Zi(o.head,Ia(c)))})}function Zn([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function La(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ia(e){return e.filter(t=>!La(t))}const es=new Set,no=()=>document.createElement("link"),Pa=e=>{const t=no();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ma=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let rn;const Na=Ce&&(rn=no())&&rn.relList&&rn.relList.supports&&rn.relList.supports("prefetch")?Pa:Ma;function fu(){if(!Ce||!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(!es.has(c)){es.add(c);const u=xa(c);u&&Na(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):es.add(l))})})};Tt(s);const r=to();Xe(()=>r.path,s),Pn(()=>{n&&n.disconnect()})}export{ka as $,Pn as A,Da as B,wl as C,Sa as D,ja as E,ge as F,Ba as G,ni as H,ru as I,ae as J,Va as K,Yi as L,to as M,Jl as N,Et as O,Za as P,eu as Q,bs as R,Tn as S,Bi as T,nu as U,qa as V,xn as W,tu as X,Fl as Y,Xa as Z,Ja as _,Hi as a,za as a0,Ka as a1,ds as a2,uu as a3,Ta as a4,su as a5,wa as a6,ou as a7,lu as a8,ct as a9,Ya as aa,iu as ab,xa as ac,Qa as ad,fu as ae,au as af,cu as ag,Ni as b,Wa as c,yi as d,Ga as e,va as f,Ir as g,me as h,pa as i,Ce as j,se as k,Tt as l,$i as m,vs as n,Pi as o,ri as p,$a as q,Ua as r,Ha as s,Fa as t,Ea as u,ha as v,rl as w,Zc as x,Xe as y,hi as z};
diff --git a/assets/chunks/theme.5WXmHJfx.js b/assets/chunks/theme.5WXmHJfx.js
new file mode 100644
index 00000000..72884719
--- /dev/null
+++ b/assets/chunks/theme.5WXmHJfx.js
@@ -0,0 +1 @@
+import{d as g,o as a,c as l,r as c,n as I,a as H,t as V,b as $,w as h,T as de,e as _,_ as m,u as Oe,i as Ue,f as xe,g as ve,h as L,j as K,k,l as G,m as d,p as r,q as E,s as F,v as x,x as ie,y as j,z as X,A as he,B as we,C as Ge,D as je,E as R,F as T,G as A,H as Pe,I as ee,J as f,K as U,L as Ve,M as te,N as J,O as se,P as Re,Q as qe,R as Ke,S as We,U as Le,V as Ye,W as Je,X as Se,Y as Me,Z as Ze,$ as Qe,a0 as Xe,a1 as et,a2 as tt}from"./framework.Dy019jra.js";const st=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),l("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[H(V(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},nt=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(de,{name:"fade"},{default:h(()=>[e.show?(a(),l("div",ot)):_("",!0)]),_:1}))}}),at=m(nt,[["__scopeId","data-v-a647fe67"]]),P=Oe;function rt(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function pe(s){const{pathname:e,search:t,hash:n,protocol:o}=new URL(s,"http://a.com");if(Ue(s)||s.startsWith("#")||!o.startsWith("http")||!xe(e))return s;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return ve(u)}const fe=L(K?location.hash:"");K&&window.addEventListener("hashchange",()=>{fe.value=location.hash});function W({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:i}=P(),u=k(()=>{var v,b;return{label:(v=t.value.locales[n.value])==null?void 0:v.label,link:((b=t.value.locales[n.value])==null?void 0:b.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:k(()=>Object.entries(t.value.locales).flatMap(([v,b])=>s&&u.value.label===b.label?[]:{text:b.label,link:it(b.link||(v==="root"?"/":`/${v}/`),i.value.i18nRouting!==!1&&e,o.value.relativePath.slice(u.value.link.length-1),!t.value.cleanUrls)+fe.value})),currentLang:u}}function it(s,e,t,n){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const lt=s=>(E("data-v-51e8273c"),s=s(),F(),s),ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},vt=lt(()=>d("div",{class:"divider"},null,-1)),ht={class:"quote"},pt={class:"action"},ft=["href","aria-label"],_t=g({__name:"NotFound",setup(s){const{site:e,theme:t}=P(),{localeLinks:n}=W({removeCurrent:!1}),o=L("/");return G(()=>{var u;const i=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((u=n.value.find(({link:p})=>p.startsWith(i)))==null?void 0:u.link)||n.value[0].link)}),(i,u)=>{var p,v,b,y,w;return a(),l("div",ct,[d("p",ut,V(((p=r(t).notFound)==null?void 0:p.code)??"404"),1),d("h1",dt,V(((v=r(t).notFound)==null?void 0:v.title)??"PAGE NOT FOUND"),1),vt,d("blockquote",ht,V(((b=r(t).notFound)==null?void 0:b.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",pt,[d("a",{class:"link",href:r(ve)(o.value),"aria-label":((y=r(t).notFound)==null?void 0:y.linkLabel)??"go to home"},V(((w=r(t).notFound)==null?void 0:w.linkText)??"Take me home"),9,ft)])])}}}),mt=m(_t,[["__scopeId","data-v-51e8273c"]]);function Ce(s,e){if(Array.isArray(s))return Z(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((o,i)=>i.split("/").length-o.split("/").length).find(o=>e.startsWith(le(o))),n=t?s[t]:[];return Array.isArray(n)?Z(n):Z(n.items,n.base)}function gt(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function $t(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ce(s,e){return Array.isArray(e)?e.some(t=>ce(s,t)):x(s,e.link)?!0:e.items?ce(s,e.items):!1}function Z(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Z(n.items,o)),n})}function D(){const{frontmatter:s,page:e,theme:t}=P(),n=ie("(min-width: 960px)"),o=L(!1),i=k(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?Ce(B,S):[]}),u=L(i.value);j(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(u.value=i.value)});const p=k(()=>s.value.sidebar!==!1&&u.value.length>0&&s.value.layout!=="home"),v=k(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=k(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),y=k(()=>p.value&&n.value),w=k(()=>p.value?gt(u.value):[]);function M(){o.value=!0}function C(){o.value=!1}function N(){o.value?C():M()}return{isOpen:o,sidebar:u,sidebarGroups:w,hasSidebar:p,hasAside:b,leftAside:v,isSidebarEnabled:y,open:M,close:C,toggle:N}}function kt(s,e){let t;X(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),he(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function bt(s){const{page:e}=P(),t=L(!1),n=k(()=>s.value.collapsed!=null),o=k(()=>!!s.value.link),i=L(!1),u=()=>{i.value=x(e.value.relativePath,s.value.link)};j([e,s,fe],u),G(u);const p=k(()=>i.value?!0:s.value.items?ce(e.value.relativePath,s.value.items):!1),v=k(()=>!!(s.value.items&&s.value.items.length));X(()=>{t.value=!!(n.value&&s.value.collapsed)}),we(()=>{(i.value||p.value)&&(t.value=!1)});function b(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:i,hasActiveLink:p,hasChildren:v,toggle:b}}function yt(){const{hasSidebar:s}=D(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:k(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ue=[];function Ie(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function _e(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:wt(t),link:"#"+t.id,level:n}});return Pt(e,s)}function wt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(u=>u.level>=n&&u.level<=o),ue.length=0;for(const{element:u,link:p}of s)ue.push({element:u,link:p});const i=[];e:for(let u=0;u=0;v--){const b=s[v];if(b.level{requestAnimationFrame(i),window.addEventListener("scroll",n)}),Ge(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const p=window.scrollY,v=window.innerHeight,b=document.body.offsetHeight,y=Math.abs(p+v-b)<1,w=ue.map(({element:C,link:N})=>({link:N,top:Lt(C)})).filter(({top:C})=>!Number.isNaN(C)).sort((C,N)=>C.top-N.top);if(!w.length){u(null);return}if(p<1){u(null);return}if(y){u(w[w.length-1].link);return}let M=null;for(const{link:C,top:N}of w){if(N>p+je()+4)break;M=C}u(M)}function u(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const v=o;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}const St=["href","title"],Mt=g({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function e({target:t}){const n=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(n));o==null||o.focus({preventScroll:!0})}return(t,n)=>{const o=R("VPDocOutlineItem",!0);return a(),l("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),l(T,null,A(t.headers,({children:i,link:u,title:p})=>(a(),l("li",null,[d("a",{class:"outline-link",href:u,onClick:e,title:p},V(p),9,St),i!=null&&i.length?(a(),$(o,{key:0,headers:i},null,8,["headers"])):_("",!0)]))),256))],2)}}}),Te=m(Mt,[["__scopeId","data-v-8fe0d742"]]),Ct=s=>(E("data-v-bd526c66"),s=s(),F(),s),It={class:"content"},Tt={class:"outline-title",role:"heading","aria-level":"2"},Nt={"aria-labelledby":"doc-outline-aria-label"},Bt=Ct(()=>d("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),At=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=P(),n=Pe([]);ee(()=>{n.value=_e(e.value.outline??t.value.outline)});const o=L(),i=L();return Vt(o,i),(u,p)=>(a(),l("div",{class:I(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[d("div",It,[d("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),d("div",Tt,V(r(Ie)(r(t))),1),d("nav",Nt,[Bt,f(Te,{headers:n.value,root:!0},null,8,["headers"])])])],2))}}),Ht=m(At,[["__scopeId","data-v-bd526c66"]]),zt={class:"VPDocAsideCarbonAds"},Et=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),l("div",zt,[f(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft=s=>(E("data-v-b4b15dc4"),s=s(),F(),s),Dt={class:"VPDocAside"},Ot=Ft(()=>d("div",{class:"spacer"},null,-1)),Ut=g({__name:"VPDocAside",setup(s){const{theme:e}=P();return(t,n)=>(a(),l("div",Dt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),f(Ht),c(t.$slots,"aside-outline-after",{},void 0,!0),Ot,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(Et,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):_("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),xt=m(Ut,[["__scopeId","data-v-b4b15dc4"]]);function Gt(){const{theme:s,page:e}=P();return k(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function jt(){const{page:s,theme:e,frontmatter:t}=P();return k(()=>{var v,b,y,w,M,C,N,B;const n=Ce(e.value.sidebar,s.value.relativePath),o=$t(n),i=o.findIndex(S=>x(s.value.relativePath,S.link)),u=((v=e.value.docFooter)==null?void 0:v.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((b=e.value.docFooter)==null?void 0:b.next)===!1&&!t.value.next||t.value.next===!1;return{prev:u?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((y=o[i-1])==null?void 0:y.docFooterText)??((w=o[i-1])==null?void 0:w.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((M=o[i-1])==null?void 0:M.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((C=o[i+1])==null?void 0:C.docFooterText)??((N=o[i+1])==null?void 0:N.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((B=o[i+1])==null?void 0:B.link)}}})}const Rt={},qt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Kt=d("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Wt=d("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Yt=[Kt,Wt];function Jt(s,e){return a(),l("svg",qt,Yt)}const Zt=m(Rt,[["render",Jt]]),z=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=k(()=>e.tag??(e.href?"a":"span")),n=k(()=>e.href&&Ve.test(e.href));return(o,i)=>(a(),$(U(t.value),{class:I(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?r(pe)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Qt={class:"VPLastUpdated"},Xt=["datetime"],es=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=P(),i=k(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=k(()=>i.value.toISOString()),p=L("");return G(()=>{X(()=>{var v,b,y;p.value=new Intl.DateTimeFormat((b=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&b.forceLocale?o.value:void 0,((y=e.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(v,b)=>{var y;return a(),l("p",Qt,[H(V(((y=r(e).lastUpdated)==null?void 0:y.text)||r(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:u.value},V(p.value),9,Xt)])}}}),ts=m(es,[["__scopeId","data-v-f6cc7dc0"]]),ss={key:0,class:"VPDocFooter"},os={key:0,class:"edit-info"},ns={key:0,class:"edit-link"},as={key:1,class:"last-updated"},rs={key:1,class:"prev-next"},is={class:"pager"},ls=["innerHTML"],cs=["innerHTML"],us={class:"pager"},ds=["innerHTML"],vs=["innerHTML"],hs=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=P(),o=Gt(),i=jt(),u=k(()=>e.value.editLink&&n.value.editLink!==!1),p=k(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),v=k(()=>u.value||p.value||i.value.prev||i.value.next);return(b,y)=>{var w,M,C,N;return v.value?(a(),l("footer",ss,[c(b.$slots,"doc-footer-before",{},void 0,!0),u.value||p.value?(a(),l("div",os,[u.value?(a(),l("div",ns,[f(z,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:h(()=>[f(Zt,{class:"edit-link-icon","aria-label":"edit icon"}),H(" "+V(r(o).text),1)]),_:1},8,["href"])])):_("",!0),p.value?(a(),l("div",as,[f(ts)])):_("",!0)])):_("",!0),(w=r(i).prev)!=null&&w.link||(M=r(i).next)!=null&&M.link?(a(),l("nav",rs,[d("div",is,[(C=r(i).prev)!=null&&C.link?(a(),$(z,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:h(()=>{var B;return[d("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,ls),d("span",{class:"title",innerHTML:r(i).prev.text},null,8,cs)]}),_:1},8,["href"])):_("",!0)]),d("div",us,[(N=r(i).next)!=null&&N.link?(a(),$(z,{key:0,class:"pager-link next",href:r(i).next.link},{default:h(()=>{var B;return[d("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,ds),d("span",{class:"title",innerHTML:r(i).next.text},null,8,vs)]}),_:1},8,["href"])):_("",!0)])])):_("",!0)])):_("",!0)}}}),ps=m(hs,[["__scopeId","data-v-09851fe2"]]),fs=s=>(E("data-v-a2c60ea6"),s=s(),F(),s),_s={class:"container"},ms=fs(()=>d("div",{class:"aside-curtain"},null,-1)),gs={class:"aside-container"},$s={class:"aside-content"},ks={class:"content"},bs={class:"content-container"},ys={class:"main"},ws=g({__name:"VPDoc",setup(s){const{theme:e}=P(),t=te(),{hasSidebar:n,hasAside:o,leftAside:i}=D(),u=k(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,v)=>{const b=R("Content");return a(),l("div",{class:I(["VPDoc",{"has-sidebar":r(n),"has-aside":r(o)}])},[c(p.$slots,"doc-top",{},void 0,!0),d("div",_s,[r(o)?(a(),l("div",{key:0,class:I(["aside",{"left-aside":r(i)}])},[ms,d("div",gs,[d("div",$s,[f(xt,null,{"aside-top":h(()=>[c(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):_("",!0),d("div",ks,[d("div",bs,[c(p.$slots,"doc-before",{},void 0,!0),d("main",ys,[f(b,{class:I(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),f(ps,null,{"doc-footer-before":h(()=>[c(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(p.$slots,"doc-after",{},void 0,!0)])])]),c(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Ps=m(ws,[["__scopeId","data-v-a2c60ea6"]]),Vs=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=k(()=>e.href&&Ve.test(e.href)),n=k(()=>e.tag||e.href?"a":"button");return(o,i)=>(a(),$(U(n.value),{class:I(["VPButton",[o.size,o.theme]]),href:o.href?r(pe)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:h(()=>[H(V(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ls=m(Vs,[["__scopeId","data-v-d78902cb"]]),Ss=["src","alt"],Ms=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=R("VPImage",!0);return e.image?(a(),l(T,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),l("img",J({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Ss)):(a(),l(T,{key:1},[f(n,J({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),f(n,J({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):_("",!0)}}}),Q=m(Ms,[["__scopeId","data-v-1496cb03"]]),Cs=s=>(E("data-v-261d8488"),s=s(),F(),s),Is={class:"container"},Ts={class:"main"},Ns={key:0,class:"name"},Bs=["innerHTML"],As=["innerHTML"],Hs=["innerHTML"],zs={key:0,class:"actions"},Es={key:0,class:"image"},Fs={class:"image-container"},Ds=Cs(()=>d("div",{class:"image-bg"},null,-1)),Os=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=se("hero-image-slot-exists");return(t,n)=>(a(),l("div",{class:I(["VPHero",{"has-image":t.image||r(e)}])},[d("div",Is,[d("div",Ts,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),l("h1",Ns,[d("span",{innerHTML:t.name,class:"clip"},null,8,Bs)])):_("",!0),t.text?(a(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,As)):_("",!0),t.tagline?(a(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Hs)):_("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),l("div",zs,[(a(!0),l(T,null,A(t.actions,o=>(a(),l("div",{key:o.link,class:"action"},[f(Ls,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):_("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),l("div",Es,[d("div",Fs,[Ds,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):_("",!0)],!0)])])):_("",!0)])],2))}}),Us=m(Os,[["__scopeId","data-v-261d8488"]]),xs=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=P();return(t,n)=>r(e).hero?(a(),$(Us,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":h(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):_("",!0)}}),Gs={},js={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Rs=d("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),qs=[Rs];function Ks(s,e){return a(),l("svg",js,qs)}const Ws=m(Gs,[["render",Ks]]),Ys={class:"box"},Js={key:0,class:"icon"},Zs=["innerHTML"],Qs=["innerHTML"],Xs=["innerHTML"],eo={key:4,class:"link-text"},to={class:"link-text-value"},so=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),$(z,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[d("article",Ys,[typeof e.icon=="object"&&e.icon.wrap?(a(),l("div",Js,[f(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Zs)):_("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Qs),e.details?(a(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,Xs)):_("",!0),e.linkText?(a(),l("div",eo,[d("p",to,[H(V(e.linkText)+" ",1),f(Ws,{class:"link-text-icon"})])])):_("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),oo=m(so,[["__scopeId","data-v-0fb825d6"]]),no={key:0,class:"VPFeatures"},ao={class:"container"},ro={class:"items"},io=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=k(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),l("div",no,[d("div",ao,[d("div",ro,[(a(!0),l(T,null,A(n.features,i=>(a(),l("div",{key:i.title,class:I(["item",[t.value]])},[f(oo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):_("",!0)}}),lo=m(io,[["__scopeId","data-v-ee5d2e6d"]]),co=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=P();return(t,n)=>r(e).features?(a(),$(lo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):_("",!0)}}),uo={class:"VPHome"},vo=g({__name:"VPHome",setup(s){return(e,t)=>{const n=R("Content");return a(),l("div",uo,[c(e.$slots,"home-hero-before",{},void 0,!0),f(xs,null,{"home-hero-info-before":h(()=>[c(e.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(e.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(e.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(e.$slots,"home-hero-after",{},void 0,!0),c(e.$slots,"home-features-before",{},void 0,!0),f(co),c(e.$slots,"home-features-after",{},void 0,!0),f(n)])}}}),ho=m(vo,[["__scopeId","data-v-a3390ded"]]),po={},fo={class:"VPPage"};function _o(s,e){const t=R("Content");return a(),l("div",fo,[c(s.$slots,"page-top"),f(t),c(s.$slots,"page-bottom")])}const mo=m(po,[["render",_o]]),go=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,i)=>(a(),l("div",{class:I(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(o.$slots,"not-found",{key:0},()=>[f(mt)],!0):r(t).layout==="page"?(a(),$(mo,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(ho,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(U(r(t).layout),{key:3})):(a(),$(Ps,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),$o=m(go,[["__scopeId","data-v-bec94311"]]),ko={class:"container"},bo=["innerHTML"],yo=["innerHTML"],wo=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,i)=>r(e).footer&&r(t).footer!==!1?(a(),l("footer",{key:0,class:I(["VPFooter",{"has-sidebar":r(n)}])},[d("div",ko,[r(e).footer.message?(a(),l("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,bo)):_("",!0),r(e).footer.copyright?(a(),l("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,yo)):_("",!0)])],2)):_("",!0)}}),Po=m(wo,[["__scopeId","data-v-05135069"]]);function Ne(){const{theme:s,frontmatter:e}=P(),t=Pe([]),n=k(()=>t.value.length>0);return ee(()=>{t.value=_e(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:n}}const Vo={},Lo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},So=d("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),Mo=[So];function Co(s,e){return a(),l("svg",Lo,Mo)}const Be=m(Vo,[["render",Co]]),Io={class:"header"},To={class:"outline"},No=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=P(),n=L(!1),o=L(0),i=L(),u=L();Re(i,()=>{n.value=!1}),qe("Escape",()=>{n.value=!1}),ee(()=>{n.value=!1});function p(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function v(y){y.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{n.value=!1}))}function b(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,w)=>(a(),l("div",{class:"VPLocalNavOutlineDropdown",style:Ke({"--vp-vh":o.value+"px"}),ref_key:"main",ref:i},[y.headers.length>0?(a(),l("button",{key:0,onClick:p,class:I({open:n.value})},[H(V(r(Ie)(r(t)))+" ",1),f(Be,{class:"icon"})],2)):(a(),l("button",{key:1,onClick:b},V(r(t).returnToTopLabel||"Return to top"),1)),f(de,{name:"flyout"},{default:h(()=>[n.value?(a(),l("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:v},[d("div",Io,[d("a",{class:"top-link",href:"#",onClick:b},V(r(t).returnToTopLabel||"Return to top"),1)]),d("div",To,[f(Te,{headers:y.headers},null,8,["headers"])])],512)):_("",!0)]),_:1})],4))}}),Bo=m(No,[["__scopeId","data-v-ba6e1eeb"]]),Ao={},Ho={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},zo=d("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Eo=d("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),Fo=d("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Do=d("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Oo=[zo,Eo,Fo,Do];function Uo(s,e){return a(),l("svg",Ho,Oo)}const xo=m(Ao,[["render",Uo]]),Go={class:"container"},jo=["aria-expanded"],Ro={class:"menu-text"},qo=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D(),{headers:o}=Ne(),{y:i}=Le(),u=L(0);G(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ee(()=>{o.value=_e(t.value.outline??e.value.outline)});const p=k(()=>o.value.length===0),v=k(()=>p.value&&!n.value),b=k(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:p.value,fixed:v.value}));return(y,w)=>r(t).layout!=="home"&&(!v.value||r(i)>=u.value)?(a(),l("div",{key:0,class:I(b.value)},[d("div",Go,[r(n)?(a(),l("button",{key:0,class:"menu","aria-expanded":y.open,"aria-controls":"VPSidebarNav",onClick:w[0]||(w[0]=M=>y.$emit("open-menu"))},[f(xo,{class:"menu-icon"}),d("span",Ro,V(r(e).sidebarMenuLabel||"Menu"),1)],8,jo)):_("",!0),f(Bo,{headers:r(o),navHeight:u.value},null,8,["headers","navHeight"])])],2)):_("",!0)}}),Ko=m(qo,[["__scopeId","data-v-f2da8727"]]);function Wo(){const s=L(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const i=te();return j(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Yo={},Jo={class:"VPSwitch",type:"button",role:"switch"},Zo={class:"check"},Qo={key:0,class:"icon"};function Xo(s,e){return a(),l("button",Jo,[d("span",Zo,[s.$slots.default?(a(),l("span",Qo,[c(s.$slots,"default",{},void 0,!0)])):_("",!0)])])}const en=m(Yo,[["render",Xo],["__scopeId","data-v-46b6d778"]]),tn={},sn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},on=d("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),nn=[on];function an(s,e){return a(),l("svg",sn,nn)}const rn=m(tn,[["render",an]]),ln={},cn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},un=Ye(' ',9),dn=[un];function vn(s,e){return a(),l("svg",cn,dn)}const hn=m(ln,[["render",vn]]),pn=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=P(),n=se("toggle-appearance",()=>{e.value=!e.value}),o=k(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),$(en,{title:o.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:h(()=>[f(hn,{class:"sun"}),f(rn,{class:"moon"})]),_:1},8,["title","aria-checked","onClick"]))}}),me=m(pn,[["__scopeId","data-v-ceefbc95"]]),fn={key:0,class:"VPNavBarAppearance"},_n=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=P();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),l("div",fn,[f(me)])):_("",!0)}}),mn=m(_n,[["__scopeId","data-v-36bc17bf"]]),ge=L();let Ae=!1,re=0;function gn(s){const e=L(!1);if(K){!Ae&&$n(),re++;const t=j(ge,n=>{var o,i,u;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(u=s.onBlur)==null||u.call(s))});he(()=>{t(),re--,re||kn()})}return Je(e)}function $n(){document.addEventListener("focusin",He),Ae=!0,ge.value=document.activeElement}function kn(){document.removeEventListener("focusin",He)}function He(){ge.value=document.activeElement}const bn={},yn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},wn=d("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Pn=[wn];function Vn(s,e){return a(),l("svg",yn,Pn)}const ze=m(bn,[["render",Vn]]),Ln={},Sn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Mn=d("circle",{cx:"12",cy:"12",r:"2"},null,-1),Cn=d("circle",{cx:"19",cy:"12",r:"2"},null,-1),In=d("circle",{cx:"5",cy:"12",r:"2"},null,-1),Tn=[Mn,Cn,In];function Nn(s,e){return a(),l("svg",Sn,Tn)}const Bn=m(Ln,[["render",Nn]]),An={class:"VPMenuLink"},Hn=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),l("div",An,[f(z,{class:I({active:r(x)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:h(()=>[H(V(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),oe=m(Hn,[["__scopeId","data-v-f4766ae3"]]),zn={class:"VPMenuGroup"},En={key:0,class:"title"},Fn=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),l("div",zn,[e.text?(a(),l("p",En,V(e.text),1)):_("",!0),(a(!0),l(T,null,A(e.items,n=>(a(),l(T,null,["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):_("",!0)],64))),256))]))}}),Dn=m(Fn,[["__scopeId","data-v-ed3b36e8"]]),On={class:"VPMenu"},Un={key:0,class:"items"},xn=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),l("div",On,[e.items?(a(),l("div",Un,[(a(!0),l(T,null,A(e.items,n=>(a(),l(T,{key:n.text},["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):(a(),$(Dn,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):_("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Gn=m(xn,[["__scopeId","data-v-65bf37b0"]]),jn=["aria-expanded","aria-label"],Rn={key:0,class:"text"},qn=["innerHTML"],Kn={class:"menu"},Wn=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=L(!1),t=L();gn({el:t,onBlur:n});function n(){e.value=!1}return(o,i)=>(a(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[o.button||o.icon?(a(),l("span",Rn,[o.icon?(a(),$(U(o.icon),{key:0,class:"option-icon"})):_("",!0),o.button?(a(),l("span",{key:1,innerHTML:o.button},null,8,qn)):_("",!0),f(ze,{class:"text-icon"})])):(a(),$(Bn,{key:1,class:"icon"}))],8,jn),d("div",Kn,[f(Gn,{items:o.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=m(Wn,[["__scopeId","data-v-a1f9f724"]]),Yn={discord:'Discord ',facebook:'Facebook ',github:'GitHub ',instagram:'Instagram ',linkedin:'LinkedIn ',mastodon:'Mastodon ',npm:'npm ',slack:'Slack ',twitter:'Twitter ',x:'X ',youtube:'YouTube '},Jn=["href","aria-label","innerHTML"],Zn=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=k(()=>typeof e.icon=="object"?e.icon.svg:Yn[e.icon]);return(n,o)=>(a(),l("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Jn))}}),Qn=m(Zn,[["__scopeId","data-v-830361a1"]]),Xn={class:"VPSocialLinks"},ea=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),l("div",Xn,[(a(!0),l(T,null,A(e.links,({link:n,icon:o,ariaLabel:i})=>(a(),$(Qn,{key:n,icon:o,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ke=m(ea,[["__scopeId","data-v-d3597f0d"]]),ta={key:0,class:"group translations"},sa={class:"trans-title"},oa={key:1,class:"group"},na={class:"item appearance"},aa={class:"label"},ra={class:"appearance-action"},ia={key:2,class:"group"},la={class:"item social-links"},ca=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:o}=W({correspondingLink:!0}),i=k(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(u,p)=>i.value?(a(),$($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[r(n).length&&r(o).label?(a(),l("div",ta,[d("p",sa,V(r(o).label),1),(a(!0),l(T,null,A(r(n),v=>(a(),$(oe,{key:v.link,item:v},null,8,["item"]))),128))])):_("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),l("div",oa,[d("div",na,[d("p",aa,V(r(t).darkModeSwitchLabel||"Appearance"),1),d("div",ra,[f(me)])])])):_("",!0),r(t).socialLinks?(a(),l("div",ia,[d("div",la,[f(ke,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):_("",!0)]),_:1})):_("",!0)}}),ua=m(ca,[["__scopeId","data-v-7cc6feae"]]),da=s=>(E("data-v-c2ec009a"),s=s(),F(),s),va=["aria-expanded"],ha=da(()=>d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)),pa=[ha],fa=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),l("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},pa,10,va))}}),_a=m(fa,[["__scopeId","data-v-c2ec009a"]]),ma=["innerHTML"],ga=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),$(z,{class:I({VPNavBarMenuLink:!0,active:r(x)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:h(()=>[d("span",{innerHTML:t.item.text},null,8,ma)]),_:1},8,["class","href","target","rel"]))}}),$a=m(ga,[["__scopeId","data-v-0b3cba30"]]),ka=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=P(),n=i=>"link"in i?x(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),o=k(()=>n(e.item));return(i,u)=>(a(),$($e,{class:I({VPNavBarMenuGroup:!0,active:r(x)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||o.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),ba=s=>(E("data-v-c656c3ac"),s=s(),F(),s),ya={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},wa=ba(()=>d("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Pa=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),l("nav",ya,[wa,(a(!0),l(T,null,A(r(e).nav,o=>(a(),l(T,{key:o.text},["link"in o?(a(),$($a,{key:0,item:o},null,8,["item"])):(a(),$(ka,{key:1,item:o},null,8,["item"]))],64))),128))])):_("",!0)}}),Va=m(Pa,[["__scopeId","data-v-c656c3ac"]]);function La(s){const{localeIndex:e,theme:t}=P();function n(o){var N,B,S;const i=o.split("."),u=(N=t.value.search)==null?void 0:N.options,p=u&&typeof u=="object",v=p&&((S=(B=u.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,b=p&&u.translations||null;let y=v,w=b,M=s;const C=i.pop();for(const Y of i){let O=null;const q=M==null?void 0:M[Y];q&&(O=M=q);const ne=w==null?void 0:w[Y];ne&&(O=w=ne);const ae=y==null?void 0:y[Y];ae&&(O=y=ae),q||(M=O),ne||(w=O),ae||(y=O)}return(y==null?void 0:y[C])??(w==null?void 0:w[C])??(M==null?void 0:M[C])??""}return n}const Sa=["aria-label"],Ma={class:"DocSearch-Button-Container"},Ca=d("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[d("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","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ia={class:"DocSearch-Button-Placeholder"},Ta=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1),be=g({__name:"VPNavBarSearchButton",setup(s){const t=La({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,o)=>(a(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[d("span",Ma,[Ca,d("span",Ia,V(r(t)("button.buttonText")),1)]),Ta],8,Sa))}}),Na={class:"VPNavBarSearch"},Ba={id:"local-search"},Aa={key:1,id:"docsearch"},Ha=g({__name:"VPNavBarSearch",setup(s){const e=()=>null,t=()=>null,{theme:n}=P(),o=L(!1),i=L(!1);G(()=>{});function u(){o.value||(o.value=!0,setTimeout(p,16))}function p(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}const v=L(!1),b="";return(y,w)=>{var M;return a(),l("div",Na,[r(b)==="local"?(a(),l(T,{key:0},[v.value?(a(),$(r(e),{key:0,onClose:w[0]||(w[0]=C=>v.value=!1)})):_("",!0),d("div",Ba,[f(be,{onClick:w[1]||(w[1]=C=>v.value=!0)})])],64)):r(b)==="algolia"?(a(),l(T,{key:1},[o.value?(a(),$(r(t),{key:0,algolia:((M=r(n).search)==null?void 0:M.options)??r(n).algolia,onVnodeBeforeMount:w[2]||(w[2]=C=>i.value=!0)},null,8,["algolia"])):_("",!0),i.value?_("",!0):(a(),l("div",Aa,[f(be,{onClick:u})]))],64)):_("",!0)])}}}),za=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$(ke,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):_("",!0)}}),Ea=m(za,[["__scopeId","data-v-af1fb2ec"]]),Fa=["href","rel","target"],Da={key:1},Oa={key:2},Ua=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=P(),{hasSidebar:n}=D(),{currentLang:o}=W(),i=k(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),u=k(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),p=k(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,b)=>(a(),l("div",{class:I(["VPNavBarTitle",{"has-sidebar":r(n)}])},[d("a",{class:"title",href:i.value??r(pe)(r(o).link),rel:u.value,target:p.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):_("",!0),r(t).siteTitle?(a(),l("span",Da,V(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),l("span",Oa,V(r(e).title),1)):_("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Fa)],2))}}),xa=m(Ua,[["__scopeId","data-v-bdace926"]]),Ga={},ja={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ra=d("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),qa=d("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Ka=[Ra,qa];function Wa(s,e){return a(),l("svg",ja,Ka)}const Ee=m(Ga,[["render",Wa]]),Ya={class:"items"},Ja={class:"title"},Za=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=P(),{localeLinks:t,currentLang:n}=W({correspondingLink:!0});return(o,i)=>r(t).length&&r(n).label?(a(),$($e,{key:0,class:"VPNavBarTranslations",icon:Ee,label:r(e).langMenuLabel||"Change language"},{default:h(()=>[d("div",Ya,[d("p",Ja,V(r(n).label),1),(a(!0),l(T,null,A(r(t),u=>(a(),$(oe,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):_("",!0)}}),Qa=m(Za,[["__scopeId","data-v-73748009"]]),Xa=s=>(E("data-v-0c13c512"),s=s(),F(),s),er={class:"wrapper"},tr={class:"container"},sr={class:"title"},or={class:"content"},nr={class:"content-body"},ar=Xa(()=>d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1)),rr=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Le(),{hasSidebar:t}=D(),{hasLocalNav:n}=Ne(),{frontmatter:o}=P(),i=L({});return we(()=>{i.value={"has-sidebar":t.value,"has-local-nav":n.value,top:o.value.layout==="home"&&e.value===0}}),(u,p)=>(a(),l("div",{class:I(["VPNavBar",i.value])},[d("div",er,[d("div",tr,[d("div",sr,[f(xa,null,{"nav-bar-title-before":h(()=>[c(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",or,[d("div",nr,[c(u.$slots,"nav-bar-content-before",{},void 0,!0),f(Ha,{class:"search"}),f(Va,{class:"menu"}),f(Qa,{class:"translations"}),f(mn,{class:"appearance"}),f(Ea,{class:"social-links"}),f(ua,{class:"extra"}),c(u.$slots,"nav-bar-content-after",{},void 0,!0),f(_a,{class:"hamburger",active:u.isScreenOpen,onClick:p[0]||(p[0]=v=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),ar],2))}}),ir=m(rr,[["__scopeId","data-v-0c13c512"]]),lr={key:0,class:"VPNavScreenAppearance"},cr={class:"text"},ur=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=P();return(n,o)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),l("div",lr,[d("p",cr,V(r(t).darkModeSwitchLabel||"Appearance"),1),f(me)])):_("",!0)}}),dr=m(ur,[["__scopeId","data-v-93411559"]]),vr=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,n)=>(a(),$(z,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:h(()=>[H(V(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),hr=m(vr,[["__scopeId","data-v-087cdc5c"]]),pr={},fr={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},_r=d("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),mr=[_r];function gr(s,e){return a(),l("svg",fr,mr)}const $r=m(pr,[["render",gr]]),kr=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,n)=>(a(),$(z,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:h(()=>[H(V(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Fe=m(kr,[["__scopeId","data-v-2e83d2e4"]]),br={class:"VPNavScreenMenuGroupSection"},yr={key:0,class:"title"},wr=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),l("div",br,[e.text?(a(),l("p",yr,V(e.text),1)):_("",!0),(a(!0),l(T,null,A(e.items,n=>(a(),$(Fe,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Pr=m(wr,[["__scopeId","data-v-73af5b34"]]),Vr=["aria-controls","aria-expanded"],Lr=["innerHTML"],Sr=["id"],Mr={key:1,class:"group"},Cr=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=L(!1),n=k(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(i,u)=>(a(),l("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[d("span",{class:"button-text",innerHTML:i.text},null,8,Lr),f($r,{class:"button-icon"})],8,Vr),d("div",{id:n.value,class:"items"},[(a(!0),l(T,null,A(i.items,p=>(a(),l(T,{key:p.text},["link"in p?(a(),l("div",{key:p.text,class:"item"},[f(Fe,{item:p},null,8,["item"])])):(a(),l("div",Mr,[f(Pr,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,Sr)],2))}}),Ir=m(Cr,[["__scopeId","data-v-8e0c44cb"]]),Tr={key:0,class:"VPNavScreenMenu"},Nr=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),l("nav",Tr,[(a(!0),l(T,null,A(r(e).nav,o=>(a(),l(T,{key:o.text},["link"in o?(a(),$(hr,{key:0,item:o},null,8,["item"])):(a(),$(Ir,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):_("",!0)}}),Br=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$(ke,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):_("",!0)}}),Ar={class:"list"},Hr=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=W({correspondingLink:!0}),n=L(!1);function o(){n.value=!n.value}return(i,u)=>r(e).length&&r(t).label?(a(),l("div",{key:0,class:I(["VPNavScreenTranslations",{open:n.value}])},[d("button",{class:"title",onClick:o},[f(Ee,{class:"icon lang"}),H(" "+V(r(t).label)+" ",1),f(ze,{class:"icon chevron"})]),d("ul",Ar,[(a(!0),l(T,null,A(r(e),p=>(a(),l("li",{key:p.link,class:"item"},[f(z,{class:"link",href:p.link},{default:h(()=>[H(V(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):_("",!0)}}),zr=m(Hr,[["__scopeId","data-v-0a66c669"]]),Er={class:"container"},Fr=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=L(null),t=Se(K?document.body:null);return(n,o)=>(a(),$(de,{name:"fade",onEnter:o[0]||(o[0]=i=>t.value=!0),onAfterLeave:o[1]||(o[1]=i=>t.value=!1)},{default:h(()=>[n.open?(a(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",Er,[c(n.$slots,"nav-screen-content-before",{},void 0,!0),f(Nr,{class:"menu"}),f(zr,{class:"translations"}),f(dr,{class:"appearance"}),f(Br,{class:"social-links"}),c(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):_("",!0)]),_:3}))}}),Dr=m(Fr,[["__scopeId","data-v-da863be4"]]),Or={key:0,class:"VPNav"},Ur=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Wo(),{frontmatter:o}=P(),i=k(()=>o.value.navbar!==!1);return Me("close-screen",t),X(()=>{K&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,p)=>i.value?(a(),l("header",Or,[f(ir,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":h(()=>[c(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),f(Dr,{open:r(e)},{"nav-screen-content-before":h(()=>[c(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):_("",!0)}}),xr=m(Ur,[["__scopeId","data-v-53ded626"]]),Gr=s=>(E("data-v-c0c1a422"),s=s(),F(),s),jr=["role","tabindex"],Rr=Gr(()=>d("div",{class:"indicator"},null,-1)),qr={key:1,class:"items"},Kr=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:i,hasActiveLink:u,hasChildren:p,toggle:v}=bt(k(()=>e.item)),b=k(()=>p.value?"section":"div"),y=k(()=>o.value?"a":"div"),w=k(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),M=k(()=>o.value?void 0:"button"),C=k(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":i.value},{"has-active":u.value}]);function N(S){"key"in S&&S.key!=="Enter"||!e.item.link&&v()}function B(){e.item.link&&v()}return(S,Y)=>{const O=R("VPSidebarItem",!0);return a(),$(U(b.value),{class:I(["VPSidebarItem",C.value])},{default:h(()=>[S.item.text?(a(),l("div",J({key:0,class:"item",role:M.value},Qe(S.item.items?{click:N,keydown:N}:{},!0),{tabindex:S.item.items&&0}),[Rr,S.item.link?(a(),$(z,{key:0,tag:y.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:h(()=>[(a(),$(U(w.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(U(w.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null?(a(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:Ze(B,["enter"]),tabindex:"0"},[f(Be,{class:"caret-icon"})],32)):_("",!0)],16,jr)):_("",!0),S.item.items&&S.item.items.length?(a(),l("div",qr,[S.depth<5?(a(!0),l(T,{key:0},A(S.item.items,q=>(a(),$(O,{key:q.text,item:q,depth:S.depth+1},null,8,["item","depth"]))),128)):_("",!0)])):_("",!0)]),_:1},8,["class"])}}}),Wr=m(Kr,[["__scopeId","data-v-c0c1a422"]]),De=s=>(E("data-v-ba8faffd"),s=s(),F(),s),Yr=De(()=>d("div",{class:"curtain"},null,-1)),Jr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Zr=De(()=>d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Qr=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=D(),n=s,o=L(null),i=Se(K?document.body:null);return j([n,o],()=>{var u;n.open?(i.value=!0,(u=o.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,p)=>r(t)?(a(),l("aside",{key:0,class:I(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=Xe(()=>{},["stop"]))},[Yr,d("nav",Jr,[Zr,c(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),l(T,null,A(r(e),v=>(a(),l("div",{key:v.text,class:"group"},[f(Wr,{item:v,depth:0},null,8,["item"])]))),128)),c(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):_("",!0)}}),Xr=m(Qr,[["__scopeId","data-v-ba8faffd"]]),ei=g({__name:"VPSkipLink",setup(s){const e=te(),t=L();j(()=>e.path,()=>t.value.focus());function n({target:o}){const i=document.getElementById(decodeURIComponent(o.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(a(),l(T,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),ti=m(ei,[["__scopeId","data-v-076c9da4"]]),si=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=D(),o=te();j(()=>o.path,n),kt(e,n);const{frontmatter:i}=P(),u=et(),p=k(()=>!!u["home-hero-image"]);return Me("hero-image-slot-exists",p),(v,b)=>{const y=R("Content");return r(i).layout!==!1?(a(),l("div",{key:0,class:I(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),f(ti),f(at,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),f(xr,null,{"nav-bar-title-before":h(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),f(Ko,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),f(Xr,{open:r(e)},{"sidebar-nav-before":h(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),f($o,null,{"page-top":h(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),f(Po),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(y,{key:1}))}}}),oi=m(si,[["__scopeId","data-v-f76875ae"]]),ye={Layout:oi,enhanceApp:({app:s})=>{s.component("Badge",st)}},ai={extends:ye,Layout:()=>tt(ye.Layout,null,{}),enhanceApp({app:s,router:e,siteData:t}){}};export{ai as R};
diff --git a/assets/guide_adapter_adapter.md.CPaS6z3t.js b/assets/guide_adapter_adapter.md.CPaS6z3t.js
new file mode 100644
index 00000000..3846cf81
--- /dev/null
+++ b/assets/guide_adapter_adapter.md.CPaS6z3t.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as r,m as e,a as d}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"实现适配器类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/adapter.md","filePath":"guide/adapter/adapter.md","lastUpdated":1707642172000}'),s={name:"guide/adapter/adapter.md"},o=e("h1",{id:"实现适配器类",tabindex:"-1"},[d("实现适配器类 "),e("a",{class:"header-anchor",href:"#实现适配器类","aria-label":'Permalink to "实现适配器类"'},"")],-1),c=[o];function n(i,p,_,l,m,h){return r(),t("div",null,c)}const x=a(s,[["render",n]]);export{u as __pageData,x as default};
diff --git a/assets/guide_adapter_adapter.md.CPaS6z3t.lean.js b/assets/guide_adapter_adapter.md.CPaS6z3t.lean.js
new file mode 100644
index 00000000..3846cf81
--- /dev/null
+++ b/assets/guide_adapter_adapter.md.CPaS6z3t.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as r,m as e,a as d}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"实现适配器类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/adapter.md","filePath":"guide/adapter/adapter.md","lastUpdated":1707642172000}'),s={name:"guide/adapter/adapter.md"},o=e("h1",{id:"实现适配器类",tabindex:"-1"},[d("实现适配器类 "),e("a",{class:"header-anchor",href:"#实现适配器类","aria-label":'Permalink to "实现适配器类"'},"")],-1),c=[o];function n(i,p,_,l,m,h){return r(),t("div",null,c)}const x=a(s,[["render",n]]);export{u as __pageData,x as default};
diff --git a/assets/guide_adapter_api.md.hdpKQFFf.js b/assets/guide_adapter_api.md.hdpKQFFf.js
new file mode 100644
index 00000000..82623f2b
--- /dev/null
+++ b/assets/guide_adapter_api.md.hdpKQFFf.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as r,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"实现接口类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/api.md","filePath":"guide/adapter/api.md","lastUpdated":1707642172000}'),d={name:"guide/adapter/api.md"},o=e("h1",{id:"实现接口类",tabindex:"-1"},[s("实现接口类 "),e("a",{class:"header-anchor",href:"#实现接口类","aria-label":'Permalink to "实现接口类"'},"")],-1),i=[o];function c(n,p,_,l,m,h){return r(),t("div",null,i)}const x=a(d,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_adapter_api.md.hdpKQFFf.lean.js b/assets/guide_adapter_api.md.hdpKQFFf.lean.js
new file mode 100644
index 00000000..82623f2b
--- /dev/null
+++ b/assets/guide_adapter_api.md.hdpKQFFf.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as r,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"实现接口类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/api.md","filePath":"guide/adapter/api.md","lastUpdated":1707642172000}'),d={name:"guide/adapter/api.md"},o=e("h1",{id:"实现接口类",tabindex:"-1"},[s("实现接口类 "),e("a",{class:"header-anchor",href:"#实现接口类","aria-label":'Permalink to "实现接口类"'},"")],-1),i=[o];function c(n,p,_,l,m,h){return r(),t("div",null,i)}const x=a(d,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_adapter_custom.md.CfwlDg0J.js b/assets/guide_adapter_custom.md.CfwlDg0J.js
new file mode 100644
index 00000000..8c20ec9b
--- /dev/null
+++ b/assets/guide_adapter_custom.md.CfwlDg0J.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as o}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"自定义服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/custom.md","filePath":"guide/adapter/custom.md","lastUpdated":1707642172000}'),r={name:"guide/adapter/custom.md"},c=e("h1",{id:"自定义服务",tabindex:"-1"},[o("自定义服务 "),e("a",{class:"header-anchor",href:"#自定义服务","aria-label":'Permalink to "自定义服务"'},"")],-1),d=[c];function n(i,m,p,_,l,u){return s(),t("div",null,d)}const x=a(r,[["render",n]]);export{f as __pageData,x as default};
diff --git a/assets/guide_adapter_custom.md.CfwlDg0J.lean.js b/assets/guide_adapter_custom.md.CfwlDg0J.lean.js
new file mode 100644
index 00000000..8c20ec9b
--- /dev/null
+++ b/assets/guide_adapter_custom.md.CfwlDg0J.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as o}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"自定义服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/custom.md","filePath":"guide/adapter/custom.md","lastUpdated":1707642172000}'),r={name:"guide/adapter/custom.md"},c=e("h1",{id:"自定义服务",tabindex:"-1"},[o("自定义服务 "),e("a",{class:"header-anchor",href:"#自定义服务","aria-label":'Permalink to "自定义服务"'},"")],-1),d=[c];function n(i,m,p,_,l,u){return s(),t("div",null,d)}const x=a(r,[["render",n]]);export{f as __pageData,x as default};
diff --git a/assets/guide_adapter_database.md.Ci773K7V.js b/assets/guide_adapter_database.md.Ci773K7V.js
new file mode 100644
index 00000000..0747331f
--- /dev/null
+++ b/assets/guide_adapter_database.md.Ci773K7V.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,m as a,a as d}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"数据库服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/database.md","filePath":"guide/adapter/database.md","lastUpdated":1707642172000}'),r={name:"guide/adapter/database.md"},o=a("h1",{id:"数据库服务",tabindex:"-1"},[d("数据库服务 "),a("a",{class:"header-anchor",href:"#数据库服务","aria-label":'Permalink to "数据库服务"'},"")],-1),c=[o];function n(i,p,_,l,m,h){return s(),t("div",null,c)}const b=e(r,[["render",n]]);export{u as __pageData,b as default};
diff --git a/assets/guide_adapter_database.md.Ci773K7V.lean.js b/assets/guide_adapter_database.md.Ci773K7V.lean.js
new file mode 100644
index 00000000..0747331f
--- /dev/null
+++ b/assets/guide_adapter_database.md.Ci773K7V.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,m as a,a as d}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"数据库服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/database.md","filePath":"guide/adapter/database.md","lastUpdated":1707642172000}'),r={name:"guide/adapter/database.md"},o=a("h1",{id:"数据库服务",tabindex:"-1"},[d("数据库服务 "),a("a",{class:"header-anchor",href:"#数据库服务","aria-label":'Permalink to "数据库服务"'},"")],-1),c=[o];function n(i,p,_,l,m,h){return s(),t("div",null,c)}const b=e(r,[["render",n]]);export{u as __pageData,b as default};
diff --git a/assets/guide_adapter_elements.md.DPNHKdQ5.js b/assets/guide_adapter_elements.md.DPNHKdQ5.js
new file mode 100644
index 00000000..0bd13fc9
--- /dev/null
+++ b/assets/guide_adapter_elements.md.DPNHKdQ5.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as r}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"实现元素类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/elements.md","filePath":"guide/adapter/elements.md","lastUpdated":1707642172000}'),d={name:"guide/adapter/elements.md"},n=e("h1",{id:"实现元素类",tabindex:"-1"},[r("实现元素类 "),e("a",{class:"header-anchor",href:"#实现元素类","aria-label":'Permalink to "实现元素类"'},"")],-1),o=[n];function c(i,l,m,p,_,h){return s(),t("div",null,o)}const x=a(d,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_adapter_elements.md.DPNHKdQ5.lean.js b/assets/guide_adapter_elements.md.DPNHKdQ5.lean.js
new file mode 100644
index 00000000..0bd13fc9
--- /dev/null
+++ b/assets/guide_adapter_elements.md.DPNHKdQ5.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as r}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"实现元素类","description":"","frontmatter":{},"headers":[],"relativePath":"guide/adapter/elements.md","filePath":"guide/adapter/elements.md","lastUpdated":1707642172000}'),d={name:"guide/adapter/elements.md"},n=e("h1",{id:"实现元素类",tabindex:"-1"},[r("实现元素类 "),e("a",{class:"header-anchor",href:"#实现元素类","aria-label":'Permalink to "实现元素类"'},"")],-1),o=[n];function c(i,l,m,p,_,h){return s(),t("div",null,o)}const x=a(d,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_base_command.md.CvTXbNFZ.js b/assets/guide_base_command.md.CvTXbNFZ.js
new file mode 100644
index 00000000..9d11945b
--- /dev/null
+++ b/assets/guide_base_command.md.CvTXbNFZ.js
@@ -0,0 +1,21 @@
+import{_ as s,c as i,o as a,V as n}from"./chunks/framework.Dy019jra.js";const c=JSON.parse('{"title":"指令注册","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/command.md","filePath":"guide/base/command.md","lastUpdated":1707642172000}'),t={name:"guide/base/command.md"},h=n(`指令注册 引入 在上一节中学习了事件系统的使用,现在通过 on_message
事件实现一个小功能:
typescript ctx. on ( 'on_message' , ( session ) => {
+ if ( ! session.message. startWith ( '/' )) return ;
+ const command = session.message. slice ( 1 );
+ if (command === 'echo' ) {
+ const content = command. slice ( 5 );
+ session. send (content ? content : '输入内容为空' );
+ } else if (command === 'time' ) {
+ session. send ( \`现在的时间是 \${ new Date (). getTime () }\` );
+ } else {
+ session. send ( '未知的指令' );
+ }
+});
当收到「/echo xxx」消息时将发送 「xxx」;当收到「/time」消息时将发送当前时间戳;两者都不是时发送「未知的指令」。然而当结果越来越多后,if...else
语句也会越来越多,显然,这是十分糟糕的。尽管可以考虑将条件内容作为键、结果处理包装成回调函数作为值,以键值对形式装进一个对象或者 Map 中,然后遍历执行。但是当条件越来越复杂时,字符串的键远无法满足需求,同时也可能有相当一部分内容仅在私聊或者群聊下可用,其次,参数的处理也需要在结果处理内部中完成,这是十分复杂与繁琐的,因此便有入了本节内容。
基本使用 指令(Command) 是 Kotori 的核心功能,也是最常见的交互方式,指令实质是 Kotori 内部对 on_message
事件的再处理与封装,这点与下一节中将学习的中间件是一致的,因此也可以看作是一个事件处理的语法糖。通过 ctx.command()
可注册一条指令,参数为指令模板字符,返回 Command
实例对象,实例上有着若干方法用于装饰该指令,其返回值同样为当前指令的实例对象。
typescript ctx. command ( 'echo <...content>' ). action (( data ) => data.args. join ( ' ' ));
+ctx. command ( 'time' )
+ . action (() => {
+ const time = new Date (). getTime ();
+ return time;
+});
指令模板字符 typescript ctx. command ( 'bar' );
+ctx. command ( 'car <arg1> <arg2>' );
+ctx. command ( 'dar <arg1> [arg2] [arg3=value]' );
+ctx. command ( 'ear [arg1:number=1] [...args:string] - 指令描述' );
上述演示了指令模板字符的基本格式。
尖括号 <>
表示必要参数,方括号 []
为可选参数 括号内部内容格式是 参数名:参数类型
,参数名应为小写字母与数字([a-z0-9])组成,参数类型可省略,默认 string
,支持的类型有:string
、number
、boolean
可选参数中可在参数类型后添加 =值
设置默认参数 参数中可在参数名前添加 ...
设置剩余参数,与 TypeScript 不同的是,剩余参数的类型不需要加上数组表示 在指令模板字符最后添加 - 指令描述
设置指令描述 指令内容为截止到第一个参数出现之前的字符串(不含空格) 参数名应尽量语义化;剩余参数应在所有参数最后面;应仅在可选参数中设置默认参数;必要参数应在可选参数之前;指令模板字符不应包含指令前缀 指令选项 通过 Command.option()
设置指令选项,第一个参数为该选项的缩写名,第二个参数为选模板字符,可设置多个指令选项。
typescript ctx. command ( 'bar' )
+ . options ()
指令处理 通过 Command.action()
设置指令的回调函数,回调函数中第一个参数为 args
与 options
两个键组成的对象,类型分别为 (string | number | boolean)[]
与 Record<string, string | number | boolean>
,分别代表输入的参数值与选项值。每个指令仅可设置一个回调函数。
options
中的键为对应选项的全名而非缩写名。
`,19),k=[h];function l(p,e,E,d,r,g){return a(),i("div",null,k)}const y=s(t,[["render",l]]);export{c as __pageData,y as default};
diff --git a/assets/guide_base_command.md.CvTXbNFZ.lean.js b/assets/guide_base_command.md.CvTXbNFZ.lean.js
new file mode 100644
index 00000000..c9abbfbe
--- /dev/null
+++ b/assets/guide_base_command.md.CvTXbNFZ.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as i,o as a,V as n}from"./chunks/framework.Dy019jra.js";const c=JSON.parse('{"title":"指令注册","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/command.md","filePath":"guide/base/command.md","lastUpdated":1707642172000}'),t={name:"guide/base/command.md"},h=n("",19),k=[h];function l(p,e,E,d,r,g){return a(),i("div",null,k)}const y=s(t,[["render",l]]);export{c as __pageData,y as default};
diff --git a/assets/guide_base_events.md.D1LHe1qC.js b/assets/guide_base_events.md.D1LHe1qC.js
new file mode 100644
index 00000000..c00ab370
--- /dev/null
+++ b/assets/guide_base_events.md.D1LHe1qC.js
@@ -0,0 +1,64 @@
+import{_ as s,c as i,o as a,V as n}from"./chunks/framework.Dy019jra.js";const c=JSON.parse('{"title":"事件系统","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/events.md","filePath":"guide/base/events.md","lastUpdated":1707642172000}'),t={name:"guide/base/events.md"},h=n(`事件系统 事件系统(Events) 的上游是事件订阅者模式(Events Emiter) ,该设计模式与事件系统共同构成了 Kotori 的基础,Kotori 内部通过订阅事件保持各部分间的联系和协作任务。同时也有来自各个聊天平台的事件,通过订阅这些事件能实现丰富多样的功能。
订阅事件 事件系统的使用方法与常规的事件订阅者一致,通过 ctx.on()
订阅一个事件,第一个参数为事件名,第二个参数为回调函数,事件被触发时事件数据将作为实际参数传给回调函数。
typescript import { MessageScope } from 'kotori-bot'
+
+// ...
+
+ctx. on ( 'on_message' , ( session ) => {
+ if (session.message !== '你是谁' ) return ;
+ if (session.type === MessageScope. GROUP ) {
+ session.api. sendGroupMsg ( '是 Kotori!' , session.groupId);
+ } else {
+ session.api. sendPrivateMsg ( '是 Kotori!' , session.userId);
+ }
+});
从上述代码中可以看出,当收到消息时,如果不是「你是谁」则立即退出,执行完毕。如果是则判断 session.type
的值,调用相应的发送消息接口发送「是 Kotori!」。根据语义化命名可知:session.type
为消息类型,值是一个 MessageScope
枚举值,分为 「GROUP」(群聊)和「PRIVATE」(私聊);session.api
是 Api
的实例对象,提供了多种与聊天平台交互的接口,此处用到的 sendG丨groupMsg
与 sendPrivateMsg
分别是发送群聊消息与发送私聊消息,第一个参数为消息内容,第二个参数分别为群聊 id 与用户 id。
id 一般为对应聊天平台提供的 id/uid,叫法不一,值类型为 string 或 number。如当你收到由适配器 @kotori-bot/kotori-plugin-adapter-onebot 发出的消息时,groupId
为 QQ 群号,userId
为 QQ 号。
上面的代码每次都需要判断消息类型再执行相应方法,显得有点繁琐,因此 kotori 提供了一个语法糖:
typescript ctx. on ( 'on_message' , ( session ) => {
+ if (session.message !== '你是谁' ) return ;
+ session. send ( '是 Kotori!' );
+ }
+});
使用 session.send()
只需要传入消息内容即可,消息类型判断和传入相应 id 的工作已在该方法内部完成。session
上还有不少与之类似的语法糖,将在后面章节中逐一提到,也因如此,session.send()
在实际开发中使用率并不高,因为它对后续内容而言依旧很繁琐。
取消订阅事件 正如订阅事件是「on」,取消订阅事件则是「off」。ctx.off()
的使用方法与 ctx.on()
一致。
typescript
+const handle = ( session : Session [ 'on_message' ]) => {
+ ctx. off ( 'on_message' , handle);
+ // ...
+}
+
+ctx. on ( 'on_message' , handle);
上述代码中,触发事件后会立即取消订阅事件,意味着它只会被触发一次。ctx.on()
在执行后会返回取消订阅自己的方法,因此可以这样简化:
typescript const off = ctx. on ( 'on_message' , ( session ) => {
+ off ();
+ // ...
+});
使用 ctx.once()
再进一步简化:
typescript ctx. once ( 'on_message' , ( session ) => {
+ // ...
+});
工作流程与上面一致,通过 ctx.once()
订阅事件,在触发后会立即取消订阅。
使用 ctx.offAll()
取消订阅指定事件名下所有事件:
typescript ctx. once ( 'on_message' , ( session ) => {
+ // ...
+});
+
+ctx. once ( 'on_message' , ( session ) => {
+ // ...
+});
+
+ctx. on ( 'on_message' , ( session ) => {
+ if (session.message === '消失吧!' ) return ;
+ ctx. ofAll ( 'on_message' );
+ }
+});
在第三个回调函数中,当收到消息「消失吧!」时将取消订阅所有 on_message
事件。
事件类型 Kotori 中事件类型大致分为三类:
系统事件(System Event) :与生命周期和适配器有关的事件,回调函数中的参数名一般为 data
。会话事件(Session Event) :与聊天平台有关的事件,回调函数中的参数名一般为 session
。自定义事件(Custom Event) :由模块定义的事件,一般用于模块内部或多个模块间通信,参数量不固定。系统事件 常见的系统事件有:
ready
:当加载完所有模块时触发dispose
:当 Kotori 关闭时触发status
:当 Bot 的在线状态改变时触发通过 status
实现 Bot 上线后自动发送消息给最高管理员:
typescript ctx. on ( 'status' , ( data ) => {
+ if (data.status !== 'online' ) return ;
+ const { api , config } = data.adapter;
+ api. sendPrivateMsg ( '上线了!' , config.master);
+});
由于 status
是由适配器发出的系统事件,它并没有类似于会话事件中的 session.send()
,因此只能使用最原始的办法发送消息。status
的事件数据中仅有两个值,一个是 data.status
表示当前在线状态(「online」或「offline」),data.adapter
为目标 Bot,Bot 上有 adapter.api
与 adapter.config
,前者等价于会话事件中的 session.api
,后者为 Bot 配置,来自于 kotori.yml
。
会话事件 常见的会话事件有:
on_message
:当收到消息时触发on_recall
:当有消息撤回时触发on_group_increase
:当群人数增加时触发通过 on_group_increase
实现群欢迎:
typescript ctx. on ( 'on_group_increase' , ( session ) => {
+ session. send ( \`因为遇见了\${ session . el . at ( session . userId ) },我的世界才充满颜色!\` );
+});
其中 session.el
与 session.api
类似,是 Elements
的实例对象,它提供了用于转换消息元素的接口,如 session.el.at()
传入用户 id 转换成艾特消息,session.el.image()
传入图片 URL 转换成图片消息。当然,并不是所有聊天平台都支持所有的消息元素,应以具体聊天平台为准。
自定义事件与发出事件 得益于 TypeScript 有着 声明合并(Declaration Merging) 的特性,在模块中可通过其实现自定义事件的局部声明。
typescript declare module 'kotori-bot' {
+ interface EventsMapping {
+ custom_event1 ( data : string ) : void ;
+ }
+}
+
+ctx. on ( 'custom_event1' , ( data ) => {
+ ctx.logger. debug (data);
+});
Kotori 中所有事件均定义在 EventsMapping
接口上。custom_event1
事件触发后将打印事件数据。ctx.logger
是一个日志打印工具,ctx.logger.debug()
意味着打印内容仅在 dev
模式下运行 Kotori 可见。然而,订阅事件后,事件却从来没有发出,因此需要发出事件:
typescript // ...
+
+ctx. emit ( 'custom_event1' , '这是事件数据' );
+ctx. emit ( 'custom_event1' , '这里也是事件数据' );
ctx.emit()
第一个参数为事件名,然后为剩余参数,剩余参数与该事件参数一一对应。虽然 Kotori 中系统事件与会话事件的参数均只有一个,但是可以在自定义事件中实现任意多个参数:
typescript declare module 'kotori-bot' {
+ interface EventsMapping {
+ custom_event2 ( arg1 : string , arg2 : number , arg3 : boolean ) : void ;
+ custom_event3 ( ... args : any []) : void ;
+ }
+}
+
+ctx. emit ( 'custom_event2' , 'string' , 42 , true );
+ctx. emit ( 'custom_event3' , 'string1' , 'string2' , 233 , 2333 , {value: 42 });
一般地,自定义事件应只用于单个模块内部,用于多个模块间相互通信传输数据时,每个涉及模块应先加载定义自定义事件的模块,以免出现类型定义的问题。
`,44),p=[h];function k(l,e,E,d,r,g){return a(),i("div",null,p)}const y=s(t,[["render",k]]);export{c as __pageData,y as default};
diff --git a/assets/guide_base_events.md.D1LHe1qC.lean.js b/assets/guide_base_events.md.D1LHe1qC.lean.js
new file mode 100644
index 00000000..c96739a7
--- /dev/null
+++ b/assets/guide_base_events.md.D1LHe1qC.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as i,o as a,V as n}from"./chunks/framework.Dy019jra.js";const c=JSON.parse('{"title":"事件系统","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/events.md","filePath":"guide/base/events.md","lastUpdated":1707642172000}'),t={name:"guide/base/events.md"},h=n("",44),p=[h];function k(l,e,E,d,r,g){return a(),i("div",null,p)}const y=s(t,[["render",k]]);export{c as __pageData,y as default};
diff --git a/assets/guide_base_middleware.md.PKeNh_IF.js b/assets/guide_base_middleware.md.PKeNh_IF.js
new file mode 100644
index 00000000..a9c58825
--- /dev/null
+++ b/assets/guide_base_middleware.md.PKeNh_IF.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as d,m as e,a as r}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"中间件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/middleware.md","filePath":"guide/base/middleware.md","lastUpdated":1707642172000}'),s={name:"guide/base/middleware.md"},o=e("h1",{id:"中间件",tabindex:"-1"},[r("中间件 "),e("a",{class:"header-anchor",href:"#中间件","aria-label":'Permalink to "中间件"'},"")],-1),i=[o];function c(n,l,m,_,p,h){return d(),t("div",null,i)}const b=a(s,[["render",c]]);export{u as __pageData,b as default};
diff --git a/assets/guide_base_middleware.md.PKeNh_IF.lean.js b/assets/guide_base_middleware.md.PKeNh_IF.lean.js
new file mode 100644
index 00000000..a9c58825
--- /dev/null
+++ b/assets/guide_base_middleware.md.PKeNh_IF.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as d,m as e,a as r}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"中间件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/middleware.md","filePath":"guide/base/middleware.md","lastUpdated":1707642172000}'),s={name:"guide/base/middleware.md"},o=e("h1",{id:"中间件",tabindex:"-1"},[r("中间件 "),e("a",{class:"header-anchor",href:"#中间件","aria-label":'Permalink to "中间件"'},"")],-1),i=[o];function c(n,l,m,_,p,h){return d(),t("div",null,i)}const b=a(s,[["render",c]]);export{u as __pageData,b as default};
diff --git a/assets/guide_base_regexp.md.5V-1qgk-.js b/assets/guide_base_regexp.md.5V-1qgk-.js
new file mode 100644
index 00000000..d7a70f34
--- /dev/null
+++ b/assets/guide_base_regexp.md.5V-1qgk-.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as r,m as e,a as s}from"./chunks/framework.Dy019jra.js";const x=JSON.parse('{"title":"正则匹配","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/regexp.md","filePath":"guide/base/regexp.md","lastUpdated":1707642172000}'),o={name:"guide/base/regexp.md"},d=e("h1",{id:"正则匹配",tabindex:"-1"},[s("正则匹配 "),e("a",{class:"header-anchor",href:"#正则匹配","aria-label":'Permalink to "正则匹配"'},"")],-1),c=[d];function n(i,p,_,l,m,h){return r(),t("div",null,c)}const g=a(o,[["render",n]]);export{x as __pageData,g as default};
diff --git a/assets/guide_base_regexp.md.5V-1qgk-.lean.js b/assets/guide_base_regexp.md.5V-1qgk-.lean.js
new file mode 100644
index 00000000..d7a70f34
--- /dev/null
+++ b/assets/guide_base_regexp.md.5V-1qgk-.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as r,m as e,a as s}from"./chunks/framework.Dy019jra.js";const x=JSON.parse('{"title":"正则匹配","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/regexp.md","filePath":"guide/base/regexp.md","lastUpdated":1707642172000}'),o={name:"guide/base/regexp.md"},d=e("h1",{id:"正则匹配",tabindex:"-1"},[s("正则匹配 "),e("a",{class:"header-anchor",href:"#正则匹配","aria-label":'Permalink to "正则匹配"'},"")],-1),c=[d];function n(i,p,_,l,m,h){return r(),t("div",null,c)}const g=a(o,[["render",n]]);export{x as __pageData,g as default};
diff --git a/assets/guide_base_schedule.md.Bgo9T4LD.js b/assets/guide_base_schedule.md.Bgo9T4LD.js
new file mode 100644
index 00000000..df6b4e68
--- /dev/null
+++ b/assets/guide_base_schedule.md.Bgo9T4LD.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as d}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"计划任务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/schedule.md","filePath":"guide/base/schedule.md","lastUpdated":1707642172000}'),c={name:"guide/base/schedule.md"},o=e("h1",{id:"计划任务",tabindex:"-1"},[d("计划任务 "),e("a",{class:"header-anchor",href:"#计划任务","aria-label":'Permalink to "计划任务"'},"")],-1),r=[o];function n(i,l,_,h,p,u){return s(),t("div",null,r)}const b=a(c,[["render",n]]);export{f as __pageData,b as default};
diff --git a/assets/guide_base_schedule.md.Bgo9T4LD.lean.js b/assets/guide_base_schedule.md.Bgo9T4LD.lean.js
new file mode 100644
index 00000000..df6b4e68
--- /dev/null
+++ b/assets/guide_base_schedule.md.Bgo9T4LD.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as d}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"计划任务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/base/schedule.md","filePath":"guide/base/schedule.md","lastUpdated":1707642172000}'),c={name:"guide/base/schedule.md"},o=e("h1",{id:"计划任务",tabindex:"-1"},[d("计划任务 "),e("a",{class:"header-anchor",href:"#计划任务","aria-label":'Permalink to "计划任务"'},"")],-1),r=[o];function n(i,l,_,h,p,u){return s(),t("div",null,r)}const b=a(c,[["render",n]]);export{f as __pageData,b as default};
diff --git a/assets/guide_extend_database.md.CNO_RCKh.js b/assets/guide_extend_database.md.CNO_RCKh.js
new file mode 100644
index 00000000..6f60fb9f
--- /dev/null
+++ b/assets/guide_extend_database.md.CNO_RCKh.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as d}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/database.md","filePath":"guide/extend/database.md","lastUpdated":1707642172000}'),o={name:"guide/extend/database.md"},r=e("h1",{id:"数据库",tabindex:"-1"},[d("数据库 "),e("a",{class:"header-anchor",href:"#数据库","aria-label":'Permalink to "数据库"'},"")],-1),n=[r];function c(i,_,l,p,m,h){return s(),t("div",null,n)}const x=a(o,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_database.md.CNO_RCKh.lean.js b/assets/guide_extend_database.md.CNO_RCKh.lean.js
new file mode 100644
index 00000000..6f60fb9f
--- /dev/null
+++ b/assets/guide_extend_database.md.CNO_RCKh.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as d}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/database.md","filePath":"guide/extend/database.md","lastUpdated":1707642172000}'),o={name:"guide/extend/database.md"},r=e("h1",{id:"数据库",tabindex:"-1"},[d("数据库 "),e("a",{class:"header-anchor",href:"#数据库","aria-label":'Permalink to "数据库"'},"")],-1),n=[r];function c(i,_,l,p,m,h){return s(),t("div",null,n)}const x=a(o,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_filter.md.CWzl_4Ib.js b/assets/guide_extend_filter.md.CWzl_4Ib.js
new file mode 100644
index 00000000..a1e8879c
--- /dev/null
+++ b/assets/guide_extend_filter.md.CWzl_4Ib.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as r,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"滤器","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/filter.md","filePath":"guide/extend/filter.md","lastUpdated":1707642172000}'),d={name:"guide/extend/filter.md"},o=e("h1",{id:"滤器",tabindex:"-1"},[s("滤器 "),e("a",{class:"header-anchor",href:"#滤器","aria-label":'Permalink to "滤器"'},"")],-1),n=[o];function i(c,l,_,f,p,m){return r(),a("div",null,n)}const x=t(d,[["render",i]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_filter.md.CWzl_4Ib.lean.js b/assets/guide_extend_filter.md.CWzl_4Ib.lean.js
new file mode 100644
index 00000000..a1e8879c
--- /dev/null
+++ b/assets/guide_extend_filter.md.CWzl_4Ib.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as r,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"滤器","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/filter.md","filePath":"guide/extend/filter.md","lastUpdated":1707642172000}'),d={name:"guide/extend/filter.md"},o=e("h1",{id:"滤器",tabindex:"-1"},[s("滤器 "),e("a",{class:"header-anchor",href:"#滤器","aria-label":'Permalink to "滤器"'},"")],-1),n=[o];function i(c,l,_,f,p,m){return r(),a("div",null,n)}const x=t(d,[["render",i]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_i18n.md.DZqqnwvM.js b/assets/guide_extend_i18n.md.DZqqnwvM.js
new file mode 100644
index 00000000..6c48db23
--- /dev/null
+++ b/assets/guide_extend_i18n.md.DZqqnwvM.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as n,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"国际化","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/i18n.md","filePath":"guide/extend/i18n.md","lastUpdated":1707642172000}'),d={name:"guide/extend/i18n.md"},o=e("h1",{id:"国际化",tabindex:"-1"},[s("国际化 "),e("a",{class:"header-anchor",href:"#国际化","aria-label":'Permalink to "国际化"'},"")],-1),r=[o];function i(c,_,l,p,m,h){return n(),a("div",null,r)}const x=t(d,[["render",i]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_i18n.md.DZqqnwvM.lean.js b/assets/guide_extend_i18n.md.DZqqnwvM.lean.js
new file mode 100644
index 00000000..6c48db23
--- /dev/null
+++ b/assets/guide_extend_i18n.md.DZqqnwvM.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as n,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"国际化","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/i18n.md","filePath":"guide/extend/i18n.md","lastUpdated":1707642172000}'),d={name:"guide/extend/i18n.md"},o=e("h1",{id:"国际化",tabindex:"-1"},[s("国际化 "),e("a",{class:"header-anchor",href:"#国际化","aria-label":'Permalink to "国际化"'},"")],-1),r=[o];function i(c,_,l,p,m,h){return n(),a("div",null,r)}const x=t(d,[["render",i]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_internal.md.Be4CBysu.js b/assets/guide_extend_internal.md.Be4CBysu.js
new file mode 100644
index 00000000..dce20f52
--- /dev/null
+++ b/assets/guide_extend_internal.md.Be4CBysu.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as n,m as e,a as r}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"内部接口","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/internal.md","filePath":"guide/extend/internal.md","lastUpdated":1707642172000}'),s={name:"guide/extend/internal.md"},d=e("h1",{id:"内部接口",tabindex:"-1"},[r("内部接口 "),e("a",{class:"header-anchor",href:"#内部接口","aria-label":'Permalink to "内部接口"'},"")],-1),o=[d];function i(c,l,_,p,m,h){return n(),a("div",null,o)}const x=t(s,[["render",i]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_internal.md.Be4CBysu.lean.js b/assets/guide_extend_internal.md.Be4CBysu.lean.js
new file mode 100644
index 00000000..dce20f52
--- /dev/null
+++ b/assets/guide_extend_internal.md.Be4CBysu.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as n,m as e,a as r}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"内部接口","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/internal.md","filePath":"guide/extend/internal.md","lastUpdated":1707642172000}'),s={name:"guide/extend/internal.md"},d=e("h1",{id:"内部接口",tabindex:"-1"},[r("内部接口 "),e("a",{class:"header-anchor",href:"#内部接口","aria-label":'Permalink to "内部接口"'},"")],-1),o=[d];function i(c,l,_,p,m,h){return n(),a("div",null,o)}const x=t(s,[["render",i]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_logger.md.BgYPW8uO.js b/assets/guide_extend_logger.md.BgYPW8uO.js
new file mode 100644
index 00000000..a361b986
--- /dev/null
+++ b/assets/guide_extend_logger.md.BgYPW8uO.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o,m as e,a as r}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"日志打印","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/logger.md","filePath":"guide/extend/logger.md","lastUpdated":1707642172000}'),s={name:"guide/extend/logger.md"},d=e("h1",{id:"日志打印",tabindex:"-1"},[r("日志打印 "),e("a",{class:"header-anchor",href:"#日志打印","aria-label":'Permalink to "日志打印"'},"")],-1),n=[d];function c(i,l,_,g,p,m){return o(),a("div",null,n)}const u=t(s,[["render",c]]);export{f as __pageData,u as default};
diff --git a/assets/guide_extend_logger.md.BgYPW8uO.lean.js b/assets/guide_extend_logger.md.BgYPW8uO.lean.js
new file mode 100644
index 00000000..a361b986
--- /dev/null
+++ b/assets/guide_extend_logger.md.BgYPW8uO.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o,m as e,a as r}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"日志打印","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/logger.md","filePath":"guide/extend/logger.md","lastUpdated":1707642172000}'),s={name:"guide/extend/logger.md"},d=e("h1",{id:"日志打印",tabindex:"-1"},[r("日志打印 "),e("a",{class:"header-anchor",href:"#日志打印","aria-label":'Permalink to "日志打印"'},"")],-1),n=[d];function c(i,l,_,g,p,m){return o(),a("div",null,n)}const u=t(s,[["render",c]]);export{f as __pageData,u as default};
diff --git a/assets/guide_extend_tools.md.DvrPWCpH.js b/assets/guide_extend_tools.md.DvrPWCpH.js
new file mode 100644
index 00000000..368ca5c9
--- /dev/null
+++ b/assets/guide_extend_tools.md.DvrPWCpH.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"工具函数","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/tools.md","filePath":"guide/extend/tools.md","lastUpdated":1707642172000}'),d={name:"guide/extend/tools.md"},r=e("h1",{id:"工具函数",tabindex:"-1"},[s("工具函数 "),e("a",{class:"header-anchor",href:"#工具函数","aria-label":'Permalink to "工具函数"'},"")],-1),n=[r];function c(i,l,_,p,m,h){return o(),a("div",null,n)}const x=t(d,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_extend_tools.md.DvrPWCpH.lean.js b/assets/guide_extend_tools.md.DvrPWCpH.lean.js
new file mode 100644
index 00000000..368ca5c9
--- /dev/null
+++ b/assets/guide_extend_tools.md.DvrPWCpH.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o,m as e,a as s}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"工具函数","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extend/tools.md","filePath":"guide/extend/tools.md","lastUpdated":1707642172000}'),d={name:"guide/extend/tools.md"},r=e("h1",{id:"工具函数",tabindex:"-1"},[s("工具函数 "),e("a",{class:"header-anchor",href:"#工具函数","aria-label":'Permalink to "工具函数"'},"")],-1),n=[r];function c(i,l,_,p,m,h){return o(),a("div",null,n)}const x=t(d,[["render",c]]);export{u as __pageData,x as default};
diff --git a/assets/guide_modules_context.md.BqjfvHTT.js b/assets/guide_modules_context.md.BqjfvHTT.js
new file mode 100644
index 00000000..b9522cec
--- /dev/null
+++ b/assets/guide_modules_context.md.BqjfvHTT.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o,m as e,a as s}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"上下文","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/context.md","filePath":"guide/modules/context.md","lastUpdated":1707642172000}'),c={name:"guide/modules/context.md"},d=e("h1",{id:"上下文",tabindex:"-1"},[s("上下文 "),e("a",{class:"header-anchor",href:"#上下文","aria-label":'Permalink to "上下文"'},"")],-1),n=[d];function r(i,l,_,m,p,u){return o(),a("div",null,n)}const x=t(c,[["render",r]]);export{f as __pageData,x as default};
diff --git a/assets/guide_modules_context.md.BqjfvHTT.lean.js b/assets/guide_modules_context.md.BqjfvHTT.lean.js
new file mode 100644
index 00000000..b9522cec
--- /dev/null
+++ b/assets/guide_modules_context.md.BqjfvHTT.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o,m as e,a as s}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"上下文","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/context.md","filePath":"guide/modules/context.md","lastUpdated":1707642172000}'),c={name:"guide/modules/context.md"},d=e("h1",{id:"上下文",tabindex:"-1"},[s("上下文 "),e("a",{class:"header-anchor",href:"#上下文","aria-label":'Permalink to "上下文"'},"")],-1),n=[d];function r(i,l,_,m,p,u){return o(),a("div",null,n)}const x=t(c,[["render",r]]);export{f as __pageData,x as default};
diff --git a/assets/guide_modules_lifecycle.md.CtUUVpzs.js b/assets/guide_modules_lifecycle.md.CtUUVpzs.js
new file mode 100644
index 00000000..6838d599
--- /dev/null
+++ b/assets/guide_modules_lifecycle.md.CtUUVpzs.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as c,m as e,a as s}from"./chunks/framework.Dy019jra.js";const h=JSON.parse('{"title":"生命周期","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/lifecycle.md","filePath":"guide/modules/lifecycle.md","lastUpdated":1707642172000}'),o={name:"guide/modules/lifecycle.md"},d=e("h1",{id:"生命周期",tabindex:"-1"},[s("生命周期 "),e("a",{class:"header-anchor",href:"#生命周期","aria-label":'Permalink to "生命周期"'},"")],-1),l=[d];function r(i,n,_,m,f,p){return c(),t("div",null,l)}const x=a(o,[["render",r]]);export{h as __pageData,x as default};
diff --git a/assets/guide_modules_lifecycle.md.CtUUVpzs.lean.js b/assets/guide_modules_lifecycle.md.CtUUVpzs.lean.js
new file mode 100644
index 00000000..6838d599
--- /dev/null
+++ b/assets/guide_modules_lifecycle.md.CtUUVpzs.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as c,m as e,a as s}from"./chunks/framework.Dy019jra.js";const h=JSON.parse('{"title":"生命周期","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/lifecycle.md","filePath":"guide/modules/lifecycle.md","lastUpdated":1707642172000}'),o={name:"guide/modules/lifecycle.md"},d=e("h1",{id:"生命周期",tabindex:"-1"},[s("生命周期 "),e("a",{class:"header-anchor",href:"#生命周期","aria-label":'Permalink to "生命周期"'},"")],-1),l=[d];function r(i,n,_,m,f,p){return c(),t("div",null,l)}const x=a(o,[["render",r]]);export{h as __pageData,x as default};
diff --git a/assets/guide_modules_plugin.md.DId8fkF7.js b/assets/guide_modules_plugin.md.DId8fkF7.js
new file mode 100644
index 00000000..3c6cecc6
--- /dev/null
+++ b/assets/guide_modules_plugin.md.DId8fkF7.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as o}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"插件范式","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/plugin.md","filePath":"guide/modules/plugin.md","lastUpdated":1707642172000}'),d={name:"guide/modules/plugin.md"},n=e("h1",{id:"插件范式",tabindex:"-1"},[o("插件范式 "),e("a",{class:"header-anchor",href:"#插件范式","aria-label":'Permalink to "插件范式"'},"")],-1),r=[n];function i(c,l,p,u,_,m){return s(),t("div",null,r)}const g=a(d,[["render",i]]);export{f as __pageData,g as default};
diff --git a/assets/guide_modules_plugin.md.DId8fkF7.lean.js b/assets/guide_modules_plugin.md.DId8fkF7.lean.js
new file mode 100644
index 00000000..3c6cecc6
--- /dev/null
+++ b/assets/guide_modules_plugin.md.DId8fkF7.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as o}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"插件范式","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/plugin.md","filePath":"guide/modules/plugin.md","lastUpdated":1707642172000}'),d={name:"guide/modules/plugin.md"},n=e("h1",{id:"插件范式",tabindex:"-1"},[o("插件范式 "),e("a",{class:"header-anchor",href:"#插件范式","aria-label":'Permalink to "插件范式"'},"")],-1),r=[n];function i(c,l,p,u,_,m){return s(),t("div",null,r)}const g=a(d,[["render",i]]);export{f as __pageData,g as default};
diff --git a/assets/guide_modules_schema.md.D2O0zqIT.js b/assets/guide_modules_schema.md.D2O0zqIT.js
new file mode 100644
index 00000000..bb91c1d6
--- /dev/null
+++ b/assets/guide_modules_schema.md.D2O0zqIT.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as o}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"动态检查","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/schema.md","filePath":"guide/modules/schema.md","lastUpdated":1707642172000}'),c={name:"guide/modules/schema.md"},d=e("h1",{id:"动态检查",tabindex:"-1"},[o("动态检查 "),e("a",{class:"header-anchor",href:"#动态检查","aria-label":'Permalink to "动态检查"'},"")],-1),r=[d];function n(i,m,l,_,h,p){return s(),t("div",null,r)}const x=a(c,[["render",n]]);export{f as __pageData,x as default};
diff --git a/assets/guide_modules_schema.md.D2O0zqIT.lean.js b/assets/guide_modules_schema.md.D2O0zqIT.lean.js
new file mode 100644
index 00000000..bb91c1d6
--- /dev/null
+++ b/assets/guide_modules_schema.md.D2O0zqIT.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as o}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"动态检查","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/schema.md","filePath":"guide/modules/schema.md","lastUpdated":1707642172000}'),c={name:"guide/modules/schema.md"},d=e("h1",{id:"动态检查",tabindex:"-1"},[o("动态检查 "),e("a",{class:"header-anchor",href:"#动态检查","aria-label":'Permalink to "动态检查"'},"")],-1),r=[d];function n(i,m,l,_,h,p){return s(),t("div",null,r)}const x=a(c,[["render",n]]);export{f as __pageData,x as default};
diff --git a/assets/guide_modules_service.md.f93Srqk2.js b/assets/guide_modules_service.md.f93Srqk2.js
new file mode 100644
index 00000000..a9174ed7
--- /dev/null
+++ b/assets/guide_modules_service.md.f93Srqk2.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as r}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"依赖与服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/service.md","filePath":"guide/modules/service.md","lastUpdated":1707642172000}'),o={name:"guide/modules/service.md"},c=e("h1",{id:"依赖与服务",tabindex:"-1"},[r("依赖与服务 "),e("a",{class:"header-anchor",href:"#依赖与服务","aria-label":'Permalink to "依赖与服务"'},"")],-1),d=[c];function i(n,l,_,m,p,u){return s(),t("div",null,d)}const v=a(o,[["render",i]]);export{f as __pageData,v as default};
diff --git a/assets/guide_modules_service.md.f93Srqk2.lean.js b/assets/guide_modules_service.md.f93Srqk2.lean.js
new file mode 100644
index 00000000..a9174ed7
--- /dev/null
+++ b/assets/guide_modules_service.md.f93Srqk2.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as s,m as e,a as r}from"./chunks/framework.Dy019jra.js";const f=JSON.parse('{"title":"依赖与服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/modules/service.md","filePath":"guide/modules/service.md","lastUpdated":1707642172000}'),o={name:"guide/modules/service.md"},c=e("h1",{id:"依赖与服务",tabindex:"-1"},[r("依赖与服务 "),e("a",{class:"header-anchor",href:"#依赖与服务","aria-label":'Permalink to "依赖与服务"'},"")],-1),d=[c];function i(n,l,_,m,p,u){return s(),t("div",null,d)}const v=a(o,[["render",i]]);export{f as __pageData,v as default};
diff --git a/assets/guide_nav.md.DNOOSt65.js b/assets/guide_nav.md.DNOOSt65.js
new file mode 100644
index 00000000..7a5aa01a
--- /dev/null
+++ b/assets/guide_nav.md.DNOOSt65.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as e,V as r}from"./chunks/framework.Dy019jra.js";const S=JSON.parse('{"title":"前言","description":"","frontmatter":{},"headers":[],"relativePath":"guide/nav.md","filePath":"guide/nav.md","lastUpdated":1707642172000}'),o={name:"guide/nav.md"},i=r('前言 前置要求 拥有一定的 JavaScript 与 Node.js 知识基础。
Kotori 运行于 Node.js 环境,因此开发 Kotori 模块前掌握 JavaScript 与 Node.js 基础内容是必然的。此处推荐几个文档:
基于 TypeScript 与现代化 ECMAScript 开发。
TypeScript 是 JavaScript 的超集,TypeScript 在继承了 JavaScript 全部特性的同时,为弱类型动态语言的 JavaScript 提供了一个独立且强大的类型系统。同时,使用 TypeScript 基本意味着使用 ESModule 与现代化的 JavaScript 语法与规范,这是 Kotori 三大特点之一。理论上在 Kotori 程序的生产环境中可正常运行由 JavaScript 直接编写的模块,但 Kotori 本身便使用 TypeScript 开发,因此更推荐你使用 TypeScript 用于你的模块开发,尽管这并不是必须的。
读后 接口文档 用于全面了解与查阅 Kotori 提供的所有公开 API。深入了解 Kotori 的开发历程、版本记录、运行流程、设计构思、设计参考等。 ',11),c=[i];function p(l,s,n,d,h,_){return e(),t("div",null,c)}const f=a(o,[["render",p]]);export{S as __pageData,f as default};
diff --git a/assets/guide_nav.md.DNOOSt65.lean.js b/assets/guide_nav.md.DNOOSt65.lean.js
new file mode 100644
index 00000000..6909ceb3
--- /dev/null
+++ b/assets/guide_nav.md.DNOOSt65.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as t,o as e,V as r}from"./chunks/framework.Dy019jra.js";const S=JSON.parse('{"title":"前言","description":"","frontmatter":{},"headers":[],"relativePath":"guide/nav.md","filePath":"guide/nav.md","lastUpdated":1707642172000}'),o={name:"guide/nav.md"},i=r("",11),c=[i];function p(l,s,n,d,h,_){return e(),t("div",null,c)}const f=a(o,[["render",p]]);export{S as __pageData,f as default};
diff --git a/assets/guide_start_environment.md.DvzuNbxb.js b/assets/guide_start_environment.md.DvzuNbxb.js
new file mode 100644
index 00000000..ca5d560f
--- /dev/null
+++ b/assets/guide_start_environment.md.DvzuNbxb.js
@@ -0,0 +1 @@
+import{_ as t,c as e,o as a,V as i}from"./chunks/framework.Dy019jra.js";const _=JSON.parse('{"title":"环境搭建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/environment.md","filePath":"guide/start/environment.md","lastUpdated":1707642172000}'),r={name:"guide/start/environment.md"},o=i('环境搭建 Node.js & pnpm 在 使用指南 中你已安装并部署了 Node.js 环境与 pnpm,此处不再赘述。
Git & GitHub Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。版本控制可方便的实现协作开发、版本回退等,其重要性对每一位开发者都是不言而喻。GitHub 是一个面向开源及私有软件项目的托管平台,拥有着全球最大的开源社区,使用 Git 可轻松将你的项目推送至 GitHub 远程仓库,你与你的项目也将成为开源社区的一份子。Git 与 GitHub 具体使用流程此处不逐一赘述。
IDE & Editor 显然 Kotori 并不属于 Web 前端的范畴,但依旧隶属于 JavaScript 生态,因此推荐 世界上最好的 Web 开发 IDE 「Visual Studio Code」(以下简称「VSC」)。虽然 VSC 本质上只是文本编辑器,但因其强大的扩展商店使其能做到大部分 IDE 的功能,当然你也可以根据你的喜好选择,如:
',9),n=[o];function s(d,l,p,h,m,c){return a(),e("div",null,n)}const b=t(r,[["render",s]]);export{_ as __pageData,b as default};
diff --git a/assets/guide_start_environment.md.DvzuNbxb.lean.js b/assets/guide_start_environment.md.DvzuNbxb.lean.js
new file mode 100644
index 00000000..7d580388
--- /dev/null
+++ b/assets/guide_start_environment.md.DvzuNbxb.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as e,o as a,V as i}from"./chunks/framework.Dy019jra.js";const _=JSON.parse('{"title":"环境搭建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/environment.md","filePath":"guide/start/environment.md","lastUpdated":1707642172000}'),r={name:"guide/start/environment.md"},o=i("",9),n=[o];function s(d,l,p,h,m,c){return a(),e("div",null,n)}const b=t(r,[["render",s]]);export{_ as __pageData,b as default};
diff --git a/assets/guide_start_publish.md.yDVLNJhc.js b/assets/guide_start_publish.md.yDVLNJhc.js
new file mode 100644
index 00000000..4c44c2db
--- /dev/null
+++ b/assets/guide_start_publish.md.yDVLNJhc.js
@@ -0,0 +1,33 @@
+import{_ as s,c as a,o as i,V as e}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"模块发布","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/publish.md","filePath":"guide/start/publish.md","lastUpdated":1707642172000}'),n={name:"guide/start/publish.md"},t=e(`模块发布 当开发完毕模块后,可以将它发布至社区,一个 Kotori 模块一般会同时发布到如下三个平台:
npmjs.org Kotori 模块中心 开源社区:GitHub 优先级(重要程度):npm > 模块中心 > 开源社区。每一个公开的 Kotori 模块都应发布至 npm 并作为模块的主要获取途径。Kotori 使用 GPL-3.0 协议,该协议要求 Kotori 的所有模块及其二次开发项目也必须使用 GPL-3.0 协议且开源,因此发布到开源社区是必要的,开源行为本身也是一种无私奉献、共享知识和回馈社区的体现。 构建产物 「构建产物」在 JavaScript 生态中指将源码(Kotori 模块开发中一般为 TypeScript
文件)进行处理以适用于生产环境中(处理过程一般有 TypeScript 转为 JavaScript、向下兼容语法、压缩代码等)。JavaScript 生态中构建工具非常多,你可以选择喜欢的构建工具并自习配置,当然如果你对此并不了解也可以使用 Kotori 默认的构建方式(通过TypeScript 自带的 tsc 程序),在你的模块根目录中输入以下指令:
一般地,你将会发现在模块根目录出现了一个 lib
文件夹,这在上一节已有提到,它是构建产物的输出目录,有必要的话可在 tsconfig.json
文件中更改:
json {
+ // ...
+ "compilerOptions" : {
+ "rootDir" : "./src" , // 输入目录
+ "outDir" : "./lib" // 输出目录
+ // ...
+ }
+}
关于 tsconfig.json
的更多内容:TypeScript Documentation
文件忽略 对于模块发布主要分为发布构建产物(publish)与发布源码(push),两种情况下需要发布的文件内容会有些许不同,因此便引入了「文件忽略」。
.npmignore 用于指定在使用 publish
时忽略的文件与文件夹,在模块根目录创建一个 .npmignore
文件:
int node_modules
+src
+test
+
+tsconfig.json
+!README.md
实际上在 publish
时只需要附带少数文件即可,而 .npmignore
采用的是黑名单机制显得很繁琐,因此 Kotori 模块的默认模板中并未使用该方式也并不推荐。
package.files 在上一节的 package.json
示例中会发现有一个以字符串数组为值的 files
配置项,其用于指定在使用 publish
时需要附带的文件与文件夹。
typescript {
+ "files" : [ "lib" , "LICENSE" , "README.md" ],
+}
files
配置项优先级高于 .npmignore
,其直接写在 package.json
中显得十分简洁也会减少整个模块目录的文件冗余。
.gitignore 不同于前两者,.gitignore
用于指定在使用 Git 进行 push
时需要忽略的文件,语法与 .npmignore
类似,同样位于模块根目录:
ini node_modules
+dist
+lib
+.husky/_
+
+.vscode/*
+.vs/*
+!.vscode/extensions.json
+
+*.tgz
+tsconfig.tsbuildinfo
+*.log
+
+kotori.dev.yml
发布构建产物 使用工作区开发时,需确保当前为待发布模块根目录。首先检查 npm 源是否为 http://registry.npmjs.org
:
bash npm config get registry
+# If not:
+# npm config set registry=http://registry.npmjs.org
前往 npmjs.org 注册账号,然后根据提示在浏览器内登录:
当一切就绪时:
一般地,访问 npm 个人页即可查看刚才发布的插件: kotori-plugin-my-project 。
发布源码 使用 Git 前务必先配置好你的账号、邮箱和与 GitHub 通信的 ssh,可参考 手把手教你配置 git 和 git 仓库 。使用工作区开发时,可选择发布整个工作区也可仅发布单个模块,切换到相应的目录即可。首先在 GitHub New 页面创建一个远程仓库,接着在本地仓库中关联到该远程仓库:
bash git remote add origin git@github.com:kotorijs/kotori-plugin-my-project
提交并推送至远程仓库
bash git add .
+git commit -m 'feat: create a project'
+git push origin master
当然,你也可以为本次提交添加一个 tag:
bash git tag v1.0.0
+git push --tags
收录至模块市场 该内容待更新....
放在最后 `,41),p=[t];function l(h,o,r,c,d,k){return i(),a("div",null,p)}const E=s(n,[["render",l]]);export{u as __pageData,E as default};
diff --git a/assets/guide_start_publish.md.yDVLNJhc.lean.js b/assets/guide_start_publish.md.yDVLNJhc.lean.js
new file mode 100644
index 00000000..c062634a
--- /dev/null
+++ b/assets/guide_start_publish.md.yDVLNJhc.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as a,o as i,V as e}from"./chunks/framework.Dy019jra.js";const u=JSON.parse('{"title":"模块发布","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/publish.md","filePath":"guide/start/publish.md","lastUpdated":1707642172000}'),n={name:"guide/start/publish.md"},t=e("",41),p=[t];function l(h,o,r,c,d,k){return i(),a("div",null,p)}const E=s(n,[["render",l]]);export{u as __pageData,E as default};
diff --git a/assets/guide_start_setup.md.0v96gqG3.js b/assets/guide_start_setup.md.0v96gqG3.js
new file mode 100644
index 00000000..fe33b3a3
--- /dev/null
+++ b/assets/guide_start_setup.md.0v96gqG3.js
@@ -0,0 +1,127 @@
+import{_ as s,c as i,o as a,V as n}from"./chunks/framework.Dy019jra.js";const c=JSON.parse('{"title":"项目构建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/setup.md","filePath":"guide/start/setup.md","lastUpdated":1707642172000}'),t={name:"guide/start/setup.md"},p=n(`项目构建 基于 create-kotori 直接构建 「create-kotori 」是专用于构建 Kotori 模块的 Cli 工具。
命令语法:create-kotori <project-name>
bash pnpm init kotori@latest my-project
除此之外,也可以将其安装在全局使用:
bash npm install create-kotori -g
+create-kotori my-project
基于 Kotori 源码构建 亦称为「工作区开发」,该方法适用于有一定 Node.js 开发经验的开发者,并不推荐新人使用。使用该方法可同时开发多个插件,也可在开发当前插件时安装使用其它插件,同时可以便捷的修改与调试 Kotori 源码并进行二次开发。使用 Git 直接克隆 Kotorijs/kotori
仓库的源码:
bash git clone https://github.com/kotorijs/kotori.git
此处默认克隆的是主分支下的代码,也可以选择克隆 dev 分支,该内容将在 进阶开发中 详细说明。进入根目录并使用 pnpm 安装依赖:
bash cd ./kotori-bot-master
+pnpm install
在 ./modules/
目录下使用 create-kotori 创建一个模块:
bash cd ./modules/
+pnpm init kotori@latest my-project
+cd ./my-project/
项目结构 text my-project
+├── kotori.yml
+├── package.json
+├── tsconfig.json
+├── LICENSE
+├── README.md
+├── .gitignore
+├── node_modules
+├── lib
+│ ├── index.js
+│ ├── index.d.ts
+│ ├── ...
+├── locales
+│ ├── en_US.json
+│ ├── ja_JP.json
+│ ├── zh_CN.json
+│ └── zh_TW.json
+└── src
+ ├── config.ts
+ ├── index.ts
+ ├── types.ts
kotori.yml
仅在直接构建时存在于模块根目录,工作区开发下将位于工作区的根目录。
kotori.yml
Kotori 配置文件kotori.dev.yml
Kotori Dev 模式下配置文件package.json
包信息文件tsconfig.json
TypeScript 配置文件LICENSE
协议文件README.md
自述文件.gitignore
git 忽略文件lib
构建产物输出目录(前端为 dist
,后端为 lib
)locales
国际化文件夹,将在后面的章节中讲解src
工程文件夹,代码存放处 cofig.ts
默认配置数据文件index.ts
整个模块的入口文件types.ts
公共类型文件package.json 以下为默认创建的 package.json
:
json {
+ "name" : "kotori-plugin-my-project" ,
+ "version" : "1.0.0" ,
+ "description" : "This is my first Kotori plugin" ,
+ "main" : "lib/.js" ,
+ "scripts" : {
+ "build" : "tsc --build"
+ },
+ "license" : "GPL-3.0" ,
+ "keywords" : [ "kotori-plugin" ],
+ "files" : [ "lib" , "LICENSE" , "README.md" ],
+ "peerDependencies" : {
+ "kotori-bot" : "1.1.0"
+ }
+}
添加一些非必要配置项以完善包信息:
json {
+ "author" : "Himeno <biyuehuya@gmail.com>" ,
+ "bugs" : {
+ "url" : "https://github.com/kotorijs/my-project/issues"
+ },
+ "repository" : {
+ "type" : "git" ,
+ "url" : "git+https://github.com/kotorijs/my-project.git"
+ },
+ "homepage" : "https://github.com/kotorijs/my-project/"
+}
添加用于传给 Kotori 的元数据:
json {
+ "kotori" : {
+ "enforce" : "pre" ,
+ "meta" : {
+ "languages" : [ "en_US" , "ja_JP" , "zh_TW" , "zh_CN" ]
+ }
+ }
+}
一个合法的 Kotori 模块其 package.json
需要满足一系列来自 Kotori 的约定,Kotori 程序只有在其合法时才会加载该模块。不过当前你无需关心这个问题,元数据与 package.json
约定将放在「模块化」章节中讲解。以下是该 package.json 的完整效果:
json {
+ "name" : "kotori-plugin-my-project" ,
+ "version" : "1.0.0" ,
+ "description" : "This is my first Kotori plugin" ,
+ "main" : "lib/.js" ,
+ "scripts" : {
+ "build" : "tsc --build"
+ },
+ "license" : "GPL-3.0" ,
+ "keywords" : [
+ "kotori-plugin"
+ ],
+ "files" : [
+ "lib" ,
+ "LICENSE" ,
+ "README.md"
+ ],
+ ,
+ "peerDependencies" : {
+ "kotori-bot" : "1.1.0"
+ },
+ "author" : "Himeno <biyuehuya@gmail.com>" ,
+ "bugs" : {
+ "url" : "https://github.com/kotorijs/my-project/issues"
+ },
+ "repository" : {
+ "type" : "git" ,
+ "url" : "git+https://github.com/kotorijs/my-project.git"
+ },
+ "homepage" : "https://github.com/kotorijs/my-project/" ,
+ "kotori" : {
+ "enforce" : "pre" ,
+ "meta" : {
+ "languages" : [
+ "en_US" ,
+ "ja_JP" ,
+ "zh_TW" ,
+ "zh_CN"
+ ]
+ }
+ }
+}
关于 package.json
的默认配置项与更多信息请参考 npm Docs 。
index.ts 以下为默认创建的 index.ts,当前你还无需理解其具体含义:
typescript import type { Context } from 'kotori-bot' ;
+import config from './config.ts' ;
+import types from './types.ts' ;
+
+export function main ( ctx : Context ) {
+ ctx
+ . command ( 'echo <content> [num:number=3]' )
+ . action (( data , message ) => {
+ ctx.logger. debug (data, data.args[ 0 ]);
+ ctx.logger. debug (message);
+ return [
+ \`返回消息:~%message%\` ,
+ {
+ message: data.args[ 0 ],
+ },
+ ];
+ })
+ . alias ( 'print' )
+ . scope ( 'group' );
+
+ ctx. regexp ( / ^ ( . * )#print $ / , match => match[ 1 ]);
+
+ ctx. command ( 'ison' ). action (( _ , events ) => {
+ if (events.api.adapter.config.master === events.userId) return \`在的哟主人~\` ;
+ return '你是...谁?' ;
+ });
+}
模块测试 在入门教程中提到过使用「@kotori-bot/kotori-plugin-adapter-cmd 」适配器可以在命令行中测试指令,但命令行本身仅支持纯文字交互因此并不友好也不便于开发者调试。同样的,Kotori 已默认安装「@kotori-bot/kotori-plugin-adapter-sandbox 」适配器,它提供了一个极为方便、全面的机器人沙盒测试环境,只需在 kotori.yml
中设置该适配器即可:
yaml adapter :
+ developer :
+ extends : sandbox
+ master : 1
+ port : 2333
运行模式 运行模式分为 「生产模式(Build)」与「开发模式(Dev)」两种:
Build 模式将显示更少的日志输出,有利于减少不必要信息方便用户使用;Dev 模式会有详尽的错误日志与开发日志输出,有利于开发者快速找到问题。 Build 模式有更牢固的错误捕获与进程守护,长期运行更加稳定;Dev 模式下在遇到某些关键性错误时会退出整个 Kotori 程序。 Dev 模式会有实时的代码文件变动监听与模块自动重载(热更新),为开发者提供犹如前端开发般的便捷体验。 Dev 模式能够直接运行 TypeScript 文件,在加载模块时会优先检测模块文件夹内是否有 src/.ts
。 Build 模式下读取 kotori.yml
,Dev 模式下读取 kotori.dev.yml
,两者用法与实际效果均一致,旨在区分不同模式下不同配置。 从 Dev 模式下启动 Kotori:
在浏览器中打开 http://localhost:2333
即可进入沙盒环境,输入 /echo Hello,Kotori!
以查看效果:
`,41),l=[p];function h(k,e,E,o,r,d){return a(),i("div",null,l)}const y=s(t,[["render",h]]);export{c as __pageData,y as default};
diff --git a/assets/guide_start_setup.md.0v96gqG3.lean.js b/assets/guide_start_setup.md.0v96gqG3.lean.js
new file mode 100644
index 00000000..b0df9b22
--- /dev/null
+++ b/assets/guide_start_setup.md.0v96gqG3.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as i,o as a,V as n}from"./chunks/framework.Dy019jra.js";const c=JSON.parse('{"title":"项目构建","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/setup.md","filePath":"guide/start/setup.md","lastUpdated":1707642172000}'),t={name:"guide/start/setup.md"},p=n("",41),l=[p];function h(k,e,E,o,r,d){return a(),i("div",null,l)}const y=s(t,[["render",h]]);export{c as __pageData,y as default};
diff --git a/assets/index.md.JPAfID5X.js b/assets/index.md.JPAfID5X.js
new file mode 100644
index 00000000..d2b76491
--- /dev/null
+++ b/assets/index.md.JPAfID5X.js
@@ -0,0 +1 @@
+import{_ as t,c as e,o as i}from"./chunks/framework.Dy019jra.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"image":{"src":"/favicon.svg","alt":"KotoriBot"},"name":"小鳥 · KotoriBot","tagline":"基于 NodeJS + TypeScript 的聊天机器人框架","actions":[{"theme":"brand","text":"开始使用👉","link":"/basic/introduce"},{"theme":"alt","text":"发行下载🐦","link":"https://github.com/kotorijs/kotori/releases"}]},"features":[{"icon":"🚀","title":"跨平台","details":"得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入"},{"icon":"🧩","title":"解耦合","details":"基于控制反转与面向切面编程思想,减少代码冗余与复杂度"},{"icon":"🛠️","title":"现代化","details":"使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1707712895000}'),o={name:"index.md"};function a(r,n,s,c,d,l){return i(),e("div")}const _=t(o,[["render",a]]);export{m as __pageData,_ as default};
diff --git a/assets/index.md.JPAfID5X.lean.js b/assets/index.md.JPAfID5X.lean.js
new file mode 100644
index 00000000..d2b76491
--- /dev/null
+++ b/assets/index.md.JPAfID5X.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as e,o as i}from"./chunks/framework.Dy019jra.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"image":{"src":"/favicon.svg","alt":"KotoriBot"},"name":"小鳥 · KotoriBot","tagline":"基于 NodeJS + TypeScript 的聊天机器人框架","actions":[{"theme":"brand","text":"开始使用👉","link":"/basic/introduce"},{"theme":"alt","text":"发行下载🐦","link":"https://github.com/kotorijs/kotori/releases"}]},"features":[{"icon":"🚀","title":"跨平台","details":"得益于模块化支持,通过编写各种模块实现不同的功能与聊天平台接入"},{"icon":"🧩","title":"解耦合","details":"基于控制反转与面向切面编程思想,减少代码冗余与复杂度"},{"icon":"🛠️","title":"现代化","details":"使用现代化的 ECMAScript 语法规范与强大的 TypeScript 类型支持"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1707712895000}'),o={name:"index.md"};function a(r,n,s,c,d,l){return i(),e("div")}const _=t(o,[["render",a]]);export{m as __pageData,_ as default};
diff --git a/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 b/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..2a687296748f6b8bc8076cd11bde49cd27e4442b
GIT binary patch
literal 28332
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
HNCp4^t1hY;
literal 0
HcmV?d00001
diff --git a/assets/inter-italic-cyrillic.D6csxwjC.woff2 b/assets/inter-italic-cyrillic.D6csxwjC.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..f64035158d7e4c01654e3f23dcd6e8299928a28c
GIT binary patch
literal 17824
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