@heybox/hb-sdk 0.8.0-alpha.2 → 0.8.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -430
- package/README.md +26 -2
- package/dist/cli-chunks/{build-CCLWgXyA.cjs → build-DkokKVNy.cjs} +2 -2
- package/dist/cli-chunks/{context-Brh56h56.cjs → context-CKzZxKbF.cjs} +1 -1
- package/dist/cli-chunks/{create-BZ-hi2s1.cjs → create-BQy5Jdmu.cjs} +2 -2
- package/dist/cli-chunks/{dev-CoSXtEYa.cjs → dev-Dik2zr5R.cjs} +60 -63
- package/dist/cli-chunks/doctor-Byr4uwKG.cjs +65 -0
- package/dist/cli-chunks/{index-BL5eEPap.cjs → index-BwGBr1ZA.cjs} +50 -30
- package/dist/cli-chunks/{index-CS6Q0o5C.cjs → index-Cl0XaX8e.cjs} +1 -1
- package/dist/cli-chunks/{index.esm-BoBHPfpq.cjs → index.esm-BYifBABc.cjs} +6 -5
- package/dist/cli-chunks/{login-CILLxGuf.cjs → login-Dr9lclu3.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-Qu6Xe9Dn.cjs → project-vite-BIPrOtRO.cjs} +1 -1
- package/dist/cli-chunks/{remote-DRuTQ51u.cjs → remote-DXxyA14a.cjs} +4 -4
- package/dist/cli-chunks/{session-D-_N3WVL.cjs → session-B6Mo9eYW.cjs} +1 -1
- package/dist/cli-chunks/skill-f90sxv28.cjs +83 -0
- package/dist/cli-chunks/version-DDB_btOG.cjs +8 -0
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/{browser-dev-host-uq-Wac6k.js → browser-dev-host-CbhA4h8z.js} +15 -15
- package/dist/devtools/browser-dev-host/assets/{index-KD2f3Jdz.css → index-DJFB5ySU.css} +1 -1
- package/dist/devtools/browser-dev-host/assets/{index-CeP6SLB3.js → index-DaqmTjSF.js} +4 -4
- package/dist/devtools/browser-dev-host/assets/workbench-state-wHgWRb7I.js +5 -0
- package/dist/devtools/browser-dev-host/index.html +3 -3
- package/dist/index.cjs.js +2 -2
- package/dist/index.esm.js +2 -2
- package/dist/templates/{vue3-vite-ts → vanilla-vite-js}/.gitignore.ejs +0 -1
- package/dist/templates/vanilla-vite-js/README.md.ejs +14 -0
- package/dist/templates/vanilla-vite-js/index.html.ejs +20 -0
- package/dist/templates/vanilla-vite-js/package.json.ejs +21 -0
- package/dist/templates/vanilla-vite-js/src/assets/heybox-logo.svg +8 -0
- package/dist/templates/vanilla-vite-js/src/main.js +39 -0
- package/dist/templates/vanilla-vite-js/src/styles.css +155 -0
- package/dist/templates/{vue3-vite-ts/vite.config.ts → vanilla-vite-js/vite.config.js} +1 -2
- package/dist/vite.cjs.js +1 -1
- package/dist/vite.esm.js +1 -1
- package/package.json +19 -10
- package/skill/SKILL.md +8 -9
- package/skill/references/api-protocol.md +2 -4
- package/skill/references/api-root.md +4 -2
- package/skill/references/cli.md +20 -7
- package/skill/references/examples.md +1 -1
- package/skill/references/llms-index.md +1 -1
- package/skill/references/recipes.md +6 -4
- package/skill/references/safety-boundaries.md +1 -1
- package/skill/skill.json +10 -5
- package/types/modules/share/index.d.ts +1 -1
- package/types/modules/share/show-share-menu.d.ts +1 -1
- package/types/modules/share/types.d.ts +2 -4
- package/types/skill-metadata.d.ts +0 -4
- package/dist/cli-chunks/doctor-EsCYJGhV.cjs +0 -204
- package/dist/devtools/browser-dev-host/assets/workbench-state-D-1U0JRq.js +0 -5
- package/dist/templates/vue3-vite-ts/README.md.ejs +0 -47
- package/dist/templates/vue3-vite-ts/index.html.ejs +0 -12
- package/dist/templates/vue3-vite-ts/package.json.ejs +0 -33
- package/dist/templates/vue3-vite-ts/src/App.vue +0 -78
- package/dist/templates/vue3-vite-ts/src/__tests__/App.spec.ts +0 -148
- package/dist/templates/vue3-vite-ts/src/auth-handoff.ts +0 -46
- package/dist/templates/vue3-vite-ts/src/main.ts +0 -5
- package/dist/templates/vue3-vite-ts/src/styles.css +0 -60
- package/dist/templates/vue3-vite-ts/src/vite-env.d.ts +0 -1
- package/dist/templates/vue3-vite-ts/tsconfig.app.json +0 -17
- package/dist/templates/vue3-vite-ts/tsconfig.json +0 -11
- package/dist/templates/vue3-vite-ts/tsconfig.node.json +0 -11
- package/dist/templates/vue3-vite-ts/vitest.config.ts +0 -10
- package/skill/scripts/check-references.mjs +0 -14
- package/skill/scripts/markdown-sections.mjs +0 -36
- package/skill/scripts/package-skill.mjs +0 -60
- package/skill/scripts/package-skill.sh +0 -6
- package/skill/scripts/skill-metadata.mjs +0 -77
- package/skill/scripts/sync-agent-skills-payload.mjs +0 -359
- package/skill/scripts/sync-references.mjs +0 -826
- package/skill/scripts/validate-skill.mjs +0 -263
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
function tn(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const q={},ut=[],He=()=>{},Kn=()=>!1,sn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),nn=e=>e.startsWith("onUpdate:"),ue=Object.assign,rn=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},_i=Object.prototype.hasOwnProperty,$=(e,t)=>_i.call(e,t),F=Array.isArray,at=e=>Bt(e)==="[object Map]",qn=e=>Bt(e)==="[object Set]",Tn=e=>Bt(e)==="[object Date]",L=e=>typeof e=="function",re=e=>typeof e=="string",Se=e=>typeof e=="symbol",W=e=>e!==null&&typeof e=="object",Gn=e=>(W(e)||L(e))&&L(e.then)&&L(e.catch),Jn=Object.prototype.toString,Bt=e=>Jn.call(e),mi=e=>Bt(e).slice(8,-1),Yn=e=>Bt(e)==="[object Object]",cs=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=tn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),us=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},bi=/-\w/g,je=us(e=>e.replace(bi,t=>t.slice(1).toUpperCase())),yi=/\B([A-Z])/g,Nt=us(e=>e.replace(yi,"-$1").toLowerCase()),on=us(e=>e.charAt(0).toUpperCase()+e.slice(1)),Qt=us(e=>e?`on${on(e)}`:""),Ce=(e,t)=>!Object.is(e,t),Os=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},zn=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},vi=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Hl=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Cn;const as=()=>Cn||(Cn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function hs(e){if(F(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=re(n)?Ti(n):hs(n);if(r)for(const i in r)t[i]=r[i]}return t}else if(re(e)||W(e))return e}const xi=/;(?![^(]*\))/g,wi=/:([^]+)/,Si=/\/\*[^]*?\*\//g;function Ti(e){const t={};return e.replace(Si,"").split(xi).forEach(s=>{if(s){const n=s.split(wi);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ds(e){let t="";if(re(e))t=e;else if(F(e))for(let s=0;s<e.length;s++){const n=ds(e[s]);n&&(t+=n+" ")}else if(W(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}function jl(e){if(!e)return null;let{class:t,style:s}=e;return t&&!re(t)&&(e.class=ds(t)),s&&(e.style=hs(s)),e}const Ci="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Vl=tn(Ci);function Bl(e){return!!e||e===""}function Ei(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=ln(e[n],t[n]);return s}function ln(e,t){if(e===t)return!0;let s=Tn(e),n=Tn(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=Se(e),n=Se(t),s||n)return e===t;if(s=F(e),n=F(t),s||n)return s&&n?Ei(e,t):!1;if(s=W(e),n=W(t),s||n){if(!s||!n)return!1;const r=Object.keys(e).length,i=Object.keys(t).length;if(r!==i)return!1;for(const o in e){const l=e.hasOwnProperty(o),c=t.hasOwnProperty(o);if(l&&!c||!l&&c||!ln(e[o],t[o]))return!1}}return String(e)===String(t)}const Qn=e=>!!(e&&e.__v_isRef===!0),Ai=e=>re(e)?e:e==null?"":F(e)||W(e)&&(e.toString===Jn||!L(e.toString))?Qn(e)?Ai(e.value):JSON.stringify(e,Zn,2):String(e),Zn=(e,t)=>Qn(t)?Zn(e,t.value):at(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],i)=>(s[Rs(n,i)+" =>"]=r,s),{})}:qn(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Rs(s))}:Se(t)?Rs(t):W(t)&&!F(t)&&!Yn(t)?String(t):t,Rs=(e,t="")=>{var s;return Se(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};let se;class Xn{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=se;try{return se=this,t()}finally{se=s}}}on(){++this._on===1&&(this.prevScope=se,se=this)}off(){if(this._on>0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Nl(e){return new Xn(e)}function Pi(){return se}function $l(e,t=!1){se&&se.cleanups.push(e)}let z;const Is=new WeakSet;class er{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,se&&(se.active?se.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Is.has(this)&&(Is.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||sr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,En(this),nr(this);const t=z,s=Ee;z=this,Ee=!0;try{return this.fn()}finally{rr(this),z=t,Ee=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)un(t);this.deps=this.depsTail=void 0,En(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Is.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Vs(this)&&this.run()}get dirty(){return Vs(this)}}let tr=0,Et,At;function sr(e,t=!1){if(e.flags|=8,t){e.next=At,At=e;return}e.next=Et,Et=e}function fn(){tr++}function cn(){if(--tr>0)return;if(At){let t=At;for(At=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Et;){let t=Et;for(Et=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function nr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function rr(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),un(n),Oi(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function Vs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ir(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ir(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ft)||(e.globalVersion=Ft,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Vs(e))))return;e.flags|=2;const t=e.dep,s=z,n=Ee;z=e,Ee=!0;try{nr(e);const r=e.fn(e._value);(t.version===0||Ce(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{z=s,Ee=n,rr(e),e.flags&=-3}}function un(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)un(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Oi(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ee=!0;const or=[];function Ue(){or.push(Ee),Ee=!1}function Ke(){const e=or.pop();Ee=e===void 0?!0:e}function En(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=z;z=void 0;try{t()}finally{z=s}}}let Ft=0;class Ri{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ps{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!z||!Ee||z===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==z)s=this.activeLink=new Ri(z,this),z.deps?(s.prevDep=z.depsTail,z.depsTail.nextDep=s,z.depsTail=s):z.deps=z.depsTail=s,lr(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=z.depsTail,s.nextDep=void 0,z.depsTail.nextDep=s,z.depsTail=s,z.deps===s&&(z.deps=n)}return s}trigger(t){this.version++,Ft++,this.notify(t)}notify(t){fn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{cn()}}}function lr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)lr(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const ts=new WeakMap,ot=Symbol(""),Bs=Symbol(""),Mt=Symbol("");function le(e,t,s){if(Ee&&z){let n=ts.get(e);n||ts.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new ps),r.map=n,r.key=s),r.track()}}function $e(e,t,s,n,r,i){const o=ts.get(e);if(!o){Ft++;return}const l=c=>{c&&c.trigger()};if(fn(),t==="clear")o.forEach(l);else{const c=F(e),h=c&&cs(s);if(c&&s==="length"){const u=Number(n);o.forEach((d,v)=>{(v==="length"||v===Mt||!Se(v)&&v>=u)&&l(d)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),h&&l(o.get(Mt)),t){case"add":c?h&&l(o.get("length")):(l(o.get(ot)),at(e)&&l(o.get(Bs)));break;case"delete":c||(l(o.get(ot)),at(e)&&l(o.get(Bs)));break;case"set":at(e)&&l(o.get(ot));break}}cn()}function Ii(e,t){const s=ts.get(e);return s&&s.get(t)}function ft(e){const t=V(e);return t===e?t:(le(t,"iterate",Mt),ve(e)?t:t.map(Ae))}function gs(e){return le(e=V(e),"iterate",Mt),e}function ke(e,t){return qe(e)?gt(lt(e)?Ae(t):t):Ae(t)}const Fi={__proto__:null,[Symbol.iterator](){return Fs(this,Symbol.iterator,e=>ke(this,e))},concat(...e){return ft(this).concat(...e.map(t=>F(t)?ft(t):t))},entries(){return Fs(this,"entries",e=>(e[1]=ke(this,e[1]),e))},every(e,t){return Be(this,"every",e,t,void 0,arguments)},filter(e,t){return Be(this,"filter",e,t,s=>s.map(n=>ke(this,n)),arguments)},find(e,t){return Be(this,"find",e,t,s=>ke(this,s),arguments)},findIndex(e,t){return Be(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Be(this,"findLast",e,t,s=>ke(this,s),arguments)},findLastIndex(e,t){return Be(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Be(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ms(this,"includes",e)},indexOf(...e){return Ms(this,"indexOf",e)},join(e){return ft(this).join(e)},lastIndexOf(...e){return Ms(this,"lastIndexOf",e)},map(e,t){return Be(this,"map",e,t,void 0,arguments)},pop(){return xt(this,"pop")},push(...e){return xt(this,"push",e)},reduce(e,...t){return An(this,"reduce",e,t)},reduceRight(e,...t){return An(this,"reduceRight",e,t)},shift(){return xt(this,"shift")},some(e,t){return Be(this,"some",e,t,void 0,arguments)},splice(...e){return xt(this,"splice",e)},toReversed(){return ft(this).toReversed()},toSorted(e){return ft(this).toSorted(e)},toSpliced(...e){return ft(this).toSpliced(...e)},unshift(...e){return xt(this,"unshift",e)},values(){return Fs(this,"values",e=>ke(this,e))}};function Fs(e,t,s){const n=gs(e),r=n[t]();return n!==e&&!ve(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=s(i.value)),i}),r}const Mi=Array.prototype;function Be(e,t,s,n,r,i){const o=gs(e),l=o!==e&&!ve(e),c=o[t];if(c!==Mi[t]){const d=c.apply(e,i);return l?Ae(d):d}let h=s;o!==e&&(l?h=function(d,v){return s.call(this,ke(e,d),v,e)}:s.length>2&&(h=function(d,v){return s.call(this,d,v,e)}));const u=c.call(o,h,n);return l&&r?r(u):u}function An(e,t,s,n){const r=gs(e),i=r!==e&&!ve(e);let o=s,l=!1;r!==e&&(i?(l=n.length===0,o=function(h,u,d){return l&&(l=!1,h=ke(e,h)),s.call(this,h,ke(e,u),d,e)}):s.length>3&&(o=function(h,u,d){return s.call(this,h,u,d,e)}));const c=r[t](o,...n);return l?ke(e,c):c}function Ms(e,t,s){const n=V(e);le(n,"iterate",Mt);const r=n[t](...s);return(r===-1||r===!1)&&ys(s[0])?(s[0]=V(s[0]),n[t](...s)):r}function xt(e,t,s=[]){Ue(),fn();const n=V(e)[t].apply(e,s);return cn(),Ke(),n}const Li=tn("__proto__,__v_isRef,__isVue"),fr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Se));function ki(e){Se(e)||(e=String(e));const t=V(this);return le(t,"has",e),t.hasOwnProperty(e)}class cr{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?gr:pr:i?dr:hr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=F(t);if(!r){let c;if(o&&(c=Fi[s]))return c;if(s==="hasOwnProperty")return ki}const l=Reflect.get(t,s,ne(t)?t:n);if((Se(s)?fr.has(s):Li(s))||(r||le(t,"get",s),i))return l;if(ne(l)){const c=o&&cs(s)?l:l.value;return r&&W(c)?$s(c):c}return W(l)?r?$s(l):ms(l):l}}class ur extends cr{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];const o=F(t)&&cs(s);if(!this._isShallow){const h=qe(i);if(!ve(n)&&!qe(n)&&(i=V(i),n=V(n)),!o&&ne(i)&&!ne(n))return h||(i.value=n),!0}const l=o?Number(s)<t.length:$(t,s),c=Reflect.set(t,s,n,ne(t)?t:r);return t===V(r)&&(l?Ce(n,i)&&$e(t,"set",s,n):$e(t,"add",s,n)),c}deleteProperty(t,s){const n=$(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&$e(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!Se(s)||!fr.has(s))&&le(t,"has",s),n}ownKeys(t){return le(t,"iterate",F(t)?"length":ot),Reflect.ownKeys(t)}}class ar extends cr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Di=new ur,Hi=new ar,ji=new ur(!0),Vi=new ar(!0),Ns=e=>e,Gt=e=>Reflect.getPrototypeOf(e);function Bi(e,t,s){return function(...n){const r=this.__v_raw,i=V(r),o=at(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,h=r[e](...n),u=s?Ns:t?gt:Ae;return!t&&le(i,"iterate",c?Bs:ot),ue(Object.create(h),{next(){const{value:d,done:v}=h.next();return v?{value:d,done:v}:{value:l?[u(d[0]),u(d[1])]:u(d),done:v}}})}}function Jt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ni(e,t){const s={get(r){const i=this.__v_raw,o=V(i),l=V(r);e||(Ce(r,l)&&le(o,"get",r),le(o,"get",l));const{has:c}=Gt(o),h=t?Ns:e?gt:Ae;if(c.call(o,r))return h(i.get(r));if(c.call(o,l))return h(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&le(V(r),"iterate",ot),r.size},has(r){const i=this.__v_raw,o=V(i),l=V(r);return e||(Ce(r,l)&&le(o,"has",r),le(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=V(l),h=t?Ns:e?gt:Ae;return!e&&le(c,"iterate",ot),l.forEach((u,d)=>r.call(i,h(u),h(d),o))}};return ue(s,e?{add:Jt("add"),set:Jt("set"),delete:Jt("delete"),clear:Jt("clear")}:{add(r){const i=V(this),o=Gt(i),l=V(r),c=!t&&!ve(r)&&!qe(r)?l:r;return o.has.call(i,c)||Ce(r,c)&&o.has.call(i,r)||Ce(l,c)&&o.has.call(i,l)||(i.add(c),$e(i,"add",c,c)),this},set(r,i){!t&&!ve(i)&&!qe(i)&&(i=V(i));const o=V(this),{has:l,get:c}=Gt(o);let h=l.call(o,r);h||(r=V(r),h=l.call(o,r));const u=c.call(o,r);return o.set(r,i),h?Ce(i,u)&&$e(o,"set",r,i):$e(o,"add",r,i),this},delete(r){const i=V(this),{has:o,get:l}=Gt(i);let c=o.call(i,r);c||(r=V(r),c=o.call(i,r)),l&&l.call(i,r);const h=i.delete(r);return c&&$e(i,"delete",r,void 0),h},clear(){const r=V(this),i=r.size!==0,o=r.clear();return i&&$e(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=Bi(r,e,t)}),s}function _s(e,t){const s=Ni(e,t);return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get($(s,r)&&r in n?s:n,r,i)}const $i={get:_s(!1,!1)},Wi={get:_s(!1,!0)},Ui={get:_s(!0,!1)},Ki={get:_s(!0,!0)},hr=new WeakMap,dr=new WeakMap,pr=new WeakMap,gr=new WeakMap;function qi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Gi(e){return e.__v_skip||!Object.isExtensible(e)?0:qi(mi(e))}function ms(e){return qe(e)?e:bs(e,!1,Di,$i,hr)}function Ji(e){return bs(e,!1,ji,Wi,dr)}function $s(e){return bs(e,!0,Hi,Ui,pr)}function Wl(e){return bs(e,!0,Vi,Ki,gr)}function bs(e,t,s,n,r){if(!W(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=Gi(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?n:s);return r.set(e,l),l}function lt(e){return qe(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function qe(e){return!!(e&&e.__v_isReadonly)}function ve(e){return!!(e&&e.__v_isShallow)}function ys(e){return e?!!e.__v_raw:!1}function V(e){const t=e&&e.__v_raw;return t?V(t):e}function Yi(e){return!$(e,"__v_skip")&&Object.isExtensible(e)&&zn(e,"__v_skip",!0),e}const Ae=e=>W(e)?ms(e):e,gt=e=>W(e)?$s(e):e;function ne(e){return e?e.__v_isRef===!0:!1}function zi(e){return _r(e,!1)}function Ul(e){return _r(e,!0)}function _r(e,t){return ne(e)?e:new Qi(e,t)}class Qi{constructor(t,s){this.dep=new ps,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:V(t),this._value=s?t:Ae(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||ve(t)||qe(t);t=n?t:V(t),Ce(t,s)&&(this._rawValue=t,this._value=n?t:Ae(t),this.dep.trigger())}}function Kl(e){e.dep&&e.dep.trigger()}function an(e){return ne(e)?e.value:e}function ql(e){return L(e)?e():an(e)}const Zi={get:(e,t,s)=>t==="__v_raw"?e:an(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return ne(r)&&!ne(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function mr(e){return lt(e)?e:new Proxy(e,Zi)}class Xi{constructor(t){this.__v_isRef=!0,this._value=void 0;const s=this.dep=new ps,{get:n,set:r}=t(s.track.bind(s),s.trigger.bind(s));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Gl(e){return new Xi(e)}function Jl(e){const t=F(e)?new Array(e.length):{};for(const s in e)t[s]=br(e,s);return t}class eo{constructor(t,s,n){this._object=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._key=Se(s)?s:String(s),this._raw=V(t);let r=!0,i=t;if(!F(t)||Se(this._key)||!cs(this._key))do r=!ys(i)||ve(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=an(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ne(this._raw[this._key])){const s=this._object[this._key];if(ne(s)){s.value=t;return}}this._object[this._key]=t}get dep(){return Ii(this._raw,this._key)}}class to{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Yl(e,t,s){return ne(e)?e:L(e)?new to(e):W(e)&&arguments.length>1?br(e,t,s):zi(e)}function br(e,t,s){return new eo(e,t,s)}class so{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new ps(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ft-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&z!==this)return sr(this,!0),!0}get value(){const t=this.dep.track();return ir(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function no(e,t,s=!1){let n,r;return L(e)?n=e:(n=e.get,r=e.set),new so(n,r,s)}const Yt={},ss=new WeakMap;let st;function ro(e,t=!1,s=st){if(s){let n=ss.get(s);n||ss.set(s,n=[]),n.push(e)}}function io(e,t,s=q){const{immediate:n,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=s,h=A=>r?A:ve(A)||r===!1||r===0?We(A,1):We(A);let u,d,v,S,R=!1,C=!1;if(ne(e)?(d=()=>e.value,R=ve(e)):lt(e)?(d=()=>h(e),R=!0):F(e)?(C=!0,R=e.some(A=>lt(A)||ve(A)),d=()=>e.map(A=>{if(ne(A))return A.value;if(lt(A))return h(A);if(L(A))return c?c(A,2):A()})):L(e)?t?d=c?()=>c(e,2):e:d=()=>{if(v){Ue();try{v()}finally{Ke()}}const A=st;st=u;try{return c?c(e,3,[S]):e(S)}finally{st=A}}:d=He,t&&r){const A=d,U=r===!0?1/0:r;d=()=>We(A(),U)}const D=Pi(),H=()=>{u.stop(),D&&D.active&&rn(D.effects,u)};if(i&&t){const A=t;t=(...U)=>{A(...U),H()}}let I=C?new Array(e.length).fill(Yt):Yt;const B=A=>{if(!(!(u.flags&1)||!u.dirty&&!A))if(t){const U=u.run();if(r||R||(C?U.some((te,k)=>Ce(te,I[k])):Ce(U,I))){v&&v();const te=st;st=u;try{const k=[U,I===Yt?void 0:C&&I[0]===Yt?[]:I,S];I=U,c?c(t,3,k):t(...k)}finally{st=te}}}else u.run()};return l&&l(B),u=new er(d),u.scheduler=o?()=>o(B,!1):B,S=A=>ro(A,!1,u),v=u.onStop=()=>{const A=ss.get(u);if(A){if(c)c(A,4);else for(const U of A)U();ss.delete(u)}},t?n?B(!0):I=u.run():o?o(B.bind(null,!0),!0):u.run(),H.pause=u.pause.bind(u),H.resume=u.resume.bind(u),H.stop=H,H}function We(e,t=1/0,s){if(t<=0||!W(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,ne(e))We(e.value,t,s);else if(F(e))for(let n=0;n<e.length;n++)We(e[n],t,s);else if(qn(e)||at(e))e.forEach(n=>{We(n,t,s)});else if(Yn(e)){for(const n in e)We(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&We(e[n],t,s)}return e}function $t(e,t,s,n){try{return n?e(...n):e()}catch(r){vs(r,t,s)}}function Ve(e,t,s,n){if(L(e)){const r=$t(e,t,s,n);return r&&Gn(r)&&r.catch(i=>{vs(i,t,s)}),r}if(F(e)){const r=[];for(let i=0;i<e.length;i++)r.push(Ve(e[i],t,s,n));return r}}function vs(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||q;if(t){let l=t.parent;const c=t.proxy,h=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const u=l.ec;if(u){for(let d=0;d<u.length;d++)if(u[d](e,c,h)===!1)return}l=l.parent}if(i){Ue(),$t(i,null,10,[e,c,h]),Ke();return}}oo(e,s,r,n,o)}function oo(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const ge=[];let Me=-1;const ht=[];let Ye=null,ct=0;const yr=Promise.resolve();let ns=null;function lo(e){const t=ns||yr;return e?t.then(this?e.bind(this):e):t}function fo(e){let t=Me+1,s=ge.length;for(;t<s;){const n=t+s>>>1,r=ge[n],i=Lt(r);i<e||i===e&&r.flags&2?t=n+1:s=n}return t}function hn(e){if(!(e.flags&1)){const t=Lt(e),s=ge[ge.length-1];!s||!(e.flags&2)&&t>=Lt(s)?ge.push(e):ge.splice(fo(t),0,e),e.flags|=1,vr()}}function vr(){ns||(ns=yr.then(wr))}function co(e){F(e)?ht.push(...e):Ye&&e.id===-1?Ye.splice(ct+1,0,e):e.flags&1||(ht.push(e),e.flags|=1),vr()}function Pn(e,t,s=Me+1){for(;s<ge.length;s++){const n=ge[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;ge.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function xr(e){if(ht.length){const t=[...new Set(ht)].sort((s,n)=>Lt(s)-Lt(n));if(ht.length=0,Ye){Ye.push(...t);return}for(Ye=t,ct=0;ct<Ye.length;ct++){const s=Ye[ct];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Ye=null,ct=0}}const Lt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function wr(e){try{for(Me=0;Me<ge.length;Me++){const t=ge[Me];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),$t(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Me<ge.length;Me++){const t=ge[Me];t&&(t.flags&=-2)}Me=-1,ge.length=0,xr(),ns=null,(ge.length||ht.length)&&wr()}}let oe=null,Sr=null;function rs(e){const t=oe;return oe=e,Sr=e&&e.type.__scopeId||null,t}function uo(e,t=oe,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&ls(-1);const i=rs(t);let o;try{o=e(...r)}finally{rs(i),n._d&&ls(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function zl(e,t){if(oe===null)return e;const s=As(oe),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[i,o,l,c=q]=t[r];i&&(L(i)&&(i={mounted:i,updated:i}),i.deep&&We(o),n.push({dir:i,instance:s,value:o,oldValue:void 0,arg:l,modifiers:c}))}return e}function et(e,t,s,n){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const l=r[o];i&&(l.oldValue=i[o].value);let c=l.dir[n];c&&(Ue(),Ve(c,s,8,[e.el,l,e,t]),Ke())}}function ao(e,t){if(ce){let s=ce.provides;const n=ce.parent&&ce.parent.provides;n===s&&(s=ce.provides=Object.create(n)),s[e]=t}}function Zt(e,t,s=!1){const n=Es();if(n||pt){let r=pt?pt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&L(t)?t.call(n&&n.proxy):t}}const ho=Symbol.for("v-scx"),po=()=>Zt(ho);function Ql(e,t){return xs(e,null,t)}function Zl(e,t){return xs(e,null,{flush:"post"})}function Ls(e,t,s){return xs(e,t,s)}function xs(e,t,s=q){const{immediate:n,deep:r,flush:i,once:o}=s,l=ue({},s),c=t&&n||!t&&i!=="post";let h;if(Ht){if(i==="sync"){const S=po();h=S.__watcherHandles||(S.__watcherHandles=[])}else if(!c){const S=()=>{};return S.stop=He,S.resume=He,S.pause=He,S}}const u=ce;l.call=(S,R,C)=>Ve(S,u,R,C);let d=!1;i==="post"?l.scheduler=S=>{pe(S,u&&u.suspense)}:i!=="sync"&&(d=!0,l.scheduler=(S,R)=>{R?S():hn(S)}),l.augmentJob=S=>{t&&(S.flags|=4),d&&(S.flags|=2,u&&(S.id=u.uid,S.i=u))};const v=io(e,t,l);return Ht&&(h?h.push(v):c&&v()),v}function go(e,t,s){const n=this.proxy,r=re(e)?e.includes(".")?Tr(n,e):()=>n[e]:e.bind(n,n);let i;L(t)?i=t:(i=t.handler,s=t);const o=Wt(this),l=xs(r,i.bind(n),s);return o(),l}function Tr(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const Je=new WeakMap,Cr=Symbol("_vte"),Er=e=>e.__isTeleport,nt=e=>e&&(e.disabled||e.disabled===""),_o=e=>e&&(e.defer||e.defer===""),On=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Rn=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ws=(e,t)=>{const s=e&&e.to;return re(s)?t?t(s):null:s},mo={name:"Teleport",__isTeleport:!0,process(e,t,s,n,r,i,o,l,c,h){const{mc:u,pc:d,pbc:v,o:{insert:S,querySelector:R,createText:C,createComment:D,parentNode:H}}=h,I=nt(t.props);let{dynamicChildren:B}=t;const A=(k,G,P)=>{k.shapeFlag&16&&u(k.children,G,P,r,i,o,l,c)},U=(k=t)=>{const G=nt(k.props),P=k.target=Ws(k.props,R),N=Us(P,k,C,S);P&&(o!=="svg"&&On(P)?o="svg":o!=="mathml"&&Rn(P)&&(o="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(P),G||(A(k,P,N),St(k,!1)))},te=k=>{const G=()=>{if(Je.get(k)===G){if(Je.delete(k),nt(k.props)){const P=H(k.el)||s;A(k,P,k.anchor),St(k,!0)}U(k)}};Je.set(k,G),pe(G,i)};if(e==null){const k=t.el=C(""),G=t.anchor=C("");if(S(k,s,n),S(G,s,n),_o(t.props)||i&&i.pendingBranch){te(t);return}I&&(A(t,s,G),St(t,!0)),U()}else{t.el=e.el;const k=t.anchor=e.anchor,G=Je.get(e);if(G){G.flags|=8,Je.delete(e),te(t);return}t.targetStart=e.targetStart;const P=t.target=e.target,N=t.targetAnchor=e.targetAnchor,Q=nt(e.props),ae=Q?s:P,xe=Q?k:N;if(o==="svg"||On(P)?o="svg":(o==="mathml"||Rn(P))&&(o="mathml"),B?(v(e.dynamicChildren,B,ae,r,i,o,l),gn(e,t,!0)):c||d(e,t,ae,xe,r,i,o,l,!1),I)Q?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):zt(t,s,k,h,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Te=t.target=Ws(t.props,R);Te&&zt(t,Te,null,h,0)}else Q&&zt(t,P,N,h,1);St(t,I)}},remove(e,t,s,{um:n,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:h,targetAnchor:u,target:d,props:v}=e;let S=i||!nt(v);const R=Je.get(e);if(R&&(R.flags|=8,Je.delete(e),S=!1),d&&(r(h),r(u)),i&&r(c),o&16)for(let C=0;C<l.length;C++){const D=l[C];n(D,t,s,S,!!D.dynamicChildren)}},move:zt,hydrate:bo};function zt(e,t,s,{o:{insert:n},m:r},i=2){i===0&&n(e.targetAnchor,t,s);const{el:o,anchor:l,shapeFlag:c,children:h,props:u}=e,d=i===2;if(d&&n(o,t,s),!Je.has(e)&&(!d||nt(u))&&c&16)for(let v=0;v<h.length;v++)r(h[v],t,s,2);d&&n(l,t,s)}function bo(e,t,s,n,r,i,{o:{nextSibling:o,parentNode:l,querySelector:c,insert:h,createText:u}},d){function v(D,H){let I=H;for(;I;){if(I&&I.nodeType===8){if(I.data==="teleport start anchor")t.targetStart=I;else if(I.data==="teleport anchor"){t.targetAnchor=I,D._lpa=t.targetAnchor&&o(t.targetAnchor);break}}I=o(I)}}function S(D,H){H.anchor=d(o(D),H,l(D),s,n,r,i)}const R=t.target=Ws(t.props,c),C=nt(t.props);if(R){const D=R._lpa||R.firstChild;t.shapeFlag&16&&(C?(S(e,t),v(R,D),t.targetAnchor||Us(R,t,u,h,l(e)===R?e:null)):(t.anchor=o(e),v(R,D),t.targetAnchor||Us(R,t,u,h),d(D&&o(D),t,R,s,n,r,i))),St(t,C)}else C&&t.shapeFlag&16&&(S(e,t),t.targetStart=e,t.targetAnchor=o(e));return t.anchor&&o(t.anchor)}const Xl=mo;function St(e,t){const s=e.ctx;if(s&&s.ut){let n,r;for(t?(n=e.el,r=e.anchor):(n=e.targetStart,r=e.targetAnchor);n&&n!==r;)n.nodeType===1&&n.setAttribute("data-v-owner",s.uid),n=n.nextSibling;s.ut()}}function Us(e,t,s,n,r=null){const i=t.targetStart=s(""),o=t.targetAnchor=s("");return i[Cr]=o,e&&(n(i,e,r),n(o,e,r)),o}const Le=Symbol("_leaveCb"),wt=Symbol("_enterCb");function yo(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Mr(()=>{e.isMounted=!0}),Lr(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],vo={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},Ar=e=>{const t=e.subTree;return t.component?Ar(t.component):t},xo={name:"BaseTransition",props:vo,setup(e,{slots:t}){const s=Es(),n=yo();return()=>{const r=t.default&&Rr(t.default(),!0),i=r&&r.length?Pr(r):s.subTree?cl():void 0;if(!i)return;const o=V(e),{mode:l}=o;if(n.isLeaving)return ks(i);const c=In(i);if(!c)return ks(i);let h=Ks(c,o,n,s,d=>h=d);c.type!==fe&&kt(c,h);let u=s.subTree&&In(s.subTree);if(u&&u.type!==fe&&!rt(u,c)&&Ar(s).type!==fe){let d=Ks(u,o,n,s);if(kt(u,d),l==="out-in"&&c.type!==fe)return n.isLeaving=!0,d.afterLeave=()=>{n.isLeaving=!1,s.job.flags&8||s.update(),delete d.afterLeave,u=void 0},ks(i);l==="in-out"&&c.type!==fe?d.delayLeave=(v,S,R)=>{const C=Or(n,u);C[String(u.key)]=u,v[Le]=()=>{S(),v[Le]=void 0,delete h.delayedLeave,u=void 0},h.delayedLeave=()=>{R(),delete h.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return i}}};function Pr(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==fe){t=s;break}}return t}const ef=xo;function Or(e,t){const{leavingVNodes:s}=e;let n=s.get(t.type);return n||(n=Object.create(null),s.set(t.type,n)),n}function Ks(e,t,s,n,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:h,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:v,onLeave:S,onAfterLeave:R,onLeaveCancelled:C,onBeforeAppear:D,onAppear:H,onAfterAppear:I,onAppearCancelled:B}=t,A=String(e.key),U=Or(s,e),te=(P,N)=>{P&&Ve(P,n,9,N)},k=(P,N)=>{const Q=N[1];te(P,N),F(P)?P.every(ae=>ae.length<=1)&&Q():P.length<=1&&Q()},G={mode:o,persisted:l,beforeEnter(P){let N=c;if(!s.isMounted)if(i)N=D||c;else return;P[Le]&&P[Le](!0);const Q=U[A];Q&&rt(e,Q)&&Q.el[Le]&&Q.el[Le](),te(N,[P])},enter(P){if(U[A]===e)return;let N=h,Q=u,ae=d;if(!s.isMounted)if(i)N=H||h,Q=I||u,ae=B||d;else return;let xe=!1;P[wt]=Ut=>{xe||(xe=!0,Ut?te(ae,[P]):te(Q,[P]),G.delayedLeave&&G.delayedLeave(),P[wt]=void 0)};const Te=P[wt].bind(null,!1);N?k(N,[P,Te]):Te()},leave(P,N){const Q=String(e.key);if(P[wt]&&P[wt](!0),s.isUnmounting)return N();te(v,[P]);let ae=!1;P[Le]=Te=>{ae||(ae=!0,N(),Te?te(C,[P]):te(R,[P]),P[Le]=void 0,U[Q]===e&&delete U[Q])};const xe=P[Le].bind(null,!1);U[Q]=e,S?k(S,[P,xe]):xe()},clone(P){const N=Ks(P,t,s,n,r);return r&&r(N),N}};return G}function ks(e){if(ws(e))return e=Qe(e),e.children=null,e}function In(e){if(!ws(e))return Er(e.type)&&e.children?Pr(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&L(s.default))return s.default()}}function kt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,kt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Rr(e,t=!1,s){let n=[],r=0;for(let i=0;i<e.length;i++){let o=e[i];const l=s==null?o.key:String(s)+String(o.key!=null?o.key:i);o.type===ye?(o.patchFlag&128&&r++,n=n.concat(Rr(o.children,t,l))):(t||o.type!==fe)&&n.push(l!=null?Qe(o,{key:l}):o)}if(r>1)for(let i=0;i<n.length;i++)n[i].patchFlag=-2;return n}function tf(e,t){return L(e)?ue({name:e.name},t,{setup:e}):e}function sf(){const e=Es();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:""}function Ir(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Fn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const is=new WeakMap;function Pt(e,t,s,n,r=!1){if(F(e)){e.forEach((C,D)=>Pt(C,t&&(F(t)?t[D]:t),s,n,r));return}if(dt(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Pt(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?As(n.component):n.el,o=r?null:i,{i:l,r:c}=e,h=t&&t.r,u=l.refs===q?l.refs={}:l.refs,d=l.setupState,v=V(d),S=d===q?Kn:C=>Fn(u,C)?!1:$(v,C),R=(C,D)=>!(D&&Fn(u,D));if(h!=null&&h!==c){if(Mn(t),re(h))u[h]=null,S(h)&&(d[h]=null);else if(ne(h)){const C=t;R(h,C.k)&&(h.value=null),C.k&&(u[C.k]=null)}}if(L(c))$t(c,l,12,[o,u]);else{const C=re(c),D=ne(c);if(C||D){const H=()=>{if(e.f){const I=C?S(c)?d[c]:u[c]:R()||!e.k?c.value:u[e.k];if(r)F(I)&&rn(I,i);else if(F(I))I.includes(i)||I.push(i);else if(C)u[c]=[i],S(c)&&(d[c]=u[c]);else{const B=[i];R(c,e.k)&&(c.value=B),e.k&&(u[e.k]=B)}}else C?(u[c]=o,S(c)&&(d[c]=o)):D&&(R(c,e.k)&&(c.value=o),e.k&&(u[e.k]=o))};if(o){const I=()=>{H(),is.delete(e)};I.id=-1,is.set(e,I),pe(I,s)}else Mn(e),H()}}}function Mn(e){const t=is.get(e);t&&(t.flags|=8,is.delete(e))}as().requestIdleCallback;as().cancelIdleCallback;const dt=e=>!!e.type.__asyncLoader,ws=e=>e.type.__isKeepAlive;function wo(e,t){Fr(e,"a",t)}function So(e,t){Fr(e,"da",t)}function Fr(e,t,s=ce){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Ss(t,n,s),s){let r=s.parent;for(;r&&r.parent;)ws(r.parent.vnode)&&To(n,t,s,r),r=r.parent}}function To(e,t,s,n){const r=Ss(t,e,n,!0);kr(()=>{rn(n[t],r)},s)}function Ss(e,t,s=ce,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Ue();const l=Wt(s),c=Ve(t,s,e,o);return l(),Ke(),c});return n?r.unshift(i):r.push(i),i}}const Ge=e=>(t,s=ce)=>{(!Ht||e==="sp")&&Ss(e,(...n)=>t(...n),s)},Co=Ge("bm"),Mr=Ge("m"),Eo=Ge("bu"),Ao=Ge("u"),Lr=Ge("bum"),kr=Ge("um"),Po=Ge("sp"),Oo=Ge("rtg"),Ro=Ge("rtc");function Io(e,t=ce){Ss("ec",e,t)}const Fo="components",Dr=Symbol.for("v-ndc");function nf(e){return re(e)?Mo(Fo,e,!1)||e:e||Dr}function Mo(e,t,s=!0,n=!1){const r=oe||ce;if(r){const i=r.type;{const l=ml(i,!1);if(l&&(l===t||l===je(t)||l===on(je(t))))return i}const o=Ln(r[e]||i[e],t)||Ln(r.appContext[e],t);return!o&&n?i:o}}function Ln(e,t){return e&&(e[t]||e[je(t)]||e[on(je(t))])}function rf(e,t,s,n){let r;const i=s,o=F(e);if(o||re(e)){const l=o&<(e);let c=!1,h=!1;l&&(c=!ve(e),h=qe(e),e=gs(e)),r=new Array(e.length);for(let u=0,d=e.length;u<d;u++)r[u]=t(c?h?gt(Ae(e[u])):Ae(e[u]):e[u],u,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,i)}else if(W(e))if(e[Symbol.iterator])r=Array.from(e,(l,c)=>t(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,h=l.length;c<h;c++){const u=l[c];r[c]=t(e[u],u,c,i)}}else r=[];return r}function of(e,t,s={},n,r){if(oe.ce||oe.parent&&dt(oe.parent)&&oe.parent.ce){const h=Object.keys(s).length>0;return Qs(),Zs(ye,null,[me("slot",s,n&&n())],h?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),Qs();const o=i&&Hr(i(s)),l=s.key||o&&o.key,c=Zs(ye,{key:(l&&!Se(l)?l:`_${t}`)+(!o&&n?"_fb":"")},o||(n?n():[]),o&&e._===1?64:-2);return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),i&&i._c&&(i._d=!0),c}function Hr(e){return e.some(t=>Dt(t)?!(t.type===fe||t.type===ye&&!Hr(t.children)):!0)?e:null}function lf(e,t){const s={};for(const n in e)s[Qt(n)]=e[n];return s}const qs=e=>e?ri(e)?As(e):qs(e.parent):null,Ot=ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>qs(e.parent),$root:e=>qs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Br(e),$forceUpdate:e=>e.f||(e.f=()=>{hn(e.update)}),$nextTick:e=>e.n||(e.n=lo.bind(e.proxy)),$watch:e=>go.bind(e)}),Ds=(e,t)=>e!==q&&!e.__isScriptSetup&&$(e,t),Lo={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:o,type:l,appContext:c}=e;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(Ds(n,t))return o[t]=1,n[t];if(r!==q&&$(r,t))return o[t]=2,r[t];if($(i,t))return o[t]=3,i[t];if(s!==q&&$(s,t))return o[t]=4,s[t];Js&&(o[t]=0)}}const h=Ot[t];let u,d;if(h)return t==="$attrs"&&le(e.attrs,"get",""),h(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(s!==q&&$(s,t))return o[t]=4,s[t];if(d=c.config.globalProperties,$(d,t))return d[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return Ds(r,t)?(r[t]=s,!0):n!==q&&$(n,t)?(n[t]=s,!0):$(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,props:i,type:o}},l){let c;return!!(s[l]||e!==q&&l[0]!=="$"&&$(e,l)||Ds(t,l)||$(i,l)||$(n,l)||$(Ot,l)||$(r.config.globalProperties,l)||(c=o.__cssModules)&&c[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:$(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function ff(){return jr().slots}function cf(){return jr().attrs}function jr(e){const t=Es();return t.setupContext||(t.setupContext=oi(t))}function Gs(e){return F(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}function uf(e,t){const s=Gs(e);for(const n in t){if(n.startsWith("__skip"))continue;let r=s[n];r?F(r)||L(r)?r=s[n]={type:r,default:t[n]}:r.default=t[n]:r===null&&(r=s[n]={default:t[n]}),r&&t[`__skip_${n}`]&&(r.skipFactory=!0)}return s}let Js=!0;function ko(e){const t=Br(e),s=e.proxy,n=e.ctx;Js=!1,t.beforeCreate&&kn(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:h,created:u,beforeMount:d,mounted:v,beforeUpdate:S,updated:R,activated:C,deactivated:D,beforeDestroy:H,beforeUnmount:I,destroyed:B,unmounted:A,render:U,renderTracked:te,renderTriggered:k,errorCaptured:G,serverPrefetch:P,expose:N,inheritAttrs:Q,components:ae,directives:xe,filters:Te}=t;if(h&&Do(h,n,null),o)for(const Z in o){const J=o[Z];L(J)&&(n[Z]=J.bind(s))}if(r){const Z=r.call(s,s);W(Z)&&(e.data=ms(Z))}if(Js=!0,i)for(const Z in i){const J=i[Z],Ze=L(J)?J.bind(s,s):L(J.get)?J.get.bind(s,s):He,Kt=!L(J)&&L(J.set)?J.set.bind(s):He,Xe=mt({get:Ze,set:Kt});Object.defineProperty(n,Z,{enumerable:!0,configurable:!0,get:()=>Xe.value,set:Pe=>Xe.value=Pe})}if(l)for(const Z in l)Vr(l[Z],n,s,Z);if(c){const Z=L(c)?c.call(s):c;Reflect.ownKeys(Z).forEach(J=>{ao(J,Z[J])})}u&&kn(u,e,"c");function he(Z,J){F(J)?J.forEach(Ze=>Z(Ze.bind(s))):J&&Z(J.bind(s))}if(he(Co,d),he(Mr,v),he(Eo,S),he(Ao,R),he(wo,C),he(So,D),he(Io,G),he(Ro,te),he(Oo,k),he(Lr,I),he(kr,A),he(Po,P),F(N))if(N.length){const Z=e.exposed||(e.exposed={});N.forEach(J=>{Object.defineProperty(Z,J,{get:()=>s[J],set:Ze=>s[J]=Ze,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===He&&(e.render=U),Q!=null&&(e.inheritAttrs=Q),ae&&(e.components=ae),xe&&(e.directives=xe),P&&Ir(e)}function Do(e,t,s=He){F(e)&&(e=Ys(e));for(const n in e){const r=e[n];let i;W(r)?"default"in r?i=Zt(r.from||n,r.default,!0):i=Zt(r.from||n):i=Zt(r),ne(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function kn(e,t,s){Ve(F(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Vr(e,t,s,n){let r=n.includes(".")?Tr(s,n):()=>s[n];if(re(e)){const i=t[e];L(i)&&Ls(r,i)}else if(L(e))Ls(r,e.bind(s));else if(W(e))if(F(e))e.forEach(i=>Vr(i,t,s,n));else{const i=L(e.handler)?e.handler.bind(s):t[e.handler];L(i)&&Ls(r,i,e)}}function Br(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!s&&!n?c=t:(c={},r.length&&r.forEach(h=>os(c,h,o,!0)),os(c,t,o)),W(t)&&i.set(t,c),c}function os(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&os(e,i,s,!0),r&&r.forEach(o=>os(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=Ho[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ho={data:Dn,props:Hn,emits:Hn,methods:Tt,computed:Tt,beforeCreate:de,created:de,beforeMount:de,mounted:de,beforeUpdate:de,updated:de,beforeDestroy:de,beforeUnmount:de,destroyed:de,unmounted:de,activated:de,deactivated:de,errorCaptured:de,serverPrefetch:de,components:Tt,directives:Tt,watch:Vo,provide:Dn,inject:jo};function Dn(e,t){return t?e?function(){return ue(L(e)?e.call(this,this):e,L(t)?t.call(this,this):t)}:t:e}function jo(e,t){return Tt(Ys(e),Ys(t))}function Ys(e){if(F(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function de(e,t){return e?[...new Set([].concat(e,t))]:t}function Tt(e,t){return e?ue(Object.create(null),e,t):t}function Hn(e,t){return e?F(e)&&F(t)?[...new Set([...e,...t])]:ue(Object.create(null),Gs(e),Gs(t??{})):t}function Vo(e,t){if(!e)return t;if(!t)return e;const s=ue(Object.create(null),e);for(const n in t)s[n]=de(e[n],t[n]);return s}function Nr(){return{app:null,config:{isNativeTag:Kn,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Bo=0;function No(e,t){return function(n,r=null){L(n)||(n=ue({},n)),r!=null&&!W(r)&&(r=null);const i=Nr(),o=new WeakSet,l=[];let c=!1;const h=i.app={_uid:Bo++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:vl,get config(){return i.config},set config(u){},use(u,...d){return o.has(u)||(u&&L(u.install)?(o.add(u),u.install(h,...d)):L(u)&&(o.add(u),u(h,...d))),h},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),h},component(u,d){return d?(i.components[u]=d,h):i.components[u]},directive(u,d){return d?(i.directives[u]=d,h):i.directives[u]},mount(u,d,v){if(!c){const S=h._ceVNode||me(n,r);return S.appContext=i,v===!0?v="svg":v===!1&&(v=void 0),e(S,u,v),c=!0,h._container=u,u.__vue_app__=h,As(S.component)}},onUnmount(u){l.push(u)},unmount(){c&&(Ve(l,h._instance,16),e(null,h._container),delete h._container.__vue_app__)},provide(u,d){return i.provides[u]=d,h},runWithContext(u){const d=pt;pt=h;try{return u()}finally{pt=d}}};return h}}let pt=null;const $o=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${je(t)}Modifiers`]||e[`${Nt(t)}Modifiers`];function Wo(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||q;let r=s;const i=t.startsWith("update:"),o=i&&$o(n,t.slice(7));o&&(o.trim&&(r=s.map(u=>re(u)?u.trim():u)),o.number&&(r=s.map(vi)));let l,c=n[l=Qt(t)]||n[l=Qt(je(t))];!c&&i&&(c=n[l=Qt(Nt(t))]),c&&Ve(c,e,6,r);const h=n[l+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ve(h,e,6,r)}}const Uo=new WeakMap;function $r(e,t,s=!1){const n=s?Uo:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!L(e)){const c=h=>{const u=$r(h,t,!0);u&&(l=!0,ue(o,u))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(W(e)&&n.set(e,null),null):(F(i)?i.forEach(c=>o[c]=null):ue(o,i),W(e)&&n.set(e,o),o)}function Ts(e,t){return!e||!sn(t)?!1:(t=t.slice(2).replace(/Once$/,""),$(e,t[0].toLowerCase()+t.slice(1))||$(e,Nt(t))||$(e,t))}function jn(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:h,renderCache:u,props:d,data:v,setupState:S,ctx:R,inheritAttrs:C}=e,D=rs(e);let H,I;try{if(s.shapeFlag&4){const A=r||n,U=A;H=De(h.call(U,A,u,d,S,v,R)),I=l}else{const A=t;H=De(A.length>1?A(d,{attrs:l,slots:o,emit:c}):A(d,null)),I=t.props?l:Ko(l)}}catch(A){Rt.length=0,vs(A,e,1),H=me(fe)}let B=H;if(I&&C!==!1){const A=Object.keys(I),{shapeFlag:U}=B;A.length&&U&7&&(i&&A.some(nn)&&(I=qo(I,i)),B=Qe(B,I,!1,!0))}return s.dirs&&(B=Qe(B,null,!1,!0),B.dirs=B.dirs?B.dirs.concat(s.dirs):s.dirs),s.transition&&kt(B,s.transition),H=B,rs(D),H}const Ko=e=>{let t;for(const s in e)(s==="class"||s==="style"||sn(s))&&((t||(t={}))[s]=e[s]);return t},qo=(e,t)=>{const s={};for(const n in e)(!nn(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function Go(e,t,s){const{props:n,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,h=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?Vn(n,o,h):!!o;if(c&8){const u=t.dynamicProps;for(let d=0;d<u.length;d++){const v=u[d];if(Wr(o,n,v)&&!Ts(h,v))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?Vn(n,o,h):!0:!!o;return!1}function Vn(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const i=n[r];if(Wr(t,e,i)&&!Ts(s,i))return!0}return!1}function Wr(e,t,s){const n=e[s],r=t[s];return s==="style"&&W(n)&&W(r)?!ln(n,r):n!==r}function Jo({vnode:e,parent:t,suspense:s},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.suspense.vnode.el=r.el=n,e=r),r===e)(e=t.vnode).el=n,t=t.parent;else break}s&&s.activeBranch===e&&(s.vnode.el=n)}const Ur={},Kr=()=>Object.create(Ur),qr=e=>Object.getPrototypeOf(e)===Ur;function Yo(e,t,s,n=!1){const r={},i=Kr();e.propsDefaults=Object.create(null),Gr(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);s?e.props=n?r:Ji(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function zo(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=V(r),[c]=e.propsOptions;let h=!1;if((n||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let d=0;d<u.length;d++){let v=u[d];if(Ts(e.emitsOptions,v))continue;const S=t[v];if(c)if($(i,v))S!==i[v]&&(i[v]=S,h=!0);else{const R=je(v);r[R]=zs(c,l,R,S,e,!1)}else S!==i[v]&&(i[v]=S,h=!0)}}}else{Gr(e,t,r,i)&&(h=!0);let u;for(const d in l)(!t||!$(t,d)&&((u=Nt(d))===d||!$(t,u)))&&(c?s&&(s[d]!==void 0||s[u]!==void 0)&&(r[d]=zs(c,l,d,void 0,e,!0)):delete r[d]);if(i!==l)for(const d in i)(!t||!$(t,d))&&(delete i[d],h=!0)}h&&$e(e.attrs,"set","")}function Gr(e,t,s,n){const[r,i]=e.propsOptions;let o=!1,l;if(t)for(let c in t){if(Ct(c))continue;const h=t[c];let u;r&&$(r,u=je(c))?!i||!i.includes(u)?s[u]=h:(l||(l={}))[u]=h:Ts(e.emitsOptions,c)||(!(c in n)||h!==n[c])&&(n[c]=h,o=!0)}if(i){const c=V(s),h=l||q;for(let u=0;u<i.length;u++){const d=i[u];s[d]=zs(r,c,d,h[d],e,!$(h,d))}}return o}function zs(e,t,s,n,r,i){const o=e[s];if(o!=null){const l=$(o,"default");if(l&&n===void 0){const c=o.default;if(o.type!==Function&&!o.skipFactory&&L(c)){const{propsDefaults:h}=r;if(s in h)n=h[s];else{const u=Wt(r);n=h[s]=c.call(null,t),u()}}else n=c;r.ce&&r.ce._setProp(s,n)}o[0]&&(i&&!l?n=!1:o[1]&&(n===""||n===Nt(s))&&(n=!0))}return n}const Qo=new WeakMap;function Jr(e,t,s=!1){const n=s?Qo:t.propsCache,r=n.get(e);if(r)return r;const i=e.props,o={},l=[];let c=!1;if(!L(e)){const u=d=>{c=!0;const[v,S]=Jr(d,t,!0);ue(o,v),S&&l.push(...S)};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!c)return W(e)&&n.set(e,ut),ut;if(F(i))for(let u=0;u<i.length;u++){const d=je(i[u]);Bn(d)&&(o[d]=q)}else if(i)for(const u in i){const d=je(u);if(Bn(d)){const v=i[u],S=o[d]=F(v)||L(v)?{type:v}:ue({},v),R=S.type;let C=!1,D=!0;if(F(R))for(let H=0;H<R.length;++H){const I=R[H],B=L(I)&&I.name;if(B==="Boolean"){C=!0;break}else B==="String"&&(D=!1)}else C=L(R)&&R.name==="Boolean";S[0]=C,S[1]=D,(C||$(S,"default"))&&l.push(d)}}const h=[o,l];return W(e)&&n.set(e,h),h}function Bn(e){return e[0]!=="$"&&!Ct(e)}const dn=e=>e==="_"||e==="_ctx"||e==="$stable",pn=e=>F(e)?e.map(De):[De(e)],Zo=(e,t,s)=>{if(t._n)return t;const n=uo((...r)=>pn(t(...r)),s);return n._c=!1,n},Yr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(dn(r))continue;const i=e[r];if(L(i))t[r]=Zo(r,i,n);else if(i!=null){const o=pn(i);t[r]=()=>o}}},zr=(e,t)=>{const s=pn(t);e.slots.default=()=>s},Qr=(e,t,s)=>{for(const n in t)(s||!dn(n))&&(e[n]=t[n])},Xo=(e,t,s)=>{const n=e.slots=Kr();if(e.vnode.shapeFlag&32){const r=t._;r?(Qr(n,t,s),s&&zn(n,"_",r,!0)):Yr(t,n)}else t&&zr(e,t)},el=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,o=q;if(n.shapeFlag&32){const l=t._;l?s&&l===1?i=!1:Qr(r,t,s):(i=!t.$stable,Yr(t,r)),o=t}else t&&(zr(e,t),o={default:1});if(i)for(const l in r)!dn(l)&&o[l]==null&&delete r[l]},pe=rl;function af(e){return tl(e)}function tl(e,t){const s=as();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:h,setElementText:u,parentNode:d,nextSibling:v,setScopeId:S=He,insertStaticContent:R}=e,C=(f,a,p,b=null,g=null,_=null,w=void 0,x=null,y=!!a.dynamicChildren)=>{if(f===a)return;f&&!rt(f,a)&&(b=qt(f),Pe(f,g,_,!0),f=null),a.patchFlag===-2&&(y=!1,a.dynamicChildren=null);const{type:m,ref:O,shapeFlag:T}=a;switch(m){case Cs:D(f,a,p,b);break;case fe:H(f,a,p,b);break;case js:f==null&&I(a,p,b,w);break;case ye:ae(f,a,p,b,g,_,w,x,y);break;default:T&1?U(f,a,p,b,g,_,w,x,y):T&6?xe(f,a,p,b,g,_,w,x,y):(T&64||T&128)&&m.process(f,a,p,b,g,_,w,x,y,yt)}O!=null&&g?Pt(O,f&&f.ref,_,a||f,!a):O==null&&f&&f.ref!=null&&Pt(f.ref,null,_,f,!0)},D=(f,a,p,b)=>{if(f==null)n(a.el=l(a.children),p,b);else{const g=a.el=f.el;a.children!==f.children&&h(g,a.children)}},H=(f,a,p,b)=>{f==null?n(a.el=c(a.children||""),p,b):a.el=f.el},I=(f,a,p,b)=>{[f.el,f.anchor]=R(f.children,a,p,b,f.el,f.anchor)},B=({el:f,anchor:a},p,b)=>{let g;for(;f&&f!==a;)g=v(f),n(f,p,b),f=g;n(a,p,b)},A=({el:f,anchor:a})=>{let p;for(;f&&f!==a;)p=v(f),r(f),f=p;r(a)},U=(f,a,p,b,g,_,w,x,y)=>{if(a.type==="svg"?w="svg":a.type==="math"&&(w="mathml"),f==null)te(a,p,b,g,_,w,x,y);else{const m=f.el&&f.el._isVueCE?f.el:null;try{m&&m._beginPatch(),P(f,a,g,_,w,x,y)}finally{m&&m._endPatch()}}},te=(f,a,p,b,g,_,w,x)=>{let y,m;const{props:O,shapeFlag:T,transition:E,dirs:M}=f;if(y=f.el=o(f.type,_,O&&O.is,O),T&8?u(y,f.children):T&16&&G(f.children,y,null,b,g,Hs(f,_),w,x),M&&et(f,null,b,"created"),k(y,f,f.scopeId,w,b),O){for(const K in O)K!=="value"&&!Ct(K)&&i(y,K,null,O[K],_,b);"value"in O&&i(y,"value",null,O.value,_),(m=O.onVnodeBeforeMount)&&Fe(m,b,f)}M&&et(f,null,b,"beforeMount");const j=sl(g,E);j&&E.beforeEnter(y),n(y,a,p),((m=O&&O.onVnodeMounted)||j||M)&&pe(()=>{m&&Fe(m,b,f),j&&E.enter(y),M&&et(f,null,b,"mounted")},g)},k=(f,a,p,b,g)=>{if(p&&S(f,p),b)for(let _=0;_<b.length;_++)S(f,b[_]);if(g){let _=g.subTree;if(a===_||ei(_.type)&&(_.ssContent===a||_.ssFallback===a)){const w=g.vnode;k(f,w,w.scopeId,w.slotScopeIds,g.parent)}}},G=(f,a,p,b,g,_,w,x,y=0)=>{for(let m=y;m<f.length;m++){const O=f[m]=x?Ne(f[m]):De(f[m]);C(null,O,a,p,b,g,_,w,x)}},P=(f,a,p,b,g,_,w)=>{const x=a.el=f.el;let{patchFlag:y,dynamicChildren:m,dirs:O}=a;y|=f.patchFlag&16;const T=f.props||q,E=a.props||q;let M;if(p&&tt(p,!1),(M=E.onVnodeBeforeUpdate)&&Fe(M,p,a,f),O&&et(a,f,p,"beforeUpdate"),p&&tt(p,!0),(T.innerHTML&&E.innerHTML==null||T.textContent&&E.textContent==null)&&u(x,""),m?N(f.dynamicChildren,m,x,p,b,Hs(a,g),_):w||J(f,a,x,null,p,b,Hs(a,g),_,!1),y>0){if(y&16)Q(x,T,E,p,g);else if(y&2&&T.class!==E.class&&i(x,"class",null,E.class,g),y&4&&i(x,"style",T.style,E.style,g),y&8){const j=a.dynamicProps;for(let K=0;K<j.length;K++){const Y=j[K],ee=T[Y],ie=E[Y];(ie!==ee||Y==="value")&&i(x,Y,ee,ie,g,p)}}y&1&&f.children!==a.children&&u(x,a.children)}else!w&&m==null&&Q(x,T,E,p,g);((M=E.onVnodeUpdated)||O)&&pe(()=>{M&&Fe(M,p,a,f),O&&et(a,f,p,"updated")},b)},N=(f,a,p,b,g,_,w)=>{for(let x=0;x<a.length;x++){const y=f[x],m=a[x],O=y.el&&(y.type===ye||!rt(y,m)||y.shapeFlag&198)?d(y.el):p;C(y,m,O,null,b,g,_,w,!0)}},Q=(f,a,p,b,g)=>{if(a!==p){if(a!==q)for(const _ in a)!Ct(_)&&!(_ in p)&&i(f,_,a[_],null,g,b);for(const _ in p){if(Ct(_))continue;const w=p[_],x=a[_];w!==x&&_!=="value"&&i(f,_,x,w,g,b)}"value"in p&&i(f,"value",a.value,p.value,g)}},ae=(f,a,p,b,g,_,w,x,y)=>{const m=a.el=f?f.el:l(""),O=a.anchor=f?f.anchor:l("");let{patchFlag:T,dynamicChildren:E,slotScopeIds:M}=a;M&&(x=x?x.concat(M):M),f==null?(n(m,p,b),n(O,p,b),G(a.children||[],p,O,g,_,w,x,y)):T>0&&T&64&&E&&f.dynamicChildren&&f.dynamicChildren.length===E.length?(N(f.dynamicChildren,E,p,g,_,w,x),(a.key!=null||g&&a===g.subTree)&&gn(f,a,!0)):J(f,a,p,O,g,_,w,x,y)},xe=(f,a,p,b,g,_,w,x,y)=>{a.slotScopeIds=x,f==null?a.shapeFlag&512?g.ctx.activate(a,p,b,w,y):Te(a,p,b,g,_,w,y):Ut(f,a,y)},Te=(f,a,p,b,g,_,w)=>{const x=f.component=dl(f,b,g);if(ws(f)&&(x.ctx.renderer=yt),pl(x,!1,w),x.asyncDep){if(g&&g.registerDep(x,he,w),!f.el){const y=x.subTree=me(fe);H(null,y,a,p),f.placeholder=y.el}}else he(x,f,a,p,g,_,w)},Ut=(f,a,p)=>{const b=a.component=f.component;if(Go(f,a,p))if(b.asyncDep&&!b.asyncResolved){Z(b,a,p);return}else b.next=a,b.update();else a.el=f.el,b.vnode=a},he=(f,a,p,b,g,_,w)=>{const x=()=>{if(f.isMounted){let{next:T,bu:E,u:M,parent:j,vnode:K}=f;{const Re=Zr(f);if(Re){T&&(T.el=K.el,Z(f,T,w)),Re.asyncDep.then(()=>{pe(()=>{f.isUnmounted||m()},g)});return}}let Y=T,ee;tt(f,!1),T?(T.el=K.el,Z(f,T,w)):T=K,E&&Os(E),(ee=T.props&&T.props.onVnodeBeforeUpdate)&&Fe(ee,j,T,K),tt(f,!0);const ie=jn(f),Oe=f.subTree;f.subTree=ie,C(Oe,ie,d(Oe.el),qt(Oe),f,g,_),T.el=ie.el,Y===null&&Jo(f,ie.el),M&&pe(M,g),(ee=T.props&&T.props.onVnodeUpdated)&&pe(()=>Fe(ee,j,T,K),g)}else{let T;const{el:E,props:M}=a,{bm:j,m:K,parent:Y,root:ee,type:ie}=f,Oe=dt(a);tt(f,!1),j&&Os(j),!Oe&&(T=M&&M.onVnodeBeforeMount)&&Fe(T,Y,a),tt(f,!0);{ee.ce&&ee.ce._hasShadowRoot()&&ee.ce._injectChildStyle(ie,f.parent?f.parent.type:void 0);const Re=f.subTree=jn(f);C(null,Re,p,b,f,g,_),a.el=Re.el}if(K&&pe(K,g),!Oe&&(T=M&&M.onVnodeMounted)){const Re=a;pe(()=>Fe(T,Y,Re),g)}(a.shapeFlag&256||Y&&dt(Y.vnode)&&Y.vnode.shapeFlag&256)&&f.a&&pe(f.a,g),f.isMounted=!0,a=p=b=null}};f.scope.on();const y=f.effect=new er(x);f.scope.off();const m=f.update=y.run.bind(y),O=f.job=y.runIfDirty.bind(y);O.i=f,O.id=f.uid,y.scheduler=()=>hn(O),tt(f,!0),m()},Z=(f,a,p)=>{a.component=f;const b=f.vnode.props;f.vnode=a,f.next=null,zo(f,a.props,b,p),el(f,a.children,p),Ue(),Pn(f),Ke()},J=(f,a,p,b,g,_,w,x,y=!1)=>{const m=f&&f.children,O=f?f.shapeFlag:0,T=a.children,{patchFlag:E,shapeFlag:M}=a;if(E>0){if(E&128){Kt(m,T,p,b,g,_,w,x,y);return}else if(E&256){Ze(m,T,p,b,g,_,w,x,y);return}}M&8?(O&16&&bt(m,g,_),T!==m&&u(p,T)):O&16?M&16?Kt(m,T,p,b,g,_,w,x,y):bt(m,g,_,!0):(O&8&&u(p,""),M&16&&G(T,p,b,g,_,w,x,y))},Ze=(f,a,p,b,g,_,w,x,y)=>{f=f||ut,a=a||ut;const m=f.length,O=a.length,T=Math.min(m,O);let E;for(E=0;E<T;E++){const M=a[E]=y?Ne(a[E]):De(a[E]);C(f[E],M,p,null,g,_,w,x,y)}m>O?bt(f,g,_,!0,!1,T):G(a,p,b,g,_,w,x,y,T)},Kt=(f,a,p,b,g,_,w,x,y)=>{let m=0;const O=a.length;let T=f.length-1,E=O-1;for(;m<=T&&m<=E;){const M=f[m],j=a[m]=y?Ne(a[m]):De(a[m]);if(rt(M,j))C(M,j,p,null,g,_,w,x,y);else break;m++}for(;m<=T&&m<=E;){const M=f[T],j=a[E]=y?Ne(a[E]):De(a[E]);if(rt(M,j))C(M,j,p,null,g,_,w,x,y);else break;T--,E--}if(m>T){if(m<=E){const M=E+1,j=M<O?a[M].el:b;for(;m<=E;)C(null,a[m]=y?Ne(a[m]):De(a[m]),p,j,g,_,w,x,y),m++}}else if(m>E)for(;m<=T;)Pe(f[m],g,_,!0),m++;else{const M=m,j=m,K=new Map;for(m=j;m<=E;m++){const be=a[m]=y?Ne(a[m]):De(a[m]);be.key!=null&&K.set(be.key,m)}let Y,ee=0;const ie=E-j+1;let Oe=!1,Re=0;const vt=new Array(ie);for(m=0;m<ie;m++)vt[m]=0;for(m=M;m<=T;m++){const be=f[m];if(ee>=ie){Pe(be,g,_,!0);continue}let Ie;if(be.key!=null)Ie=K.get(be.key);else for(Y=j;Y<=E;Y++)if(vt[Y-j]===0&&rt(be,a[Y])){Ie=Y;break}Ie===void 0?Pe(be,g,_,!0):(vt[Ie-j]=m+1,Ie>=Re?Re=Ie:Oe=!0,C(be,a[Ie],p,null,g,_,w,x,y),ee++)}const xn=Oe?nl(vt):ut;for(Y=xn.length-1,m=ie-1;m>=0;m--){const be=j+m,Ie=a[be],wn=a[be+1],Sn=be+1<O?wn.el||Xr(wn):b;vt[m]===0?C(null,Ie,p,Sn,g,_,w,x,y):Oe&&(Y<0||m!==xn[Y]?Xe(Ie,p,Sn,2):Y--)}}},Xe=(f,a,p,b,g=null)=>{const{el:_,type:w,transition:x,children:y,shapeFlag:m}=f;if(m&6){Xe(f.component.subTree,a,p,b);return}if(m&128){f.suspense.move(a,p,b);return}if(m&64){w.move(f,a,p,yt);return}if(w===ye){n(_,a,p);for(let T=0;T<y.length;T++)Xe(y[T],a,p,b);n(f.anchor,a,p);return}if(w===js){B(f,a,p);return}if(b!==2&&m&1&&x)if(b===0)x.beforeEnter(_),n(_,a,p),pe(()=>x.enter(_),g);else{const{leave:T,delayLeave:E,afterLeave:M}=x,j=()=>{f.ctx.isUnmounted?r(_):n(_,a,p)},K=()=>{_._isLeaving&&_[Le](!0),T(_,()=>{j(),M&&M()})};E?E(_,j,K):K()}else n(_,a,p)},Pe=(f,a,p,b=!1,g=!1)=>{const{type:_,props:w,ref:x,children:y,dynamicChildren:m,shapeFlag:O,patchFlag:T,dirs:E,cacheIndex:M,memo:j}=f;if(T===-2&&(g=!1),x!=null&&(Ue(),Pt(x,null,p,f,!0),Ke()),M!=null&&(a.renderCache[M]=void 0),O&256){a.ctx.deactivate(f);return}const K=O&1&&E,Y=!dt(f);let ee;if(Y&&(ee=w&&w.onVnodeBeforeUnmount)&&Fe(ee,a,f),O&6)gi(f.component,p,b);else{if(O&128){f.suspense.unmount(p,b);return}K&&et(f,null,a,"beforeUnmount"),O&64?f.type.remove(f,a,p,yt,b):m&&!m.hasOnce&&(_!==ye||T>0&&T&64)?bt(m,a,p,!1,!0):(_===ye&&T&384||!g&&O&16)&&bt(y,a,p),b&&yn(f)}const ie=j!=null&&M==null;(Y&&(ee=w&&w.onVnodeUnmounted)||K||ie)&&pe(()=>{ee&&Fe(ee,a,f),K&&et(f,null,a,"unmounted"),ie&&(f.el=null)},p)},yn=f=>{const{type:a,el:p,anchor:b,transition:g}=f;if(a===ye){pi(p,b);return}if(a===js){A(f);return}const _=()=>{r(p),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(f.shapeFlag&1&&g&&!g.persisted){const{leave:w,delayLeave:x}=g,y=()=>w(p,_);x?x(f.el,_,y):y()}else _()},pi=(f,a)=>{let p;for(;f!==a;)p=v(f),r(f),f=p;r(a)},gi=(f,a,p)=>{const{bum:b,scope:g,job:_,subTree:w,um:x,m:y,a:m}=f;Nn(y),Nn(m),b&&Os(b),g.stop(),_&&(_.flags|=8,Pe(w,f,a,p)),x&&pe(x,a),pe(()=>{f.isUnmounted=!0},a)},bt=(f,a,p,b=!1,g=!1,_=0)=>{for(let w=_;w<f.length;w++)Pe(f[w],a,p,b,g)},qt=f=>{if(f.shapeFlag&6)return qt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const a=v(f.anchor||f.el),p=a&&a[Cr];return p?v(p):a};let Ps=!1;const vn=(f,a,p)=>{let b;f==null?a._vnode&&(Pe(a._vnode,null,null,!0),b=a._vnode.component):C(a._vnode||null,f,a,null,null,null,p),a._vnode=f,Ps||(Ps=!0,Pn(b),xr(),Ps=!1)},yt={p:C,um:Pe,m:Xe,r:yn,mt:Te,mc:G,pc:J,pbc:N,n:qt,o:e};return{render:vn,hydrate:void 0,createApp:No(vn)}}function Hs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function tt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function sl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function gn(e,t,s=!1){const n=e.children,r=t.children;if(F(n)&&F(r))for(let i=0;i<n.length;i++){const o=n[i];let l=r[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[i]=Ne(r[i]),l.el=o.el),!s&&l.patchFlag!==-2&&gn(o,l)),l.type===Cs&&(l.patchFlag===-1&&(l=r[i]=Ne(l)),l.el=o.el),l.type===fe&&!l.el&&(l.el=o.el)}}function nl(e){const t=e.slice(),s=[0];let n,r,i,o,l;const c=e.length;for(n=0;n<c;n++){const h=e[n];if(h!==0){if(r=s[s.length-1],e[r]<h){t[n]=r,s.push(n);continue}for(i=0,o=s.length-1;i<o;)l=i+o>>1,e[s[l]]<h?i=l+1:o=l;h<e[s[i]]&&(i>0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,o=s[i-1];i-- >0;)s[i]=o,o=t[o];return s}function Zr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Zr(t)}function Nn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Xr(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Xr(t.subTree):null}const ei=e=>e.__isSuspense;function rl(e,t){t&&t.pendingBranch?F(e)?t.effects.push(...e):t.effects.push(e):co(e)}const ye=Symbol.for("v-fgt"),Cs=Symbol.for("v-txt"),fe=Symbol.for("v-cmt"),js=Symbol.for("v-stc"),Rt=[];let _e=null;function Qs(e=!1){Rt.push(_e=e?null:[])}function il(){Rt.pop(),_e=Rt[Rt.length-1]||null}let _t=1;function ls(e,t=!1){_t+=e,e<0&&_e&&t&&(_e.hasOnce=!0)}function ti(e){return e.dynamicChildren=_t>0?_e||ut:null,il(),_t>0&&_e&&_e.push(e),e}function hf(e,t,s,n,r,i){return ti(ni(e,t,s,n,r,i,!0))}function Zs(e,t,s,n,r){return ti(me(e,t,s,n,r,!0))}function Dt(e){return e?e.__v_isVNode===!0:!1}function rt(e,t){return e.type===t.type&&e.key===t.key}const si=({key:e})=>e??null,Xt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ne(e)||L(e)?{i:oe,r:e,k:t,f:!!s}:e:null);function ni(e,t=null,s=null,n=0,r=null,i=e===ye?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&si(t),ref:t&&Xt(t),scopeId:Sr,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:oe};return l?(_n(c,s),i&128&&e.normalize(c)):s&&(c.shapeFlag|=re(s)?8:16),_t>0&&!o&&_e&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&_e.push(c),c}const me=ol;function ol(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===Dr)&&(e=fe),Dt(e)){const l=Qe(e,t,!0);return s&&_n(l,s),_t>0&&!i&&_e&&(l.shapeFlag&6?_e[_e.indexOf(e)]=l:_e.push(l)),l.patchFlag=-2,l}if(bl(e)&&(e=e.__vccOpts),t){t=ll(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=ds(l)),W(c)&&(ys(c)&&!F(c)&&(c=ue({},c)),t.style=hs(c))}const o=re(e)?1:ei(e)?128:Er(e)?64:W(e)?4:L(e)?2:0;return ni(e,t,s,n,r,o,i,!0)}function ll(e){return e?ys(e)||qr(e)?ue({},e):e:null}function Qe(e,t,s=!1,n=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,h=t?ul(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&si(h),ref:t&&t.ref?s&&i?F(i)?i.concat(Xt(t)):[i,Xt(t)]:Xt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qe(e.ssContent),ssFallback:e.ssFallback&&Qe(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&n&&kt(u,c.clone(u)),u}function fl(e=" ",t=0){return me(Cs,null,e,t)}function cl(e="",t=!1){return t?(Qs(),Zs(fe,null,e)):me(fe,null,e)}function De(e){return e==null||typeof e=="boolean"?me(fe):F(e)?me(ye,null,e.slice()):Dt(e)?Ne(e):me(Cs,null,String(e))}function Ne(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qe(e)}function _n(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(F(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),_n(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!qr(t)?t._ctx=oe:r===3&&oe&&(oe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else L(t)?(t={default:t,_ctx:oe},s=32):(t=String(t),n&64?(s=16,t=[fl(t)]):s=8);e.children=t,e.shapeFlag|=s}function ul(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=ds([t.class,n.class]));else if(r==="style")t.style=hs([t.style,n.style]);else if(sn(r)){const i=t[r],o=n[r];o&&i!==o&&!(F(i)&&i.includes(o))?t[r]=i?[].concat(i,o):o:o==null&&i==null&&!nn(r)&&(t[r]=o)}else r!==""&&(t[r]=n[r])}return t}function Fe(e,t,s,n=null){Ve(e,t,7,[s,n])}const al=Nr();let hl=0;function dl(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||al,i={uid:hl++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Xn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Jr(n,r),emitsOptions:$r(n,r),emit:null,emitted:null,propsDefaults:q,inheritAttrs:n.inheritAttrs,ctx:q,data:q,props:q,attrs:q,slots:q,refs:q,setupState:q,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=Wo.bind(null,i),e.ce&&e.ce(i),i}let ce=null;const Es=()=>ce||oe;let fs,Xs;{const e=as(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};fs=t("__VUE_INSTANCE_SETTERS__",s=>ce=s),Xs=t("__VUE_SSR_SETTERS__",s=>Ht=s)}const Wt=e=>{const t=ce;return fs(e),e.scope.on(),()=>{e.scope.off(),fs(t)}},$n=()=>{ce&&ce.scope.off(),fs(null)};function ri(e){return e.vnode.shapeFlag&4}let Ht=!1;function pl(e,t=!1,s=!1){t&&Xs(t);const{props:n,children:r}=e.vnode,i=ri(e);Yo(e,n,i,t),Xo(e,r,s||t);const o=i?gl(e,t):void 0;return t&&Xs(!1),o}function gl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Lo);const{setup:n}=s;if(n){Ue();const r=e.setupContext=n.length>1?oi(e):null,i=Wt(e),o=$t(n,e,0,[e.props,r]),l=Gn(o);if(Ke(),i(),(l||e.sp)&&!dt(e)&&Ir(e),l){if(o.then($n,$n),t)return o.then(c=>{Wn(e,c)}).catch(c=>{vs(c,e,0)});e.asyncDep=o}else Wn(e,o)}else ii(e)}function Wn(e,t,s){L(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:W(t)&&(e.setupState=mr(t)),ii(e)}function ii(e,t,s){const n=e.type;e.render||(e.render=n.render||He);{const r=Wt(e);Ue();try{ko(e)}finally{Ke(),r()}}}const _l={get(e,t){return le(e,"get",""),e[t]}};function oi(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,_l),slots:e.slots,emit:e.emit,expose:t}}function As(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(mr(Yi(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Ot)return Ot[s](e)},has(t,s){return s in t||s in Ot}})):e.proxy}function ml(e,t=!0){return L(e)?e.displayName||e.name:e.name||t&&e.__name}function bl(e){return L(e)&&"__vccOpts"in e}const mt=(e,t)=>no(e,t,Ht);function df(e,t,s){try{ls(-1);const n=arguments.length;return n===2?W(t)&&!F(t)?Dt(t)?me(e,null,[t]):me(e,t):me(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&Dt(s)&&(s=[s]),me(e,t,s))}finally{ls(1)}}function pf(e,t,s,n){const r=s[n];if(r&&yl(r,e))return r;const i=t();return i.memo=e.slice(),i.cacheIndex=n,s[n]=i}function yl(e,t){const s=e.memo;if(s.length!=t.length)return!1;for(let n=0;n<s.length;n++)if(Ce(s[n],t[n]))return!1;return _t>0&&_e&&_e.push(e),!0}const vl="3.5.34",Un="hb-sdk-feedback-style",xl=2e3,wl={light:20,medium:40,heavy:80},Sl=120,Tl=`
|
|
2
|
-
.host-overlay-layer.hb-sdk-feedback-vibrate-flash {
|
|
3
|
-
background: rgba(255, 255, 255, 0.22);
|
|
4
|
-
}
|
|
5
|
-
`;let es,jt,It,ze,it;const en=new Set;function gf(e){return es=e,jt&&e(jt),()=>{es===e&&(es=void 0)}}function Vt(e){jt=e,es?.(e)}function mn(){It!==void 0&&(window.clearTimeout(It),It=void 0)}function _f(e){return mn(),Vt({kind:"toast",...e}),It=window.setTimeout(()=>{It=void 0,jt?.kind==="toast"&&Vt(void 0)},xl),Promise.resolve()}function mf(e){return mn(),Vt({kind:"loading",dismissible:e?.dismissible===!0}),Promise.resolve()}function bf(){return jt?.kind==="loading"&&Vt(void 0),Promise.resolve()}function yf(){mn(),Vt(void 0);for(const e of[...en])e();it!==void 0&&(window.clearTimeout(it),it=void 0),ze?.classList.remove("hb-sdk-feedback-vibrate-flash"),ze=void 0}async function vf(e,t){Cl();const s=t?.signal;if(!await Pl(Math.max(0,e.delay),s)||s?.aborted)return;El();const r=navigator.vibrate;if(typeof r=="function")try{r.call(navigator,wl[e.intensity])}catch{}}function xf(e){document.documentElement.dataset.screenshotChromeHidden=e?"true":"false"}function Cl(){if(document.getElementById(Un))return;const e=document.createElement("style");e.id=Un,e.textContent=Tl,document.head.appendChild(e)}function El(){const e=Al();it!==void 0&&window.clearTimeout(it),ze&&ze!==e&&ze.classList.remove("hb-sdk-feedback-vibrate-flash"),ze=e,e.classList.add("hb-sdk-feedback-vibrate-flash"),it=window.setTimeout(()=>{e.classList.remove("hb-sdk-feedback-vibrate-flash"),ze===e&&(ze=void 0),it=void 0},Sl)}function Al(){return document.querySelector("#host-overlay-layer")??document.body}function Pl(e,t){return t?.aborted?Promise.resolve(!1):e<=0?Promise.resolve(!0):new Promise(s=>{let n,r=!1;const i=c=>{r||(r=!0,n!==void 0&&window.clearTimeout(n),t?.removeEventListener("abort",o),en.delete(l),s(c))},o=()=>i(!1),l=()=>i(!1);n=window.setTimeout(()=>i(!0),e),en.add(l),t?.addEventListener("abort",o,{once:!0})})}const li=[{id:"iphone-16-pro-max",label:"iPhone 16 Pro Max",screenWidth:387,screenHeight:821,frameWidth:415,frameHeight:843,maxPresentationScale:1,pixelRatio:3,statusBarHeight:55,safeAreaInsets:{top:55,right:0,bottom:34,left:0},screenRect:{top:1.32,right:3.4,bottom:1.32,left:3.4},toolbarLeft:53.67,frameRadius:50,platform:"ios"},{id:"pixel-9-pro",label:"Pixel 9 Pro",screenWidth:322,screenHeight:716,frameWidth:353,frameHeight:745,maxPresentationScale:764/745,pixelRatio:2.625,statusBarHeight:50,safeAreaInsets:{top:50,right:0,bottom:24,left:0},screenRect:{top:2.05,right:4.8,bottom:1.8,left:4.1},toolbarLeft:44.69,frameRadius:41,platform:"android"}],Ol=li[0];function bn(e){return li.find(t=>t.id===e)??Ol}const fi="hb-sdk:browser-dev-host:device",ci="hb-sdk:browser-dev-host:diagnostics-width",Rl=new URL(location.href).searchParams.get("device"),X=ms({activeTab:"logs",devicePresetId:bn(Rl??Ll()).id,logs:[],storage:[],storageError:"",queries:{logs:"",storage:"",problems:""},followLogs:!0,pausedLogCount:0,problemClearWatermark:0,diagnosticsWidth:kl(),miniProgram:{bound:!1,iconUrl:"",name:"未绑定小程序",detail:""},account:{authenticated:!1,avatar:"",nickname:"未登录"},navigationBarStyle:"light",screenshotChromeHidden:!1,runtimeStatus:"idle",qrOpen:!1});let ui=0;const wf=mt(()=>bn(X.devicePresetId)),Sf=mt(()=>{const e=X.queries.logs.trim().toLocaleLowerCase();return e?X.logs.filter(t=>`${t.method} ${ai(t.detail)}`.toLocaleLowerCase().includes(e)):X.logs}),Il=mt(()=>{const e=new Map;for(const t of X.logs){if(t.id<=X.problemClearWatermark||!Fl(t))continue;const s=Ml(t),n=e.get(s);if(n){n.count+=1;continue}e.set(s,{...t,count:1})}return[...e.values()]}),Tf=mt(()=>di(X.storage,X.queries.storage,e=>`${e.key} ${e.area} ${e.serializedValue}`)),Cf=mt(()=>di(Il.value,X.queries.problems,e=>`${e.method} ${ai(e.detail)}`));function Ef(e){X.devicePresetId=bn(e).id;try{localStorage.setItem(fi,e)}catch{}}function Af(e,t){X.logs.push({id:++ui,method:e,detail:t,timestamp:Date.now()}),X.followLogs||(X.pausedLogCount+=1),X.logs.length>100&&X.logs.splice(0,X.logs.length-100)}function Pf(){X.logs.length=0,X.pausedLogCount=0}function Of(){X.problemClearWatermark=ui}function Rf(e){X.followLogs=e,e&&(X.pausedLogCount=0)}function If(e){const t=Math.min(560,Math.max(320,Math.round(e)));X.diagnosticsWidth=t;try{localStorage.setItem(ci,String(t))}catch{}}function ai(e){try{return JSON.stringify(e,null,2)??""}catch{return"[无法序列化]"}}function Fl(e){return/error|failed|security|violation|blocked/i.test(e.method)?!0:hi(e.detail)?e.detail.outcome==="error"||e.detail.outcome==="denied":!1}function Ml(e){if(!hi(e.detail))return e.method;const t=e.detail,s=typeof t.code=="string"?t.code:"",n=["method","origin","pathname"].map(r=>typeof t[r]=="string"?t[r]:"").find(Boolean)??"";return`${e.method}\0${s}\0${n}`}function hi(e){return Object.prototype.toString.call(e)==="[object Object]"}function Ll(){try{return localStorage.getItem(fi)}catch{return null}}function kl(){try{const e=Number(localStorage.getItem(ci));return Number.isFinite(e)&&e>0?Math.min(560,Math.max(320,e)):400}catch{return 400}}function di(e,t,s){const n=t.trim().toLocaleLowerCase();return n?e.filter(r=>s(r).toLocaleLowerCase().includes(n)):e}export{hs as $,df as A,ef as B,fe as C,li as D,bf as E,ye as F,Nt as G,Bl as H,Zt as I,Os as J,F as K,L,nn as M,W as N,sn as O,ne as P,Vl as Q,re as R,Se as S,Xl as T,vi as U,Yi as V,uf as W,ul as X,lo as Y,ds as Z,jl as _,vo as a,Lr as a0,Mr as a1,$l as a2,kr as a3,Ao as a4,Qs as a5,Il as a6,ao as a7,Af as a8,ms as a9,ff as aA,vf as aB,Ls as aC,Ql as aD,Zl as aE,uo as aF,zl as aG,pf as aH,X as aI,zi as aa,gf as ab,rf as ac,of as ad,yf as ae,nf as af,ai as ag,xf as ah,Ef as ai,If as aj,Rf as ak,Wl as al,Ul as am,mf as an,_f as ao,Ai as ap,Qt as aq,lf as ar,Hl as as,Yl as at,Jl as au,ql as av,Kl as aw,an as ax,cf as ay,sf as az,wf as b,Ve as c,je as d,on as e,Pf as f,Of as g,Qe as h,mt as i,ni as j,Zs as k,cl as l,hf as m,af as n,fl as o,me as p,Gl as q,tf as r,Nl as s,ue as t,Sf as u,Cf as v,Tf as w,Es as x,Pi as y,ll as z};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# <%= projectName %>
|
|
2
|
-
|
|
3
|
-
`vite.config.ts` 中的 `miniappManifest({ platforms })` 声明本项目承诺适配的平台。模板预填的 `android`、`ios`、`ohos` 只是初始配置;发布前请按实际目标调整,并在每个声明的平台完成真机验收。
|
|
4
|
-
|
|
5
|
-
这是通过 `hb-sdk create` 生成的小黑盒工坊小程序模板。项目使用 Vue 3、Vite、TypeScript 和 `@heybox/hb-sdk`。
|
|
6
|
-
|
|
7
|
-
## 使用命令
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm install
|
|
11
|
-
npm run dev
|
|
12
|
-
npm run typecheck
|
|
13
|
-
npm run test:unit
|
|
14
|
-
npm run build
|
|
15
|
-
npm run deploy
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## 依赖说明
|
|
19
|
-
|
|
20
|
-
`@heybox/hb-sdk` 是小程序页面运行时会 import 的 SDK,因此模板把它放在 `dependencies`。Vite、TypeScript、Vitest 等只参与本地开发、测试或构建的工具放在 `devDependencies`。
|
|
21
|
-
|
|
22
|
-
## 开发模式
|
|
23
|
-
|
|
24
|
-
- `npm run dev`:打开本地调试页,可以使用浏览器 Mock,也可以在 Mac 版 APP 或手机小黑盒 APP 中验收。手机和电脑需要处于同一局域网。
|
|
25
|
-
- `npm run build`:先执行 TypeScript 检查,再通过 `hb-sdk build` 构建生产产物。
|
|
26
|
-
- `npm run deploy -- --release-note "..."`:检查、执行项目的 `scripts.build`、上传并提交审核。首次提交前先运行 `npx hb-sdk login`,再用 `npx hb-sdk remote create` 创建小程序,或用 `npx hb-sdk remote bind <mini-program-id>` 绑定已有小程序。审核通过后,用 `hb-sdk remote release <version>` 发布。
|
|
27
|
-
|
|
28
|
-
## 更多能力
|
|
29
|
-
|
|
30
|
-
模板页面只保留最小接入示例。其他常用能力可以直接从 `@heybox/hb-sdk` 调用:
|
|
31
|
-
|
|
32
|
-
```ts
|
|
33
|
-
import hbSDK from '@heybox/hb-sdk';
|
|
34
|
-
|
|
35
|
-
await hbSDK.share.showShareMenu({
|
|
36
|
-
title: '<%= projectName %>',
|
|
37
|
-
desc: '分享描述',
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
await hbSDK.storage.setStorage({
|
|
41
|
-
key: 'settings',
|
|
42
|
-
data: { theme: 'dark' },
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
工坊小程序默认不能进行网络请求。开通网络权限后,把 `VITE_HEYBOX_AUTH_EXCHANGE_URL` 配成开发者服务端的 HTTPS 交换地址(本地可用 localhost)。授权契约见文档站「用户身份与登录」。
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title><%= projectName %></title>
|
|
7
|
-
</head>
|
|
8
|
-
<body>
|
|
9
|
-
<div id="app"></div>
|
|
10
|
-
<script type="module" src="/src/main.ts"></script>
|
|
11
|
-
</body>
|
|
12
|
-
</html>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "<%= packageName %>",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"type": "module",
|
|
6
|
-
"heybox": {
|
|
7
|
-
"miniProgramId": ""
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"hb-sdk": "hb-sdk",
|
|
11
|
-
"dev": "hb-sdk dev",
|
|
12
|
-
"deploy": "hb-sdk remote deploy",
|
|
13
|
-
"build": "vue-tsc --noEmit && hb-sdk build",
|
|
14
|
-
"preview": "vite preview",
|
|
15
|
-
"typecheck": "vue-tsc --noEmit",
|
|
16
|
-
"test:unit": "vitest run",
|
|
17
|
-
"test:unit:watch": "vitest"
|
|
18
|
-
},
|
|
19
|
-
"dependencies": {
|
|
20
|
-
"@heybox/hb-sdk": "^<%= sdkVersion %>",
|
|
21
|
-
"vue": "^3.5.34"
|
|
22
|
-
},
|
|
23
|
-
"devDependencies": {
|
|
24
|
-
"@types/node": "^25.7.0",
|
|
25
|
-
"@vitejs/plugin-vue": "^6.0.6",
|
|
26
|
-
"@vue/test-utils": "^2.4.10",
|
|
27
|
-
"happy-dom": "^20.9.0",
|
|
28
|
-
"typescript": "^6.0.3",
|
|
29
|
-
"vite": "^8.0.12",
|
|
30
|
-
"vitest": "^4.1.6",
|
|
31
|
-
"vue-tsc": "^3.2.9"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<main class="page">
|
|
3
|
-
<section class="card">
|
|
4
|
-
<p class="eyebrow">Heybox Mini Program</p>
|
|
5
|
-
<h1><%= projectName %></h1>
|
|
6
|
-
<p class="intro">这个模板只保留最小接入示例:SDK 会自动完成初始化,由用户主动选择受支持的操作。</p>
|
|
7
|
-
|
|
8
|
-
<p class="status" data-testid="status">{{ status }}</p>
|
|
9
|
-
|
|
10
|
-
<button type="button" :disabled="loading || !sdkReady" data-testid="login" @click="login">获取授权码</button>
|
|
11
|
-
|
|
12
|
-
<pre data-testid="output">{{ output }}</pre>
|
|
13
|
-
</section>
|
|
14
|
-
</main>
|
|
15
|
-
</template>
|
|
16
|
-
|
|
17
|
-
<script setup lang="ts">
|
|
18
|
-
import hbSDK from '@heybox/hb-sdk';
|
|
19
|
-
import type { MiniProgramSDKHandshakeState } from '@heybox/hb-sdk';
|
|
20
|
-
import { onBeforeUnmount, ref } from 'vue';
|
|
21
|
-
import { loginAndExchangeAuthorizationCode } from './auth-handoff';
|
|
22
|
-
|
|
23
|
-
const loading = ref(false);
|
|
24
|
-
const sdkReady = ref(false);
|
|
25
|
-
const status = ref('正在连接 SDK...');
|
|
26
|
-
const output = ref('请选择操作。');
|
|
27
|
-
|
|
28
|
-
function updateHandshakeState(state: MiniProgramSDKHandshakeState) {
|
|
29
|
-
if (state.status === 'connecting') {
|
|
30
|
-
sdkReady.value = false;
|
|
31
|
-
status.value = '正在连接 SDK...';
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (state.status === 'failed') {
|
|
36
|
-
sdkReady.value = false;
|
|
37
|
-
status.value = 'SDK 连接失败';
|
|
38
|
-
output.value = readErrorMessage(state.error);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
sdkReady.value = true;
|
|
43
|
-
status.value = 'SDK 已连接';
|
|
44
|
-
output.value = '请选择操作。';
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const stopHandshakeState = hbSDK.onHandshakeStateChange(updateHandshakeState);
|
|
48
|
-
onBeforeUnmount(stopHandshakeState);
|
|
49
|
-
|
|
50
|
-
async function login() {
|
|
51
|
-
loading.value = true;
|
|
52
|
-
status.value = 'auth.login 调用中...';
|
|
53
|
-
|
|
54
|
-
try {
|
|
55
|
-
const { expiresIn, scopes } = await loginAndExchangeAuthorizationCode({
|
|
56
|
-
exchangeUrl: import.meta.env.VITE_HEYBOX_AUTH_EXCHANGE_URL,
|
|
57
|
-
login: () => hbSDK.auth.login(),
|
|
58
|
-
request: (config) => hbSDK.network.request(config),
|
|
59
|
-
});
|
|
60
|
-
status.value = 'auth.login 调用成功';
|
|
61
|
-
output.value = JSON.stringify({ expiresIn, scopes }, null, 2);
|
|
62
|
-
} catch (error) {
|
|
63
|
-
status.value = 'auth.login 调用失败';
|
|
64
|
-
output.value = readErrorMessage(error);
|
|
65
|
-
} finally {
|
|
66
|
-
loading.value = false;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function readErrorMessage(error: unknown) {
|
|
71
|
-
if (!(error instanceof Error)) {
|
|
72
|
-
return String(error);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const code = 'code' in error && typeof error.code === 'string' ? `\ncode: ${error.code}` : '';
|
|
76
|
-
return `${error.name}: ${error.message}${code}`;
|
|
77
|
-
}
|
|
78
|
-
</script>
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { flushPromises, mount } from '@vue/test-utils';
|
|
2
|
-
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
-
import App from '../App.vue';
|
|
4
|
-
|
|
5
|
-
const sdkMock = vi.hoisted(() => ({
|
|
6
|
-
...(() => {
|
|
7
|
-
type HandshakeState = { status: 'connecting' } | { status: 'ready' } | { status: 'failed'; error: Error & { code: string } };
|
|
8
|
-
|
|
9
|
-
let state: HandshakeState = { status: 'connecting' };
|
|
10
|
-
const handlers = new Set<(nextState: HandshakeState) => void>();
|
|
11
|
-
const unsubscribe = vi.fn();
|
|
12
|
-
|
|
13
|
-
return {
|
|
14
|
-
getHandshakeState: vi.fn(() => state),
|
|
15
|
-
onHandshakeStateChange: vi.fn((handler: (nextState: HandshakeState) => void) => {
|
|
16
|
-
handlers.add(handler);
|
|
17
|
-
handler(state);
|
|
18
|
-
return () => {
|
|
19
|
-
unsubscribe();
|
|
20
|
-
handlers.delete(handler);
|
|
21
|
-
};
|
|
22
|
-
}),
|
|
23
|
-
reset(nextState: HandshakeState = { status: 'connecting' }) {
|
|
24
|
-
state = nextState;
|
|
25
|
-
handlers.clear();
|
|
26
|
-
unsubscribe.mockReset();
|
|
27
|
-
},
|
|
28
|
-
setHandshakeState(nextState: HandshakeState) {
|
|
29
|
-
state = nextState;
|
|
30
|
-
handlers.forEach((handler) => handler(state));
|
|
31
|
-
},
|
|
32
|
-
unsubscribe,
|
|
33
|
-
};
|
|
34
|
-
})(),
|
|
35
|
-
login: vi.fn(),
|
|
36
|
-
networkRequest: vi.fn(),
|
|
37
|
-
}));
|
|
38
|
-
|
|
39
|
-
vi.mock('@heybox/hb-sdk', () => ({
|
|
40
|
-
default: {
|
|
41
|
-
auth: {
|
|
42
|
-
login: sdkMock.login,
|
|
43
|
-
},
|
|
44
|
-
network: {
|
|
45
|
-
request: sdkMock.networkRequest,
|
|
46
|
-
},
|
|
47
|
-
getHandshakeState: sdkMock.getHandshakeState,
|
|
48
|
-
onHandshakeStateChange: sdkMock.onHandshakeStateChange,
|
|
49
|
-
},
|
|
50
|
-
}));
|
|
51
|
-
|
|
52
|
-
describe('App', () => {
|
|
53
|
-
beforeEach(() => {
|
|
54
|
-
vi.clearAllMocks();
|
|
55
|
-
vi.unstubAllEnvs();
|
|
56
|
-
|
|
57
|
-
sdkMock.reset();
|
|
58
|
-
sdkMock.login.mockResolvedValue({ code: 'authorization_code', expiresIn: 300, scopes: ['identity'] });
|
|
59
|
-
sdkMock.networkRequest.mockResolvedValue({ status: 200 });
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('keeps actions disabled while the SDK is connecting', () => {
|
|
63
|
-
const wrapper = mount(App);
|
|
64
|
-
|
|
65
|
-
expect(sdkMock.getHandshakeState).not.toHaveBeenCalled();
|
|
66
|
-
expect(wrapper.get('[data-testid="status"]').text()).toBe('正在连接 SDK...');
|
|
67
|
-
expect(wrapper.get<HTMLButtonElement>('[data-testid="login"]').element.disabled).toBe(true);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('enables actions when the handshake becomes ready', async () => {
|
|
71
|
-
const wrapper = mount(App);
|
|
72
|
-
|
|
73
|
-
sdkMock.setHandshakeState({ status: 'ready' });
|
|
74
|
-
await flushPromises();
|
|
75
|
-
|
|
76
|
-
expect(wrapper.get('[data-testid="status"]').text()).toBe('SDK 已连接');
|
|
77
|
-
expect(wrapper.get('[data-testid="output"]').text()).toContain('请选择操作');
|
|
78
|
-
expect(wrapper.get<HTMLButtonElement>('[data-testid="login"]').element.disabled).toBe(false);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
describe('late mount', () => {
|
|
82
|
-
it('renders an already-ready handshake immediately', () => {
|
|
83
|
-
sdkMock.reset({ status: 'ready' });
|
|
84
|
-
|
|
85
|
-
const wrapper = mount(App);
|
|
86
|
-
|
|
87
|
-
expect(wrapper.get('[data-testid="status"]').text()).toBe('SDK 已连接');
|
|
88
|
-
expect(wrapper.get<HTMLButtonElement>('[data-testid="login"]').element.disabled).toBe(false);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it('renders the original failed handshake details immediately', () => {
|
|
92
|
-
const error = Object.assign(new Error('Host 未响应'), {
|
|
93
|
-
code: 'HANDSHAKE_TIMEOUT',
|
|
94
|
-
name: 'HbMiniProgramSDKError',
|
|
95
|
-
});
|
|
96
|
-
sdkMock.reset({ status: 'failed', error });
|
|
97
|
-
|
|
98
|
-
const wrapper = mount(App);
|
|
99
|
-
|
|
100
|
-
expect(wrapper.get('[data-testid="status"]').text()).toBe('SDK 连接失败');
|
|
101
|
-
expect(wrapper.get<HTMLButtonElement>('[data-testid="login"]').element.disabled).toBe(true);
|
|
102
|
-
expect(wrapper.get('[data-testid="output"]').text()).toContain('HbMiniProgramSDKError');
|
|
103
|
-
expect(wrapper.get('[data-testid="output"]').text()).toContain('Host 未响应');
|
|
104
|
-
expect(wrapper.get('[data-testid="output"]').text()).toContain('HANDSHAKE_TIMEOUT');
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it('stops observing handshake state after unmount', () => {
|
|
109
|
-
const wrapper = mount(App);
|
|
110
|
-
|
|
111
|
-
wrapper.unmount();
|
|
112
|
-
|
|
113
|
-
expect(sdkMock.unsubscribe).toHaveBeenCalledTimes(1);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it('hands the authorization code to the developer server without rendering it', async () => {
|
|
117
|
-
vi.stubEnv('VITE_HEYBOX_AUTH_EXCHANGE_URL', 'https://developer.example.com/api/heybox/exchange');
|
|
118
|
-
sdkMock.reset({ status: 'ready' });
|
|
119
|
-
const wrapper = mount(App);
|
|
120
|
-
|
|
121
|
-
await wrapper.get('[data-testid="login"]').trigger('click');
|
|
122
|
-
await flushPromises();
|
|
123
|
-
|
|
124
|
-
expect(sdkMock.login).toHaveBeenCalledTimes(1);
|
|
125
|
-
expect(sdkMock.networkRequest).toHaveBeenCalledWith({
|
|
126
|
-
method: 'POST',
|
|
127
|
-
url: 'https://developer.example.com/api/heybox/exchange',
|
|
128
|
-
data: { code: 'authorization_code' },
|
|
129
|
-
});
|
|
130
|
-
expect(wrapper.get('[data-testid="status"]').text()).toBe('auth.login 调用成功');
|
|
131
|
-
expect(wrapper.get('[data-testid="output"]').text()).toContain('300');
|
|
132
|
-
expect(wrapper.get('[data-testid="output"]').text()).toContain('identity');
|
|
133
|
-
expect(wrapper.text()).not.toContain('authorization_code');
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
it('does not request a code when the developer server is not configured', async () => {
|
|
137
|
-
sdkMock.reset({ status: 'ready' });
|
|
138
|
-
const wrapper = mount(App);
|
|
139
|
-
|
|
140
|
-
await wrapper.get('[data-testid="login"]').trigger('click');
|
|
141
|
-
await flushPromises();
|
|
142
|
-
|
|
143
|
-
expect(sdkMock.login).not.toHaveBeenCalled();
|
|
144
|
-
expect(sdkMock.networkRequest).not.toHaveBeenCalled();
|
|
145
|
-
expect(wrapper.get('[data-testid="status"]').text()).toBe('auth.login 调用失败');
|
|
146
|
-
expect(wrapper.get('[data-testid="output"]').text()).toContain('VITE_HEYBOX_AUTH_EXCHANGE_URL');
|
|
147
|
-
});
|
|
148
|
-
});
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export interface AuthorizationCodeLoginResult {
|
|
2
|
-
code: string;
|
|
3
|
-
expiresIn: number;
|
|
4
|
-
scopes: string[];
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export interface LoginAndExchangeAuthorizationCodeOptions {
|
|
8
|
-
exchangeUrl?: string;
|
|
9
|
-
login: () => Promise<AuthorizationCodeLoginResult>;
|
|
10
|
-
request: (config: {
|
|
11
|
-
method: 'POST';
|
|
12
|
-
url: string;
|
|
13
|
-
data: { code: string };
|
|
14
|
-
}) => Promise<unknown>;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export async function loginAndExchangeAuthorizationCode(options: LoginAndExchangeAuthorizationCodeOptions) {
|
|
18
|
-
const exchangeUrl = options.exchangeUrl?.trim();
|
|
19
|
-
if (!exchangeUrl) {
|
|
20
|
-
throw new Error('请先配置 VITE_HEYBOX_AUTH_EXCHANGE_URL');
|
|
21
|
-
}
|
|
22
|
-
if (!isAllowedExchangeUrl(exchangeUrl)) {
|
|
23
|
-
throw new Error('VITE_HEYBOX_AUTH_EXCHANGE_URL 必须使用 HTTPS,本地调试仅允许 localhost');
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const { code, expiresIn, scopes } = await options.login();
|
|
27
|
-
await options.request({
|
|
28
|
-
method: 'POST',
|
|
29
|
-
url: exchangeUrl,
|
|
30
|
-
data: { code },
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
return { expiresIn, scopes };
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function isAllowedExchangeUrl(value: string) {
|
|
37
|
-
try {
|
|
38
|
-
const url = new URL(value);
|
|
39
|
-
if (url.protocol === 'https:') {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
return url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname);
|
|
43
|
-
} catch {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
color: #1f2933;
|
|
3
|
-
background: #f4f6f8;
|
|
4
|
-
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
5
|
-
line-height: 1.5;
|
|
6
|
-
}
|
|
7
|
-
* {
|
|
8
|
-
box-sizing: border-box;
|
|
9
|
-
}
|
|
10
|
-
body {
|
|
11
|
-
margin: 0; min-width: 320px;
|
|
12
|
-
}
|
|
13
|
-
.page {
|
|
14
|
-
width: min(100%, 720px);
|
|
15
|
-
margin: 0 auto;
|
|
16
|
-
padding: 40px 20px;
|
|
17
|
-
}
|
|
18
|
-
.card {
|
|
19
|
-
border: 1px solid #d8dee6;
|
|
20
|
-
border-radius: 8px;
|
|
21
|
-
background: #fff;
|
|
22
|
-
padding: 24px;
|
|
23
|
-
}
|
|
24
|
-
.eyebrow {
|
|
25
|
-
margin: 0 0 8px;
|
|
26
|
-
color: #287a4b;
|
|
27
|
-
font-size: 13px;
|
|
28
|
-
font-weight: 800;
|
|
29
|
-
}
|
|
30
|
-
h1 {
|
|
31
|
-
margin: 0; font-size: 36px; line-height: 1.1;
|
|
32
|
-
}
|
|
33
|
-
.intro,
|
|
34
|
-
.status {
|
|
35
|
-
color: #52616f;
|
|
36
|
-
}
|
|
37
|
-
button {
|
|
38
|
-
width: 100%;
|
|
39
|
-
min-height: 42px;
|
|
40
|
-
border: 0;
|
|
41
|
-
border-radius: 6px;
|
|
42
|
-
background: #1f2933;
|
|
43
|
-
color: #fff;
|
|
44
|
-
cursor: pointer;
|
|
45
|
-
font: inherit;
|
|
46
|
-
font-weight: 700;
|
|
47
|
-
}
|
|
48
|
-
button:disabled {
|
|
49
|
-
cursor: not-allowed; opacity: 0.6;
|
|
50
|
-
}
|
|
51
|
-
pre {
|
|
52
|
-
margin: 16px 0 0;
|
|
53
|
-
overflow: auto;
|
|
54
|
-
border-radius: 6px;
|
|
55
|
-
background: #101820;
|
|
56
|
-
color: #f7fbff;
|
|
57
|
-
padding: 14px;
|
|
58
|
-
white-space: pre-wrap;
|
|
59
|
-
word-break: break-word;
|
|
60
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"useDefineForClassFields": true,
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "Bundler",
|
|
7
|
-
"strict": true,
|
|
8
|
-
"jsx": "preserve",
|
|
9
|
-
"sourceMap": true,
|
|
10
|
-
"resolveJsonModule": true,
|
|
11
|
-
"isolatedModules": true,
|
|
12
|
-
"noEmit": true,
|
|
13
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
14
|
-
"types": ["vite/client"]
|
|
15
|
-
},
|
|
16
|
-
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
|
|
17
|
-
}
|