diff --git a/frontend/dist/assets/index-D-z4-e8u.css b/frontend/dist/assets/index-D-z4-e8u.css deleted file mode 100644 index 762d526..0000000 --- a/frontend/dist/assets/index-D-z4-e8u.css +++ /dev/null @@ -1 +0,0 @@ -html,body{margin:0;padding:0}table th,table td{padding:4px 6px;border-bottom:1px solid #eee}button{padding:6px 10px;cursor:pointer}input{padding:6px 8px} diff --git a/frontend/dist/assets/index-D2UhTBFe.js b/frontend/dist/assets/index-D2UhTBFe.js new file mode 100644 index 0000000..ec9e65c --- /dev/null +++ b/frontend/dist/assets/index-D2UhTBFe.js @@ -0,0 +1,40 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function n(i){if(i.ep)return;i.ep=!0;const r=s(i);fetch(i.href,r)}})();/** +* @vue/shared v3.5.22 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Gs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const B={},dt=[],Ie=()=>{},ti=()=>!1,ds=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),zs=e=>e.startsWith("onUpdate:"),ie=Object.assign,Ys=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},hr=Object.prototype.hasOwnProperty,j=(e,t)=>hr.call(e,t),I=Array.isArray,pt=e=>Wt(e)==="[object Map]",yt=e=>Wt(e)==="[object Set]",vn=e=>Wt(e)==="[object Date]",$=e=>typeof e=="function",X=e=>typeof e=="string",_e=e=>typeof e=="symbol",W=e=>e!==null&&typeof e=="object",si=e=>(W(e)||$(e))&&$(e.then)&&$(e.catch),ni=Object.prototype.toString,Wt=e=>ni.call(e),gr=e=>Wt(e).slice(8,-1),ii=e=>Wt(e)==="[object Object]",Xs=e=>X(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ot=Gs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ps=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},mr=/-\w/g,Ge=ps(e=>e.replace(mr,t=>t.slice(1).toUpperCase())),br=/\B([A-Z])/g,rt=ps(e=>e.replace(br,"-$1").toLowerCase()),ri=ps(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ss=ps(e=>e?`on${ri(e)}`:""),Je=(e,t)=>!Object.is(e,t),Qt=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},ns=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let _n;const hs=()=>_n||(_n=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zs(e){if(I(e)){const t={};for(let s=0;s{if(s){const n=s.split(_r);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Dt(e){let t="";if(X(e))t=e;else if(I(e))for(let s=0;sqt(s,t))}const ci=e=>!!(e&&e.__v_isRef===!0),Pt=e=>X(e)?e:e==null?"":I(e)||W(e)&&(e.toString===ni||!$(e.toString))?ci(e)?Pt(e.value):JSON.stringify(e,fi,2):String(e),fi=(e,t)=>ci(t)?fi(e,t.value):pt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,i],r)=>(s[ws(n,r)+" =>"]=i,s),{})}:yt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>ws(s))}:_e(t)?ws(t):W(t)&&!I(t)&&!ii(t)?String(t):t,ws=(e,t="")=>{var s;return _e(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** +* @vue/reactivity v3.5.22 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ae;class Tr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ae,!t&&ae&&(this.index=(ae.scopes||(ae.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0&&--this._on===0&&(ae=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(Mt){let t=Mt;for(Mt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;It;){let t=It;for(It=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function pi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function hi(e){let t,s=e.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),sn(n),Ar(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=s}function Fs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(gi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function gi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Nt)||(e.globalVersion=Nt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Fs(e))))return;e.flags|=2;const t=e.dep,s=J,n=ve;J=e,ve=!0;try{pi(e);const i=e.fn(e._value);(t.version===0||Je(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{J=s,ve=n,hi(e),e.flags&=-3}}function sn(e,t=!1){const{dep:s,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)sn(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Ar(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ve=!0;const mi=[];function Le(){mi.push(ve),ve=!1}function je(){const e=mi.pop();ve=e===void 0?!0:e}function yn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=J;J=void 0;try{t()}finally{J=s}}}let Nt=0;class Or{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class nn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!J||!ve||J===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==J)s=this.activeLink=new Or(J,this),J.deps?(s.prevDep=J.depsTail,J.depsTail.nextDep=s,J.depsTail=s):J.deps=J.depsTail=s,bi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=J.depsTail,s.nextDep=void 0,J.depsTail.nextDep=s,J.depsTail=s,J.deps===s&&(J.deps=n)}return s}trigger(t){this.version++,Nt++,this.notify(t)}notify(t){en();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{tn()}}}function bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)bi(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ds=new WeakMap,it=Symbol(""),Ns=Symbol(""),Ut=Symbol("");function ee(e,t,s){if(ve&&J){let n=Ds.get(e);n||Ds.set(e,n=new Map);let i=n.get(s);i||(n.set(s,i=new nn),i.map=n,i.key=s),i.track()}}function De(e,t,s,n,i,r){const o=Ds.get(e);if(!o){Nt++;return}const l=c=>{c&&c.trigger()};if(en(),t==="clear")o.forEach(l);else{const c=I(e),d=c&&Xs(s);if(c&&s==="length"){const a=Number(n);o.forEach((h,y)=>{(y==="length"||y===Ut||!_e(y)&&y>=a)&&l(h)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),d&&l(o.get(Ut)),t){case"add":c?d&&l(o.get("length")):(l(o.get(it)),pt(e)&&l(o.get(Ns)));break;case"delete":c||(l(o.get(it)),pt(e)&&l(o.get(Ns)));break;case"set":pt(e)&&l(o.get(it));break}}tn()}function ft(e){const t=L(e);return t===e?t:(ee(t,"iterate",Ut),be(e)?t:t.map(Q))}function gs(e){return ee(e=L(e),"iterate",Ut),e}const Pr={__proto__:null,[Symbol.iterator](){return Ts(this,Symbol.iterator,Q)},concat(...e){return ft(this).concat(...e.map(t=>I(t)?ft(t):t))},entries(){return Ts(this,"entries",e=>(e[1]=Q(e[1]),e))},every(e,t){return Re(this,"every",e,t,void 0,arguments)},filter(e,t){return Re(this,"filter",e,t,s=>s.map(Q),arguments)},find(e,t){return Re(this,"find",e,t,Q,arguments)},findIndex(e,t){return Re(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Re(this,"findLast",e,t,Q,arguments)},findLastIndex(e,t){return Re(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Re(this,"forEach",e,t,void 0,arguments)},includes(...e){return Es(this,"includes",e)},indexOf(...e){return Es(this,"indexOf",e)},join(e){return ft(this).join(e)},lastIndexOf(...e){return Es(this,"lastIndexOf",e)},map(e,t){return Re(this,"map",e,t,void 0,arguments)},pop(){return Ct(this,"pop")},push(...e){return Ct(this,"push",e)},reduce(e,...t){return xn(this,"reduce",e,t)},reduceRight(e,...t){return xn(this,"reduceRight",e,t)},shift(){return Ct(this,"shift")},some(e,t){return Re(this,"some",e,t,void 0,arguments)},splice(...e){return Ct(this,"splice",e)},toReversed(){return ft(this).toReversed()},toSorted(e){return ft(this).toSorted(e)},toSpliced(...e){return ft(this).toSpliced(...e)},unshift(...e){return Ct(this,"unshift",e)},values(){return Ts(this,"values",Q)}};function Ts(e,t,s){const n=gs(e),i=n[t]();return n!==e&&!be(e)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=s(r.value)),r}),i}const Ir=Array.prototype;function Re(e,t,s,n,i,r){const o=gs(e),l=o!==e&&!be(e),c=o[t];if(c!==Ir[t]){const h=c.apply(e,r);return l?Q(h):h}let d=s;o!==e&&(l?d=function(h,y){return s.call(this,Q(h),y,e)}:s.length>2&&(d=function(h,y){return s.call(this,h,y,e)}));const a=c.call(o,d,n);return l&&i?i(a):a}function xn(e,t,s,n){const i=gs(e);let r=s;return i!==e&&(be(e)?s.length>3&&(r=function(o,l,c){return s.call(this,o,l,c,e)}):r=function(o,l,c){return s.call(this,o,Q(l),c,e)}),i[t](r,...n)}function Es(e,t,s){const n=L(e);ee(n,"iterate",Ut);const i=n[t](...s);return(i===-1||i===!1)&&ln(s[0])?(s[0]=L(s[0]),n[t](...s)):i}function Ct(e,t,s=[]){Le(),en();const n=L(e)[t].apply(e,s);return tn(),je(),n}const Mr=Gs("__proto__,__v_isRef,__isVue"),vi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(_e));function Rr(e){_e(e)||(e=String(e));const t=L(this);return ee(t,"has",e),t.hasOwnProperty(e)}class _i{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?Kr:wi:r?Si:xi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=I(t);if(!i){let c;if(o&&(c=Pr[s]))return c;if(s==="hasOwnProperty")return Rr}const l=Reflect.get(t,s,ne(t)?t:n);if((_e(s)?vi.has(s):Mr(s))||(i||ee(t,"get",s),r))return l;if(ne(l)){const c=o&&Xs(s)?l:l.value;return i&&W(c)?Ls(c):c}return W(l)?i?Ls(l):nt(l):l}}class yi extends _i{constructor(t=!1){super(!1,t)}set(t,s,n,i){let r=t[s];if(!this._isShallow){const c=ze(r);if(!be(n)&&!ze(n)&&(r=L(r),n=L(n)),!I(t)&&ne(r)&&!ne(n))return c||(r.value=n),!0}const o=I(t)&&Xs(s)?Number(s)e,Yt=e=>Reflect.getPrototypeOf(e);function Ur(e,t,s){return function(...n){const i=this.__v_raw,r=L(i),o=pt(r),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,d=i[e](...n),a=s?Us:t?is:Q;return!t&&ee(r,"iterate",c?Ns:it),{next(){const{value:h,done:y}=d.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function Xt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Lr(e,t){const s={get(i){const r=this.__v_raw,o=L(r),l=L(i);e||(Je(i,l)&&ee(o,"get",i),ee(o,"get",l));const{has:c}=Yt(o),d=t?Us:e?is:Q;if(c.call(o,i))return d(r.get(i));if(c.call(o,l))return d(r.get(l));r!==o&&r.get(i)},get size(){const i=this.__v_raw;return!e&&ee(L(i),"iterate",it),i.size},has(i){const r=this.__v_raw,o=L(r),l=L(i);return e||(Je(i,l)&&ee(o,"has",i),ee(o,"has",l)),i===l?r.has(i):r.has(i)||r.has(l)},forEach(i,r){const o=this,l=o.__v_raw,c=L(l),d=t?Us:e?is:Q;return!e&&ee(c,"iterate",it),l.forEach((a,h)=>i.call(r,d(a),d(h),o))}};return ie(s,e?{add:Xt("add"),set:Xt("set"),delete:Xt("delete"),clear:Xt("clear")}:{add(i){!t&&!be(i)&&!ze(i)&&(i=L(i));const r=L(this);return Yt(r).has.call(r,i)||(r.add(i),De(r,"add",i,i)),this},set(i,r){!t&&!be(r)&&!ze(r)&&(r=L(r));const o=L(this),{has:l,get:c}=Yt(o);let d=l.call(o,i);d||(i=L(i),d=l.call(o,i));const a=c.call(o,i);return o.set(i,r),d?Je(r,a)&&De(o,"set",i,r):De(o,"add",i,r),this},delete(i){const r=L(this),{has:o,get:l}=Yt(r);let c=o.call(r,i);c||(i=L(i),c=o.call(r,i)),l&&l.call(r,i);const d=r.delete(i);return c&&De(r,"delete",i,void 0),d},clear(){const i=L(this),r=i.size!==0,o=i.clear();return r&&De(i,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=Ur(i,e,t)}),s}function rn(e,t){const s=Lr(e,t);return(n,i,r)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(j(s,i)&&i in n?s:n,i,r)}const jr={get:rn(!1,!1)},Vr={get:rn(!1,!0)},Hr={get:rn(!0,!1)};const xi=new WeakMap,Si=new WeakMap,wi=new WeakMap,Kr=new WeakMap;function Br(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Wr(e){return e.__v_skip||!Object.isExtensible(e)?0:Br(gr(e))}function nt(e){return ze(e)?e:on(e,!1,Fr,jr,xi)}function qr(e){return on(e,!1,Nr,Vr,Si)}function Ls(e){return on(e,!0,Dr,Hr,wi)}function on(e,t,s,n,i){if(!W(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=Wr(e);if(r===0)return e;const o=i.get(e);if(o)return o;const l=new Proxy(e,r===2?n:s);return i.set(e,l),l}function ht(e){return ze(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function ze(e){return!!(e&&e.__v_isReadonly)}function be(e){return!!(e&&e.__v_isShallow)}function ln(e){return e?!!e.__v_raw:!1}function L(e){const t=e&&e.__v_raw;return t?L(t):e}function kr(e){return!j(e,"__v_skip")&&Object.isExtensible(e)&&oi(e,"__v_skip",!0),e}const Q=e=>W(e)?nt(e):e,is=e=>W(e)?Ls(e):e;function ne(e){return e?e.__v_isRef===!0:!1}function $e(e){return Jr(e,!1)}function Jr(e,t){return ne(e)?e:new Gr(e,t)}class Gr{constructor(t,s){this.dep=new nn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:L(t),this._value=s?t:Q(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||be(t)||ze(t);t=n?t:L(t),Je(t,s)&&(this._rawValue=t,this._value=n?t:Q(t),this.dep.trigger())}}function js(e){return ne(e)?e.value:e}const zr={get:(e,t,s)=>t==="__v_raw"?e:js(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const i=e[t];return ne(i)&&!ne(s)?(i.value=s,!0):Reflect.set(e,t,s,n)}};function Ci(e){return ht(e)?e:new Proxy(e,zr)}class Yr{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new nn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Nt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&J!==this)return di(this,!0),!0}get value(){const t=this.dep.track();return gi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Xr(e,t,s=!1){let n,i;return $(e)?n=e:(n=e.get,i=e.set),new Yr(n,i,s)}const Zt={},rs=new WeakMap;let tt;function Zr(e,t=!1,s=tt){if(s){let n=rs.get(s);n||rs.set(s,n=[]),n.push(e)}}function Qr(e,t,s=B){const{immediate:n,deep:i,once:r,scheduler:o,augmentJob:l,call:c}=s,d=M=>i?M:be(M)||i===!1||i===0?Ne(M,1):Ne(M);let a,h,y,E,F=!1,D=!1;if(ne(e)?(h=()=>e.value,F=be(e)):ht(e)?(h=()=>d(e),F=!0):I(e)?(D=!0,F=e.some(M=>ht(M)||be(M)),h=()=>e.map(M=>{if(ne(M))return M.value;if(ht(M))return d(M);if($(M))return c?c(M,2):M()})):$(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){Le();try{y()}finally{je()}}const M=tt;tt=a;try{return c?c(e,3,[E]):e(E)}finally{tt=M}}:h=Ie,t&&i){const M=h,Y=i===!0?1/0:i;h=()=>Ne(M(),Y)}const Z=Er(),U=()=>{a.stop(),Z&&Z.active&&Ys(Z.effects,a)};if(r&&t){const M=t;t=(...Y)=>{M(...Y),U()}}let K=D?new Array(e.length).fill(Zt):Zt;const G=M=>{if(!(!(a.flags&1)||!a.dirty&&!M))if(t){const Y=a.run();if(i||F||(D?Y.some((ye,ge)=>Je(ye,K[ge])):Je(Y,K))){y&&y();const ye=tt;tt=a;try{const ge=[Y,K===Zt?void 0:D&&K[0]===Zt?[]:K,E];K=Y,c?c(t,3,ge):t(...ge)}finally{tt=ye}}}else a.run()};return l&&l(G),a=new ui(h),a.scheduler=o?()=>o(G,!1):G,E=M=>Zr(M,!1,a),y=a.onStop=()=>{const M=rs.get(a);if(M){if(c)c(M,4);else for(const Y of M)Y();rs.delete(a)}},t?n?G(!0):K=a.run():o?o(G.bind(null,!0),!0):a.run(),U.pause=a.pause.bind(a),U.resume=a.resume.bind(a),U.stop=U,U}function Ne(e,t=1/0,s){if(t<=0||!W(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,ne(e))Ne(e.value,t,s);else if(I(e))for(let n=0;n{Ne(n,t,s)});else if(ii(e)){for(const n in e)Ne(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ne(e[n],t,s)}return e}/** +* @vue/runtime-core v3.5.22 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function kt(e,t,s,n){try{return n?e(...n):e()}catch(i){ms(i,t,s)}}function Me(e,t,s,n){if($(e)){const i=kt(e,t,s,n);return i&&si(i)&&i.catch(r=>{ms(r,t,s)}),i}if(I(e)){const i=[];for(let r=0;r>>1,i=oe[n],r=Lt(i);r=Lt(s)?oe.push(e):oe.splice(to(t),0,e),e.flags|=1,Ai()}}function Ai(){os||(os=Ti.then(Pi))}function so(e){I(e)?gt.push(...e):We&&e.id===-1?We.splice(at+1,0,e):e.flags&1||(gt.push(e),e.flags|=1),Ai()}function Sn(e,t,s=Oe+1){for(;sLt(s)-Lt(n));if(gt.length=0,We){We.push(...t);return}for(We=t,at=0;ate.id==null?e.flags&2?-1:1/0:e.id;function Pi(e){try{for(Oe=0;Oe{n._d&&us(-1);const r=ls(t);let o;try{o=e(...i)}finally{ls(r),n._d&&us(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Ke(e,t){if(te===null)return e;const s=ys(te),n=e.dirs||(e.dirs=[]);for(let i=0;ie.__isTeleport,ro=Symbol("_leaveCb");function fn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,fn(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 Mi(e,t){return $(e)?ie({name:e.name},t,{setup:e}):e}function Ri(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const cs=new WeakMap;function Rt(e,t,s,n,i=!1){if(I(e)){e.forEach((F,D)=>Rt(F,t&&(I(t)?t[D]:t),s,n,i));return}if(mt(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Rt(e,t,s,n.component.subTree);return}const r=n.shapeFlag&4?ys(n.component):n.el,o=i?null:r,{i:l,r:c}=e,d=t&&t.r,a=l.refs===B?l.refs={}:l.refs,h=l.setupState,y=L(h),E=h===B?ti:F=>j(y,F);if(d!=null&&d!==c){if(wn(t),X(d))a[d]=null,E(d)&&(h[d]=null);else if(ne(d)){d.value=null;const F=t;F.k&&(a[F.k]=null)}}if($(c))kt(c,l,12,[o,a]);else{const F=X(c),D=ne(c);if(F||D){const Z=()=>{if(e.f){const U=F?E(c)?h[c]:a[c]:c.value;if(i)I(U)&&Ys(U,r);else if(I(U))U.includes(r)||U.push(r);else if(F)a[c]=[r],E(c)&&(h[c]=a[c]);else{const K=[r];c.value=K,e.k&&(a[e.k]=K)}}else F?(a[c]=o,E(c)&&(h[c]=o)):D&&(c.value=o,e.k&&(a[e.k]=o))};if(o){const U=()=>{Z(),cs.delete(e)};U.id=-1,cs.set(e,U),pe(U,s)}else wn(e),Z()}}}function wn(e){const t=cs.get(e);t&&(t.flags|=8,cs.delete(e))}hs().requestIdleCallback;hs().cancelIdleCallback;const mt=e=>!!e.type.__asyncLoader,$i=e=>e.type.__isKeepAlive;function oo(e,t){Fi(e,"a",t)}function lo(e,t){Fi(e,"da",t)}function Fi(e,t,s=ce){const n=e.__wdc||(e.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(bs(t,n,s),s){let i=s.parent;for(;i&&i.parent;)$i(i.parent.vnode)&&co(n,t,s,i),i=i.parent}}function co(e,t,s,n){const i=bs(t,e,n,!0);Ni(()=>{Ys(n[t],i)},s)}function bs(e,t,s=ce,n=!1){if(s){const i=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...o)=>{Le();const l=Jt(s),c=Me(t,s,e,o);return l(),je(),c});return n?i.unshift(r):i.push(r),r}}const He=e=>(t,s=ce)=>{(!Kt||e==="sp")&&bs(e,(...n)=>t(...n),s)},fo=He("bm"),Di=He("m"),uo=He("bu"),ao=He("u"),po=He("bum"),Ni=He("um"),ho=He("sp"),go=He("rtg"),mo=He("rtc");function bo(e,t=ce){bs("ec",e,t)}const vo=Symbol.for("v-ndc");function Cn(e,t,s,n){let i;const r=s,o=I(e);if(o||X(e)){const l=o&&ht(e);let c=!1,d=!1;l&&(c=!be(e),d=ze(e),e=gs(e)),i=new Array(e.length);for(let a=0,h=e.length;at(l,c,void 0,r));else{const l=Object.keys(e);i=new Array(l.length);for(let c=0,d=l.length;c0;return t!=="default"&&(s.name=t),me(),Vt(le,null,[se("slot",s,n&&n())],d?-2:64)}let r=e[t];r&&r._c&&(r._d=!1),me();const o=r&&Ui(r(s)),l=s.key||o&&o.key,c=Vt(le,{key:(l&&!_e(l)?l:`_${t}`)+(!o&&n?"_fb":"")},o||(n?n():[]),o&&e._===1?64:-2);return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),r&&r._c&&(r._d=!0),c}function Ui(e){return e.some(t=>Ht(t)?!(t.type===Ve||t.type===le&&!Ui(t.children)):!0)?e:null}const Hs=e=>e?ir(e)?ys(e):Hs(e.parent):null,$t=ie(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=>Hs(e.parent),$root:e=>Hs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ji(e),$forceUpdate:e=>e.f||(e.f=()=>{cn(e.update)}),$nextTick:e=>e.n||(e.n=Ei.bind(e.proxy)),$watch:e=>Vo.bind(e)}),As=(e,t)=>e!==B&&!e.__isScriptSetup&&j(e,t),_o={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:o,type:l,appContext:c}=e;let d;if(t[0]!=="$"){const E=o[t];if(E!==void 0)switch(E){case 1:return n[t];case 2:return i[t];case 4:return s[t];case 3:return r[t]}else{if(As(n,t))return o[t]=1,n[t];if(i!==B&&j(i,t))return o[t]=2,i[t];if((d=e.propsOptions[0])&&j(d,t))return o[t]=3,r[t];if(s!==B&&j(s,t))return o[t]=4,s[t];Ks&&(o[t]=0)}}const a=$t[t];let h,y;if(a)return t==="$attrs"&&ee(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(s!==B&&j(s,t))return o[t]=4,s[t];if(y=c.config.globalProperties,j(y,t))return y[t]},set({_:e},t,s){const{data:n,setupState:i,ctx:r}=e;return As(i,t)?(i[t]=s,!0):n!==B&&j(n,t)?(n[t]=s,!0):j(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:i,propsOptions:r,type:o}},l){let c,d;return!!(s[l]||e!==B&&l[0]!=="$"&&j(e,l)||As(t,l)||(c=r[0])&&j(c,l)||j(n,l)||j($t,l)||j(i.config.globalProperties,l)||(d=o.__cssModules)&&d[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:j(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function En(e){return I(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Ks=!0;function yo(e){const t=ji(e),s=e.proxy,n=e.ctx;Ks=!1,t.beforeCreate&&An(t.beforeCreate,e,"bc");const{data:i,computed:r,methods:o,watch:l,provide:c,inject:d,created:a,beforeMount:h,mounted:y,beforeUpdate:E,updated:F,activated:D,deactivated:Z,beforeDestroy:U,beforeUnmount:K,destroyed:G,unmounted:M,render:Y,renderTracked:ye,renderTriggered:ge,errorCaptured:xe,serverPrefetch:ot,expose:Se,inheritAttrs:Ye,components:lt,directives:ct,filters:H}=t;if(d&&xo(d,n,null),o)for(const z in o){const q=o[z];$(q)&&(n[z]=q.bind(s))}if(i){const z=i.call(s,s);W(z)&&(e.data=nt(z))}if(Ks=!0,r)for(const z in r){const q=r[z],Xe=$(q)?q.bind(s,s):$(q.get)?q.get.bind(s,s):Ie,Gt=!$(q)&&$(q.set)?q.set.bind(s):Ie,Ze=ks({get:Xe,set:Gt});Object.defineProperty(n,z,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:we=>Ze.value=we})}if(l)for(const z in l)Li(l[z],n,s,z);if(c){const z=$(c)?c.call(s):c;Reflect.ownKeys(z).forEach(q=>{Ao(q,z[q])})}a&&An(a,e,"c");function O(z,q){I(q)?q.forEach(Xe=>z(Xe.bind(s))):q&&z(q.bind(s))}if(O(fo,h),O(Di,y),O(uo,E),O(ao,F),O(oo,D),O(lo,Z),O(bo,xe),O(mo,ye),O(go,ge),O(po,K),O(Ni,M),O(ho,ot),I(Se))if(Se.length){const z=e.exposed||(e.exposed={});Se.forEach(q=>{Object.defineProperty(z,q,{get:()=>s[q],set:Xe=>s[q]=Xe,enumerable:!0})})}else e.exposed||(e.exposed={});Y&&e.render===Ie&&(e.render=Y),Ye!=null&&(e.inheritAttrs=Ye),lt&&(e.components=lt),ct&&(e.directives=ct),ot&&Ri(e)}function xo(e,t,s=Ie){I(e)&&(e=Bs(e));for(const n in e){const i=e[n];let r;W(i)?"default"in i?r=es(i.from||n,i.default,!0):r=es(i.from||n):r=es(i),ne(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):t[n]=r}}function An(e,t,s){Me(I(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Li(e,t,s,n){let i=n.includes(".")?Zi(s,n):()=>s[n];if(X(e)){const r=t[e];$(r)&&Ps(i,r)}else if($(e))Ps(i,e.bind(s));else if(W(e))if(I(e))e.forEach(r=>Li(r,t,s,n));else{const r=$(e.handler)?e.handler.bind(s):t[e.handler];$(r)&&Ps(i,r,e)}}function ji(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:i,optionsCache:r,config:{optionMergeStrategies:o}}=e.appContext,l=r.get(t);let c;return l?c=l:!i.length&&!s&&!n?c=t:(c={},i.length&&i.forEach(d=>fs(c,d,o,!0)),fs(c,t,o)),W(t)&&r.set(t,c),c}function fs(e,t,s,n=!1){const{mixins:i,extends:r}=t;r&&fs(e,r,s,!0),i&&i.forEach(o=>fs(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=So[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const So={data:On,props:Pn,emits:Pn,methods:At,computed:At,beforeCreate:re,created:re,beforeMount:re,mounted:re,beforeUpdate:re,updated:re,beforeDestroy:re,beforeUnmount:re,destroyed:re,unmounted:re,activated:re,deactivated:re,errorCaptured:re,serverPrefetch:re,components:At,directives:At,watch:Co,provide:On,inject:wo};function On(e,t){return t?e?function(){return ie($(e)?e.call(this,this):e,$(t)?t.call(this,this):t)}:t:e}function wo(e,t){return At(Bs(e),Bs(t))}function Bs(e){if(I(e)){const t={};for(let s=0;s1)return s&&$(t)?t.call(n&&n.proxy):t}}const Hi={},Ki=()=>Object.create(Hi),Bi=e=>Object.getPrototypeOf(e)===Hi;function Oo(e,t,s,n=!1){const i={},r=Ki();e.propsDefaults=Object.create(null),Wi(e,t,i,r);for(const o in e.propsOptions[0])o in i||(i[o]=void 0);s?e.props=n?i:qr(i):e.type.props?e.props=i:e.props=r,e.attrs=r}function Po(e,t,s,n){const{props:i,attrs:r,vnode:{patchFlag:o}}=e,l=L(i),[c]=e.propsOptions;let d=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,E]=qi(h,t,!0);ie(o,y),E&&l.push(...E)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!r&&!c)return W(e)&&n.set(e,dt),dt;if(I(r))for(let a=0;ae==="_"||e==="_ctx"||e==="$stable",an=e=>I(e)?e.map(Pe):[Pe(e)],Mo=(e,t,s)=>{if(t._n)return t;const n=Vs((...i)=>an(t(...i)),s);return n._c=!1,n},ki=(e,t,s)=>{const n=e._ctx;for(const i in e){if(un(i))continue;const r=e[i];if($(r))t[i]=Mo(i,r,n);else if(r!=null){const o=an(r);t[i]=()=>o}}},Ji=(e,t)=>{const s=an(t);e.slots.default=()=>s},Gi=(e,t,s)=>{for(const n in t)(s||!un(n))&&(e[n]=t[n])},Ro=(e,t,s)=>{const n=e.slots=Ki();if(e.vnode.shapeFlag&32){const i=t._;i?(Gi(n,t,s),s&&oi(n,"_",i,!0)):ki(t,n)}else t&&Ji(e,t)},$o=(e,t,s)=>{const{vnode:n,slots:i}=e;let r=!0,o=B;if(n.shapeFlag&32){const l=t._;l?s&&l===1?r=!1:Gi(i,t,s):(r=!t.$stable,ki(t,i)),o=t}else t&&(Ji(e,t),o={default:1});if(r)for(const l in i)!un(l)&&o[l]==null&&delete i[l]},pe=Go;function Fo(e){return Do(e)}function Do(e,t){const s=hs();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:o,createText:l,createComment:c,setText:d,setElementText:a,parentNode:h,nextSibling:y,setScopeId:E=Ie,insertStaticContent:F}=e,D=(f,u,p,b=null,g=null,m=null,C=void 0,S=null,x=!!u.dynamicChildren)=>{if(f===u)return;f&&!Tt(f,u)&&(b=zt(f),we(f,g,m,!0),f=null),u.patchFlag===-2&&(x=!1,u.dynamicChildren=null);const{type:v,ref:P,shapeFlag:T}=u;switch(v){case _s:Z(f,u,p,b);break;case Ve:U(f,u,p,b);break;case Is:f==null&&K(u,p,b,C);break;case le:lt(f,u,p,b,g,m,C,S,x);break;default:T&1?Y(f,u,p,b,g,m,C,S,x):T&6?ct(f,u,p,b,g,m,C,S,x):(T&64||T&128)&&v.process(f,u,p,b,g,m,C,S,x,St)}P!=null&&g?Rt(P,f&&f.ref,m,u||f,!u):P==null&&f&&f.ref!=null&&Rt(f.ref,null,m,f,!0)},Z=(f,u,p,b)=>{if(f==null)n(u.el=l(u.children),p,b);else{const g=u.el=f.el;u.children!==f.children&&d(g,u.children)}},U=(f,u,p,b)=>{f==null?n(u.el=c(u.children||""),p,b):u.el=f.el},K=(f,u,p,b)=>{[f.el,f.anchor]=F(f.children,u,p,b,f.el,f.anchor)},G=({el:f,anchor:u},p,b)=>{let g;for(;f&&f!==u;)g=y(f),n(f,p,b),f=g;n(u,p,b)},M=({el:f,anchor:u})=>{let p;for(;f&&f!==u;)p=y(f),i(f),f=p;i(u)},Y=(f,u,p,b,g,m,C,S,x)=>{u.type==="svg"?C="svg":u.type==="math"&&(C="mathml"),f==null?ye(u,p,b,g,m,C,S,x):ot(f,u,g,m,C,S,x)},ye=(f,u,p,b,g,m,C,S)=>{let x,v;const{props:P,shapeFlag:T,transition:A,dirs:R}=f;if(x=f.el=o(f.type,m,P&&P.is,P),T&8?a(x,f.children):T&16&&xe(f.children,x,null,b,g,Os(f,m),C,S),R&&Qe(f,null,b,"created"),ge(x,f,f.scopeId,C,b),P){for(const k in P)k!=="value"&&!Ot(k)&&r(x,k,null,P[k],m,b);"value"in P&&r(x,"value",null,P.value,m),(v=P.onVnodeBeforeMount)&&Ae(v,b,f)}R&&Qe(f,null,b,"beforeMount");const N=No(g,A);N&&A.beforeEnter(x),n(x,u,p),((v=P&&P.onVnodeMounted)||N||R)&&pe(()=>{v&&Ae(v,b,f),N&&A.enter(x),R&&Qe(f,null,b,"mounted")},g)},ge=(f,u,p,b,g)=>{if(p&&E(f,p),b)for(let m=0;m{for(let v=x;v{const S=u.el=f.el;let{patchFlag:x,dynamicChildren:v,dirs:P}=u;x|=f.patchFlag&16;const T=f.props||B,A=u.props||B;let R;if(p&&et(p,!1),(R=A.onVnodeBeforeUpdate)&&Ae(R,p,u,f),P&&Qe(u,f,p,"beforeUpdate"),p&&et(p,!0),(T.innerHTML&&A.innerHTML==null||T.textContent&&A.textContent==null)&&a(S,""),v?Se(f.dynamicChildren,v,S,p,b,Os(u,g),m):C||q(f,u,S,null,p,b,Os(u,g),m,!1),x>0){if(x&16)Ye(S,T,A,p,g);else if(x&2&&T.class!==A.class&&r(S,"class",null,A.class,g),x&4&&r(S,"style",T.style,A.style,g),x&8){const N=u.dynamicProps;for(let k=0;k{R&&Ae(R,p,u,f),P&&Qe(u,f,p,"updated")},b)},Se=(f,u,p,b,g,m,C)=>{for(let S=0;S{if(u!==p){if(u!==B)for(const m in u)!Ot(m)&&!(m in p)&&r(f,m,u[m],null,g,b);for(const m in p){if(Ot(m))continue;const C=p[m],S=u[m];C!==S&&m!=="value"&&r(f,m,S,C,g,b)}"value"in p&&r(f,"value",u.value,p.value,g)}},lt=(f,u,p,b,g,m,C,S,x)=>{const v=u.el=f?f.el:l(""),P=u.anchor=f?f.anchor:l("");let{patchFlag:T,dynamicChildren:A,slotScopeIds:R}=u;R&&(S=S?S.concat(R):R),f==null?(n(v,p,b),n(P,p,b),xe(u.children||[],p,P,g,m,C,S,x)):T>0&&T&64&&A&&f.dynamicChildren?(Se(f.dynamicChildren,A,p,g,m,C,S),(u.key!=null||g&&u===g.subTree)&&zi(f,u,!0)):q(f,u,p,P,g,m,C,S,x)},ct=(f,u,p,b,g,m,C,S,x)=>{u.slotScopeIds=S,f==null?u.shapeFlag&512?g.ctx.activate(u,p,b,C,x):H(u,p,b,g,m,C,x):_(f,u,x)},H=(f,u,p,b,g,m,C)=>{const S=f.component=tl(f,b,g);if($i(f)&&(S.ctx.renderer=St),nl(S,!1,C),S.asyncDep){if(g&&g.registerDep(S,O,C),!f.el){const x=S.subTree=se(Ve);U(null,x,u,p),f.placeholder=x.el}}else O(S,f,u,p,g,m,C)},_=(f,u,p)=>{const b=u.component=f.component;if(ko(f,u,p))if(b.asyncDep&&!b.asyncResolved){z(b,u,p);return}else b.next=u,b.update();else u.el=f.el,b.vnode=u},O=(f,u,p,b,g,m,C)=>{const S=()=>{if(f.isMounted){let{next:T,bu:A,u:R,parent:N,vnode:k}=f;{const Te=Yi(f);if(Te){T&&(T.el=k.el,z(f,T,C)),Te.asyncDep.then(()=>{f.isUnmounted||S()});return}}let V=T,fe;et(f,!1),T?(T.el=k.el,z(f,T,C)):T=k,A&&Qt(A),(fe=T.props&&T.props.onVnodeBeforeUpdate)&&Ae(fe,N,T,k),et(f,!0);const ue=Rn(f),Ce=f.subTree;f.subTree=ue,D(Ce,ue,h(Ce.el),zt(Ce),f,g,m),T.el=ue.el,V===null&&Jo(f,ue.el),R&&pe(R,g),(fe=T.props&&T.props.onVnodeUpdated)&&pe(()=>Ae(fe,N,T,k),g)}else{let T;const{el:A,props:R}=u,{bm:N,m:k,parent:V,root:fe,type:ue}=f,Ce=mt(u);et(f,!1),N&&Qt(N),!Ce&&(T=R&&R.onVnodeBeforeMount)&&Ae(T,V,u),et(f,!0);{fe.ce&&fe.ce._def.shadowRoot!==!1&&fe.ce._injectChildStyle(ue);const Te=f.subTree=Rn(f);D(null,Te,p,b,f,g,m),u.el=Te.el}if(k&&pe(k,g),!Ce&&(T=R&&R.onVnodeMounted)){const Te=u;pe(()=>Ae(T,V,Te),g)}(u.shapeFlag&256||V&&mt(V.vnode)&&V.vnode.shapeFlag&256)&&f.a&&pe(f.a,g),f.isMounted=!0,u=p=b=null}};f.scope.on();const x=f.effect=new ui(S);f.scope.off();const v=f.update=x.run.bind(x),P=f.job=x.runIfDirty.bind(x);P.i=f,P.id=f.uid,x.scheduler=()=>cn(P),et(f,!0),v()},z=(f,u,p)=>{u.component=f;const b=f.vnode.props;f.vnode=u,f.next=null,Po(f,u.props,b,p),$o(f,u.children,p),Le(),Sn(f),je()},q=(f,u,p,b,g,m,C,S,x=!1)=>{const v=f&&f.children,P=f?f.shapeFlag:0,T=u.children,{patchFlag:A,shapeFlag:R}=u;if(A>0){if(A&128){Gt(v,T,p,b,g,m,C,S,x);return}else if(A&256){Xe(v,T,p,b,g,m,C,S,x);return}}R&8?(P&16&&xt(v,g,m),T!==v&&a(p,T)):P&16?R&16?Gt(v,T,p,b,g,m,C,S,x):xt(v,g,m,!0):(P&8&&a(p,""),R&16&&xe(T,p,b,g,m,C,S,x))},Xe=(f,u,p,b,g,m,C,S,x)=>{f=f||dt,u=u||dt;const v=f.length,P=u.length,T=Math.min(v,P);let A;for(A=0;AP?xt(f,g,m,!0,!1,T):xe(u,p,b,g,m,C,S,x,T)},Gt=(f,u,p,b,g,m,C,S,x)=>{let v=0;const P=u.length;let T=f.length-1,A=P-1;for(;v<=T&&v<=A;){const R=f[v],N=u[v]=x?qe(u[v]):Pe(u[v]);if(Tt(R,N))D(R,N,p,null,g,m,C,S,x);else break;v++}for(;v<=T&&v<=A;){const R=f[T],N=u[A]=x?qe(u[A]):Pe(u[A]);if(Tt(R,N))D(R,N,p,null,g,m,C,S,x);else break;T--,A--}if(v>T){if(v<=A){const R=A+1,N=RA)for(;v<=T;)we(f[v],g,m,!0),v++;else{const R=v,N=v,k=new Map;for(v=N;v<=A;v++){const de=u[v]=x?qe(u[v]):Pe(u[v]);de.key!=null&&k.set(de.key,v)}let V,fe=0;const ue=A-N+1;let Ce=!1,Te=0;const wt=new Array(ue);for(v=0;v=ue){we(de,g,m,!0);continue}let Ee;if(de.key!=null)Ee=k.get(de.key);else for(V=N;V<=A;V++)if(wt[V-N]===0&&Tt(de,u[V])){Ee=V;break}Ee===void 0?we(de,g,m,!0):(wt[Ee-N]=v+1,Ee>=Te?Te=Ee:Ce=!0,D(de,u[Ee],p,null,g,m,C,S,x),fe++)}const gn=Ce?Uo(wt):dt;for(V=gn.length-1,v=ue-1;v>=0;v--){const de=N+v,Ee=u[de],mn=u[de+1],bn=de+1{const{el:m,type:C,transition:S,children:x,shapeFlag:v}=f;if(v&6){Ze(f.component.subTree,u,p,b);return}if(v&128){f.suspense.move(u,p,b);return}if(v&64){C.move(f,u,p,St);return}if(C===le){n(m,u,p);for(let T=0;TS.enter(m),g);else{const{leave:T,delayLeave:A,afterLeave:R}=S,N=()=>{f.ctx.isUnmounted?i(m):n(m,u,p)},k=()=>{m._isLeaving&&m[ro](!0),T(m,()=>{N(),R&&R()})};A?A(m,N,k):k()}else n(m,u,p)},we=(f,u,p,b=!1,g=!1)=>{const{type:m,props:C,ref:S,children:x,dynamicChildren:v,shapeFlag:P,patchFlag:T,dirs:A,cacheIndex:R}=f;if(T===-2&&(g=!1),S!=null&&(Le(),Rt(S,null,p,f,!0),je()),R!=null&&(u.renderCache[R]=void 0),P&256){u.ctx.deactivate(f);return}const N=P&1&&A,k=!mt(f);let V;if(k&&(V=C&&C.onVnodeBeforeUnmount)&&Ae(V,u,f),P&6)pr(f.component,p,b);else{if(P&128){f.suspense.unmount(p,b);return}N&&Qe(f,null,u,"beforeUnmount"),P&64?f.type.remove(f,u,p,St,b):v&&!v.hasOnce&&(m!==le||T>0&&T&64)?xt(v,u,p,!1,!0):(m===le&&T&384||!g&&P&16)&&xt(x,u,p),b&&pn(f)}(k&&(V=C&&C.onVnodeUnmounted)||N)&&pe(()=>{V&&Ae(V,u,f),N&&Qe(f,null,u,"unmounted")},p)},pn=f=>{const{type:u,el:p,anchor:b,transition:g}=f;if(u===le){dr(p,b);return}if(u===Is){M(f);return}const m=()=>{i(p),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(f.shapeFlag&1&&g&&!g.persisted){const{leave:C,delayLeave:S}=g,x=()=>C(p,m);S?S(f.el,m,x):x()}else m()},dr=(f,u)=>{let p;for(;f!==u;)p=y(f),i(f),f=p;i(u)},pr=(f,u,p)=>{const{bum:b,scope:g,job:m,subTree:C,um:S,m:x,a:v}=f;Mn(x),Mn(v),b&&Qt(b),g.stop(),m&&(m.flags|=8,we(C,f,u,p)),S&&pe(S,u),pe(()=>{f.isUnmounted=!0},u)},xt=(f,u,p,b=!1,g=!1,m=0)=>{for(let C=m;C{if(f.shapeFlag&6)return zt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const u=y(f.anchor||f.el),p=u&&u[no];return p?y(p):u};let xs=!1;const hn=(f,u,p)=>{f==null?u._vnode&&we(u._vnode,null,null,!0):D(u._vnode||null,f,u,null,null,null,p),u._vnode=f,xs||(xs=!0,Sn(),Oi(),xs=!1)},St={p:D,um:we,m:Ze,r:pn,mt:H,mc:xe,pc:q,pbc:Se,n:zt,o:e};return{render:hn,hydrate:void 0,createApp:Eo(hn)}}function Os({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function et({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function No(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zi(e,t,s=!1){const n=e.children,i=t.children;if(I(n)&&I(i))for(let r=0;r>1,e[s[l]]0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,o=s[r-1];r-- >0;)s[r]=o,o=t[o];return s}function Yi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yi(t)}function Mn(e){if(e)for(let t=0;tes(Lo);function Ps(e,t,s){return Xi(e,t,s)}function Xi(e,t,s=B){const{immediate:n,deep:i,flush:r,once:o}=s,l=ie({},s),c=t&&n||!t&&r!=="post";let d;if(Kt){if(r==="sync"){const E=jo();d=E.__watcherHandles||(E.__watcherHandles=[])}else if(!c){const E=()=>{};return E.stop=Ie,E.resume=Ie,E.pause=Ie,E}}const a=ce;l.call=(E,F,D)=>Me(E,a,F,D);let h=!1;r==="post"?l.scheduler=E=>{pe(E,a&&a.suspense)}:r!=="sync"&&(h=!0,l.scheduler=(E,F)=>{F?E():cn(E)}),l.augmentJob=E=>{t&&(E.flags|=4),h&&(E.flags|=2,a&&(E.id=a.uid,E.i=a))};const y=Qr(e,t,l);return Kt&&(d?d.push(y):c&&y()),y}function Vo(e,t,s){const n=this.proxy,i=X(e)?e.includes(".")?Zi(n,e):()=>n[e]:e.bind(n,n);let r;$(t)?r=t:(r=t.handler,s=t);const o=Jt(this),l=Xi(i,r.bind(n),s);return o(),l}function Zi(e,t){const s=t.split(".");return()=>{let n=e;for(let i=0;it==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ge(t)}Modifiers`]||e[`${rt(t)}Modifiers`];function Ko(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||B;let i=s;const r=t.startsWith("update:"),o=r&&Ho(n,t.slice(7));o&&(o.trim&&(i=s.map(a=>X(a)?a.trim():a)),o.number&&(i=s.map(ns)));let l,c=n[l=Ss(t)]||n[l=Ss(Ge(t))];!c&&r&&(c=n[l=Ss(rt(t))]),c&&Me(c,e,6,i);const d=n[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Me(d,e,6,i)}}const Bo=new WeakMap;function Qi(e,t,s=!1){const n=s?Bo:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const r=e.emits;let o={},l=!1;if(!$(e)){const c=d=>{const a=Qi(d,t,!0);a&&(l=!0,ie(o,a))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!r&&!l?(W(e)&&n.set(e,null),null):(I(r)?r.forEach(c=>o[c]=null):ie(o,r),W(e)&&n.set(e,o),o)}function vs(e,t){return!e||!ds(t)?!1:(t=t.slice(2).replace(/Once$/,""),j(e,t[0].toLowerCase()+t.slice(1))||j(e,rt(t))||j(e,t))}function Rn(e){const{type:t,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:o,attrs:l,emit:c,render:d,renderCache:a,props:h,data:y,setupState:E,ctx:F,inheritAttrs:D}=e,Z=ls(e);let U,K;try{if(s.shapeFlag&4){const M=i||n,Y=M;U=Pe(d.call(Y,M,a,h,E,y,F)),K=l}else{const M=t;U=Pe(M.length>1?M(h,{attrs:l,slots:o,emit:c}):M(h,null)),K=t.props?l:Wo(l)}}catch(M){Ft.length=0,ms(M,e,1),U=se(Ve)}let G=U;if(K&&D!==!1){const M=Object.keys(K),{shapeFlag:Y}=G;M.length&&Y&7&&(r&&M.some(zs)&&(K=qo(K,r)),G=vt(G,K,!1,!0))}return s.dirs&&(G=vt(G,null,!1,!0),G.dirs=G.dirs?G.dirs.concat(s.dirs):s.dirs),s.transition&&fn(G,s.transition),U=G,ls(Z),U}const Wo=e=>{let t;for(const s in e)(s==="class"||s==="style"||ds(s))&&((t||(t={}))[s]=e[s]);return t},qo=(e,t)=>{const s={};for(const n in e)(!zs(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function ko(e,t,s){const{props:n,children:i,component:r}=e,{props:o,children:l,patchFlag:c}=t,d=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?$n(n,o,d):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function Go(e,t){t&&t.pendingBranch?I(e)?t.effects.push(...e):t.effects.push(e):so(e)}const le=Symbol.for("v-fgt"),_s=Symbol.for("v-txt"),Ve=Symbol.for("v-cmt"),Is=Symbol.for("v-stc"),Ft=[];let he=null;function me(e=!1){Ft.push(he=e?null:[])}function zo(){Ft.pop(),he=Ft[Ft.length-1]||null}let jt=1;function us(e,t=!1){jt+=e,e<0&&he&&t&&(he.hasOnce=!0)}function tr(e){return e.dynamicChildren=jt>0?he||dt:null,zo(),jt>0&&he&&he.push(e),e}function st(e,t,s,n,i,r){return tr(w(e,t,s,n,i,r,!0))}function Vt(e,t,s,n,i){return tr(se(e,t,s,n,i,!0))}function Ht(e){return e?e.__v_isVNode===!0:!1}function Tt(e,t){return e.type===t.type&&e.key===t.key}const sr=({key:e})=>e??null,ts=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?X(e)||ne(e)||$(e)?{i:te,r:e,k:t,f:!!s}:e:null);function w(e,t=null,s=null,n=0,i=null,r=e===le?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&sr(t),ref:t&&ts(t),scopeId:Ii,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:te};return l?(dn(c,s),r&128&&e.normalize(c)):s&&(c.shapeFlag|=X(s)?8:16),jt>0&&!o&&he&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&he.push(c),c}const se=Yo;function Yo(e,t=null,s=null,n=0,i=null,r=!1){if((!e||e===vo)&&(e=Ve),Ht(e)){const l=vt(e,t,!0);return s&&dn(l,s),jt>0&&!r&&he&&(l.shapeFlag&6?he[he.indexOf(e)]=l:he.push(l)),l.patchFlag=-2,l}if(ll(e)&&(e=e.__vccOpts),t){t=Xo(t);let{class:l,style:c}=t;l&&!X(l)&&(t.class=Dt(l)),W(c)&&(ln(c)&&!I(c)&&(c=ie({},c)),t.style=Zs(c))}const o=X(e)?1:er(e)?128:io(e)?64:W(e)?4:$(e)?2:0;return w(e,t,s,n,i,o,r,!0)}function Xo(e){return e?ln(e)||Bi(e)?ie({},e):e:null}function vt(e,t,s=!1,n=!1){const{props:i,ref:r,patchFlag:o,children:l,transition:c}=e,d=t?Zo(i||{},t):i,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&sr(d),ref:t&&t.ref?s&&r?I(r)?r.concat(ts(t)):[r,ts(t)]:ts(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==le?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&&vt(e.ssContent),ssFallback:e.ssFallback&&vt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&n&&fn(a,c.clone(a)),a}function Be(e=" ",t=0){return se(_s,null,e,t)}function nr(e="",t=!1){return t?(me(),Vt(Ve,null,e)):se(Ve,null,e)}function Pe(e){return e==null||typeof e=="boolean"?se(Ve):I(e)?se(le,null,e.slice()):Ht(e)?qe(e):se(_s,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:vt(e)}function dn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(I(t))s=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),dn(e,i()),i._c&&(i._d=!0));return}else{s=32;const i=t._;!i&&!Bi(t)?t._ctx=te:i===3&&te&&(te.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else $(t)?(t={default:t,_ctx:te},s=32):(t=String(t),n&64?(s=16,t=[Be(t)]):s=8);e.children=t,e.shapeFlag|=s}function Zo(...e){const t={};for(let s=0;sce||te;let as,qs;{const e=hs(),t=(s,n)=>{let i;return(i=e[s])||(i=e[s]=[]),i.push(n),r=>{i.length>1?i.forEach(o=>o(r)):i[0](r)}};as=t("__VUE_INSTANCE_SETTERS__",s=>ce=s),qs=t("__VUE_SSR_SETTERS__",s=>Kt=s)}const Jt=e=>{const t=ce;return as(e),e.scope.on(),()=>{e.scope.off(),as(t)}},Fn=()=>{ce&&ce.scope.off(),as(null)};function ir(e){return e.vnode.shapeFlag&4}let Kt=!1;function nl(e,t=!1,s=!1){t&&qs(t);const{props:n,children:i}=e.vnode,r=ir(e);Oo(e,n,r,t),Ro(e,i,s||t);const o=r?il(e,t):void 0;return t&&qs(!1),o}function il(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,_o);const{setup:n}=s;if(n){Le();const i=e.setupContext=n.length>1?ol(e):null,r=Jt(e),o=kt(n,e,0,[e.props,i]),l=si(o);if(je(),r(),(l||e.sp)&&!mt(e)&&Ri(e),l){if(o.then(Fn,Fn),t)return o.then(c=>{Dn(e,c)}).catch(c=>{ms(c,e,0)});e.asyncDep=o}else Dn(e,o)}else rr(e)}function Dn(e,t,s){$(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:W(t)&&(e.setupState=Ci(t)),rr(e)}function rr(e,t,s){const n=e.type;e.render||(e.render=n.render||Ie);{const i=Jt(e);Le();try{yo(e)}finally{je(),i()}}}const rl={get(e,t){return ee(e,"get",""),e[t]}};function ol(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,rl),slots:e.slots,emit:e.emit,expose:t}}function ys(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ci(kr(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in $t)return $t[s](e)},has(t,s){return s in t||s in $t}})):e.proxy}function ll(e){return $(e)&&"__vccOpts"in e}const ks=(e,t)=>Xr(e,t,Kt);function or(e,t,s){try{us(-1);const n=arguments.length;return n===2?W(t)&&!I(t)?Ht(t)?se(e,null,[t]):se(e,t):se(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&Ht(s)&&(s=[s]),se(e,t,s))}finally{us(1)}}const cl="3.5.22";/** +* @vue/runtime-dom v3.5.22 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Js;const Nn=typeof window<"u"&&window.trustedTypes;if(Nn)try{Js=Nn.createPolicy("vue",{createHTML:e=>e})}catch{}const lr=Js?e=>Js.createHTML(e):e=>e,fl="http://www.w3.org/2000/svg",ul="http://www.w3.org/1998/Math/MathML",Fe=typeof document<"u"?document:null,Un=Fe&&Fe.createElement("template"),al={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Fe.createElementNS(fl,e):t==="mathml"?Fe.createElementNS(ul,e):s?Fe.createElement(e,{is:s}):Fe.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Fe.createTextNode(e),createComment:e=>Fe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Fe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{Un.innerHTML=lr(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const l=Un.content;if(n==="svg"||n==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},dl=Symbol("_vtc");function pl(e,t,s){const n=e[dl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Ln=Symbol("_vod"),hl=Symbol("_vsh"),gl=Symbol(""),ml=/(?:^|;)\s*display\s*:/;function bl(e,t,s){const n=e.style,i=X(s);let r=!1;if(s&&!i){if(t)if(X(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&ss(n,l,"")}else for(const o in t)s[o]==null&&ss(n,o,"");for(const o in s)o==="display"&&(r=!0),ss(n,o,s[o])}else if(i){if(t!==s){const o=n[gl];o&&(s+=";"+o),n.cssText=s,r=ml.test(s)}}else t&&e.removeAttribute("style");Ln in e&&(e[Ln]=r?n.display:"",e[hl]&&(n.display="none"))}const jn=/\s*!important$/;function ss(e,t,s){if(I(s))s.forEach(n=>ss(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=vl(e,t);jn.test(s)?e.setProperty(rt(n),s.replace(jn,""),"important"):e[n]=s}}const Vn=["Webkit","Moz","ms"],Ms={};function vl(e,t){const s=Ms[t];if(s)return s;let n=Ge(t);if(n!=="filter"&&n in e)return Ms[t]=n;n=ri(n);for(let i=0;iRs||(Sl.then(()=>Rs=0),Rs=Date.now());function Cl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;Me(Tl(n,s.value),t,5,[n])};return s.value=e,s.attached=wl(),s}function Tl(e,t){if(I(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const kn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,El=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?pl(e,n,o):t==="style"?bl(e,s,n):ds(t)?zs(t)||yl(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Al(e,t,n,o))?(Bn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Kn(e,t,n,o,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!X(n))?Bn(e,Ge(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Kn(e,t,n,o))};function Al(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&kn(t)&&$(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return kn(t)&&X(s)?!1:t in e}const _t=e=>{const t=e.props["onUpdate:modelValue"]||!1;return I(t)?s=>Qt(t,s):t};function Ol(e){e.target.composing=!0}function Jn(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ue=Symbol("_assign"),Et={created(e,{modifiers:{lazy:t,trim:s,number:n}},i){e[Ue]=_t(i);const r=n||i.props&&i.props.type==="number";ke(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;s&&(l=l.trim()),r&&(l=ns(l)),e[Ue](l)}),s&&ke(e,"change",()=>{e.value=e.value.trim()}),t||(ke(e,"compositionstart",Ol),ke(e,"compositionend",Jn),ke(e,"change",Jn))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:i,number:r}},o){if(e[Ue]=_t(o),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?ns(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||i&&e.value.trim()===c)||(e.value=c))}},Pl={deep:!0,created(e,t,s){e[Ue]=_t(s),ke(e,"change",()=>{const n=e._modelValue,i=Bt(e),r=e.checked,o=e[Ue];if(I(n)){const l=Qs(n,i),c=l!==-1;if(r&&!c)o(n.concat(i));else if(!r&&c){const d=[...n];d.splice(l,1),o(d)}}else if(yt(n)){const l=new Set(n);r?l.add(i):l.delete(i),o(l)}else o(cr(e,r))})},mounted:Gn,beforeUpdate(e,t,s){e[Ue]=_t(s),Gn(e,t,s)}};function Gn(e,{value:t,oldValue:s},n){e._modelValue=t;let i;if(I(t))i=Qs(t,n.props.value)>-1;else if(yt(t))i=t.has(n.props.value);else{if(t===s)return;i=qt(t,cr(e,!0))}e.checked!==i&&(e.checked=i)}const zn={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const i=yt(t);ke(e,"change",()=>{const r=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>s?ns(Bt(o)):Bt(o));e[Ue](e.multiple?i?new Set(r):r:r[0]),e._assigning=!0,Ei(()=>{e._assigning=!1})}),e[Ue]=_t(n)},mounted(e,{value:t}){Yn(e,t)},beforeUpdate(e,t,s){e[Ue]=_t(s)},updated(e,{value:t}){e._assigning||Yn(e,t)}};function Yn(e,t){const s=e.multiple,n=I(t);if(!(s&&!n&&!yt(t))){for(let i=0,r=e.options.length;iString(d)===String(l)):o.selected=Qs(t,l)>-1}else o.selected=t.has(l);else if(qt(Bt(o),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Bt(e){return"_value"in e?e._value:e.value}function cr(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const Il=["ctrl","shift","alt","meta"],Ml={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Il.some(s=>e[`${s}Key`]&&!t.includes(s))},fr=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=(i,...r)=>{for(let o=0;o{const t=$l().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=Nl(n);if(!i)return;const r=t._component;!$(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Dl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t};function Dl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Nl(e){return X(e)?document.querySelector(e):e}const Ul="/icons/user-plus.svg",Ll="/icons/guest.svg",jl="/icons/settings.svg",Zn="/icons/filter.svg",Vl="/icons/clear.svg",Hl="/icons/test.svg",Kl="/icons/download.svg",Bl="/icons/copy.svg",Wl="/icons/layout-users.svg",ql="/icons/layout-devices.svg";var ur=function(e,t,s,n){var i;t[0]=0;for(var r=1;r=5&&((o||!y&&r===5)&&(c.push(r,0,o,i),r=6),y&&(c.push(r,y,0,i),r=6)),o=""},a=0;a"?(r=1,o=""):o=n+o[0]:l?n===l?l="":o+=n:n==='"'||n==="'"?l=n:n===">"?(d(),r=1):r&&(n==="="?(r=5,i=o,o=""):n==="/"&&(r<5||s[a][h+1]===">")?(d(),r===3&&(c=c[0]),r=c,(c=c[0]).push(2,0,r),r=0):n===" "||n===" "||n===` +`||n==="\r"?(d(),r=2):o+=n),r===3&&o==="!--"&&(r=4,c=c[0])}return d(),c}(e)),t),arguments,[])).length>1?t:t[0]}const ut=ar.bind(or),kl=Mi({name:"EventCard",props:{ev:{type:Object,required:!0}},setup(e){return()=>{const t=e.ev.attrs||{};return ut`
+
+ ${e.ev.type} + ${e.ev.ts} + ${e.ev.decision?ut`Decision: ${e.ev.decision}`:""} + ${e.ev.error?ut`Error`:""} +
+
+ ${t["User-Name"]||t["User-Name*0"]?ut`User: ${t["User-Name"]||t["User-Name*0"]}`:""} + ${t["NAS-IP-Address"]?ut` — NAS: ${t["NAS-IP-Address"]}`:""} + ${t["Calling-Station-Id"]?ut` — STA: ${t["Calling-Station-Id"]}`:""} +
+
`}}}),$s=ar.bind(or),Jl=Mi({name:"UserCard",props:{item:{type:Object,required:!0},mode:{type:String,default:"user"}},emits:["toggleDisable","remove"],setup(e,{emit:t}){function s(){t("toggleDisable",e.item)}function n(){t("remove",e.item)}return()=>$s`
+
+ ${e.mode==="user"?e.item.username:e.item.device||e.item.username} + VLAN ${e.item.vlan} + ${e.item.disabled?$s`deshabilitado`:$s`activo`} + + + +
+
${e.item.devices?e.item.devices.length:0} dispositivos
+
`}}),Gl={class:"modal"},zl={class:"modal-header"},Yl={class:"modal-footer"},ei={__name:"Modal",props:{open:Boolean,title:String},emits:["close"],setup(e){return(t,s)=>e.open?(me(),st("div",{key:0,class:"modal-backdrop",onClick:s[2]||(s[2]=fr(n=>t.$emit("close"),["self"]))},[w("div",Gl,[w("div",zl,[w("strong",null,Pt(e.title),1),w("button",{class:"icon-btn",onClick:s[0]||(s[0]=n=>t.$emit("close"))},"Cerrar")]),w("div",null,[Tn(t.$slots,"default")]),w("div",Yl,[Tn(t.$slots,"footer",{},()=>[w("button",{class:"icon-btn",onClick:s[1]||(s[1]=n=>t.$emit("close"))},"OK")])])])])):nr("",!0)}},Xl={class:"topbar"},Zl={class:"actions"},Ql=["src"],ec={class:"chip"},tc={class:"shell"},sc={class:"panel-header"},nc={class:"panel-actions"},ic={class:"scroll"},rc={key:0,class:"muted"},oc={class:"panel-header"},lc={class:"row"},cc={class:"scroll"},fc={class:"row toggle",style:{gap:"6px"}},uc={key:0,class:"muted"},ac={key:1,class:"grid"},dc={class:"row",style:{margin:"8px 0"}},pc={class:"row",style:{margin:"8px 0"}},hc={__name:"App",setup(e){const t=$e([]),s=$e([]),n=nt({users:!1,requests:!1}),i=nt({username:"",password:"",vlan:"",disabled:!1}),r=$e(!1),o=$e(!1),l=nt({text:"",type:""}),c=nt({text:"",status:""}),d=$e(!1),a=$e(!1),h=$e("user"),y=$e(localStorage.getItem("theme")||"dark"),E=$e("OK");async function F(){n.users=!0;try{const _=await(await fetch("/api/users")).json();t.value=_.items||[]}finally{n.users=!1}}async function D(){n.requests=!0;try{const _=await(await fetch("/api/requests")).json();s.value=_.items||[]}finally{n.requests=!1}}async function Z(){const H={...i};H.vlan||delete H.vlan,await fetch("/api/users",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(H)}),i.username="",i.password="",i.vlan="",i.disabled=!1,await F()}async function U(H){await fetch(`/api/users/${encodeURIComponent(H.username)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:!H.disabled})}),await F()}async function K(H){confirm(`Eliminar ${H.username}?`)&&(await fetch(`/api/users/${encodeURIComponent(H.username)}`,{method:"DELETE"}),await F())}async function G(){await fetch("/api/requests",{method:"DELETE"}),await D()}async function M(){await fetch("/test/radius",{method:"POST"})}function Y(){const H=new EventSource("/api/events");H.addEventListener("message",_=>{try{const O=JSON.parse(_.data);O&&O.ts&&s.value.push(O)}catch{}}),H.addEventListener("clear",()=>{s.value=[]})}Di(async()=>{await F(),await D(),Y(),Se()});const ye=ks(()=>s.value.filter(H=>{if(l.type&&H.type!==l.type)return!1;if(l.text){const _=l.text.toLowerCase();if(!JSON.stringify(H).toLowerCase().includes(_))return!1}return!0})),ge=ks(()=>t.value.filter(H=>!(c.text&&!H.username.toLowerCase().includes(c.text.toLowerCase())||c.status==="active"&&H.disabled||c.status==="disabled"&&!H.disabled)));function xe(){var _;const H=JSON.stringify(s.value,null,2);(_=navigator.clipboard)==null||_.writeText(H)}function ot(){y.value=y.value==="light"?"dark":"light",localStorage.setItem("theme",y.value),Se()}function Se(){document.documentElement.classList.toggle("light",y.value==="light")}function Ye(){}function lt(){}function ct(){}return(H,_)=>(me(),st(le,null,[w("header",Xl,[_[20]||(_[20]=w("div",{class:"title"},"RADIUS Nucleo",-1)),w("div",Zl,[w("button",{class:"icon-btn",onClick:ot},[w("img",{class:"icon",src:y.value==="light"?"/icons/moon.svg":"/icons/sun.svg",alt:"theme"},null,8,Ql)]),w("span",ec,[_[16]||(_[16]=w("span",{class:"muted"},"Estado:",-1)),Be(" "+Pt(E.value),1)]),w("button",{class:"icon-btn",onClick:Ye},[..._[17]||(_[17]=[w("img",{class:"icon",src:Ul,alt:"usuario"},null,-1),Be(" Usuario ",-1)])]),w("button",{class:"icon-btn",onClick:lt},[..._[18]||(_[18]=[w("img",{class:"icon",src:Ll,alt:"invitado"},null,-1),Be(" Invitado ",-1)])]),w("button",{class:"icon-btn",onClick:ct},[..._[19]||(_[19]=[w("img",{class:"icon",src:jl,alt:"config"},null,-1),Be(" Configuración ",-1)])])])]),w("section",tc,[w("aside",{class:Dt(["panel",{collapsed:d.value}])},[w("div",sc,[_[26]||(_[26]=w("div",{class:"panel-title"},"Eventos FreeRADIUS",-1)),w("div",nc,[w("button",{class:"icon-btn",title:"Filtrar",onClick:_[0]||(_[0]=O=>r.value=!0)},[..._[21]||(_[21]=[w("img",{class:"icon",src:Zn,alt:"filtrar"},null,-1)])]),w("button",{class:"icon-btn",title:"Limpiar",onClick:G},[..._[22]||(_[22]=[w("img",{class:"icon",src:Vl,alt:"limpiar"},null,-1)])]),w("button",{class:"icon-btn",title:"Test",onClick:M},[..._[23]||(_[23]=[w("img",{class:"icon",src:Hl,alt:"test"},null,-1)])]),_[25]||(_[25]=w("a",{class:"icon-btn",title:"Descargar",href:"/api/requests.csv",target:"_blank"},[w("img",{class:"icon",src:Kl,alt:"descargar"})],-1)),w("button",{class:"icon-btn",title:"Copiar",onClick:xe},[..._[24]||(_[24]=[w("img",{class:"icon",src:Bl,alt:"copiar"},null,-1)])]),w("button",{class:"icon-btn",title:"Colapsar",onClick:_[1]||(_[1]=O=>d.value=!d.value)},Pt(d.value?"Expandir":"Colapsar"),1)])]),w("div",ic,[n.requests?(me(),st("div",rc,"Cargando eventos…")):nr("",!0),(me(!0),st(le,null,Cn(ye.value,O=>(me(),Vt(js(kl),{key:O.id,ev:O},null,8,["ev"]))),128))])],2),w("main",{class:Dt(["panel",{collapsed:a.value}])},[w("div",oc,[w("div",lc,[_[30]||(_[30]=w("div",{class:"panel-title"},"Usuarios y Dispositivos",-1)),_[31]||(_[31]=w("span",{class:"spacer"},null,-1)),w("button",{class:"icon-btn",title:"Vista usuarios",onClick:_[2]||(_[2]=O=>h.value="user")},[..._[27]||(_[27]=[w("img",{class:"icon",src:Wl,alt:"usuarios"},null,-1),Be(" Usuarios ",-1)])]),w("button",{class:"icon-btn",title:"Vista dispositivos",onClick:_[3]||(_[3]=O=>h.value="device")},[..._[28]||(_[28]=[w("img",{class:"icon",src:ql,alt:"dispositivos"},null,-1),Be(" Dispositivos ",-1)])]),w("button",{class:"icon-btn",title:"Filtrar",onClick:_[4]||(_[4]=O=>o.value=!0)},[..._[29]||(_[29]=[w("img",{class:"icon",src:Zn,alt:"filtro"},null,-1)])]),w("button",{class:"icon-btn",title:"Colapsar",onClick:_[5]||(_[5]=O=>a.value=!a.value)},Pt(a.value?"Expandir":"Colapsar"),1)])]),w("div",cc,[w("form",{onSubmit:fr(Z,["prevent"]),class:"row",style:{"margin-bottom":"10px"}},[Ke(w("input",{"onUpdate:modelValue":_[6]||(_[6]=O=>i.username=O),placeholder:"usuario",required:"",class:"toggle"},null,512),[[Et,i.username]]),Ke(w("input",{"onUpdate:modelValue":_[7]||(_[7]=O=>i.password=O),placeholder:"contraseña",required:"",class:"toggle"},null,512),[[Et,i.password]]),Ke(w("input",{"onUpdate:modelValue":_[8]||(_[8]=O=>i.vlan=O),placeholder:"VLAN",class:"toggle"},null,512),[[Et,i.vlan]]),w("label",fc,[Ke(w("input",{type:"checkbox","onUpdate:modelValue":_[9]||(_[9]=O=>i.disabled=O)},null,512),[[Pl,i.disabled]]),_[32]||(_[32]=Be(" deshabilitado",-1))]),_[33]||(_[33]=w("button",{type:"submit",class:"icon-btn"},"Crear / Actualizar",-1))],32),n.users?(me(),st("div",uc,"Cargando usuarios…")):(me(),st("div",ac,[(me(!0),st(le,null,Cn(ge.value,O=>(me(),Vt(js(Jl),{key:O.username,item:O,mode:h.value,onToggleDisable:U,onRemove:K},null,8,["item","mode"]))),128))]))])],2)]),se(ei,{open:r.value,title:"Filtros de eventos",onClose:_[12]||(_[12]=O=>r.value=!1)},{default:Vs(()=>[w("div",dc,[Ke(w("input",{"onUpdate:modelValue":_[10]||(_[10]=O=>l.text=O),placeholder:"Buscar texto",class:"toggle",style:{flex:"1"}},null,512),[[Et,l.text]]),Ke(w("select",{"onUpdate:modelValue":_[11]||(_[11]=O=>l.type=O),class:"toggle"},[..._[34]||(_[34]=[w("option",{value:""},"Todos",-1),w("option",{value:"authorize"},"authorize",-1),w("option",{value:"accounting"},"accounting",-1),w("option",{value:"post-auth"},"post-auth",-1),w("option",{value:"selftest"},"selftest",-1),w("option",{value:"coa-disconnect"},"coa-disconnect",-1)])],512),[[zn,l.type]])])]),_:1},8,["open"]),se(ei,{open:o.value,title:"Filtros de usuarios",onClose:_[15]||(_[15]=O=>o.value=!1)},{default:Vs(()=>[w("div",pc,[Ke(w("input",{"onUpdate:modelValue":_[13]||(_[13]=O=>c.text=O),placeholder:"Buscar usuario",class:"toggle",style:{flex:"1"}},null,512),[[Et,c.text]]),Ke(w("select",{"onUpdate:modelValue":_[14]||(_[14]=O=>c.status=O),class:"toggle"},[..._[35]||(_[35]=[w("option",{value:""},"Todos",-1),w("option",{value:"active"},"Activos",-1),w("option",{value:"disabled"},"Deshabilitados",-1)])],512),[[zn,c.status]])])]),_:1},8,["open"])],64))}},gc=Fl(hc);gc.mount("#app"); diff --git a/frontend/dist/assets/index-D8GGMeXj.css b/frontend/dist/assets/index-D8GGMeXj.css new file mode 100644 index 0000000..38e2409 --- /dev/null +++ b/frontend/dist/assets/index-D8GGMeXj.css @@ -0,0 +1 @@ +:root{--bg: 15 15 18;--fg: 235 235 240;--muted: 180 180 190;--accent: 80 160 255;--card: 28 28 34 / .55;--border: 255 255 255 / .12;--glass-blur: 14px;--radius: 14px}:root.light{--bg: 245 245 248;--fg: 20 20 22;--muted: 110 110 120;--accent: 18 108 242;--card: 255 255 255 / .6;--border: 0 0 0 / .08}*{box-sizing:border-box}html,body,#app{height:100%}html,body{margin:0;padding:0;background:rgb(var(--bg));color:rgb(var(--fg))}body{font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji"}button{cursor:pointer}a{color:inherit}.topbar{position:sticky;top:0;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));background:linear-gradient(180deg,rgba(var(--card)),rgba(var(--card)) 60%,#0000);border-bottom:1px solid rgba(var(--border))}.title{font-size:16px;font-weight:700;letter-spacing:.2px;flex:1 1 auto}.actions{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center}.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border-radius:10px;border:1px solid rgba(var(--border));background:rgba(var(--card));color:inherit;transition:transform .12s ease,background .2s;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.icon-btn:hover{transform:translateY(-1px);background:rgba(var(--card))}.icon{width:16px;height:16px;opacity:.9}.shell{height:calc(100vh - 54px);display:grid;grid-template-columns:360px 1fr;gap:12px;padding:12px}.panel{border:1px solid rgba(var(--border));background:rgba(var(--card));border-radius:var(--radius);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));overflow:hidden;display:flex;flex-direction:column;min-height:0}.panel-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid rgba(var(--border))}.panel-title{font-weight:600}.panel-actions{display:inline-flex;flex-wrap:wrap;gap:6px}.scroll{overflow:auto;padding:10px}.card{border:1px solid rgba(var(--border));background:rgba(var(--card));border-radius:12px;padding:10px;transition:transform .12s ease,box-shadow .2s ease;box-shadow:0 4px 14px #00000014}.card:hover{transform:translateY(-1px);box-shadow:0 8px 20px #0000001f}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}@media (max-width: 980px){.shell{grid-template-columns:1fr}}.panel.collapsed .scroll{display:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:20;animation:fadeIn .15s ease}.modal{width:min(680px,92vw);border-radius:14px;border:1px solid rgba(var(--border));background:rgba(var(--card));padding:14px;box-shadow:0 10px 32px #0003}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid rgba(var(--border));border-radius:999px;background:rgba(var(--card));font-size:12px}.muted{color:rgb(var(--muted))}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.toggle{padding:6px 10px;border-radius:8px;border:1px solid rgba(var(--border));background:rgba(var(--card))} diff --git a/frontend/dist/assets/index-j5D-XEQH.js b/frontend/dist/assets/index-j5D-XEQH.js deleted file mode 100644 index 2e2c2de..0000000 --- a/frontend/dist/assets/index-j5D-XEQH.js +++ /dev/null @@ -1,17 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/** -* @vue/shared v3.5.22 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Hs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const U={},tt=[],Te=()=>{},Vn=()=>!1,Qt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ls=e=>e.startsWith("onUpdate:"),re=Object.assign,$s=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Gr=Object.prototype.hasOwnProperty,L=(e,t)=>Gr.call(e,t),M=Array.isArray,st=e=>Pt(e)==="[object Map]",es=e=>Pt(e)==="[object Set]",fn=e=>Pt(e)==="[object Date]",F=e=>typeof e=="function",G=e=>typeof e=="string",Ee=e=>typeof e=="symbol",W=e=>e!==null&&typeof e=="object",Kn=e=>(W(e)||F(e))&&F(e.then)&&F(e.catch),Bn=Object.prototype.toString,Pt=e=>Bn.call(e),Yr=e=>Pt(e).slice(8,-1),Wn=e=>Pt(e)==="[object Object]",Us=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,mt=Hs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ts=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},zr=/-\w/g,Ve=ts(e=>e.replace(zr,t=>t.slice(1).toUpperCase())),Xr=/\B([A-Z])/g,Ze=ts(e=>e.replace(Xr,"-$1").toLowerCase()),qn=ts(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=ts(e=>e?`on${qn(e)}`:""),Ue=(e,t)=>!Object.is(e,t),Vt=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Cs=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let cn;const ss=()=>cn||(cn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Vs(e){if(M(e)){const t={};for(let s=0;s{if(s){const n=s.split(Qr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Ks(e){let t="";if(G(e))t=e;else if(M(e))for(let s=0;sns(s,t))}const Yn=e=>!!(e&&e.__v_isRef===!0),de=e=>G(e)?e:e==null?"":M(e)||W(e)&&(e.toString===Bn||!F(e.toString))?Yn(e)?de(e.value):JSON.stringify(e,zn,2):String(e),zn=(e,t)=>Yn(t)?zn(e,t.value):st(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],i)=>(s[hs(n,i)+" =>"]=r,s),{})}:es(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>hs(s))}:Ee(t)?hs(t):W(t)&&!M(t)&&!Wn(t)?String(t):t,hs=(e,t="")=>{var s;return Ee(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** -* @vue/reactivity v3.5.22 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let fe;class ii{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=fe,!t&&fe&&(this.index=(fe.scopes||(fe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0&&--this._on===0&&(fe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(bt){let t=bt;for(bt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;_t;){let t=_t;for(_t=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function er(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function tr(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),qs(n),li(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function Ts(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(sr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function sr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===wt)||(e.globalVersion=wt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ts(e))))return;e.flags|=2;const t=e.dep,s=B,n=me;B=e,me=!0;try{er(e);const r=e.fn(e._value);(t.version===0||Ue(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{B=s,me=n,tr(e),e.flags&=-3}}function qs(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)qs(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function li(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let me=!0;const nr=[];function Fe(){nr.push(me),me=!1}function De(){const e=nr.pop();me=e===void 0?!0:e}function un(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=B;B=void 0;try{t()}finally{B=s}}}let wt=0;class fi{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Js{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!B||!me||B===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==B)s=this.activeLink=new fi(B,this),B.deps?(s.prevDep=B.depsTail,B.depsTail.nextDep=s,B.depsTail=s):B.deps=B.depsTail=s,rr(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=B.depsTail,s.nextDep=void 0,B.depsTail.nextDep=s,B.depsTail=s,B.deps===s&&(B.deps=n)}return s}trigger(t){this.version++,wt++,this.notify(t)}notify(t){Bs();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ws()}}}function rr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)rr(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Es=new WeakMap,Xe=Symbol(""),Os=Symbol(""),Ct=Symbol("");function X(e,t,s){if(me&&B){let n=Es.get(e);n||Es.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Js),r.map=n,r.key=s),r.track()}}function Me(e,t,s,n,r,i){const o=Es.get(e);if(!o){wt++;return}const l=c=>{c&&c.trigger()};if(Bs(),t==="clear")o.forEach(l);else{const c=M(e),h=c&&Us(s);if(c&&s==="length"){const a=Number(n);o.forEach((p,w)=>{(w==="length"||w===Ct||!Ee(w)&&w>=a)&&l(p)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),h&&l(o.get(Ct)),t){case"add":c?h&&l(o.get("length")):(l(o.get(Xe)),st(e)&&l(o.get(Os)));break;case"delete":c||(l(o.get(Xe)),st(e)&&l(o.get(Os)));break;case"set":st(e)&&l(o.get(Xe));break}}Ws()}function Qe(e){const t=H(e);return t===e?t:(X(t,"iterate",Ct),pe(e)?t:t.map(z))}function rs(e){return X(e=H(e),"iterate",Ct),e}const ci={__proto__:null,[Symbol.iterator](){return gs(this,Symbol.iterator,z)},concat(...e){return Qe(this).concat(...e.map(t=>M(t)?Qe(t):t))},entries(){return gs(this,"entries",e=>(e[1]=z(e[1]),e))},every(e,t){return Ae(this,"every",e,t,void 0,arguments)},filter(e,t){return Ae(this,"filter",e,t,s=>s.map(z),arguments)},find(e,t){return Ae(this,"find",e,t,z,arguments)},findIndex(e,t){return Ae(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ae(this,"findLast",e,t,z,arguments)},findLastIndex(e,t){return Ae(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ae(this,"forEach",e,t,void 0,arguments)},includes(...e){return ms(this,"includes",e)},indexOf(...e){return ms(this,"indexOf",e)},join(e){return Qe(this).join(e)},lastIndexOf(...e){return ms(this,"lastIndexOf",e)},map(e,t){return Ae(this,"map",e,t,void 0,arguments)},pop(){return dt(this,"pop")},push(...e){return dt(this,"push",e)},reduce(e,...t){return an(this,"reduce",e,t)},reduceRight(e,...t){return an(this,"reduceRight",e,t)},shift(){return dt(this,"shift")},some(e,t){return Ae(this,"some",e,t,void 0,arguments)},splice(...e){return dt(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 dt(this,"unshift",e)},values(){return gs(this,"values",z)}};function gs(e,t,s){const n=rs(e),r=n[t]();return n!==e&&!pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=s(i.value)),i}),r}const ui=Array.prototype;function Ae(e,t,s,n,r,i){const o=rs(e),l=o!==e&&!pe(e),c=o[t];if(c!==ui[t]){const p=c.apply(e,i);return l?z(p):p}let h=s;o!==e&&(l?h=function(p,w){return s.call(this,z(p),w,e)}:s.length>2&&(h=function(p,w){return s.call(this,p,w,e)}));const a=c.call(o,h,n);return l&&r?r(a):a}function an(e,t,s,n){const r=rs(e);let i=s;return r!==e&&(pe(e)?s.length>3&&(i=function(o,l,c){return s.call(this,o,l,c,e)}):i=function(o,l,c){return s.call(this,o,z(l),c,e)}),r[t](i,...n)}function ms(e,t,s){const n=H(e);X(n,"iterate",Ct);const r=n[t](...s);return(r===-1||r===!1)&&Ys(s[0])?(s[0]=H(s[0]),n[t](...s)):r}function dt(e,t,s=[]){Fe(),Bs();const n=H(e)[t].apply(e,s);return Ws(),De(),n}const ai=Hs("__proto__,__v_isRef,__isVue"),ir=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ee));function di(e){Ee(e)||(e=String(e));const t=H(this);return X(t,"has",e),t.hasOwnProperty(e)}class or{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?Si:ur:i?cr:fr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=M(t);if(!r){let c;if(o&&(c=ci[s]))return c;if(s==="hasOwnProperty")return di}const l=Reflect.get(t,s,Z(t)?t:n);if((Ee(s)?ir.has(s):ai(s))||(r||X(t,"get",s),i))return l;if(Z(l)){const c=o&&Us(s)?l:l.value;return r&&W(c)?Ps(c):c}return W(l)?r?Ps(l):Tt(l):l}}class lr extends or{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];if(!this._isShallow){const c=Ke(i);if(!pe(n)&&!Ke(n)&&(i=H(i),n=H(n)),!M(t)&&Z(i)&&!Z(n))return c||(i.value=n),!0}const o=M(t)&&Us(s)?Number(s)e,Ht=e=>Reflect.getPrototypeOf(e);function _i(e,t,s){return function(...n){const r=this.__v_raw,i=H(r),o=st(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,h=r[e](...n),a=s?As:t?qt:z;return!t&&X(i,"iterate",c?Os:Xe),{next(){const{value:p,done:w}=h.next();return w?{value:p,done:w}:{value:l?[a(p[0]),a(p[1])]:a(p),done:w}},[Symbol.iterator](){return this}}}}function Lt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function bi(e,t){const s={get(r){const i=this.__v_raw,o=H(i),l=H(r);e||(Ue(r,l)&&X(o,"get",r),X(o,"get",l));const{has:c}=Ht(o),h=t?As:e?qt:z;if(c.call(o,r))return h(i.get(r));if(c.call(o,l))return h(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&X(H(r),"iterate",Xe),r.size},has(r){const i=this.__v_raw,o=H(i),l=H(r);return e||(Ue(r,l)&&X(o,"has",r),X(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=H(l),h=t?As:e?qt:z;return!e&&X(c,"iterate",Xe),l.forEach((a,p)=>r.call(i,h(a),h(p),o))}};return re(s,e?{add:Lt("add"),set:Lt("set"),delete:Lt("delete"),clear:Lt("clear")}:{add(r){!t&&!pe(r)&&!Ke(r)&&(r=H(r));const i=H(this);return Ht(i).has.call(i,r)||(i.add(r),Me(i,"add",r,r)),this},set(r,i){!t&&!pe(i)&&!Ke(i)&&(i=H(i));const o=H(this),{has:l,get:c}=Ht(o);let h=l.call(o,r);h||(r=H(r),h=l.call(o,r));const a=c.call(o,r);return o.set(r,i),h?Ue(i,a)&&Me(o,"set",r,i):Me(o,"add",r,i),this},delete(r){const i=H(this),{has:o,get:l}=Ht(i);let c=o.call(i,r);c||(r=H(r),c=o.call(i,r)),l&&l.call(i,r);const h=i.delete(r);return c&&Me(i,"delete",r,void 0),h},clear(){const r=H(this),i=r.size!==0,o=r.clear();return i&&Me(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=_i(r,e,t)}),s}function ks(e,t){const s=bi(e,t);return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(L(s,r)&&r in n?s:n,r,i)}const yi={get:ks(!1,!1)},xi={get:ks(!1,!0)},vi={get:ks(!0,!1)};const fr=new WeakMap,cr=new WeakMap,ur=new WeakMap,Si=new WeakMap;function wi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ci(e){return e.__v_skip||!Object.isExtensible(e)?0:wi(Yr(e))}function Tt(e){return Ke(e)?e:Gs(e,!1,pi,yi,fr)}function Ti(e){return Gs(e,!1,mi,xi,cr)}function Ps(e){return Gs(e,!0,gi,vi,ur)}function Gs(e,t,s,n,r){if(!W(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=Ci(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?n:s);return r.set(e,l),l}function nt(e){return Ke(e)?nt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ke(e){return!!(e&&e.__v_isReadonly)}function pe(e){return!!(e&&e.__v_isShallow)}function Ys(e){return e?!!e.__v_raw:!1}function H(e){const t=e&&e.__v_raw;return t?H(t):e}function Ei(e){return!L(e,"__v_skip")&&Object.isExtensible(e)&&Jn(e,"__v_skip",!0),e}const z=e=>W(e)?Tt(e):e,qt=e=>W(e)?Ps(e):e;function Z(e){return e?e.__v_isRef===!0:!1}function dn(e){return Oi(e,!1)}function Oi(e,t){return Z(e)?e:new Ai(e,t)}class Ai{constructor(t,s){this.dep=new Js,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:H(t),this._value=s?t:z(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||pe(t)||Ke(t);t=n?t:H(t),Ue(t,s)&&(this._rawValue=t,this._value=n?t:z(t),this.dep.trigger())}}function Pi(e){return Z(e)?e.value:e}const Mi={get:(e,t,s)=>t==="__v_raw"?e:Pi(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return Z(r)&&!Z(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function ar(e){return nt(e)?e:new Proxy(e,Mi)}class Ri{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Js(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=wt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&B!==this)return Qn(this,!0),!0}get value(){const t=this.dep.track();return sr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ii(e,t,s=!1){let n,r;return F(e)?n=e:(n=e.get,r=e.set),new Ri(n,r,s)}const $t={},Jt=new WeakMap;let Ye;function Fi(e,t=!1,s=Ye){if(s){let n=Jt.get(s);n||Jt.set(s,n=[]),n.push(e)}}function Di(e,t,s=U){const{immediate:n,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=s,h=R=>r?R:pe(R)||r===!1||r===0?Re(R,1):Re(R);let a,p,w,T,O=!1,C=!1;if(Z(e)?(p=()=>e.value,O=pe(e)):nt(e)?(p=()=>h(e),O=!0):M(e)?(C=!0,O=e.some(R=>nt(R)||pe(R)),p=()=>e.map(R=>{if(Z(R))return R.value;if(nt(R))return h(R);if(F(R))return c?c(R,2):R()})):F(e)?t?p=c?()=>c(e,2):e:p=()=>{if(w){Fe();try{w()}finally{De()}}const R=Ye;Ye=a;try{return c?c(e,3,[T]):e(T)}finally{Ye=R}}:p=Te,t&&r){const R=p,Y=r===!0?1/0:r;p=()=>Re(R(),Y)}const A=oi(),j=()=>{a.stop(),A&&A.active&&$s(A.effects,a)};if(i&&t){const R=t;t=(...Y)=>{R(...Y),j()}}let q=C?new Array(e.length).fill($t):$t;const k=R=>{if(!(!(a.flags&1)||!a.dirty&&!R))if(t){const Y=a.run();if(r||O||(C?Y.some((je,_e)=>Ue(je,q[_e])):Ue(Y,q))){w&&w();const je=Ye;Ye=a;try{const _e=[Y,q===$t?void 0:C&&q[0]===$t?[]:q,T];q=Y,c?c(t,3,_e):t(..._e)}finally{Ye=je}}}else a.run()};return l&&l(k),a=new Xn(p),a.scheduler=o?()=>o(k,!1):k,T=R=>Fi(R,!1,a),w=a.onStop=()=>{const R=Jt.get(a);if(R){if(c)c(R,4);else for(const Y of R)Y();Jt.delete(a)}},t?n?k(!0):q=a.run():o?o(k.bind(null,!0),!0):a.run(),j.pause=a.pause.bind(a),j.resume=a.resume.bind(a),j.stop=j,j}function Re(e,t=1/0,s){if(t<=0||!W(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,Z(e))Re(e.value,t,s);else if(M(e))for(let n=0;n{Re(n,t,s)});else if(Wn(e)){for(const n in e)Re(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Re(e[n],t,s)}return e}/** -* @vue/runtime-core v3.5.22 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Mt(e,t,s,n){try{return n?e(...n):e()}catch(r){is(r,t,s)}}function Oe(e,t,s,n){if(F(e)){const r=Mt(e,t,s,n);return r&&Kn(r)&&r.catch(i=>{is(i,t,s)}),r}if(M(e)){const r=[];for(let i=0;i>>1,r=se[n],i=Et(r);i=Et(s)?se.push(e):se.splice(Hi(t),0,e),e.flags|=1,hr()}}function hr(){kt||(kt=dr.then(gr))}function Li(e){M(e)?rt.push(...e):Le&&e.id===-1?Le.splice(et+1,0,e):e.flags&1||(rt.push(e),e.flags|=1),hr()}function hn(e,t,s=we+1){for(;sEt(s)-Et(n));if(rt.length=0,Le){Le.push(...t);return}for(Le=t,et=0;ete.id==null?e.flags&2?-1:1/0:e.id;function gr(e){try{for(we=0;we{n._d&&Cn(-1);const i=Gt(t);let o;try{o=e(...r)}finally{Gt(i),n._d&&Cn(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Ut(e,t){if(he===null)return e;const s=cs(he),n=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Ki=Symbol("_leaveCb");function Xs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Xs(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 _r(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Yt=new WeakMap;function yt(e,t,s,n,r=!1){if(M(e)){e.forEach((O,C)=>yt(O,t&&(M(t)?t[C]:t),s,n,r));return}if(xt(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&yt(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?cs(n.component):n.el,o=r?null:i,{i:l,r:c}=e,h=t&&t.r,a=l.refs===U?l.refs={}:l.refs,p=l.setupState,w=H(p),T=p===U?Vn:O=>L(w,O);if(h!=null&&h!==c){if(pn(t),G(h))a[h]=null,T(h)&&(p[h]=null);else if(Z(h)){h.value=null;const O=t;O.k&&(a[O.k]=null)}}if(F(c))Mt(c,l,12,[o,a]);else{const O=G(c),C=Z(c);if(O||C){const A=()=>{if(e.f){const j=O?T(c)?p[c]:a[c]:c.value;if(r)M(j)&&$s(j,i);else if(M(j))j.includes(i)||j.push(i);else if(O)a[c]=[i],T(c)&&(p[c]=a[c]);else{const q=[i];c.value=q,e.k&&(a[e.k]=q)}}else O?(a[c]=o,T(c)&&(p[c]=o)):C&&(c.value=o,e.k&&(a[e.k]=o))};if(o){const j=()=>{A(),Yt.delete(e)};j.id=-1,Yt.set(e,j),ue(j,s)}else pn(e),A()}}}function pn(e){const t=Yt.get(e);t&&(t.flags|=8,Yt.delete(e))}ss().requestIdleCallback;ss().cancelIdleCallback;const xt=e=>!!e.type.__asyncLoader,br=e=>e.type.__isKeepAlive;function Bi(e,t){yr(e,"a",t)}function Wi(e,t){yr(e,"da",t)}function yr(e,t,s=ne){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(os(t,n,s),s){let r=s.parent;for(;r&&r.parent;)br(r.parent.vnode)&&qi(n,t,s,r),r=r.parent}}function qi(e,t,s,n){const r=os(t,e,n,!0);vr(()=>{$s(n[t],r)},s)}function os(e,t,s=ne,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Fe();const l=Rt(s),c=Oe(t,s,e,o);return l(),De(),c});return n?r.unshift(i):r.push(i),i}}const Ne=e=>(t,s=ne)=>{(!At||e==="sp")&&os(e,(...n)=>t(...n),s)},Ji=Ne("bm"),xr=Ne("m"),ki=Ne("bu"),Gi=Ne("u"),Yi=Ne("bum"),vr=Ne("um"),zi=Ne("sp"),Xi=Ne("rtg"),Zi=Ne("rtc");function Qi(e,t=ne){os("ec",e,t)}const eo=Symbol.for("v-ndc");function gn(e,t,s,n){let r;const i=s,o=M(e);if(o||G(e)){const l=o&&nt(e);let c=!1,h=!1;l&&(c=!pe(e),h=Ke(e),e=rs(e)),r=new Array(e.length);for(let a=0,p=e.length;at(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,h=l.length;ce?Kr(e)?cs(e):Ms(e.parent):null,vt=re(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=>Ms(e.parent),$root:e=>Ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>wr(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=ji.bind(e.proxy)),$watch:e=>wo.bind(e)}),_s=(e,t)=>e!==U&&!e.__isScriptSetup&&L(e,t),to={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let h;if(t[0]!=="$"){const T=o[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(_s(n,t))return o[t]=1,n[t];if(r!==U&&L(r,t))return o[t]=2,r[t];if((h=e.propsOptions[0])&&L(h,t))return o[t]=3,i[t];if(s!==U&&L(s,t))return o[t]=4,s[t];Rs&&(o[t]=0)}}const a=vt[t];let p,w;if(a)return t==="$attrs"&&X(e.attrs,"get",""),a(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(s!==U&&L(s,t))return o[t]=4,s[t];if(w=c.config.globalProperties,L(w,t))return w[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return _s(r,t)?(r[t]=s,!0):n!==U&&L(n,t)?(n[t]=s,!0):L(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,propsOptions:i,type:o}},l){let c,h;return!!(s[l]||e!==U&&l[0]!=="$"&&L(e,l)||_s(t,l)||(c=i[0])&&L(c,l)||L(n,l)||L(vt,l)||L(r.config.globalProperties,l)||(h=o.__cssModules)&&h[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:L(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function mn(e){return M(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Rs=!0;function so(e){const t=wr(e),s=e.proxy,n=e.ctx;Rs=!1,t.beforeCreate&&_n(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:h,created:a,beforeMount:p,mounted:w,beforeUpdate:T,updated:O,activated:C,deactivated:A,beforeDestroy:j,beforeUnmount:q,destroyed:k,unmounted:R,render:Y,renderTracked:je,renderTriggered:_e,errorCaptured:He,serverPrefetch:It,expose:We,inheritAttrs:ft,components:Ft,directives:Dt,filters:us}=t;if(h&&no(h,n,null),o)for(const J in o){const V=o[J];F(V)&&(n[J]=V.bind(s))}if(r){const J=r.call(s,s);W(J)&&(e.data=Tt(J))}if(Rs=!0,i)for(const J in i){const V=i[J],qe=F(V)?V.bind(s,s):F(V.get)?V.get.bind(s,s):Te,Nt=!F(V)&&F(V.set)?V.set.bind(s):Te,Je=Jo({get:qe,set:Nt});Object.defineProperty(n,J,{enumerable:!0,configurable:!0,get:()=>Je.value,set:be=>Je.value=be})}if(l)for(const J in l)Sr(l[J],n,s,J);if(c){const J=F(c)?c.call(s):c;Reflect.ownKeys(J).forEach(V=>{co(V,J[V])})}a&&_n(a,e,"c");function Q(J,V){M(V)?V.forEach(qe=>J(qe.bind(s))):V&&J(V.bind(s))}if(Q(Ji,p),Q(xr,w),Q(ki,T),Q(Gi,O),Q(Bi,C),Q(Wi,A),Q(Qi,He),Q(Zi,je),Q(Xi,_e),Q(Yi,q),Q(vr,R),Q(zi,It),M(We))if(We.length){const J=e.exposed||(e.exposed={});We.forEach(V=>{Object.defineProperty(J,V,{get:()=>s[V],set:qe=>s[V]=qe,enumerable:!0})})}else e.exposed||(e.exposed={});Y&&e.render===Te&&(e.render=Y),ft!=null&&(e.inheritAttrs=ft),Ft&&(e.components=Ft),Dt&&(e.directives=Dt),It&&_r(e)}function no(e,t,s=Te){M(e)&&(e=Is(e));for(const n in e){const r=e[n];let i;W(r)?"default"in r?i=Kt(r.from||n,r.default,!0):i=Kt(r.from||n):i=Kt(r),Z(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function _n(e,t,s){Oe(M(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Sr(e,t,s,n){let r=n.includes(".")?jr(s,n):()=>s[n];if(G(e)){const i=t[e];F(i)&&ys(r,i)}else if(F(e))ys(r,e.bind(s));else if(W(e))if(M(e))e.forEach(i=>Sr(i,t,s,n));else{const i=F(e.handler)?e.handler.bind(s):t[e.handler];F(i)&&ys(r,i,e)}}function wr(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!s&&!n?c=t:(c={},r.length&&r.forEach(h=>zt(c,h,o,!0)),zt(c,t,o)),W(t)&&i.set(t,c),c}function zt(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&zt(e,i,s,!0),r&&r.forEach(o=>zt(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=ro[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const ro={data:bn,props:yn,emits:yn,methods:gt,computed:gt,beforeCreate:ee,created:ee,beforeMount:ee,mounted:ee,beforeUpdate:ee,updated:ee,beforeDestroy:ee,beforeUnmount:ee,destroyed:ee,unmounted:ee,activated:ee,deactivated:ee,errorCaptured:ee,serverPrefetch:ee,components:gt,directives:gt,watch:oo,provide:bn,inject:io};function bn(e,t){return t?e?function(){return re(F(e)?e.call(this,this):e,F(t)?t.call(this,this):t)}:t:e}function io(e,t){return gt(Is(e),Is(t))}function Is(e){if(M(e)){const t={};for(let s=0;s1)return s&&F(t)?t.call(n&&n.proxy):t}}const Tr={},Er=()=>Object.create(Tr),Or=e=>Object.getPrototypeOf(e)===Tr;function uo(e,t,s,n=!1){const r={},i=Er();e.propsDefaults=Object.create(null),Ar(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);s?e.props=n?r:Ti(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function ao(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=H(r),[c]=e.propsOptions;let h=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let p=0;p{c=!0;const[w,T]=Pr(p,t,!0);re(o,w),T&&l.push(...T)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return W(e)&&n.set(e,tt),tt;if(M(i))for(let a=0;ae==="_"||e==="_ctx"||e==="$stable",Qs=e=>M(e)?e.map(Ce):[Ce(e)],po=(e,t,s)=>{if(t._n)return t;const n=$i((...r)=>Qs(t(...r)),s);return n._c=!1,n},Mr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Zs(r))continue;const i=e[r];if(F(i))t[r]=po(r,i,n);else if(i!=null){const o=Qs(i);t[r]=()=>o}}},Rr=(e,t)=>{const s=Qs(t);e.slots.default=()=>s},Ir=(e,t,s)=>{for(const n in t)(s||!Zs(n))&&(e[n]=t[n])},go=(e,t,s)=>{const n=e.slots=Er();if(e.vnode.shapeFlag&32){const r=t._;r?(Ir(n,t,s),s&&Jn(n,"_",r,!0)):Mr(t,n)}else t&&Rr(e,t)},mo=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,o=U;if(n.shapeFlag&32){const l=t._;l?s&&l===1?i=!1:Ir(r,t,s):(i=!t.$stable,Mr(t,r)),o=t}else t&&(Rr(e,t),o={default:1});if(i)for(const l in r)!Zs(l)&&o[l]==null&&delete r[l]},ue=Ro;function _o(e){return bo(e)}function bo(e,t){const s=ss();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:h,setElementText:a,parentNode:p,nextSibling:w,setScopeId:T=Te,insertStaticContent:O}=e,C=(f,u,d,_=null,g=null,m=null,v=void 0,x=null,y=!!u.dynamicChildren)=>{if(f===u)return;f&&!ht(f,u)&&(_=jt(f),be(f,g,m,!0),f=null),u.patchFlag===-2&&(y=!1,u.dynamicChildren=null);const{type:b,ref:P,shapeFlag:S}=u;switch(b){case fs:A(f,u,d,_);break;case Be:j(f,u,d,_);break;case xs:f==null&&q(u,d,_,v);break;case ge:Ft(f,u,d,_,g,m,v,x,y);break;default:S&1?Y(f,u,d,_,g,m,v,x,y):S&6?Dt(f,u,d,_,g,m,v,x,y):(S&64||S&128)&&b.process(f,u,d,_,g,m,v,x,y,ut)}P!=null&&g?yt(P,f&&f.ref,m,u||f,!u):P==null&&f&&f.ref!=null&&yt(f.ref,null,m,f,!0)},A=(f,u,d,_)=>{if(f==null)n(u.el=l(u.children),d,_);else{const g=u.el=f.el;u.children!==f.children&&h(g,u.children)}},j=(f,u,d,_)=>{f==null?n(u.el=c(u.children||""),d,_):u.el=f.el},q=(f,u,d,_)=>{[f.el,f.anchor]=O(f.children,u,d,_,f.el,f.anchor)},k=({el:f,anchor:u},d,_)=>{let g;for(;f&&f!==u;)g=w(f),n(f,d,_),f=g;n(u,d,_)},R=({el:f,anchor:u})=>{let d;for(;f&&f!==u;)d=w(f),r(f),f=d;r(u)},Y=(f,u,d,_,g,m,v,x,y)=>{u.type==="svg"?v="svg":u.type==="math"&&(v="mathml"),f==null?je(u,d,_,g,m,v,x,y):It(f,u,g,m,v,x,y)},je=(f,u,d,_,g,m,v,x)=>{let y,b;const{props:P,shapeFlag:S,transition:E,dirs:I}=f;if(y=f.el=o(f.type,m,P&&P.is,P),S&8?a(y,f.children):S&16&&He(f.children,y,null,_,g,bs(f,m),v,x),I&&ke(f,null,_,"created"),_e(y,f,f.scopeId,v,_),P){for(const K in P)K!=="value"&&!mt(K)&&i(y,K,null,P[K],m,_);"value"in P&&i(y,"value",null,P.value,m),(b=P.onVnodeBeforeMount)&&Se(b,_,f)}I&&ke(f,null,_,"beforeMount");const N=yo(g,E);N&&E.beforeEnter(y),n(y,u,d),((b=P&&P.onVnodeMounted)||N||I)&&ue(()=>{b&&Se(b,_,f),N&&E.enter(y),I&&ke(f,null,_,"mounted")},g)},_e=(f,u,d,_,g)=>{if(d&&T(f,d),_)for(let m=0;m<_.length;m++)T(f,_[m]);if(g){let m=g.subTree;if(u===m||Lr(m.type)&&(m.ssContent===u||m.ssFallback===u)){const v=g.vnode;_e(f,v,v.scopeId,v.slotScopeIds,g.parent)}}},He=(f,u,d,_,g,m,v,x,y=0)=>{for(let b=y;b{const x=u.el=f.el;let{patchFlag:y,dynamicChildren:b,dirs:P}=u;y|=f.patchFlag&16;const S=f.props||U,E=u.props||U;let I;if(d&&Ge(d,!1),(I=E.onVnodeBeforeUpdate)&&Se(I,d,u,f),P&&ke(u,f,d,"beforeUpdate"),d&&Ge(d,!0),(S.innerHTML&&E.innerHTML==null||S.textContent&&E.textContent==null)&&a(x,""),b?We(f.dynamicChildren,b,x,d,_,bs(u,g),m):v||V(f,u,x,null,d,_,bs(u,g),m,!1),y>0){if(y&16)ft(x,S,E,d,g);else if(y&2&&S.class!==E.class&&i(x,"class",null,E.class,g),y&4&&i(x,"style",S.style,E.style,g),y&8){const N=u.dynamicProps;for(let K=0;K{I&&Se(I,d,u,f),P&&ke(u,f,d,"updated")},_)},We=(f,u,d,_,g,m,v)=>{for(let x=0;x{if(u!==d){if(u!==U)for(const m in u)!mt(m)&&!(m in d)&&i(f,m,u[m],null,g,_);for(const m in d){if(mt(m))continue;const v=d[m],x=u[m];v!==x&&m!=="value"&&i(f,m,x,v,g,_)}"value"in d&&i(f,"value",u.value,d.value,g)}},Ft=(f,u,d,_,g,m,v,x,y)=>{const b=u.el=f?f.el:l(""),P=u.anchor=f?f.anchor:l("");let{patchFlag:S,dynamicChildren:E,slotScopeIds:I}=u;I&&(x=x?x.concat(I):I),f==null?(n(b,d,_),n(P,d,_),He(u.children||[],d,P,g,m,v,x,y)):S>0&&S&64&&E&&f.dynamicChildren?(We(f.dynamicChildren,E,d,g,m,v,x),(u.key!=null||g&&u===g.subTree)&&Fr(f,u,!0)):V(f,u,d,P,g,m,v,x,y)},Dt=(f,u,d,_,g,m,v,x,y)=>{u.slotScopeIds=x,f==null?u.shapeFlag&512?g.ctx.activate(u,d,_,v,y):us(u,d,_,g,m,v,y):tn(f,u,y)},us=(f,u,d,_,g,m,v)=>{const x=f.component=$o(f,_,g);if(br(f)&&(x.ctx.renderer=ut),Vo(x,!1,v),x.asyncDep){if(g&&g.registerDep(x,Q,v),!f.el){const y=x.subTree=Ie(Be);j(null,y,u,d),f.placeholder=y.el}}else Q(x,f,u,d,g,m,v)},tn=(f,u,d)=>{const _=u.component=f.component;if(Po(f,u,d))if(_.asyncDep&&!_.asyncResolved){J(_,u,d);return}else _.next=u,_.update();else u.el=f.el,_.vnode=u},Q=(f,u,d,_,g,m,v)=>{const x=()=>{if(f.isMounted){let{next:S,bu:E,u:I,parent:N,vnode:K}=f;{const xe=Dr(f);if(xe){S&&(S.el=K.el,J(f,S,v)),xe.asyncDep.then(()=>{f.isUnmounted||x()});return}}let $=S,ie;Ge(f,!1),S?(S.el=K.el,J(f,S,v)):S=K,E&&Vt(E),(ie=S.props&&S.props.onVnodeBeforeUpdate)&&Se(ie,N,S,K),Ge(f,!0);const oe=Sn(f),ye=f.subTree;f.subTree=oe,C(ye,oe,p(ye.el),jt(ye),f,g,m),S.el=oe.el,$===null&&Mo(f,oe.el),I&&ue(I,g),(ie=S.props&&S.props.onVnodeUpdated)&&ue(()=>Se(ie,N,S,K),g)}else{let S;const{el:E,props:I}=u,{bm:N,m:K,parent:$,root:ie,type:oe}=f,ye=xt(u);Ge(f,!1),N&&Vt(N),!ye&&(S=I&&I.onVnodeBeforeMount)&&Se(S,$,u),Ge(f,!0);{ie.ce&&ie.ce._def.shadowRoot!==!1&&ie.ce._injectChildStyle(oe);const xe=f.subTree=Sn(f);C(null,xe,d,_,f,g,m),u.el=xe.el}if(K&&ue(K,g),!ye&&(S=I&&I.onVnodeMounted)){const xe=u;ue(()=>Se(S,$,xe),g)}(u.shapeFlag&256||$&&xt($.vnode)&&$.vnode.shapeFlag&256)&&f.a&&ue(f.a,g),f.isMounted=!0,u=d=_=null}};f.scope.on();const y=f.effect=new Xn(x);f.scope.off();const b=f.update=y.run.bind(y),P=f.job=y.runIfDirty.bind(y);P.i=f,P.id=f.uid,y.scheduler=()=>zs(P),Ge(f,!0),b()},J=(f,u,d)=>{u.component=f;const _=f.vnode.props;f.vnode=u,f.next=null,ao(f,u.props,_,d),mo(f,u.children,d),Fe(),hn(f),De()},V=(f,u,d,_,g,m,v,x,y=!1)=>{const b=f&&f.children,P=f?f.shapeFlag:0,S=u.children,{patchFlag:E,shapeFlag:I}=u;if(E>0){if(E&128){Nt(b,S,d,_,g,m,v,x,y);return}else if(E&256){qe(b,S,d,_,g,m,v,x,y);return}}I&8?(P&16&&ct(b,g,m),S!==b&&a(d,S)):P&16?I&16?Nt(b,S,d,_,g,m,v,x,y):ct(b,g,m,!0):(P&8&&a(d,""),I&16&&He(S,d,_,g,m,v,x,y))},qe=(f,u,d,_,g,m,v,x,y)=>{f=f||tt,u=u||tt;const b=f.length,P=u.length,S=Math.min(b,P);let E;for(E=0;EP?ct(f,g,m,!0,!1,S):He(u,d,_,g,m,v,x,y,S)},Nt=(f,u,d,_,g,m,v,x,y)=>{let b=0;const P=u.length;let S=f.length-1,E=P-1;for(;b<=S&&b<=E;){const I=f[b],N=u[b]=y?$e(u[b]):Ce(u[b]);if(ht(I,N))C(I,N,d,null,g,m,v,x,y);else break;b++}for(;b<=S&&b<=E;){const I=f[S],N=u[E]=y?$e(u[E]):Ce(u[E]);if(ht(I,N))C(I,N,d,null,g,m,v,x,y);else break;S--,E--}if(b>S){if(b<=E){const I=E+1,N=IE)for(;b<=S;)be(f[b],g,m,!0),b++;else{const I=b,N=b,K=new Map;for(b=N;b<=E;b++){const ce=u[b]=y?$e(u[b]):Ce(u[b]);ce.key!=null&&K.set(ce.key,b)}let $,ie=0;const oe=E-N+1;let ye=!1,xe=0;const at=new Array(oe);for(b=0;b=oe){be(ce,g,m,!0);continue}let ve;if(ce.key!=null)ve=K.get(ce.key);else for($=N;$<=E;$++)if(at[$-N]===0&&ht(ce,u[$])){ve=$;break}ve===void 0?be(ce,g,m,!0):(at[ve-N]=b+1,ve>=xe?xe=ve:ye=!0,C(ce,u[ve],d,null,g,m,v,x,y),ie++)}const rn=ye?xo(at):tt;for($=rn.length-1,b=oe-1;b>=0;b--){const ce=N+b,ve=u[ce],on=u[ce+1],ln=ce+1{const{el:m,type:v,transition:x,children:y,shapeFlag:b}=f;if(b&6){Je(f.component.subTree,u,d,_);return}if(b&128){f.suspense.move(u,d,_);return}if(b&64){v.move(f,u,d,ut);return}if(v===ge){n(m,u,d);for(let S=0;Sx.enter(m),g);else{const{leave:S,delayLeave:E,afterLeave:I}=x,N=()=>{f.ctx.isUnmounted?r(m):n(m,u,d)},K=()=>{m._isLeaving&&m[Ki](!0),S(m,()=>{N(),I&&I()})};E?E(m,N,K):K()}else n(m,u,d)},be=(f,u,d,_=!1,g=!1)=>{const{type:m,props:v,ref:x,children:y,dynamicChildren:b,shapeFlag:P,patchFlag:S,dirs:E,cacheIndex:I}=f;if(S===-2&&(g=!1),x!=null&&(Fe(),yt(x,null,d,f,!0),De()),I!=null&&(u.renderCache[I]=void 0),P&256){u.ctx.deactivate(f);return}const N=P&1&&E,K=!xt(f);let $;if(K&&($=v&&v.onVnodeBeforeUnmount)&&Se($,u,f),P&6)kr(f.component,d,_);else{if(P&128){f.suspense.unmount(d,_);return}N&&ke(f,null,u,"beforeUnmount"),P&64?f.type.remove(f,u,d,ut,_):b&&!b.hasOnce&&(m!==ge||S>0&&S&64)?ct(b,u,d,!1,!0):(m===ge&&S&384||!g&&P&16)&&ct(y,u,d),_&&sn(f)}(K&&($=v&&v.onVnodeUnmounted)||N)&&ue(()=>{$&&Se($,u,f),N&&ke(f,null,u,"unmounted")},d)},sn=f=>{const{type:u,el:d,anchor:_,transition:g}=f;if(u===ge){Jr(d,_);return}if(u===xs){R(f);return}const m=()=>{r(d),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(f.shapeFlag&1&&g&&!g.persisted){const{leave:v,delayLeave:x}=g,y=()=>v(d,m);x?x(f.el,m,y):y()}else m()},Jr=(f,u)=>{let d;for(;f!==u;)d=w(f),r(f),f=d;r(u)},kr=(f,u,d)=>{const{bum:_,scope:g,job:m,subTree:v,um:x,m:y,a:b}=f;vn(y),vn(b),_&&Vt(_),g.stop(),m&&(m.flags|=8,be(v,f,u,d)),x&&ue(x,u),ue(()=>{f.isUnmounted=!0},u)},ct=(f,u,d,_=!1,g=!1,m=0)=>{for(let v=m;v{if(f.shapeFlag&6)return jt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const u=w(f.anchor||f.el),d=u&&u[Ui];return d?w(d):u};let as=!1;const nn=(f,u,d)=>{f==null?u._vnode&&be(u._vnode,null,null,!0):C(u._vnode||null,f,u,null,null,null,d),u._vnode=f,as||(as=!0,hn(),pr(),as=!1)},ut={p:C,um:be,m:Je,r:sn,mt:us,mc:He,pc:V,pbc:We,n:jt,o:e};return{render:nn,hydrate:void 0,createApp:fo(nn)}}function bs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Ge({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function yo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Fr(e,t,s=!1){const n=e.children,r=t.children;if(M(n)&&M(r))for(let i=0;i>1,e[s[l]]0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,o=s[i-1];i-- >0;)s[i]=o,o=t[o];return s}function Dr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Dr(t)}function vn(e){if(e)for(let t=0;tKt(vo);function ys(e,t,s){return Nr(e,t,s)}function Nr(e,t,s=U){const{immediate:n,deep:r,flush:i,once:o}=s,l=re({},s),c=t&&n||!t&&i!=="post";let h;if(At){if(i==="sync"){const T=So();h=T.__watcherHandles||(T.__watcherHandles=[])}else if(!c){const T=()=>{};return T.stop=Te,T.resume=Te,T.pause=Te,T}}const a=ne;l.call=(T,O,C)=>Oe(T,a,O,C);let p=!1;i==="post"?l.scheduler=T=>{ue(T,a&&a.suspense)}:i!=="sync"&&(p=!0,l.scheduler=(T,O)=>{O?T():zs(T)}),l.augmentJob=T=>{t&&(T.flags|=4),p&&(T.flags|=2,a&&(T.id=a.uid,T.i=a))};const w=Di(e,t,l);return At&&(h?h.push(w):c&&w()),w}function wo(e,t,s){const n=this.proxy,r=G(e)?e.includes(".")?jr(n,e):()=>n[e]:e.bind(n,n);let i;F(t)?i=t:(i=t.handler,s=t);const o=Rt(this),l=Nr(r,i.bind(n),s);return o(),l}function jr(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ve(t)}Modifiers`]||e[`${Ze(t)}Modifiers`];function To(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||U;let r=s;const i=t.startsWith("update:"),o=i&&Co(n,t.slice(7));o&&(o.trim&&(r=s.map(a=>G(a)?a.trim():a)),o.number&&(r=s.map(Cs)));let l,c=n[l=ds(t)]||n[l=ds(Ve(t))];!c&&i&&(c=n[l=ds(Ze(t))]),c&&Oe(c,e,6,r);const h=n[l+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Oe(h,e,6,r)}}const Eo=new WeakMap;function Hr(e,t,s=!1){const n=s?Eo:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!F(e)){const c=h=>{const a=Hr(h,t,!0);a&&(l=!0,re(o,a))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(W(e)&&n.set(e,null),null):(M(i)?i.forEach(c=>o[c]=null):re(o,i),W(e)&&n.set(e,o),o)}function ls(e,t){return!e||!Qt(t)?!1:(t=t.slice(2).replace(/Once$/,""),L(e,t[0].toLowerCase()+t.slice(1))||L(e,Ze(t))||L(e,t))}function Sn(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:h,renderCache:a,props:p,data:w,setupState:T,ctx:O,inheritAttrs:C}=e,A=Gt(e);let j,q;try{if(s.shapeFlag&4){const R=r||n,Y=R;j=Ce(h.call(Y,R,a,p,T,w,O)),q=l}else{const R=t;j=Ce(R.length>1?R(p,{attrs:l,slots:o,emit:c}):R(p,null)),q=t.props?l:Oo(l)}}catch(R){St.length=0,is(R,e,1),j=Ie(Be)}let k=j;if(q&&C!==!1){const R=Object.keys(q),{shapeFlag:Y}=k;R.length&&Y&7&&(i&&R.some(Ls)&&(q=Ao(q,i)),k=lt(k,q,!1,!0))}return s.dirs&&(k=lt(k,null,!1,!0),k.dirs=k.dirs?k.dirs.concat(s.dirs):s.dirs),s.transition&&Xs(k,s.transition),j=k,Gt(A),j}const Oo=e=>{let t;for(const s in e)(s==="class"||s==="style"||Qt(s))&&((t||(t={}))[s]=e[s]);return t},Ao=(e,t)=>{const s={};for(const n in e)(!Ls(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function Po(e,t,s){const{props:n,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,h=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?wn(n,o,h):!!o;if(c&8){const a=t.dynamicProps;for(let p=0;pe.__isSuspense;function Ro(e,t){t&&t.pendingBranch?M(e)?t.effects.push(...e):t.effects.push(e):Li(e)}const ge=Symbol.for("v-fgt"),fs=Symbol.for("v-txt"),Be=Symbol.for("v-cmt"),xs=Symbol.for("v-stc"),St=[];let ae=null;function te(e=!1){St.push(ae=e?null:[])}function Io(){St.pop(),ae=St[St.length-1]||null}let Ot=1;function Cn(e,t=!1){Ot+=e,e<0&&ae&&t&&(ae.hasOnce=!0)}function $r(e){return e.dynamicChildren=Ot>0?ae||tt:null,Io(),Ot>0&&ae&&ae.push(e),e}function le(e,t,s,n,r,i){return $r(D(e,t,s,n,r,i,!0))}function Fo(e,t,s,n,r){return $r(Ie(e,t,s,n,r,!0))}function Ur(e){return e?e.__v_isVNode===!0:!1}function ht(e,t){return e.type===t.type&&e.key===t.key}const Vr=({key:e})=>e??null,Bt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?G(e)||Z(e)||F(e)?{i:he,r:e,k:t,f:!!s}:e:null);function D(e,t=null,s=null,n=0,r=null,i=e===ge?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Vr(t),ref:t&&Bt(t),scopeId:mr,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:he};return l?(en(c,s),i&128&&e.normalize(c)):s&&(c.shapeFlag|=G(s)?8:16),Ot>0&&!o&&ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&ae.push(c),c}const Ie=Do;function Do(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===eo)&&(e=Be),Ur(e)){const l=lt(e,t,!0);return s&&en(l,s),Ot>0&&!i&&ae&&(l.shapeFlag&6?ae[ae.indexOf(e)]=l:ae.push(l)),l.patchFlag=-2,l}if(qo(e)&&(e=e.__vccOpts),t){t=No(t);let{class:l,style:c}=t;l&&!G(l)&&(t.class=Ks(l)),W(c)&&(Ys(c)&&!M(c)&&(c=re({},c)),t.style=Vs(c))}const o=G(e)?1:Lr(e)?128:Vi(e)?64:W(e)?4:F(e)?2:0;return D(e,t,s,n,r,o,i,!0)}function No(e){return e?Ys(e)||Or(e)?re({},e):e:null}function lt(e,t,s=!1,n=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,h=t?jo(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Vr(h),ref:t&&t.ref?s&&i?M(i)?i.concat(Bt(t)):[i,Bt(t)]:Bt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?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&<(e.ssContent),ssFallback:e.ssFallback&<(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&n&&Xs(a,c.clone(a)),a}function Ds(e=" ",t=0){return Ie(fs,null,e,t)}function pt(e="",t=!1){return t?(te(),Fo(Be,null,e)):Ie(Be,null,e)}function Ce(e){return e==null||typeof e=="boolean"?Ie(Be):M(e)?Ie(ge,null,e.slice()):Ur(e)?$e(e):Ie(fs,null,String(e))}function $e(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:lt(e)}function en(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(M(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),en(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!Or(t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else F(t)?(t={default:t,_ctx:he},s=32):(t=String(t),n&64?(s=16,t=[Ds(t)]):s=8);e.children=t,e.shapeFlag|=s}function jo(...e){const t={};for(let s=0;sne||he;let Xt,Ns;{const e=ss(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Xt=t("__VUE_INSTANCE_SETTERS__",s=>ne=s),Ns=t("__VUE_SSR_SETTERS__",s=>At=s)}const Rt=e=>{const t=ne;return Xt(e),e.scope.on(),()=>{e.scope.off(),Xt(t)}},Tn=()=>{ne&&ne.scope.off(),Xt(null)};function Kr(e){return e.vnode.shapeFlag&4}let At=!1;function Vo(e,t=!1,s=!1){t&&Ns(t);const{props:n,children:r}=e.vnode,i=Kr(e);uo(e,n,i,t),go(e,r,s||t);const o=i?Ko(e,t):void 0;return t&&Ns(!1),o}function Ko(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,to);const{setup:n}=s;if(n){Fe();const r=e.setupContext=n.length>1?Wo(e):null,i=Rt(e),o=Mt(n,e,0,[e.props,r]),l=Kn(o);if(De(),i(),(l||e.sp)&&!xt(e)&&_r(e),l){if(o.then(Tn,Tn),t)return o.then(c=>{En(e,c)}).catch(c=>{is(c,e,0)});e.asyncDep=o}else En(e,o)}else Br(e)}function En(e,t,s){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:W(t)&&(e.setupState=ar(t)),Br(e)}function Br(e,t,s){const n=e.type;e.render||(e.render=n.render||Te);{const r=Rt(e);Fe();try{so(e)}finally{De(),r()}}}const Bo={get(e,t){return X(e,"get",""),e[t]}};function Wo(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Bo),slots:e.slots,emit:e.emit,expose:t}}function cs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ar(Ei(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in vt)return vt[s](e)},has(t,s){return s in t||s in vt}})):e.proxy}function qo(e){return F(e)&&"__vccOpts"in e}const Jo=(e,t)=>Ii(e,t,At),ko="3.5.22";/** -* @vue/runtime-dom v3.5.22 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let js;const On=typeof window<"u"&&window.trustedTypes;if(On)try{js=On.createPolicy("vue",{createHTML:e=>e})}catch{}const Wr=js?e=>js.createHTML(e):e=>e,Go="http://www.w3.org/2000/svg",Yo="http://www.w3.org/1998/Math/MathML",Pe=typeof document<"u"?document:null,An=Pe&&Pe.createElement("template"),zo={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?Pe.createElementNS(Go,e):t==="mathml"?Pe.createElementNS(Yo,e):s?Pe.createElement(e,{is:s}):Pe.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>Pe.createTextNode(e),createComment:e=>Pe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Pe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,i){const o=s?s.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{An.innerHTML=Wr(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const l=An.content;if(n==="svg"||n==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Xo=Symbol("_vtc");function Zo(e,t,s){const n=e[Xo];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Pn=Symbol("_vod"),Qo=Symbol("_vsh"),el=Symbol(""),tl=/(?:^|;)\s*display\s*:/;function sl(e,t,s){const n=e.style,r=G(s);let i=!1;if(s&&!r){if(t)if(G(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Wt(n,l,"")}else for(const o in t)s[o]==null&&Wt(n,o,"");for(const o in s)o==="display"&&(i=!0),Wt(n,o,s[o])}else if(r){if(t!==s){const o=n[el];o&&(s+=";"+o),n.cssText=s,i=tl.test(s)}}else t&&e.removeAttribute("style");Pn in e&&(e[Pn]=i?n.display:"",e[Qo]&&(n.display="none"))}const Mn=/\s*!important$/;function Wt(e,t,s){if(M(s))s.forEach(n=>Wt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=nl(e,t);Mn.test(s)?e.setProperty(Ze(n),s.replace(Mn,""),"important"):e[n]=s}}const Rn=["Webkit","Moz","ms"],vs={};function nl(e,t){const s=vs[t];if(s)return s;let n=Ve(t);if(n!=="filter"&&n in e)return vs[t]=n;n=qn(n);for(let r=0;rSs||(ll.then(()=>Ss=0),Ss=Date.now());function cl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;Oe(ul(n,s.value),t,5,[n])};return s.value=e,s.attached=fl(),s}function ul(e,t){if(M(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const Hn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,al=(e,t,s,n,r,i)=>{const o=r==="svg";t==="class"?Zo(e,n,o):t==="style"?sl(e,s,n):Qt(t)?Ls(t)||il(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):dl(e,t,n,o))?(Dn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fn(e,t,n,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!G(n))?Dn(e,Ve(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Fn(e,t,n,o))};function dl(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Hn(t)&&F(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Hn(t)&&G(s)?!1:t in e}const Zt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return M(t)?s=>Vt(t,s):t};function hl(e){e.target.composing=!0}function Ln(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ot=Symbol("_assign"),ws={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[ot]=Zt(r);const i=n||r.props&&r.props.type==="number";ze(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;s&&(l=l.trim()),i&&(l=Cs(l)),e[ot](l)}),s&&ze(e,"change",()=>{e.value=e.value.trim()}),t||(ze(e,"compositionstart",hl),ze(e,"compositionend",Ln),ze(e,"change",Ln))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:i}},o){if(e[ot]=Zt(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Cs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===c)||(e.value=c))}},pl={deep:!0,created(e,t,s){e[ot]=Zt(s),ze(e,"change",()=>{const n=e._modelValue,r=gl(e),i=e.checked,o=e[ot];if(M(n)){const l=Gn(n,r),c=l!==-1;if(i&&!c)o(n.concat(r));else if(!i&&c){const h=[...n];h.splice(l,1),o(h)}}else if(es(n)){const l=new Set(n);i?l.add(r):l.delete(r),o(l)}else o(qr(e,i))})},mounted:$n,beforeUpdate(e,t,s){e[ot]=Zt(s),$n(e,t,s)}};function $n(e,{value:t,oldValue:s},n){e._modelValue=t;let r;if(M(t))r=Gn(t,n.props.value)>-1;else if(es(t))r=t.has(n.props.value);else{if(t===s)return;r=ns(t,qr(e,!0))}e.checked!==r&&(e.checked=r)}function gl(e){return"_value"in e?e._value:e.value}function qr(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const ml=["ctrl","shift","alt","meta"],_l={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ml.some(s=>e[`${s}Key`]&&!t.includes(s))},bl=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=(r,...i)=>{for(let o=0;o{const t=xl().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=wl(n);if(!r)return;const i=t._component;!F(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=s(r,!1,Sl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function Sl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wl(e){return G(e)?document.querySelector(e):e}const Cl={style:{"font-family":"system-ui, sans-serif",padding:"16px","max-width":"980px",margin:"0 auto"}},Tl={style:{display:"grid","grid-template-columns":"1fr 1fr",gap:"16px","align-items":"start"}},El={key:0},Ol={key:1,style:{width:"100%","border-collapse":"collapse"}},Al=["onClick"],Pl=["onClick"],Ml={key:0},Rl={key:1,style:{"max-height":"420px",overflow:"auto",border:"1px solid #ddd",padding:"8px"}},Il={key:0,style:{"font-size":"12px",color:"#444"}},Fl={key:0},Dl={key:1},Nl={key:1},jl={key:2,style:{color:"#a00"}},Hl={__name:"App",setup(e){const t=dn([]),s=dn([]),n=Tt({users:!1,requests:!1}),r=Tt({username:"",password:"",vlan:"",disabled:!1});async function i(){n.users=!0;try{const C=await(await fetch("/api/users")).json();t.value=C.items||[]}finally{n.users=!1}}async function o(){n.requests=!0;try{const C=await(await fetch("/api/requests")).json();s.value=C.items||[]}finally{n.requests=!1}}async function l(){const O={...r};O.vlan||delete O.vlan,await fetch("/api/users",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(O)}),r.username="",r.password="",r.vlan="",r.disabled=!1,await i()}async function c(O){await fetch(`/api/users/${encodeURIComponent(O.username)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:!O.disabled})}),await i()}async function h(O){confirm(`Eliminar ${O.username}?`)&&(await fetch(`/api/users/${encodeURIComponent(O.username)}`,{method:"DELETE"}),await i())}async function a(){await o()}async function p(){await fetch("/api/requests",{method:"DELETE"}),await o()}async function w(){await fetch("/test/radius",{method:"POST"})}function T(){const O=new EventSource("/api/events");O.addEventListener("message",C=>{try{const A=JSON.parse(C.data);A&&A.ts&&s.value.push(A)}catch{}}),O.addEventListener("clear",()=>{s.value=[]})}return xr(async()=>{await i(),await o(),T()}),(O,C)=>(te(),le("main",Cl,[C[10]||(C[10]=D("h1",null,"RADIUS Dashboard",-1)),D("section",Tl,[D("div",null,[C[7]||(C[7]=D("h2",null,"Usuarios",-1)),D("form",{onSubmit:bl(l,["prevent"]),style:{display:"grid","grid-template-columns":"1fr 1fr",gap:"8px","margin-bottom":"12px"}},[Ut(D("input",{"onUpdate:modelValue":C[0]||(C[0]=A=>r.username=A),placeholder:"usuario",required:""},null,512),[[ws,r.username]]),Ut(D("input",{"onUpdate:modelValue":C[1]||(C[1]=A=>r.password=A),placeholder:"contraseña",required:""},null,512),[[ws,r.password]]),Ut(D("input",{"onUpdate:modelValue":C[2]||(C[2]=A=>r.vlan=A),placeholder:"VLAN"},null,512),[[ws,r.vlan]]),D("label",null,[Ut(D("input",{type:"checkbox","onUpdate:modelValue":C[3]||(C[3]=A=>r.disabled=A)},null,512),[[pl,r.disabled]]),C[4]||(C[4]=Ds(" deshabilitado",-1))]),C[5]||(C[5]=D("button",{type:"submit"},"Crear / Actualizar",-1))],32),n.users?(te(),le("div",El,"Cargando usuarios…")):(te(),le("table",Ol,[C[6]||(C[6]=D("thead",null,[D("tr",null,[D("th",{style:{"text-align":"left"}},"Usuario"),D("th",{style:{"text-align":"left"}},"VLAN"),D("th",{style:{"text-align":"left"}},"Estado"),D("th")])],-1)),D("tbody",null,[(te(!0),le(ge,null,gn(t.value,A=>(te(),le("tr",{key:A.username},[D("td",null,de(A.username),1),D("td",null,de(A.vlan),1),D("td",null,de(A.disabled?"deshabilitado":"activo"),1),D("td",null,[D("button",{onClick:j=>c(A)},de(A.disabled?"Habilitar":"Deshabilitar"),9,Al),D("button",{onClick:j=>h(A),style:{"margin-left":"6px"}},"Eliminar",8,Pl)])]))),128))])]))]),D("div",null,[C[9]||(C[9]=D("h2",null,"Eventos",-1)),D("div",{style:{"margin-bottom":"8px",display:"flex",gap:"8px"}},[D("button",{onClick:a},"Refrescar"),D("button",{onClick:p},"Limpiar"),D("button",{onClick:w},"Self test"),C[8]||(C[8]=D("a",{href:"/api/requests.csv",target:"_blank"},"Descargar CSV",-1))]),n.requests?(te(),le("div",Ml,"Cargando eventos…")):(te(),le("div",Rl,[(te(!0),le(ge,null,gn(s.value,A=>(te(),le("div",{key:A.id,style:{"border-bottom":"1px dashed #ddd",padding:"6px 0"}},[D("div",null,[D("b",null,de(A.ts),1),Ds(" — "+de(A.type),1)]),A.attrs?(te(),le("div",Il,[D("span",null,"User: "+de(A.attrs["User-Name"]||A.attrs["User-Name*0"]),1),A.attrs["NAS-IP-Address"]?(te(),le("span",Fl," — NAS: "+de(A.attrs["NAS-IP-Address"]),1)):pt("",!0),A.attrs["Calling-Station-Id"]?(te(),le("span",Dl," — STA: "+de(A.attrs["Calling-Station-Id"]),1)):pt("",!0)])):pt("",!0),A.decision?(te(),le("div",Nl,"Decision: "+de(A.decision),1)):pt("",!0),A.error?(te(),le("div",jl,"Error: "+de(A.error),1)):pt("",!0)]))),128))]))])])]))}};vl(Hl).mount("#app"); diff --git a/frontend/dist/icons/clear.svg b/frontend/dist/icons/clear.svg new file mode 100644 index 0000000..46001e5 --- /dev/null +++ b/frontend/dist/icons/clear.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/copy.svg b/frontend/dist/icons/copy.svg new file mode 100644 index 0000000..e2069e5 --- /dev/null +++ b/frontend/dist/icons/copy.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/download.svg b/frontend/dist/icons/download.svg new file mode 100644 index 0000000..767e2c3 --- /dev/null +++ b/frontend/dist/icons/download.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/filter.svg b/frontend/dist/icons/filter.svg new file mode 100644 index 0000000..7655ca5 --- /dev/null +++ b/frontend/dist/icons/filter.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/guest.svg b/frontend/dist/icons/guest.svg new file mode 100644 index 0000000..99576d2 --- /dev/null +++ b/frontend/dist/icons/guest.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/layout-devices.svg b/frontend/dist/icons/layout-devices.svg new file mode 100644 index 0000000..0ef6ece --- /dev/null +++ b/frontend/dist/icons/layout-devices.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/layout-users.svg b/frontend/dist/icons/layout-users.svg new file mode 100644 index 0000000..8bfa2b9 --- /dev/null +++ b/frontend/dist/icons/layout-users.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/moon.svg b/frontend/dist/icons/moon.svg new file mode 100644 index 0000000..d1cac4e --- /dev/null +++ b/frontend/dist/icons/moon.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/settings.svg b/frontend/dist/icons/settings.svg new file mode 100644 index 0000000..3c9f566 --- /dev/null +++ b/frontend/dist/icons/settings.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/sun.svg b/frontend/dist/icons/sun.svg new file mode 100644 index 0000000..2bbeeb8 --- /dev/null +++ b/frontend/dist/icons/sun.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/test.svg b/frontend/dist/icons/test.svg new file mode 100644 index 0000000..13bfe95 --- /dev/null +++ b/frontend/dist/icons/test.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/icons/user-plus.svg b/frontend/dist/icons/user-plus.svg new file mode 100644 index 0000000..e3a457e --- /dev/null +++ b/frontend/dist/icons/user-plus.svg @@ -0,0 +1 @@ + diff --git a/frontend/dist/index.html b/frontend/dist/index.html index c45b074..8e684a3 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -4,8 +4,8 @@ RADIUS Dashboard - - + +
diff --git a/frontend/node_modules/.package-lock.json b/frontend/node_modules/.package-lock.json index 2b497c6..892fa9f 100644 --- a/frontend/node_modules/.package-lock.json +++ b/frontend/node_modules/.package-lock.json @@ -998,6 +998,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/htm": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", + "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==", + "license": "Apache-2.0" + }, "node_modules/magic-string": { "version": "0.30.19", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", diff --git a/frontend/node_modules/htm/LICENSE b/frontend/node_modules/htm/LICENSE new file mode 100644 index 0000000..f107611 --- /dev/null +++ b/frontend/node_modules/htm/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/frontend/node_modules/htm/README.md b/frontend/node_modules/htm/README.md new file mode 100644 index 0000000..6763017 --- /dev/null +++ b/frontend/node_modules/htm/README.md @@ -0,0 +1,287 @@ + +

+ HTM (Hyperscript Tagged Markup) + npm +

+

+ hyperscript tagged markup demo +

+ +`htm` is **JSX-like syntax in plain JavaScript** - no transpiler necessary. + +Develop with React/Preact directly in the browser, then compile `htm` away for production. + +It uses standard JavaScript [Tagged Templates] and works in [all modern browsers]. + +## `htm` by the numbers: + +🐣 **< 600 bytes** when used directly in the browser + +⚛️ **< 500 bytes** when used with Preact _(thanks gzip 🌈)_ + +🥚 **< 450 byte** `htm/mini` version + +🏅 **0 bytes** if compiled using [babel-plugin-htm] + + +## Syntax: like JSX but also lit + +The syntax you write when using HTM is as close as possible to JSX: + +- Spread props: `
` instead of `
` +- Self-closing tags: `
` +- Components: `<${Foo}>` instead of `` _(where `Foo` is a component reference)_ +- Boolean attributes: `
` + + +## Improvements over JSX + +`htm` actually takes the JSX-style syntax a couple steps further! + +Here's some ergonomic features you get for free that aren't present in JSX: + +- **No transpiler necessary** +- HTML's optional quotes: `
` +- Component end-tags: `<${Footer}>footer content` +- Syntax highlighting and language support via the [lit-html VSCode extension] and [vim-jsx-pretty plugin]. +- Multiple root element (fragments): `
` +- Support for HTML-style comments: `
` + +## Installation + +`htm` is published to npm, and accessible via the unpkg.com CDN: + +**via npm:** + +```js +npm i htm +``` + +**hotlinking from unpkg:** _(no build tool needed!)_ + +```js +import htm from 'https://unpkg.com/htm?module' +const html = htm.bind(React.createElement); +``` + +```js +// just want htm + preact in a single file? there's a highly-optimized version of that: +import { html, render } from 'https://unpkg.com/htm/preact/standalone.module.js' +``` + +## Usage + +If you're using Preact or React, we've included off-the-shelf bindings to make your life easier. +They also have the added benefit of sharing a template cache across all modules. + +```js +import { render } from 'preact'; +import { html } from 'htm/preact'; +render(html`Hello!`, document.body); +``` + +Similarly, for React: + +```js +import ReactDOM from 'react-dom'; +import { html } from 'htm/react'; +ReactDOM.render(html`Hello!`, document.body); +``` + +### Advanced Usage + +Since `htm` is a generic library, we need to tell it what to "compile" our templates to. +You can bind `htm` to any function of the form `h(type, props, ...children)` _([hyperscript])_. +This function can return anything - `htm` never looks at the return value. + +Here's an example `h()` function that returns tree nodes: + +```js +function h(type, props, ...children) { + return { type, props, children }; +} +``` + +To use our custom `h()` function, we need to create our own `html` tag function by binding `htm` to our `h()` function: + +```js +import htm from 'htm'; + +const html = htm.bind(h); +``` + +Now we have an `html()` template tag that can be used to produce objects in the format we created above. + +Here's the whole thing for clarity: + +```js +import htm from 'htm'; + +function h(type, props, ...children) { + return { type, props, children }; +} + +const html = htm.bind(h); + +console.log( html`

Hello world!

` ); +// { +// type: 'h1', +// props: { id: 'hello' }, +// children: ['Hello world!'] +// } +``` + +If the template has multiple element at the root level +the output is an array of `h` results: + +```js +console.log(html` +

Hello

+
World!
+`); +// [ +// { +// type: 'h1', +// props: { id: 'hello' }, +// children: ['Hello'] +// }, +// { +// type: 'div', +// props: { class: 'world' }, +// children: ['world!'] +// } +// ] +``` + +### Caching + +The default build of `htm` caches template strings, which means that it can return the same Javascript object at multiple points in the tree. If you don't want this behaviour, you have three options: + +* Change your `h` function to copy nodes when needed. +* Add the code `this[0] = 3;` at the beginning of your `h` function, which disables caching of created elements. +* Use `htm/mini`, which disables caching by default. + +## Example + +Curious to see what it all looks like? Here's a working app! + +It's a single HTML file, and there's no build or tooling. You can edit it with nano. + +```html + + + htm Demo + + +``` + +[⚡️ **See live version** ▶](https://htm-demo-preact.glitch.me/) + +[⚡️ **Try this on CodeSandbox** ▶](https://codesandbox.io/s/x7pmq32j6q) + +How nifty is that? + +Notice there's only one import - here we're using the prebuilt Preact integration since it's easier to import and a bit smaller. + +The same example works fine without the prebuilt version, just using two imports: + +```js +import { h, Component, render } from 'preact'; +import htm from 'htm'; + +const html = htm.bind(h); + +render(html`<${App} page="All" />`, document.body); +``` + +## Other Uses + +Since `htm` is designed to meet the same need as JSX, you can use it anywhere you'd use JSX. + +**Generate HTML using [vhtml]:** + +```js +import htm from 'htm'; +import vhtml from 'vhtml'; + +const html = htm.bind(vhtml); + +console.log( html`

Hello world!

` ); +// '

Hello world!

' +``` + +**Webpack configuration via [jsxobj]:** ([details here](https://webpack.js.org/configuration/configuration-languages/#babel-and-jsx)) _(never do this)_ + +```js +import htm from 'htm'; +import jsxobj from 'jsxobj'; + +const html = htm.bind(jsxobj); + +console.log(html` + + + +`); +// { +// watch: true, +// mode: 'production', +// entry: { +// path: 'src/index.js' +// } +// } +``` + +## Demos & Examples + +- [Canadian Holidays](https://github.com/pcraig3/hols): A full app using HTM and Server-Side Rendering +- [HTM SSR Example](https://github.com/timarney/htm-ssr-demo): Shows how to do SSR with HTM +- [HTM + Preact SSR Demo](https://gist.github.com/developit/699c8d8f180a1e4eed58167f9c6711be) +- [HTM + vhtml SSR Demo](https://gist.github.com/developit/ff925c3995b4a129b6b977bf7cd12ebd) + +## Project Status + +The original goal for `htm` was to create a wrapper around Preact that felt natural for use untranspiled in the browser. I wanted to use Virtual DOM, but I wanted to eschew build tooling and use ES Modules directly. + + This meant giving up JSX, and the closest alternative was [Tagged Templates]. So, I wrote this library to patch up the differences between the two as much as possible. The technique turns out to be framework-agnostic, so it should work great with any library or renderer that works with JSX. + +`htm` is stable, fast, well-tested and ready for production use. + +[Tagged Templates]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates +[lit-html]: https://github.com/Polymer/lit-html +[babel-plugin-htm]: https://github.com/developit/htm/tree/master/packages/babel-plugin-htm +[lit-html VSCode extension]: https://marketplace.visualstudio.com/items?itemName=bierner.lit-html +[vim-jsx-pretty plugin]: https://github.com/MaxMEllon/vim-jsx-pretty +[vhtml]: https://github.com/developit/vhtml +[jsxobj]: https://github.com/developit/jsxobj +[hyperscript]: https://github.com/hyperhype/hyperscript +[all modern browsers]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Browser_compatibility diff --git a/frontend/node_modules/htm/dist/htm.d.ts b/frontend/node_modules/htm/dist/htm.d.ts new file mode 100644 index 0000000..d5108ca --- /dev/null +++ b/frontend/node_modules/htm/dist/htm.d.ts @@ -0,0 +1,6 @@ +declare const htm: { + bind( + h: (type: any, props: Record, ...children: any[]) => HResult + ): (strings: TemplateStringsArray, ...values: any[]) => HResult | HResult[]; +}; +export default htm; diff --git a/frontend/node_modules/htm/dist/htm.js b/frontend/node_modules/htm/dist/htm.js new file mode 100644 index 0000000..7c81f4b --- /dev/null +++ b/frontend/node_modules/htm/dist/htm.js @@ -0,0 +1 @@ +!function(){var n=function(t,e,s,u){var r;e[0]=0;for(var h=1;h=5&&((u||!n&&5===s)&&(h.push(s,0,u,e),s=6),n&&(h.push(s,n,0,e),s=6)),u=""},a=0;a"===t?(s=1,u=""):u=t+u[0]:r?t===r?r="":u+=t:'"'===t||"'"===t?r=t:">"===t?(p(),s=1):s&&("="===t?(s=5,e=u,u=""):"/"===t&&(s<5||">"===n[a][o+1])?(p(),3===s&&(h=h[0]),s=h,(h=h[0]).push(2,0,s),s=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(p(),s=2):u+=t),3===s&&"!--"===u&&(s=4,h=h[0])}return p(),h}(e)),s),arguments,[])).length>1?s:s[0]};"undefined"!=typeof module?module.exports=e:self.htm=e}(); diff --git a/frontend/node_modules/htm/dist/htm.mjs b/frontend/node_modules/htm/dist/htm.mjs new file mode 100644 index 0000000..4a6228f --- /dev/null +++ b/frontend/node_modules/htm/dist/htm.mjs @@ -0,0 +1 @@ +var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=""},a=0;a"===t?(r=1,e=""):e=t+e[0]:u?t===u?u="":e+=t:'"'===t||"'"===t?u=t:">"===t?(p(),r=1):r&&("="===t?(r=5,s=e,e=""):"/"===t&&(r<5||">"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(p(),r=2):e+=t),3===r&&"!--"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]} diff --git a/frontend/node_modules/htm/dist/htm.module.js b/frontend/node_modules/htm/dist/htm.module.js new file mode 100644 index 0000000..4a6228f --- /dev/null +++ b/frontend/node_modules/htm/dist/htm.module.js @@ -0,0 +1 @@ +var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=""},a=0;a"===t?(r=1,e=""):e=t+e[0]:u?t===u?u="":e+=t:'"'===t||"'"===t?u=t:">"===t?(p(),r=1):r&&("="===t?(r=5,s=e,e=""):"/"===t&&(r<5||">"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(p(),r=2):e+=t),3===r&&"!--"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]} diff --git a/frontend/node_modules/htm/dist/htm.umd.js b/frontend/node_modules/htm/dist/htm.umd.js new file mode 100644 index 0000000..81bc89f --- /dev/null +++ b/frontend/node_modules/htm/dist/htm.umd.js @@ -0,0 +1 @@ +!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):n.htm=e()}(this,function(){var n=function(e,t,u,s){var r;t[0]=0;for(var p=1;p=5&&((s||!n&&5===u)&&(p.push(u,0,s,t),u=6),n&&(p.push(u,n,0,t),u=6)),s=""},o=0;o"===e?(u=1,s=""):s=e+s[0]:r?e===r?r="":s+=e:'"'===e||"'"===e?r=e:">"===e?(h(),u=1):u&&("="===e?(u=5,t=s,s=""):"/"===e&&(u<5||">"===n[o][f+1])?(h(),3===u&&(p=p[0]),u=p,(p=p[0]).push(2,0,u),u=0):" "===e||"\t"===e||"\n"===e||"\r"===e?(h(),u=2):s+=e),3===u&&"!--"===s&&(u=4,p=p[0])}return h(),p}(t)),u),arguments,[])).length>1?u:u[0]}}); diff --git a/frontend/node_modules/htm/mini/index.d.ts b/frontend/node_modules/htm/mini/index.d.ts new file mode 100644 index 0000000..d5108ca --- /dev/null +++ b/frontend/node_modules/htm/mini/index.d.ts @@ -0,0 +1,6 @@ +declare const htm: { + bind( + h: (type: any, props: Record, ...children: any[]) => HResult + ): (strings: TemplateStringsArray, ...values: any[]) => HResult | HResult[]; +}; +export default htm; diff --git a/frontend/node_modules/htm/mini/index.js b/frontend/node_modules/htm/mini/index.js new file mode 100644 index 0000000..a2ff76a --- /dev/null +++ b/frontend/node_modules/htm/mini/index.js @@ -0,0 +1 @@ +!function(){var n=(new Map,function(n){for(var e,l,s=arguments,t=1,u="",r="",o=[0],f=function(n){1===t&&(n||(u=u.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?o.push(n?s[n]:u):3===t&&(n||u)?(o[1]=n?s[n]:u,t=2):2===t&&"..."===u&&n?o[2]=Object.assign(o[2]||{},s[n]):2===t&&u&&!n?(o[2]=o[2]||{})[u]=!0:t>=5&&(5===t?((o[2]=o[2]||{})[l]=n?u?u+s[n]:s[n]:u,t=6):(n||u)&&(o[2][l]+=n?u+s[n]:u)),u=""},i=0;i"===e?(t=1,u=""):u=e+u[0]:r?e===r?r="":u+=e:'"'===e||"'"===e?r=e:">"===e?(f(),t=1):t&&("="===e?(t=5,l=u,u=""):"/"===e&&(t<5||">"===n[i][p+1])?(f(),3===t&&(o=o[0]),t=o,(o=o[0]).push(this.apply(null,t.slice(1))),t=0):" "===e||"\t"===e||"\n"===e||"\r"===e?(f(),t=2):u+=e),3===t&&"!--"===u&&(t=4,o=o[0])}return f(),o.length>2?o.slice(1):o[1]});"undefined"!=typeof module?module.exports=n:self.htm=n}(); diff --git a/frontend/node_modules/htm/mini/index.mjs b/frontend/node_modules/htm/mini/index.mjs new file mode 100644 index 0000000..5eda268 --- /dev/null +++ b/frontend/node_modules/htm/mini/index.mjs @@ -0,0 +1 @@ +export default function(n){for(var l,e,s=arguments,t=1,r="",u="",a=[0],c=function(n){1===t&&(n||(r=r.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?a.push(n?s[n]:r):3===t&&(n||r)?(a[1]=n?s[n]:r,t=2):2===t&&"..."===r&&n?a[2]=Object.assign(a[2]||{},s[n]):2===t&&r&&!n?(a[2]=a[2]||{})[r]=!0:t>=5&&(5===t?((a[2]=a[2]||{})[e]=n?r?r+s[n]:s[n]:r,t=6):(n||r)&&(a[2][e]+=n?r+s[n]:r)),r=""},h=0;h"===l?(t=1,r=""):r=l+r[0]:u?l===u?u="":r+=l:'"'===l||"'"===l?u=l:">"===l?(c(),t=1):t&&("="===l?(t=5,e=r,r=""):"/"===l&&(t<5||">"===n[h][i+1])?(c(),3===t&&(a=a[0]),t=a,(a=a[0]).push(this.apply(null,t.slice(1))),t=0):" "===l||"\t"===l||"\n"===l||"\r"===l?(c(),t=2):r+=l),3===t&&"!--"===r&&(t=4,a=a[0])}return c(),a.length>2?a.slice(1):a[1]} diff --git a/frontend/node_modules/htm/mini/index.module.js b/frontend/node_modules/htm/mini/index.module.js new file mode 100644 index 0000000..5eda268 --- /dev/null +++ b/frontend/node_modules/htm/mini/index.module.js @@ -0,0 +1 @@ +export default function(n){for(var l,e,s=arguments,t=1,r="",u="",a=[0],c=function(n){1===t&&(n||(r=r.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?a.push(n?s[n]:r):3===t&&(n||r)?(a[1]=n?s[n]:r,t=2):2===t&&"..."===r&&n?a[2]=Object.assign(a[2]||{},s[n]):2===t&&r&&!n?(a[2]=a[2]||{})[r]=!0:t>=5&&(5===t?((a[2]=a[2]||{})[e]=n?r?r+s[n]:s[n]:r,t=6):(n||r)&&(a[2][e]+=n?r+s[n]:r)),r=""},h=0;h"===l?(t=1,r=""):r=l+r[0]:u?l===u?u="":r+=l:'"'===l||"'"===l?u=l:">"===l?(c(),t=1):t&&("="===l?(t=5,e=r,r=""):"/"===l&&(t<5||">"===n[h][i+1])?(c(),3===t&&(a=a[0]),t=a,(a=a[0]).push(this.apply(null,t.slice(1))),t=0):" "===l||"\t"===l||"\n"===l||"\r"===l?(c(),t=2):r+=l),3===t&&"!--"===r&&(t=4,a=a[0])}return c(),a.length>2?a.slice(1):a[1]} diff --git a/frontend/node_modules/htm/mini/index.umd.js b/frontend/node_modules/htm/mini/index.umd.js new file mode 100644 index 0000000..83d3d4b --- /dev/null +++ b/frontend/node_modules/htm/mini/index.umd.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.htm=n()}(this,function(){return function(e){for(var n,t,o=arguments,f=1,i="",s="",u=[0],l=function(e){1===f&&(e||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?u.push(e?o[e]:i):3===f&&(e||i)?(u[1]=e?o[e]:i,f=2):2===f&&"..."===i&&e?u[2]=Object.assign(u[2]||{},o[e]):2===f&&i&&!e?(u[2]=u[2]||{})[i]=!0:f>=5&&(5===f?((u[2]=u[2]||{})[t]=e?i?i+o[e]:o[e]:i,f=6):(e||i)&&(u[2][t]+=e?i+o[e]:i)),i=""},r=0;r"===n?(f=1,i=""):i=n+i[0]:s?n===s?s="":i+=n:'"'===n||"'"===n?s=n:">"===n?(l(),f=1):f&&("="===n?(f=5,t=i,i=""):"/"===n&&(f<5||">"===e[r][c+1])?(l(),3===f&&(u=u[0]),f=u,(u=u[0]).push(this.apply(null,f.slice(1))),f=0):" "===n||"\t"===n||"\n"===n||"\r"===n?(l(),f=2):i+=n),3===f&&"!--"===i&&(f=4,u=u[0])}return l(),u.length>2?u.slice(1):u[1]}}); diff --git a/frontend/node_modules/htm/package.json b/frontend/node_modules/htm/package.json new file mode 100644 index 0000000..4a048e0 --- /dev/null +++ b/frontend/node_modules/htm/package.json @@ -0,0 +1,124 @@ +{ + "name": "htm", + "version": "3.1.1", + "description": "The Tagged Template syntax for Virtual DOM. Only browser-compatible syntax.", + "main": "dist/htm.js", + "umd:main": "dist/htm.umd.js", + "module": "dist/htm.module.js", + "types": "dist/htm.d.ts", + "exports": { + ".": { + "types": "./dist/htm.d.ts", + "browser": "./dist/htm.module.js", + "umd": "./dist/htm.umd.js", + "import": "./dist/htm.mjs", + "require": "./dist/htm.js" + }, + "./": "./", + "./preact": { + "types": "./preact/index.d.ts", + "browser": "./preact/index.module.js", + "umd": "./preact/index.umd.js", + "import": "./preact/index.mjs", + "require": "./preact/index.js" + }, + "./preact/standalone": { + "types": "./preact/index.d.ts", + "browser": "./preact/standalone.module.js", + "umd": "./preact/standalone.umd.js", + "import": "./preact/standalone.mjs", + "require": "./preact/standalone.js" + }, + "./react": { + "types": "./react/index.d.ts", + "browser": "./react/index.module.js", + "umd": "./react/index.umd.js", + "import": "./react/index.mjs", + "require": "./react/index.js" + }, + "./mini": { + "types": "./mini/index.d.ts", + "browser": "./mini/index.module.js", + "umd": "./mini/index.umd.js", + "import": "./mini/index.mjs", + "require": "./mini/index.js" + } + }, + "scripts": { + "build": "npm run -s build:main && npm run -s build:mini && npm run -s build:preact && npm run -s build:react && npm run -s build:babel && npm run -s build:babel-transform-jsx && npm run -s build:mjsalias", + "build:main": "microbundle src/index.mjs -f es,umd --no-sourcemap --target web && microbundle src/cjs.mjs -f iife --no-sourcemap --target web && cp src/index.d.ts dist/htm.d.ts", + "build:mini": "microbundle src/index.mjs -o ./mini/index.js -f es,umd --no-sourcemap --target web --alias ./constants.mjs=./constants-mini.mjs && microbundle src/cjs.mjs -o ./mini/index.js -f iife --no-sourcemap --target web --alias ./constants.mjs=./constants-mini.mjs && cp src/index.d.ts mini", + "build:preact": "cd src/integrations/preact && npm run build", + "build:react": "cd src/integrations/react && npm run build", + "build:babel": "cd packages/babel-plugin-htm && npm run build", + "build:babel-transform-jsx": "cd packages/babel-plugin-transform-jsx-to-htm && npm run build", + "build:mjsalias": "cp dist/htm.module.js dist/htm.mjs && cp mini/index.module.js mini/index.mjs && cp preact/index.module.js preact/index.mjs && cp preact/standalone.module.js preact/standalone.mjs && cp react/index.module.js react/index.mjs", + "test": "eslint src/**/*.mjs test/**/*.mjs --ignore-path .gitignore && npm run build && jest test", + "test:perf": "v8 test/__perftest.mjs", + "test:dist": "npm pack && mv htm*.tgz test/fixtures/esm/htm.tgz && cd test/fixtures/esm && npm install && node index.js", + "release": "npm t && git commit -am \"$npm_package_version\" && git tag $npm_package_version && git push && git push --tags && npm publish" + }, + "files": [ + "dist", + "mini", + "preact", + "react", + "src" + ], + "eslintConfig": { + "extends": "developit", + "rules": { + "prefer-const": 0, + "prefer-spread": 0, + "prefer-rest-params": 0, + "func-style": 0 + } + }, + "jest": { + "testURL": "http://localhost", + "testMatch": [ + "**/__tests__/**/*.?(m)js?(x)", + "**/?(*.)(spec|test).?(m)js?(x)" + ], + "transform": { + "\\.m?js$": "babel-jest" + }, + "moduleFileExtensions": [ + "mjs", + "js" + ], + "moduleNameMapper": { + "^babel-plugin-transform-jsx-to-htm$": "/packages/babel-plugin-transform-jsx-to-htm/index.mjs", + "^babel-plugin-htm$": "/packages/babel-plugin-htm/index.mjs", + "^htm$": "/src/index.mjs", + "^htm/preact$": "/src/integrations/preact/index.mjs" + } + }, + "repository": "developit/htm", + "keywords": [ + "Hyperscript Tagged Markup", + "tagged template", + "template literals", + "html", + "htm", + "jsx", + "virtual dom", + "hyperscript" + ], + "author": "Jason Miller ", + "license": "Apache-2.0", + "homepage": "https://github.com/developit/htm", + "devDependencies": { + "@babel/core": "^7.2.2", + "@babel/preset-env": "^7.1.6", + "@types/jest": "^26.0.24", + "babel-jest": "^24.1.0", + "babel-preset-env": "^1.7.0", + "eslint": "^5.2.0", + "eslint-config-developit": "^1.1.1", + "jest": "^24.1.0", + "microbundle": "^0.10.1", + "preact": "^10.2.0", + "react": "^16.8.3" + } +} diff --git a/frontend/node_modules/htm/preact/index.d.ts b/frontend/node_modules/htm/preact/index.d.ts new file mode 100644 index 0000000..4e2a426 --- /dev/null +++ b/frontend/node_modules/htm/preact/index.d.ts @@ -0,0 +1,5 @@ +import { h, VNode, Component } from 'preact'; +export * from 'preact/hooks'; +declare function render(tree: VNode, parent: HTMLElement): void; +declare const html: (strings: TemplateStringsArray, ...values: any[]) => VNode; +export { h, html, render, Component }; diff --git a/frontend/node_modules/htm/preact/index.js b/frontend/node_modules/htm/preact/index.js new file mode 100644 index 0000000..04bde79 --- /dev/null +++ b/frontend/node_modules/htm/preact/index.js @@ -0,0 +1 @@ +var e,r=require("preact"),t=((e=require("htm"))&&"object"==typeof e&&"default"in e?e.default:e).bind(r.h);exports.h=r.h,exports.render=r.render,exports.Component=r.Component,exports.html=t; diff --git a/frontend/node_modules/htm/preact/index.mjs b/frontend/node_modules/htm/preact/index.mjs new file mode 100644 index 0000000..ea3a7cc --- /dev/null +++ b/frontend/node_modules/htm/preact/index.mjs @@ -0,0 +1 @@ +import{h as r,Component as o,render as t}from"preact";export{h,render,Component}from"preact";import e from"htm";var m=e.bind(r);export{m as html}; diff --git a/frontend/node_modules/htm/preact/index.module.js b/frontend/node_modules/htm/preact/index.module.js new file mode 100644 index 0000000..ea3a7cc --- /dev/null +++ b/frontend/node_modules/htm/preact/index.module.js @@ -0,0 +1 @@ +import{h as r,Component as o,render as t}from"preact";export{h,render,Component}from"preact";import e from"htm";var m=e.bind(r);export{m as html}; diff --git a/frontend/node_modules/htm/preact/index.umd.js b/frontend/node_modules/htm/preact/index.umd.js new file mode 100644 index 0000000..1555d20 --- /dev/null +++ b/frontend/node_modules/htm/preact/index.umd.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("preact"),require("htm")):"function"==typeof define&&define.amd?define(["exports","preact","htm"],t):t(e.htmPreact={},e.preact,e.htm)}(this,function(e,t,n){var r=(n=n&&n.hasOwnProperty("default")?n.default:n).bind(t.h);e.h=t.h,e.render=t.render,e.Component=t.Component,e.html=r}); diff --git a/frontend/node_modules/htm/preact/package.json b/frontend/node_modules/htm/preact/package.json new file mode 100644 index 0000000..a54e91c --- /dev/null +++ b/frontend/node_modules/htm/preact/package.json @@ -0,0 +1,13 @@ +{ + "name": "htm_preact", + "module": "index.module.js", + "main": "index.js", + "umd:main": "index.umd.js", + "unpkg": "standalone.js", + "scripts": { + "build": "npm run -s build:main && npm run -s build:standalone && npm run -s build:static", + "build:main": "microbundle index.mjs -o ../../../preact/index.js --external preact,htm --no-sourcemap --target web", + "build:static": "cp index.d.ts package.json ../../../preact/", + "build:standalone": "microbundle standalone.mjs -o ../../../preact/standalone.js -f es,umd --no-sourcemap --target web" + } +} \ No newline at end of file diff --git a/frontend/node_modules/htm/preact/standalone.mjs b/frontend/node_modules/htm/preact/standalone.mjs new file mode 100644 index 0000000..e24f87b --- /dev/null +++ b/frontend/node_modules/htm/preact/standalone.mjs @@ -0,0 +1 @@ +var e,n,_,t,o,r,u,l={},i=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(e,n){for(var _ in n)e[_]=n[_];return e}function f(e){var n=e.parentNode;n&&n.removeChild(e)}function a(n,_,t){var o,r,u,l={};for(u in _)"key"==u?o=_[u]:"ref"==u?r=_[u]:l[u]=_[u];if(arguments.length>2&&(l.children=arguments.length>3?e.call(arguments,2):t),"function"==typeof n&&null!=n.defaultProps)for(u in n.defaultProps)void 0===l[u]&&(l[u]=n.defaultProps[u]);return p(n,l,o,r,null)}function p(e,t,o,r,u){var l={type:e,props:t,key:o,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==u?++_:u};return null!=n.vnode&&n.vnode(l),l}function h(e){return e.children}function d(e,n){this.props=e,this.context=n}function v(e,n){if(null==n)return e.__?v(e.__,e.__.__k.indexOf(e)+1):null;for(var _;n0?p(m.type,m.props,m.key,null,m.__v):m)){if(m.__=_,m.__b=_.__b+1,null===(y=H[a])||y&&m.key==y.key&&m.type===y.type)H[a]=void 0;else for(d=0;d=t.__.length&&t.__.push({}),t.__[e]}function G(e){return R=1,z(ie,e)}function z(e,n,_){var t=j(L++,2);return t.t=e,t.__c||(t.__=[_?_(n):ie(void 0,n),function(e){var n=t.t(t.__[0],e);t.__[0]!==n&&(t.__=[n,t.__[1]],t.__c.setState({}))}],t.__c=N),t.__}function J(e,_){var t=j(L++,3);!n.__s&&le(t.__H,_)&&(t.__=e,t.__H=_,N.__H.__h.push(t))}function K(e,_){var t=j(L++,4);!n.__s&&le(t.__H,_)&&(t.__=e,t.__H=_,N.__h.push(t))}function Q(e){return R=5,Y(function(){return{current:e}},[])}function X(e,n,_){R=6,K(function(){"function"==typeof e?e(n()):e&&(e.current=n())},null==_?_:_.concat(e))}function Y(e,n){var _=j(L++,7);return le(_.__H,n)&&(_.__=e(),_.__H=n,_.__h=e),_.__}function Z(e,n){return R=8,Y(function(){return e},n)}function ee(e){var n=N.context[e.__c],_=j(L++,9);return _.c=e,n?(null==_.__&&(_.__=!0,n.sub(N)),n.props.value):e.__}function ne(e,_){n.useDebugValue&&n.useDebugValue(_?_(e):e)}function _e(e){var n=j(L++,10),_=G();return n.__=e,N.componentDidCatch||(N.componentDidCatch=function(e){n.__&&n.__(e),_[1](e)}),[_[0],function(){_[1](void 0)}]}function te(){I.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(re),e.__H.__h.forEach(ue),e.__H.__h=[]}catch(_){e.__H.__h=[],n.__e(_,e.__v)}}),I=[]}n.__b=function(e){N=null,O&&O(e)},n.__r=function(e){V&&V(e),L=0;var n=(N=e.__c).__H;n&&(n.__h.forEach(re),n.__h.forEach(ue),n.__h=[])},n.diffed=function(e){q&&q(e);var _=e.__c;_&&_.__H&&_.__H.__h.length&&(1!==I.push(_)&&W===n.requestAnimationFrame||((W=n.requestAnimationFrame)||function(e){var n,_=function(){clearTimeout(t),oe&&cancelAnimationFrame(n),setTimeout(e)},t=setTimeout(_,100);oe&&(n=requestAnimationFrame(_))})(te)),N=void 0},n.__c=function(e,_){_.some(function(e){try{e.__h.forEach(re),e.__h=e.__h.filter(function(e){return!e.__||ue(e)})}catch(t){_.some(function(e){e.__h&&(e.__h=[])}),_=[],n.__e(t,e.__v)}}),B&&B(e,_)},n.unmount=function(e){$&&$(e);var _=e.__c;if(_&&_.__H)try{_.__H.__.forEach(re)}catch(e){n.__e(e,_.__v)}};var oe="function"==typeof requestAnimationFrame;function re(e){var n=N;"function"==typeof e.__c&&e.__c(),N=n}function ue(e){var n=N;e.__c=e.__(),N=n}function le(e,n){return!e||e.length!==n.length||n.some(function(n,_){return n!==e[_]})}function ie(e,n){return"function"==typeof n?n(e):n}var ce=function(e,n,_,t){var o;n[0]=0;for(var r=1;r=5&&((o||!e&&5===t)&&(u.push(t,0,o,_),t=6),e&&(u.push(t,e,0,_),t=6)),o=""},i=0;i"===n?(t=1,o=""):o=n+o[0]:r?n===r?r="":o+=n:'"'===n||"'"===n?r=n:">"===n?(l(),t=1):t&&("="===n?(t=5,_=o,o=""):"/"===n&&(t<5||">"===e[i][c+1])?(l(),3===t&&(u=u[0]),t=u,(u=u[0]).push(2,0,t),t=0):" "===n||"\t"===n||"\n"===n||"\r"===n?(l(),t=2):o+=n),3===t&&"!--"===o&&(t=4,u=u[0])}return l(),u}(e)),n),arguments,[])).length>1?n:n[0]}.bind(a);export{a as h,fe as html,M as render,d as Component,F as createContext,G as useState,z as useReducer,J as useEffect,K as useLayoutEffect,Q as useRef,X as useImperativeHandle,Y as useMemo,Z as useCallback,ee as useContext,ne as useDebugValue,_e as useErrorBoundary}; diff --git a/frontend/node_modules/htm/preact/standalone.module.js b/frontend/node_modules/htm/preact/standalone.module.js new file mode 100644 index 0000000..e24f87b --- /dev/null +++ b/frontend/node_modules/htm/preact/standalone.module.js @@ -0,0 +1 @@ +var e,n,_,t,o,r,u,l={},i=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(e,n){for(var _ in n)e[_]=n[_];return e}function f(e){var n=e.parentNode;n&&n.removeChild(e)}function a(n,_,t){var o,r,u,l={};for(u in _)"key"==u?o=_[u]:"ref"==u?r=_[u]:l[u]=_[u];if(arguments.length>2&&(l.children=arguments.length>3?e.call(arguments,2):t),"function"==typeof n&&null!=n.defaultProps)for(u in n.defaultProps)void 0===l[u]&&(l[u]=n.defaultProps[u]);return p(n,l,o,r,null)}function p(e,t,o,r,u){var l={type:e,props:t,key:o,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==u?++_:u};return null!=n.vnode&&n.vnode(l),l}function h(e){return e.children}function d(e,n){this.props=e,this.context=n}function v(e,n){if(null==n)return e.__?v(e.__,e.__.__k.indexOf(e)+1):null;for(var _;n0?p(m.type,m.props,m.key,null,m.__v):m)){if(m.__=_,m.__b=_.__b+1,null===(y=H[a])||y&&m.key==y.key&&m.type===y.type)H[a]=void 0;else for(d=0;d=t.__.length&&t.__.push({}),t.__[e]}function G(e){return R=1,z(ie,e)}function z(e,n,_){var t=j(L++,2);return t.t=e,t.__c||(t.__=[_?_(n):ie(void 0,n),function(e){var n=t.t(t.__[0],e);t.__[0]!==n&&(t.__=[n,t.__[1]],t.__c.setState({}))}],t.__c=N),t.__}function J(e,_){var t=j(L++,3);!n.__s&&le(t.__H,_)&&(t.__=e,t.__H=_,N.__H.__h.push(t))}function K(e,_){var t=j(L++,4);!n.__s&&le(t.__H,_)&&(t.__=e,t.__H=_,N.__h.push(t))}function Q(e){return R=5,Y(function(){return{current:e}},[])}function X(e,n,_){R=6,K(function(){"function"==typeof e?e(n()):e&&(e.current=n())},null==_?_:_.concat(e))}function Y(e,n){var _=j(L++,7);return le(_.__H,n)&&(_.__=e(),_.__H=n,_.__h=e),_.__}function Z(e,n){return R=8,Y(function(){return e},n)}function ee(e){var n=N.context[e.__c],_=j(L++,9);return _.c=e,n?(null==_.__&&(_.__=!0,n.sub(N)),n.props.value):e.__}function ne(e,_){n.useDebugValue&&n.useDebugValue(_?_(e):e)}function _e(e){var n=j(L++,10),_=G();return n.__=e,N.componentDidCatch||(N.componentDidCatch=function(e){n.__&&n.__(e),_[1](e)}),[_[0],function(){_[1](void 0)}]}function te(){I.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(re),e.__H.__h.forEach(ue),e.__H.__h=[]}catch(_){e.__H.__h=[],n.__e(_,e.__v)}}),I=[]}n.__b=function(e){N=null,O&&O(e)},n.__r=function(e){V&&V(e),L=0;var n=(N=e.__c).__H;n&&(n.__h.forEach(re),n.__h.forEach(ue),n.__h=[])},n.diffed=function(e){q&&q(e);var _=e.__c;_&&_.__H&&_.__H.__h.length&&(1!==I.push(_)&&W===n.requestAnimationFrame||((W=n.requestAnimationFrame)||function(e){var n,_=function(){clearTimeout(t),oe&&cancelAnimationFrame(n),setTimeout(e)},t=setTimeout(_,100);oe&&(n=requestAnimationFrame(_))})(te)),N=void 0},n.__c=function(e,_){_.some(function(e){try{e.__h.forEach(re),e.__h=e.__h.filter(function(e){return!e.__||ue(e)})}catch(t){_.some(function(e){e.__h&&(e.__h=[])}),_=[],n.__e(t,e.__v)}}),B&&B(e,_)},n.unmount=function(e){$&&$(e);var _=e.__c;if(_&&_.__H)try{_.__H.__.forEach(re)}catch(e){n.__e(e,_.__v)}};var oe="function"==typeof requestAnimationFrame;function re(e){var n=N;"function"==typeof e.__c&&e.__c(),N=n}function ue(e){var n=N;e.__c=e.__(),N=n}function le(e,n){return!e||e.length!==n.length||n.some(function(n,_){return n!==e[_]})}function ie(e,n){return"function"==typeof n?n(e):n}var ce=function(e,n,_,t){var o;n[0]=0;for(var r=1;r=5&&((o||!e&&5===t)&&(u.push(t,0,o,_),t=6),e&&(u.push(t,e,0,_),t=6)),o=""},i=0;i"===n?(t=1,o=""):o=n+o[0]:r?n===r?r="":o+=n:'"'===n||"'"===n?r=n:">"===n?(l(),t=1):t&&("="===n?(t=5,_=o,o=""):"/"===n&&(t<5||">"===e[i][c+1])?(l(),3===t&&(u=u[0]),t=u,(u=u[0]).push(2,0,t),t=0):" "===n||"\t"===n||"\n"===n||"\r"===n?(l(),t=2):o+=n),3===t&&"!--"===o&&(t=4,u=u[0])}return l(),u}(e)),n),arguments,[])).length>1?n:n[0]}.bind(a);export{a as h,fe as html,M as render,d as Component,F as createContext,G as useState,z as useReducer,J as useEffect,K as useLayoutEffect,Q as useRef,X as useImperativeHandle,Y as useMemo,Z as useCallback,ee as useContext,ne as useDebugValue,_e as useErrorBoundary}; diff --git a/frontend/node_modules/htm/preact/standalone.umd.js b/frontend/node_modules/htm/preact/standalone.umd.js new file mode 100644 index 0000000..51a4210 --- /dev/null +++ b/frontend/node_modules/htm/preact/standalone.umd.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(e.htmPreact={})}(this,function(e){var n,_,t,o,r,u,l,i={},c=[],f=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(e,n){for(var _ in n)e[_]=n[_];return e}function a(e){var n=e.parentNode;n&&n.removeChild(e)}function p(e,_,t){var o,r,u,l={};for(u in _)"key"==u?o=_[u]:"ref"==u?r=_[u]:l[u]=_[u];if(arguments.length>2&&(l.children=arguments.length>3?n.call(arguments,2):t),"function"==typeof e&&null!=e.defaultProps)for(u in e.defaultProps)void 0===l[u]&&(l[u]=e.defaultProps[u]);return h(e,l,o,r,null)}function h(e,n,o,r,u){var l={type:e,props:n,key:o,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==u?++t:u};return null!=_.vnode&&_.vnode(l),l}function d(e){return e.children}function v(e,n){this.props=e,this.context=n}function y(e,n){if(null==n)return e.__?y(e.__,e.__.__k.indexOf(e)+1):null;for(var _;n0?h(m.type,m.props,m.key,null,m.__v):m)){if(m.__=_,m.__b=_.__b+1,null===(v=H[a])||v&&m.key==v.key&&m.type===v.type)H[a]=void 0;else for(p=0;p=t.__.length&&t.__.push({}),t.__[e]}function j(e){return W=1,G(ee,e)}function G(e,n,_){var t=$(F++,2);return t.t=e,t.__c||(t.__=[_?_(n):ee(void 0,n),function(e){var n=t.t(t.__[0],e);t.__[0]!==n&&(t.__=[n,t.__[1]],t.__c.setState({}))}],t.__c=L),t.__}function z(e,n){var t=$(F++,4);!_.__s&&Z(t.__H,n)&&(t.__=e,t.__H=n,L.__h.push(t))}function J(e,n){var _=$(F++,7);return Z(_.__H,n)&&(_.__=e(),_.__H=n,_.__h=e),_.__}function K(){R.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(X),e.__H.__h.forEach(Y),e.__H.__h=[]}catch(n){e.__H.__h=[],_.__e(n,e.__v)}}),R=[]}_.__b=function(e){L=null,I&&I(e)},_.__r=function(e){O&&O(e),F=0;var n=(L=e.__c).__H;n&&(n.__h.forEach(X),n.__h.forEach(Y),n.__h=[])},_.diffed=function(e){V&&V(e);var n=e.__c;n&&n.__H&&n.__H.__h.length&&(1!==R.push(n)&&N===_.requestAnimationFrame||((N=_.requestAnimationFrame)||function(e){var n,_=function(){clearTimeout(t),Q&&cancelAnimationFrame(n),setTimeout(e)},t=setTimeout(_,100);Q&&(n=requestAnimationFrame(_))})(K)),L=void 0},_.__c=function(e,n){n.some(function(e){try{e.__h.forEach(X),e.__h=e.__h.filter(function(e){return!e.__||Y(e)})}catch(t){n.some(function(e){e.__h&&(e.__h=[])}),n=[],_.__e(t,e.__v)}}),q&&q(e,n)},_.unmount=function(e){B&&B(e);var n=e.__c;if(n&&n.__H)try{n.__H.__.forEach(X)}catch(e){_.__e(e,n.__v)}};var Q="function"==typeof requestAnimationFrame;function X(e){var n=L;"function"==typeof e.__c&&e.__c(),L=n}function Y(e){var n=L;e.__c=e.__(),L=n}function Z(e,n){return!e||e.length!==n.length||n.some(function(n,_){return n!==e[_]})}function ee(e,n){return"function"==typeof n?n(e):n}var ne=function(e,n,_,t){var o;n[0]=0;for(var r=1;r=5&&((o||!e&&5===t)&&(u.push(t,0,o,_),t=6),e&&(u.push(t,e,0,_),t=6)),o=""},i=0;i"===n?(t=1,o=""):o=n+o[0]:r?n===r?r="":o+=n:'"'===n||"'"===n?r=n:">"===n?(l(),t=1):t&&("="===n?(t=5,_=o,o=""):"/"===n&&(t<5||">"===e[i][c+1])?(l(),3===t&&(u=u[0]),t=u,(u=u[0]).push(2,0,t),t=0):" "===n||"\t"===n||"\n"===n||"\r"===n?(l(),t=2):o+=n),3===t&&"!--"===o&&(t=4,u=u[0])}return l(),u}(e)),n),arguments,[])).length>1?n:n[0]}.bind(p);e.h=p,e.html=te,e.render=function(e,t,o){var r,u,l;_.__&&_.__(e,t),u=(r="function"==typeof o)?null:o&&o.__k||t.__k,l=[],D(t,e=(!r&&o||t).__k=p(d,null,[e]),u||i,i,void 0!==t.ownerSVGElement,!r&&o?[o]:u?null:t.firstChild?n.call(t.childNodes):null,l,!r&&o?o:u?u.__e:t.firstChild,r),w(l,e)},e.Component=v,e.createContext=function(e,n){var _={__c:n="__cC"+l++,__:e,Consumer:function(e,n){return e.children(n)},Provider:function(e){var _,t;return this.getChildContext||(_=[],(t={})[n]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&_.some(g)},this.sub=function(e){_.push(e);var n=e.componentWillUnmount;e.componentWillUnmount=function(){_.splice(_.indexOf(e),1),n&&n.call(e)}}),e.children}};return _.Provider.__=_.Consumer.contextType=_},e.useState=j,e.useReducer=G,e.useEffect=function(e,n){var t=$(F++,3);!_.__s&&Z(t.__H,n)&&(t.__=e,t.__H=n,L.__H.__h.push(t))},e.useLayoutEffect=z,e.useRef=function(e){return W=5,J(function(){return{current:e}},[])},e.useImperativeHandle=function(e,n,_){W=6,z(function(){"function"==typeof e?e(n()):e&&(e.current=n())},null==_?_:_.concat(e))},e.useMemo=J,e.useCallback=function(e,n){return W=8,J(function(){return e},n)},e.useContext=function(e){var n=L.context[e.__c],_=$(F++,9);return _.c=e,n?(null==_.__&&(_.__=!0,n.sub(L)),n.props.value):e.__},e.useDebugValue=function(e,n){_.useDebugValue&&_.useDebugValue(n?n(e):e)},e.useErrorBoundary=function(e){var n=$(F++,10),_=j();return n.__=e,L.componentDidCatch||(L.componentDidCatch=function(e){n.__&&n.__(e),_[1](e)}),[_[0],function(){_[1](void 0)}]}}); diff --git a/frontend/node_modules/htm/react/index.d.ts b/frontend/node_modules/htm/react/index.d.ts new file mode 100644 index 0000000..ec7cc8f --- /dev/null +++ b/frontend/node_modules/htm/react/index.d.ts @@ -0,0 +1,2 @@ +import * as React from 'react'; +declare const html: (strings: TemplateStringsArray, ...values: any[]) => React.ReactElement; diff --git a/frontend/node_modules/htm/react/index.js b/frontend/node_modules/htm/react/index.js new file mode 100644 index 0000000..e79498a --- /dev/null +++ b/frontend/node_modules/htm/react/index.js @@ -0,0 +1 @@ +var e,t=require("react"),r=((e=require("htm"))&&"object"==typeof e&&"default"in e?e.default:e).bind(t.createElement);exports.html=r; diff --git a/frontend/node_modules/htm/react/index.mjs b/frontend/node_modules/htm/react/index.mjs new file mode 100644 index 0000000..f0d9ab8 --- /dev/null +++ b/frontend/node_modules/htm/react/index.mjs @@ -0,0 +1 @@ +import{createElement as r}from"react";import m from"htm";var o=m.bind(r);export{o as html}; diff --git a/frontend/node_modules/htm/react/index.module.js b/frontend/node_modules/htm/react/index.module.js new file mode 100644 index 0000000..f0d9ab8 --- /dev/null +++ b/frontend/node_modules/htm/react/index.module.js @@ -0,0 +1 @@ +import{createElement as r}from"react";import m from"htm";var o=m.bind(r);export{o as html}; diff --git a/frontend/node_modules/htm/react/index.umd.js b/frontend/node_modules/htm/react/index.umd.js new file mode 100644 index 0000000..77089db --- /dev/null +++ b/frontend/node_modules/htm/react/index.umd.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("htm")):"function"==typeof define&&define.amd?define(["exports","react","htm"],t):t(e.htmReact={},e.react,e.htm)}(this,function(e,t,n){var r=(n=n&&n.hasOwnProperty("default")?n.default:n).bind(t.createElement);e.html=r}); diff --git a/frontend/node_modules/htm/react/package.json b/frontend/node_modules/htm/react/package.json new file mode 100644 index 0000000..3928912 --- /dev/null +++ b/frontend/node_modules/htm/react/package.json @@ -0,0 +1,12 @@ +{ + "name": "htm_react", + "module": "index.module.js", + "main": "index.js", + "umd:main": "index.umd.js", + "unpkg": "index.js", + "scripts": { + "build": "npm run -s build:main && npm run -s build:static", + "build:main": "microbundle index.mjs -o ../../../react/index.js --external react,htm --no-sourcemap --target web", + "build:static": "cp index.d.ts package.json ../../../react/" + } +} \ No newline at end of file diff --git a/frontend/node_modules/htm/src/build.mjs b/frontend/node_modules/htm/src/build.mjs new file mode 100644 index 0000000..927c372 --- /dev/null +++ b/frontend/node_modules/htm/src/build.mjs @@ -0,0 +1,292 @@ +import { MINI } from './constants.mjs'; + +const MODE_SLASH = 0; +const MODE_TEXT = 1; +const MODE_WHITESPACE = 2; +const MODE_TAGNAME = 3; +const MODE_COMMENT = 4; +const MODE_PROP_SET = 5; +const MODE_PROP_APPEND = 6; + +const CHILD_APPEND = 0; +const CHILD_RECURSE = 2; +const TAG_SET = 3; +const PROPS_ASSIGN = 4; +const PROP_SET = MODE_PROP_SET; +const PROP_APPEND = MODE_PROP_APPEND; + +// Turn a result of a build(...) call into a tree that is more +// convenient to analyze and transform (e.g. Babel plugins). +// For example: +// treeify( +// build`
<${x} />
`, +// [X, Y, Z] +// ) +// returns: +// { +// tag: 'div', +// props: [ { href: ["1", X] }, Y ], +// children: [ { tag: Z, props: [], children: [] } ] +// } +export const treeify = (built, fields) => { + const _treeify = built => { + let tag = ''; + let currentProps = null; + const props = []; + const children = []; + + for (let i = 1; i < built.length; i++) { + const type = built[i++]; + const value = built[i] ? fields[built[i++]-1] : built[++i]; + + if (type === TAG_SET) { + tag = value; + } + else if (type === PROPS_ASSIGN) { + props.push(value); + currentProps = null; + } + else if (type === PROP_SET) { + if (!currentProps) { + currentProps = Object.create(null); + props.push(currentProps); + } + currentProps[built[++i]] = [value]; + } + else if (type === PROP_APPEND) { + currentProps[built[++i]].push(value); + } + else if (type === CHILD_RECURSE) { + children.push(_treeify(value)); + } + else if (type === CHILD_APPEND) { + children.push(value); + } + } + + return { tag, props, children }; + }; + const { children } = _treeify(built); + return children.length > 1 ? children : children[0]; +}; + +export const evaluate = (h, built, fields, args) => { + let tmp; + + // `build()` used the first element of the operation list as + // temporary workspace. Now that `build()` is done we can use + // that space to track whether the current element is "dynamic" + // (i.e. it or any of its descendants depend on dynamic values). + built[0] = 0; + + for (let i = 1; i < built.length; i++) { + const type = built[i++]; + + // Set `built[0]`'s appropriate bits if this element depends on a dynamic value. + const value = built[i] ? ((built[0] |= type ? 1 : 2), fields[built[i++]]) : built[++i]; + + if (type === TAG_SET) { + args[0] = value; + } + else if (type === PROPS_ASSIGN) { + args[1] = Object.assign(args[1] || {}, value); + } + else if (type === PROP_SET) { + (args[1] = args[1] || {})[built[++i]] = value; + } + else if (type === PROP_APPEND) { + args[1][built[++i]] += (value + ''); + } + else if (type) { // type === CHILD_RECURSE + // Set the operation list (including the staticness bits) as + // `this` for the `h` call. + tmp = h.apply(value, evaluate(h, value, fields, ['', null])); + args.push(tmp); + + if (value[0]) { + // Set the 2nd lowest bit it the child element is dynamic. + built[0] |= 2; + } + else { + // Rewrite the operation list in-place if the child element is static. + // The currently evaluated piece `CHILD_RECURSE, 0, [...]` becomes + // `CHILD_APPEND, 0, tmp`. + // Essentially the operation list gets optimized for potential future + // re-evaluations. + built[i-2] = CHILD_APPEND; + built[i] = tmp; + } + } + else { // type === CHILD_APPEND + args.push(value); + } + } + + return args; +}; + +export const build = function(statics) { + const fields = arguments; + const h = this; + + let mode = MODE_TEXT; + let buffer = ''; + let quote = ''; + let current = [0]; + let char, propName; + + const commit = field => { + if (mode === MODE_TEXT && (field || (buffer = buffer.replace(/^\s*\n\s*|\s*\n\s*$/g,'')))) { + if (MINI) { + current.push(field ? fields[field] : buffer); + } + else { + current.push(CHILD_APPEND, field, buffer); + } + } + else if (mode === MODE_TAGNAME && (field || buffer)) { + if (MINI) { + current[1] = field ? fields[field] : buffer; + } + else { + current.push(TAG_SET, field, buffer); + } + mode = MODE_WHITESPACE; + } + else if (mode === MODE_WHITESPACE && buffer === '...' && field) { + if (MINI) { + current[2] = Object.assign(current[2] || {}, fields[field]); + } + else { + current.push(PROPS_ASSIGN, field, 0); + } + } + else if (mode === MODE_WHITESPACE && buffer && !field) { + if (MINI) { + (current[2] = current[2] || {})[buffer] = true; + } + else { + current.push(PROP_SET, 0, true, buffer); + } + } + else if (mode >= MODE_PROP_SET) { + if (MINI) { + if (mode === MODE_PROP_SET) { + (current[2] = current[2] || {})[propName] = field ? buffer ? (buffer + fields[field]) : fields[field] : buffer; + mode = MODE_PROP_APPEND; + } + else if (field || buffer) { + current[2][propName] += field ? buffer + fields[field] : buffer; + } + } + else { + if (buffer || (!field && mode === MODE_PROP_SET)) { + current.push(mode, 0, buffer, propName); + mode = MODE_PROP_APPEND; + } + if (field) { + current.push(mode, field, 0, propName); + mode = MODE_PROP_APPEND; + } + } + } + + buffer = ''; + }; + + for (let i=0; i' + if (buffer === '--' && char === '>') { + mode = MODE_TEXT; + buffer = ''; + } + else { + buffer = char + buffer[0]; + } + } + else if (quote) { + if (char === quote) { + quote = ''; + } + else { + buffer += char; + } + } + else if (char === '"' || char === "'") { + quote = char; + } + else if (char === '>') { + commit(); + mode = MODE_TEXT; + } + else if (!mode) { + // Ignore everything until the tag ends + } + else if (char === '=') { + mode = MODE_PROP_SET; + propName = buffer; + buffer = ''; + } + else if (char === '/' && (mode < MODE_PROP_SET || statics[i][j+1] === '>')) { + commit(); + if (mode === MODE_TAGNAME) { + current = current[0]; + } + mode = current; + if (MINI) { + (current = current[0]).push(h.apply(null, mode.slice(1))); + } + else { + (current = current[0]).push(CHILD_RECURSE, 0, mode); + } + mode = MODE_SLASH; + } + else if (char === ' ' || char === '\t' || char === '\n' || char === '\r') { + // + commit(); + mode = MODE_WHITESPACE; + } + else { + buffer += char; + } + + if (mode === MODE_TAGNAME && buffer === '!--') { + mode = MODE_COMMENT; + current = current[0]; + } + } + } + commit(); + + if (MINI) { + return current.length > 2 ? current.slice(1) : current[1]; + } + return current; +}; diff --git a/frontend/node_modules/htm/src/cjs.mjs b/frontend/node_modules/htm/src/cjs.mjs new file mode 100644 index 0000000..7be16a3 --- /dev/null +++ b/frontend/node_modules/htm/src/cjs.mjs @@ -0,0 +1,3 @@ +import htm from './index.mjs'; +if (typeof module != 'undefined') module.exports = htm; +else self.htm = htm; diff --git a/frontend/node_modules/htm/src/constants-mini.mjs b/frontend/node_modules/htm/src/constants-mini.mjs new file mode 100644 index 0000000..e1d3109 --- /dev/null +++ b/frontend/node_modules/htm/src/constants-mini.mjs @@ -0,0 +1 @@ +export const MINI = true; diff --git a/frontend/node_modules/htm/src/constants.mjs b/frontend/node_modules/htm/src/constants.mjs new file mode 100644 index 0000000..0378098 --- /dev/null +++ b/frontend/node_modules/htm/src/constants.mjs @@ -0,0 +1 @@ +export const MINI = false; diff --git a/frontend/node_modules/htm/src/index.d.ts b/frontend/node_modules/htm/src/index.d.ts new file mode 100644 index 0000000..d5108ca --- /dev/null +++ b/frontend/node_modules/htm/src/index.d.ts @@ -0,0 +1,6 @@ +declare const htm: { + bind( + h: (type: any, props: Record, ...children: any[]) => HResult + ): (strings: TemplateStringsArray, ...values: any[]) => HResult | HResult[]; +}; +export default htm; diff --git a/frontend/node_modules/htm/src/index.mjs b/frontend/node_modules/htm/src/index.mjs new file mode 100644 index 0000000..b34f87b --- /dev/null +++ b/frontend/node_modules/htm/src/index.mjs @@ -0,0 +1,29 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MINI } from './constants.mjs'; +import { build, evaluate } from './build.mjs'; + +const CACHES = new Map(); + +const regular = function(statics) { + let tmp = CACHES.get(this); + if (!tmp) { + tmp = new Map(); + CACHES.set(this, tmp); + } + tmp = evaluate(this, tmp.get(statics) || (tmp.set(statics, tmp = build(statics)), tmp), arguments, []); + return tmp.length > 1 ? tmp : tmp[0]; +}; + +export default MINI ? build : regular; diff --git a/frontend/node_modules/htm/src/integrations/preact/index.d.ts b/frontend/node_modules/htm/src/integrations/preact/index.d.ts new file mode 100644 index 0000000..4e2a426 --- /dev/null +++ b/frontend/node_modules/htm/src/integrations/preact/index.d.ts @@ -0,0 +1,5 @@ +import { h, VNode, Component } from 'preact'; +export * from 'preact/hooks'; +declare function render(tree: VNode, parent: HTMLElement): void; +declare const html: (strings: TemplateStringsArray, ...values: any[]) => VNode; +export { h, html, render, Component }; diff --git a/frontend/node_modules/htm/src/integrations/preact/index.mjs b/frontend/node_modules/htm/src/integrations/preact/index.mjs new file mode 100644 index 0000000..4a7b0bb --- /dev/null +++ b/frontend/node_modules/htm/src/integrations/preact/index.mjs @@ -0,0 +1,19 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { h, Component, render } from 'preact'; +import htm from 'htm'; + +const html = htm.bind(h); + +export { h, html, render, Component }; diff --git a/frontend/node_modules/htm/src/integrations/preact/package.json b/frontend/node_modules/htm/src/integrations/preact/package.json new file mode 100644 index 0000000..a54e91c --- /dev/null +++ b/frontend/node_modules/htm/src/integrations/preact/package.json @@ -0,0 +1,13 @@ +{ + "name": "htm_preact", + "module": "index.module.js", + "main": "index.js", + "umd:main": "index.umd.js", + "unpkg": "standalone.js", + "scripts": { + "build": "npm run -s build:main && npm run -s build:standalone && npm run -s build:static", + "build:main": "microbundle index.mjs -o ../../../preact/index.js --external preact,htm --no-sourcemap --target web", + "build:static": "cp index.d.ts package.json ../../../preact/", + "build:standalone": "microbundle standalone.mjs -o ../../../preact/standalone.js -f es,umd --no-sourcemap --target web" + } +} \ No newline at end of file diff --git a/frontend/node_modules/htm/src/integrations/preact/standalone.mjs b/frontend/node_modules/htm/src/integrations/preact/standalone.mjs new file mode 100644 index 0000000..e78dfb0 --- /dev/null +++ b/frontend/node_modules/htm/src/integrations/preact/standalone.mjs @@ -0,0 +1,20 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { h, Component, createContext, render } from 'preact'; +import { useState, useReducer, useEffect, useLayoutEffect, useRef, useImperativeHandle, useMemo, useCallback, useContext, useDebugValue, useErrorBoundary } from 'preact/hooks'; +import htm from '../../index.mjs'; + +const html = htm.bind(h); + +export { h, html, render, Component, createContext, useState, useReducer, useEffect, useLayoutEffect, useRef, useImperativeHandle, useMemo, useCallback, useContext, useDebugValue, useErrorBoundary }; diff --git a/frontend/node_modules/htm/src/integrations/react/index.d.ts b/frontend/node_modules/htm/src/integrations/react/index.d.ts new file mode 100644 index 0000000..ec7cc8f --- /dev/null +++ b/frontend/node_modules/htm/src/integrations/react/index.d.ts @@ -0,0 +1,2 @@ +import * as React from 'react'; +declare const html: (strings: TemplateStringsArray, ...values: any[]) => React.ReactElement; diff --git a/frontend/node_modules/htm/src/integrations/react/index.mjs b/frontend/node_modules/htm/src/integrations/react/index.mjs new file mode 100644 index 0000000..ed73bf8 --- /dev/null +++ b/frontend/node_modules/htm/src/integrations/react/index.mjs @@ -0,0 +1,16 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createElement } from 'react'; +import htm from 'htm'; +export const html = htm.bind(createElement); diff --git a/frontend/node_modules/htm/src/integrations/react/package.json b/frontend/node_modules/htm/src/integrations/react/package.json new file mode 100644 index 0000000..3928912 --- /dev/null +++ b/frontend/node_modules/htm/src/integrations/react/package.json @@ -0,0 +1,12 @@ +{ + "name": "htm_react", + "module": "index.module.js", + "main": "index.js", + "umd:main": "index.umd.js", + "unpkg": "index.js", + "scripts": { + "build": "npm run -s build:main && npm run -s build:static", + "build:main": "microbundle index.mjs -o ../../../react/index.js --external react,htm --no-sourcemap --target web", + "build:static": "cp index.d.ts package.json ../../../react/" + } +} \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f740b50..cd1a4fe 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "radius-frontend", "version": "0.1.0", "dependencies": { + "htm": "^3.1.1", "vue": "^3.4.38" }, "devDependencies": { @@ -965,6 +966,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/htm": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", + "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==", + "license": "Apache-2.0" + }, "node_modules/magic-string": { "version": "0.30.19", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", diff --git a/frontend/package.json b/frontend/package.json index 73ae48a..5837c3b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,11 +9,11 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.4.38" + "vue": "^3.4.38", + "htm": "^3.1.1" }, "devDependencies": { "@vitejs/plugin-vue": "^5.0.5", "vite": "^5.4.8" } } - diff --git a/frontend/public/icons/clear.svg b/frontend/public/icons/clear.svg new file mode 100644 index 0000000..46001e5 --- /dev/null +++ b/frontend/public/icons/clear.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/copy.svg b/frontend/public/icons/copy.svg new file mode 100644 index 0000000..e2069e5 --- /dev/null +++ b/frontend/public/icons/copy.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/download.svg b/frontend/public/icons/download.svg new file mode 100644 index 0000000..767e2c3 --- /dev/null +++ b/frontend/public/icons/download.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/filter.svg b/frontend/public/icons/filter.svg new file mode 100644 index 0000000..7655ca5 --- /dev/null +++ b/frontend/public/icons/filter.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/guest.svg b/frontend/public/icons/guest.svg new file mode 100644 index 0000000..99576d2 --- /dev/null +++ b/frontend/public/icons/guest.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/layout-devices.svg b/frontend/public/icons/layout-devices.svg new file mode 100644 index 0000000..0ef6ece --- /dev/null +++ b/frontend/public/icons/layout-devices.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/layout-users.svg b/frontend/public/icons/layout-users.svg new file mode 100644 index 0000000..8bfa2b9 --- /dev/null +++ b/frontend/public/icons/layout-users.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/moon.svg b/frontend/public/icons/moon.svg new file mode 100644 index 0000000..d1cac4e --- /dev/null +++ b/frontend/public/icons/moon.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/settings.svg b/frontend/public/icons/settings.svg new file mode 100644 index 0000000..3c9f566 --- /dev/null +++ b/frontend/public/icons/settings.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/sun.svg b/frontend/public/icons/sun.svg new file mode 100644 index 0000000..2bbeeb8 --- /dev/null +++ b/frontend/public/icons/sun.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/test.svg b/frontend/public/icons/test.svg new file mode 100644 index 0000000..13bfe95 --- /dev/null +++ b/frontend/public/icons/test.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/icons/user-plus.svg b/frontend/public/icons/user-plus.svg new file mode 100644 index 0000000..e3a457e --- /dev/null +++ b/frontend/public/icons/user-plus.svg @@ -0,0 +1 @@ + diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 84dcfcc..96df492 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,73 +1,124 @@ - +const filteredRequests = computed(() => { + return requests.value.filter(ev => { + if (eventFilters.type && ev.type !== eventFilters.type) return false; + if (eventFilters.text) { + const t = eventFilters.text.toLowerCase(); + const blob = JSON.stringify(ev).toLowerCase(); + if (!blob.includes(t)) return false; + } + return true; + }); +}); + +const filteredUsers = computed(() => { + return users.value.filter(u => { + if (userFilters.text && !u.username.toLowerCase().includes(userFilters.text.toLowerCase())) return false; + if (userFilters.status === 'active' && u.disabled) return false; + if (userFilters.status === 'disabled' && !u.disabled) return false; + return true; + }); +}); + +function copyRequests() { + const txt = JSON.stringify(requests.value, null, 2); + navigator.clipboard?.writeText(txt); +} + +function toggleTheme() { + theme.value = theme.value === 'light' ? 'dark' : 'light'; + localStorage.setItem('theme', theme.value); + applyTheme(); +} +function applyTheme() { + document.documentElement.classList.toggle('light', theme.value === 'light'); +} + +function openAddUser() { /* placeholder for advanced modal */ } +function openAddGuest() { /* placeholder for advanced modal */ } +function openSettings() { /* placeholder for advanced modal */ } + diff --git a/frontend/src/components/EventCard.js b/frontend/src/components/EventCard.js new file mode 100644 index 0000000..43c48d0 --- /dev/null +++ b/frontend/src/components/EventCard.js @@ -0,0 +1,27 @@ +import { defineComponent, h } from 'vue'; +import htm from 'htm'; +const html = htm.bind(h); + +export default defineComponent({ + name: 'EventCard', + props: { ev: { type: Object, required: true } }, + setup(props) { + return () => { + const a = props.ev.attrs || {}; + return html`
+
+ ${props.ev.type} + ${props.ev.ts} + ${props.ev.decision ? html`Decision: ${props.ev.decision}` : ''} + ${props.ev.error ? html`Error` : ''} +
+
+ ${a['User-Name'] || a['User-Name*0'] ? html`User: ${a['User-Name'] || a['User-Name*0']}` : ''} + ${a['NAS-IP-Address'] ? html` — NAS: ${a['NAS-IP-Address']}` : ''} + ${a['Calling-Station-Id'] ? html` — STA: ${a['Calling-Station-Id']}` : ''} +
+
`; + }; + } +}); + diff --git a/frontend/src/components/Modal.vue b/frontend/src/components/Modal.vue new file mode 100644 index 0000000..025172d --- /dev/null +++ b/frontend/src/components/Modal.vue @@ -0,0 +1,24 @@ + + + + diff --git a/frontend/src/components/UserCard.js b/frontend/src/components/UserCard.js new file mode 100644 index 0000000..62d21c5 --- /dev/null +++ b/frontend/src/components/UserCard.js @@ -0,0 +1,25 @@ +import { defineComponent, h } from 'vue'; +import htm from 'htm'; +const html = htm.bind(h); + +export default defineComponent({ + name: 'UserCard', + props: { item: { type: Object, required: true }, mode: { type: String, default: 'user' } }, + emits: ['toggleDisable', 'remove'], + setup(props, { emit }) { + function toggle() { emit('toggleDisable', props.item); } + function remove() { emit('remove', props.item); } + return () => html`
+
+ ${props.mode === 'user' ? props.item.username : (props.item.device || props.item.username)} + VLAN ${props.item.vlan} + ${props.item.disabled ? html`deshabilitado` : html`activo`} + + + +
+
${props.item.devices ? props.item.devices.length : 0} dispositivos
+
`; + } +}); + diff --git a/frontend/src/main.js b/frontend/src/main.js index 0e698cc..1570ac0 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -1,5 +1,6 @@ import { createApp } from 'vue'; import App from './App.vue'; +import './styles.css'; -createApp(App).mount('#app'); - +const app = createApp(App); +app.mount('#app'); diff --git a/frontend/src/styles.css b/frontend/src/styles.css new file mode 100644 index 0000000..4e3a22d --- /dev/null +++ b/frontend/src/styles.css @@ -0,0 +1,75 @@ +:root { + --bg: 15 15 18; + --fg: 235 235 240; + --muted: 180 180 190; + --accent: 80 160 255; + --card: 28 28 34 / 0.55; + --border: 255 255 255 / 0.12; + --glass-blur: 14px; + --radius: 14px; +} +:root.light { + --bg: 245 245 248; + --fg: 20 20 22; + --muted: 110 110 120; + --accent: 18 108 242; + --card: 255 255 255 / 0.6; + --border: 0 0 0 / 0.08; +} +* { box-sizing: border-box; } +html, body, #app { height: 100%; } +html, body { margin: 0; padding: 0; background: rgb(var(--bg)); color: rgb(var(--fg)); } +body { font: 14px/1.45 system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; } +button { cursor: pointer; } +a { color: inherit; } + +/* Top bar */ +.topbar { + position: sticky; top: 0; z-index: 10; + display: flex; flex-wrap: wrap; align-items: center; + gap: 10px; padding: 10px 14px; backdrop-filter: blur(var(--glass-blur)); + background: linear-gradient(180deg, rgba(var(--card)), rgba(var(--card)) 60%, rgba(0,0,0,0)); + border-bottom: 1px solid rgba(var(--border)); +} +.title { font-size: 16px; font-weight: 700; letter-spacing: .2px; flex: 1 1 auto; } +.actions { display: inline-flex; flex-wrap: wrap; gap: 8px; align-items: center; } +.icon-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 10px; border-radius: 10px; border: 1px solid rgba(var(--border)); background: rgba(var(--card)); color: inherit; transition: transform .12s ease, background .2s; + backdrop-filter: blur(var(--glass-blur)); } +.icon-btn:hover { transform: translateY(-1px); background: rgba(var(--card)); } +.icon { width: 16px; height: 16px; opacity: .9; } + +/* Layout */ +.shell { height: calc(100vh - 54px); display: grid; grid-template-columns: 360px 1fr; gap: 12px; padding: 12px; } +.panel { border: 1px solid rgba(var(--border)); background: rgba(var(--card)); border-radius: var(--radius); backdrop-filter: blur(var(--glass-blur)); overflow: hidden; display: flex; flex-direction: column; min-height: 0; } +.panel-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid rgba(var(--border)); } +.panel-title { font-weight: 600; } +.panel-actions { display: inline-flex; flex-wrap: wrap; gap: 6px; } +.scroll { overflow: auto; padding: 10px; } + +/* Cards */ +.card { border: 1px solid rgba(var(--border)); background: rgba(var(--card)); border-radius: 12px; padding: 10px; transition: transform .12s ease, box-shadow .2s ease; box-shadow: 0 4px 14px rgba(0,0,0,.08); } +.card:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(0,0,0,.12); } +.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; } + +/* Responsive */ +@media (max-width: 980px) { + .shell { grid-template-columns: 1fr; } +} + +/* Collapse helpers: keep headers visible when collapsed */ +.panel.collapsed .scroll { display: none; } + +/* Modal */ +.modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.35); backdrop-filter: blur(4px); display: grid; place-items: center; z-index: 20; animation: fadeIn .15s ease; +} +.modal { width: min(680px, 92vw); border-radius: 14px; border: 1px solid rgba(var(--border)); background: rgba(var(--card)); padding: 14px; box-shadow: 0 10px 32px rgba(0,0,0,.2); } +.modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } +.modal-footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; } +@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } + +/* Small bits */ +.chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border: 1px solid rgba(var(--border)); border-radius: 999px; background: rgba(var(--card)); font-size: 12px; } +.muted { color: rgb(var(--muted)); } +.row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } +.spacer { flex: 1; } +.toggle { padding: 6px 10px; border-radius: 8px; border: 1px solid rgba(var(--border)); background: rgba(var(--card)); }