From d2ecb1a4ede5511079a1fa5ebcae00d6eecca31a Mon Sep 17 00:00:00 2001 From: SkyLi Date: Sat, 1 Aug 2026 18:59:32 +0800 Subject: [PATCH] refactor: stop recording triggers file download instead of browser storage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recording flow: click Stop → frames packed into .mjpeg blob → browser download triggered immediately. No more IndexedDB or OPFS. Playback: use 'Load Recording File' button to open a .mjpeg file. Removed all storage dependencies — pure file-based, 100% reliable. --- dist/assets/index-2XEhnc0l.js | 1 - dist/assets/index-BTgh_FTp.css | 1 - dist/assets/index-CHMLXxlv.js | 1 + dist/assets/index-Deon0U_J.css | 1 + dist/index.html | 4 +- src/App.vue | 12 +- src/components/PlaybackPanel.vue | 250 ++++++++++------------------ src/components/RecorderControls.vue | 29 +--- src/composables/useRecorder.ts | 48 ++---- src/composables/useStorage.ts | 131 ++------------- 10 files changed, 119 insertions(+), 359 deletions(-) delete mode 100644 dist/assets/index-2XEhnc0l.js delete mode 100644 dist/assets/index-BTgh_FTp.css create mode 100644 dist/assets/index-CHMLXxlv.js create mode 100644 dist/assets/index-Deon0U_J.css diff --git a/dist/assets/index-2XEhnc0l.js b/dist/assets/index-2XEhnc0l.js deleted file mode 100644 index 7347cb5..0000000 --- a/dist/assets/index-2XEhnc0l.js +++ /dev/null @@ -1 +0,0 @@ -(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var t={},n=[],r=()=>{},i=()=>!1,a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),o=e=>e.startsWith(`onUpdate:`),s=Object.assign,c=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},l=Object.prototype.hasOwnProperty,u=(e,t)=>l.call(e,t),d=Array.isArray,f=e=>x(e)===`[object Map]`,p=e=>x(e)===`[object Set]`,m=e=>x(e)===`[object Date]`,h=e=>typeof e==`function`,g=e=>typeof e==`string`,_=e=>typeof e==`symbol`,v=e=>typeof e==`object`&&!!e,y=e=>(v(e)||h(e))&&h(e.then)&&h(e.catch),b=Object.prototype.toString,x=e=>b.call(e),S=e=>x(e).slice(8,-1),C=e=>x(e)===`[object Object]`,w=e=>g(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,ee=e(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),te=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ne=/-\w/g,T=te(e=>e.replace(ne,e=>e.slice(1).toUpperCase())),re=/\B([A-Z])/g,E=te(e=>e.replace(re,`-$1`).toLowerCase()),ie=te(e=>e.charAt(0).toUpperCase()+e.slice(1)),ae=te(e=>e?`on${ie(e)}`:``),D=(e,t)=>!Object.is(e,t),oe=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},se=e=>{let t=parseFloat(e);return isNaN(t)?e:t},ce,le=()=>ce||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function ue(e){if(d(e)){let t={};for(let n=0;n{if(e){let n=e.split(fe);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function k(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;n!!(e&&e.__v_isRef===!0),A=e=>g(e)?e:e==null?``:d(e)||v(e)&&(e.toString===b||!h(e.toString))?be(e)?A(e.value):JSON.stringify(e,xe,2):String(e),xe=(e,t)=>be(t)?xe(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Se(t,r)+` =>`]=n,e),{})}:p(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Se(e))}:_(t)?Se(t):v(t)&&!d(t)&&!C(t)?String(t):t,Se=(e,t=``)=>_(e)?`Symbol(${e.description??t})`:e,j,Ce=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&j&&(j.active?(this.parent=j,this.index=(j.scopes||(j.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e0&&--this._on===0){if(j===this)j=this.prevScope;else{let e=j;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(ke){let e=ke;for(ke=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Oe;){let t=Oe;for(Oe=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function Ne(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Pe(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),Le(r),Re(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function Fe(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ie(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ie(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ue)||(e.globalVersion=Ue,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Fe(e))))return;e.flags|=2;let t=e.dep,n=M,r=N;M=e,N=!0;try{Ne(e);let n=e.fn(e._value);(t.version===0||D(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{M=n,N=r,Pe(e),e.flags&=-3}}function Le(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)Le(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Re(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var N=!0,ze=[];function Be(){ze.push(N),N=!1}function Ve(){let e=ze.pop();N=e===void 0||e}function He(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=M;M=void 0;try{t()}finally{M=e}}}var Ue=0,We=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},Ge=class{constructor(e){this.computed=e,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(e){if(!M||!N||M===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==M)t=this.activeLink=new We(M,this),M.deps?(t.prevDep=M.depsTail,M.depsTail.nextDep=t,M.depsTail=t):M.deps=M.depsTail=t,Ke(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=M.depsTail,t.nextDep=void 0,M.depsTail.nextDep=t,M.depsTail=t,M.deps===t&&(M.deps=e)}return t}trigger(e){this.version++,Ue++,this.notify(e)}notify(e){je();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Me()}}};function Ke(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)Ke(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var qe=new WeakMap,Je=Symbol(``),Ye=Symbol(``),Xe=Symbol(``);function P(e,t,n){if(N&&M){let t=qe.get(e);t||qe.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new Ge),r.map=t,r.key=n),r.track()}}function Ze(e,t,n,r,i,a){let o=qe.get(e);if(!o){Ue++;return}let s=e=>{e&&e.trigger()};if(je(),t===`clear`)o.forEach(s);else{let i=d(e),a=i&&w(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===Xe||!_(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(Xe)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(Je)),f(e)&&s(o.get(Ye)));break;case`delete`:i||(s(o.get(Je)),f(e)&&s(o.get(Ye)));break;case`set`:f(e)&&s(o.get(Je))}}Me()}function Qe(e){let t=L(e);return t===e?t:(P(t,`iterate`,Xe),I(e)?t:t.map(R))}function $e(e){return P(e=L(e),`iterate`,Xe),e}function F(e,t){return Ft(e)?Rt(Pt(e)?R(t):t):R(t)}var et={__proto__:null,[Symbol.iterator](){return tt(this,Symbol.iterator,e=>F(this,e))},concat(...e){return Qe(this).concat(...e.map(e=>d(e)?Qe(e):e))},entries(){return tt(this,`entries`,e=>(e[1]=F(this,e[1]),e))},every(e,t){return rt(this,`every`,e,t,void 0,arguments)},filter(e,t){return rt(this,`filter`,e,t,e=>e.map(e=>F(this,e)),arguments)},find(e,t){return rt(this,`find`,e,t,e=>F(this,e),arguments)},findIndex(e,t){return rt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return rt(this,`findLast`,e,t,e=>F(this,e),arguments)},findLastIndex(e,t){return rt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return rt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return at(this,`includes`,e)},indexOf(...e){return at(this,`indexOf`,e)},join(e){return Qe(this).join(e)},lastIndexOf(...e){return at(this,`lastIndexOf`,e)},map(e,t){return rt(this,`map`,e,t,void 0,arguments)},pop(){return ot(this,`pop`)},push(...e){return ot(this,`push`,e)},reduce(e,...t){return it(this,`reduce`,e,t)},reduceRight(e,...t){return it(this,`reduceRight`,e,t)},shift(){return ot(this,`shift`)},some(e,t){return rt(this,`some`,e,t,void 0,arguments)},splice(...e){return ot(this,`splice`,e)},toReversed(){return Qe(this).toReversed()},toSorted(e){return Qe(this).toSorted(e)},toSpliced(...e){return Qe(this).toSpliced(...e)},unshift(...e){return ot(this,`unshift`,e)},values(){return tt(this,`values`,e=>F(this,e))}};function tt(e,t,n){let r=$e(e),i=r[t]();return r!==e&&!I(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var nt=Array.prototype;function rt(e,t,n,r,i,a){let o=$e(e),s=o!==e&&!I(e),c=o[t];if(c!==nt[t]){let t=c.apply(e,a);return s?R(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,F(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function it(e,t,n,r){let i=$e(e),a=i!==e&&!I(e),o=n,s=!1;i!==e&&(a?(s=r.length===0,o=function(t,r,i){return s&&(s=!1,t=F(e,t)),n.call(this,t,F(e,r),i,e)}):n.length>3&&(o=function(t,r,i){return n.call(this,t,r,i,e)}));let c=i[t](o,...r);return s?F(e,c):c}function at(e,t,n){let r=L(e);P(r,`iterate`,Xe);let i=r[t](...n);return(i===-1||i===!1)&&It(n[0])?(n[0]=L(n[0]),r[t](...n)):i}function ot(e,t,n=[]){Be(),je();let r=L(e)[t].apply(e,n);return Me(),Ve(),r}var st=e(`__proto__,__v_isRef,__isVue`),ct=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(_));function lt(e){_(e)||(e=String(e));let t=L(this);return P(t,`has`,e),t.hasOwnProperty(e)}var ut=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?Ot:Dt:i?Et:Tt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=d(e);if(!r){let e;if(a&&(e=et[t]))return e;if(t===`hasOwnProperty`)return lt}let o=Reflect.get(e,t,z(e)?e:n);if((_(t)?ct.has(t):st(t))||(r||P(e,`get`,t),i))return o;if(z(o)){let e=a&&w(t)?o:o.value;return r&&v(e)?Mt(e):e}return v(o)?r?Mt(o):At(o):o}},dt=class extends ut{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=d(e)&&w(t);if(!this._isShallow){let e=Ft(i);if(!I(n)&&!Ft(n)&&(i=L(i),n=L(n)),!a&&z(i)&&!z(n))return e||(i.value=n),!0}let o=a?Number(t)e,_t=e=>Reflect.getPrototypeOf(e);function vt(e,t,n){return function(...r){let i=this.__v_raw,a=L(i),o=f(a),c=e===`entries`||e===Symbol.iterator&&o,l=e===`keys`&&o,u=i[e](...r),d=n?gt:t?Rt:R;return!t&&P(a,`iterate`,l?Ye:Je),s(Object.create(u),{next(){let{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[d(e[0]),d(e[1])]:d(e),done:t}}})}}function yt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function bt(e,t){let n={get(n){let r=this.__v_raw,i=L(r),a=L(n);e||(D(n,a)&&P(i,`get`,n),P(i,`get`,a));let{has:o}=_t(i),s=t?gt:e?Rt:R;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&P(L(t),`iterate`,Je),t.size},has(t){let n=this.__v_raw,r=L(n),i=L(t);return e||(D(t,i)&&P(r,`has`,t),P(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=L(a),s=t?gt:e?Rt:R;return!e&&P(o,`iterate`,Je),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return s(n,e?{add:yt(`add`),set:yt(`set`),delete:yt(`delete`),clear:yt(`clear`)}:{add(e){let n=L(this),r=_t(n),i=L(e),a=!t&&!I(e)&&!Ft(e)?i:e;return r.has.call(n,a)||D(e,a)&&r.has.call(n,e)||D(i,a)&&r.has.call(n,i)||(n.add(a),Ze(n,`add`,a,a)),this},set(e,n){!t&&!I(n)&&!Ft(n)&&(n=L(n));let r=L(this),{has:i,get:a}=_t(r),o=i.call(r,e);o||=(e=L(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?D(n,s)&&Ze(r,`set`,e,n,s):Ze(r,`add`,e,n),this},delete(e){let t=L(this),{has:n,get:r}=_t(t),i=n.call(t,e);i||=(e=L(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&Ze(t,`delete`,e,void 0,a),o},clear(){let e=L(this),t=e.size!==0,n=e.clear();return t&&Ze(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=vt(r,e,t)}),n}function xt(e,t){let n=bt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(u(n,r)&&r in t?n:t,r,i)}var St={get:xt(!1,!1)},Ct={get:xt(!1,!0)},wt={get:xt(!0,!1)},Tt=new WeakMap,Et=new WeakMap,Dt=new WeakMap,Ot=new WeakMap;function kt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function At(e){return Ft(e)?e:Nt(e,!1,pt,St,Tt)}function jt(e){return Nt(e,!1,ht,Ct,Et)}function Mt(e){return Nt(e,!0,mt,wt,Dt)}function Nt(e,t,n,r,i){if(!v(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let a=i.get(e);if(a)return a;let o=kt(S(e));if(o===0)return e;let s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function Pt(e){return Ft(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ft(e){return!!(e&&e.__v_isReadonly)}function I(e){return!!(e&&e.__v_isShallow)}function It(e){return e?!!e.__v_raw:!1}function L(e){let t=e&&e.__v_raw;return t?L(t):e}function Lt(e){return!u(e,`__v_skip`)&&Object.isExtensible(e)&&O(e,`__v_skip`,!0),e}var R=e=>v(e)?At(e):e,Rt=e=>v(e)?Mt(e):e;function z(e){return e?e.__v_isRef===!0:!1}function B(e){return zt(e,!1)}function zt(e,t){return z(e)?e:new Bt(e,t)}var Bt=class{constructor(e,t){this.dep=new Ge,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:L(e),this._value=t?e:R(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||I(e)||Ft(e);e=n?e:L(e),D(e,t)&&(this._rawValue=e,this._value=n?e:R(e),this.dep.trigger())}};function Vt(e){return z(e)?e.value:e}var Ht={get:(e,t,n)=>t===`__v_raw`?e:Vt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return z(i)&&!z(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Ut(e){return Pt(e)?e:new Proxy(e,Ht)}var Wt=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Ge(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ue-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&M!==this)return Ae(this,!0),!0}get value(){let e=this.dep.track();return Ie(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Gt(e,t,n=!1){let r,i;return h(e)?r=e:(r=e.get,i=e.set),new Wt(r,i,n)}var Kt={},qt=new WeakMap,Jt=void 0;function Yt(e,t=!1,n=Jt){if(n){let t=qt.get(n);t||qt.set(n,t=[]),t.push(e)}}function Xt(e,n,i=t){let{immediate:a,deep:o,once:s,scheduler:l,augmentJob:u,call:f}=i,p=e=>o?e:I(e)||o===!1||o===0?Zt(e,1):Zt(e),m,g,_,v,y=!1,b=!1;if(z(e)?(g=()=>e.value,y=I(e)):Pt(e)?(g=()=>p(e),y=!0):d(e)?(b=!0,y=e.some(e=>Pt(e)||I(e)),g=()=>e.map(e=>{if(z(e))return e.value;if(Pt(e))return p(e);if(h(e))return f?f(e,2):e()})):g=h(e)?n?f?()=>f(e,2):e:()=>{if(_){Be();try{_()}finally{Ve()}}let t=Jt;Jt=m;try{return f?f(e,3,[v]):e(v)}finally{Jt=t}}:r,n&&o){let e=g,t=o===!0?1/0:o;g=()=>Zt(e(),t)}let x=we(),S=()=>{m.stop(),x&&x.active&&c(x.effects,m)};if(s&&n){let e=n;n=(...t)=>{let n=e(...t);return S(),n}}let C=b?Array(e.length).fill(Kt):Kt,w=e=>{if(!(!(m.flags&1)||!m.dirty&&!e))if(n){let t=m.run();if(e||o||y||(b?t.some((e,t)=>D(e,C[t])):D(t,C))){_&&_();let e=Jt;Jt=m;try{let e=[t,C===Kt?void 0:b&&C[0]===Kt?[]:C,v];C=t,f?f(n,3,e):n(...e)}finally{Jt=e}}}else m.run()};return u&&u(w),m=new Ee(g),m.scheduler=l?()=>l(w,!1):w,v=e=>Yt(e,!1,m),_=m.onStop=()=>{let e=qt.get(m);if(e){if(f)f(e,4);else for(let t of e)t();qt.delete(m)}},n?a?w(!0):C=m.run():l?l(w.bind(null,!0),!0):m.run(),S.pause=m.pause.bind(m),S.resume=m.resume.bind(m),S.stop=S,S}function Zt(e,t=1/0,n){if(t<=0||!v(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,z(e))Zt(e.value,t,n);else if(d(e))for(let r=0;r{Zt(e,t,n)});else if(C(e)){for(let r in e)Zt(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Zt(e[r],t,n)}return e}function Qt(e,t,n,r){try{return r?e(...r):e()}catch(e){$t(e,t,n)}}function V(e,t,n,r){if(h(e)){let i=Qt(e,t,n,r);return i&&y(i)&&i.catch(e=>{$t(e,t,n)}),i}if(d(e)){let i=[];for(let a=0;a>>1,i=H[r],a=mn(i);a=mn(n)?H.push(e):H.splice(cn(t),0,e),e.flags|=1,un()}}function un(){on||=an.then(hn)}function dn(e){d(e)?tn.push(...e):nn&&e.id===-1?nn.splice(rn+1,0,e):e.flags&1||(tn.push(e),e.flags|=1),un()}function fn(e,t,n=U+1){for(;nmn(e)-mn(t));if(tn.length=0,nn){nn.push(...e);return}for(nn=e,rn=0;rne.id==null?e.flags&2?-1:1/0:e.id;function hn(e){try{for(U=0;U{r._d&&Ci(-1);let i=_n(t),a=bi.length,o;try{o=e(...n)}finally{for(let e=bi.length;e>a;e--)xi();_n(i),r._d&&Ci(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function yn(e,n){if(W===null)return e;let r=ra(W),i=e.dirs||=[];for(let e=0;e1)return n&&h(t)?t.call(r&&r.proxy):t}}var Cn=Symbol.for(`v-scx`),wn=()=>Sn(Cn);function Tn(e,t,n){return En(e,t,n)}function En(e,n,i=t){let{immediate:a,deep:o,flush:c,once:l}=i,u=s({},i),d=n&&a||!n&&c!==`post`,f;if(Ji){if(c===`sync`){let e=wn();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=r,e.resume=r,e.pause=r,e}}let p=$;u.call=(e,t,n)=>V(e,p,t,n);let m=!1;c===`post`?u.scheduler=e=>{K(e,p&&p.suspense)}:c!==`sync`&&(m=!0,u.scheduler=(e,t)=>{t?e():ln(e)}),u.augmentJob=e=>{n&&(e.flags|=4),m&&(e.flags|=2,p&&(e.id=p.uid,e.i=p))};let h=Xt(e,n,u);return Ji&&(f?f.push(h):d&&h()),h}function Dn(e,t,n){let r=this.proxy,i=g(e)?e.includes(`.`)?On(r,e):()=>r[e]:e.bind(r,r),a;h(t)?a=t:(a=t.handler,n=t);let o=Gi(this),s=En(i,a.bind(r),n);return o(),s}function On(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;ee.__isTeleport,jn=Symbol(`_leaveCb`);function Mn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Mn(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 Nn(e,t){return h(e)?s({name:e.name},t,{setup:e}):e}function Pn(e){e.ids=[e.ids[0]+e.ids[2]+++`-`,0,0]}function Fn(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}var In=new WeakMap;function Ln(e,n,r,a,o=!1){if(d(e)){e.forEach((e,t)=>Ln(e,n&&(d(n)?n[t]:n),r,a,o));return}if(zn(a)&&!o){a.shapeFlag&512&&a.type.__asyncResolved&&a.component.subTree.component&&Ln(e,n,r,a.component.subTree);return}let s=a.shapeFlag&4?ra(a.component):a.el,l=o?null:s,{i:f,r:p}=e,m=n&&n.r,_=f.refs===t?f.refs={}:f.refs,v=f.setupState,y=L(v),b=v===t?i:e=>!Fn(_,e)&&u(y,e),x=(e,t)=>!(t&&Fn(_,t));if(m!=null&&m!==p){if(Rn(n),g(m))_[m]=null,b(m)&&(v[m]=null);else if(z(m)){let e=n;x(m,e.k)&&(m.value=null),e.k&&(_[e.k]=null)}}if(h(p))Qt(p,f,12,[l,_]);else{let t=g(p),n=z(p);if(t||n){let i=()=>{if(e.f){let n=t?b(p)?v[p]:_[p]:x(p)||!e.k?p.value:_[e.k];if(o)d(n)&&c(n,s);else if(d(n))n.includes(s)||n.push(s);else if(t)_[p]=[s],b(p)&&(v[p]=_[p]);else{let t=[s];x(p,e.k)&&(p.value=t),e.k&&(_[e.k]=t)}}else t?(_[p]=l,b(p)&&(v[p]=l)):n&&(x(p,e.k)&&(p.value=l),e.k&&(_[e.k]=l))};if(l){let t=()=>{i(),In.delete(e)};t.id=-1,In.set(e,t),K(t,r)}else Rn(e),i()}}}function Rn(e){let t=In.get(e);t&&(t.flags|=8,In.delete(e))}le().requestIdleCallback,le().cancelIdleCallback;var zn=e=>!!e.type.__asyncLoader,Bn=e=>e.type.__isKeepAlive;function Vn(e,t){Un(e,`a`,t)}function Hn(e,t){Un(e,`da`,t)}function Un(e,t,n=$){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Gn(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Bn(e.parent.vnode)&&Wn(r,t,n,e),e=e.parent}}function Wn(e,t,n,r){let i=Gn(t,e,r,!0);Qn(()=>{c(r[t],i)},n)}function Gn(e,t,n=$,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{Be();let i=Gi(n),a=V(t,n,e,r);return i(),Ve(),a};return r?i.unshift(a):i.push(a),a}}var Kn=e=>(t,n=$)=>{(!Ji||e===`sp`)&&Gn(e,(...e)=>t(...e),n)},qn=Kn(`bm`),Jn=Kn(`m`),Yn=Kn(`bu`),Xn=Kn(`u`),Zn=Kn(`bum`),Qn=Kn(`um`),$n=Kn(`sp`),er=Kn(`rtg`),tr=Kn(`rtc`);function nr(e,t=$){Gn(`ec`,e,t)}var rr=Symbol.for(`v-ndc`);function ir(e,t,n,r){let i,a=n&&n[r],o=d(e);if(o||g(e)){let n=o&&Pt(e),r=!1,s=!1;n&&(r=!I(e),s=Ft(e),e=$e(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;re?qi(e)?ra(e):ar(e.parent):null,or=s(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=>ar(e.parent),$root:e=>ar(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>hr(e),$forceUpdate:e=>e.f||=()=>{ln(e.update)},$nextTick:e=>e.n||=sn.bind(e.proxy),$watch:e=>Dn.bind(e)}),sr=(e,n)=>e!==t&&!e.__isScriptSetup&&u(e,n),cr={get({_:e},n){if(n===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(n[0]!==`$`){let e=s[n];if(e!==void 0)switch(e){case 1:return i[n];case 2:return a[n];case 4:return r[n];case 3:return o[n]}else if(sr(i,n))return s[n]=1,i[n];else if(a!==t&&u(a,n))return s[n]=2,a[n];else if(u(o,n))return s[n]=3,o[n];else if(r!==t&&u(r,n))return s[n]=4,r[n];else ur&&(s[n]=0)}let d=or[n],f,p;if(d)return n===`$attrs`&&P(e.attrs,`get`,``),d(e);if((f=c.__cssModules)&&(f=f[n]))return f;if(r!==t&&u(r,n))return s[n]=4,r[n];if(p=l.config.globalProperties,u(p,n))return p[n]},set({_:e},n,r){let{data:i,setupState:a,ctx:o}=e;return sr(a,n)?(a[n]=r,!0):i!==t&&u(i,n)?(i[n]=r,!0):u(e.props,n)||n[0]===`$`&&n.slice(1)in e?!1:(o[n]=r,!0)},has({_:{data:e,setupState:n,accessCache:r,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(r[c]||e!==t&&c[0]!==`$`&&u(e,c)||sr(n,c)||u(o,c)||u(i,c)||u(or,c)||u(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?u(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}};function lr(e){return d(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}var ur=!0;function dr(e){let t=hr(e),n=e.proxy,i=e.ctx;ur=!1,t.beforeCreate&&pr(t.beforeCreate,e,`bc`);let{data:a,computed:o,methods:s,watch:c,provide:l,inject:u,created:f,beforeMount:p,mounted:m,beforeUpdate:g,updated:_,activated:y,deactivated:b,beforeDestroy:x,beforeUnmount:S,destroyed:C,unmounted:w,render:ee,renderTracked:te,renderTriggered:ne,errorCaptured:T,serverPrefetch:re,expose:E,inheritAttrs:ie,components:ae,directives:D,filters:oe}=t;if(u&&fr(u,i,null),s)for(let e in s){let t=s[e];h(t)&&(i[e]=t.bind(n))}if(a){let t=a.call(n,n);v(t)&&(e.data=At(t))}if(ur=!0,o)for(let e in o){let t=o[e],a=aa({get:h(t)?t.bind(n,n):h(t.get)?t.get.bind(n,n):r,set:!h(t)&&h(t.set)?t.set.bind(n):r});Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(c)for(let e in c)mr(c[e],i,n,e);if(l){let e=h(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{xn(t,e[t])})}f&&pr(f,e,`c`);function O(e,t){d(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(O(qn,p),O(Jn,m),O(Yn,g),O(Xn,_),O(Vn,y),O(Hn,b),O(nr,T),O(tr,te),O(er,ne),O(Zn,S),O(Qn,w),O($n,re),d(E))if(E.length){let t=e.exposed||={};E.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};ee&&e.render===r&&(e.render=ee),ie!=null&&(e.inheritAttrs=ie),ae&&(e.components=ae),D&&(e.directives=D),re&&Pn(e)}function fr(e,t,n=r){d(e)&&(e=br(e));for(let n in e){let r=e[n],i;i=v(r)?`default`in r?Sn(r.from||n,r.default,!0):Sn(r.from||n):Sn(r),z(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function pr(e,t,n){V(d(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function mr(e,t,n,r){let i=r.includes(`.`)?On(n,r):()=>n[r];if(g(e)){let n=t[e];h(n)&&Tn(i,n)}else if(h(e))Tn(i,e.bind(n));else if(v(e))if(d(e))e.forEach(e=>mr(e,t,n,r));else{let r=h(e.handler)?e.handler.bind(n):t[e.handler];h(r)&&Tn(i,r,e)}}function hr(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>gr(c,e,o,!0)),gr(c,t,o)),v(t)&&a.set(t,c),c}function gr(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&gr(e,a,n,!0),i&&i.forEach(t=>gr(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=_r[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var _r={data:vr,props:Sr,emits:Sr,methods:xr,computed:xr,beforeCreate:G,created:G,beforeMount:G,mounted:G,beforeUpdate:G,updated:G,beforeDestroy:G,beforeUnmount:G,destroyed:G,unmounted:G,activated:G,deactivated:G,errorCaptured:G,serverPrefetch:G,components:xr,directives:xr,watch:Cr,provide:vr,inject:yr};function vr(e,t){return t?e?function(){return s(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function yr(e,t){return xr(br(e),br(t))}function br(e){if(d(e)){let t={};for(let n=0;nt===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${T(t)}Modifiers`]||e[`${E(t)}Modifiers`];function kr(e,n,...r){if(e.isUnmounted)return;let i=e.vnode.props||t,a=r,o=n.startsWith(`update:`),s=o&&Or(i,n.slice(7));s&&(s.trim&&(a=r.map(e=>g(e)?e.trim():e)),s.number&&(a=r.map(se)));let c,l=i[c=ae(n)]||i[c=ae(T(n))];!l&&o&&(l=i[c=ae(E(n))]),l&&V(l,e,6,a);let u=i[c+`Once`];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,V(u,e,6,a)}}var Ar=new WeakMap;function jr(e,t,n=!1){let r=n?Ar:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},c=!1;if(!h(e)){let r=e=>{let n=jr(e,t,!0);n&&(c=!0,s(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!c?(v(e)&&r.set(e,null),null):(d(a)?a.forEach(e=>o[e]=null):s(o,a),v(e)&&r.set(e,o),o)}function Mr(e,t){return!e||!a(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),u(e,t[0].toLowerCase()+t.slice(1))||u(e,E(t))||u(e,t))}function Nr(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:s,attrs:c,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=_n(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=Pi(u.call(t,e,d,f,m,p,h)),y=c}else{let e=t;v=Pi(e.length>1?e(f,{attrs:c,slots:s,emit:l}):e(f,null)),y=t.props?c:Pr(c)}}catch(t){bi.length=0,$t(t,e,1),v=Z(vi)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(o)&&(y=Fr(y,a)),b=Mi(b,y,!1,!0))}return n.dirs&&(b=Mi(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&Mn(b,n.transition),v=b,_n(_),v}var Pr=e=>{let t;for(let n in e)(n===`class`||n===`style`||a(n))&&((t||={})[n]=e[n]);return t},Fr=(e,t)=>{let n={};for(let r in e)(!o(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ir(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Lr(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(Br),Hr=e=>Object.getPrototypeOf(e)===Br;function Ur(e,t,n,r=!1){let i={},a=Vr();e.propsDefaults=Object.create(null),Gr(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);e.props=n?r?i:jt(i):e.type.props?i:a,e.attrs=a}function Wr(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=L(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{p=!0;let[t,n]=Jr(e,r,!0);s(l,t),n&&f.push(...n)};!i&&r.mixins.length&&r.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!c&&!p)return v(e)&&a.set(e,n),n;if(d(c))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,Zr=e=>d(e)?e.map(Pi):[Pi(e)],Qr=(e,t,n)=>{if(t._n)return t;let r=vn((...e)=>Zr(t(...e)),n);return r._c=!1,r},$r=(e,t,n)=>{let r=e._ctx;for(let n in e){if(Xr(n))continue;let i=e[n];if(h(i))t[n]=Qr(n,i,r);else if(i!=null){let e=Zr(i);t[n]=()=>e}}},ei=(e,t)=>{let n=Zr(t);e.slots.default=()=>n},ti=(e,t,n)=>{for(let r in t)(n||!Xr(r))&&(e[r]=t[r])},ni=(e,t,n)=>{let r=e.slots=Vr();if(e.vnode.shapeFlag&32){let e=t._;e?(ti(r,t,n),n&&O(r,`_`,e,!0)):$r(t,r)}else t&&ei(e,t)},ri=(e,n,r)=>{let{vnode:i,slots:a}=e,o=!0,s=t;if(i.shapeFlag&32){let e=n._;e?r&&e===1?o=!1:ti(a,n,r):(o=!n.$stable,$r(n,a)),s=n}else n&&(ei(e,n),s={default:1});if(o)for(let e in a)!Xr(e)&&s[e]==null&&delete a[e]},K=hi;function ii(e){return ai(e)}function ai(e,i){let a=le();a.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=r,insertStaticContent:_}=e,v=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Di(e,t)&&(r=ye(e),k(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case _i:y(e,t,n,r);break;case vi:b(e,t,n,r);break;case yi:e??x(t,n,r,o);break;case gi:ae(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?D(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,xe)}u!=null&&i?Ln(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&Ln(e.ref,null,a,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)te(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),re(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},te=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&T(e.children,d,null,r,i,oi(e,a),s,u),_&&bn(e,null,r,`created`),ne(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!ee(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&Ri(f,r,e)}_&&bn(e,null,r,`beforeMount`);let v=ci(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&K(()=>{try{f&&Ri(f,r,e),v&&g.enter(d),_&&bn(e,null,r,`mounted`)}finally{}},i)},ne=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t{for(let l=c;l{let l=n.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=n;u|=e.patchFlag&16;let m=e.props||t,h=n.props||t,g;if(r&&si(r,!1),(g=h.onVnodeBeforeUpdate)&&Ri(g,r,n,e),f&&bn(n,e,r,`beforeUpdate`),r&&si(r,!0),d&&(!e.dynamicChildren||e.dynamicChildren.length!==d.length)&&(u=0,s=!1,d=null),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?E(e.dynamicChildren,d,l,r,i,oi(n,a),o):s||de(e,n,l,null,r,i,oi(n,a),o,!1),u>0){if(u&16)ie(l,m,h,r,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=n.dynamicProps;for(let t=0;t{g&&Ri(g,r,n,e),f&&bn(n,e,r,`updated`)},i)},E=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(n!==r){if(n!==t)for(let t in n)!ee(t)&&!(t in r)&&c(e,t,n[t],null,a,i);for(let t in r){if(ee(t))continue;let o=r[t],s=n[t];o!==s&&t!==`value`&&c(e,t,s,o,a,i)}`value`in r&&c(e,`value`,n.value,r.value,a)}},ae=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),T(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(E(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&li(e,t,!0)):de(e,t,n,f,i,a,s,c,l)},D=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):O(t,n,r,i,a,o,c):se(e,t,c)},O=(e,t,n,r,i,a,o)=>{let s=e.component=Vi(e,r,i);if(Bn(e)&&(s.ctx.renderer=xe),Yi(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,ce,o),!e.el){let r=s.subTree=Z(vi);b(null,r,t,n),e.placeholder=r.el}}else ce(s,e,t,n,i,a,o)},se=(e,t,n)=>{let r=t.component=e.component;if(Ir(e,t,n))if(r.asyncDep&&!r.asyncResolved){ue(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},ce=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=di(e);if(n){t&&(t.el=c.el,ue(e,t,o)),n.asyncDep.then(()=>{K(()=>{e.isUnmounted||l()},i)});return}}let u=t,d;si(e,!1),t?(t.el=c.el,ue(e,t,o)):t=c,n&&oe(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&Ri(d,s,t,c),si(e,!0);let f=Nr(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),ye(p),e,i,a),t.el=f.el,u===null&&zr(e,f.el),r&&K(r,i),(d=t.props&&t.props.onVnodeUpdated)&&K(()=>Ri(d,s,t,c),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=zn(t);if(si(e,!1),l&&oe(l),!m&&(o=c&&c.onVnodeBeforeMount)&&Ri(o,d,t),si(e,!0),s&&j){let t=()=>{e.subTree=Nr(e),j(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._hasShadowRoot()&&f.ce._injectChildStyle(p,e.parent?e.parent.type:void 0);let o=e.subTree=Nr(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&K(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;K(()=>Ri(o,d,e),i)}(t.shapeFlag&256||d&&zn(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&K(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Ee(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>ln(u),si(e,!0),l()},ue=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,Wr(e,t.props,r,n),ri(e,t.children,n),Be(),fn(e),Ve()},de=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){pe(l,d,n,r,i,a,o,s,c);return}if(f&256){fe(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&ve(l,i,a),d!==l&&p(n,d)):u&16?m&16?pe(l,d,n,r,i,a,o,s,c):ve(l,i,a,!0):(u&8&&p(n,``),m&16&&T(d,n,r,i,a,o,s,c))},fe=(e,t,r,i,a,o,s,c,l)=>{e||=n,t||=n;let u=e.length,d=t.length,f=Math.min(u,d),p;for(p=0;pd?ve(e,a,o,!0,!1,f):T(t,r,i,a,o,s,c,l,f)},pe=(e,t,r,i,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let n=e[u],i=t[u]=l?Fi(t[u]):Pi(t[u]);if(Di(n,i))v(n,i,r,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let n=e[f],i=t[p]=l?Fi(t[p]):Pi(t[p]);if(Di(n,i))v(n,i,r,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,n=ep)for(;u<=f;)k(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?Fi(t[u]):Pi(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,S=0,C=Array(b);for(u=0;u=b){k(n,a,o,!0);continue}let i;if(n.key!=null)i=g.get(n.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&Di(n,t[_])){i=_;break}i===void 0?k(n,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(n,t[i],r,null,a,o,s,c,l),y++)}let w=x?ui(C):n;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,n=t[e],f=t[e+1],p=e+1{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){me(e.component.subTree,t,n,r);return}if(d&128){e.suspense.move(t,n,r);return}if(d&64){c.move(e,t,n,xe);return}if(c===gi){o(a,t,n);for(let e=0;el.enter(a),i));else{let{leave:r,delayLeave:i,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?s(a):o(a,t,n)},d=()=>{let e=a._isLeaving||!!a[jn];a._isLeaving&&a[jn](!0),l.persisted&&!e?u():r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}else o(a,t,n)},k=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p,memo:m}=e;if(d===-2&&(i=!1),s!=null&&(Be(),Ln(s,null,n,e,!0),Ve()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!zn(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&Ri(_,t,e),u&6)_e(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&bn(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,xe,r):l&&!l.hasOnce&&(a!==gi||d>0&&d&64)?ve(l,t,n,!1,!0):(a===gi&&d&384||!i&&u&16)&&ve(c,t,n),r&&he(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&K(()=>{_&&Ri(_,t,e),h&&bn(e,null,t,`unmounted`),v&&(e.el=null)},n)},he=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===gi){ge(n,r);return}if(t===yi){C(e);return}let a=()=>{s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(e.shapeFlag&1&&i&&!i.persisted){let{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},ge=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},_e=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;fi(c),fi(l),r&&oe(r),i.stop(),a&&(a.flags|=8,k(o,e,t,n)),s&&K(s,t),K(()=>{e.isUnmounted=!0},t)},ve=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return ye(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[kn];return n?h(n):t},be=!1,A=(e,t,n)=>{let r;e==null?t._vnode&&(k(t._vnode,null,null,!0),r=t._vnode.component):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,be||=(be=!0,fn(r),pn(),!1)},xe={p:v,um:k,m:me,r:he,mt:O,mc:T,pc:de,pbc:E,n:ye,o:e},Se,j;return i&&([Se,j]=i(xe)),{render:A,hydrate:Se,createApp:Er(A,Se)}}function oi({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function si({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ci(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function li(e,t,n=!1){let r=e.children,i=t.children;if(d(r)&&d(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-->0;)n[a]=o,o=t[o];return n}function di(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:di(t)}function fi(e){if(e)for(let t=0;te.__isSuspense;function hi(e,t){t&&t.pendingBranch?d(e)?t.effects.push(...e):t.effects.push(e):dn(e)}var gi=Symbol.for(`v-fgt`),_i=Symbol.for(`v-txt`),vi=Symbol.for(`v-cmt`),yi=Symbol.for(`v-stc`),bi=[],q=null;function J(e=!1){bi.push(q=e?null:[])}function xi(){bi.pop(),q=bi[bi.length-1]||null}var Si=1;function Ci(e,t=!1){Si+=e,e<0&&q&&t&&(q.hasOnce=!0)}function wi(e){return e.dynamicChildren=Si>0?q||n:null,xi(),Si>0&&q&&q.push(e),e}function Y(e,t,n,r,i,a){return wi(X(e,t,n,r,i,a,!0))}function Ti(e,t,n,r,i){return wi(Z(e,t,n,r,i,!0))}function Ei(e){return e?e.__v_isVNode===!0:!1}function Di(e,t){return e.type===t.type&&e.key===t.key}var Oi=({key:e})=>e??null,ki=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:g(e)||z(e)||h(e)?{i:W,r:e,k:t,f:!!n}:e);function X(e,t=null,n=null,r=0,i=null,a=e===gi?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Oi(t),ref:t&&ki(t),scopeId:gn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:W};return s?(Ii(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=g(n)?8:16),Si>0&&!o&&q&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&q.push(c),c}var Z=Ai;function Ai(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===rr)&&(e=vi),Ei(e)){let r=Mi(e,t,!0);return n&&Ii(r,n),Si>0&&!a&&q&&(r.shapeFlag&6?q[q.indexOf(e)]=r:q.push(r)),r.patchFlag=-2,r}if(ia(e)&&(e=e.__vccOpts),t){t=ji(t);let{class:e,style:n}=t;e&&!g(e)&&(t.class=k(e)),v(n)&&(It(n)&&!d(n)&&(n=s({},n)),t.style=ue(n))}let o=g(e)?1:mi(e)?128:An(e)?64:v(e)?4:h(e)?2:0;return X(e,t,n,r,i,o,a,!0)}function ji(e){return e?It(e)||Hr(e)?s({},e):e:null}function Mi(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?Li(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Oi(l),ref:t&&t.ref?n&&a?d(a)?a.concat(ki(t)):[a,ki(t)]:ki(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==gi?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&&Mi(e.ssContent),ssFallback:e.ssFallback&&Mi(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Mn(u,c.clone(u)),u}function Ni(e=` `,t=0){return Z(_i,null,e,t)}function Q(e=``,t=!1){return t?(J(),Ti(vi,null,e)):Z(vi,null,e)}function Pi(e){return e==null||typeof e==`boolean`?Z(vi):d(e)?Z(gi,null,e.slice()):Ei(e)?Fi(e):Z(_i,null,String(e))}function Fi(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Mi(e)}function Ii(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(d(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),Ii(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!Hr(t)?t._ctx=W:r===3&&W&&(W.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(h(t)){if(r&65){Ii(e,{default:t});return}t={default:t,_ctx:W},n=32}else t=String(t),r&64?(n=16,t=[Ni(t)]):n=8;e.children=t,e.shapeFlag|=n}function Li(...e){let t={};for(let n=0;n$||W,Ui,Wi;{let e=le(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};Ui=t(`__VUE_INSTANCE_SETTERS__`,e=>$=e),Wi=t(`__VUE_SSR_SETTERS__`,e=>Ji=e)}var Gi=e=>{let t=$;return Ui(e),e.scope.on(),()=>{e.scope.off(),Ui(t)}},Ki=()=>{$&&$.scope.off(),Ui(null)};function qi(e){return e.vnode.shapeFlag&4}var Ji=!1;function Yi(e,t=!1,n=!1){t&&Wi(t);let{props:r,children:i}=e.vnode,a=qi(e);Ur(e,r,a,t),ni(e,i,n||t);let o=a?Xi(e,t):void 0;return t&&Wi(!1),o}function Xi(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,cr);let{setup:r}=n;if(r){Be();let n=e.setupContext=r.length>1?na(e):null,i=Gi(e),a=Qt(r,e,0,[e.props,n]),o=y(a);if(Ve(),i(),(o||e.sp)&&!zn(e)&&Pn(e),o){if(a.then(Ki,Ki),t)return a.then(n=>{Zi(e,n,t)}).catch(t=>{$t(t,e,0)});e.asyncDep=a}else Zi(e,a,t)}else ea(e,t)}function Zi(e,t,n){h(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:v(t)&&(e.setupState=Ut(t)),ea(e,n)}var Qi,$i;function ea(e,t,n){let i=e.type;if(!e.render){if(!t&&Qi&&!i.render){let t=i.template||hr(e).template;if(t){let{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:a,compilerOptions:o}=i;i.render=Qi(t,s(s({isCustomElement:n,delimiters:a},r),o))}}e.render=i.render||r,$i&&$i(e)}{let t=Gi(e);Be();try{dr(e)}finally{Ve(),t()}}}var ta={get(e,t){return P(e,`get`,``),e[t]}};function na(e){return{attrs:new Proxy(e.attrs,ta),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function ra(e){return e.exposed?e.exposeProxy||=new Proxy(Ut(Lt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in or)return or[n](e)},has(e,t){return t in e||t in or}}):e.proxy}function ia(e){return h(e)&&`__vccOpts`in e}var aa=(e,t)=>Gt(e,t,Ji),oa=`3.5.40`,sa=void 0,ca=typeof window<`u`&&window.trustedTypes;if(ca)try{sa=ca.createPolicy(`vue`,{createHTML:e=>e})}catch{}var la=sa?e=>sa.createHTML(e):e=>e,ua=`http://www.w3.org/2000/svg`,da=`http://www.w3.org/1998/Math/MathML`,fa=typeof document<`u`?document:null,pa=fa&&fa.createElement(`template`),ma={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?fa.createElementNS(ua,e):t===`mathml`?fa.createElementNS(da,e):n?fa.createElement(e,{is:n}):fa.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>fa.createTextNode(e),createComment:e=>fa.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>fa.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{pa.innerHTML=la(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=pa.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ha=Symbol(`_vtc`);function ga(e,t,n){let r=e[ha];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var _a=Symbol(`_vod`),va=Symbol(`_vsh`),ya={name:`show`,beforeMount(e,{value:t},{transition:n}){e[_a]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):ba(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),ba(e,!0),r.enter(e)):r.leave(e,()=>{ba(e,!1)}):ba(e,t))},beforeUnmount(e,{value:t}){ba(e,t)}};function ba(e,t){e.style.display=t?e[_a]:`none`,e[va]=!t}var xa=Symbol(``),Sa=/(?:^|;)\s*display\s*:/;function Ca(e,t,n){let r=e.style,i=g(n),a=!1;if(n&&!i){if(t)if(g(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??Ta(r,t,``)}else for(let e in t)n[e]??Ta(r,e,``);for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?Ta(r,i,``):ka(e,i,!g(t)&&t?t[i]:void 0,o)||Ta(r,i,o)}}else if(i){if(t!==n){let e=r[xa];e&&(n+=`;`+e),r.cssText=n,a=Sa.test(n)}}else t&&e.removeAttribute(`style`);_a in e&&(e[_a]=a?r.display:``,e[va]&&(r.display=`none`))}var wa=/\s*!important$/;function Ta(e,t,n){if(d(n))n.forEach(n=>Ta(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=Oa(e,t);wa.test(n)?e.setProperty(E(r),n.replace(wa,``),`important`):e[r]=n}}var Ea=[`Webkit`,`Moz`,`ms`],Da={};function Oa(e,t){let n=Da[t];if(n)return n;let r=T(t);if(r!==`filter`&&r in e)return Da[t]=r;r=ie(r);for(let n=0;nBa||=(Va.then(()=>Ba=0),Date.now());function Ua(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(d(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;ne.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ga=(e,t,n,r,i,s)=>{let c=i===`svg`;t===`class`?ga(e,r,c):t===`style`?Ca(e,n,r):a(t)?o(t)||Ia(e,t,n,r,s):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):Ka(e,t,r,c))?(Ma(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&ja(e,t,r,c,s,t!==`value`)):e._isVueCE&&(qa(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!g(r)))?Ma(e,T(t),r,s,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),ja(e,t,r,c))};function Ka(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&Wa(t)&&h(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return Wa(t)&&g(n)?!1:t in e}function qa(e,t){let n=e._def.props;if(!n)return!1;let r=T(t);return Array.isArray(n)?n.some(e=>T(e)===r):Object.keys(n).some(e=>T(e)===r)}var Ja=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return d(t)?e=>oe(t,e):t};function Ya(e){e.target.composing=!0}function Xa(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Za=Symbol(`_assign`);function Qa(e,t,n){return t&&(e=e.trim()),n&&(e=se(e)),e}var $a={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[Za]=Ja(i);let a=r||i.props&&i.props.type===`number`;Na(e,t?`change`:`input`,t=>{t.target.composing||e[Za](Qa(e.value,n,a))}),(n||a)&&Na(e,`change`,()=>{e.value=Qa(e.value,n,a)}),t||(Na(e,`compositionstart`,Ya),Na(e,`compositionend`,Xa),Na(e,`change`,Xa))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[Za]=Ja(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?se(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},eo={esc:`escape`,space:` `,up:`arrow-up`,left:`arrow-left`,right:`arrow-right`,down:`arrow-down`,delete:`backspace`},to=(e,t)=>{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=E(n.key);if(t.some(e=>e===r||eo[e]===r))return e(n)}))},no=s({patchProp:Ga},ma),ro;function io(){return ro||=ii(no)}var ao=((...e)=>{let t=io().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=so(e);if(!r)return;let i=t._component;!h(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,oo(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t});function oo(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function so(e){return g(e)?document.querySelector(e):e}function co(){let e=B(null),t=B(!1),n=B(null);function r(r){i(),e.value=r,t.value=!0,n.value=null}function i(){e.value=null,t.value=!1,n.value=null}return{streamUrl:e,isLive:t,error:n,start:r,stop:i}}var lo=`recordings`,uo=`index.json`;async function fo(){return(await navigator.storage.getDirectory()).getDirectoryHandle(lo,{create:!0})}async function po(e){try{let t=await(await(await e.getFileHandle(uo)).getFile()).text();return JSON.parse(t)}catch{return[]}}async function mo(e,t){let n=await(await e.getFileHandle(uo,{create:!0})).createWritable();await n.write(JSON.stringify(t)),await n.close()}function ho(e){let t=4+e.length*8,n=new ArrayBuffer(t),r=new DataView(n);r.setUint32(0,e.length);let i=4,a=[n];for(let t of e)r.setUint32(i,t.timestamp),r.setUint32(i+4,t.blob.size),i+=8,a.push(t.blob);return new Blob(a,{type:`application/octet-stream`})}async function go(e){let t=await e.arrayBuffer(),n=new DataView(t),r=n.getUint32(0),i=[],a=4;for(let e=0;et.id!==e))}var bo=new Uint8Array([255,216]),xo=new Uint8Array([255,217]);function So(e,t,n=0){outer:for(let r=n;r<=e.length-t.length;r++){for(let n=0;n100&&(yield{blob:new Blob([i],{type:`image/jpeg`}),timestamp:Date.now()-r}),n=n.subarray(t+2)}}}finally{t.releaseLock()}}function wo(){let e=B(`idle`),t=B(0),n=B(0),r=B(null),i=[],a=0,o=null,s=null,c=!1;function l(){c=!1,s&&=(s.abort(),null),o&&=(clearInterval(o),null),i=[],n.value=0,t.value=0,e.value=`idle`}async function u(u){l(),a=Date.now(),e.value=`recording`,r.value=null,c=!0,o=setInterval(()=>{c&&(t.value=Date.now()-a)},100),s=new AbortController;try{let e=await fetch(u,{signal:s.signal,cache:`no-store`});if(!e.ok)throw Error(`HTTP ${e.status}: ${e.statusText}`);for await(let t of Co(e)){if(!c)break;i.push({timestamp:t.timestamp,blob:t.blob}),n.value=i.length}}catch(e){if(e.name===`AbortError`)return;r.value=e.message||String(e)}}async function d(){if(e.value!==`recording`)return e.value===`saving`||l(),null;e.value=`saving`,c=!1,s&&=(s.abort(),null),o&&=(clearInterval(o),null),t.value=Date.now()-a;let n=[...i];i=[];let u=setTimeout(()=>{e.value===`saving`&&(r.value=`Save timed out`,e.value=`idle`)},5e3);if(n.length===0)return clearTimeout(u),r.value=`No frames captured — check that the stream is accessible`,e.value=`idle`,null;let d={id:crypto.randomUUID(),name:`Recording ${new Date().toLocaleString()}`,createdAt:new Date,duration:t.value,frameCount:n.length,data:ho(n)};try{return await _o(d),r.value=null,d}catch(e){return r.value=`Save failed: ${e.message||e}`,null}finally{clearTimeout(u),e.value=`idle`}}function f(){l(),r.value=null}function p(e){let t=Math.floor(Math.max(0,e)/1e3),n=Math.floor(t/60),r=t%60,i=Math.floor(Math.max(0,e)%1e3/10);return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}.${String(i).padStart(2,`0`)}`}return{recorderState:e,elapsedMs:t,frameCount:n,recorderError:r,startRecording:u,stopRecording:d,cancelRecording:f,formatElapsed:p}}var To={class:`live-view`},Eo={class:`video-container`},Do=[`src`],Oo={key:1,class:`video-placeholder`},ko={key:0,class:`error-text`},Ao={key:1},jo={key:2,class:`live-badge`},Mo=Nn({__name:`LiveView`,props:{streamUrl:{},isLive:{type:Boolean},error:{}},setup(e){return(t,n)=>(J(),Y(`div`,To,[X(`div`,Eo,[e.streamUrl&&e.isLive?(J(),Y(`img`,{key:e.streamUrl,src:e.streamUrl,alt:`MJPEG Stream`,class:`video-frame`},null,8,Do)):(J(),Y(`div`,Oo,[e.error?(J(),Y(`span`,ko,A(e.error),1)):(J(),Y(`span`,Ao,`Stream not started — configure and apply a stream URL above`))])),e.isLive?(J(),Y(`div`,jo,[...n[0]||=[X(`span`,{class:`live-dot`},null,-1),Ni(` LIVE `,-1)]])):Q(``,!0)])]))}}),No=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},Po=No(Mo,[[`__scopeId`,`data-v-710ffa12`]]),Fo={class:`recorder-controls`},Io={class:`controls-row`},Lo=[`disabled`],Ro={key:2,class:`btn btn-saving`,disabled:``},zo={key:0,class:`recording-info`},Bo={class:`rec-time`},Vo={class:`rec-frames`},Ho={key:1,class:`recorder-error`},Uo=No(Nn({__name:`RecorderControls`,props:{state:{},elapsed:{},frameCount:{},isLive:{type:Boolean},error:{}},emits:[`start`,`stop`],setup(e,{emit:t}){let n=t;return(t,r)=>(J(),Y(`div`,Fo,[X(`div`,Io,[e.state===`idle`?(J(),Y(`button`,{key:0,class:`btn btn-record`,disabled:!e.isLive,onClick:r[0]||=e=>n(`start`),title:`Start recording`},[...r[2]||=[X(`span`,{class:`btn-icon`},`⏺`,-1),Ni(` Record `,-1)]],8,Lo)):Q(``,!0),e.state===`recording`?(J(),Y(`button`,{key:1,class:`btn btn-stop`,onClick:r[1]||=e=>n(`stop`),title:`Stop and save recording`},[...r[3]||=[X(`span`,{class:`btn-icon`},`⏹`,-1),Ni(` Stop & Save `,-1)]])):Q(``,!0),e.state===`saving`?(J(),Y(`button`,Ro,[...r[4]||=[X(`span`,{class:`spinner`},null,-1),Ni(` Saving… `,-1)]])):Q(``,!0)]),e.state===`recording`?(J(),Y(`div`,zo,[r[5]||=X(`span`,{class:`rec-dot`},null,-1),X(`span`,Bo,A(e.elapsed),1),X(`span`,Vo,A(e.frameCount)+` frames`,1)])):Q(``,!0),e.error?(J(),Y(`div`,Ho,` ⚠ `+A(e.error),1)):Q(``,!0)]))}}),[[`__scopeId`,`data-v-016e022a`]]),Wo={class:`playback-panel`},Go={key:0,class:`player-container`},Ko={class:`playback-controls`},qo={class:`playback-time`},Jo={class:`progress-bar`},Yo={key:1,class:`list-status`},Xo={key:2,class:`list-empty`},Zo={key:3,class:`recording-list`},Qo={class:`rec-info`},$o={class:`rec-name`},es={class:`rec-meta`},ts={class:`rec-actions`},ns=[`onClick`],rs=[`onClick`],is=No(Nn({__name:`PlaybackPanel`,setup(e,{expose:t}){let n=B([]),r=B(!1),i=B(null),a=B(null),o=B(0),s=B(`00:00.00`),c=B(`idle`),l=new Map,u=0,d=0,f=0,p=0,m=0;async function h(e){let t=l.get(e.id);if(t)return t;let n=await go(e.data);return l.set(e.id,n),n}async function g(){r.value=!0;try{n.value=await vo()}finally{r.value=!1}}async function _(e){i.value===e&&T(),l.delete(e),await yo(e),n.value=n.value.filter(t=>t.id!==e)}function v(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),r=t%60;return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`}function y(e){let t=e.data.size;return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KB`:`${(t/1048576).toFixed(1)} MB`}function b(e){let t=Math.floor(Math.max(0,e)/1e3),n=Math.floor(t/60),r=t%60,i=Math.floor(Math.max(0,e)%1e3/10);return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}.${String(i).padStart(2,`0`)}`}function x(){let e=a.value;if(!e)return null;let t=e.getContext(`2d`);return t?{canvas:e,ctx:t}:null}function S(e,t,n,r,i){if(c.value!==`playing`)return;if(n>=e.length){T();return}u=n;let a=e[n],l=performance.now()-d-f;o.value=Math.min(l/t*100,100),s.value=b(l);let p=new Image,h=URL.createObjectURL(a.blob);p.onload=()=>{URL.revokeObjectURL(h),(r.width!==p.width||r.height!==p.height)&&(r.width=p.width,r.height=p.height),i.drawImage(p,0,0);let o=n+1;if(oS(e,t,o,r,i),Math.max(n,16))}else m=window.setTimeout(()=>T(),500)},p.src=h}let C=[],w=0;async function ee(e){T();let t=x();t&&(C=await h(e),w=e.duration,i.value=e.id,c.value=`playing`,u=0,f=0,d=performance.now(),S(C,w,0,t.canvas,t.ctx))}function te(){c.value===`playing`&&(c.value=`paused`,p=performance.now(),m&&=(clearTimeout(m),0))}function ne(){if(c.value!==`paused`||!i.value)return;let e=x();e&&(f+=performance.now()-p,c.value=`playing`,S(C,w,u,e.canvas,e.ctx))}function T(){c.value=`idle`,i.value=null,o.value=0,s.value=`00:00.00`,u=0,C=[],w=0,m&&=(clearTimeout(m),0);let e=a.value;e&&e.getContext(`2d`)?.clearRect(0,0,e.width,e.height)}return Qn(()=>{T()}),g(),t({loadRecordings:g}),(e,t)=>(J(),Y(`div`,Wo,[t[0]||=X(`h2`,{class:`section-title`},`Saved Recordings`,-1),i.value?(J(),Y(`div`,Go,[X(`canvas`,{ref_key:`canvasRef`,ref:a,class:`playback-canvas`},null,512),X(`div`,Ko,[c.value===`playing`?(J(),Y(`button`,{key:0,class:`btn btn-sm btn-pause`,onClick:te},` ⏸ Pause `)):Q(``,!0),c.value===`paused`?(J(),Y(`button`,{key:1,class:`btn btn-sm btn-play`,onClick:ne},` ▶ Resume `)):Q(``,!0),X(`button`,{class:`btn btn-sm btn-stop-play`,onClick:T},` ⏹ Stop `),X(`span`,qo,A(s.value),1)]),X(`div`,Jo,[X(`div`,{class:`progress-fill`,style:ue({width:o.value+`%`})},null,4)])])):Q(``,!0),r.value?(J(),Y(`div`,Yo,`Loading…`)):n.value.length===0?(J(),Y(`div`,Xo,` No recordings yet. Start a stream and press Record. `)):(J(),Y(`ul`,Zo,[(J(!0),Y(gi,null,ir(n.value,e=>(J(),Y(`li`,{key:e.id,class:k([`recording-item`,{active:e.id===i.value}])},[X(`div`,Qo,[X(`span`,$o,A(e.name),1),X(`span`,es,A(e.createdAt.toLocaleString())+` · `+A(v(e.duration))+` · `+A(e.frameCount)+` frames · `+A(y(e)),1)]),X(`div`,ts,[e.id===i.value?Q(``,!0):(J(),Y(`button`,{key:0,class:`btn btn-sm btn-play`,onClick:t=>ee(e)},` ▶ Play `,8,ns)),X(`button`,{class:`btn btn-sm btn-delete`,onClick:t=>_(e.id)},` 🗑 `,8,rs)])],2))),128))]))]))}}),[[`__scopeId`,`data-v-271eb04c`]]),as=`mjpeg-viewer-config`,os={mjpegUrl:`http://localhost:8080/stream`};function ss(){try{let e=localStorage.getItem(as);if(e)return{...os,...JSON.parse(e)}}catch{}return{...os}}function cs(e){localStorage.setItem(as,JSON.stringify(e))}var ls=ss();function us(e){return Object.assign(ls,e),cs(ls),ls}var ds={class:`config-panel`},fs={class:`config-row`},ps={class:`input-group`},ms={key:0,class:`save-hint`},hs=No(Nn({__name:`ConfigPanel`,emits:[`apply`],setup(e,{emit:t}){let n=B(ls.mjpegUrl),r=B(!1);function i(){us({mjpegUrl:n.value.trim()}),r.value=!0,setTimeout(()=>{r.value=!1},2e3)}let a=t;function o(){i(),a(`apply`,n.value.trim())}return(e,t)=>(J(),Y(`div`,ds,[t[2]||=X(`h2`,{class:`section-title`},`Stream Configuration`,-1),X(`div`,fs,[t[1]||=X(`label`,{class:`config-label`,for:`mjpeg-url`},`MJPEG Stream URL`,-1),X(`div`,ps,[yn(X(`input`,{id:`mjpeg-url`,"onUpdate:modelValue":t[0]||=e=>n.value=e,type:`text`,class:`config-input`,placeholder:`http://example.com:8080/stream`,onKeyup:to(o,[`enter`])},null,544),[[$a,n.value]]),X(`button`,{class:`btn btn-apply`,onClick:o},` Apply & Connect `)]),r.value?(J(),Y(`span`,ms,`✓ Saved`)):Q(``,!0)])]))}}),[[`__scopeId`,`data-v-1bf23d59`]]),gs={class:`app-shell`},_s={class:`app-header`},vs={key:0,class:`status-badge live`},ys={key:1,class:`status-badge idle`},bs={class:`app-main`},xs={class:`tab-bar`},Ss={class:`tab-content`},Cs={class:`tab-content`};ao(Nn({__name:`App`,setup(e){let{streamUrl:t,isLive:n,error:r,start:i,stop:a}=co(),{recorderState:o,elapsedMs:s,frameCount:c,recorderError:l,startRecording:u,stopRecording:d,formatElapsed:f}=wo(),p=B(null),m=B(`live`);function h(e){i(e)}function g(){t.value&&u(t.value)}function _(){d().then(e=>{p.value?.loadRecordings(),e&&(m.value=`playback`)})}let v=aa(()=>f(s.value));return Qn(()=>{a()}),(e,i)=>(J(),Y(`div`,gs,[X(`header`,_s,[i[2]||=X(`h1`,{class:`app-title`},`MJPEG Stream Viewer`,-1),Vt(n)?(J(),Y(`span`,vs,`● Stream Active`)):(J(),Y(`span`,ys,`○ Disconnected`))]),X(`main`,bs,[Z(hs,{onApply:h}),X(`div`,xs,[X(`button`,{class:k([`tab-btn`,{active:m.value===`live`}]),onClick:i[0]||=e=>m.value=`live`},` Live View `,2),X(`button`,{class:k([`tab-btn`,{active:m.value===`playback`}]),onClick:i[1]||=e=>m.value=`playback`},` Playback `,2)]),yn(X(`section`,Ss,[Z(Po,{"stream-url":Vt(t),"is-live":Vt(n),error:Vt(r)},null,8,[`stream-url`,`is-live`,`error`]),Z(Uo,{state:Vt(o),elapsed:v.value,"frame-count":Vt(c),"is-live":Vt(n),error:Vt(l),onStart:g,onStop:_},null,8,[`state`,`elapsed`,`frame-count`,`is-live`,`error`])],512),[[ya,m.value===`live`]]),yn(X(`section`,Cs,[Z(is,{ref_key:`playbackRef`,ref:p},null,512)],512),[[ya,m.value===`playback`]])])]))}})).mount(`#app`); \ No newline at end of file diff --git a/dist/assets/index-BTgh_FTp.css b/dist/assets/index-BTgh_FTp.css deleted file mode 100644 index 6c52adb..0000000 --- a/dist/assets/index-BTgh_FTp.css +++ /dev/null @@ -1 +0,0 @@ -.live-view[data-v-710ffa12]{width:100%}.video-container[data-v-710ffa12]{aspect-ratio:16/9;background:#1a1a2e;border-radius:8px;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.video-frame[data-v-710ffa12]{object-fit:contain;width:100%;height:100%}.video-placeholder[data-v-710ffa12]{color:#666;text-align:center;padding:2rem;font-size:1.1rem}.error-text[data-v-710ffa12]{color:#e74c3c}.live-badge[data-v-710ffa12]{color:#f44;letter-spacing:.1em;background:#000000a6;border-radius:4px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;font-weight:700;display:flex;position:absolute;top:12px;left:12px}.live-dot[data-v-710ffa12]{background:#f44;border-radius:50%;width:8px;height:8px;animation:1.5s ease-in-out infinite pulse-710ffa12}@keyframes pulse-710ffa12{0%,to{opacity:1}50%{opacity:.3}}.recorder-controls[data-v-016e022a]{flex-direction:column;align-items:center;gap:10px;display:flex}.controls-row[data-v-016e022a]{gap:10px;display:flex}.btn[data-v-016e022a]{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:6px;padding:10px 20px;font-size:.95rem;font-weight:600;transition:opacity .2s,transform .15s;display:inline-flex}.btn[data-v-016e022a]:active:not(:disabled){transform:scale(.97)}.btn[data-v-016e022a]:disabled{opacity:.45;cursor:not-allowed}.btn-icon[data-v-016e022a]{font-size:1.1rem}.btn-record[data-v-016e022a]{color:#fff;background:#e74c3c}.btn-record[data-v-016e022a]:hover:not(:disabled){background:#c0392b}.btn-stop[data-v-016e022a]{color:#fff;background:#e74c3c}.btn-stop[data-v-016e022a]:hover{background:#c0392b}.btn-saving[data-v-016e022a]{color:#fff;background:#666}.spinner[data-v-016e022a]{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite spin-016e022a;display:inline-block}@keyframes spin-016e022a{to{transform:rotate(360deg)}}.recording-info[data-v-016e022a]{color:#e74c3c;font-variant-numeric:tabular-nums;align-items:center;gap:10px;font-size:.9rem;display:flex}.rec-dot[data-v-016e022a]{background:#e74c3c;border-radius:50%;width:10px;height:10px;animation:.8s ease-in-out infinite pulse-016e022a}@keyframes pulse-016e022a{0%,to{opacity:1}50%{opacity:.3}}.rec-time[data-v-016e022a]{font-weight:700}.rec-frames[data-v-016e022a]{color:#999}.recorder-error[data-v-016e022a]{color:#f39c12;word-break:break-all;background:#f39c121a;border-radius:4px;max-width:100%;padding:6px 12px;font-size:.85rem}.playback-panel[data-v-271eb04c]{width:100%}.section-title[data-v-271eb04c]{color:#ddd;margin:0 0 16px;font-size:1.2rem;font-weight:600}.player-container[data-v-271eb04c]{background:#1a1a2e;border-radius:8px;margin-bottom:20px;overflow:hidden}.playback-canvas[data-v-271eb04c]{object-fit:contain;width:100%;max-height:480px;display:block}.playback-controls[data-v-271eb04c]{align-items:center;gap:10px;padding:10px 14px;display:flex}.playback-time[data-v-271eb04c]{font-variant-numeric:tabular-nums;color:#aaa;margin-left:auto;font-size:.9rem}.progress-bar[data-v-271eb04c]{background:#333;height:3px}.progress-fill[data-v-271eb04c]{background:#3498db;height:100%;transition:width .1s linear}.btn[data-v-271eb04c]{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:4px;padding:8px 16px;font-size:.9rem;font-weight:600;transition:opacity .2s,transform .15s;display:inline-flex}.btn[data-v-271eb04c]:active{transform:scale(.97)}.btn-sm[data-v-271eb04c]{padding:5px 12px;font-size:.82rem}.btn-play[data-v-271eb04c]{color:#fff;background:#27ae60}.btn-play[data-v-271eb04c]:hover{background:#219a52}.btn-pause[data-v-271eb04c]{color:#fff;background:#f39c12}.btn-pause[data-v-271eb04c]:hover{background:#d68910}.btn-stop-play[data-v-271eb04c]{color:#fff;background:#555}.btn-stop-play[data-v-271eb04c]:hover{background:#444}.btn-delete[data-v-271eb04c]{color:#999;background:0 0;padding:4px 8px;font-size:1rem}.btn-delete[data-v-271eb04c]:hover{color:#e74c3c;background:#e74c3c1a}.list-status[data-v-271eb04c],.list-empty[data-v-271eb04c]{color:#777;text-align:center;padding:16px 0;font-size:.95rem}.recording-list[data-v-271eb04c]{margin:0;padding:0;list-style:none}.recording-item[data-v-271eb04c]{background:#141428;border:1px solid #2a2a3e;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:12px 14px;display:flex}.recording-item.active[data-v-271eb04c]{border-color:#3498db}.rec-info[data-v-271eb04c]{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.rec-name[data-v-271eb04c]{color:#ddd;white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:600;overflow:hidden}.rec-meta[data-v-271eb04c]{color:#777;font-size:.8rem}.rec-actions[data-v-271eb04c]{flex-shrink:0;gap:6px;display:flex}.config-panel[data-v-1bf23d59]{width:100%}.section-title[data-v-1bf23d59]{color:#ddd;margin:0 0 16px;font-size:1.2rem;font-weight:600}.config-row[data-v-1bf23d59]{flex-direction:column;gap:8px;display:flex}.config-label[data-v-1bf23d59]{color:#aaa;font-size:.9rem;font-weight:500}.input-group[data-v-1bf23d59]{gap:8px;display:flex}.config-input[data-v-1bf23d59]{color:#ddd;background:#1a1a2e;border:1px solid #333;border-radius:6px;outline:none;flex:1;padding:10px 14px;font-family:Courier New,monospace;font-size:.9rem;transition:border-color .2s}.config-input[data-v-1bf23d59]:focus{border-color:#3498db}.btn[data-v-1bf23d59]{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:10px 20px;font-size:.9rem;font-weight:600;transition:opacity .2s,transform .15s}.btn[data-v-1bf23d59]:active{transform:scale(.97)}.btn-apply[data-v-1bf23d59]{color:#fff;background:#3498db}.btn-apply[data-v-1bf23d59]:hover{background:#2980b9}.save-hint[data-v-1bf23d59]{color:#27ae60;font-size:.8rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#e0e0e0;background:#0e0e1a;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.app-shell{max-width:900px;margin:0 auto;padding:24px 20px 40px}.app-header{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:28px;display:flex}.app-title{color:#fff;font-size:1.6rem;font-weight:700}.status-badge{border-radius:12px;padding:3px 10px;font-size:.8rem;font-weight:600}.status-badge.live{color:#27ae60;background:#27ae6026}.status-badge.idle{color:#888;background:#96969626}.app-main{flex-direction:column;gap:24px;display:flex}.tab-bar{border-bottom:2px solid #1a1a2e;gap:0;display:flex}.tab-btn{color:#777;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:10px 24px;font-size:.95rem;font-weight:600;transition:color .2s,border-color .2s}.tab-btn:hover{color:#bbb}.tab-btn.active{color:#3498db;border-bottom-color:#3498db}.tab-content{animation:.2s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}} diff --git a/dist/assets/index-CHMLXxlv.js b/dist/assets/index-CHMLXxlv.js new file mode 100644 index 0000000..2f2c156 --- /dev/null +++ b/dist/assets/index-CHMLXxlv.js @@ -0,0 +1 @@ +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var t={},n=[],r=()=>{},i=()=>!1,a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),o=e=>e.startsWith(`onUpdate:`),s=Object.assign,c=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},l=Object.prototype.hasOwnProperty,u=(e,t)=>l.call(e,t),d=Array.isArray,f=e=>x(e)===`[object Map]`,p=e=>x(e)===`[object Set]`,m=e=>x(e)===`[object Date]`,h=e=>typeof e==`function`,g=e=>typeof e==`string`,_=e=>typeof e==`symbol`,v=e=>typeof e==`object`&&!!e,y=e=>(v(e)||h(e))&&h(e.then)&&h(e.catch),b=Object.prototype.toString,x=e=>b.call(e),S=e=>x(e).slice(8,-1),C=e=>x(e)===`[object Object]`,w=e=>g(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,ee=e(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),te=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ne=/-\w/g,T=te(e=>e.replace(ne,e=>e.slice(1).toUpperCase())),re=/\B([A-Z])/g,E=te(e=>e.replace(re,`-$1`).toLowerCase()),ie=te(e=>e.charAt(0).toUpperCase()+e.slice(1)),ae=te(e=>e?`on${ie(e)}`:``),D=(e,t)=>!Object.is(e,t),oe=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},se=e=>{let t=parseFloat(e);return isNaN(t)?e:t},ce,le=()=>ce||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function ue(e){if(d(e)){let t={};for(let n=0;n{if(e){let n=e.split(fe);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function k(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;n!!(e&&e.__v_isRef===!0),A=e=>g(e)?e:e==null?``:d(e)||v(e)&&(e.toString===b||!h(e.toString))?be(e)?A(e.value):JSON.stringify(e,xe,2):String(e),xe=(e,t)=>be(t)?xe(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Se(t,r)+` =>`]=n,e),{})}:p(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Se(e))}:_(t)?Se(t):v(t)&&!d(t)&&!C(t)?String(t):t,Se=(e,t=``)=>_(e)?`Symbol(${e.description??t})`:e,j,Ce=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&j&&(j.active?(this.parent=j,this.index=(j.scopes||(j.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e0&&--this._on===0){if(j===this)j=this.prevScope;else{let e=j;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(ke){let e=ke;for(ke=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Oe;){let t=Oe;for(Oe=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function Ne(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Pe(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),Le(r),Re(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function Fe(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ie(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ie(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ue)||(e.globalVersion=Ue,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Fe(e))))return;e.flags|=2;let t=e.dep,n=M,r=N;M=e,N=!0;try{Ne(e);let n=e.fn(e._value);(t.version===0||D(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{M=n,N=r,Pe(e),e.flags&=-3}}function Le(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)Le(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Re(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var N=!0,ze=[];function Be(){ze.push(N),N=!1}function Ve(){let e=ze.pop();N=e===void 0||e}function He(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=M;M=void 0;try{t()}finally{M=e}}}var Ue=0,We=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},Ge=class{constructor(e){this.computed=e,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(e){if(!M||!N||M===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==M)t=this.activeLink=new We(M,this),M.deps?(t.prevDep=M.depsTail,M.depsTail.nextDep=t,M.depsTail=t):M.deps=M.depsTail=t,Ke(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=M.depsTail,t.nextDep=void 0,M.depsTail.nextDep=t,M.depsTail=t,M.deps===t&&(M.deps=e)}return t}trigger(e){this.version++,Ue++,this.notify(e)}notify(e){je();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Me()}}};function Ke(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)Ke(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var qe=new WeakMap,Je=Symbol(``),Ye=Symbol(``),Xe=Symbol(``);function P(e,t,n){if(N&&M){let t=qe.get(e);t||qe.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new Ge),r.map=t,r.key=n),r.track()}}function Ze(e,t,n,r,i,a){let o=qe.get(e);if(!o){Ue++;return}let s=e=>{e&&e.trigger()};if(je(),t===`clear`)o.forEach(s);else{let i=d(e),a=i&&w(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===Xe||!_(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(Xe)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(Je)),f(e)&&s(o.get(Ye)));break;case`delete`:i||(s(o.get(Je)),f(e)&&s(o.get(Ye)));break;case`set`:f(e)&&s(o.get(Je))}}Me()}function Qe(e){let t=L(e);return t===e?t:(P(t,`iterate`,Xe),I(e)?t:t.map(Rt))}function $e(e){return P(e=L(e),`iterate`,Xe),e}function F(e,t){return Ft(e)?zt(Pt(e)?Rt(t):t):Rt(t)}var et={__proto__:null,[Symbol.iterator](){return tt(this,Symbol.iterator,e=>F(this,e))},concat(...e){return Qe(this).concat(...e.map(e=>d(e)?Qe(e):e))},entries(){return tt(this,`entries`,e=>(e[1]=F(this,e[1]),e))},every(e,t){return rt(this,`every`,e,t,void 0,arguments)},filter(e,t){return rt(this,`filter`,e,t,e=>e.map(e=>F(this,e)),arguments)},find(e,t){return rt(this,`find`,e,t,e=>F(this,e),arguments)},findIndex(e,t){return rt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return rt(this,`findLast`,e,t,e=>F(this,e),arguments)},findLastIndex(e,t){return rt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return rt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return at(this,`includes`,e)},indexOf(...e){return at(this,`indexOf`,e)},join(e){return Qe(this).join(e)},lastIndexOf(...e){return at(this,`lastIndexOf`,e)},map(e,t){return rt(this,`map`,e,t,void 0,arguments)},pop(){return ot(this,`pop`)},push(...e){return ot(this,`push`,e)},reduce(e,...t){return it(this,`reduce`,e,t)},reduceRight(e,...t){return it(this,`reduceRight`,e,t)},shift(){return ot(this,`shift`)},some(e,t){return rt(this,`some`,e,t,void 0,arguments)},splice(...e){return ot(this,`splice`,e)},toReversed(){return Qe(this).toReversed()},toSorted(e){return Qe(this).toSorted(e)},toSpliced(...e){return Qe(this).toSpliced(...e)},unshift(...e){return ot(this,`unshift`,e)},values(){return tt(this,`values`,e=>F(this,e))}};function tt(e,t,n){let r=$e(e),i=r[t]();return r!==e&&!I(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var nt=Array.prototype;function rt(e,t,n,r,i,a){let o=$e(e),s=o!==e&&!I(e),c=o[t];if(c!==nt[t]){let t=c.apply(e,a);return s?Rt(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,F(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function it(e,t,n,r){let i=$e(e),a=i!==e&&!I(e),o=n,s=!1;i!==e&&(a?(s=r.length===0,o=function(t,r,i){return s&&(s=!1,t=F(e,t)),n.call(this,t,F(e,r),i,e)}):n.length>3&&(o=function(t,r,i){return n.call(this,t,r,i,e)}));let c=i[t](o,...r);return s?F(e,c):c}function at(e,t,n){let r=L(e);P(r,`iterate`,Xe);let i=r[t](...n);return(i===-1||i===!1)&&It(n[0])?(n[0]=L(n[0]),r[t](...n)):i}function ot(e,t,n=[]){Be(),je();let r=L(e)[t].apply(e,n);return Me(),Ve(),r}var st=e(`__proto__,__v_isRef,__isVue`),ct=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(_));function lt(e){_(e)||(e=String(e));let t=L(this);return P(t,`has`,e),t.hasOwnProperty(e)}var ut=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?Ot:Dt:i?Et:Tt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=d(e);if(!r){let e;if(a&&(e=et[t]))return e;if(t===`hasOwnProperty`)return lt}let o=Reflect.get(e,t,R(e)?e:n);if((_(t)?ct.has(t):st(t))||(r||P(e,`get`,t),i))return o;if(R(o)){let e=a&&w(t)?o:o.value;return r&&v(e)?Mt(e):e}return v(o)?r?Mt(o):At(o):o}},dt=class extends ut{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=d(e)&&w(t);if(!this._isShallow){let e=Ft(i);if(!I(n)&&!Ft(n)&&(i=L(i),n=L(n)),!a&&R(i)&&!R(n))return e||(i.value=n),!0}let o=a?Number(t)e,_t=e=>Reflect.getPrototypeOf(e);function vt(e,t,n){return function(...r){let i=this.__v_raw,a=L(i),o=f(a),c=e===`entries`||e===Symbol.iterator&&o,l=e===`keys`&&o,u=i[e](...r),d=n?gt:t?zt:Rt;return!t&&P(a,`iterate`,l?Ye:Je),s(Object.create(u),{next(){let{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[d(e[0]),d(e[1])]:d(e),done:t}}})}}function yt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function bt(e,t){let n={get(n){let r=this.__v_raw,i=L(r),a=L(n);e||(D(n,a)&&P(i,`get`,n),P(i,`get`,a));let{has:o}=_t(i),s=t?gt:e?zt:Rt;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&P(L(t),`iterate`,Je),t.size},has(t){let n=this.__v_raw,r=L(n),i=L(t);return e||(D(t,i)&&P(r,`has`,t),P(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=L(a),s=t?gt:e?zt:Rt;return!e&&P(o,`iterate`,Je),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return s(n,e?{add:yt(`add`),set:yt(`set`),delete:yt(`delete`),clear:yt(`clear`)}:{add(e){let n=L(this),r=_t(n),i=L(e),a=!t&&!I(e)&&!Ft(e)?i:e;return r.has.call(n,a)||D(e,a)&&r.has.call(n,e)||D(i,a)&&r.has.call(n,i)||(n.add(a),Ze(n,`add`,a,a)),this},set(e,n){!t&&!I(n)&&!Ft(n)&&(n=L(n));let r=L(this),{has:i,get:a}=_t(r),o=i.call(r,e);o||=(e=L(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?D(n,s)&&Ze(r,`set`,e,n,s):Ze(r,`add`,e,n),this},delete(e){let t=L(this),{has:n,get:r}=_t(t),i=n.call(t,e);i||=(e=L(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&Ze(t,`delete`,e,void 0,a),o},clear(){let e=L(this),t=e.size!==0,n=e.clear();return t&&Ze(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=vt(r,e,t)}),n}function xt(e,t){let n=bt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(u(n,r)&&r in t?n:t,r,i)}var St={get:xt(!1,!1)},Ct={get:xt(!1,!0)},wt={get:xt(!0,!1)},Tt=new WeakMap,Et=new WeakMap,Dt=new WeakMap,Ot=new WeakMap;function kt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function At(e){return Ft(e)?e:Nt(e,!1,pt,St,Tt)}function jt(e){return Nt(e,!1,ht,Ct,Et)}function Mt(e){return Nt(e,!0,mt,wt,Dt)}function Nt(e,t,n,r,i){if(!v(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let a=i.get(e);if(a)return a;let o=kt(S(e));if(o===0)return e;let s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function Pt(e){return Ft(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ft(e){return!!(e&&e.__v_isReadonly)}function I(e){return!!(e&&e.__v_isShallow)}function It(e){return e?!!e.__v_raw:!1}function L(e){let t=e&&e.__v_raw;return t?L(t):e}function Lt(e){return!u(e,`__v_skip`)&&Object.isExtensible(e)&&O(e,`__v_skip`,!0),e}var Rt=e=>v(e)?At(e):e,zt=e=>v(e)?Mt(e):e;function R(e){return e?e.__v_isRef===!0:!1}function z(e){return Bt(e,!1)}function Bt(e,t){return R(e)?e:new Vt(e,t)}var Vt=class{constructor(e,t){this.dep=new Ge,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:L(e),this._value=t?e:Rt(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||I(e)||Ft(e);e=n?e:L(e),D(e,t)&&(this._rawValue=e,this._value=n?e:Rt(e),this.dep.trigger())}};function Ht(e){return R(e)?e.value:e}var Ut={get:(e,t,n)=>t===`__v_raw`?e:Ht(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return R(i)&&!R(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Wt(e){return Pt(e)?e:new Proxy(e,Ut)}var Gt=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Ge(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ue-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&M!==this)return Ae(this,!0),!0}get value(){let e=this.dep.track();return Ie(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Kt(e,t,n=!1){let r,i;return h(e)?r=e:(r=e.get,i=e.set),new Gt(r,i,n)}var qt={},Jt=new WeakMap,Yt=void 0;function Xt(e,t=!1,n=Yt){if(n){let t=Jt.get(n);t||Jt.set(n,t=[]),t.push(e)}}function Zt(e,n,i=t){let{immediate:a,deep:o,once:s,scheduler:l,augmentJob:u,call:f}=i,p=e=>o?e:I(e)||o===!1||o===0?Qt(e,1):Qt(e),m,g,_,v,y=!1,b=!1;if(R(e)?(g=()=>e.value,y=I(e)):Pt(e)?(g=()=>p(e),y=!0):d(e)?(b=!0,y=e.some(e=>Pt(e)||I(e)),g=()=>e.map(e=>{if(R(e))return e.value;if(Pt(e))return p(e);if(h(e))return f?f(e,2):e()})):g=h(e)?n?f?()=>f(e,2):e:()=>{if(_){Be();try{_()}finally{Ve()}}let t=Yt;Yt=m;try{return f?f(e,3,[v]):e(v)}finally{Yt=t}}:r,n&&o){let e=g,t=o===!0?1/0:o;g=()=>Qt(e(),t)}let x=we(),S=()=>{m.stop(),x&&x.active&&c(x.effects,m)};if(s&&n){let e=n;n=(...t)=>{let n=e(...t);return S(),n}}let C=b?Array(e.length).fill(qt):qt,w=e=>{if(!(!(m.flags&1)||!m.dirty&&!e))if(n){let t=m.run();if(e||o||y||(b?t.some((e,t)=>D(e,C[t])):D(t,C))){_&&_();let e=Yt;Yt=m;try{let e=[t,C===qt?void 0:b&&C[0]===qt?[]:C,v];C=t,f?f(n,3,e):n(...e)}finally{Yt=e}}}else m.run()};return u&&u(w),m=new Ee(g),m.scheduler=l?()=>l(w,!1):w,v=e=>Xt(e,!1,m),_=m.onStop=()=>{let e=Jt.get(m);if(e){if(f)f(e,4);else for(let t of e)t();Jt.delete(m)}},n?a?w(!0):C=m.run():l?l(w.bind(null,!0),!0):m.run(),S.pause=m.pause.bind(m),S.resume=m.resume.bind(m),S.stop=S,S}function Qt(e,t=1/0,n){if(t<=0||!v(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,R(e))Qt(e.value,t,n);else if(d(e))for(let r=0;r{Qt(e,t,n)});else if(C(e)){for(let r in e)Qt(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Qt(e[r],t,n)}return e}function $t(e,t,n,r){try{return r?e(...r):e()}catch(e){en(e,t,n)}}function B(e,t,n,r){if(h(e)){let i=$t(e,t,n,r);return i&&y(i)&&i.catch(e=>{en(e,t,n)}),i}if(d(e)){let i=[];for(let a=0;a>>1,i=V[r],a=hn(i);a=hn(n)?V.push(e):V.splice(ln(t),0,e),e.flags|=1,dn()}}function dn(){sn||=on.then(gn)}function fn(e){d(e)?nn.push(...e):rn&&e.id===-1?rn.splice(an+1,0,e):e.flags&1||(nn.push(e),e.flags|=1),dn()}function pn(e,t,n=H+1){for(;nhn(e)-hn(t));if(nn.length=0,rn){rn.push(...e);return}for(rn=e,an=0;ane.id==null?e.flags&2?-1:1/0:e.id;function gn(e){try{for(H=0;H{r._d&&Ci(-1);let i=vn(t),a=bi.length,o;try{o=e(...n)}finally{for(let e=bi.length;e>a;e--)xi();vn(i),r._d&&Ci(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function bn(e,n){if(U===null)return e;let r=na(U),i=e.dirs||=[];for(let e=0;e1)return n&&h(t)?t.call(r&&r.proxy):t}}var wn=Symbol.for(`v-scx`),Tn=()=>Cn(wn);function En(e,t,n){return Dn(e,t,n)}function Dn(e,n,i=t){let{immediate:a,deep:o,flush:c,once:l}=i,u=s({},i),d=n&&a||!n&&c!==`post`,f;if(qi){if(c===`sync`){let e=Tn();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=r,e.resume=r,e.pause=r,e}}let p=$;u.call=(e,t,n)=>B(e,p,t,n);let m=!1;c===`post`?u.scheduler=e=>{G(e,p&&p.suspense)}:c!==`sync`&&(m=!0,u.scheduler=(e,t)=>{t?e():un(e)}),u.augmentJob=e=>{n&&(e.flags|=4),m&&(e.flags|=2,p&&(e.id=p.uid,e.i=p))};let h=Zt(e,n,u);return qi&&(f?f.push(h):d&&h()),h}function On(e,t,n){let r=this.proxy,i=g(e)?e.includes(`.`)?kn(r,e):()=>r[e]:e.bind(r,r),a;h(t)?a=t:(a=t.handler,n=t);let o=Wi(this),s=Dn(i,a.bind(r),n);return o(),s}function kn(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;ee.__isTeleport,Mn=Symbol(`_leaveCb`);function Nn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Nn(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 Pn(e,t){return h(e)?s({name:e.name},t,{setup:e}):e}function Fn(e){e.ids=[e.ids[0]+e.ids[2]+++`-`,0,0]}function In(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}var Ln=new WeakMap;function Rn(e,n,r,a,o=!1){if(d(e)){e.forEach((e,t)=>Rn(e,n&&(d(n)?n[t]:n),r,a,o));return}if(Bn(a)&&!o){a.shapeFlag&512&&a.type.__asyncResolved&&a.component.subTree.component&&Rn(e,n,r,a.component.subTree);return}let s=a.shapeFlag&4?na(a.component):a.el,l=o?null:s,{i:f,r:p}=e,m=n&&n.r,_=f.refs===t?f.refs={}:f.refs,v=f.setupState,y=L(v),b=v===t?i:e=>!In(_,e)&&u(y,e),x=(e,t)=>!(t&&In(_,t));if(m!=null&&m!==p){if(zn(n),g(m))_[m]=null,b(m)&&(v[m]=null);else if(R(m)){let e=n;x(m,e.k)&&(m.value=null),e.k&&(_[e.k]=null)}}if(h(p))$t(p,f,12,[l,_]);else{let t=g(p),n=R(p);if(t||n){let i=()=>{if(e.f){let n=t?b(p)?v[p]:_[p]:x(p)||!e.k?p.value:_[e.k];if(o)d(n)&&c(n,s);else if(d(n))n.includes(s)||n.push(s);else if(t)_[p]=[s],b(p)&&(v[p]=_[p]);else{let t=[s];x(p,e.k)&&(p.value=t),e.k&&(_[e.k]=t)}}else t?(_[p]=l,b(p)&&(v[p]=l)):n&&(x(p,e.k)&&(p.value=l),e.k&&(_[e.k]=l))};if(l){let t=()=>{i(),Ln.delete(e)};t.id=-1,Ln.set(e,t),G(t,r)}else zn(e),i()}}}function zn(e){let t=Ln.get(e);t&&(t.flags|=8,Ln.delete(e))}le().requestIdleCallback,le().cancelIdleCallback;var Bn=e=>!!e.type.__asyncLoader,Vn=e=>e.type.__isKeepAlive;function Hn(e,t){Wn(e,`a`,t)}function Un(e,t){Wn(e,`da`,t)}function Wn(e,t,n=$){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Kn(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Vn(e.parent.vnode)&&Gn(r,t,n,e),e=e.parent}}function Gn(e,t,n,r){let i=Kn(t,e,r,!0);$n(()=>{c(r[t],i)},n)}function Kn(e,t,n=$,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{Be();let i=Wi(n),a=B(t,n,e,r);return i(),Ve(),a};return r?i.unshift(a):i.push(a),a}}var qn=e=>(t,n=$)=>{(!qi||e===`sp`)&&Kn(e,(...e)=>t(...e),n)},Jn=qn(`bm`),Yn=qn(`m`),Xn=qn(`bu`),Zn=qn(`u`),Qn=qn(`bum`),$n=qn(`um`),er=qn(`sp`),tr=qn(`rtg`),nr=qn(`rtc`);function rr(e,t=$){Kn(`ec`,e,t)}var ir=Symbol.for(`v-ndc`),ar=e=>e?Ki(e)?na(e):ar(e.parent):null,or=s(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=>ar(e.parent),$root:e=>ar(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>hr(e),$forceUpdate:e=>e.f||=()=>{un(e.update)},$nextTick:e=>e.n||=cn.bind(e.proxy),$watch:e=>On.bind(e)}),sr=(e,n)=>e!==t&&!e.__isScriptSetup&&u(e,n),cr={get({_:e},n){if(n===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(n[0]!==`$`){let e=s[n];if(e!==void 0)switch(e){case 1:return i[n];case 2:return a[n];case 4:return r[n];case 3:return o[n]}else if(sr(i,n))return s[n]=1,i[n];else if(a!==t&&u(a,n))return s[n]=2,a[n];else if(u(o,n))return s[n]=3,o[n];else if(r!==t&&u(r,n))return s[n]=4,r[n];else ur&&(s[n]=0)}let d=or[n],f,p;if(d)return n===`$attrs`&&P(e.attrs,`get`,``),d(e);if((f=c.__cssModules)&&(f=f[n]))return f;if(r!==t&&u(r,n))return s[n]=4,r[n];if(p=l.config.globalProperties,u(p,n))return p[n]},set({_:e},n,r){let{data:i,setupState:a,ctx:o}=e;return sr(a,n)?(a[n]=r,!0):i!==t&&u(i,n)?(i[n]=r,!0):u(e.props,n)||n[0]===`$`&&n.slice(1)in e?!1:(o[n]=r,!0)},has({_:{data:e,setupState:n,accessCache:r,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(r[c]||e!==t&&c[0]!==`$`&&u(e,c)||sr(n,c)||u(o,c)||u(i,c)||u(or,c)||u(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?u(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}};function lr(e){return d(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}var ur=!0;function dr(e){let t=hr(e),n=e.proxy,i=e.ctx;ur=!1,t.beforeCreate&&pr(t.beforeCreate,e,`bc`);let{data:a,computed:o,methods:s,watch:c,provide:l,inject:u,created:f,beforeMount:p,mounted:m,beforeUpdate:g,updated:_,activated:y,deactivated:b,beforeDestroy:x,beforeUnmount:S,destroyed:C,unmounted:w,render:ee,renderTracked:te,renderTriggered:ne,errorCaptured:T,serverPrefetch:re,expose:E,inheritAttrs:ie,components:ae,directives:D,filters:oe}=t;if(u&&fr(u,i,null),s)for(let e in s){let t=s[e];h(t)&&(i[e]=t.bind(n))}if(a){let t=a.call(n,n);v(t)&&(e.data=At(t))}if(ur=!0,o)for(let e in o){let t=o[e],a=ia({get:h(t)?t.bind(n,n):h(t.get)?t.get.bind(n,n):r,set:!h(t)&&h(t.set)?t.set.bind(n):r});Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(c)for(let e in c)mr(c[e],i,n,e);if(l){let e=h(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{Sn(t,e[t])})}f&&pr(f,e,`c`);function O(e,t){d(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(O(Jn,p),O(Yn,m),O(Xn,g),O(Zn,_),O(Hn,y),O(Un,b),O(rr,T),O(nr,te),O(tr,ne),O(Qn,S),O($n,w),O(er,re),d(E))if(E.length){let t=e.exposed||={};E.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};ee&&e.render===r&&(e.render=ee),ie!=null&&(e.inheritAttrs=ie),ae&&(e.components=ae),D&&(e.directives=D),re&&Fn(e)}function fr(e,t,n=r){d(e)&&(e=br(e));for(let n in e){let r=e[n],i;i=v(r)?`default`in r?Cn(r.from||n,r.default,!0):Cn(r.from||n):Cn(r),R(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function pr(e,t,n){B(d(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function mr(e,t,n,r){let i=r.includes(`.`)?kn(n,r):()=>n[r];if(g(e)){let n=t[e];h(n)&&En(i,n)}else if(h(e))En(i,e.bind(n));else if(v(e))if(d(e))e.forEach(e=>mr(e,t,n,r));else{let r=h(e.handler)?e.handler.bind(n):t[e.handler];h(r)&&En(i,r,e)}}function hr(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>gr(c,e,o,!0)),gr(c,t,o)),v(t)&&a.set(t,c),c}function gr(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&gr(e,a,n,!0),i&&i.forEach(t=>gr(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=_r[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var _r={data:vr,props:Sr,emits:Sr,methods:xr,computed:xr,beforeCreate:W,created:W,beforeMount:W,mounted:W,beforeUpdate:W,updated:W,beforeDestroy:W,beforeUnmount:W,destroyed:W,unmounted:W,activated:W,deactivated:W,errorCaptured:W,serverPrefetch:W,components:xr,directives:xr,watch:Cr,provide:vr,inject:yr};function vr(e,t){return t?e?function(){return s(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function yr(e,t){return xr(br(e),br(t))}function br(e){if(d(e)){let t={};for(let n=0;nt===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${T(t)}Modifiers`]||e[`${E(t)}Modifiers`];function kr(e,n,...r){if(e.isUnmounted)return;let i=e.vnode.props||t,a=r,o=n.startsWith(`update:`),s=o&&Or(i,n.slice(7));s&&(s.trim&&(a=r.map(e=>g(e)?e.trim():e)),s.number&&(a=r.map(se)));let c,l=i[c=ae(n)]||i[c=ae(T(n))];!l&&o&&(l=i[c=ae(E(n))]),l&&B(l,e,6,a);let u=i[c+`Once`];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,B(u,e,6,a)}}var Ar=new WeakMap;function jr(e,t,n=!1){let r=n?Ar:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},c=!1;if(!h(e)){let r=e=>{let n=jr(e,t,!0);n&&(c=!0,s(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!c?(v(e)&&r.set(e,null),null):(d(a)?a.forEach(e=>o[e]=null):s(o,a),v(e)&&r.set(e,o),o)}function Mr(e,t){return!e||!a(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),u(e,t[0].toLowerCase()+t.slice(1))||u(e,E(t))||u(e,t))}function Nr(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:s,attrs:c,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=vn(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=Z(u.call(t,e,d,f,m,p,h)),y=c}else{let e=t;v=Z(e.length>1?e(f,{attrs:c,slots:s,emit:l}):e(f,null)),y=t.props?c:Pr(c)}}catch(t){bi.length=0,en(t,e,1),v=X(vi)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(o)&&(y=Fr(y,a)),b=Mi(b,y,!1,!0))}return n.dirs&&(b=Mi(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&Nn(b,n.transition),v=b,vn(_),v}var Pr=e=>{let t;for(let n in e)(n===`class`||n===`style`||a(n))&&((t||={})[n]=e[n]);return t},Fr=(e,t)=>{let n={};for(let r in e)(!o(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ir(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Lr(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(Br),Hr=e=>Object.getPrototypeOf(e)===Br;function Ur(e,t,n,r=!1){let i={},a=Vr();e.propsDefaults=Object.create(null),Gr(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);e.props=n?r?i:jt(i):e.type.props?i:a,e.attrs=a}function Wr(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=L(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{p=!0;let[t,n]=Jr(e,r,!0);s(l,t),n&&f.push(...n)};!i&&r.mixins.length&&r.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!c&&!p)return v(e)&&a.set(e,n),n;if(d(c))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,Zr=e=>d(e)?e.map(Z):[Z(e)],Qr=(e,t,n)=>{if(t._n)return t;let r=yn((...e)=>Zr(t(...e)),n);return r._c=!1,r},$r=(e,t,n)=>{let r=e._ctx;for(let n in e){if(Xr(n))continue;let i=e[n];if(h(i))t[n]=Qr(n,i,r);else if(i!=null){let e=Zr(i);t[n]=()=>e}}},ei=(e,t)=>{let n=Zr(t);e.slots.default=()=>n},ti=(e,t,n)=>{for(let r in t)(n||!Xr(r))&&(e[r]=t[r])},ni=(e,t,n)=>{let r=e.slots=Vr();if(e.vnode.shapeFlag&32){let e=t._;e?(ti(r,t,n),n&&O(r,`_`,e,!0)):$r(t,r)}else t&&ei(e,t)},ri=(e,n,r)=>{let{vnode:i,slots:a}=e,o=!0,s=t;if(i.shapeFlag&32){let e=n._;e?r&&e===1?o=!1:ti(a,n,r):(o=!n.$stable,$r(n,a)),s=n}else n&&(ei(e,n),s={default:1});if(o)for(let e in a)!Xr(e)&&s[e]==null&&delete a[e]},G=hi;function ii(e){return ai(e)}function ai(e,i){let a=le();a.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=r,insertStaticContent:_}=e,v=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Di(e,t)&&(r=ye(e),k(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case _i:y(e,t,n,r);break;case vi:b(e,t,n,r);break;case yi:e??x(t,n,r,o);break;case gi:ae(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?D(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,xe)}u!=null&&i?Rn(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&Rn(e.ref,null,a,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)te(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),re(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},te=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&T(e.children,d,null,r,i,oi(e,a),s,u),_&&xn(e,null,r,`created`),ne(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!ee(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&Q(f,r,e)}_&&xn(e,null,r,`beforeMount`);let v=ci(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&G(()=>{try{f&&Q(f,r,e),v&&g.enter(d),_&&xn(e,null,r,`mounted`)}finally{}},i)},ne=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t{for(let l=c;l{let l=n.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=n;u|=e.patchFlag&16;let m=e.props||t,h=n.props||t,g;if(r&&si(r,!1),(g=h.onVnodeBeforeUpdate)&&Q(g,r,n,e),f&&xn(n,e,r,`beforeUpdate`),r&&si(r,!0),d&&(!e.dynamicChildren||e.dynamicChildren.length!==d.length)&&(u=0,s=!1,d=null),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?E(e.dynamicChildren,d,l,r,i,oi(n,a),o):s||de(e,n,l,null,r,i,oi(n,a),o,!1),u>0){if(u&16)ie(l,m,h,r,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=n.dynamicProps;for(let t=0;t{g&&Q(g,r,n,e),f&&xn(n,e,r,`updated`)},i)},E=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(n!==r){if(n!==t)for(let t in n)!ee(t)&&!(t in r)&&c(e,t,n[t],null,a,i);for(let t in r){if(ee(t))continue;let o=r[t],s=n[t];o!==s&&t!==`value`&&c(e,t,s,o,a,i)}`value`in r&&c(e,`value`,n.value,r.value,a)}},ae=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),T(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(E(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&li(e,t,!0)):de(e,t,n,f,i,a,s,c,l)},D=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):O(t,n,r,i,a,o,c):se(e,t,c)},O=(e,t,n,r,i,a,o)=>{let s=e.component=Bi(e,r,i);if(Vn(e)&&(s.ctx.renderer=xe),Ji(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,ce,o),!e.el){let r=s.subTree=X(vi);b(null,r,t,n),e.placeholder=r.el}}else ce(s,e,t,n,i,a,o)},se=(e,t,n)=>{let r=t.component=e.component;if(Ir(e,t,n))if(r.asyncDep&&!r.asyncResolved){ue(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},ce=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=di(e);if(n){t&&(t.el=c.el,ue(e,t,o)),n.asyncDep.then(()=>{G(()=>{e.isUnmounted||l()},i)});return}}let u=t,d;si(e,!1),t?(t.el=c.el,ue(e,t,o)):t=c,n&&oe(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&Q(d,s,t,c),si(e,!0);let f=Nr(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),ye(p),e,i,a),t.el=f.el,u===null&&zr(e,f.el),r&&G(r,i),(d=t.props&&t.props.onVnodeUpdated)&&G(()=>Q(d,s,t,c),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=Bn(t);if(si(e,!1),l&&oe(l),!m&&(o=c&&c.onVnodeBeforeMount)&&Q(o,d,t),si(e,!0),s&&j){let t=()=>{e.subTree=Nr(e),j(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._hasShadowRoot()&&f.ce._injectChildStyle(p,e.parent?e.parent.type:void 0);let o=e.subTree=Nr(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&G(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;G(()=>Q(o,d,e),i)}(t.shapeFlag&256||d&&Bn(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&G(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Ee(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>un(u),si(e,!0),l()},ue=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,Wr(e,t.props,r,n),ri(e,t.children,n),Be(),pn(e),Ve()},de=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){pe(l,d,n,r,i,a,o,s,c);return}if(f&256){fe(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&ve(l,i,a),d!==l&&p(n,d)):u&16?m&16?pe(l,d,n,r,i,a,o,s,c):ve(l,i,a,!0):(u&8&&p(n,``),m&16&&T(d,n,r,i,a,o,s,c))},fe=(e,t,r,i,a,o,s,c,l)=>{e||=n,t||=n;let u=e.length,d=t.length,f=Math.min(u,d),p;for(p=0;pd?ve(e,a,o,!0,!1,f):T(t,r,i,a,o,s,c,l,f)},pe=(e,t,r,i,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let n=e[u],i=t[u]=l?Fi(t[u]):Z(t[u]);if(Di(n,i))v(n,i,r,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let n=e[f],i=t[p]=l?Fi(t[p]):Z(t[p]);if(Di(n,i))v(n,i,r,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,n=ep)for(;u<=f;)k(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?Fi(t[u]):Z(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,S=0,C=Array(b);for(u=0;u=b){k(n,a,o,!0);continue}let i;if(n.key!=null)i=g.get(n.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&Di(n,t[_])){i=_;break}i===void 0?k(n,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(n,t[i],r,null,a,o,s,c,l),y++)}let w=x?ui(C):n;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,n=t[e],f=t[e+1],p=e+1{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){me(e.component.subTree,t,n,r);return}if(d&128){e.suspense.move(t,n,r);return}if(d&64){c.move(e,t,n,xe);return}if(c===gi){o(a,t,n);for(let e=0;el.enter(a),i));else{let{leave:r,delayLeave:i,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?s(a):o(a,t,n)},d=()=>{let e=a._isLeaving||!!a[Mn];a._isLeaving&&a[Mn](!0),l.persisted&&!e?u():r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}else o(a,t,n)},k=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p,memo:m}=e;if(d===-2&&(i=!1),s!=null&&(Be(),Rn(s,null,n,e,!0),Ve()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!Bn(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&Q(_,t,e),u&6)_e(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&xn(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,xe,r):l&&!l.hasOnce&&(a!==gi||d>0&&d&64)?ve(l,t,n,!1,!0):(a===gi&&d&384||!i&&u&16)&&ve(c,t,n),r&&he(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&G(()=>{_&&Q(_,t,e),h&&xn(e,null,t,`unmounted`),v&&(e.el=null)},n)},he=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===gi){ge(n,r);return}if(t===yi){C(e);return}let a=()=>{s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(e.shapeFlag&1&&i&&!i.persisted){let{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},ge=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},_e=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;fi(c),fi(l),r&&oe(r),i.stop(),a&&(a.flags|=8,k(o,e,t,n)),s&&G(s,t),G(()=>{e.isUnmounted=!0},t)},ve=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return ye(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[An];return n?h(n):t},be=!1,A=(e,t,n)=>{let r;e==null?t._vnode&&(k(t._vnode,null,null,!0),r=t._vnode.component):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,be||=(be=!0,pn(r),mn(),!1)},xe={p:v,um:k,m:me,r:he,mt:O,mc:T,pc:de,pbc:E,n:ye,o:e},Se,j;return i&&([Se,j]=i(xe)),{render:A,hydrate:Se,createApp:Er(A,Se)}}function oi({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function si({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ci(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function li(e,t,n=!1){let r=e.children,i=t.children;if(d(r)&&d(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-->0;)n[a]=o,o=t[o];return n}function di(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:di(t)}function fi(e){if(e)for(let t=0;te.__isSuspense;function hi(e,t){t&&t.pendingBranch?d(e)?t.effects.push(...e):t.effects.push(e):fn(e)}var gi=Symbol.for(`v-fgt`),_i=Symbol.for(`v-txt`),vi=Symbol.for(`v-cmt`),yi=Symbol.for(`v-stc`),bi=[],K=null;function q(e=!1){bi.push(K=e?null:[])}function xi(){bi.pop(),K=bi[bi.length-1]||null}var Si=1;function Ci(e,t=!1){Si+=e,e<0&&K&&t&&(K.hasOnce=!0)}function wi(e){return e.dynamicChildren=Si>0?K||n:null,xi(),Si>0&&K&&K.push(e),e}function J(e,t,n,r,i,a){return wi(Y(e,t,n,r,i,a,!0))}function Ti(e,t,n,r,i){return wi(X(e,t,n,r,i,!0))}function Ei(e){return e?e.__v_isVNode===!0:!1}function Di(e,t){return e.type===t.type&&e.key===t.key}var Oi=({key:e})=>e??null,ki=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:g(e)||R(e)||h(e)?{i:U,r:e,k:t,f:!!n}:e);function Y(e,t=null,n=null,r=0,i=null,a=e===gi?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Oi(t),ref:t&&ki(t),scopeId:_n,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:U};return s?(Ii(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=g(n)?8:16),Si>0&&!o&&K&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&K.push(c),c}var X=Ai;function Ai(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===ir)&&(e=vi),Ei(e)){let r=Mi(e,t,!0);return n&&Ii(r,n),Si>0&&!a&&K&&(r.shapeFlag&6?K[K.indexOf(e)]=r:K.push(r)),r.patchFlag=-2,r}if(ra(e)&&(e=e.__vccOpts),t){t=ji(t);let{class:e,style:n}=t;e&&!g(e)&&(t.class=k(e)),v(n)&&(It(n)&&!d(n)&&(n=s({},n)),t.style=ue(n))}let o=g(e)?1:mi(e)?128:jn(e)?64:v(e)?4:h(e)?2:0;return Y(e,t,n,r,i,o,a,!0)}function ji(e){return e?It(e)||Hr(e)?s({},e):e:null}function Mi(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?Li(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Oi(l),ref:t&&t.ref?n&&a?d(a)?a.concat(ki(t)):[a,ki(t)]:ki(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==gi?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&&Mi(e.ssContent),ssFallback:e.ssFallback&&Mi(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Nn(u,c.clone(u)),u}function Ni(e=` `,t=0){return X(_i,null,e,t)}function Pi(e=``,t=!1){return t?(q(),Ti(vi,null,e)):X(vi,null,e)}function Z(e){return e==null||typeof e==`boolean`?X(vi):d(e)?X(gi,null,e.slice()):Ei(e)?Fi(e):X(_i,null,String(e))}function Fi(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Mi(e)}function Ii(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(d(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),Ii(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!Hr(t)?t._ctx=U:r===3&&U&&(U.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(h(t)){if(r&65){Ii(e,{default:t});return}t={default:t,_ctx:U},n=32}else t=String(t),r&64?(n=16,t=[Ni(t)]):n=8;e.children=t,e.shapeFlag|=n}function Li(...e){let t={};for(let n=0;n$||U,Hi,Ui;{let e=le(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};Hi=t(`__VUE_INSTANCE_SETTERS__`,e=>$=e),Ui=t(`__VUE_SSR_SETTERS__`,e=>qi=e)}var Wi=e=>{let t=$;return Hi(e),e.scope.on(),()=>{e.scope.off(),Hi(t)}},Gi=()=>{$&&$.scope.off(),Hi(null)};function Ki(e){return e.vnode.shapeFlag&4}var qi=!1;function Ji(e,t=!1,n=!1){t&&Ui(t);let{props:r,children:i}=e.vnode,a=Ki(e);Ur(e,r,a,t),ni(e,i,n||t);let o=a?Yi(e,t):void 0;return t&&Ui(!1),o}function Yi(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,cr);let{setup:r}=n;if(r){Be();let n=e.setupContext=r.length>1?ta(e):null,i=Wi(e),a=$t(r,e,0,[e.props,n]),o=y(a);if(Ve(),i(),(o||e.sp)&&!Bn(e)&&Fn(e),o){if(a.then(Gi,Gi),t)return a.then(n=>{Xi(e,n,t)}).catch(t=>{en(t,e,0)});e.asyncDep=a}else Xi(e,a,t)}else $i(e,t)}function Xi(e,t,n){h(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:v(t)&&(e.setupState=Wt(t)),$i(e,n)}var Zi,Qi;function $i(e,t,n){let i=e.type;if(!e.render){if(!t&&Zi&&!i.render){let t=i.template||hr(e).template;if(t){let{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:a,compilerOptions:o}=i;i.render=Zi(t,s(s({isCustomElement:n,delimiters:a},r),o))}}e.render=i.render||r,Qi&&Qi(e)}{let t=Wi(e);Be();try{dr(e)}finally{Ve(),t()}}}var ea={get(e,t){return P(e,`get`,``),e[t]}};function ta(e){return{attrs:new Proxy(e.attrs,ea),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function na(e){return e.exposed?e.exposeProxy||=new Proxy(Wt(Lt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in or)return or[n](e)},has(e,t){return t in e||t in or}}):e.proxy}function ra(e){return h(e)&&`__vccOpts`in e}var ia=(e,t)=>Kt(e,t,qi),aa=`3.5.40`,oa=void 0,sa=typeof window<`u`&&window.trustedTypes;if(sa)try{oa=sa.createPolicy(`vue`,{createHTML:e=>e})}catch{}var ca=oa?e=>oa.createHTML(e):e=>e,la=`http://www.w3.org/2000/svg`,ua=`http://www.w3.org/1998/Math/MathML`,da=typeof document<`u`?document:null,fa=da&&da.createElement(`template`),pa={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?da.createElementNS(la,e):t===`mathml`?da.createElementNS(ua,e):n?da.createElement(e,{is:n}):da.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>da.createTextNode(e),createComment:e=>da.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>da.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{fa.innerHTML=ca(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=fa.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ma=Symbol(`_vtc`);function ha(e,t,n){let r=e[ma];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var ga=Symbol(`_vod`),_a=Symbol(`_vsh`),va={name:`show`,beforeMount(e,{value:t},{transition:n}){e[ga]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):ya(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),ya(e,!0),r.enter(e)):r.leave(e,()=>{ya(e,!1)}):ya(e,t))},beforeUnmount(e,{value:t}){ya(e,t)}};function ya(e,t){e.style.display=t?e[ga]:`none`,e[_a]=!t}var ba=Symbol(``),xa=/(?:^|;)\s*display\s*:/;function Sa(e,t,n){let r=e.style,i=g(n),a=!1;if(n&&!i){if(t)if(g(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??wa(r,t,``)}else for(let e in t)n[e]??wa(r,e,``);for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?wa(r,i,``):Oa(e,i,!g(t)&&t?t[i]:void 0,o)||wa(r,i,o)}}else if(i){if(t!==n){let e=r[ba];e&&(n+=`;`+e),r.cssText=n,a=xa.test(n)}}else t&&e.removeAttribute(`style`);ga in e&&(e[ga]=a?r.display:``,e[_a]&&(r.display=`none`))}var Ca=/\s*!important$/;function wa(e,t,n){if(d(n))n.forEach(n=>wa(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=Da(e,t);Ca.test(n)?e.setProperty(E(r),n.replace(Ca,``),`important`):e[r]=n}}var Ta=[`Webkit`,`Moz`,`ms`],Ea={};function Da(e,t){let n=Ea[t];if(n)return n;let r=T(t);if(r!==`filter`&&r in e)return Ea[t]=r;r=ie(r);for(let n=0;nza||=(Ba.then(()=>za=0),Date.now());function Ha(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(d(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;ne.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Wa=(e,t,n,r,i,s)=>{let c=i===`svg`;t===`class`?ha(e,r,c):t===`style`?Sa(e,n,r):a(t)?o(t)||Fa(e,t,n,r,s):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):Ga(e,t,r,c))?(ja(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&Aa(e,t,r,c,s,t!==`value`)):e._isVueCE&&(Ka(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!g(r)))?ja(e,T(t),r,s,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),Aa(e,t,r,c))};function Ga(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&Ua(t)&&h(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return Ua(t)&&g(n)?!1:t in e}function Ka(e,t){let n=e._def.props;if(!n)return!1;let r=T(t);return Array.isArray(n)?n.some(e=>T(e)===r):Object.keys(n).some(e=>T(e)===r)}var qa=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return d(t)?e=>oe(t,e):t};function Ja(e){e.target.composing=!0}function Ya(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Xa=Symbol(`_assign`);function Za(e,t,n){return t&&(e=e.trim()),n&&(e=se(e)),e}var Qa={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[Xa]=qa(i);let a=r||i.props&&i.props.type===`number`;Ma(e,t?`change`:`input`,t=>{t.target.composing||e[Xa](Za(e.value,n,a))}),(n||a)&&Ma(e,`change`,()=>{e.value=Za(e.value,n,a)}),t||(Ma(e,`compositionstart`,Ja),Ma(e,`compositionend`,Ya),Ma(e,`change`,Ya))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[Xa]=qa(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?se(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},$a={esc:`escape`,space:` `,up:`arrow-up`,left:`arrow-left`,right:`arrow-right`,down:`arrow-down`,delete:`backspace`},eo=(e,t)=>{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=E(n.key);if(t.some(e=>e===r||$a[e]===r))return e(n)}))},to=s({patchProp:Wa},pa),no;function ro(){return no||=ii(to)}var io=((...e)=>{let t=ro().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=oo(e);if(!r)return;let i=t._component;!h(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,ao(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t});function ao(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function oo(e){return g(e)?document.querySelector(e):e}function so(){let e=z(null),t=z(!1),n=z(null);function r(r){i(),e.value=r,t.value=!0,n.value=null}function i(){e.value=null,t.value=!1,n.value=null}return{streamUrl:e,isLive:t,error:n,start:r,stop:i}}function co(e){let t=4+e.length*8,n=new ArrayBuffer(t),r=new DataView(n);r.setUint32(0,e.length);let i=4,a=[n];for(let t of e)r.setUint32(i,t.timestamp),r.setUint32(i+4,t.blob.size),i+=8,a.push(t.blob);return new Blob(a,{type:`application/octet-stream`})}async function lo(e){let t=await e.arrayBuffer(),n=new DataView(t),r=n.getUint32(0),i=[],a=4;for(let e=0;e100&&(yield{blob:new Blob([i],{type:`image/jpeg`}),timestamp:Date.now()-r}),n=n.subarray(t+2)}}}finally{t.releaseLock()}}function go(){let e=z(`idle`),t=z(0),n=z(0),r=z(null),i=[],a=0,o=null,s=null,c=!1;function l(){c=!1,s&&=(s.abort(),null),o&&=(clearInterval(o),null),i=[],n.value=0,t.value=0,e.value=`idle`}async function u(u){l(),a=Date.now(),e.value=`recording`,r.value=null,c=!0,o=setInterval(()=>{c&&(t.value=Date.now()-a)},100),s=new AbortController;try{let e=await fetch(u,{signal:s.signal,cache:`no-store`});if(!e.ok)throw Error(`HTTP ${e.status}: ${e.statusText}`);for await(let t of ho(e)){if(!c)break;i.push({timestamp:t.timestamp,blob:t.blob}),n.value=i.length}}catch(e){if(e.name===`AbortError`)return;r.value=e.message||String(e)}}function d(){if(e.value!==`recording`)return l(),!1;c=!1,s&&=(s.abort(),null),o&&=(clearInterval(o),null),t.value=Date.now()-a;let n=[...i];return i=[],n.length===0?(r.value=`No frames captured — check that the stream is accessible`,e.value=`idle`,!1):(uo(co(n),`recording-${new Date().toISOString().replace(/[:.]/g,`-`).slice(0,19)}.mjpeg`),r.value=null,e.value=`idle`,!0)}function f(){l(),r.value=null}function p(e){let t=Math.floor(Math.max(0,e)/1e3),n=Math.floor(t/60),r=t%60,i=Math.floor(Math.max(0,e)%1e3/10);return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}.${String(i).padStart(2,`0`)}`}return{recorderState:e,elapsedMs:t,frameCount:n,recorderError:r,startRecording:u,stopRecording:d,cancelRecording:f,formatElapsed:p}}var _o={class:`live-view`},vo={class:`video-container`},yo=[`src`],bo={key:1,class:`video-placeholder`},xo={key:0,class:`error-text`},So={key:1},Co={key:2,class:`live-badge`},wo=Pn({__name:`LiveView`,props:{streamUrl:{},isLive:{type:Boolean},error:{}},setup(e){return(t,n)=>(q(),J(`div`,_o,[Y(`div`,vo,[e.streamUrl&&e.isLive?(q(),J(`img`,{key:e.streamUrl,src:e.streamUrl,alt:`MJPEG Stream`,class:`video-frame`},null,8,yo)):(q(),J(`div`,bo,[e.error?(q(),J(`span`,xo,A(e.error),1)):(q(),J(`span`,So,`Stream not started — configure and apply a stream URL above`))])),e.isLive?(q(),J(`div`,Co,[...n[0]||=[Y(`span`,{class:`live-dot`},null,-1),Ni(` LIVE `,-1)]])):Pi(``,!0)])]))}}),To=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},Eo=To(wo,[[`__scopeId`,`data-v-710ffa12`]]),Do={class:`recorder-controls`},Oo={class:`controls-row`},ko=[`disabled`],Ao={key:0,class:`recording-info`},jo={class:`rec-time`},Mo={class:`rec-frames`},No={key:1,class:`recorder-error`},Po=To(Pn({__name:`RecorderControls`,props:{state:{},elapsed:{},frameCount:{},isLive:{type:Boolean},error:{}},emits:[`start`,`stop`],setup(e,{emit:t}){let n=t;return(t,r)=>(q(),J(`div`,Do,[Y(`div`,Oo,[e.state===`idle`?(q(),J(`button`,{key:0,class:`btn btn-record`,disabled:!e.isLive,onClick:r[0]||=e=>n(`start`),title:`Start recording`},[...r[2]||=[Y(`span`,{class:`btn-icon`},`⏺`,-1),Ni(` Record `,-1)]],8,ko)):Pi(``,!0),e.state===`recording`?(q(),J(`button`,{key:1,class:`btn btn-stop`,onClick:r[1]||=e=>n(`stop`),title:`Stop and download recording`},[...r[3]||=[Y(`span`,{class:`btn-icon`},`⏹`,-1),Ni(` Stop & Download `,-1)]])):Pi(``,!0)]),e.state===`recording`?(q(),J(`div`,Ao,[r[4]||=Y(`span`,{class:`rec-dot`},null,-1),Y(`span`,jo,A(e.elapsed),1),Y(`span`,Mo,A(e.frameCount)+` frames`,1)])):Pi(``,!0),e.error?(q(),J(`div`,No,` ⚠ `+A(e.error),1)):Pi(``,!0)]))}}),[[`__scopeId`,`data-v-28c7ac14`]]),Fo={class:`playback-panel`},Io={class:`load-area`},Lo={key:0,class:`file-info`},Ro={key:1,class:`file-hint`},zo={key:0,class:`player-container`},Bo={class:`playback-controls`},Vo={class:`playback-time`},Ho={class:`progress-bar`},Uo=To(Pn({__name:`PlaybackPanel`,setup(e){let t=z(null),n=z(null),r=z(0),i=z(`00:00.00`),a=z(`idle`),o=z(null),s=[],c=0,l=0,u=0,d=0,f=0,p=0;function m(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),r=t%60;return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`}function h(e){let t=Math.floor(Math.max(0,e)/1e3),n=Math.floor(t/60),r=t%60,i=Math.floor(Math.max(0,e)%1e3/10);return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}.${String(i).padStart(2,`0`)}`}function g(){let e=t.value;if(!e)return null;let n=e.getContext(`2d`);return n?{canvas:e,ctx:n}:null}function _(e,t,n,o,s){if(a.value!==`playing`)return;if(n>=e.length){x();return}l=n;let c=e[n],f=performance.now()-u-d;r.value=Math.min(f/t*100,100),i.value=h(f);let m=new Image,g=URL.createObjectURL(c.blob);m.onload=()=>{URL.revokeObjectURL(g),(o.width!==m.width||o.height!==m.height)&&(o.width=m.width,o.height=m.height),s.drawImage(m,0,0);let r=n+1;if(r_(e,t,r,o,s),Math.max(n,16))}else p=window.setTimeout(()=>x(),500)},m.src=g}async function v(e,t){x();let n=g();n&&(s=e,c=t,a.value=`playing`,l=0,d=0,u=performance.now(),_(s,c,0,n.canvas,n.ctx))}function y(){a.value===`playing`&&(a.value=`paused`,f=performance.now(),p&&=(clearTimeout(p),0))}function b(){if(a.value!==`paused`)return;let e=g();e&&(d+=performance.now()-f,a.value=`playing`,_(s,c,l,e.canvas,e.ctx))}function x(){a.value=`idle`,r.value=0,i.value=`00:00.00`,l=0,s=[],c=0,p&&=(clearTimeout(p),0);let e=t.value;e&&e.getContext(`2d`)?.clearRect(0,0,e.width,e.height)}async function S(e){let t=e.target,n=t.files?.[0];if(n){x();try{let e=await lo(n);o.value={name:n.name,duration:e.length>0?e[e.length-1].timestamp:0,frameCount:e.length,data:n},await v(e,o.value.duration)}catch(e){o.value=null,alert(`Failed to load recording: ${e.message||e}`)}t.value=``}}return $n(()=>{x()}),(e,s)=>(q(),J(`div`,Fo,[s[1]||=Y(`h2`,{class:`section-title`},`Playback`,-1),Y(`div`,Io,[Y(`input`,{ref_key:`fileInputRef`,ref:n,type:`file`,accept:`.mjpeg`,class:`file-input-hidden`,onChange:S},null,544),Y(`button`,{class:`btn btn-load`,onClick:s[0]||=e=>n.value?.click()},` 📂 Load Recording File `),o.value?(q(),J(`span`,Lo,A(o.value.name)+` · `+A(o.value.frameCount)+` frames · `+A(m(o.value.duration)),1)):(q(),J(`span`,Ro,`Select a .mjpeg file to play back`))]),a.value===`idle`?Pi(``,!0):(q(),J(`div`,zo,[Y(`canvas`,{ref_key:`canvasRef`,ref:t,class:`playback-canvas`},null,512),Y(`div`,Bo,[a.value===`playing`?(q(),J(`button`,{key:0,class:`btn btn-sm btn-pause`,onClick:y},` ⏸ Pause `)):Pi(``,!0),a.value===`paused`?(q(),J(`button`,{key:1,class:`btn btn-sm btn-play`,onClick:b},` ▶ Resume `)):Pi(``,!0),Y(`button`,{class:`btn btn-sm btn-stop-play`,onClick:x},` ⏹ Stop `),Y(`span`,Vo,A(i.value),1)]),Y(`div`,Ho,[Y(`div`,{class:`progress-fill`,style:ue({width:r.value+`%`})},null,4)])]))]))}}),[[`__scopeId`,`data-v-42941ea7`]]),Wo=`mjpeg-viewer-config`,Go={mjpegUrl:`http://localhost:8080/stream`};function Ko(){try{let e=localStorage.getItem(Wo);if(e)return{...Go,...JSON.parse(e)}}catch{}return{...Go}}function qo(e){localStorage.setItem(Wo,JSON.stringify(e))}var Jo=Ko();function Yo(e){return Object.assign(Jo,e),qo(Jo),Jo}var Xo={class:`config-panel`},Zo={class:`config-row`},Qo={class:`input-group`},$o={key:0,class:`save-hint`},es=To(Pn({__name:`ConfigPanel`,emits:[`apply`],setup(e,{emit:t}){let n=z(Jo.mjpegUrl),r=z(!1);function i(){Yo({mjpegUrl:n.value.trim()}),r.value=!0,setTimeout(()=>{r.value=!1},2e3)}let a=t;function o(){i(),a(`apply`,n.value.trim())}return(e,t)=>(q(),J(`div`,Xo,[t[2]||=Y(`h2`,{class:`section-title`},`Stream Configuration`,-1),Y(`div`,Zo,[t[1]||=Y(`label`,{class:`config-label`,for:`mjpeg-url`},`MJPEG Stream URL`,-1),Y(`div`,Qo,[bn(Y(`input`,{id:`mjpeg-url`,"onUpdate:modelValue":t[0]||=e=>n.value=e,type:`text`,class:`config-input`,placeholder:`http://example.com:8080/stream`,onKeyup:eo(o,[`enter`])},null,544),[[Qa,n.value]]),Y(`button`,{class:`btn btn-apply`,onClick:o},` Apply & Connect `)]),r.value?(q(),J(`span`,$o,`✓ Saved`)):Pi(``,!0)])]))}}),[[`__scopeId`,`data-v-1bf23d59`]]),ts={class:`app-shell`},ns={class:`app-header`},rs={key:0,class:`status-badge live`},is={key:1,class:`status-badge idle`},as={class:`app-main`},os={class:`tab-bar`},ss={class:`tab-content`},cs={class:`tab-content`};io(Pn({__name:`App`,setup(e){let{streamUrl:t,isLive:n,error:r,start:i,stop:a}=so(),{recorderState:o,elapsedMs:s,frameCount:c,recorderError:l,startRecording:u,stopRecording:d,formatElapsed:f}=go(),p=z(`live`);function m(e){i(e)}function h(){t.value&&u(t.value)}function g(){d()}let _=ia(()=>f(s.value));return $n(()=>{a()}),(e,i)=>(q(),J(`div`,ts,[Y(`header`,ns,[i[2]||=Y(`h1`,{class:`app-title`},`MJPEG Stream Viewer`,-1),Ht(n)?(q(),J(`span`,rs,`● Stream Active`)):(q(),J(`span`,is,`○ Disconnected`))]),Y(`main`,as,[X(es,{onApply:m}),Y(`div`,os,[Y(`button`,{class:k([`tab-btn`,{active:p.value===`live`}]),onClick:i[0]||=e=>p.value=`live`},` Live View `,2),Y(`button`,{class:k([`tab-btn`,{active:p.value===`playback`}]),onClick:i[1]||=e=>p.value=`playback`},` Playback `,2)]),bn(Y(`section`,ss,[X(Eo,{"stream-url":Ht(t),"is-live":Ht(n),error:Ht(r)},null,8,[`stream-url`,`is-live`,`error`]),X(Po,{state:Ht(o),elapsed:_.value,"frame-count":Ht(c),"is-live":Ht(n),error:Ht(l),onStart:h,onStop:g},null,8,[`state`,`elapsed`,`frame-count`,`is-live`,`error`])],512),[[va,p.value===`live`]]),bn(Y(`section`,cs,[X(Uo,{ref:`playbackRef`},null,512)],512),[[va,p.value===`playback`]])])]))}})).mount(`#app`); \ No newline at end of file diff --git a/dist/assets/index-Deon0U_J.css b/dist/assets/index-Deon0U_J.css new file mode 100644 index 0000000..60fd183 --- /dev/null +++ b/dist/assets/index-Deon0U_J.css @@ -0,0 +1 @@ +.live-view[data-v-710ffa12]{width:100%}.video-container[data-v-710ffa12]{aspect-ratio:16/9;background:#1a1a2e;border-radius:8px;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.video-frame[data-v-710ffa12]{object-fit:contain;width:100%;height:100%}.video-placeholder[data-v-710ffa12]{color:#666;text-align:center;padding:2rem;font-size:1.1rem}.error-text[data-v-710ffa12]{color:#e74c3c}.live-badge[data-v-710ffa12]{color:#f44;letter-spacing:.1em;background:#000000a6;border-radius:4px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;font-weight:700;display:flex;position:absolute;top:12px;left:12px}.live-dot[data-v-710ffa12]{background:#f44;border-radius:50%;width:8px;height:8px;animation:1.5s ease-in-out infinite pulse-710ffa12}@keyframes pulse-710ffa12{0%,to{opacity:1}50%{opacity:.3}}.recorder-controls[data-v-28c7ac14]{flex-direction:column;align-items:center;gap:10px;display:flex}.controls-row[data-v-28c7ac14]{gap:10px;display:flex}.btn[data-v-28c7ac14]{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:6px;padding:10px 20px;font-size:.95rem;font-weight:600;transition:opacity .2s,transform .15s;display:inline-flex}.btn[data-v-28c7ac14]:active:not(:disabled){transform:scale(.97)}.btn[data-v-28c7ac14]:disabled{opacity:.45;cursor:not-allowed}.btn-icon[data-v-28c7ac14]{font-size:1.1rem}.btn-record[data-v-28c7ac14]{color:#fff;background:#e74c3c}.btn-record[data-v-28c7ac14]:hover:not(:disabled){background:#c0392b}.btn-stop[data-v-28c7ac14]{color:#fff;background:#e74c3c}.btn-stop[data-v-28c7ac14]:hover{background:#c0392b}.recording-info[data-v-28c7ac14]{color:#e74c3c;font-variant-numeric:tabular-nums;align-items:center;gap:10px;font-size:.9rem;display:flex}.rec-dot[data-v-28c7ac14]{background:#e74c3c;border-radius:50%;width:10px;height:10px;animation:.8s ease-in-out infinite pulse-28c7ac14}@keyframes pulse-28c7ac14{0%,to{opacity:1}50%{opacity:.3}}.rec-time[data-v-28c7ac14]{font-weight:700}.rec-frames[data-v-28c7ac14]{color:#999}.recorder-error[data-v-28c7ac14]{color:#f39c12;word-break:break-all;background:#f39c121a;border-radius:4px;max-width:100%;padding:6px 12px;font-size:.85rem}.playback-panel[data-v-42941ea7]{width:100%}.section-title[data-v-42941ea7]{color:#ddd;margin:0 0 16px;font-size:1.2rem;font-weight:600}.load-area[data-v-42941ea7]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.file-input-hidden[data-v-42941ea7]{display:none}.file-info[data-v-42941ea7]{color:#27ae60;font-size:.9rem}.file-hint[data-v-42941ea7]{color:#666;font-size:.85rem}.player-container[data-v-42941ea7]{background:#1a1a2e;border-radius:8px;margin-bottom:20px;overflow:hidden}.playback-canvas[data-v-42941ea7]{object-fit:contain;width:100%;max-height:480px;display:block}.playback-controls[data-v-42941ea7]{align-items:center;gap:10px;padding:10px 14px;display:flex}.playback-time[data-v-42941ea7]{font-variant-numeric:tabular-nums;color:#aaa;margin-left:auto;font-size:.9rem}.progress-bar[data-v-42941ea7]{background:#333;height:3px}.progress-fill[data-v-42941ea7]{background:#3498db;height:100%;transition:width .1s linear}.btn[data-v-42941ea7]{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:4px;padding:8px 16px;font-size:.9rem;font-weight:600;transition:opacity .2s,transform .15s;display:inline-flex}.btn[data-v-42941ea7]:active{transform:scale(.97)}.btn-sm[data-v-42941ea7]{padding:5px 12px;font-size:.82rem}.btn-load[data-v-42941ea7]{color:#fff;background:#3498db}.btn-load[data-v-42941ea7]:hover{background:#2980b9}.btn-play[data-v-42941ea7]{color:#fff;background:#27ae60}.btn-play[data-v-42941ea7]:hover{background:#219a52}.btn-pause[data-v-42941ea7]{color:#fff;background:#f39c12}.btn-pause[data-v-42941ea7]:hover{background:#d68910}.btn-stop-play[data-v-42941ea7]{color:#fff;background:#555}.btn-stop-play[data-v-42941ea7]:hover{background:#444}.config-panel[data-v-1bf23d59]{width:100%}.section-title[data-v-1bf23d59]{color:#ddd;margin:0 0 16px;font-size:1.2rem;font-weight:600}.config-row[data-v-1bf23d59]{flex-direction:column;gap:8px;display:flex}.config-label[data-v-1bf23d59]{color:#aaa;font-size:.9rem;font-weight:500}.input-group[data-v-1bf23d59]{gap:8px;display:flex}.config-input[data-v-1bf23d59]{color:#ddd;background:#1a1a2e;border:1px solid #333;border-radius:6px;outline:none;flex:1;padding:10px 14px;font-family:Courier New,monospace;font-size:.9rem;transition:border-color .2s}.config-input[data-v-1bf23d59]:focus{border-color:#3498db}.btn[data-v-1bf23d59]{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:10px 20px;font-size:.9rem;font-weight:600;transition:opacity .2s,transform .15s}.btn[data-v-1bf23d59]:active{transform:scale(.97)}.btn-apply[data-v-1bf23d59]{color:#fff;background:#3498db}.btn-apply[data-v-1bf23d59]:hover{background:#2980b9}.save-hint[data-v-1bf23d59]{color:#27ae60;font-size:.8rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#e0e0e0;background:#0e0e1a;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.app-shell{max-width:900px;margin:0 auto;padding:24px 20px 40px}.app-header{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:28px;display:flex}.app-title{color:#fff;font-size:1.6rem;font-weight:700}.status-badge{border-radius:12px;padding:3px 10px;font-size:.8rem;font-weight:600}.status-badge.live{color:#27ae60;background:#27ae6026}.status-badge.idle{color:#888;background:#96969626}.app-main{flex-direction:column;gap:24px;display:flex}.tab-bar{border-bottom:2px solid #1a1a2e;gap:0;display:flex}.tab-btn{color:#777;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:10px 24px;font-size:.95rem;font-weight:600;transition:color .2s,border-color .2s}.tab-btn:hover{color:#bbb}.tab-btn.active{color:#3498db;border-bottom-color:#3498db}.tab-content{animation:.2s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}} diff --git a/dist/index.html b/dist/index.html index e1c1779..1431f19 100644 --- a/dist/index.html +++ b/dist/index.html @@ -5,8 +5,8 @@ MJPEG Stream Viewer - - + +
diff --git a/src/App.vue b/src/App.vue index d73bde0..0af7723 100644 --- a/src/App.vue +++ b/src/App.vue @@ -10,7 +10,7 @@ import ConfigPanel from './components/ConfigPanel.vue' // ---- Stream (native — no CORS issues) ---- const { streamUrl, isLive, error, start, stop } = useMjpegStream() -// ---- Recorder (canvas-based frame capture) ---- +// ---- Recorder ---- const { recorderState, elapsedMs, @@ -21,9 +21,6 @@ const { formatElapsed, } = useRecorder() -// ---- Playback panel ref ---- -const playbackRef = ref | null>(null) - // ---- Active tab ---- type Tab = 'live' | 'playback' const activeTab = ref('live') @@ -39,12 +36,7 @@ function handleStartRecording() { } function handleStopRecording() { - stopRecording().then((recording) => { - playbackRef.value?.loadRecordings() - if (recording) { - activeTab.value = 'playback' - } - }) + stopRecording() } const elapsedFormatted = computed(() => formatElapsed(elapsedMs.value)) diff --git a/src/components/PlaybackPanel.vue b/src/components/PlaybackPanel.vue index cc91d03..85509c4 100644 --- a/src/components/PlaybackPanel.vue +++ b/src/components/PlaybackPanel.vue @@ -1,50 +1,23 @@ @@ -275,6 +234,29 @@ defineExpose({ loadRecordings }) color: #ddd; } +/* Load area */ +.load-area { + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 16px; + flex-wrap: wrap; +} + +.file-input-hidden { + display: none; +} + +.file-info { + font-size: 0.9rem; + color: #27ae60; +} + +.file-hint { + font-size: 0.85rem; + color: #666; +} + /* Player */ .player-container { margin-bottom: 20px; @@ -338,6 +320,15 @@ defineExpose({ loadRecordings }) font-size: 0.82rem; } +.btn-load { + background: #3498db; + color: #fff; +} + +.btn-load:hover { + background: #2980b9; +} + .btn-play { background: #27ae60; color: #fff; @@ -364,75 +355,4 @@ defineExpose({ loadRecordings }) .btn-stop-play:hover { background: #444; } - -.btn-delete { - background: transparent; - color: #999; - font-size: 1rem; - padding: 4px 8px; -} - -.btn-delete:hover { - color: #e74c3c; - background: rgba(231, 76, 60, 0.1); -} - -/* List */ -.list-status, -.list-empty { - color: #777; - font-size: 0.95rem; - padding: 16px 0; - text-align: center; -} - -.recording-list { - list-style: none; - padding: 0; - margin: 0; -} - -.recording-item { - display: flex; - align-items: center; - justify-content: space-between; - padding: 12px 14px; - border: 1px solid #2a2a3e; - border-radius: 8px; - margin-bottom: 8px; - background: #141428; - gap: 12px; -} - -.recording-item.active { - border-color: #3498db; -} - -.rec-info { - display: flex; - flex-direction: column; - gap: 4px; - min-width: 0; - flex: 1; -} - -.rec-name { - font-weight: 600; - font-size: 0.95rem; - color: #ddd; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.rec-meta { - font-size: 0.8rem; - color: #777; -} - -.rec-actions { - display: flex; - gap: 6px; - flex-shrink: 0; -} diff --git a/src/components/RecorderControls.vue b/src/components/RecorderControls.vue index 9335be3..5bfa081 100644 --- a/src/components/RecorderControls.vue +++ b/src/components/RecorderControls.vue @@ -35,16 +35,10 @@ const emit = defineEmits<{ v-if="state === 'recording'" class="btn btn-stop" @click="emit('stop')" - title="Stop and save recording" + title="Stop and download recording" > ⏹ - Stop & Save - - - - @@ -119,25 +113,6 @@ const emit = defineEmits<{ background: #c0392b; } -.btn-saving { - background: #666; - color: #fff; -} - -.spinner { - display: inline-block; - width: 14px; - height: 14px; - border: 2px solid rgba(255, 255, 255, 0.3); - border-top-color: #fff; - border-radius: 50%; - animation: spin 0.6s linear infinite; -} - -@keyframes spin { - to { transform: rotate(360deg); } -} - .recording-info { display: flex; align-items: center; diff --git a/src/composables/useRecorder.ts b/src/composables/useRecorder.ts index de7fd75..7df0ab5 100644 --- a/src/composables/useRecorder.ts +++ b/src/composables/useRecorder.ts @@ -1,7 +1,7 @@ import { ref, type Ref } from 'vue' -import { saveRecording, packFrames, type Recording } from './useStorage' +import { packFrames, downloadBlob } from './useStorage' -export type RecorderState = 'idle' | 'recording' | 'saving' +export type RecorderState = 'idle' | 'recording' const SOI = new Uint8Array([0xff, 0xd8]) const EOI = new Uint8Array([0xff, 0xd9]) @@ -113,18 +113,15 @@ export function useRecorder() { } catch (e: any) { if (e.name === 'AbortError') return recorderError.value = e.message || String(e) - // Don't reset state here — user may still want to stop and see the error } } - async function stopRecording(): Promise { + function stopRecording(): boolean { if (recorderState.value !== 'recording') { - if (recorderState.value === 'saving') return null reset() - return null + return false } - recorderState.value = 'saving' running = false if (abortController) { @@ -140,41 +137,20 @@ export function useRecorder() { const savedFrames = [...frames] frames = [] - // Safety: force back to idle after 5s even if IndexedDB hangs - const safetyTimer = setTimeout(() => { - if (recorderState.value === 'saving') { - recorderError.value = 'Save timed out' - recorderState.value = 'idle' - } - }, 5000) - if (savedFrames.length === 0) { - clearTimeout(safetyTimer) recorderError.value = 'No frames captured — check that the stream is accessible' recorderState.value = 'idle' - return null + return false } - const recording: Recording = { - id: crypto.randomUUID(), - name: `Recording ${new Date().toLocaleString()}`, - createdAt: new Date(), - duration: elapsedMs.value, - frameCount: savedFrames.length, - data: packFrames(savedFrames), - } + // Pack and download + const blob = packFrames(savedFrames) + const ts = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19) + downloadBlob(blob, `recording-${ts}.mjpeg`) - try { - await saveRecording(recording) - recorderError.value = null - return recording - } catch (e: any) { - recorderError.value = `Save failed: ${e.message || e}` - return null - } finally { - clearTimeout(safetyTimer) - recorderState.value = 'idle' - } + recorderError.value = null + recorderState.value = 'idle' + return true } function cancelRecording() { diff --git a/src/composables/useStorage.ts b/src/composables/useStorage.ts index b488d82..0378bd5 100644 --- a/src/composables/useStorage.ts +++ b/src/composables/useStorage.ts @@ -1,17 +1,9 @@ /** - * Storage layer for MJPEG recordings. + * MJPEG frame packing / unpacking for download & playback. * - * Uses Origin Private File System (OPFS) for reliable large-blob storage, - * with metadata stored alongside as a JSON index. - * - * Directory layout under OPFS root: - * recordings/ - * index.json — array of RecordingMeta - * {id}.frames — packed binary blob (all frames) - * - * Binary format inside `{id}.frames`: + * Binary format: * [4B BE uint32 frameCount] - * Per frame: [4B BE uint32 timestamp] [4B BE uint32 jpegLen] [JPEG bytes] + * Per frame: [4B BE uint32 timestamp(ms)] [4B BE uint32 jpegLen] [JPEG bytes] */ export interface Frame { @@ -19,56 +11,13 @@ export interface Frame { blob: Blob } -export interface RecordingMeta { - id: string +export interface RecordingFile { name: string - createdAt: string // ISO duration: number frameCount: number - dataSize: number -} - -export interface Recording { - id: string - name: string - createdAt: Date - duration: number - frameCount: number - /** Blob reference — lazy-loaded from OPFS */ data: Blob } -const DIR = 'recordings' -const INDEX_FILE = 'index.json' - -// ---- OPFS helpers ---- - -async function getDir(): Promise { - const root = await navigator.storage.getDirectory() - return root.getDirectoryHandle(DIR, { create: true }) -} - -async function readIndex(dir: FileSystemDirectoryHandle): Promise { - try { - const fh = await dir.getFileHandle(INDEX_FILE) - const file = await fh.getFile() - const text = await file.text() - return JSON.parse(text) - } catch { - // index doesn't exist yet - return [] - } -} - -async function writeIndex(dir: FileSystemDirectoryHandle, index: RecordingMeta[]): Promise { - const fh = await dir.getFileHandle(INDEX_FILE, { create: true }) - const writable = await fh.createWritable() - await writable.write(JSON.stringify(index)) - await writable.close() -} - -// ---- Binary pack / unpack ---- - export function packFrames(frames: { timestamp: number; blob: Blob }[]): Blob { const headerSize = 4 + frames.length * 8 const header = new ArrayBuffer(headerSize) @@ -106,66 +55,14 @@ export async function unpackFrames(data: Blob): Promise { return frames } -// ---- CRUD ---- - -export async function saveRecording(recording: Recording): Promise { - const dir = await getDir() - - // Write frame data blob - const dataFh = await dir.getFileHandle(`${recording.id}.frames`, { create: true }) - const writable = await dataFh.createWritable() - await writable.write(recording.data) - await writable.close() - - // Update index - const index = await readIndex(dir) - index.unshift({ - id: recording.id, - name: recording.name, - createdAt: recording.createdAt.toISOString(), - duration: recording.duration, - frameCount: recording.frameCount, - dataSize: recording.data.size, - }) - await writeIndex(dir, index) -} - -export async function getAllRecordings(): Promise { - const dir = await getDir() - const index = await readIndex(dir) - - // Load data blob for each recording - const results: Recording[] = [] - for (const meta of index) { - try { - const fh = await dir.getFileHandle(`${meta.id}.frames`) - const file = await fh.getFile() - results.push({ - id: meta.id, - name: meta.name, - createdAt: new Date(meta.createdAt), - duration: meta.duration, - frameCount: meta.frameCount, - data: file, - }) - } catch { - // Orphaned index entry — skip - } - } - return results -} - -export async function deleteRecording(id: string): Promise { - const dir = await getDir() - - // Delete frame data - try { - await dir.removeEntry(`${id}.frames`) - } catch { - // file already gone - } - - // Update index - const index = await readIndex(dir) - await writeIndex(dir, index.filter((m) => m.id !== id)) +/** Trigger browser download of a blob as a file */ +export function downloadBlob(blob: Blob, filename: string): void { + const url = URL.createObjectURL(blob) + const a = document.createElement('a') + a.href = url + a.download = filename + document.body.appendChild(a) + a.click() + document.body.removeChild(a) + URL.revokeObjectURL(url) }