(function(){"use strict";/** * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/function Ho(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const z={},lt=[],we=()=>{},Rn=()=>!1,Wt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),qt=e=>e.startsWith("onUpdate:"),Q=Object.assign,Fo=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},Bi=Object.prototype.hasOwnProperty,H=(e,t)=>Bi.call(e,t),P=Array.isArray,qe=e=>vt(e)==="[object Map]",Yt=e=>vt(e)==="[object Set]",Un=e=>vt(e)==="[object Date]",N=e=>typeof e=="function",Y=e=>typeof e=="string",xe=e=>typeof e=="symbol",j=e=>e!==null&&typeof e=="object",In=e=>(j(e)||N(e))&&N(e.then)&&N(e.catch),Hn=Object.prototype.toString,vt=e=>Hn.call(e),zi=e=>vt(e).slice(8,-1),Gt=e=>vt(e)==="[object Object]",Do=e=>Y(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,xt=Ho(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Xt=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Ki=/-\w/g,ne=Xt(e=>e.replace(Ki,t=>t.slice(1).toUpperCase())),Wi=/\B([A-Z])/g,be=Xt(e=>e.replace(Wi,"-$1").toLowerCase()),Jt=Xt(e=>e.charAt(0).toUpperCase()+e.slice(1)),jo=Xt(e=>e?`on${Jt(e)}`:""),Ie=(e,t)=>!Object.is(e,t),Zt=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:o})},Vo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Dn=e=>{const t=Y(e)?Number(e):NaN;return isNaN(t)?e:t};let jn;const Qt=()=>jn||(jn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function yt(e){if(P(e)){const t={};for(let o=0;o{if(o){const n=o.split(Yi);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function me(e){let t="";if(Y(e))t=e;else if(P(e))for(let o=0;o!!(e&&e.__v_isRef===!0),T=e=>Y(e)?e:e==null?"":P(e)||j(e)&&(e.toString===Hn||!N(e.toString))?zn(e)?T(e.value):JSON.stringify(e,Kn,2):String(e),Kn=(e,t)=>zn(t)?Kn(e,t.value):qe(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[n,s],l)=>(o[Bo(n,l)+" =>"]=s,o),{})}:Yt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Bo(o))}:xe(t)?Bo(t):j(t)&&!P(t)&&!Gt(t)?String(t):t,Bo=(e,t="")=>{var o;return xe(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/let se;class Qi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const n=this.scopes.slice();for(t=0,o=n.length;t0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,n;for(o=0,n=this.effects.length;o0)return;if($t){let t=$t;for($t=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;kt;){let t=kt;for(kt=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=o}}if(e)throw e}function Gn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xn(e){let t,o=e.depsTail,n=o;for(;n;){const s=n.prevDep;n.version===-1?(n===o&&(o=s),Yo(n),tl(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=s}e.deps=t,e.depsTail=o}function qo(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Jn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Jn(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||!qo(e))))return;e.flags|=2;const t=e.dep,o=W,n=ye;W=e,ye=!0;try{Gn(e);const s=e.fn(e._value);(t.version===0||Ie(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{W=o,ye=n,Xn(e),e.flags&=-3}}function Yo(e,t=!1){const{dep:o,prevSub:n,nextSub:s}=e;if(n&&(n.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=n,e.nextSub=void 0),o.subs===e&&(o.subs=n,!n&&o.computed)){o.computed.flags&=-5;for(let l=o.computed.deps;l;l=l.nextDep)Yo(l,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function tl(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let ye=!0;const Zn=[];function Se(){Zn.push(ye),ye=!1}function _e(){const e=Zn.pop();ye=e===void 0?!0:e}function Qn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=W;W=void 0;try{t()}finally{W=o}}}let wt=0;class ol{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class es{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(!W||!ye||W===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==W)o=this.activeLink=new ol(W,this),W.deps?(o.prevDep=W.depsTail,W.depsTail.nextDep=o,W.depsTail=o):W.deps=W.depsTail=o,ts(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const n=o.nextDep;n.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=n),o.prevDep=W.depsTail,o.nextDep=void 0,W.depsTail.nextDep=o,W.depsTail=o,W.deps===o&&(W.deps=n)}return o}trigger(t){this.version++,wt++,this.notify(t)}notify(t){Ko();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Wo()}}}function ts(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)ts(n)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Go=new WeakMap,Ze=Symbol(""),Xo=Symbol(""),St=Symbol("");function re(e,t,o){if(ye&&W){let n=Go.get(e);n||Go.set(e,n=new Map);let s=n.get(o);s||(n.set(o,s=new es),s.map=n,s.key=o),s.track()}}function He(e,t,o,n,s,l){const i=Go.get(e);if(!i){wt++;return}const r=a=>{a&&a.trigger()};if(Ko(),t==="clear")i.forEach(r);else{const a=P(e),u=a&&Do(o);if(a&&o==="length"){const p=Number(n);i.forEach((h,k)=>{(k==="length"||k===St||!xe(k)&&k>=p)&&r(h)})}else switch((o!==void 0||i.has(void 0))&&r(i.get(o)),u&&r(i.get(St)),t){case"add":a?u&&r(i.get("length")):(r(i.get(Ze)),qe(e)&&r(i.get(Xo)));break;case"delete":a||(r(i.get(Ze)),qe(e)&&r(i.get(Xo)));break;case"set":qe(e)&&r(i.get(Ze));break}}Wo()}function rt(e){const t=F(e);return t===e?t:(re(t,"iterate",St),ke(e)?t:t.map(De))}function to(e){return re(e=F(e),"iterate",St),e}function Le(e,t){return Ye(e)?at(Qe(e)?De(t):t):De(t)}const nl={__proto__:null,[Symbol.iterator](){return Jo(this,Symbol.iterator,e=>Le(this,e))},concat(...e){return rt(this).concat(...e.map(t=>P(t)?rt(t):t))},entries(){return Jo(this,"entries",e=>(e[1]=Le(this,e[1]),e))},every(e,t){return Fe(this,"every",e,t,void 0,arguments)},filter(e,t){return Fe(this,"filter",e,t,o=>o.map(n=>Le(this,n)),arguments)},find(e,t){return Fe(this,"find",e,t,o=>Le(this,o),arguments)},findIndex(e,t){return Fe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Fe(this,"findLast",e,t,o=>Le(this,o),arguments)},findLastIndex(e,t){return Fe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Fe(this,"forEach",e,t,void 0,arguments)},includes(...e){return Zo(this,"includes",e)},indexOf(...e){return Zo(this,"indexOf",e)},join(e){return rt(this).join(e)},lastIndexOf(...e){return Zo(this,"lastIndexOf",e)},map(e,t){return Fe(this,"map",e,t,void 0,arguments)},pop(){return _t(this,"pop")},push(...e){return _t(this,"push",e)},reduce(e,...t){return os(this,"reduce",e,t)},reduceRight(e,...t){return os(this,"reduceRight",e,t)},shift(){return _t(this,"shift")},some(e,t){return Fe(this,"some",e,t,void 0,arguments)},splice(...e){return _t(this,"splice",e)},toReversed(){return rt(this).toReversed()},toSorted(e){return rt(this).toSorted(e)},toSpliced(...e){return rt(this).toSpliced(...e)},unshift(...e){return _t(this,"unshift",e)},values(){return Jo(this,"values",e=>Le(this,e))}};function Jo(e,t,o){const n=to(e),s=n[t]();return n!==e&&!ke(e)&&(s._next=s.next,s.next=()=>{const l=s._next();return l.done||(l.value=o(l.value)),l}),s}const sl=Array.prototype;function Fe(e,t,o,n,s,l){const i=to(e),r=i!==e&&!ke(e),a=i[t];if(a!==sl[t]){const h=a.apply(e,l);return r?De(h):h}let u=o;i!==e&&(r?u=function(h,k){return o.call(this,Le(e,h),k,e)}:o.length>2&&(u=function(h,k){return o.call(this,h,k,e)}));const p=a.call(i,u,n);return r&&s?s(p):p}function os(e,t,o,n){const s=to(e),l=s!==e&&!ke(e);let i=o,r=!1;s!==e&&(l?(r=n.length===0,i=function(u,p,h){return r&&(r=!1,u=Le(e,u)),o.call(this,u,Le(e,p),h,e)}):o.length>3&&(i=function(u,p,h){return o.call(this,u,p,h,e)}));const a=s[t](i,...n);return r?Le(e,a):a}function Zo(e,t,o){const n=F(e);re(n,"iterate",St);const s=n[t](...o);return(s===-1||s===!1)&&on(o[0])?(o[0]=F(o[0]),n[t](...o)):s}function _t(e,t,o=[]){Se(),Ko();const n=F(e)[t].apply(e,o);return Wo(),_e(),n}const il=Ho("__proto__,__v_isRef,__isVue"),ns=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(xe));function ll(e){xe(e)||(e=String(e));const t=F(this);return re(t,"has",e),t.hasOwnProperty(e)}class ss{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,n){if(o==="__v_skip")return t.__v_skip;const s=this._isReadonly,l=this._isShallow;if(o==="__v_isReactive")return!s;if(o==="__v_isReadonly")return s;if(o==="__v_isShallow")return l;if(o==="__v_raw")return n===(s?l?ds:cs:l?as:rs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=P(t);if(!s){let a;if(i&&(a=nl[o]))return a;if(o==="hasOwnProperty")return ll}const r=Reflect.get(t,o,ae(t)?t:n);if((xe(o)?ns.has(o):il(o))||(s||re(t,"get",o),l))return r;if(ae(r)){const a=i&&Do(o)?r:r.value;return s&&j(a)?tn(a):a}return j(r)?s?tn(r):en(r):r}}class is extends ss{constructor(t=!1){super(!1,t)}set(t,o,n,s){let l=t[o];const i=P(t)&&Do(o);if(!this._isShallow){const u=Ye(l);if(!ke(n)&&!Ye(n)&&(l=F(l),n=F(n)),!i&&ae(l)&&!ae(n))return u||(l.value=n),!0}const r=i?Number(o)e,oo=e=>Reflect.getPrototypeOf(e);function pl(e,t,o){return function(...n){const s=this.__v_raw,l=F(s),i=qe(l),r=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=s[e](...n),p=o?Qo:t?at:De;return!t&&re(l,"iterate",a?Xo:Ze),Q(Object.create(u),{next(){const{value:h,done:k}=u.next();return k?{value:h,done:k}:{value:r?[p(h[0]),p(h[1])]:p(h),done:k}}})}}function no(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ul(e,t){const o={get(s){const l=this.__v_raw,i=F(l),r=F(s);e||(Ie(s,r)&&re(i,"get",s),re(i,"get",r));const{has:a}=oo(i),u=t?Qo:e?at:De;if(a.call(i,s))return u(l.get(s));if(a.call(i,r))return u(l.get(r));l!==i&&l.get(s)},get size(){const s=this.__v_raw;return!e&&re(F(s),"iterate",Ze),s.size},has(s){const l=this.__v_raw,i=F(l),r=F(s);return e||(Ie(s,r)&&re(i,"has",s),re(i,"has",r)),s===r?l.has(s):l.has(s)||l.has(r)},forEach(s,l){const i=this,r=i.__v_raw,a=F(r),u=t?Qo:e?at:De;return!e&&re(a,"iterate",Ze),r.forEach((p,h)=>s.call(l,u(p),u(h),i))}};return Q(o,e?{add:no("add"),set:no("set"),delete:no("delete"),clear:no("clear")}:{add(s){const l=F(this),i=oo(l),r=F(s),a=!t&&!ke(s)&&!Ye(s)?r:s;return i.has.call(l,a)||Ie(s,a)&&i.has.call(l,s)||Ie(r,a)&&i.has.call(l,r)||(l.add(a),He(l,"add",a,a)),this},set(s,l){!t&&!ke(l)&&!Ye(l)&&(l=F(l));const i=F(this),{has:r,get:a}=oo(i);let u=r.call(i,s);u||(s=F(s),u=r.call(i,s));const p=a.call(i,s);return i.set(s,l),u?Ie(l,p)&&He(i,"set",s,l):He(i,"add",s,l),this},delete(s){const l=F(this),{has:i,get:r}=oo(l);let a=i.call(l,s);a||(s=F(s),a=i.call(l,s)),r&&r.call(l,s);const u=l.delete(s);return a&&He(l,"delete",s,void 0),u},clear(){const s=F(this),l=s.size!==0,i=s.clear();return l&&He(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{o[s]=pl(s,e,t)}),o}function so(e,t){const o=ul(e,t);return(n,s,l)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?n:Reflect.get(H(o,s)&&s in n?o:n,s,l)}const fl={get:so(!1,!1)},hl={get:so(!1,!0)},gl={get:so(!0,!1)},bl={get:so(!0,!0)},rs=new WeakMap,as=new WeakMap,cs=new WeakMap,ds=new WeakMap;function ml(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function en(e){return Ye(e)?e:io(e,!1,rl,fl,rs)}function vl(e){return io(e,!1,cl,hl,as)}function tn(e){return io(e,!0,al,gl,cs)}function ep(e){return io(e,!0,dl,bl,ds)}function io(e,t,o,n,s){if(!j(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const l=s.get(e);if(l)return l;const i=ml(zi(e));if(i===0)return e;const r=new Proxy(e,i===2?n:o);return s.set(e,r),r}function Qe(e){return Ye(e)?Qe(e.__v_raw):!!(e&&e.__v_isReactive)}function Ye(e){return!!(e&&e.__v_isReadonly)}function ke(e){return!!(e&&e.__v_isShallow)}function on(e){return e?!!e.__v_raw:!1}function F(e){const t=e&&e.__v_raw;return t?F(t):e}function xl(e){return!H(e,"__v_skip")&&Object.isExtensible(e)&&Fn(e,"__v_skip",!0),e}const De=e=>j(e)?en(e):e,at=e=>j(e)?tn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function ps(e){return ae(e)?e.value:e}const yl={get:(e,t,o)=>t==="__v_raw"?e:ps(Reflect.get(e,t,o)),set:(e,t,o,n)=>{const s=e[t];return ae(s)&&!ae(o)?(s.value=o,!0):Reflect.set(e,t,o,n)}};function us(e){return Qe(e)?e:new Proxy(e,yl)}class kl{constructor(t,o,n){this.fn=t,this.setter=o,this._value=void 0,this.dep=new es(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=!o,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&W!==this)return Yn(this,!0),!0}get value(){const t=this.dep.track();return Jn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function $l(e,t,o=!1){let n,s;return N(e)?n=e:(n=e.get,s=e.set),new kl(n,s,o)}const lo={},ro=new WeakMap;let et;function wl(e,t=!1,o=et){if(o){let n=ro.get(o);n||ro.set(o,n=[]),n.push(e)}}function Sl(e,t,o=z){const{immediate:n,deep:s,once:l,scheduler:i,augmentJob:r,call:a}=o,u=O=>s?O:ke(O)||s===!1||s===0?je(O,1):je(O);let p,h,k,_,D=!1,R=!1;if(ae(e)?(h=()=>e.value,D=ke(e)):Qe(e)?(h=()=>u(e),D=!0):P(e)?(R=!0,D=e.some(O=>Qe(O)||ke(O)),h=()=>e.map(O=>{if(ae(O))return O.value;if(Qe(O))return u(O);if(N(O))return a?a(O,2):O()})):N(e)?t?h=a?()=>a(e,2):e:h=()=>{if(k){Se();try{k()}finally{_e()}}const O=et;et=p;try{return a?a(e,3,[_]):e(_)}finally{et=O}}:h=we,t&&s){const O=h,oe=s===!0?1/0:s;h=()=>je(O(),oe)}const ee=el(),X=()=>{p.stop(),ee&&ee.active&&Fo(ee.effects,p)};if(l&&t){const O=t;t=(...oe)=>{const Oe=O(...oe);return X(),Oe}}let I=R?new Array(e.length).fill(lo):lo;const V=O=>{if(!(!(p.flags&1)||!p.dirty&&!O))if(t){const oe=p.run();if(O||s||D||(R?oe.some((Oe,Pe)=>Ie(Oe,I[Pe])):Ie(oe,I))){k&&k();const Oe=et;et=p;try{const Pe=[oe,I===lo?void 0:R&&I[0]===lo?[]:I,_];I=oe,a?a(t,3,Pe):t(...Pe)}finally{et=Oe}}}else p.run()};return r&&r(V),p=new Wn(h),p.scheduler=i?()=>i(V,!1):V,_=O=>wl(O,!1,p),k=p.onStop=()=>{const O=ro.get(p);if(O){if(a)a(O,4);else for(const oe of O)oe();ro.delete(p)}},t?n?V(!0):I=p.run():i?i(V.bind(null,!0),!0):p.run(),X.pause=p.pause.bind(p),X.resume=p.resume.bind(p),X.stop=X,X}function je(e,t=1/0,o){if(t<=0||!j(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,ae(e))je(e.value,t,o);else if(P(e))for(let n=0;n{je(n,t,o)});else if(Gt(e)){for(const n in e)je(e[n],t,o);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&je(e[n],t,o)}return e}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/const Lt=[];let nn=!1;function tp(e,...t){if(nn)return;nn=!0,Se();const o=Lt.length?Lt[Lt.length-1].component:null,n=o&&o.appContext.config.warnHandler,s=_l();if(n)ct(n,o,11,[e+t.map(l=>{var i,r;return(r=(i=l.toString)==null?void 0:i.call(l))!=null?r:JSON.stringify(l)}).join(""),o&&o.proxy,s.map(({vnode:l})=>`at <${fi(o,l.type)}>`).join(` `),s]);else{const l=[`[Vue warn]: ${e}`,...t];s.length&&l.push(` `,...Ll(s)),console.warn(...l)}_e(),nn=!1}function _l(){let e=Lt[Lt.length-1];if(!e)return[];const t=[];for(;e;){const o=t[0];o&&o.vnode===e?o.recurseCount++:t.push({vnode:e,recurseCount:0});const n=e.component&&e.component.parent;e=n&&n.vnode}return t}function Ll(e){const t=[];return e.forEach((o,n)=>{t.push(...n===0?[]:[` `],...El(o))}),t}function El({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,s=` at <${fi(e.component,e.type,n)}`,l=">"+o;return e.props?[s,...Tl(e.props),l]:[s+l]}function Tl(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(n=>{t.push(...fs(n,e[n]))}),o.length>3&&t.push(" ..."),t}function fs(e,t,o){return Y(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:ae(t)?(t=fs(e,F(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):N(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=F(t),o?t:[`${e}=`,t])}function ct(e,t,o,n){try{return n?e(...n):e()}catch(s){ao(s,t,o)}}function $e(e,t,o,n){if(N(e)){const s=ct(e,t,o,n);return s&&In(s)&&s.catch(l=>{ao(l,t,o)}),s}if(P(e)){const s=[];for(let l=0;l>>1,s=de[n],l=Et(s);l=Et(o)?de.push(e):de.splice(Al(t),0,e),e.flags|=1,bs()}}function bs(){co||(co=hs.then(xs))}function Ol(e){if(!P(e))Ge&&e.id===-1?Ge.splice(pt+1,0,e):e.flags&1||(dt.push(e),e.flags|=1);else for(let t=0;tEt(o)-Et(n));if(dt.length=0,Ge){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function xs(e){try{for(Ee=0;Ee{n._d&&si(-1);const l=po(t),i=ze.length;let r;try{r=e(...s)}finally{for(let a=ze.length;a>i;a--)xn();po(l),n._d&&si(1)}return r};return n._n=!0,n._c=!0,n._d=!0,n}function ft(e,t){if(ie===null)return e;const o=wo(ie),n=e.dirs||(e.dirs=[]);for(let s=0;s1)return o&&N(t)?t.call(n&&n.proxy):t}}const Ml=Symbol.for("v-scx"),Nl=()=>Tt(Ml);function ln(e,t,o){return ks(e,t,o)}function ks(e,t,o=z){const{immediate:n,deep:s,flush:l,once:i}=o,r=Q({},o),a=t&&n||!t&&l!=="post";let u;if(It){if(l==="sync"){const _=Nl();u=_.__watcherHandles||(_.__watcherHandles=[])}else if(!a){const _=()=>{};return _.stop=we,_.resume=we,_.pause=we,_}}const p=ce;r.call=(_,D,R)=>$e(_,p,D,R);let h=!1;l==="post"?r.scheduler=_=>{fe(_,p&&p.suspense)}:l!=="sync"&&(h=!0,r.scheduler=(_,D)=>{D?_():sn(_)}),r.augmentJob=_=>{t&&(_.flags|=4),h&&(_.flags|=2,p&&(_.id=p.uid,_.i=p))};const k=Sl(e,t,r);return It&&(u?u.push(k):a&&k()),k}function Rl(e,t,o){const n=this.proxy,s=Y(e)?e.includes(".")?$s(n,e):()=>n[e]:e.bind(n,n);let l;N(t)?l=t:(l=t.handler,o=t);const i=Ut(this),r=ks(s,l.bind(n),o);return i(),r}function $s(e,t){const o=t.split(".");return()=>{let n=e;for(let s=0;se.__isTeleport,rn=Symbol("_leaveCb");function Il(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Te){t=o;break}}return t}function ws(e){if(!cn(e))return uo(e.type)&&e.children?Il(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&N(o.default))return o.default()}}function an(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;an(uo(o.type)&&ws(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function fo(e,t){return N(e)?Q({name:e.name},t,{setup:e}):e}function Ss(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function _s(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const ho=new WeakMap;function Ct(e,t,o,n,s=!1){if(P(e)){e.forEach((R,ee)=>Ct(R,t&&(P(t)?t[ee]:t),o,n,s));return}if(ht(n)&&!s){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Ct(e,t,o,n.component.subTree);return}const l=n.shapeFlag&4?wo(n.component):n.el,i=s?null:l,{i:r,r:a}=e,u=t&&t.r,p=r.refs===z?r.refs={}:r.refs,h=r.setupState,k=F(h),_=h===z?Rn:R=>_s(p,R)?!1:H(k,R),D=(R,ee)=>!(ee&&_s(p,ee));if(u!=null&&u!==a){if(Ls(t),Y(u))p[u]=null,_(u)&&(h[u]=null);else if(ae(u)){const R=t;D(u,R.k)&&(u.value=null),R.k&&(p[R.k]=null)}}if(N(a))ct(a,r,12,[i,p]);else{const R=Y(a),ee=ae(a);if(R||ee){const X=()=>{if(e.f){const I=R?_(a)?h[a]:p[a]:D()||!e.k?a.value:p[e.k];if(s)P(I)&&Fo(I,l);else if(P(I))I.includes(l)||I.push(l);else if(R)p[a]=[l],_(a)&&(h[a]=p[a]);else{const V=[l];D(a,e.k)&&(a.value=V),e.k&&(p[e.k]=V)}}else R?(p[a]=i,_(a)&&(h[a]=i)):ee&&(D(a,e.k)&&(a.value=i),e.k&&(p[e.k]=i))};if(i){const I=()=>{X(),ho.delete(e)};I.id=-1,ho.set(e,I),fe(I,o)}else Ls(e),X()}}}function Ls(e){const t=ho.get(e);t&&(t.flags|=8,ho.delete(e))}Qt().requestIdleCallback,Qt().cancelIdleCallback;const ht=e=>!!e.type.__asyncLoader,cn=e=>e.type.__isKeepAlive;function Hl(e,t){Es(e,"a",t)}function Fl(e,t){Es(e,"da",t)}function Es(e,t,o=ce){const n=e.__wdc||(e.__wdc=()=>{let s=o;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(go(t,n,o),o){let s=o.parent;for(;s&&s.parent;)cn(s.parent.vnode)&&Dl(n,t,o,s),s=s.parent}}function Dl(e,t,o,n){const s=go(t,e,n,!0);Cs(()=>{Fo(n[t],s)},o)}function go(e,t,o=ce,n=!1){if(o){const s=o[e]||(o[e]=[]),l=t.__weh||(t.__weh=(...i)=>{Se();const r=Ut(o),a=$e(t,o,e,i);return r(),_e(),a});return n?s.unshift(l):s.push(l),l}}const Ve=e=>(t,o=ce)=>{(!It||e==="sp")&&go(e,(...n)=>t(...n),o)},jl=Ve("bm"),Ts=Ve("m"),Vl=Ve("bu"),Bl=Ve("u"),zl=Ve("bum"),Cs=Ve("um"),Kl=Ve("sp"),Wl=Ve("rtg"),ql=Ve("rtc");function Yl(e,t=ce){go("ec",e,t)}const Gl="components";function As(e,t){return Jl(Gl,e,!0,t)||e}const Xl=Symbol.for("v-ndc");function Jl(e,t,o=!0,n=!1){const s=ie||ce;if(s){const l=s.type;{const r=ui(l,!1);if(r&&(r===t||r===ne(t)||r===Jt(ne(t))))return l}const i=Os(s[e]||l[e],t)||Os(s.appContext[e],t);return!i&&n?l:i}}function Os(e,t){return e&&(e[t]||e[ne(t)]||e[Jt(ne(t))])}function Be(e,t,o,n){let s;const l=o,i=P(e);if(i||Y(e)){const r=i&&Qe(e);let a=!1,u=!1;r&&(a=!ke(e),u=Ye(e),e=to(e)),s=new Array(e.length);for(let p=0,h=e.length;pt(r,a,void 0,l));else{const r=Object.keys(e);s=new Array(r.length);for(let a=0,u=r.length;a0;return t!=="default"&&(u.name=t),L(),xo(G,null,[ve("slot",u,n)],p?-2:64)}let i=e[t];i&&i._c&&(i._d=!1);const r=ze.length;L();let a;try{const u=i&&Ps(i(o)),p=o.key||l||u&&u.key;a=xo(G,{key:(p&&!xe(p)?p:`_${t}`)+(!u&&n?"_fb":"")},u||(n?n():[]),u&&e._===1?64:-2)}catch(u){for(let p=ze.length;p>r;p--)xn();throw u}finally{i&&i._c&&(i._d=!0)}return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),a}function Ps(e){return e.some(t=>yn(t)?!(t.type===Te||t.type===G&&!Ps(t.children)):!0)?e:null}const dn=e=>e?ci(e)?wo(e):dn(e.parent):null,Ot=Q(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=>dn(e.parent),$root:e=>dn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Us(e),$forceUpdate:e=>e.f||(e.f=()=>{sn(e.update)}),$nextTick:e=>e.n||(e.n=gs.bind(e.proxy)),$watch:e=>Rl.bind(e)}),pn=(e,t)=>e!==z&&!e.__isScriptSetup&&H(e,t),Zl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:n,data:s,props:l,accessCache:i,type:r,appContext:a}=e;if(t[0]!=="$"){const k=i[t];if(k!==void 0)switch(k){case 1:return n[t];case 2:return s[t];case 4:return o[t];case 3:return l[t]}else{if(pn(n,t))return i[t]=1,n[t];if(s!==z&&H(s,t))return i[t]=2,s[t];if(H(l,t))return i[t]=3,l[t];if(o!==z&&H(o,t))return i[t]=4,o[t];un&&(i[t]=0)}}const u=Ot[t];let p,h;if(u)return t==="$attrs"&&re(e.attrs,"get",""),u(e);if((p=r.__cssModules)&&(p=p[t]))return p;if(o!==z&&H(o,t))return i[t]=4,o[t];if(h=a.config.globalProperties,H(h,t))return h[t]},set({_:e},t,o){const{data:n,setupState:s,ctx:l}=e;return pn(s,t)?(s[t]=o,!0):n!==z&&H(n,t)?(n[t]=o,!0):H(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:n,appContext:s,props:l,type:i}},r){let a;return!!(o[r]||e!==z&&r[0]!=="$"&&H(e,r)||pn(t,r)||H(l,r)||H(n,r)||H(Ot,r)||H(s.config.globalProperties,r)||(a=i.__cssModules)&&a[r])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:H(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function Ms(e){return P(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let un=!0;function Ql(e){const t=Us(e),o=e.proxy,n=e.ctx;un=!1,t.beforeCreate&&Ns(t.beforeCreate,e,"bc");const{data:s,computed:l,methods:i,watch:r,provide:a,inject:u,created:p,beforeMount:h,mounted:k,beforeUpdate:_,updated:D,activated:R,deactivated:ee,beforeDestroy:X,beforeUnmount:I,destroyed:V,unmounted:O,render:oe,renderTracked:Oe,renderTriggered:Pe,errorCaptured:Je,serverPrefetch:Mo,expose:nt,inheritAttrs:Vt,components:No,directives:Ro,filters:Mn}=t;if(u&&er(u,n,null),i)for(const Z in i){const q=i[Z];N(q)&&(n[Z]=q.bind(o))}if(s){const Z=s.call(o,o);j(Z)&&(e.data=en(Z))}if(un=!0,l)for(const Z in l){const q=l[Z],st=N(q)?q.bind(o,o):N(q.get)?q.get.bind(o,o):we,Uo=!N(q)&&N(q.set)?q.set.bind(o):we,it=Ir({get:st,set:Uo});Object.defineProperty(n,Z,{enumerable:!0,configurable:!0,get:()=>it.value,set:Me=>it.value=Me})}if(r)for(const Z in r)Rs(r[Z],n,o,Z);if(a){const Z=N(a)?a.call(o):a;Reflect.ownKeys(Z).forEach(q=>{Pl(q,Z[q])})}p&&Ns(p,e,"c");function ue(Z,q){P(q)?q.forEach(st=>Z(st.bind(o))):q&&Z(q.bind(o))}if(ue(jl,h),ue(Ts,k),ue(Vl,_),ue(Bl,D),ue(Hl,R),ue(Fl,ee),ue(Yl,Je),ue(ql,Oe),ue(Wl,Pe),ue(zl,I),ue(Cs,O),ue(Kl,Mo),P(nt))if(nt.length){const Z=e.exposed||(e.exposed={});nt.forEach(q=>{Object.defineProperty(Z,q,{get:()=>o[q],set:st=>o[q]=st,enumerable:!0})})}else e.exposed||(e.exposed={});oe&&e.render===we&&(e.render=oe),Vt!=null&&(e.inheritAttrs=Vt),No&&(e.components=No),Ro&&(e.directives=Ro),Mo&&Ss(e)}function er(e,t,o=we){P(e)&&(e=fn(e));for(const n in e){const s=e[n];let l;j(s)?"default"in s?l=Tt(s.from||n,s.default,!0):l=Tt(s.from||n):l=Tt(s),ae(l)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>l.value,set:i=>l.value=i}):t[n]=l}}function Ns(e,t,o){$e(P(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,o)}function Rs(e,t,o,n){let s=n.includes(".")?$s(o,n):()=>o[n];if(Y(e)){const l=t[e];N(l)&&ln(s,l)}else if(N(e))ln(s,e.bind(o));else if(j(e))if(P(e))e.forEach(l=>Rs(l,t,o,n));else{const l=N(e.handler)?e.handler.bind(o):t[e.handler];N(l)&&ln(s,l,e)}}function Us(e){const t=e.type,{mixins:o,extends:n}=t,{mixins:s,optionsCache:l,config:{optionMergeStrategies:i}}=e.appContext,r=l.get(t);let a;return r?a=r:!s.length&&!o&&!n?a=t:(a={},s.length&&s.forEach(u=>bo(a,u,i,!0)),bo(a,t,i)),j(t)&&l.set(t,a),a}function bo(e,t,o,n=!1){const{mixins:s,extends:l}=t;l&&bo(e,l,o,!0),s&&s.forEach(i=>bo(e,i,o,!0));for(const i in t)if(!(n&&i==="expose")){const r=tr[i]||o&&o[i];e[i]=r?r(e[i],t[i]):t[i]}return e}const tr={data:Is,props:Hs,emits:Hs,methods:Pt,computed:Pt,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Pt,directives:Pt,watch:nr,provide:Is,inject:or};function Is(e,t){return t?e?function(){return Q(N(e)?e.call(this,this):e,N(t)?t.call(this,this):t)}:t:e}function or(e,t){return Pt(fn(e),fn(t))}function fn(e){if(P(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ne(t)}Modifiers`]||e[`${be(t)}Modifiers`];function rr(e,t,...o){if(e.isUnmounted)return;const n=e.vnode.props||z;let s=o;const l=t.startsWith("update:"),i=l&&lr(n,t.slice(7));i&&(i.trim&&(s=o.map(p=>Y(p)?p.trim():p)),i.number&&(s=s.map(Vo)));let r,a=n[r=jo(t)]||n[r=jo(ne(t))];!a&&l&&(a=n[r=jo(be(t))]),a&&$e(a,e,6,s);const u=n[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,$e(u,e,6,s)}}const ar=new WeakMap;function Ds(e,t,o=!1){const n=o?ar:t.emitsCache,s=n.get(e);if(s!==void 0)return s;const l=e.emits;let i={},r=!1;if(!N(e)){const a=u=>{const p=Ds(u,t,!0);p&&(r=!0,Q(i,p))};!o&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!l&&!r?(j(e)&&n.set(e,null),null):(P(l)?l.forEach(a=>i[a]=null):Q(i,l),j(e)&&n.set(e,i),i)}function mo(e,t){return!e||!Wt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),H(e,t[0].toLowerCase()+t.slice(1))||H(e,be(t))||H(e,t))}function op(){}function js(e){const{type:t,vnode:o,proxy:n,withProxy:s,propsOptions:[l],slots:i,attrs:r,emit:a,render:u,renderCache:p,props:h,data:k,setupState:_,ctx:D,inheritAttrs:R}=e,ee=po(e);let X,I;try{if(o.shapeFlag&4){const O=s||n,oe=O;X=Ce(u.call(oe,O,p,h,_,k,D)),I=r}else{const O=t;X=Ce(O.length>1?O(h,{attrs:r,slots:i,emit:a}):O(h,null)),I=t.props?r:cr(r)}}catch(O){ze.length=0,ao(O,e,1),X=ve(Te)}let V=X;if(I&&R!==!1){const O=Object.keys(I),{shapeFlag:oe}=V;O.length&&oe&7&&(l&&O.some(qt)&&(I=dr(I,l)),V=bt(V,I,!1,!0))}if(o.dirs&&(V=bt(V,null,!1,!0),V.dirs=V.dirs?V.dirs.concat(o.dirs):o.dirs),o.transition){const O=uo(V.type)&&ws(V)||V;an(O,o.transition)}return X=V,po(ee),X}const cr=e=>{let t;for(const o in e)(o==="class"||o==="style"||Wt(o))&&((t||(t={}))[o]=e[o]);return t},dr=(e,t)=>{const o={};for(const n in e)(!qt(n)||!(n.slice(9)in t))&&(o[n]=e[n]);return o};function pr(e,t,o){const{props:n,children:s,component:l}=e,{props:i,children:r,patchFlag:a}=t,u=l.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&a>=0){if(a&1024)return!0;if(a&16)return n?Vs(n,i,u):!!i;if(a&8){const p=t.dynamicProps;for(let h=0;hObject.create(zs),Ws=e=>Object.getPrototypeOf(e)===zs;function fr(e,t,o,n=!1){const s={},l=Ks();e.propsDefaults=Object.create(null),qs(e,t,s,l);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);o?e.props=n?s:vl(s):e.type.props?e.props=s:e.props=l,e.attrs=l}function hr(e,t,o,n){const{props:s,attrs:l,vnode:{patchFlag:i}}=e,r=F(s),[a]=e.propsOptions;let u=!1;if((n||i>0)&&!(i&16)){if(i&8){const p=e.vnode.dynamicProps;for(let h=0;h{a=!0;const[k,_]=Ys(h,t,!0);Q(i,k),_&&r.push(..._)};!o&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!l&&!a)return j(e)&&n.set(e,lt),lt;if(P(l))for(let p=0;pe==="_"||e==="_ctx"||e==="$stable",bn=e=>P(e)?e.map(Ce):[Ce(e)],br=(e,t,o)=>{if(t._n)return t;const n=ut((...s)=>bn(t(...s)),o);return n._c=!1,n},Xs=(e,t,o)=>{const n=e._ctx;for(const s in e){if(gn(s))continue;const l=e[s];if(N(l))t[s]=br(s,l,n);else if(l!=null){const i=bn(l);t[s]=()=>i}}},Js=(e,t)=>{const o=bn(t);e.slots.default=()=>o},Zs=(e,t,o)=>{for(const n in t)(o||!gn(n))&&(e[n]=t[n])},mr=(e,t,o)=>{const n=e.slots=Ks();if(e.vnode.shapeFlag&32){const s=t._;s?(Zs(n,t,o),o&&Fn(n,"_",s,!0)):Xs(t,n)}else t&&Js(e,t)},vr=(e,t,o)=>{const{vnode:n,slots:s}=e;let l=!0,i=z;if(n.shapeFlag&32){const r=t._;r?o&&r===1?l=!1:Zs(s,t,o):(l=!t.$stable,Xs(t,s)),i=t}else t&&(Js(e,t),i={default:1});if(l)for(const r in s)!gn(r)&&i[r]==null&&delete s[r]},fe=wr;function xr(e){return yr(e)}function yr(e,t){const o=Qt();o.__VUE__=!0;const{insert:n,remove:s,patchProp:l,createElement:i,createText:r,createComment:a,setText:u,setElementText:p,parentNode:h,nextSibling:k,setScopeId:_=we,insertStaticContent:D}=e,R=(c,d,f,v=null,m=null,g=null,w=void 0,$=null,x=!!d.dynamicChildren)=>{if(c===d)return;c&&!Nt(c,d)&&(v=Io(c),Me(c,m,g,!0),c=null),d.patchFlag===-2&&(x=!1,d.dynamicChildren=null);const{type:b,ref:A,shapeFlag:S}=d;switch(b){case vo:ee(c,d,f,v);break;case Te:X(c,d,f,v);break;case vn:c==null&&I(d,f,v,w);break;case G:No(c,d,f,v,m,g,w,$,x);break;default:S&1?oe(c,d,f,v,m,g,w,$,x):S&6?Ro(c,d,f,v,m,g,w,$,x):(S&64||S&128)&&b.process(c,d,f,v,m,g,w,$,x,zt)}A!=null&&m?Ct(A,c&&c.ref,g,d||c,!d):A==null&&c&&c.ref!=null&&Ct(c.ref,null,g,c,!0)},ee=(c,d,f,v)=>{if(c==null)n(d.el=r(d.children),f,v);else{const m=d.el=c.el;d.children!==c.children&&u(m,d.children)}},X=(c,d,f,v)=>{c==null?n(d.el=a(d.children||""),f,v):d.el=c.el},I=(c,d,f,v)=>{[c.el,c.anchor]=D(c.children,d,f,v,c.el,c.anchor)},V=({el:c,anchor:d},f,v)=>{let m;for(;c&&c!==d;)m=k(c),n(c,f,v),c=m;n(d,f,v)},O=({el:c,anchor:d})=>{let f;for(;c&&c!==d;)f=k(c),s(c),c=f;s(d)},oe=(c,d,f,v,m,g,w,$,x)=>{if(d.type==="svg"?w="svg":d.type==="math"&&(w="mathml"),c==null)Oe(d,f,v,m,g,w,$,x);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Mo(c,d,m,g,w,$,x)}finally{b&&b._endPatch()}}},Oe=(c,d,f,v,m,g,w,$)=>{let x,b;const{props:A,shapeFlag:S,transition:C,dirs:M}=c;if(x=c.el=i(c.type,g,A&&A.is,A),S&8?p(x,c.children):S&16&&Je(c.children,x,null,v,m,mn(c,g),w,$),M&&tt(c,null,v,"created"),Pe(x,c,c.scopeId,w,v),A){for(const K in A)K!=="value"&&!xt(K)&&l(x,K,null,A[K],g,v);"value"in A&&l(x,"value",null,A.value,g),(b=A.onVnodeBeforeMount)&&Ae(b,v,c)}M&&tt(c,null,v,"beforeMount");const U=kr(m,C);U&&C.beforeEnter(x),n(x,d,f),((b=A&&A.onVnodeMounted)||U||M)&&fe(()=>{try{b&&Ae(b,v,c),U&&C.enter(x),M&&tt(c,null,v,"mounted")}finally{}},m)},Pe=(c,d,f,v,m)=>{if(f&&_(c,f),v)for(let g=0;g{for(let b=x;b{const $=d.el=c.el;let{patchFlag:x,dynamicChildren:b,dirs:A}=d;x|=c.patchFlag&16;const S=c.props||z,C=d.props||z;let M;if(f&&ot(f,!1),(M=C.onVnodeBeforeUpdate)&&Ae(M,f,d,c),A&&tt(d,c,f,"beforeUpdate"),f&&ot(f,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&(x=0,w=!1,b=null),(S.innerHTML&&C.innerHTML==null||S.textContent&&C.textContent==null)&&p($,""),b?nt(c.dynamicChildren,b,$,f,v,mn(d,m),g):w||q(c,d,$,null,f,v,mn(d,m),g,!1),x>0){if(x&16)Vt($,S,C,f,m);else if(x&2&&S.class!==C.class&&l($,"class",null,C.class,m),x&4&&l($,"style",S.style,C.style,m),x&8){const U=d.dynamicProps;for(let K=0;K{M&&Ae(M,f,d,c),A&&tt(d,c,f,"updated")},v)},nt=(c,d,f,v,m,g,w)=>{for(let $=0;${if(d!==f){if(d!==z)for(const g in d)!xt(g)&&!(g in f)&&l(c,g,d[g],null,m,v);for(const g in f){if(xt(g))continue;const w=f[g],$=d[g];w!==$&&g!=="value"&&l(c,g,$,w,m,v)}"value"in f&&l(c,"value",d.value,f.value,m)}},No=(c,d,f,v,m,g,w,$,x)=>{const b=d.el=c?c.el:r(""),A=d.anchor=c?c.anchor:r("");let{patchFlag:S,dynamicChildren:C,slotScopeIds:M}=d;M&&($=$?$.concat(M):M),c==null?(n(b,f,v),n(A,f,v),Je(d.children||[],f,A,m,g,w,$,x)):S>0&&S&64&&C&&c.dynamicChildren&&c.dynamicChildren.length===C.length?(nt(c.dynamicChildren,C,f,m,g,w,$),(d.key!=null||m&&d===m.subTree)&&Qs(c,d,!0)):q(c,d,f,A,m,g,w,$,x)},Ro=(c,d,f,v,m,g,w,$,x)=>{d.slotScopeIds=$,c==null?d.shapeFlag&512?m.ctx.activate(d,f,v,w,x):Mn(d,f,v,m,g,w,x):Ii(c,d,x)},Mn=(c,d,f,v,m,g,w)=>{const $=c.component=Cr(c,v,m);if(cn(c)&&($.ctx.renderer=zt),Ar($,!1,w),$.asyncDep){if(m&&m.registerDep($,ue,w),!c.el){const x=$.subTree=ve(Te);X(null,x,d,f),c.placeholder=x.el}}else ue($,c,d,f,m,g,w)},Ii=(c,d,f)=>{const v=d.component=c.component;if(pr(c,d,f))if(v.asyncDep&&!v.asyncResolved){Z(v,d,f);return}else v.next=d,v.update();else d.el=c.el,v.vnode=d},ue=(c,d,f,v,m,g,w)=>{const $=()=>{if(c.isMounted){let{next:S,bu:C,u:M,parent:U,vnode:K}=c;{const Re=ei(c);if(Re){S&&(S.el=K.el,Z(c,S,w)),Re.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},m)});return}}let B=S,te;ot(c,!1),S?(S.el=K.el,Z(c,S,w)):S=K,C&&Zt(C),(te=S.props&&S.props.onVnodeBeforeUpdate)&&Ae(te,U,S,K),ot(c,!0);const le=js(c),Ne=c.subTree;c.subTree=le,R(Ne,le,h(Ne.el),Io(Ne),c,m,g),S.el=le.el,B===null&&ur(c,le.el),M&&fe(M,m),(te=S.props&&S.props.onVnodeUpdated)&&fe(()=>Ae(te,U,S,K),m)}else{let S;const{el:C,props:M}=d,{bm:U,m:K,parent:B,root:te,type:le}=c,Ne=ht(d);ot(c,!1),U&&Zt(U),!Ne&&(S=M&&M.onVnodeBeforeMount)&&Ae(S,B,d),ot(c,!0);{te.ce&&te.ce._hasShadowRoot()&&te.ce._injectChildStyle(le,c.parent?c.parent.type:void 0);const Re=c.subTree=js(c);R(null,Re,f,v,c,m,g),d.el=Re.el}if(K&&fe(K,m),!Ne&&(S=M&&M.onVnodeMounted)){const Re=d;fe(()=>Ae(S,B,Re),m)}(d.shapeFlag&256||B&&ht(B.vnode)&&B.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,d=f=v=null}};c.scope.on();const x=c.effect=new Wn($);c.scope.off();const b=c.update=x.run.bind(x),A=c.job=x.runIfDirty.bind(x);A.i=c,A.id=c.uid,x.scheduler=()=>sn(A),ot(c,!0),b()},Z=(c,d,f)=>{d.component=c;const v=c.vnode.props;c.vnode=d,c.next=null,hr(c,d.props,v,f),vr(c,d.children,f),Se(),ms(c),_e()},q=(c,d,f,v,m,g,w,$,x=!1)=>{const b=c&&c.children,A=c?c.shapeFlag:0,S=d.children,{patchFlag:C,shapeFlag:M}=d;if(C>0){if(C&128){Uo(b,S,f,v,m,g,w,$,x);return}else if(C&256){st(b,S,f,v,m,g,w,$,x);return}}M&8?(A&16&&Bt(b,m,g),S!==b&&p(f,S)):A&16?M&16?Uo(b,S,f,v,m,g,w,$,x):Bt(b,m,g,!0):(A&8&&p(f,""),M&16&&Je(S,f,v,m,g,w,$,x))},st=(c,d,f,v,m,g,w,$,x)=>{c=c||lt,d=d||lt;const b=c.length,A=d.length,S=Math.min(b,A);let C;for(C=0;CA?Bt(c,m,g,!0,!1,S):Je(d,f,v,m,g,w,$,x,S)},Uo=(c,d,f,v,m,g,w,$,x)=>{let b=0;const A=d.length;let S=c.length-1,C=A-1;for(;b<=S&&b<=C;){const M=c[b],U=d[b]=x?Ke(d[b]):Ce(d[b]);if(Nt(M,U))R(M,U,f,null,m,g,w,$,x);else break;b++}for(;b<=S&&b<=C;){const M=c[S],U=d[C]=x?Ke(d[C]):Ce(d[C]);if(Nt(M,U))R(M,U,f,null,m,g,w,$,x);else break;S--,C--}if(b>S){if(b<=C){const M=C+1,U=MC)for(;b<=S;)Me(c[b],m,g,!0),b++;else{const M=b,U=b,K=new Map;for(b=U;b<=C;b++){const ge=d[b]=x?Ke(d[b]):Ce(d[b]);ge.key!=null&&K.set(ge.key,b)}let B,te=0;const le=C-U+1;let Ne=!1,Re=0;const Kt=new Array(le);for(b=0;b=le){Me(ge,m,g,!0);continue}let Ue;if(ge.key!=null)Ue=K.get(ge.key);else for(B=U;B<=C;B++)if(Kt[B-U]===0&&Nt(ge,d[B])){Ue=B;break}Ue===void 0?Me(ge,m,g,!0):(Kt[Ue-U]=b+1,Ue>=Re?Re=Ue:Ne=!0,R(ge,d[Ue],f,null,m,g,w,$,x),te++)}const Di=Ne?$r(Kt):lt;for(B=Di.length-1,b=le-1;b>=0;b--){const ge=U+b,Ue=d[ge],ji=d[ge+1],Vi=ge+1{const{el:g,type:w,transition:$,children:x,shapeFlag:b}=c;if(b&6){it(c.component.subTree,d,f,v);return}if(b&128){c.suspense.move(d,f,v);return}if(b&64){w.move(c,d,f,zt);return}if(w===G){n(g,d,f);for(let S=0;S$.enter(g),m));else{const{leave:S,delayLeave:C,afterLeave:M}=$,U=()=>{c.ctx.isUnmounted?s(g):n(g,d,f)},K=()=>{const B=g._isLeaving||!!g[rn];g._isLeaving&&g[rn](!0),$.persisted&&!B?U():S(g,()=>{U(),M&&M()})};C?C(g,U,K):K()}else n(g,d,f)},Me=(c,d,f,v=!1,m=!1)=>{const{type:g,props:w,ref:$,children:x,dynamicChildren:b,shapeFlag:A,patchFlag:S,dirs:C,cacheIndex:M,memo:U}=c;if(S===-2&&(m=!1),$!=null&&(Se(),Ct($,null,f,c,!0),_e()),M!=null&&(d.renderCache[M]=void 0),A&256){d.ctx.deactivate(c);return}const K=A&1&&C,B=!ht(c);let te;if(B&&(te=w&&w.onVnodeBeforeUnmount)&&Ae(te,d,c),A&6)Zd(c.component,f,v);else{if(A&128){c.suspense.unmount(f,v);return}K&&tt(c,null,d,"beforeUnmount"),A&64?c.type.remove(c,d,f,zt,v):b&&!b.hasOnce&&(g!==G||S>0&&S&64)?Bt(b,d,f,!1,!0):(g===G&&S&384||!m&&A&16)&&Bt(x,d,f),v&&Hi(c)}const le=U!=null&&M==null;(B&&(te=w&&w.onVnodeUnmounted)||K||le)&&fe(()=>{te&&Ae(te,d,c),K&&tt(c,null,d,"unmounted"),le&&(c.el=null)},f)},Hi=c=>{const{type:d,el:f,anchor:v,transition:m}=c;if(d===G){Jd(f,v);return}if(d===vn){O(c);return}const g=()=>{s(f),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:w,delayLeave:$}=m,x=()=>w(f,g);$?$(c.el,g,x):x()}else g()},Jd=(c,d)=>{let f;for(;c!==d;)f=k(c),s(c),c=f;s(d)},Zd=(c,d,f)=>{const{bum:v,scope:m,job:g,subTree:w,um:$,m:x,a:b}=c;ti(x),ti(b),v&&Zt(v),m.stop(),g&&(g.flags|=8,Me(w,c,d,f)),$&&fe($,d),fe(()=>{c.isUnmounted=!0},d)},Bt=(c,d,f,v=!1,m=!1,g=0)=>{for(let w=g;w{if(c.shapeFlag&6)return Io(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const d=k(c.anchor||c.el),f=d&&d[Ul];return f?k(f):d};let Nn=!1;const Fi=(c,d,f)=>{let v;c==null?d._vnode&&(Me(d._vnode,null,null,!0),v=d._vnode.component):R(d._vnode||null,c,d,null,null,null,f),d._vnode=c,Nn||(Nn=!0,ms(v),vs(),Nn=!1)},zt={p:R,um:Me,m:it,r:Hi,mt:Mn,mc:Je,pc:q,pbc:nt,n:Io,o:e};return{render:Fi,hydrate:void 0,createApp:ir(Fi)}}function mn({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function ot({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function kr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Qs(e,t,o=!1){const n=e.children,s=t.children;if(P(n)&&P(s))for(let l=0;l>1,e[o[r]]0&&(t[n]=o[l-1]),o[l]=n)}}for(l=o.length,i=o[l-1];l-- >0;)o[l]=i,i=t[i];return o}function ei(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ei(t)}function ti(e){if(e)for(let t=0;te.__isSuspense;function wr(e,t){t&&t.pendingBranch?P(e)?t.effects.push(...e):t.effects.push(e):Ol(e)}const G=Symbol.for("v-fgt"),vo=Symbol.for("v-txt"),Te=Symbol.for("v-cmt"),vn=Symbol.for("v-stc"),ze=[];let he=null;function L(e=!1){ze.push(he=e?null:[])}function xn(){ze.pop(),he=ze[ze.length-1]||null}let Mt=1;function si(e,t=!1){Mt+=e,e<0&&he&&t&&(he.hasOnce=!0)}function ii(e){return e.dynamicChildren=Mt>0?he||lt:null,xn(),Mt>0&&he&&he.push(e),e}function E(e,t,o,n,s,l){return ii(y(e,t,o,n,s,l,!0))}function xo(e,t,o,n,s){return ii(ve(e,t,o,n,s,!0))}function yn(e){return e?e.__v_isVNode===!0:!1}function Nt(e,t){return e.type===t.type&&e.key===t.key}const li=({key:e})=>e??null,yo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?Y(e)||ae(e)||N(e)?{i:ie,r:e,k:t,f:!!o}:e:null);function y(e,t=null,o=null,n=0,s=null,l=e===G?0:1,i=!1,r=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&li(t),ref:t&&yo(t),scopeId:ys,slotScopeIds:null,children:o,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:l,patchFlag:n,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ie};return r?(ko(a,o),l&128&&e.normalize(a)):o&&(a.shapeFlag|=Y(o)?8:16),Mt>0&&!i&&he&&(a.patchFlag>0||l&6)&&a.patchFlag!==32&&he.push(a),a}const ve=Sr;function Sr(e,t=null,o=null,n=0,s=null,l=!1){if((!e||e===Xl)&&(e=Te),yn(e)){const r=bt(e,t,!0);return o&&ko(r,o),Mt>0&&!l&&he&&(r.shapeFlag&6?he[he.indexOf(e)]=r:he.push(r)),r.patchFlag=-2,r}if(Ur(e)&&(e=e.__vccOpts),t){t=_r(t);let{class:r,style:a}=t;r&&!Y(r)&&(t.class=me(r)),j(a)&&(on(a)&&!P(a)&&(a=Q({},a)),t.style=yt(a))}const i=Y(e)?1:ni(e)?128:uo(e)?64:j(e)?4:N(e)?2:0;return y(e,t,o,n,s,i,l,!0)}function _r(e){return e?on(e)||Ws(e)?Q({},e):e:null}function bt(e,t,o=!1,n=!1){const{props:s,ref:l,patchFlag:i,children:r,transition:a}=e,u=t?Lr(s||{},t):s,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&li(u),ref:t&&t.ref?o&&l?P(l)?l.concat(yo(t)):[l,yo(t)]:yo(t):l,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==G?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&bt(e.ssContent),ssFallback:e.ssFallback&&bt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&n&&an(p,a.clone(p)),p}function Xe(e=" ",t=0){return ve(vo,null,e,t)}function J(e="",t=!1){return t?(L(),xo(Te,null,e)):ve(Te,null,e)}function Ce(e){return e==null||typeof e=="boolean"?ve(Te):P(e)?ve(G,null,e.slice()):yn(e)?Ke(e):ve(vo,null,String(e))}function Ke(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bt(e)}function ko(e,t){let o=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(P(t))o=16;else if(typeof t=="object")if(n&65){const s=t.default;s&&(s._c&&(s._d=!1),ko(e,s()),s._c&&(s._d=!0));return}else{o=32;const s=t._;!s&&!Ws(t)?t._ctx=ie:s===3&&ie&&(ie.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(N(t)){if(n&65){ko(e,{default:t});return}t={default:t,_ctx:ie},o=32}else t=String(t),n&64?(o=16,t=[Xe(t)]):o=8;e.children=t,e.shapeFlag|=o}function Lr(...e){const t={};for(let o=0;oce||ie;let $o,Rt;{const e=Qt(),t=(o,n)=>{let s;return(s=e[o])||(s=e[o]=[]),s.push(n),l=>{s.length>1?s.forEach(i=>i(l)):s[0](l)}};$o=t("__VUE_INSTANCE_SETTERS__",o=>ce=o),Rt=t("__VUE_SSR_SETTERS__",o=>It=o)}const Ut=e=>{const t=ce;return $o(e),e.scope.on(),()=>{e.scope.off(),$o(t)}},ai=()=>{ce&&ce.scope.off(),$o(null)};function ci(e){return e.vnode.shapeFlag&4}let It=!1;function Ar(e,t=!1,o=!1){t&&Rt(t);const{props:n,children:s}=e.vnode,l=ci(e);fr(e,n,l,t),mr(e,s,o||t);const i=l?Or(e,t):void 0;return t&&Rt(!1),i}function Or(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Zl);const{setup:n}=o;if(n){Se();const s=e.setupContext=n.length>1?Mr(e):null,l=Ut(e),i=ct(n,e,0,[e.props,s]),r=In(i);if(_e(),l(),(r||e.sp)&&!ht(e)&&Ss(e),r){if(i.then(ai,ai),t)return i.then(a=>{Rt(!0);try{di(e,a,t)}finally{Rt(!1)}}).catch(a=>{ao(a,e,0)});e.asyncDep=i}else di(e,i)}else pi(e)}function di(e,t,o){N(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j(t)&&(e.setupState=us(t)),pi(e)}function pi(e,t,o){const n=e.type;e.render||(e.render=n.render||we);{const s=Ut(e);Se();try{Ql(e)}finally{_e(),s()}}}const Pr={get(e,t){return re(e,"get",""),e[t]}};function Mr(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Pr),slots:e.slots,emit:e.emit,expose:t}}function wo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(us(xl(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Ot)return Ot[o](e)},has(t,o){return o in t||o in Ot}})):e.proxy}const Nr=/(?:^|[-_])\w/g,Rr=e=>e.replace(Nr,t=>t.toUpperCase()).replace(/[-_]/g,"");function ui(e,t=!0){return N(e)?e.displayName||e.name:e.name||t&&e.__name}function fi(e,t,o=!1){let n=ui(t);if(!n&&t.__file){const s=t.__file.match(/([^/\\]+)\.\w+$/);s&&(n=s[1])}if(!n&&e){const s=l=>{for(const i in l)if(l[i]===t)return i};n=s(e.components)||e.parent&&s(e.parent.type.components)||s(e.appContext.components)}return n?Rr(n):o?"App":"Anonymous"}function Ur(e){return N(e)&&"__vccOpts"in e}const Ir=(e,t)=>$l(e,t,It),Hr="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/let kn;const hi=typeof window<"u"&&window.trustedTypes;if(hi)try{kn=hi.createPolicy("vue",{createHTML:e=>e})}catch{}const gi=kn?e=>kn.createHTML(e):e=>e,Fr="http://www.w3.org/2000/svg",Dr="http://www.w3.org/1998/Math/MathML",We=typeof document<"u"?document:null,bi=We&&We.createElement("template"),jr={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,n)=>{const s=t==="svg"?We.createElementNS(Fr,e):t==="mathml"?We.createElementNS(Dr,e):o?We.createElement(e,{is:o}):We.createElement(e);return e==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:e=>We.createTextNode(e),createComment:e=>We.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>We.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,n,s,l){const i=o?o.previousSibling:t.lastChild;if(s&&(s===l||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),o),!(s===l||!(s=s.nextSibling)););else{bi.innerHTML=gi(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const r=bi.content;if(n==="svg"||n==="mathml"){const a=r.firstChild;for(;a.firstChild;)r.appendChild(a.firstChild);r.removeChild(a)}t.insertBefore(r,o)}return[i?i.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},Vr=Symbol("_vtc");function Br(e,t,o){const n=e[Vr];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const So=Symbol("_vod"),mi=Symbol("_vsh"),$n={name:"show",beforeMount(e,{value:t},{transition:o}){e[So]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Ht(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:n}){!t!=!o&&(n?t?(n.beforeEnter(e),Ht(e,!0),n.enter(e)):n.leave(e,()=>{Ht(e,!1)}):Ht(e,t))},beforeUnmount(e,{value:t}){Ht(e,t)}};function Ht(e,t){e.style.display=t?e[So]:"none",e[mi]=!t}const zr=Symbol(""),Kr=/(?:^|;)\s*display\s*:/;function Wr(e,t,o){const n=e.style,s=Y(o);let l=!1;if(o&&!s){if(t)if(Y(t))for(const i of t.split(";")){const r=i.slice(0,i.indexOf(":")).trim();o[r]==null&&Ft(n,r,"")}else for(const i in t)o[i]==null&&Ft(n,i,"");for(const i in o){i==="display"&&(l=!0);const r=o[i];r!=null?Yr(e,i,!Y(t)&&t?t[i]:void 0,r)||Ft(n,i,r):Ft(n,i,"")}}else if(s){if(t!==o){const i=n[zr];i&&(o+=";"+i),n.cssText=o,l=Kr.test(o)}}else t&&e.removeAttribute("style");So in e&&(e[So]=l?n.display:"",e[mi]&&(n.display="none"))}const _o=/\s*!important$/;function Ft(e,t,o){if(P(o))o.forEach(n=>Ft(e,t,n));else if(o==null&&(o=""),t.startsWith("--"))_o.test(o)?e.setProperty(t,o.replace(_o,""),"important"):e.setProperty(t,o);else{const n=qr(e,t);_o.test(o)?e.setProperty(be(n),o.replace(_o,""),"important"):e[n]=o}}const vi=["Webkit","Moz","ms"],wn={};function qr(e,t){const o=wn[t];if(o)return o;let n=ne(t);if(n!=="filter"&&n in e)return wn[t]=n;n=Jt(n);for(let s=0;sSn||(ea.then(()=>Sn=0),Sn=Date.now());function oa(e,t){const o=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=o.attached)return;const s=o.value;if(P(s)){const l=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{l.call(n),n._stopped=!0};const i=s.slice(),r=[n];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,na=(e,t,o,n,s,l)=>{const i=s==="svg";t==="class"?Br(e,n,i):t==="style"?Wr(e,o,n):Wt(t)?qt(t)||Xr(e,t,o,n,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):sa(e,t,n,i))?(ki(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&yi(e,t,n,i,l,t!=="value")):e._isVueCE&&(ia(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Y(n)))?ki(e,ne(t),n,l,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),yi(e,t,n,i))};function sa(e,t,o,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&wi(t)&&N(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return wi(t)&&Y(o)?!1:t in e}function ia(e,t){const o=e._def.props;if(!o)return!1;const n=ne(t);return Array.isArray(o)?o.some(s=>ne(s)===n):Object.keys(o).some(s=>ne(s)===n)}const Si={};function la(e,t,o){let n=fo(e,t);Gt(n)&&(n=Q({},n,t));class s extends _n{constructor(i){super(n,i,o)}}return s.def=n,s}const ra=typeof HTMLElement<"u"?HTMLElement:class{};class _n extends ra{constructor(t,o={},n=Ai){super(),this._def=t,this._props=o,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&n!==Ai?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(Q({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof _n){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,gs(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let n=0;n{this._resolved=!0,this._pendingResolve=void 0;const{props:l,styles:i}=n;let r;if(l&&!P(l))for(const a in l){const u=l[a];(u===Number||u&&u.type===Number)&&(a in this._props&&(this._props[a]=Dn(this._props[a])),(r||(r=Object.create(null)))[ne(a)]=!0)}this._numberProps=r,this._resolveProps(n),this.shadowRoot&&this._applyStyles(i),this._mount(n)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(n=>{n.configureApp=this._def.configureApp,t(this._def=n,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const o=this._instance&&this._instance.exposed;if(o)for(const n in o)H(this,n)||Object.defineProperty(this,n,{get:()=>ps(o[n])})}_resolveProps(t){const{props:o}=t,n=P(o)?o:Object.keys(o||{});for(const s of Object.keys(this))s[0]!=="_"&&n.includes(s)&&this._setProp(s,this[s]);for(const s of n.map(ne))Object.defineProperty(this,s,{get(){return this._getProp(s)},set(l){this._setProp(s,l,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let n=o?this.getAttribute(t):Si;const s=ne(t);o&&this._numberProps&&this._numberProps[s]&&(n=Dn(n)),this._setProp(s,n,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,n=!0,s=!1){if(o!==this._props[t]&&(this._dirty=!0,o===Si?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),s&&this._instance&&this._update(),n)){const l=this._ob;l&&(this._processMutations(l.takeRecords()),l.disconnect()),o===!0?this.setAttribute(be(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(be(t),o+""):o||this.removeAttribute(be(t)),l&&l.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),ua(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=ve(this._def,Q(t,this._props));return this._instance||(o.ce=n=>{this._instance=n,n.ce=this,n.isCE=!0;const s=(l,i)=>{this.dispatchEvent(new CustomEvent(l,Gt(i[0])?Q({detail:i},i[0]):{detail:i}))};n.emit=(l,...i)=>{s(l,i),be(l)!==l&&s(be(l),i)},this._setParent()}),o}_applyStyles(t,o,n){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const s=this._nonce,l=this.shadowRoot,i=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(l);let r=null;for(let a=t.length-1;a>=0;a--){const u=document.createElement("style");s&&u.setAttribute("nonce",s),u.textContent=t[a],l.insertBefore(u,r||i),r=u,a===0&&(n||this._styleAnchors.set(this._def,u),o&&this._styleAnchors.set(o,u))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{const t=e.props["onUpdate:modelValue"]||!1;return P(t)?o=>Zt(t,o):t};function aa(e){e.target.composing=!0}function Li(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Lo=Symbol("_assign"),Eo=Symbol("_initialValue");function Ln(e,t,o){return t&&(e=e.trim()),o&&(e=Vo(e)),e}const En={created(e,{modifiers:{lazy:t,trim:o,number:n}},s){e.parentNode&&(e.type==="text"?e[Eo]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Eo]=e.defaultValue.replace(/\r\n?/g,` `))),e[Lo]=_i(s);const l=n||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{i.target.composing||e[Lo](Ln(e.value,o,l))}),(o||l)&&mt(e,"change",()=>{e.value=Ln(e.value,o,l)}),t||(mt(e,"compositionstart",aa),mt(e,"compositionend",Li),mt(e,"change",Li))},mounted(e,{value:t,modifiers:{trim:o,number:n}}){const s=t??"",l=e[Eo];delete e[Eo],l!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==l?e[Lo](Ln(e.value,o,n)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:n,trim:s,number:l}},i){if(e[Lo]=_i(i),e.composing)return;const r=(l||e.type==="number")&&!/^0\d/.test(e.value)?Vo(e.value):e.value,a=t??"";if(r===a)return;const u=e.getRootNode();(u instanceof Document||u instanceof ShadowRoot)&&u.activeElement===e&&e.type!=="range"&&(n&&t===o||s&&e.value.trim()===a)||(e.value=a)}},ca=["ctrl","shift","alt","meta"],da={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)=>ca.some(o=>e[`${o}Key`]&&!t.includes(o))},Ei=(e,t)=>{if(!e)return e;const o=e._withMods||(e._withMods={}),n=t.join(".");return o[n]||(o[n]=(s,...l)=>{for(let i=0;i{Ci().render(...e)},Ai=(...e)=>{const t=Ci().createApp(...e),{mount:o}=t;return t.mount=n=>{const s=ha(n);if(!s)return;const l=t._component;!N(l)&&!l.render&&!l.template&&(l.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=o(s,!1,fa(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function fa(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ha(e){return Y(e)?document.querySelector(e):e}const ga={title:"استوديو الإضافات",navLabel:"الإضافات حسب القدرة",countLabel:"{bundles} حزمة · {elements} إضافة مدرجة هنا",changeLanguage:"تغيير اللغة",copyEmbed:"نسخ رمز التضمين",copy:"نسخ",copied:"تم النسخ",scriptEmbed:"تضمين عبر سكربت",loading:"جارٍ تحميل {name}…",couldNotLoad:"تعذّر تحميل {name}.",chooseElement:"اختر إضافة من القائمة.",filterPlaceholder:"تصفية الإضافات",collapseAll:"طي الكل",noMatch:"لا توجد إضافة تطابق «{query}».",openSection:"فتح {cap}، {label}",part:"جزء",noStandalone:"بلا صفحة مستقلة",cap5:"هيكل التطبيق",cap4:"مركّب",cap3:"متعدد العروض",cap2:"إعداد مسبق",cap1:"مفرد",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي",partOf:"جزء من {name}، غير منشور بمفرده",mapToken:"رمز الخريطة",tokenPaste:"رمز Mapbox العام (pk.…)",tokenUrlLabel:"…أو رابط خدمة الرموز",tokenApply:"استخدام",tokenClear:"مسح",tokenStoredHere:"يُحفظ في هذا المتصفح فقط.",tokenSourceYours:"يُستخدم رمزك",tokenSourceUrl:"يُستخدم رمز من {url}",tokenSourceBuilt:"يُستخدم الرمز المضمَّن في هذه الصفحة",tokenSourceNone:"لا يوجد رمز Mapbox: لا يمكن تحميل خرائط Mapbox (خرائط MapLibre لا تحتاج رمزًا)",tokenSecret:"هذا رمز سري (sk.…). الصق رمزًا عامًا (pk.…): هذه الصفحة عامة.",tokenNotPk:"يبدأ رمز Mapbox العام بـ pk.",tokenUrlFailed:"تعذّر الحصول على رمز من هذا الرابط: {why}"},ba={title:"Plugin-Studio",navLabel:"Plugins nach Fähigkeit",countLabel:"{bundles} Bundles · {elements} Plugins hier aufgeführt",changeLanguage:"Sprache ändern",copyEmbed:"Einbettung kopieren",copy:"Kopieren",copied:"Kopiert",scriptEmbed:"Skript-Einbettung",loading:"{name} wird geladen…",couldNotLoad:"{name} konnte nicht geladen werden.",chooseElement:"Wählen Sie ein Plugin aus der Liste.",filterPlaceholder:"Plugins filtern",collapseAll:"Alle einklappen",noMatch:"Kein Plugin entspricht „{query}“.",openSection:"{cap} öffnen, {label}",part:"Teil",noStandalone:"keine eigene Seite",cap5:"App-Shell",cap4:"Komposit",cap3:"Mehrfachansicht",cap2:"Voreinstellung",cap1:"Einzeln",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen",partOf:"Teil von {name}, nicht eigenständig veröffentlicht",mapToken:"Karten-Token",tokenPaste:"Öffentlicher Mapbox-Token (pk.…)",tokenUrlLabel:"…oder die URL eines Token-Dienstes",tokenApply:"Verwenden",tokenClear:"Löschen",tokenStoredHere:"Nur in diesem Browser gespeichert.",tokenSourceYours:"Ihr Token wird verwendet",tokenSourceUrl:"Token von {url} wird verwendet",tokenSourceBuilt:"Der in diese Seite eingebaute Token wird verwendet",tokenSourceNone:"Kein Mapbox-Token: Mapbox-Karten können nicht laden (MapLibre-Karten brauchen keinen)",tokenSecret:"Das ist ein geheimer Token (sk.…). Fügen Sie einen öffentlichen ein (pk.…): Diese Seite ist öffentlich.",tokenNotPk:"Ein öffentlicher Mapbox-Token beginnt mit pk.",tokenUrlFailed:"Von dieser URL kam kein Token: {why}"},ma={title:"Plugin Studio",navLabel:"Plugins by capability",countLabel:"{bundles} bundles · {elements} plugins listed here",changeLanguage:"Change language",copyEmbed:"Copy embed",copy:"Copy",copied:"Copied",scriptEmbed:"Script embed",loading:"Loading {name}…",couldNotLoad:"Could not load {name}.",chooseElement:"Choose a plugin from the list.",filterPlaceholder:"Filter plugins",collapseAll:"Collapse all",noMatch:"No plugin matches “{query}”.",openSection:"Open {cap}, {label}",part:"part",noStandalone:"no standalone page",cap5:"App shell",cap4:"Composite",cap3:"Multi-view",cap2:"Preset",cap1:"Single",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse",partOf:"part of {name}, not published on its own",mapToken:"Map token",tokenPaste:"Mapbox public token (pk.…)",tokenUrlLabel:"…or the URL of a token service",tokenApply:"Use",tokenClear:"Clear",tokenStoredHere:"Kept in this browser only.",tokenSourceYours:"Using your token",tokenSourceUrl:"Using a token from {url}",tokenSourceBuilt:"Using the token built into this page",tokenSourceNone:"No Mapbox token: Mapbox maps cannot load (MapLibre maps need none)",tokenSecret:"That is a secret token (sk.…). Paste a public one (pk.…): this page is public.",tokenNotPk:"A Mapbox public token starts with pk.",tokenUrlFailed:"Could not get a token from that URL: {why}"},va={title:"Estudio de plugins",navLabel:"Plugins por capacidad",countLabel:"{bundles} paquetes · {elements} plugins listados aquí",changeLanguage:"Cambiar idioma",copyEmbed:"Copiar código de inserción",copy:"Copiar",copied:"Copiado",scriptEmbed:"Inserción por script",loading:"Cargando {name}…",couldNotLoad:"No se pudo cargar {name}.",chooseElement:"Elija un plugin de la lista.",filterPlaceholder:"Filtrar plugins",collapseAll:"Contraer todo",noMatch:"Ningún plugin coincide con «{query}».",openSection:"Abrir {cap}, {label}",part:"parte",noStandalone:"sin página propia",cap5:"Contenedor de aplicación",cap4:"Compuesto",cap3:"Multivista",cap2:"Preajuste",cap1:"Individual",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer",partOf:"parte de {name}, no publicada por separado",mapToken:"Token del mapa",tokenPaste:"Token público de Mapbox (pk.…)",tokenUrlLabel:"…o la URL de un servicio de tokens",tokenApply:"Usar",tokenClear:"Borrar",tokenStoredHere:"Se guarda solo en este navegador.",tokenSourceYours:"Usando tu token",tokenSourceUrl:"Usando un token de {url}",tokenSourceBuilt:"Usando el token integrado en esta página",tokenSourceNone:"Sin token de Mapbox: los mapas de Mapbox no cargan (los de MapLibre no lo necesitan)",tokenSecret:"Ese es un token secreto (sk.…). Pega uno público (pk.…): esta página es pública.",tokenNotPk:"Un token público de Mapbox empieza por pk.",tokenUrlFailed:"No se pudo obtener un token de esa URL: {why}"},xa={title:"Studio de plugins",navLabel:"Plugins par capacité",countLabel:"{bundles} paquets · {elements} plugins listés ici",changeLanguage:"Changer de langue",copyEmbed:"Copier le code d’intégration",copy:"Copier",copied:"Copié",scriptEmbed:"Intégration par script",loading:"Chargement de {name}…",couldNotLoad:"Impossible de charger {name}.",chooseElement:"Choisissez un plugin dans la liste.",filterPlaceholder:"Filtrer les plugins",collapseAll:"Tout replier",noMatch:"Aucun plugin ne correspond à « {query} ».",openSection:"Ouvrir {cap}, {label}",part:"partie",noStandalone:"pas de page autonome",cap5:"Coquille d’application",cap4:"Composite",cap3:"Multivue",cap2:"Préréglage",cap1:"Simple",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier",partOf:"partie de {name}, non publiée seule",mapToken:"Jeton de carte",tokenPaste:"Jeton public Mapbox (pk.…)",tokenUrlLabel:"…ou l’URL d’un service de jetons",tokenApply:"Utiliser",tokenClear:"Effacer",tokenStoredHere:"Conservé dans ce navigateur uniquement.",tokenSourceYours:"Votre jeton est utilisé",tokenSourceUrl:"Jeton obtenu de {url}",tokenSourceBuilt:"Jeton intégré à cette page",tokenSourceNone:"Aucun jeton Mapbox : les cartes Mapbox ne peuvent pas charger (MapLibre n’en a pas besoin)",tokenSecret:"C’est un jeton secret (sk.…). Collez un jeton public (pk.…) : cette page est publique.",tokenNotPk:"Un jeton public Mapbox commence par pk.",tokenUrlFailed:"Impossible d’obtenir un jeton depuis cette URL : {why}"},ya={title:"प्लगइन स्टूडियो",navLabel:"क्षमता के अनुसार प्लगइन",countLabel:"{bundles} बंडल · यहाँ {elements} प्लगइन सूचीबद्ध",changeLanguage:"भाषा बदलें",copyEmbed:"एम्बेड कोड कॉपी करें",copy:"कॉपी करें",copied:"कॉपी हो गया",scriptEmbed:"स्क्रिप्ट एम्बेड",loading:"{name} लोड हो रहा है…",couldNotLoad:"{name} लोड नहीं हो सका।",chooseElement:"सूची से कोई प्लगइन चुनें।",filterPlaceholder:"प्लगइन फ़िल्टर करें",collapseAll:"सभी संक्षिप्त करें",noMatch:"“{query}” से कोई प्लगइन मेल नहीं खाता।",openSection:"{cap} खोलें, {label}",part:"भाग",noStandalone:"कोई अलग पेज नहीं",cap5:"ऐप शेल",cap4:"संयुक्त",cap3:"बहु-दृश्य",cap2:"प्रीसेट",cap1:"एकल",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें",partOf:"{name} का भाग, अलग से प्रकाशित नहीं",mapToken:"मानचित्र टोकन",tokenPaste:"Mapbox सार्वजनिक टोकन (pk.…)",tokenUrlLabel:"…या किसी टोकन सेवा का URL",tokenApply:"उपयोग करें",tokenClear:"साफ़ करें",tokenStoredHere:"केवल इसी ब्राउज़र में रखा जाता है।",tokenSourceYours:"आपका टोकन उपयोग हो रहा है",tokenSourceUrl:"{url} से टोकन उपयोग हो रहा है",tokenSourceBuilt:"इस पेज में बना टोकन उपयोग हो रहा है",tokenSourceNone:"कोई Mapbox टोकन नहीं: Mapbox मानचित्र लोड नहीं हो सकते (MapLibre को इसकी ज़रूरत नहीं)",tokenSecret:"यह एक गुप्त टोकन है (sk.…)। सार्वजनिक टोकन (pk.…) चिपकाएँ: यह पेज सार्वजनिक है।",tokenNotPk:"Mapbox सार्वजनिक टोकन pk. से शुरू होता है",tokenUrlFailed:"उस URL से टोकन नहीं मिल सका: {why}"},ka={title:"Studio dei plugin",navLabel:"Plugin per capacità",countLabel:"{bundles} pacchetti · {elements} plugin elencati qui",changeLanguage:"Cambia lingua",copyEmbed:"Copia codice di incorporamento",copy:"Copia",copied:"Copiato",scriptEmbed:"Incorporamento tramite script",loading:"Caricamento di {name}…",couldNotLoad:"Impossibile caricare {name}.",chooseElement:"Scegli un plugin dall’elenco.",filterPlaceholder:"Filtra i plugin",collapseAll:"Comprimi tutto",noMatch:"Nessun plugin corrisponde a «{query}».",openSection:"Apri {cap}, {label}",part:"parte",noStandalone:"nessuna pagina propria",cap5:"Shell dell’app",cap4:"Composito",cap3:"Multivista",cap2:"Preimpostato",cap1:"Singolo",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi",partOf:"parte di {name}, non pubblicata da sola",mapToken:"Token mappa",tokenPaste:"Token pubblico Mapbox (pk.…)",tokenUrlLabel:"…o l’URL di un servizio di token",tokenApply:"Usa",tokenClear:"Cancella",tokenStoredHere:"Conservato solo in questo browser.",tokenSourceYours:"Uso il tuo token",tokenSourceUrl:"Uso un token da {url}",tokenSourceBuilt:"Uso il token integrato in questa pagina",tokenSourceNone:"Nessun token Mapbox: le mappe Mapbox non si caricano (MapLibre non ne ha bisogno)",tokenSecret:"Questo è un token segreto (sk.…). Incolla un token pubblico (pk.…): questa pagina è pubblica.",tokenNotPk:"Un token pubblico Mapbox inizia con pk.",tokenUrlFailed:"Impossibile ottenere un token da quell’URL: {why}"},$a={title:"Estúdio de plugins",navLabel:"Plugins por capacidade",countLabel:"{bundles} pacotes · {elements} plugins listados aqui",changeLanguage:"Mudar idioma",copyEmbed:"Copiar código de incorporação",copy:"Copiar",copied:"Copiado",scriptEmbed:"Incorporação por script",loading:"Carregando {name}…",couldNotLoad:"Não foi possível carregar {name}.",chooseElement:"Escolha um plugin na lista.",filterPlaceholder:"Filtrar plugins",collapseAll:"Recolher tudo",noMatch:"Nenhum plugin corresponde a “{query}”.",openSection:"Abrir {cap}, {label}",part:"parte",noStandalone:"sem página própria",cap5:"Shell do aplicativo",cap4:"Composto",cap3:"Multivisualização",cap2:"Predefinição",cap1:"Único",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher",partOf:"parte de {name}, não publicada separadamente",mapToken:"Token do mapa",tokenPaste:"Token público do Mapbox (pk.…)",tokenUrlLabel:"…ou o URL de um serviço de tokens",tokenApply:"Usar",tokenClear:"Limpar",tokenStoredHere:"Guardado apenas neste navegador.",tokenSourceYours:"A usar o seu token",tokenSourceUrl:"A usar um token de {url}",tokenSourceBuilt:"A usar o token incorporado nesta página",tokenSourceNone:"Sem token do Mapbox: os mapas Mapbox não carregam (os MapLibre não precisam)",tokenSecret:"Esse é um token secreto (sk.…). Cole um público (pk.…): esta página é pública.",tokenNotPk:"Um token público do Mapbox começa por pk.",tokenUrlFailed:"Não foi possível obter um token desse URL: {why}"},wa={title:"Studio de pluginuri",navLabel:"Pluginuri după capacitate",countLabel:"{bundles} pachete · {elements} pluginuri listate aici",changeLanguage:"Schimbă limba",copyEmbed:"Copiază codul de încorporare",copy:"Copiază",copied:"Copiat",scriptEmbed:"Încorporare prin script",loading:"Se încarcă {name}…",couldNotLoad:"{name} nu a putut fi încărcat.",chooseElement:"Alegeți un plugin din listă.",filterPlaceholder:"Filtrează pluginurile",collapseAll:"Restrânge tot",noMatch:"Niciun plugin nu corespunde cu „{query}”.",openSection:"Deschide {cap}, {label}",part:"parte",noStandalone:"fără pagină proprie",cap5:"Cadru de aplicație",cap4:"Compus",cap3:"Vizualizări multiple",cap2:"Presetat",cap1:"Simplu",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge",partOf:"parte din {name}, nepublicată separat",mapToken:"Token hartă",tokenPaste:"Token public Mapbox (pk.…)",tokenUrlLabel:"…sau adresa URL a unui serviciu de tokenuri",tokenApply:"Folosește",tokenClear:"Șterge",tokenStoredHere:"Păstrat doar în acest browser.",tokenSourceYours:"Se folosește tokenul tău",tokenSourceUrl:"Se folosește un token de la {url}",tokenSourceBuilt:"Se folosește tokenul inclus în această pagină",tokenSourceNone:"Niciun token Mapbox: hărțile Mapbox nu se pot încărca (MapLibre nu are nevoie)",tokenSecret:"Acesta este un token secret (sk.…). Lipește unul public (pk.…): pagina este publică.",tokenNotPk:"Un token public Mapbox începe cu pk.",tokenUrlFailed:"Nu s-a putut obține un token de la acea adresă: {why}"},Sa={title:"Студия плагинов",navLabel:"Плагины по возможностям",countLabel:"Здесь: пакетов {bundles} · плагинов {elements}",changeLanguage:"Сменить язык",copyEmbed:"Скопировать код встраивания",copy:"Копировать",copied:"Скопировано",scriptEmbed:"Встраивание через скрипт",loading:"Загрузка {name}…",couldNotLoad:"Не удалось загрузить {name}.",chooseElement:"Выберите плагин из списка.",filterPlaceholder:"Фильтр плагинов",collapseAll:"Свернуть всё",noMatch:"Нет плагинов, соответствующих «{query}».",openSection:"Открыть {cap}, {label}",part:"часть",noStandalone:"нет отдельной страницы",cap5:"Оболочка приложения",cap4:"Составной",cap3:"Несколько видов",cap2:"Предустановка",cap1:"Одиночный",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть",partOf:"часть {name}, не публикуется отдельно",mapToken:"Токен карты",tokenPaste:"Публичный токен Mapbox (pk.…)",tokenUrlLabel:"…или адрес службы токенов",tokenApply:"Применить",tokenClear:"Очистить",tokenStoredHere:"Хранится только в этом браузере.",tokenSourceYours:"Используется ваш токен",tokenSourceUrl:"Используется токен с {url}",tokenSourceBuilt:"Используется токен, встроенный в страницу",tokenSourceNone:"Нет токена Mapbox: карты Mapbox не загрузятся (MapLibre он не нужен)",tokenSecret:"Это секретный токен (sk.…). Вставьте публичный (pk.…): эта страница общедоступна.",tokenNotPk:"Публичный токен Mapbox начинается с pk.",tokenUrlFailed:"Не удалось получить токен по этому адресу: {why}"},_a={title:"插件工作室",navLabel:"按能力分类的插件",countLabel:"此处列出 {bundles} 个包 · {elements} 个插件",changeLanguage:"切换语言",copyEmbed:"复制嵌入代码",copy:"复制",copied:"已复制",scriptEmbed:"脚本嵌入",loading:"正在加载 {name}…",couldNotLoad:"无法加载 {name}。",chooseElement:"请从列表中选择一个插件。",filterPlaceholder:"筛选插件",collapseAll:"全部折叠",noMatch:"没有与“{query}”匹配的插件。",openSection:"打开 {cap},{label}",part:"部分",noStandalone:"无独立页面",cap5:"应用外壳",cap4:"组合",cap3:"多视图",cap2:"预设",cap1:"单一",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠",partOf:"{name} 的一部分,不单独发布",mapToken:"地图令牌",tokenPaste:"Mapbox 公开令牌 (pk.…)",tokenUrlLabel:"…或令牌服务的网址",tokenApply:"使用",tokenClear:"清除",tokenStoredHere:"仅保存在此浏览器中。",tokenSourceYours:"正在使用您的令牌",tokenSourceUrl:"正在使用来自 {url} 的令牌",tokenSourceBuilt:"正在使用此页面内置的令牌",tokenSourceNone:"没有 Mapbox 令牌:Mapbox 地图无法加载(MapLibre 地图不需要)",tokenSecret:"这是秘密令牌 (sk.…)。请粘贴公开令牌 (pk.…):此页面是公开的。",tokenNotPk:"Mapbox 公开令牌以 pk. 开头",tokenUrlFailed:"无法从该网址获取令牌:{why}"};function Tn(e,t){const o=t||La(e);Ts(()=>{var r;const n=ri();if(!n)return;const s=(r=n.proxy)==null?void 0:r.$el;if(!s)return;const l=s.getRootNode();if(!(l instanceof ShadowRoot)||l.querySelector(`style[data-shadow-styles="${o}"]`))return;const i=document.createElement("style");i.setAttribute("data-shadow-styles",o),i.textContent=e,l.appendChild(i)})}function La(e){let t=0;for(let o=0;o',map:'',globe:'',heart:'',prayer:'',list:'',users:'',flag:'',target:'',pin:'',monitor:'',chart:'',layers:'',flask:'',share:'',beaker:'',chevron:'',grid:'',tree:'',dots:'',embed:'',send:'',poster:'',search:'',book:'',wifi:''};function Pi(e,t=""){const o=Oi[e]||Oi.map;return``}const Ea=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0);z-index:1000}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}.vtl:dir(rtl) .vtl-nav{left:auto;right:0;border-right:0;border-left:1px solid var(--vtl-border)}.vtl:dir(rtl) .vtl-main{left:0;right:256px}.vtl:dir(rtl) .vtl-tab,.vtl:dir(rtl) .vtl-tier-btn{text-align:right}.vtl:dir(rtl) .vtl-meta,.vtl:dir(rtl) .vtl-td,.vtl:dir(rtl) .vtl-chev{margin-left:0;margin-right:auto}.vtl:dir(rtl) .vtl-chev:not(.open){transform:scaleX(-1)}.vtl:dir(rtl) .vtl-collapse-ic svg{transform:scaleX(-1)}.vtl:dir(rtl) .vtl-fab{left:auto;right:calc(12px + env(safe-area-inset-right))}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(184px)}.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:72px}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:184px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:188px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:196px}@media (max-width: 760px){.vtl:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl:dir(rtl) .vtl-main,.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:0}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:8px}}",Cn=(e,t)=>{const o=e.__vccOpts||e;for(const[n,s]of t)o[n]=s;return o},Dt={};function Ta(e){return e?(Dt[e]||(Dt[e]=new Promise((t,o)=>{const n=document.createElement("script");n.src=e,n.onload=()=>t(),n.onerror=()=>{delete Dt[e],o(new Error("failed to load "+e))},document.head.appendChild(n)})),Dt[e]):Promise.resolve()}function Ca(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((o,n)=>setTimeout(()=>n(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const Aa=` /* STRUCTURAL DISPLAY — the !important is deliberate, not a hack. This layout's display mode is load-bearing: it CANNOT function as a block. As a library/ (high-bar) component it ships across all 5 deployment methods, and a host (app-shell direct-mount, WordPress, mobile webview) may force its own inline display onto the element. Declaring it non-overridable is the correct contract. grid-template-rows: auto 1fr = header takes its natural height, .vtl-body gets a DEFINITE remaining track — no dependence on in-flow children (nav/main are absolute for the rail slide). */ .vtl { position:absolute; inset:0; display:grid !important; grid-template-rows:auto 1fr; height:100%; width:100%; min-height:420px; background:#f3f3f1; color:#3b463d; font-family:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif; -webkit-font-smoothing:antialiased; --vtl-accent:#92b195; --vtl-border:#d1d4cd; --vtl-elevated:#ffffff; --vtl-accented:#d1d4cd; --vtl-muted:#6d766e; --vtl-rail:256px; } /* HEADER-OFF (header=false, e.g. the cap-5 doxa-maps-spa): the .vtl-top element is NOT rendered, so .vtl-body becomes the ONLY grid child and auto-places into row 1 — the auto row — which has no content to size it and collapses to 0 (the 1fr row sits empty) → the same 0-height black screen. With no header there is only one region, so declare a single 1fr row and the body fills. */ .vtl.no-header { grid-template-rows:1fr; } /* MATERIAL APP BAR = 64px desktop / 56px mobile (2026-09-21), was 51px from 11px padding. Stated as an explicit min-height rather than left to padding arithmetic, so the number a reader sees is the number that renders. min-height keeps a wrapping title from clipping. ★ box-sizing:border-box IS LOAD-BEARING HERE. Without it this element is content-box, so min-height:64px MEASURED 81px live: 64 + 16px vertical padding + 1px border. A height stated in a comment is worth nothing if the box model adds to it — measure the rendered value, do not trust the declaration. (Found exactly that way: the probe read 81 against a 64 target.) THIS RULE EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block); keep them identical. */ .vtl-top { flex:0 0 auto; display:flex; align-items:center; gap:10px; box-sizing:border-box; min-height:64px; padding:8px 16px; border-bottom:1px solid var(--vtl-border); background:#ffffff; } .vtl-menu { display:none; font:16px/1 system-ui; color:#3b463d; background:#d1d4cd; border:1px solid #d1d4cd; border-radius:8px; padding:5px 10px; cursor:pointer; } /* Headerless-mobile drawer opener. Only ever rendered when narrow AND header-off AND the drawer is shut, so it cannot appear in any layout that already has a working toggle. z-index sits ABOVE the content but BELOW the drawer (.vtl-nav is z-index:20) so the drawer covers it when it slides in. 44px is the minimum comfortable touch target; the safe-area insets keep it clear of an iOS home indicator and a notch in landscape. */ .vtl-fab { position:absolute; z-index:15; left:calc(12px + env(safe-area-inset-left)); bottom:calc(12px + env(safe-area-inset-bottom)); width:44px; height:44px; display:flex; align-items:center; justify-content:center; font:18px/1 system-ui; color:#3b463d; background:#ffffff; border:1px solid var(--vtl-border); border-radius:50%; box-shadow:0 2px 10px rgba(0,0,0,.18); cursor:pointer; } .vtl-fab:hover { background:#d1d4cd; } .vtl-fab:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:2px; } .vtl-menu:hover { background:#d1d4cd; } .vtl-brand { display:inline-flex; align-items:center; } .vtl-brand:empty { display:none; } .vtl-title { font-size:15px; font-weight:600; letter-spacing:-0.01em; color:#3b463d; } .vtl-meta { color:var(--vtl-muted); font-size:12px; margin-left:auto; display:inline-flex; align-items:center; gap:8px; } /* GRID ROWS, not flex (BUG-EMBEDDED-PLUGIN-STUDIO-BLACK-SCREEN). The collapsible-rail design makes .vtl-nav and .vtl-main position:absolute (so the rail slides by transform without reflowing the heavy map sibling). That leaves .vtl-body with NO in-flow children → ZERO intrinsic height, so it could only fill via flex:1 from a flex parent. A host that forces display:block on .vtl (the app-shell direct-mounts cap-5 elements that way) made that flex inert → .vtl-body collapsed to 0 → black screen. The auto/1fr grid on .vtl gives this row a DEFINITE height by construction, so it no longer depends on the parent's display mode NOR on in-flow children. Header-off (header=false) still works: the auto row collapses to 0 and 1fr takes the full height. */ .vtl-body { min-height:0; position:relative; display:flex; } .vtl-nav { position:absolute; top:0; bottom:0; left:0; z-index:5; width:256px; box-sizing:border-box; overflow-y:auto; overflow-x:hidden; border-right:1px solid var(--vtl-border); padding:12px 12px 20px; background:#ffffff; scrollbar-width:thin; scrollbar-color:#c4c8c0 transparent; contain:layout paint; transform:translateX(0); transition:transform .2s cubic-bezier(.4,0,.2,1); will-change:transform; } /* Thin OVERLAY scrollbar: transparent track so the bar costs no visual space and sits flush to the nav edge; low-contrast thumb that darkens on hover. Matches the research-dashboard rails. */ .vtl-nav::-webkit-scrollbar { width:8px; height:8px; } .vtl-nav::-webkit-scrollbar-track { background:transparent; } .vtl-nav::-webkit-scrollbar-thumb { background:#c4c8c0; border-radius:8px; } .vtl-nav::-webkit-scrollbar-thumb:hover { background:#9aa197; } .vtl-collapse { display:flex; align-items:center; gap:8px; width:100%; box-sizing:border-box; margin:0 0 8px; padding:7px 10px; border:1px solid var(--vtl-border); border-radius:8px; background:#d1d4cd; color:var(--vtl-muted); font:inherit; font-size:12px; cursor:pointer; } .vtl-collapse:hover { background:var(--vtl-accented); color:#3b463d; } .vtl-collapse:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:-2px; } .vtl-collapse-ic { flex:0 0 auto; display:inline-flex; transition:transform .16s ease; transform:rotate(180deg); } .vtl-collapse-ic svg { width:16px; height:16px; } .vtl-collapse-tx { white-space:nowrap; } .vtl-grp { margin-bottom:2px; } .vtl-grp + .vtl-grp { margin-top:8px; padding-top:8px; border-top:1px solid var(--vtl-border); } .vtl-tier { width:100%; padding:8px 8px 6px; display:flex; align-items:center; gap:8px; box-sizing:border-box; } .vtl-tier-btn { border:0; background:none; color:inherit; font:inherit; cursor:pointer; text-align:left; border-radius:8px; } .vtl-tier-btn:hover { background:var(--vtl-accented); } .vtl-tier-btn:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:-2px; } .vtl-tier-ic { flex:0 0 auto; display:inline-flex; color:var(--vtl-muted); } .vtl-tier-ic svg { width:15px; height:15px; } .vtl-cap { font:700 10px/1 system-ui; letter-spacing:.4px; color:#052e16; background:var(--vtl-accent); border-radius:999px; padding:3px 7px; } .vtl-tl { font-weight:600; font-size:11px; letter-spacing:.03em; text-transform:uppercase; color:var(--vtl-muted); } .vtl-td { color:#6b6b6b; font-size:11px; margin-left:auto; } .vtl-chev { margin-left:auto; display:inline-flex; color:var(--vtl-muted); transition:transform .16s ease; } .vtl-chev svg { width:15px; height:15px; } .vtl-chev.open { transform:rotate(90deg); } .vtl-rows { display:flex; flex-direction:column; gap:1px; } /* MATERIAL NAV-ROW METRICS (2026-09-21). the agent: "people are used to the YouTube layout, Google layout is just way better. We do not need to create custom styles people are not used to." Measured before this change: 44px rows with an 8px radius. min-height:48px the Material list-item height. min-height, not height, so a wrapping label still grows instead of clipping. border-radius var(--vtl-radius,8px) — SUPERSEDED THE FULL PILL (2026-09-23). The 999px stadium above was a real instruction ("imitate the YouTube active row") and it shipped. The agent then measured it against the rest of the product and reversed it: "the roundedness of the tabs is a little bit too round because there is nowhere else in the app that has that same roundedness. Even the collapse button is not that round... it looks more material UI to have a more rounded tab than a less circular tab." He is right on the facts — .vtl-collapse is 8px, the filter toggles in @map/components/search are 8px, and 8px is already the most common radius in this file. A 999px radius on a 48px row is a stadium, which is why it reads as foreign beside everything else. ★ DO NOT "RESTORE" THE PILL on the strength of the YouTube rationale above — that rationale is kept because it is true history, not because it is current. The 48px Material row height is unaffected and stays. NOT VENDORED: the card's law is to imitate the metrics in our own CSS, never to add Quasar or MUI. Same clone-dont-edit rule the library follows everywhere else. THIS RULE EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block) and the two copies must stay byte-identical — edit both or neither. */ .vtl-tab { display:flex; align-items:center; gap:11px; width:100%; min-height:48px; text-align:left; border:0; background:none; color:var(--vtl-muted); padding:8px 12px; cursor:pointer; border-radius:var(--vtl-radius,8px); font:inherit; margin:0; transition:background .13s ease,color .13s ease; } .vtl-tab:hover { background:var(--vtl-accented); color:#3b463d; } .vtl-tab:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:-2px; } .vtl-tab.active { background:var(--vtl-accented); color:#3b463d; font-weight:500; } .vtl-tab.active .vtl-tab-ic { color:var(--vtl-accent); } .vtl-tab-ic { flex:0 0 auto; display:inline-flex; color:var(--vtl-muted); } .vtl-tab-ic svg { width:20px; height:20px; } .vtl-tab-emoji { font-size:17px; line-height:1; flex:0 0 auto; } .vtl-tab-fallback { display:none; flex:0 0 auto; width:20px; height:20px; align-items:center; justify-content:center; font-size:12px; font-weight:600; color:var(--vtl-muted); background:var(--vtl-accented); border-radius:6px; } .vtl-tab.active .vtl-tab-fallback { color:var(--vtl-accent); } .vtl-tab-text { display:flex; flex-direction:column; min-width:0; } .vtl-tab-label { font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; align-items:center; gap:6px; } .vtl-tab-badge { font:600 9px/1 system-ui; letter-spacing:.3px; text-transform:uppercase; color:var(--vtl-accent); border:1px solid var(--vtl-accent); border-radius:var(--vtl-radius,8px); padding:2px 5px; } .vtl-tab-sub { font-size:11px; color:#6b6b6b; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .vtl-tab-sub code { font-family:ui-monospace,Menlo,monospace; } .vtl-tab.active .vtl-tab-sub { color:var(--vtl-muted); } .vtl-main { position:absolute; top:0; bottom:0; right:0; left:256px; min-width:0; display:flex; flex-direction:column; } /* ★ contain:layout, NOT layout paint (BUG-STILL-CANNOT-SCROLL-DOWN-TO-THE-GRID, measured 2026-09-22). layout is the half that does the work the rail collapse needs — it isolates this subtree so sliding the rail never reflows a heavy mounted map. paint additionally CLIPS the subtree to this box, which silently swallowed every pixel a scroll-stack composite rendered below one viewport. The clipping now belongs to .vtl-host, which owns a real scrollbar, so the content is both contained AND reachable. Dropping paint costs the collapse nothing: paint never contributed reflow isolation, only clipping. */ .vtl-content { flex:1 1 auto; position:relative; min-height:0; } /* ★ NO containment AT ALL on .vtl-content (BUG-FULLSCREEN-MODALS-UNDERSIZED-INSIDE-THE-CAP5-SHELL, measured 2026-09-23). contain:paint was dropped earlier for the scroll bug; contain:layout stayed -- but LAYOUT containment ALSO makes this element the containing block for every position:fixed descendant (CSS Containment spec), so all six modal scrims hosted in the shell (PosterDialog, DataTable .dt-scrim, LegendTools .lt-overlay, SemanticTreeLegend export backdrop, both poster-wall .modal-scrim) resolved inset:0 to the CONTENT PANE: measured, a fixed inset:0 probe here read x=256 w=1184 on a 1440 viewport, leaving the 256px nav rail uncovered and CLICKABLE behind an open modal. Visibly almost right, interactively wrong. The perf rationale it was kept for does not hold: when the nav collapses, this element's own width changes, and a width change re-lays-out the subtree with or without containment. */ /* ★ THE PANE OWNS THE SCROLL (BUG-STILL-CANNOT-SCROLL-DOWN-TO-THE-GRID). Measured in the cap-5 shell: the dashboard-plus-grid composite mounted here reported scrollHeight 3380 / clientHeight 769 — 2611px of real, mounted, populated content (the people-groups grid, h=2586) that NO element could scroll to, because this box was position:absolute; inset:0 with the default overflow:visible. The document itself measured scrollHeight 900 === clientHeight 900, so a wheel gesture anywhere had nothing to move and the page simply sat still. THIS IS A HOST GAP, NOT A PLUGIN BUG. The same composite is PERFECT standalone (document 2960/900, wheel scrolls to 2060, grid reachable) because its generated leaf sets body{overflow-y:auto} — the document owns the scroll there. In this shell the pane is pinned to viewport height and no ancestor scrolls, so the layout must own it. generate-tree.mjs keeps cap-5 leaves fixed-viewport on the reasoning that "any scroll-stack it hosts is its OWN iframe leaf" — but the studio documents "there is NO iframe mode": every tab mounts its REAL custom element directly into this pane. So the scroll has to land here. WHY THIS IS SAFE FOR THE FIXED-VIEWPORT MAP TABS, which are the majority. A map element ships position:absolute; inset:0 (or height:100%) and therefore fills this box exactly: scrollHeight === clientHeight, so auto yields NO scrollbar and NOTHING changes for them. Only a pane whose content genuinely exceeds one viewport — i.e. a StackLayout scroll-stack, which is the composite that is meant to scroll — gets one. auto is load-bearing; scroll would paint a dead scrollbar on all 19 map tabs. overscroll-behavior:contain stops a wheel that bottoms out here from chaining to the document. */ .vtl-host { position:absolute; inset:0; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; --profile-min-h:0; } /* The slot is the element's mount point. It must NOT be position:absolute; inset:0 any more: that pinned it to the pane's height and re-created the exact trap one level down — an absolutely positioned child cannot grow a scroll container. min-height:100% keeps a fixed-viewport map filling the pane (the behaviour absolute-inset gave it) while letting a taller scroll-stack composite push the pane's scrollHeight past its clientHeight, which is what produces the scrollbar. */ .vtl-host-slot { position:relative; min-height:100%; } /* ★ THE dvh FLOOR, NEUTRALISED FOR HOSTED ELEMENTS (measured 2026-09-22 in the studio, same layout shape). A hosted map ships .profile-loader { height:100%; min-height:100dvh }, and the two resolve against DIFFERENT bases: height:100% against this pane, min-height:100dvh against the VIEWPORT. Wherever the pane is shorter than the viewport (any header/toolbar chrome above it), the floor wins, the element overflows by exactly that chrome height, and the overflow-y:auto above then correctly paints a scrollbar on a fixed-viewport map that should never have one. The floor is DELIBERATE and must stay in the element (standalone it prevents a collapse to 0 against an auto-height body). It is only wrong HERE, against a definite shorter pane. A genuine scroll-stack composite is unaffected: it exceeds the pane on its own content, not on this floor. */ .vtl-host-slot > * { min-height:0; max-height:none; } .vtl-host-hint { position:absolute; inset:0; display:grid; place-items:center; text-align:center; color:var(--dx-muted, #6d766e); font-size:13px; padding:20px; } .vtl-host-hint.err { color:#f87171; } .vtl-host-hint small { color:var(--dx-muted, #6d766e); } /* MATERIAL MINI-VARIANT RAIL = 72px (2026-09-21), up from 60px. ★ THE COLLAPSE IS A TRANSLATE, NOT A WIDTH CHANGE — so FOUR numbers are coupled and must move together, which is precisely where a partial edit would break the layout: nav translate -184px the 256px rail slides left, leaving 256-184 = 72px visible main left 72px the content pane starts exactly where the rail ends collapse pad 184px pushes the toggle's icon into the 72px strip that stays on screen tab pad 188px the same for each row's icon (4px more, matching the old 196/200 pair) Change one without the others and the icons drift out of the visible strip or the content overlaps the rail. Old values were -196 / 60 / 196 / 200. THIS BLOCK EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block); keep them byte-identical. */ .vtl.rail-collapsed .vtl-nav { transform:translateX(-184px); } .vtl.rail-collapsed .vtl-main { left:72px; } .vtl.rail-collapsed .vtl-collapse { padding-left:184px; justify-content:flex-start; } .vtl.rail-collapsed .vtl-collapse-ic { transform:rotate(0deg); } .vtl.rail-collapsed .vtl-collapse-tx { display:none; } .vtl.rail-collapsed .vtl-tab { padding-left:188px; gap:0; } .vtl.rail-collapsed .vtl-tab-text { display:none; } .vtl.rail-collapsed .vtl-tab-emoji { font-size:19px; } .vtl.rail-collapsed .vtl-tab-fallback { display:inline-flex; } .vtl.rail-collapsed .vtl-tier { padding-left:196px; } .vtl.rail-collapsed .vtl-tl, .vtl.rail-collapsed .vtl-td, .vtl.rail-collapsed .vtl-cap, .vtl.rail-collapsed .vtl-chev { display:none; } .vtl.rail-collapsed .vtl-grp + .vtl-grp { margin-top:6px; padding-top:6px; } @media (max-width: 760px) { /* Material app bar is 56px on mobile, 64px on desktop — the desktop value is set above. */ .vtl-top { min-height:56px; } .vtl-menu { display:inline-block; } .vtl-meta { display:none; } /* MOBILE = the SAME composited-transform model, taken to its full-off-canvas extreme: a full-width drawer that slides in/out via transform (never a layout property), so opening/closing the drawer never reflows the content. Content is full-width (left:0) and stays put; the drawer floats over it. */ .vtl-nav { z-index:20; width:256px; box-shadow:0 0 28px rgba(0,0,0,.55); transform:translateX(-100%); } /* OPEN DRAWER ABOVE THE PLUGIN'S OWN LAYERS. Mounted content shares this stacking context, and plugins raise their chrome (the research dashboard's filter bar is z-index:55), so at z-index 20 the open drawer had a plugin's filter row painted across it — measured 2026-09-25 at 390px. Only while OPEN on a phone: that is when the drawer is the one thing you can use, and desktop and plugin modal scrims keep their existing order. */ .vtl.nav-open .vtl-nav { transform:translateX(0); z-index:1000; } .vtl-main { left:0; } /* The desktop slim-rail collapse has no meaning on a phone — reconcileForWidth() clears railCollapsed at this width, but neutralize its CSS too (belt-and-suspenders) so a full labelled drawer always shows: no partial slide, no icon-column padding, labels/sections visible. */ .vtl.rail-collapsed .vtl-nav { transform:translateX(-100%); } .vtl.rail-collapsed.nav-open .vtl-nav { transform:translateX(0); } .vtl.rail-collapsed .vtl-main { left:0; } .vtl.rail-collapsed .vtl-collapse { padding-left:10px; justify-content:flex-start; } .vtl.rail-collapsed .vtl-collapse-ic { transform:rotate(180deg); } .vtl.rail-collapsed .vtl-collapse-tx { display:inline; } .vtl.rail-collapsed .vtl-tab { padding-left:10px; gap:11px; } .vtl.rail-collapsed .vtl-tab-text { display:flex; } .vtl.rail-collapsed .vtl-tab-fallback { display:none; } .vtl.rail-collapsed .vtl-tier { padding-left:8px; } .vtl.rail-collapsed .vtl-tl, .vtl.rail-collapsed .vtl-td, .vtl.rail-collapsed .vtl-cap, .vtl.rail-collapsed .vtl-chev { display:inline; } } /* ★ RIGHT-TO-LEFT (ar). THIS BLOCK EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block); keep them byte-identical. Everything above is written in PHYSICAL terms (left:0 rail, left:256px content, translateX(-…) slides), so an Arabic shell kept the rail on the left with LTR geometry (reported by studio for cell E, 2026-09-25). These are ADDITIVE overrides scoped by :dir(rtl), so an LTR consumer matches none of them and renders exactly as before. :dir() follows the dir attribute through the shadow boundary, so either a consumer setting dir="rtl" on the layout or an RTL host page flips it. translateX has no logical form, which is why this is a mirror block rather than logical properties. */ .vtl:dir(rtl) .vtl-nav { left:auto; right:0; border-right:0; border-left:1px solid var(--vtl-border); } .vtl:dir(rtl) .vtl-main { left:0; right:256px; } .vtl:dir(rtl) .vtl-tab, .vtl:dir(rtl) .vtl-tier-btn { text-align:right; } .vtl:dir(rtl) .vtl-meta, .vtl:dir(rtl) .vtl-td, .vtl:dir(rtl) .vtl-chev { margin-left:0; margin-right:auto; } .vtl:dir(rtl) .vtl-chev:not(.open) { transform:scaleX(-1); } .vtl:dir(rtl) .vtl-collapse-ic svg { transform:scaleX(-1); } .vtl:dir(rtl) .vtl-fab { left:auto; right:calc(12px + env(safe-area-inset-right)); } .vtl.rail-collapsed:dir(rtl) .vtl-nav { transform:translateX(184px); } .vtl.rail-collapsed:dir(rtl) .vtl-main { left:0; right:72px; } .vtl.rail-collapsed:dir(rtl) .vtl-collapse { padding-left:10px; padding-right:184px; } .vtl.rail-collapsed:dir(rtl) .vtl-tab { padding-left:12px; padding-right:188px; } .vtl.rail-collapsed:dir(rtl) .vtl-tier { padding-left:8px; padding-right:196px; } @media (max-width: 760px) { .vtl:dir(rtl) .vtl-nav { transform:translateX(100%); } .vtl.nav-open:dir(rtl) .vtl-nav { transform:translateX(0); } .vtl:dir(rtl) .vtl-main, .vtl.rail-collapsed:dir(rtl) .vtl-main { left:0; right:0; } .vtl.rail-collapsed:dir(rtl) .vtl-nav { transform:translateX(100%); } .vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav { transform:translateX(0); } .vtl.rail-collapsed:dir(rtl) .vtl-collapse { padding-left:10px; padding-right:10px; } .vtl.rail-collapsed:dir(rtl) .vtl-tab { padding-left:12px; padding-right:10px; } .vtl.rail-collapsed:dir(rtl) .vtl-tier { padding-left:8px; padding-right:8px; } } `,Oa=fo({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){Tn(Aa,"vertical-tabs-layout")},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(n=>n.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},Ta(t.src).then(()=>Ca(t.element)).then(()=>{o.innerHTML="";const n=document.createElement(t.element),s=t.attrs||{};for(const l in s){const i=s[l],r=i!=null&&typeof i=="object"?JSON.stringify(i):String(i);try{n[l]=i}catch{}try{n.setAttribute(l,r)}catch{}}n.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(n),this.hostState={...this.hostState,[e]:"ready"}}).catch(n=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:n&&n.message||String(n)}}))},iconSvg(e){return e?Pi(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(s=>s.key===e),n=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!n}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let n=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")n=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")n=(o-1+t.length)%t.length;else if(e.key==="Home")n=0;else if(e.key==="End")n=t.length-1;else return;e.preventDefault();const s=t[n];this.pick(s),this.$nextTick(()=>{const l=this._tabEls[s];l&&l.focus&&l.focus()})}}}),Pa={key:0,class:"vtl-top"},Ma=["aria-expanded","aria-label"],Na={class:"vtl-brand"},Ra={class:"vtl-title"},Ua={class:"vtl-meta"},Ia=["aria-expanded","aria-label"],Ha={class:"vtl-body"},Fa=["aria-label","aria-hidden","role","aria-orientation"],Da=["aria-expanded","aria-label"],ja=["innerHTML"],Va={class:"vtl-collapse-tx"},Ba=["aria-expanded","onClick"],za={key:0,class:"vtl-cap"},Ka={class:"vtl-tl"},Wa={key:1,class:"vtl-td"},qa=["innerHTML"],Ya={key:1,class:"vtl-tier"},Ga={key:0,class:"vtl-cap"},Xa={class:"vtl-tl"},Ja={key:1,class:"vtl-td"},Za={class:"vtl-rows"},Qa=["aria-selected","tabindex","onClick"],ec=["innerHTML"],tc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},oc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},nc={class:"vtl-tab-text"},sc={class:"vtl-tab-label"},ic={key:0,class:"vtl-tab-badge"},lc={key:0,class:"vtl-tab-sub"},rc=["innerHTML"],ac=["aria-selected","tabindex","onClick"],cc=["innerHTML"],dc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},pc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},uc={class:"vtl-tab-text"},fc={class:"vtl-tab-label"},hc={key:0,class:"vtl-tab-sub"},gc={class:"vtl-main"},bc={class:"vtl-content"},mc=["hidden"],vc={key:0,class:"vtl-host-hint"},xc={key:1,class:"vtl-host-hint err"};function yc(e,t,o,n,s,l){return L(),E("div",{class:me(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(L(),E("header",Pa,[y("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=i=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,Ma),y("span",Na,[At(e.$slots,"brand")]),y("b",Ra,T(e.title),1),y("span",Ua,[At(e.$slots,"meta")])])):J("",!0),e.narrow&&!e.header&&!e.navOpen?(L(),E("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=i=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Ia)):J("",!0),y("div",Ha,[y("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[y("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...i)=>e.toggleRail&&e.toggleRail(...i))},[y("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,ja),y("span",Va,T(e.label("collapse")),1)],8,Da),e.$slots.rail?At(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(L(!0),E(G,{key:1},Be(e.groups,i=>(L(),E("div",{class:"vtl-grp",key:i.key},[i.folder?(L(),E("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(i)),onClick:r=>e.toggleFolder(i.key)},[i.badge?(L(),E("span",za,T(i.badge),1)):J("",!0),y("span",Ka,T(i.label),1),i.count!=null?(L(),E("span",Wa,T(i.count),1)):J("",!0),y("span",{class:me(["vtl-chev",{open:!e.isFolderClosed(i)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,qa)],8,Ba)):(L(),E("div",Ya,[i.badge?(L(),E("span",Ga,T(i.badge),1)):J("",!0),y("span",Xa,T(i.label),1),i.count!=null?(L(),E("span",Ja,T(i.count),1)):J("",!0)])),ft(y("div",Za,[(L(!0),E(G,null,Be(i.rows,r=>(L(),E("button",{key:r.key,type:"button",role:"tab",class:me(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:a=>e.registerTab(r.key,a),onClick:a=>e.pick(r.key),onKeydown:t[3]||(t[3]=a=>e.onKey(a))},[r.icon?(L(),E("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,ec)):r.emoji?(L(),E("span",tc,T(r.emoji),1)):(L(),E("span",oc,T(e.initial(r.label)),1)),y("span",nc,[y("span",sc,[Xe(T(r.label),1),r.badge?(L(),E("span",ic,T(r.badge),1)):J("",!0)]),r.sub?(L(),E("span",lc,[y("span",{innerHTML:r.sub},null,8,rc)])):J("",!0)])],42,Qa))),128))],512),[[$n,!i.folder||!e.isFolderClosed(i)]])]))),128)):(L(!0),E(G,{key:2},Be(e.items,i=>(L(),E("button",{key:i.key,type:"button",role:"tab",class:me(["vtl-tab",{active:i.key===e.active}]),"aria-selected":String(i.key===e.active),tabindex:i.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(i.key,r),onClick:r=>e.pick(i.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[i.icon?(L(),E("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(i.icon)},null,8,cc)):i.emoji?(L(),E("span",dc,T(i.emoji),1)):(L(),E("span",pc,T(e.initial(i.label)),1)),y("span",uc,[y("span",fc,T(i.label),1),i.sub?(L(),E("span",hc,T(i.sub),1)):J("",!0)])],42,ac))),128))],8,Fa),y("main",gc,[e.header?At(e.$slots,"toolbar",{},void 0,void 0,0):J("",!0),y("div",bc,[(L(!0),E(G,null,Be(e.mountedElementRows,i=>ft((L(),E("section",{key:i.key,class:"vtl-host",hidden:i.key!==e.active},[y("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(i.key,r)},null,512),e.hostState[i.key]==="loading"?(L(),E("div",vc,"Loading "+T(i.label)+"…",1)):e.hostState[i.key]==="error"?(L(),E("div",xc,[Xe(" Could not load "+T(i.label)+".",1),t[5]||(t[5]=y("br",null,null,-1)),y("small",null,T(e.hostError[i.key]),1)])):J("",!0)],8,mc)),[[$n,i.key===e.active]])),128)),At(e.$slots,"default")])])])],2)}const kc=Cn(Oa,[["render",yc],["styles",[Ea]]]),$c='.st{display:flex;flex-direction:column;margin:0 -12px}.st-bar{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:6px;padding:8px 12px;background:#fff}.st-find{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:6px;height:30px;padding:0 8px;border:1px solid #d1d4cd;border-radius:8px;background:#f3f3f1;color:#6d766e}.st-find:focus-within{border-color:#92b195;background:#fff}.st-find-ic{display:inline-flex}.st-find-ic svg{width:14px;height:14px}.st-find-in{flex:1 1 auto;min-width:0;border:0;outline:0;background:none;font:inherit;font-size:13px;color:#3b463d}.st-tool{flex:0 0 auto;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:8px;background:none;color:#6d766e;cursor:pointer}.st-tool:hover{background:#f3f3f1;color:#3b463d}.st-tool:focus-visible{outline:2px solid #92b195;outline-offset:-2px}.st-tool svg{width:16px;height:16px}.st-tree{display:flex;flex-direction:column;padding:0 0 8px;outline:0}.st-row{position:relative;display:flex;align-items:center;gap:6px;height:28px;box-sizing:border-box;padding-block:0;padding-inline:calc(8px + var(--st-depth) * 14px) 10px;font-size:13px;color:#3b463d;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;outline:0}.st-row:hover{background:#f3f3f1}.st-row:focus-visible{box-shadow:inset 0 0 0 1px #92b195}.st-row.active{background:#92b1953d}.st-row.active:after{content:"";position:absolute;inset-inline-start:0;top:4px;bottom:4px;width:3px;border-start-end-radius:3px;border-end-end-radius:3px;background:#92b195}.st-row.alias.active{background:#92b1951f}.st-sec{position:sticky;top:46px;z-index:2;height:30px;margin-top:6px;background:#fff;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#6d766e;border-top:1px solid #eceee9}.st-sec:first-child{margin-top:0;border-top:0}.st-sec:hover{background:#fff;color:#3b463d}.st-cap{flex:0 0 auto;font:700 10px/1 system-ui,sans-serif;letter-spacing:.3px;padding:3px 6px;border-radius:999px;background:#92b195;color:#1d2a1f}.st-sec-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.st-twisty,.st-twisty-sp{flex:0 0 16px;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;color:#6d766e}.st-twisty svg{width:14px;height:14px;transition:transform .12s ease}.st-row[aria-expanded=true]>.st-twisty svg{transform:rotate(90deg)}.st:dir(rtl) .st-twisty svg{transform:scaleX(-1)}.st:dir(rtl) .st-row[aria-expanded=true]>.st-twisty svg{transform:rotate(90deg)}.st-ic{flex:0 0 16px;display:inline-flex;color:#6d766e}.st-ic svg{width:16px;height:16px}.st-row.active .st-ic{color:#5f8a63}.st-label{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.st-desc{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;font:11px/1 ui-monospace,Menlo,monospace;color:#8a928b}.st-part{flex:0 0 auto;font:600 9px/1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.3px;padding:2px 4px;border:1px solid #92b195;border-radius:4px;color:#5f8a63}.st-count{flex:0 0 auto;margin-inline-start:auto;min-width:18px;text-align:right;font-size:11px;font-weight:500;letter-spacing:0;color:#6d766e}.st-guide{position:absolute;top:0;bottom:0;inset-inline-start:calc(15px + var(--st-g) * 14px);border-inline-start:1px solid #dfe2db;pointer-events:none}.st-row:hover>.st-guide{border-inline-start-color:#c4c8c0}.st-empty{margin:12px;font-size:13px;color:#6d766e}.st-activity{display:flex;flex-direction:column;gap:4px}.st-act{position:relative;display:flex;align-items:center;justify-content:center;width:48px;height:44px;margin-inline-start:172px;padding:0;border:0;border-radius:10px;background:none;color:#6d766e;cursor:pointer}.st-act:hover,.st-act.active{background:#f3f3f1;color:#3b463d}.st-act:focus-visible{outline:2px solid #92b195;outline-offset:-2px}.st-act-ic{display:inline-flex}.st-act-ic svg{width:20px;height:20px}.st-act-n{position:absolute;right:6px;bottom:5px;font:700 9px/1 system-ui,sans-serif;color:#5f8a63}',wc='.st { display:flex; flex-direction:column; margin:0 -12px; }.st-bar { position:sticky; top:0; z-index:3; display:flex; align-items:center; gap:6px; padding:8px 12px 8px; background:#ffffff; }.st-find { flex:1 1 auto; min-width:0; display:flex; align-items:center; gap:6px; height:30px; padding:0 8px; border:1px solid #d1d4cd; border-radius:8px; background:#f3f3f1; color:#6d766e; }.st-find:focus-within { border-color:#92b195; background:#ffffff; }.st-find-ic { display:inline-flex; } .st-find-ic svg { width:14px; height:14px; }.st-find-in { flex:1 1 auto; min-width:0; border:0; outline:0; background:none; font:inherit; font-size:13px; color:#3b463d; }.st-tool { flex:0 0 auto; width:30px; height:30px; display:inline-flex; align-items:center; justify-content:center; padding:0; border:0; border-radius:8px; background:none; color:#6d766e; cursor:pointer; }.st-tool:hover { background:#f3f3f1; color:#3b463d; } .st-tool:focus-visible { outline:2px solid #92b195; outline-offset:-2px; }.st-tool svg { width:16px; height:16px; }.st-tree { display:flex; flex-direction:column; padding:0 0 8px; outline:0; }.st-row { position:relative; display:flex; align-items:center; gap:6px; height:28px; box-sizing:border-box; padding-block:0; padding-inline:calc(8px + var(--st-depth) * 14px) 10px; font-size:13px; color:#3b463d; cursor:pointer; white-space:nowrap; user-select:none; outline:0; }.st-row:hover { background:#f3f3f1; }.st-row:focus-visible { box-shadow:inset 0 0 0 1px #92b195; }.st-row.active { background:rgba(146,177,149,.24); }.st-row.active::after { content:""; position:absolute; inset-inline-start:0; top:4px; bottom:4px; width:3px; border-start-end-radius:3px; border-end-end-radius:3px; background:#92b195; }.st-row.alias.active { background:rgba(146,177,149,.12); }.st-sec { position:sticky; top:46px; z-index:2; height:30px; margin-top:6px; background:#ffffff; font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:#6d766e; border-top:1px solid #eceee9; }.st-sec:first-child { margin-top:0; border-top:0; }.st-sec:hover { background:#ffffff; color:#3b463d; }.st-cap { flex:0 0 auto; font:700 10px/1 system-ui,sans-serif; letter-spacing:.3px; padding:3px 6px; border-radius:999px; background:#92b195; color:#1d2a1f; }.st-sec-label { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; }.st-twisty, .st-twisty-sp { flex:0 0 16px; width:16px; height:16px; display:inline-flex; align-items:center; justify-content:center; color:#6d766e; }.st-twisty svg { width:14px; height:14px; transition:transform .12s ease; }.st-row[aria-expanded="true"] > .st-twisty svg { transform:rotate(90deg); }.st:dir(rtl) .st-twisty svg { transform:scaleX(-1); } .st:dir(rtl) .st-row[aria-expanded="true"] > .st-twisty svg { transform:rotate(90deg); }.st-ic { flex:0 0 16px; display:inline-flex; color:#6d766e; } .st-ic svg { width:16px; height:16px; }.st-row.active .st-ic { color:#5f8a63; }.st-label { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; }.st-desc { flex:1 1 0; min-width:0; overflow:hidden; text-overflow:ellipsis; font:11px/1 ui-monospace,Menlo,monospace; color:#8a928b; }.st-part { flex:0 0 auto; font:600 9px/1 system-ui,sans-serif; text-transform:uppercase; letter-spacing:.3px; padding:2px 4px; border:1px solid #92b195; border-radius:4px; color:#5f8a63; }.st-count { flex:0 0 auto; margin-inline-start:auto; min-width:18px; text-align:right; font-size:11px; font-weight:500; letter-spacing:0; color:#6d766e; }.st-guide { position:absolute; top:0; bottom:0; inset-inline-start:calc(15px + var(--st-g) * 14px); border-inline-start:1px solid #dfe2db; pointer-events:none; }.st-row:hover > .st-guide { border-inline-start-color:#c4c8c0; }.st-empty { margin:12px; font-size:13px; color:#6d766e; }.st-activity { display:flex; flex-direction:column; gap:4px; }.st-act { position:relative; display:flex; align-items:center; justify-content:center; width:48px; height:44px; margin-inline-start:172px; padding:0; border:0; border-radius:10px; background:none; color:#6d766e; cursor:pointer; }.st-act:hover, .st-act.active { background:#f3f3f1; color:#3b463d; }.st-act:focus-visible { outline:2px solid #92b195; outline-offset:-2px; }.st-act-ic { display:inline-flex; } .st-act-ic svg { width:20px; height:20px; }.st-act-n { position:absolute; right:6px; bottom:5px; font:700 9px/1 system-ui,sans-serif; color:#5f8a63; }',Sc='',_c={filterPlaceholder:"Filter plugins",collapseAll:"Collapse all",noMatch:"No plugin matches “{query}”.",treeLabel:"Plugins by capability",openSection:"Open {cap}, {label}",part:"part"},Lc='',Ec=fo({name:"StudioTree",props:{sections:{type:Array,default:()=>[]},active:{type:String,default:""},collapsed:{type:Boolean,default:!1},pick:{type:Function,default:null},expand:{type:Function,default:null},strings:{type:Object,default:()=>({})}},emits:["select"],setup(){Tn(wc,"studio-tree")},data(){const e=this.readState();return{query:"",focusId:"",secClosed:e.sec||{},nodeOpen:e.node||{},chev:Lc,collapseAllSvg:Sc}},computed:{byId(){const e=new Map;for(const t of this.sections)for(const o of t.nodes)e.set(o.id,o);return e},q(){return this.query.trim().toLowerCase()},kept(){if(!this.q)return null;const e=new Set;for(const t of this.sections)for(const o of t.nodes){if(!(o.label.toLowerCase().includes(this.q)||String(o.desc||"").toLowerCase().includes(this.q)))continue;e.add(o.id);let s=o.parent;for(;s;)e.add(s),s=this.byId.get(s)&&this.byId.get(s).parent}return e},visible(){const e=[];for(const t of this.sections){const o=this.kept?t.nodes.filter(n=>this.kept.has(n.id)):t.nodes;if(!(this.kept&&!o.length)&&(e.push({id:"sec:"+t.id,section:!0,sectionId:t.id,level:1,depth:0,expandable:!0,cap:t.cap,label:t.label,title:t.title||"",count:t.nodes.filter(n=>n.depth===0).length}),!(!this.kept&&this.secClosed[t.id])))for(const n of o)!this.kept&&!this.ancestorsOpen(n)||e.push({...n,sectionId:t.id,level:n.depth+2,expandable:!!n.kids,alias:n.depth>0})}return e},activeSectionId(){for(const e of this.sections)if(e.nodes.some(t=>t.depth===0&&t.target===this.active))return e.id;return""}},watch:{active:{handler(){this.reveal()},immediate:!0},sections(){this.reveal()},query(e){e&&this.visible.length&&(this.focusId=this.visible[0].id)}},methods:{svg(e){return e?Pi(e):""},str(e,t){let o=this.strings[e]||_c[e]||e;if(t)for(const n in t)o=o.split("{"+n+"}").join(String(t[n]));return o},storageKey(){return"dx-studio-tree:"+(typeof location<"u"&&location.pathname||"")},readState(){try{return JSON.parse(window.localStorage.getItem(this.storageKey())||"{}")||{}}catch{return{}}},saveState(){try{window.localStorage.setItem(this.storageKey(),JSON.stringify({sec:this.secClosed,node:this.nodeOpen}))}catch{}},ancestorsOpen(e){let t=e.parent;for(;t;){if(!this.nodeOpen[t])return!1;t=this.byId.get(t)&&this.byId.get(t).parent}return!0},isOpen(e){return this.kept?!0:e.section?!this.secClosed[e.sectionId]:!!this.nodeOpen[e.id]},setOpen(e,t){e.section?this.secClosed={...this.secClosed,[e.sectionId]:!t}:this.nodeOpen={...this.nodeOpen,[e.id]:t},this.saveState()},toggle(e){e.expandable&&this.setOpen(e,!this.isOpen(e))},collapseAll(){this.nodeOpen={},this.saveState();const e=this.visible.find(t=>!t.section&&t.target===this.active&&t.depth===0);e&&(this.focusId=e.id)},rowClass(e){return{"st-row":!0,"st-sec":!!e.section,active:!e.section&&e.target===this.active,alias:!!e.alias}},setRow(e,t){this._rows||(this._rows={}),t?this._rows[e]=t:delete this._rows[e]},activate(e){if(e.section){this.toggle(e);return}e.expandable&&!this.isOpen(e)&&this.setOpen(e,!0),e.target&&(this.pick?this.pick(e.target):this.$emit("select",e.target))},onRowClick(e){this.focusId=e.id,this.activate(e)},focusRow(e){e&&(this.focusId=e,this.$nextTick(()=>{const t=this._rows&&this._rows[e];t&&(t.focus({preventScroll:!0}),t.scrollIntoView({block:"nearest"}))}))},onTreeKey(e){const t=this.visible;if(!t.length)return;const o=Math.max(0,t.findIndex(l=>l.id===this.focusId)),n=t[o],s=l=>l.section?"":l.parent||"sec:"+l.sectionId;switch(e.key){case"ArrowDown":this.focusRow((t[o+1]||n).id);break;case"ArrowUp":this.focusRow((t[o-1]||n).id);break;case"Home":this.focusRow(t[0].id);break;case"End":this.focusRow(t[t.length-1].id);break;case"ArrowRight":if(!n.expandable)break;this.isOpen(n)?t[o+1]&&t[o+1].level>n.level&&this.focusRow(t[o+1].id):this.setOpen(n,!0);break;case"ArrowLeft":n.expandable&&this.isOpen(n)&&!this.kept?this.setOpen(n,!1):this.focusRow(s(n));break;case"Enter":case" ":this.activate(n);break;default:if(e.key.length===1&&/\S/.test(e.key)&&!e.ctrlKey&&!e.metaKey&&!e.altKey){const l=e.key.toLowerCase(),r=t.slice(o+1).concat(t.slice(0,o+1)).find(a=>String(a.label).toLowerCase().startsWith(l));r&&this.focusRow(r.id);break}return}e.preventDefault()},onFindKey(e){e.key==="Escape"?(this.query="",e.preventDefault()):e.key==="ArrowDown"&&this.visible.length&&(this.focusRow(this.visible[0].id),e.preventDefault())},reveal(){if(!this.active||!this.sections.length)return;let e=null;for(const t of this.sections)if(e=t.nodes.find(o=>o.depth===0&&o.target===this.active),e){this.secClosed[t.id]&&(this.secClosed={...this.secClosed,[t.id]:!1},this.saveState());break}e&&((!this.focusId||!this.byId.has(this.focusId)||this.byId.get(this.focusId).target!==this.active)&&(this.focusId=e.id),this.$nextTick(()=>{const t=this._rows&&this._rows[e.id];t&&t.scrollIntoView&&t.scrollIntoView({block:"nearest"})}))},openSectionFromActivity(e){this.secClosed[e]&&(this.secClosed={...this.secClosed,[e]:!1},this.saveState()),this.expand&&this.expand(),this.$nextTick(()=>this.focusRow("sec:"+e))}}}),Tc={key:0,class:"st-activity"},Cc=["aria-label","onClick"],Ac=["innerHTML"],Oc={class:"st-act-n","aria-hidden":"true"},Pc={key:1,class:"st"},Mc={class:"st-bar"},Nc={class:"st-find"},Rc=["innerHTML"],Uc=["placeholder","aria-label"],Ic=["aria-label","title"],Hc=["innerHTML"],Fc=["aria-label"],Dc=["aria-level","aria-expanded","aria-selected","tabindex","title","onClick","onFocus"],jc=["innerHTML"],Vc={class:"st-cap"},Bc={class:"st-sec-label"},zc={class:"st-count"},Kc=["innerHTML","onClick"],Wc={key:1,class:"st-twisty-sp","aria-hidden":"true"},qc=["innerHTML"],Yc={class:"st-label"},Gc={key:2,class:"st-part"},Xc={class:"st-desc"},Jc={key:3,class:"st-count"},Zc={key:0,class:"st-empty"};function Qc(e,t,o,n,s,l){return e.collapsed?(L(),E("div",Tc,[(L(!0),E(G,null,Be(e.sections,i=>(L(),E("button",{key:i.id,type:"button",class:me(["st-act",{active:i.id===e.activeSectionId}]),"aria-label":e.str("openSection",{cap:"CAP "+i.cap,label:i.label}),onClick:r=>e.openSectionFromActivity(i.id)},[y("span",{class:"st-act-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,Ac),y("span",Oc,T(i.cap),1)],10,Cc))),128))])):(L(),E("div",Pc,[y("div",Mc,[y("label",Nc,[y("span",{class:"st-find-ic","aria-hidden":"true",innerHTML:e.svg("search")},null,8,Rc),ft(y("input",{ref:"find",type:"search",class:"st-find-in","onUpdate:modelValue":t[0]||(t[0]=i=>e.query=i),placeholder:e.str("filterPlaceholder"),"aria-label":e.str("filterPlaceholder"),onKeydown:t[1]||(t[1]=(...i)=>e.onFindKey&&e.onFindKey(...i))},null,40,Uc),[[En,e.query]])]),y("button",{type:"button",class:"st-tool","aria-label":e.str("collapseAll"),title:e.str("collapseAll"),onClick:t[2]||(t[2]=(...i)=>e.collapseAll&&e.collapseAll(...i))},[y("span",{"aria-hidden":"true",innerHTML:e.collapseAllSvg},null,8,Hc)],8,Ic)]),y("div",{class:"st-tree",role:"tree","aria-label":e.str("treeLabel"),onKeydown:t[3]||(t[3]=(...i)=>e.onTreeKey&&e.onTreeKey(...i))},[(L(!0),E(G,null,Be(e.visible,i=>(L(),E("div",{key:i.id,ref_for:!0,ref:r=>e.setRow(i.id,r),role:"treeitem","aria-level":i.level,"aria-expanded":i.expandable?String(e.isOpen(i)):null,"aria-selected":i.section?null:String(i.target===e.active),tabindex:i.id===e.focusId?0:-1,class:me(e.rowClass(i)),style:yt({"--st-depth":i.depth}),title:i.title||null,onClick:r=>e.onRowClick(i),onFocus:r=>e.focusId=i.id},[i.section?(L(),E(G,{key:0},[y("span",{class:"st-twisty","aria-hidden":"true",innerHTML:e.chev},null,8,jc),y("span",Vc,"CAP "+T(i.cap),1),y("span",Bc,T(i.label),1),y("span",zc,T(i.count),1)],64)):(L(),E(G,{key:1},[(L(!0),E(G,null,Be(i.depth,r=>(L(),E("span",{key:r,class:"st-guide",style:yt({"--st-g":r-1}),"aria-hidden":"true"},null,4))),128)),i.expandable?(L(),E("span",{key:0,class:"st-twisty","aria-hidden":"true",innerHTML:e.chev,onClick:Ei(r=>e.toggle(i),["stop"])},null,8,Kc)):(L(),E("span",Wc)),y("span",{class:"st-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,qc),y("span",Yc,T(i.label),1),i.part?(L(),E("span",Gc,T(e.str("part")),1)):J("",!0),y("span",Xc,T(i.desc),1),i.expandable?(L(),E("span",Jc,T(i.kids),1)):J("",!0)],64))],46,Dc))),128)),e.query&&!e.visible.length?(L(),E("p",Zc,T(e.str("noMatch",{query:e.query})),1)):J("",!0)],40,Fc)]))}const ed=Cn(Ec,[["render",Qc],["styles",[$c]]]),An=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0}],td=An.filter(e=>!e.hideFromSwitcher);function od(e){return An.find(t=>t.code===e)}function On(e){const t=String(e||"").split("-")[0].toLowerCase();return An.some(o=>o.code===t)?t:"en"}const Mi="doxa-maps:locale";function nd(){try{const e=localStorage.getItem(Mi);if(e)return On(e)}catch{}return On(navigator==null?void 0:navigator.language)}function sd(e){try{localStorage.setItem(Mi,e)}catch{}}const id=":host{display:block;position:relative;height:var(--plugin-studio-height, 85vh);min-height:480px}:host([hidden]){display:none}.ps-logo{display:inline-flex;align-items:center}.ps-logo svg{display:block}.ps-count{color:#6d766e}.ps-token{position:relative;display:inline-flex}.ps-token-dot{width:8px;height:8px;border-radius:50%;background:#b8bdb4}.ps-token-dot.is-yours,.ps-token-dot.is-url{background:#92b195}.ps-token-dot.is-built{background:#c9b36a}.ps-token-dot.is-none{background:#d27a6a}.ps-token-panel{position:absolute;top:100%;inset-inline-end:0;margin-top:4px;z-index:30;width:min(340px,90vw);display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000040;color:#3b463d;font-size:12px}.ps-token-label{display:flex;flex-direction:column;gap:4px}.ps-token-input{font:inherit;font-size:12px;padding:6px 8px;border:1px solid #d1d4cd;border-radius:7px;background:#f8f8f6;color:#3b463d;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ps-token-row{display:flex;gap:8px}.ps-token-apply,.ps-token-clear{font:inherit;font-size:12px;padding:5px 12px;border-radius:7px;border:1px solid #d1d4cd;background:#d1d4cd;color:#3b463d;cursor:pointer}.ps-token-apply{background:#92b195;border-color:#92b195;color:#fff}.ps-token-apply:disabled{opacity:.6;cursor:progress}.ps-token-status{margin:0}.ps-token-status.err{color:#b3412f}.ps-token-note{margin:0;color:#6d766e}.ps-locale{position:relative;display:inline-flex}.ps-locale-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12px;padding:4px 9px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.ps-locale-btn:hover{background:#d1d4cd}.ps-flag{font-size:13px;line-height:1}.ps-locale-name{max-width:11ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-dots{color:#6d766e}.ps-locale-menu{position:absolute;top:100%;right:0;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.ps-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.ps-locale-opt:hover,.ps-locale-opt.active{background:#d1d4cd;color:#3b463d}.ps-locale-opt.active .ps-locale-name{color:#92b195}.ps-locale-en{margin-left:auto;font-size:11px;color:#6d766e}.ps-toolbar{display:flex;flex-direction:column;gap:8px;padding:10px 12px 0}.ps-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ps-bar-t{flex:1 1 auto;min-width:0}.ps-bar-t b{font-size:15px;color:#3b463d}.ps-bar-sub{display:block;font-size:12px;color:#6d766e}.ps-btn{font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer;white-space:nowrap}.ps-btn:hover{background:#d1d4cd}.ps-embed{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid #d1d4cd;border-radius:8px;background:#f3f3f1}.ps-embed label{font-size:12px;color:#6d766e;display:flex;justify-content:space-between;align-items:center}.ps-embed textarea{width:100%;height:58px;font:11px/1.35 ui-monospace,Menlo,monospace;border:1px solid #d1d4cd;border-radius:6px;background:#fff;color:#3b463d;padding:6px;resize:vertical}.ps-stage{position:absolute;top:10px;right:12px;bottom:12px;left:12px;border:1px solid #d1d4cd;border-radius:10px;overflow:hidden;background:#f3f3f1}.ps-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h: 0}.ps-slot{position:relative;min-height:100%}.ps-slot>*{min-height:0;max-height:none}.ps-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.ps-hint.err{color:#f87171}.ps-hint small{color:#6d766e}",To="plugin-studio:mapbox-token",Co="plugin-studio:mapbox-token-url";function Ao(e){try{return typeof window<"u"&&window.localStorage.getItem(e)||""}catch{return""}}function Oo(e,t){try{t?window.localStorage.setItem(e,t):window.localStorage.removeItem(e)}catch{}}const ld=` :host { display:block; position:relative; height:var(--plugin-studio-height, 85vh); min-height:480px; } :host([hidden]) { display:none; } .ps-logo { display:inline-flex; align-items:center; } .ps-logo svg { display:block; } .ps-count { color:#6d766e; } .ps-token { position:relative; display:inline-flex; } .ps-token-dot { width:8px; height:8px; border-radius:50%; background:#b8bdb4; } .ps-token-dot.is-yours, .ps-token-dot.is-url { background:#92b195; } .ps-token-dot.is-built { background:#c9b36a; } .ps-token-dot.is-none { background:#d27a6a; } .ps-token-panel { position:absolute; top:100%; inset-inline-end:0; margin-top:4px; z-index:30; width:min(340px, 90vw); display:flex; flex-direction:column; gap:8px; padding:12px; border:1px solid #d1d4cd; border-radius:10px; background:#ffffff; box-shadow:0 12px 32px rgba(0,0,0,.25); color:#3b463d; font-size:12px; } .ps-token-label { display:flex; flex-direction:column; gap:4px; } .ps-token-input { font:inherit; font-size:12px; padding:6px 8px; border:1px solid #d1d4cd; border-radius:7px; background:#f8f8f6; color:#3b463d; font-family:ui-monospace, SFMono-Regular, Menlo, monospace; } .ps-token-row { display:flex; gap:8px; } .ps-token-apply, .ps-token-clear { font:inherit; font-size:12px; padding:5px 12px; border-radius:7px; border:1px solid #d1d4cd; background:#d1d4cd; color:#3b463d; cursor:pointer; } .ps-token-apply { background:#92b195; border-color:#92b195; color:#fff; } .ps-token-apply:disabled { opacity:.6; cursor:progress; } .ps-token-status { margin:0; } .ps-token-status.err { color:#b3412f; } .ps-token-note { margin:0; color:#6d766e; } .ps-locale { position:relative; display:inline-flex; } .ps-locale-btn { display:inline-flex; align-items:center; gap:6px; font:inherit; font-size:12px; padding:4px 9px; border:1px solid #d1d4cd; border-radius:8px; background:#d1d4cd; color:#3b463d; cursor:pointer; } .ps-locale-btn:hover { background:#d1d4cd; } .ps-flag { font-size:13px; line-height:1; } .ps-locale-name { max-width:11ch; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .ps-dots { color:#6d766e; } .ps-locale-menu { position:absolute; top:100%; right:0; margin-top:4px; z-index:30; min-width:180px; list-style:none; padding:6px; border:1px solid #d1d4cd; border-radius:10px; background:#ffffff; box-shadow:0 12px 32px rgba(0,0,0,.5); max-height:320px; overflow:auto; } .ps-locale-opt { display:flex; align-items:center; gap:8px; width:100%; text-align:left; font:inherit; font-size:13px; padding:7px 9px; border:0; border-radius:7px; background:none; color:#3b463d; cursor:pointer; } .ps-locale-opt:hover { background:#d1d4cd; color:#3b463d; } .ps-locale-opt.active { background:#d1d4cd; color:#3b463d; } .ps-locale-opt.active .ps-locale-name { color:#92b195; } .ps-locale-en { margin-left:auto; font-size:11px; color:#6d766e; } .ps-toolbar { display:flex; flex-direction:column; gap:8px; padding:10px 12px 0; } .ps-bar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; } .ps-bar-t { flex:1 1 auto; min-width:0; } .ps-bar-t b { font-size:15px; color:#3b463d; } .ps-bar-sub { display:block; font-size:12px; color:#6d766e; } .ps-btn { font:inherit; font-size:12px; padding:5px 10px; border:1px solid #d1d4cd; border-radius:8px; background:#d1d4cd; color:#3b463d; cursor:pointer; white-space:nowrap; } .ps-btn:hover { background:#d1d4cd; } .ps-embed { display:flex; flex-direction:column; gap:6px; padding:8px; border:1px solid #d1d4cd; border-radius:8px; background:#f3f3f1; } .ps-embed label { font-size:12px; color:#6d766e; display:flex; justify-content:space-between; align-items:center; } .ps-embed textarea { width:100%; height:58px; font:11px/1.35 ui-monospace,Menlo,monospace; border:1px solid #d1d4cd; border-radius:6px; background:#ffffff; color:#3b463d; padding:6px; resize:vertical; } .ps-stage { position:absolute; inset:10px 12px 12px; border:1px solid #d1d4cd; border-radius:10px; overflow:hidden; background:#f3f3f1; } /* ★ THE PANE OWNS THE SCROLL (BUG-STILL-CANNOT-SCROLL-DOWN-TO-THE-GRID, measured 2026-09-22). A scroll-stack composite (dashboard-plus-grid: an 88svh dashboard band + the people-groups grid below it) mounted here measured scrollHeight 3380 / clientHeight 769 — 2611px of real, mounted, populated content that NO element could scroll to, because this pane was position:absolute; inset:0 with the default overflow:visible inside a .ps-stage that is overflow:hidden. Document scrollHeight was 900, exactly === clientHeight, so a wheel gesture had nothing to move. The identical composite is PERFECT standalone (document 2960/900, wheel reaches 2060) because its generated leaf gives the DOCUMENT the scroll — a host that pins the pane to viewport height has to own that scroll itself. auto, not scroll: only a pane whose content really exceeds its box gets a scrollbar, so the map tabs stay scrollbar-free (see the dvh floor note below, which is what makes that true). */ .ps-pane { position:absolute; inset:0; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; --profile-min-h:0; } /* NOT absolute-inset: that pinned the mount point to the pane's height and re-created the same trap one level down (an absolutely positioned child cannot grow a scroll container). min-height:100% keeps a fixed-viewport map filling the pane while letting a taller composite grow it. */ .ps-slot { position:relative; min-height:100%; } /* ★ THE dvh FLOOR, NEUTRALISED FOR HOSTED ELEMENTS (measured 2026-09-22, caught by the regression check on this very fix — my first version of the rule above was WRONG about this). I claimed a fixed-viewport map "fills this box exactly, so auto is a no-op for it". It is not. doxa-research-map ships .profile-loader { height:100%; min-height:100dvh }, and those two resolve against DIFFERENT bases: height:100% against the pane (769px here, because the pane sits inside a .ps-stage inset by the studio chrome), min-height:100dvh against the VIEWPORT (900px). The floor wins, the element is 131px taller than its container, and overflow:auto then correctly reported a scrollbar on a map tab that should never have one — a real regression my reasoning had ruled out. The dvh floor is deliberate and must stay for the STANDALONE leaf, where it fixes the opposite bug (BUG-UPG100-NESTED-ELEMENTS-ZERO-HEIGHT: min-height:100% against a body with no definite height collapses to 0). It is only wrong HERE, where the pane is a definite box shorter than the viewport. So neutralise it on the hosted subtree rather than editing the map: a direct child of a studio pane is bounded by the PANE. A taller-than-viewport scroll-stack composite is unaffected — it grows past this floor on its own content, which is what makes the grid reachable. ★ AND --profile-min-h:0 ON THE PANE, which is the half that actually does the work. Sizing the host is NOT enough, and measuring proved it: the host correctly became 769px while the pane still overflowed by exactly 131px, because .profile-loader lives INSIDE the map's SHADOW ROOT at min-height:100dvh and a host-page SELECTOR cannot reach into a shadow tree. Inherited properties CAN, so ProfileLoader.vue now reads min-height:var(--profile-min-h, 100dvh) and this pane sets it to 0 — the floor keeps its default everywhere else, including every standalone leaf where it still fixes BUG-UPG100. ★ NOT overflow:clip, which I tried first and MEASURED as wrong: it bounded the map (good) but ALSO bounded the scroll-stack composite, whose host box is the pane height while its content is 3380px — so the grid became unreachable again and the gate went straight back to 0px scrolled. One blanket rule cannot serve both; the variable targets the actual culprit instead. */ .ps-slot > * { min-height:0; max-height:none; } .ps-hint { position:absolute; inset:0; display:grid; place-items:center; text-align:center; color:#6d766e; font-size:13px; padding:20px; } .ps-hint.err { color:#f87171; } .ps-hint small { color:#6d766e; } `,rd={5:"App shell · nested-mfe-spa",4:"Composite element",3:"Multi-view element",2:"Preset element",1:"Single element"},Ni={"nested-mfe-spa":0,"nested-elements-mfe":1,monolithic:2,parameterized:3,single:4},ad=e=>Ni[e]!=null?5-Ni[e]:1,cd={5:"nested-mfe-spa",4:"nested-elements-mfe",3:"monolithic",2:"parameterized",1:"single"},Pn={5:"monitor",4:"tree",3:"layers",2:"grid",1:"embed"},Ri=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid"]),Ui=new Set(["big-picture"]),Po={};for(const[e,t]of Object.entries(Object.assign({"../../library/i18n/locales/ar/studio.json":ga,"../../library/i18n/locales/de/studio.json":ba,"../../library/i18n/locales/en/studio.json":ma,"../../library/i18n/locales/es/studio.json":va,"../../library/i18n/locales/fr/studio.json":xa,"../../library/i18n/locales/hi/studio.json":ya,"../../library/i18n/locales/it/studio.json":ka,"../../library/i18n/locales/pt/studio.json":$a,"../../library/i18n/locales/ro/studio.json":wa,"../../library/i18n/locales/ru/studio.json":Sa,"../../library/i18n/locales/zh/studio.json":_a}))){const o=e.match(/locales\/([^/]+)\/studio\.json$/);o&&(Po[o[1]]=t)}const dd={"doxa-maps-spa/doxa-maps-spa":"Research Gallery"},jt={};function pd(e,t){return jt[e]||(jt[e]=new Promise((o,n)=>{const s=document.createElement("script");s.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(s.type="module"),s.onload=()=>o(),s.onerror=()=>{delete jt[e],n(new Error("failed to load "+e))},document.head.appendChild(s)})),jt[e]}function ud(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((o,n)=>setTimeout(()=>{customElements.get(e)||n(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const fd=fo({name:"PluginStudio",inheritAttrs:!1,components:{VerticalTabsLayout:kc,StudioTree:ed},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},provider:{type:String,default:""},heading:{type:String,default:""},tokenUrl:{type:String,default:""},tk:{type:String,default:""}},setup(){return Tn(ld,"plugin-studio"),{injectedBase:Tt("psTreeBase","")}},data(){return{activeKey:"",embedOpen:!1,locale:this.initialLocale(),localeOpen:!1,tokenOpen:!1,tokenBusy:!1,tokenErr:"",tokenDraft:Ao(To),urlDraft:Ao(Co),userTk:Ao(To),userTokenUrl:Ao(Co),fetchedTk:"",bakedTk:"",switcherLangs:td,rows:[],manifestBundles:[]}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},flatRows(){return this.rows},groups(){const e={};for(const t of this.rows)(e[t.cap]=e[t.cap]||[]).push(t);return[5,4,3,2,1].filter(t=>e[t]&&e[t].length).map(t=>({cap:t,label:rd[t]||"capability "+t,rows:e[t]}))},treeSections(){const e=new Map(this.compositionTrees.map(t=>[t.nodes[0].selects,t]));return this.groups.map(t=>{const o=[];for(const n of t.rows){const s=e.get(n.key);if(o.push({id:n.key,parent:"",depth:0,label:n.label,desc:n.tag,icon:n.icon,target:n.key,kids:s?s.nodes[0].kids:0,title:n.label+" · <"+n.tag+"> · CAP "+n.cap+" "+this.tr("cap"+n.cap)}),!s)continue;const l=i=>i===0?n.key:n.key+">"+i;for(const i of s.nodes.slice(1))o.push({id:l(i.id),parent:l(i.ancestors[i.ancestors.length-1]),depth:i.depth,label:i.label,part:!!i.part,target:i.selects||"",icon:i.part?"dots":Pn[i.cap]||"embed",desc:i.part?this.tr("noStandalone"):"cap "+i.cap+" · "+i.tag,kids:i.kids||0,title:i.part?i.label+" · "+this.tr("partOf",{name:n.label}):i.label+" · <"+i.tag+"> · CAP "+i.cap+" "+this.tr("cap"+i.cap)})}return{id:"cap-"+t.cap,cap:t.cap,label:this.tr("cap"+t.cap),title:this.tr("cap"+t.cap)+" · "+(cd[t.cap]||""),icon:Pn[t.cap]||"embed",nodes:o}})},compositionTrees(){const e=[],t=(o,n,s,l,i)=>{const r=this.manifestBundles.find(k=>k.bundle===o.bundle),a=o.cap>=4&&r&&r.composes||[],u=[],p=[],h=new Set;for(const k of a){const _=this.resolveRef(k,o.bundle);if(!_){p.push(k);continue}_.key===o.key||h.has(_.key)||(h.add(_.key),u.push(_))}u.sort((k,_)=>_.cap-k.cap||k.label.localeCompare(_.label));for(const k of u){const _={id:l.length,label:k.label,tag:k.tag,cap:k.cap,selects:k.key,depth:n+1,ancestors:i,kids:0};l.push(_);const D=l.length;s.has(k.key)||t(k,n+1,new Set([...s,k.key]),l,[...i,_.id]),_.kids=l.filter((R,ee)=>ee>=D&&R.depth===n+2).length}for(const k of p)l.push({id:l.length,label:k,part:!0,selects:o.key,depth:n+1,ancestors:i,kids:0})};for(const o of this.manifestBundles){if(!o.composes||!o.composes.length||Ui.has(o.bundle))continue;const n=this.rows.find(l=>l.bundle===o.bundle);if(!n)continue;const s=[{id:0,label:n.label,tag:n.tag,cap:n.cap,selects:n.key,depth:0,ancestors:[]}];t(n,0,new Set([n.key]),s,[0]),s[0].kids=s.filter(l=>l.depth===1).length,s.length>1&&e.push({bundle:o.bundle,nodes:s})}return e},active(){return this.rows.find(e=>e.key===this.activeKey)||null},effectiveTk(){return this.userTk||this.fetchedTk||this.tk||this.cfg.tk||this.bakedTk||""},tokenSource(){return this.userTk?"yours":this.fetchedTk?"url":this.tk||this.cfg.tk||this.bakedTk?"built":"none"},tokenStatus(){return this.tokenSource==="yours"?this.tr("tokenSourceYours"):this.tokenSource==="url"?this.tr("tokenSourceUrl",{url:this.userTokenUrl}):this.tokenSource==="built"?this.tr("tokenSourceBuilt"):this.tr("tokenSourceNone")},countLabel(){const e=new Set(this.rows.map(t=>t.bundle)).size;return this.tr("countLabel",{bundles:e,elements:this.rows.length})},activeLang(){return od(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},uiDir(){return(this.activeLang&&this.activeLang.dir)==="rtl"?"rtl":"ltr"}},mounted(){this.bakedTk=typeof window<"u"&&window.MAP_TOKEN||"",this.userTk?this.publishToken():this.userTokenUrl&&this.fetchToken(this.userTokenUrl).then(e=>{e&&(this.fetchedTk=e,this.publishToken())}).catch(()=>{}),this.loadManifest()},methods:{async fetchToken(e){if(!/^https?:\/\//i.test(e))throw new Error("not an http(s) URL");let t;try{t=await fetch(e,{cache:"no-store",credentials:"omit"})}catch{throw new Error("the request was blocked or the server did not answer (cross-origin rules can do this)")}if(!t.ok)throw new Error("HTTP "+t.status);const o=(await t.text()).trim();let n=o;try{const s=JSON.parse(o);n=s&&(s.token||s.tk||s.accessToken)||(typeof s=="string"?s:"")}catch{}if(n=String(n||"").trim(),n.startsWith("sk."))throw new Error(this.tr("tokenSecret"));if(!n.startsWith("pk."))throw new Error(this.tr("tokenNotPk"));return n},async applyToken(){this.tokenErr="";const e=this.tokenDraft,t=this.urlDraft;if(e.startsWith("sk.")){this.tokenErr=this.tr("tokenSecret");return}if(e&&!e.startsWith("pk.")){this.tokenErr=this.tr("tokenNotPk");return}this.tokenBusy=!0;try{let o="";if(!e&&t)try{o=await this.fetchToken(t)}catch(n){this.tokenErr=this.tr("tokenUrlFailed",{why:n.message});return}this.userTk=e,this.userTokenUrl=e?"":t,this.fetchedTk=o,Oo(To,this.userTk),Oo(Co,this.userTokenUrl),this.publishToken(),this.remountPanes(),this.tokenOpen=!1}finally{this.tokenBusy=!1}},clearToken(){this.tokenDraft="",this.urlDraft="",this.tokenErr="",this.userTk="",this.userTokenUrl="",this.fetchedTk="",Oo(To,""),Oo(Co,""),this.publishToken(),this.remountPanes()},publishToken(){typeof window>"u"||(this.effectiveTk?window.MAP_TOKEN=this.effectiveTk:"MAP_TOKEN"in window&&delete window.MAP_TOKEN)},remountPanes(){for(const t of this.rows)t.mounted&&this.releaseRow(t);const e=this.active;e&&this.$nextTick(()=>{this.activeKey===e.key&&this.mountElement(e)})},tr(e,t){const o=(this.locale||"en").split("-")[0];let n=(Po[this.locale]||{})[e]||(Po[o]||{})[e]||(Po.en||{})[e]||e;if(t)for(const s in t)n=n.split("{"+s+"}").join(String(t[s]));return n},resolveRef(e,t){return t&&this.rows.find(o=>o.key===t+"/"+e)||this.rows.find(o=>o.key===e)||this.rows.find(o=>o.tag===e)||this.rows.find(o=>o.bundle===e)||null},setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},initialLocale(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}let t="";try{const n=new URLSearchParams(window.location.search);t=n.get("lang")||n.get("locale")||""}catch{}const o=e&&(e.locale||e.lang)||t;return o?On(o):nd()},paneConfig(e,t){const o={profile:e.profile,instanceId:"ps-"+e.key.replace(/\//g,"-"),locale:t};this.effectiveTk&&(o.tk=this.effectiveTk),(this.tokenUrl||this.cfg.tokenUrl)&&(o.tokenUrl=this.tokenUrl||this.cfg.tokenUrl);const n=this.provider||this.cfg.provider;return(n==="maplibre"||n==="mapbox")&&(o.provider=n),this.base&&(o.treeBase=this.base),o},setLocale(e){this.locale=e,this.localeOpen=!1,sd(e);try{const t=this.active,o=this._slots&&this._slots[this.activeKey],n=o&&o.firstElementChild;n&&n.setAttribute&&t&&n.setAttribute("profile-config",JSON.stringify(this.paneConfig(t,e)))}catch{}},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},loadManifest(){const e=o=>{this.manifestBundles=o&&o.bundles||[],this.rows=this.rowsFromManifest(o),this.route()},t=typeof window<"u"&&window.__psBaked||null;if(typeof fetch=="function"&&typeof location<"u"&&location.protocol!=="file:"){const o=this.base?this.resolve("manifest.json"):"../manifest.json";fetch(o,{cache:"no-cache"}).then(n=>n.ok?n.json():null).then(n=>e(n||t||{bundles:[]})).catch(()=>e(t||{bundles:[]}))}else e(t||{bundles:[]})},rowsFromManifest(e){const t=[];for(const o of e.bundles||[])if(!(o.bundle==="plugin-studio"||Ui.has(o.bundle)))for(const n of o.profiles||[]){const s=o.elements&&o.elements.length?o.elements:null,l=(n.element&&(!s||s.includes(n.element))?n.element:null)||s&&s[0]||n.element||o.bundle,i=ad(n.type||"single"),r=Ri.has(l)||Ri.has(o.bundle);t.push({key:o.bundle+"/"+n.profile,bundle:o.bundle,label:dd[o.bundle+"/"+n.profile]||n.profile,profile:n.profile,tag:l,cap:i,icon:Pn[i]||"embed",description:n.description||"",heavy:r,bundleJs:o.scriptUrl||o.bundle+"/"+o.bundle+".js",embed:n.embed&&n.embed.script||"",mounted:!1,state:"idle",error:""})}return t.sort((o,n)=>n.cap-o.cap||o.bundle.localeCompare(n.bundle)||o.label.localeCompare(n.label)),t},route(){const e=(typeof location<"u"&&location.hash||"").replace(/^#\/?/,"");if(e&&this.rows.some(o=>o.key===e)){this.select(e);return}const t=this.readLastTab();if(t&&this.rows.some(o=>o.key===t)){this.select(t);return}this.rows.length&&this.select(this.rows[0].key)},storageKey(){return"dx-studio-tab:"+(typeof location<"u"&&location.pathname||"")},readLastTab(){try{return window.localStorage.getItem(this.storageKey())||""}catch{return""}},writeLastTab(e){try{window.localStorage.setItem(this.storageKey(),e)}catch{}},select(e){if(!this.rows.some(n=>n.key===e))return;const t=this.activeKey;if(this.activeKey=e,this.embedOpen=!1,t&&t!==e){const n=this.rows.find(s=>s.key===t);n&&n.heavy&&n.mounted&&this.releaseRow(n)}const o=this.rows.find(n=>n.key===e);o&&(this.writeLastTab(e),o.mounted||this.$nextTick(()=>{this.activeKey===o.key&&this.mountElement(o)}))},releaseRow(e){try{const t=this._slots&&this._slots[e.key];t&&(t.innerHTML="")}catch{}this._slots&&delete this._slots[e.key],e.mounted=!1,e.state="idle",e.error=""},mountElement(e){e.mounted=!0,e.state="loading";const t=this.resolve(e.bundleJs);pd(t).then(()=>ud(e.tag)).then(()=>{try{if(e.heavy&&this.activeKey!==e.key){e.mounted=!1,e.state="idle";return}const o=this._slots&&this._slots[e.key];if(!o){e.state="error",e.error="no slot";return}o.innerHTML="";const n=document.createElement(e.tag);n.setAttribute("profile-config",JSON.stringify(this.paneConfig(e,this.locale))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(n),e.state="ready"}catch(o){e.state="error",e.error="mount failed: "+(o&&o.message||String(o))}}).catch(o=>{e.state="error",e.error=o&&o.message||String(o)})},copyText(e,t){const o=()=>{const n=t.textContent;t.textContent=this.tr("copied"),setTimeout(()=>{t.textContent=n},1200)};if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(e).then(o,()=>{});else try{const n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),o()}catch{}}}}),hd={class:"ps-count"},gd={class:"ps-token"},bd=["aria-expanded","title"],md={class:"ps-locale-name"},vd={class:"ps-token-label"},xd={class:"ps-token-label"},yd={class:"ps-token-row"},kd=["disabled"],$d={class:"ps-token-note"},wd={class:"ps-locale"},Sd=["aria-expanded","aria-label"],_d={class:"ps-flag"},Ld={class:"ps-locale-name"},Ed={key:0,class:"ps-locale-menu",role:"listbox"},Td=["aria-selected"],Cd=["onClick"],Ad={class:"ps-flag"},Od={class:"ps-locale-name"},Pd={class:"ps-locale-en"},Md={key:0,class:"ps-toolbar"},Nd={class:"ps-bar"},Rd={class:"ps-bar-t"},Ud={class:"ps-bar-sub"},Id={key:0},Hd=["aria-expanded"],Fd={key:0,class:"ps-embed"},Dd=["value"],jd={class:"ps-stage"},Vd=["hidden"],Bd={key:0,class:"ps-hint"},zd={key:1,class:"ps-hint err"},Kd={key:0,class:"ps-hint"};function Wd(e,t,o,n,s,l){const i=As("StudioTree"),r=As("VerticalTabsLayout");return L(),xo(r,{title:e.heading||e.tr("title"),dir:e.uiDir,"nav-label":e.tr("navLabel"),labels:{toggleList:e.tr("toggleList"),openViews:e.tr("openViews"),expandList:e.tr("expandList"),collapseList:e.tr("collapseList"),collapse:e.tr("collapse")},header:!0,active:e.activeKey,"onUpdate:active":e.select},{rail:ut(({collapsed:a,expand:u,pick:p})=>[ve(i,{sections:e.treeSections,active:e.activeKey,collapsed:a,expand:u,pick:p,strings:{filterPlaceholder:e.tr("filterPlaceholder"),collapseAll:e.tr("collapseAll"),noMatch:e.tr("noMatch"),treeLabel:e.tr("navLabel"),openSection:e.tr("openSection"),part:e.tr("part")}},null,8,["sections","active","collapsed","expand","pick","strings"])]),brand:ut(()=>[...t[8]||(t[8]=[y("span",{class:"ps-logo","aria-hidden":"true"},[y("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[y("path",{d:"M10 3v3M14 3v3M7 6h10v5a5 5 0 0 1-10 0V6Z"}),y("path",{d:"M12 16v5"})])],-1)])]),meta:ut(()=>[y("span",hd,T(e.countLabel),1),y("span",gd,[y("button",{type:"button",class:"ps-locale-btn ps-token-btn","aria-expanded":String(e.tokenOpen),title:e.tokenStatus,onClick:t[0]||(t[0]=a=>e.tokenOpen=!e.tokenOpen)},[t[9]||(t[9]=y("span",{"aria-hidden":"true"},"🔑",-1)),y("span",md,T(e.tr("mapToken")),1),y("span",{class:me(["ps-token-dot","is-"+e.tokenSource]),"aria-hidden":"true"},null,2)],8,bd),e.tokenOpen?(L(),E("form",{key:0,class:"ps-token-panel",onSubmit:t[4]||(t[4]=Ei((...a)=>e.applyToken&&e.applyToken(...a),["prevent"]))},[y("label",vd,[Xe(T(e.tr("tokenPaste"))+" ",1),ft(y("input",{class:"ps-token-input","onUpdate:modelValue":t[1]||(t[1]=a=>e.tokenDraft=a),placeholder:"pk.eyJ…",autocomplete:"off",spellcheck:"false"},null,512),[[En,e.tokenDraft,void 0,{trim:!0}]])]),y("label",xd,[Xe(T(e.tr("tokenUrlLabel"))+" ",1),ft(y("input",{class:"ps-token-input","onUpdate:modelValue":t[2]||(t[2]=a=>e.urlDraft=a),type:"url",placeholder:"https://doxa.life/api/maps/token",autocomplete:"off",spellcheck:"false"},null,512),[[En,e.urlDraft,void 0,{trim:!0}]])]),y("div",yd,[y("button",{type:"submit",class:"ps-token-apply",disabled:e.tokenBusy},T(e.tr("tokenApply")),9,kd),y("button",{type:"button",class:"ps-token-clear",onClick:t[3]||(t[3]=(...a)=>e.clearToken&&e.clearToken(...a))},T(e.tr("tokenClear")),1)]),y("p",{class:me(["ps-token-status",{err:!!e.tokenErr}]),role:"status"},T(e.tokenErr||e.tokenStatus),3),y("p",$d,T(e.tr("tokenStoredHere")),1)],32)):J("",!0)]),y("span",wd,[y("button",{type:"button",class:"ps-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":e.tr("changeLanguage"),onClick:t[5]||(t[5]=a=>e.localeOpen=!e.localeOpen)},[y("span",_d,T(e.activeLang.flag),1),y("span",Ld,T(e.activeLang.nativeName),1),t[10]||(t[10]=y("span",{class:"ps-dots","aria-hidden":"true"},"⋮",-1))],8,Sd),e.localeOpen?(L(),E("ul",Ed,[(L(!0),E(G,null,Be(e.switcherLangs,a=>(L(),E("li",{key:a.code,role:"option","aria-selected":String(a.code===e.locale)},[y("button",{type:"button",class:me(["ps-locale-opt",{active:a.code===e.locale}]),onClick:u=>e.setLocale(a.code)},[y("span",Ad,T(a.flag),1),y("span",Od,T(a.nativeName),1),y("span",Pd,T(a.name),1)],10,Cd)],8,Td))),128))])):J("",!0)])]),toolbar:ut(()=>[e.active?(L(),E("div",Md,[y("div",Nd,[y("div",Rd,[y("b",null,T(e.active.label),1),y("span",Ud,[Xe(T(e.active.bundle)+" · <"+T(e.active.tag)+">",1),e.active.description?(L(),E("span",Id," · "+T(e.active.description),1)):J("",!0)])]),e.active.embed?(L(),E("button",{key:0,type:"button",class:"ps-btn","aria-expanded":String(e.embedOpen),onClick:t[6]||(t[6]=a=>e.embedOpen=!e.embedOpen)},T(e.tr("copyEmbed")),9,Hd)):J("",!0)]),e.embedOpen&&e.active.embed?(L(),E("div",Fd,[y("label",null,[Xe(T(e.tr("scriptEmbed"))+" ",1),y("button",{type:"button",class:"ps-btn",onClick:t[7]||(t[7]=a=>e.copyText(e.active.embed,a.target))},T(e.tr("copy")),1)]),y("textarea",{readonly:"",value:e.active.embed},null,8,Dd)])):J("",!0)])):J("",!0)]),default:ut(()=>[y("div",jd,[(L(!0),E(G,null,Be(e.flatRows,a=>ft((L(),E("section",{key:a.key,class:"ps-pane",hidden:a.key!==e.activeKey},[!a.heavy||a.key===e.activeKey?(L(),E(G,{key:0},[y("div",{class:"ps-slot",ref_for:!0,ref:u=>e.setSlot(a.key,u)},null,512),a.state==="loading"?(L(),E("div",Bd,T(e.tr("loading",{name:a.label})),1)):a.state==="error"?(L(),E("div",zd,[Xe(T(e.tr("couldNotLoad",{name:a.label})),1),t[11]||(t[11]=y("br",null,null,-1)),y("small",null,T(a.error),1)])):J("",!0)],64)):J("",!0)],8,Vd)),[[$n,a.key===e.activeKey]])),128)),e.activeKey?J("",!0):(L(),E("div",Kd,T(e.tr("chooseElement")),1))])]),_:1},8,["title","dir","nav-label","labels","active","onUpdate:active"])}const qd=Cn(fd,[["render",Wd],["styles",[id]]]);function Yd(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Gd=Yd(),Xd=la(qd,{configureApp(e){e.provide("psTreeBase",Gd)}});typeof customElements<"u"&&!customElements.get("plugin-studio")&&customElements.define("plugin-studio",Xd)})();