378 lines
195 KiB
JavaScript
378 lines
195 KiB
JavaScript
(function(){"use strict";/**
|
||
* @vue/shared v3.5.42
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/function jo(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const B={},lt=[],we=()=>{},In=()=>!1,Gt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Jt=e=>e.startsWith("onUpdate:"),Q=Object.assign,Vo=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},Xi=Object.prototype.hasOwnProperty,U=(e,t)=>Xi.call(e,t),A=Array.isArray,Ye=e=>kt(e)==="[object Map]",Xt=e=>kt(e)==="[object Set]",Un=e=>kt(e)==="[object Date]",P=e=>typeof e=="function",J=e=>typeof e=="string",xe=e=>typeof e=="symbol",j=e=>e!==null&&typeof e=="object",Dn=e=>(j(e)||P(e))&&P(e.then)&&P(e.catch),Fn=Object.prototype.toString,kt=e=>Fn.call(e),Zi=e=>kt(e).slice(8,-1),Zt=e=>kt(e)==="[object Object]",zo=e=>J(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,yt=jo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qt=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Qi=/-\w/g,ne=Qt(e=>e.replace(Qi,t=>t.slice(1).toUpperCase())),el=/\B([A-Z])/g,me=Qt(e=>e.replace(el,"-$1").toLowerCase()),eo=Qt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Bo=Qt(e=>e?`on${eo(e)}`:""),Ue=(e,t)=>!Object.is(e,t),to=(e,...t)=>{for(let o=0;o<e.length;o++)e[o](...t)},jn=(e,t,o,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:o})},Ko=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Vn=e=>{const t=J(e)?Number(e):NaN;return isNaN(t)?e:t};let zn;const oo=()=>zn||(zn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $t(e){if(A(e)){const t={};for(let o=0;o<e.length;o++){const n=e[o],s=J(n)?sl(n):$t(n);if(s)for(const l in s)t[l]=s[l]}return t}else if(J(e)||j(e))return e}const tl=/;(?![^(]*\))/g,ol=/:([^]+)/,nl=/\/\*[^]*?\*\//g;function sl(e){const t={};return e.replace(nl,"").split(tl).forEach(o=>{if(o){const n=o.split(ol);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function he(e){let t="";if(J(e))t=e;else if(A(e))for(let o=0;o<e.length;o++){const n=he(e[o]);n&&(t+=n+" ")}else if(j(e))for(const o in e)e[o]&&(t+=o+" ");return t.trim()}const il=jo("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Bn(e){return!!e||e===""}function ll(e,t){if(e.length!==t.length)return!1;let o=!0;for(let n=0;o&&n<e.length;n++)o=no(e[n],t[n]);return o}function Kn(e,t){if(e.size!==t.size)return!1;const o=Array.from(t),n=new Uint8Array(o.length);for(const s of e){let l=-1;for(let i=0;i<o.length;i++)if(!n[i]&&no(s,o[i])){l=i;break}if(l<0)return!1;n[l]=1}return!0}function no(e,t){if(e===t)return!0;let o=Un(e),n=Un(t);if(o||n)return o&&n?e.getTime()===t.getTime():!1;if(o=xe(e),n=xe(t),o||n)return e===t;if(o=A(e),n=A(t),o||n)return o&&n?ll(e,t):!1;if(o=j(e),n=j(t),o||n){if(!o||!n)return!1;if(o=Ye(e),n=Ye(t),o||n||(o=Xt(e),n=Xt(t),o||n))return o&&n?Kn(e,t):!1;const s=Object.keys(e).length,l=Object.keys(t).length;if(s!==l)return!1;for(const i in e){const r=e.hasOwnProperty(i),a=t.hasOwnProperty(i);if(r&&!a||!r&&a||!no(e[i],t[i]))return!1}}return String(e)===String(t)}const Wn=e=>!!(e&&e.__v_isRef===!0),T=e=>J(e)?e:e==null?"":A(e)||j(e)&&(e.toString===Fn||!P(e.toString))?Wn(e)?T(e.value):JSON.stringify(e,qn,2):String(e),qn=(e,t)=>Wn(t)?qn(e,t.value):Ye(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[n,s],l)=>(o[Wo(n,l)+" =>"]=s,o),{})}:Xt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Wo(o))}:xe(t)?Wo(t):j(t)&&!A(t)&&!Zt(t)?String(t):t,Wo=(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 rl{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;t<o;t++)n[t].pause()}for(t=0,o=this.effects.length;t<o;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,o;if(this.scopes){const s=this.scopes.slice();for(t=0,o=s.length;t<o;t++)s[t].resume()}const n=this.effects.slice();for(t=0,o=n.length;t<o;t++)n[t].resume()}}run(t){if(this._active){const o=se;try{return se=this,t()}finally{se=o}}}on(){++this._on===1&&(this.prevScope=se,se=this)}off(){if(this._on>0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,n;for(o=0,n=this.effects.length;o<n;o++)this.effects[o].stop();for(this.effects.length=0,o=0,n=this.cleanups.length;o<n;o++)this.cleanups[o]();if(this.cleanups.length=0,this.scopes){const s=this.scopes.slice();for(o=0,n=s.length;o<n;o++)s[o].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0}}}function al(){return se}let W;const qo=new WeakSet;class Yn{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,se&&(se.active?se.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,qo.has(this)&&(qo.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Jn(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,ts(this),Xn(this);const t=W,o=ke;W=this,ke=!0;try{return this.fn()}finally{Zn(this),W=t,ke=o,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Xo(t);this.deps=this.depsTail=void 0,ts(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?qo.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Jo(this)&&this.run()}get dirty(){return Jo(this)}}let Gn=0,wt,St;function Jn(e,t=!1){if(e.flags|=8,t){e.next=St,St=e;return}e.next=wt,wt=e}function Yo(){Gn++}function Go(){if(--Gn>0)return;if(St){let t=St;for(St=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;wt;){let t=wt;for(wt=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 Xn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Zn(e){let t,o=e.depsTail,n=o;for(;n;){const s=n.prevDep;n.version===-1?(n===o&&(o=s),Xo(n),cl(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=s}e.deps=t,e.depsTail=o}function Jo(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Qn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Qn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===_t)||(e.globalVersion=_t,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Jo(e))))return;e.flags|=2;const t=e.dep,o=W,n=ke;W=e,ke=!0;try{Xn(e);const s=e.fn(e._value);(t.version===0||Ue(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{W=o,ke=n,Zn(e),e.flags&=-3}}function Xo(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)Xo(l,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function cl(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let ke=!0;const es=[];function Se(){es.push(ke),ke=!1}function _e(){const e=es.pop();ke=e===void 0?!0:e}function ts(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=W;W=void 0;try{t()}finally{W=o}}}let _t=0;class dl{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 os{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||!ke||W===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==W)o=this.activeLink=new dl(W,this),W.deps?(o.prevDep=W.depsTail,W.depsTail.nextDep=o,W.depsTail=o):W.deps=W.depsTail=o,ns(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++,_t++,this.notify(t)}notify(t){Yo();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Go()}}}function ns(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)ns(n)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Zo=new WeakMap,Ze=Symbol(""),Qo=Symbol(""),Lt=Symbol("");function re(e,t,o){if(ke&&W){let n=Zo.get(e);n||Zo.set(e,n=new Map);let s=n.get(o);s||(n.set(o,s=new os),s.map=n,s.key=o),s.track()}}function De(e,t,o,n,s,l){const i=Zo.get(e);if(!i){_t++;return}const r=a=>{a&&a.trigger()};if(Yo(),t==="clear")i.forEach(r);else{const a=A(e),u=a&&zo(o);if(a&&o==="length"){const p=Number(n);i.forEach((h,y)=>{(y==="length"||y===Lt||!xe(y)&&y>=p)&&r(h)})}else switch((o!==void 0||i.has(void 0))&&r(i.get(o)),u&&r(i.get(Lt)),t){case"add":a?u&&r(i.get("length")):(r(i.get(Ze)),Ye(e)&&r(i.get(Qo)));break;case"delete":a||(r(i.get(Ze)),Ye(e)&&r(i.get(Qo)));break;case"set":Ye(e)&&r(i.get(Ze));break}}Go()}function rt(e){const t=D(e);return t===e?t:(re(t,"iterate",Lt),ye(e)?t:t.map(je))}function so(e){return re(e=D(e),"iterate",Lt),e}function Le(e,t){return Ge(e)?at(Qe(e)?je(t):t):je(t)}const pl={__proto__:null,[Symbol.iterator](){return en(this,Symbol.iterator,e=>Le(this,e))},concat(...e){return rt(this).concat(...e.map(t=>A(t)?rt(t):t))},entries(){return en(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 tn(this,"includes",e)},indexOf(...e){return tn(this,"indexOf",e)},join(e){return rt(this).join(e)},lastIndexOf(...e){return tn(this,"lastIndexOf",e)},map(e,t){return Fe(this,"map",e,t,void 0,arguments)},pop(){return Et(this,"pop")},push(...e){return Et(this,"push",e)},reduce(e,...t){return ss(this,"reduce",e,t)},reduceRight(e,...t){return ss(this,"reduceRight",e,t)},shift(){return Et(this,"shift")},some(e,t){return Fe(this,"some",e,t,void 0,arguments)},splice(...e){return Et(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 Et(this,"unshift",e)},values(){return en(this,"values",e=>Le(this,e))}};function en(e,t,o){const n=so(e),s=n[t]();return n!==e&&!ye(e)&&(s._next=s.next,s.next=()=>{const l=s._next();return l.done||(l.value=o(l.value)),l}),s}const ul=Array.prototype;function Fe(e,t,o,n,s,l){const i=so(e),r=i!==e&&!ye(e),a=i[t];if(a!==ul[t]){const h=a.apply(e,l);return r?je(h):h}let u=o;i!==e&&(r?u=function(h,y){return o.call(this,Le(e,h),y,e)}:o.length>2&&(u=function(h,y){return o.call(this,h,y,e)}));const p=a.call(i,u,n);return r&&s?s(p):p}function ss(e,t,o,n){const s=so(e),l=s!==e&&!ye(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 tn(e,t,o){const n=D(e);re(n,"iterate",Lt);const s=n[t](...o);return(s===-1||s===!1)&&ln(o[0])?(o[0]=D(o[0]),n[t](...o)):s}function Et(e,t,o=[]){Se(),Yo();const n=D(e)[t].apply(e,o);return Go(),_e(),n}const fl=jo("__proto__,__v_isRef,__isVue"),is=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(xe));function hl(e){xe(e)||(e=String(e));const t=D(this);return re(t,"has",e),t.hasOwnProperty(e)}class ls{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?us:ps:l?ds:cs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=A(t);if(!s){let a;if(i&&(a=pl[o]))return a;if(o==="hasOwnProperty")return hl}const r=Reflect.get(t,o,ae(t)?t:n);if((xe(o)?is.has(o):fl(o))||(s||re(t,"get",o),l))return r;if(ae(r)){const a=i&&zo(o)?r:r.value;return s&&j(a)?sn(a):a}return j(r)?s?sn(r):nn(r):r}}class rs extends ls{constructor(t=!1){super(!1,t)}set(t,o,n,s){let l=t[o];const i=A(t)&&zo(o);if(!this._isShallow){const u=Ge(l);if(!ye(n)&&!Ge(n)&&(l=D(l),n=D(n)),!i&&ae(l)&&!ae(n))return u||(l.value=n),!0}const r=i?Number(o)<t.length:U(t,o),a=Reflect.set(t,o,n,ae(t)?t:s);return t===D(s)&&a&&(r?Ue(n,l)&&De(t,"set",o,n):De(t,"add",o,n)),a}deleteProperty(t,o){const n=U(t,o);t[o];const s=Reflect.deleteProperty(t,o);return s&&n&&De(t,"delete",o,void 0),s}has(t,o){const n=Reflect.has(t,o);return(!xe(o)||!is.has(o))&&re(t,"has",o),n}ownKeys(t){return re(t,"iterate",A(t)?"length":Ze),Reflect.ownKeys(t)}}class as extends ls{constructor(t=!1){super(!0,t)}set(t,o){return!0}deleteProperty(t,o){return!0}}const gl=new rs,bl=new as,ml=new rs(!0),vl=new as(!0),on=e=>e,io=e=>Reflect.getPrototypeOf(e);function xl(e,t,o){return function(...n){const s=this.__v_raw,l=D(s),i=Ye(l),r=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=s[e](...n),p=o?on:t?at:je;return!t&&re(l,"iterate",a?Qo:Ze),Q(Object.create(u),{next(){const{value:h,done:y}=u.next();return y?{value:h,done:y}:{value:r?[p(h[0]),p(h[1])]:p(h),done:y}}})}}function lo(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function kl(e,t){const o={get(s){const l=this.__v_raw,i=D(l),r=D(s);e||(Ue(s,r)&&re(i,"get",s),re(i,"get",r));const{has:a}=io(i),u=t?on:e?at:je;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(D(s),"iterate",Ze),s.size},has(s){const l=this.__v_raw,i=D(l),r=D(s);return e||(Ue(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=D(r),u=t?on:e?at:je;return!e&&re(a,"iterate",Ze),r.forEach((p,h)=>s.call(l,u(p),u(h),i))}};return Q(o,e?{add:lo("add"),set:lo("set"),delete:lo("delete"),clear:lo("clear")}:{add(s){const l=D(this),i=io(l),r=D(s),a=!t&&!ye(s)&&!Ge(s)?r:s;return i.has.call(l,a)||Ue(s,a)&&i.has.call(l,s)||Ue(r,a)&&i.has.call(l,r)||(l.add(a),De(l,"add",a,a)),this},set(s,l){!t&&!ye(l)&&!Ge(l)&&(l=D(l));const i=D(this),{has:r,get:a}=io(i);let u=r.call(i,s);u||(s=D(s),u=r.call(i,s));const p=a.call(i,s);return i.set(s,l),u?Ue(l,p)&&De(i,"set",s,l):De(i,"add",s,l),this},delete(s){const l=D(this),{has:i,get:r}=io(l);let a=i.call(l,s);a||(s=D(s),a=i.call(l,s)),r&&r.call(l,s);const u=l.delete(s);return a&&De(l,"delete",s,void 0),u},clear(){const s=D(this),l=s.size!==0,i=s.clear();return l&&De(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{o[s]=xl(s,e,t)}),o}function ro(e,t){const o=kl(e,t);return(n,s,l)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?n:Reflect.get(U(o,s)&&s in n?o:n,s,l)}const yl={get:ro(!1,!1)},$l={get:ro(!1,!0)},wl={get:ro(!0,!1)},Sl={get:ro(!0,!0)},cs=new WeakMap,ds=new WeakMap,ps=new WeakMap,us=new WeakMap;function _l(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function nn(e){return Ge(e)?e:ao(e,!1,gl,yl,cs)}function Ll(e){return ao(e,!1,ml,$l,ds)}function sn(e){return ao(e,!0,bl,wl,ps)}function kp(e){return ao(e,!0,vl,Sl,us)}function ao(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=_l(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 Ge(e)?Qe(e.__v_raw):!!(e&&e.__v_isReactive)}function Ge(e){return!!(e&&e.__v_isReadonly)}function ye(e){return!!(e&&e.__v_isShallow)}function ln(e){return e?!!e.__v_raw:!1}function D(e){const t=e&&e.__v_raw;return t?D(t):e}function El(e){return!U(e,"__v_skip")&&Object.isExtensible(e)&&jn(e,"__v_skip",!0),e}const je=e=>j(e)?nn(e):e,at=e=>j(e)?sn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function fs(e){return ae(e)?e.value:e}const Tl={get:(e,t,o)=>t==="__v_raw"?e:fs(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 hs(e){return Qe(e)?e:new Proxy(e,Tl)}class Ml{constructor(t,o,n){this.fn=t,this.setter=o,this._value=void 0,this.dep=new os(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=_t-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 Jn(this,!0),!0}get value(){const t=this.dep.track();return Qn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Nl(e,t,o=!1){let n,s;return P(e)?n=e:(n=e.get,s=e.set),new Ml(n,s,o)}const co={},po=new WeakMap;let et;function Cl(e,t=!1,o=et){if(o){let n=po.get(o);n||po.set(o,n=[]),n.push(e)}}function Al(e,t,o=B){const{immediate:n,deep:s,once:l,scheduler:i,augmentJob:r,call:a}=o,u=C=>s?C:ye(C)||s===!1||s===0?Ve(C,1):Ve(C);let p,h,y,_,F=!1,H=!1;if(ae(e)?(h=()=>e.value,F=ye(e)):Qe(e)?(h=()=>u(e),F=!0):A(e)?(H=!0,F=e.some(C=>Qe(C)||ye(C)),h=()=>e.map(C=>{if(ae(C))return C.value;if(Qe(C))return u(C);if(P(C))return a?a(C,2):C()})):P(e)?t?h=a?()=>a(e,2):e:h=()=>{if(y){Se();try{y()}finally{_e()}}const C=et;et=p;try{return a?a(e,3,[_]):e(_)}finally{et=C}}:h=we,t&&s){const C=h,oe=s===!0?1/0:s;h=()=>Ve(C(),oe)}const ee=al(),X=()=>{p.stop(),ee&&ee.active&&Vo(ee.effects,p)};if(l&&t){const C=t;t=(...oe)=>{const Ae=C(...oe);return X(),Ae}}let I=H?new Array(e.length).fill(co):co;const V=C=>{if(!(!(p.flags&1)||!p.dirty&&!C))if(t){const oe=p.run();if(C||s||F||(H?oe.some((Ae,Oe)=>Ue(Ae,I[Oe])):Ue(oe,I))){y&&y();const Ae=et;et=p;try{const Oe=[oe,I===co?void 0:H&&I[0]===co?[]:I,_];I=oe,a?a(t,3,Oe):t(...Oe)}finally{et=Ae}}}else p.run()};return r&&r(V),p=new Yn(h),p.scheduler=i?()=>i(V,!1):V,_=C=>Cl(C,!1,p),y=p.onStop=()=>{const C=po.get(p);if(C){if(a)a(C,4);else for(const oe of C)oe();po.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 Ve(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))Ve(e.value,t,o);else if(A(e))for(let n=0;n<e.length;n++)Ve(e[n],t,o);else if(Xt(e)||Ye(e))e.forEach(n=>{Ve(n,t,o)});else if(Zt(e)){for(const n in e)Ve(e[n],t,o);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ve(e[n],t,o)}return e}/**
|
||
* @vue/runtime-core v3.5.42
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/const Tt=[];let rn=!1;function yp(e,...t){if(rn)return;rn=!0,Se();const o=Tt.length?Tt[Tt.length-1].component:null,n=o&&o.appContext.config.warnHandler,s=Ol();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 <${gi(o,l.type)}>`).join(`
|
||
`),s]);else{const l=[`[Vue warn]: ${e}`,...t];s.length&&l.push(`
|
||
`,...Pl(s)),console.warn(...l)}_e(),rn=!1}function Ol(){let e=Tt[Tt.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 Pl(e){const t=[];return e.forEach((o,n)=>{t.push(...n===0?[]:[`
|
||
`],...Hl(o))}),t}function Hl({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,s=` at <${gi(e.component,e.type,n)}`,l=">"+o;return e.props?[s,...Rl(e.props),l]:[s+l]}function Rl(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(n=>{t.push(...gs(n,e[n]))}),o.length>3&&t.push(" ..."),t}function gs(e,t,o){return J(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:ae(t)?(t=gs(e,D(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):P(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=D(t),o?t:[`${e}=`,t])}function ct(e,t,o,n){try{return n?e(...n):e()}catch(s){uo(s,t,o)}}function $e(e,t,o,n){if(P(e)){const s=ct(e,t,o,n);return s&&Dn(s)&&s.catch(l=>{uo(l,t,o)}),s}if(A(e)){const s=[];for(let l=0;l<e.length;l++)s.push($e(e[l],t,o,n));return s}}function uo(e,t,o,n=!0){const s=t?t.vnode:null,{errorHandler:l,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||B;if(t){let r=t.parent;const a=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${o}`;for(;r;){const p=r.ec;if(p){for(let h=0;h<p.length;h++)if(p[h](e,a,u)===!1)return}r=r.parent}if(l){Se(),ct(l,null,10,[e,a,u]),_e();return}}Il(e,o,s,n,i)}function Il(e,t,o,n=!0,s=!1){if(s)throw e;console.error(e)}const de=[];let Ee=-1;const dt=[];let Je=null,pt=0;const bs=Promise.resolve();let fo=null;function ms(e){const t=fo||bs;return e?t.then(this?e.bind(this):e):t}function Ul(e){let t=Ee+1,o=de.length;for(;t<o;){const n=t+o>>>1,s=de[n],l=Mt(s);l<e||l===e&&s.flags&2?t=n+1:o=n}return t}function an(e){if(!(e.flags&1)){const t=Mt(e),o=de[de.length-1];!o||!(e.flags&2)&&t>=Mt(o)?de.push(e):de.splice(Ul(t),0,e),e.flags|=1,vs()}}function vs(){fo||(fo=bs.then(ys))}function Dl(e){if(!A(e))Je&&e.id===-1?Je.splice(pt+1,0,e):e.flags&1||(dt.push(e),e.flags|=1);else for(let t=0;t<e.length;t++)dt.push(e[t]);vs()}function xs(e,t,o=Ee+1){for(;o<de.length;o++){const n=de[o];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;de.splice(o,1),o--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function ks(e){if(dt.length){const t=[...new Set(dt)].sort((o,n)=>Mt(o)-Mt(n));if(dt.length=0,Je){for(let o=0;o<t.length;o++)Je.push(t[o]);return}for(Je=t,pt=0;pt<Je.length;pt++){const o=Je[pt];o.flags&4&&(o.flags&=-2),o.flags&8||o(),o.flags&=-2}Je=null,pt=0}}const Mt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ys(e){try{for(Ee=0;Ee<de.length;Ee++){const t=de[Ee];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),ct(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ee<de.length;Ee++){const t=de[Ee];t&&(t.flags&=-2)}Ee=-1,de.length=0,ks(),fo=null,(de.length||dt.length)&&ys()}}let ie=null,$s=null;function ho(e){const t=ie;return ie=e,$s=e&&e.type.__scopeId||null,t}function ut(e,t=ie,o){if(!t||e._n)return e;const n=(...s)=>{n._d&&li(-1);const l=ho(t),i=Be.length;let r;try{r=e(...s)}finally{for(let a=Be.length;a>i;a--)$n();ho(l),n._d&&li(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=Lo(ie),n=e.dirs||(e.dirs=[]);for(let s=0;s<t.length;s++){let[l,i,r,a=B]=t[s];l&&(P(l)&&(l={mounted:l,updated:l}),l.deep&&Ve(i),n.push({dir:l,instance:o,value:i,oldValue:void 0,arg:r,modifiers:a}))}return e}function tt(e,t,o,n){const s=e.dirs,l=t&&t.dirs;for(let i=0;i<s.length;i++){const r=s[i];l&&(r.oldValue=l[i].value);let a=r.dir[n];a&&(Se(),$e(a,o,8,[e.el,r,e,t]),_e())}}function Fl(e,t){if(ce){let o=ce.provides;const n=ce.parent&&ce.parent.provides;n===o&&(o=ce.provides=Object.create(n)),o[e]=t}}function Nt(e,t,o=!1){const n=ci();if(n||gt){let s=gt?gt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(s&&e in s)return s[e];if(arguments.length>1)return o&&P(t)?t.call(n&&n.proxy):t}}const jl=Symbol.for("v-scx"),Vl=()=>Nt(jl);function cn(e,t,o){return ws(e,t,o)}function ws(e,t,o=B){const{immediate:n,deep:s,flush:l,once:i}=o,r=Q({},o),a=t&&n||!t&&l!=="post";let u;if(Dt){if(l==="sync"){const _=Vl();u=_.__watcherHandles||(_.__watcherHandles=[])}else if(!a){const _=()=>{};return _.stop=we,_.resume=we,_.pause=we,_}}const p=ce;r.call=(_,F,H)=>$e(_,p,F,H);let h=!1;l==="post"?r.scheduler=_=>{fe(_,p&&p.suspense)}:l!=="sync"&&(h=!0,r.scheduler=(_,F)=>{F?_():an(_)}),r.augmentJob=_=>{t&&(_.flags|=4),h&&(_.flags|=2,p&&(_.id=p.uid,_.i=p))};const y=Al(e,t,r);return Dt&&(u?u.push(y):a&&y()),y}function zl(e,t,o){const n=this.proxy,s=J(e)?e.includes(".")?Ss(n,e):()=>n[e]:e.bind(n,n);let l;P(t)?l=t:(l=t.handler,o=t);const i=Ut(this),r=ws(s,l.bind(n),o);return i(),r}function Ss(e,t){const o=t.split(".");return()=>{let n=e;for(let s=0;s<o.length&&n;s++)n=n[o[s]];return n}}const Bl=Symbol("_vte"),go=e=>e.__isTeleport,dn=Symbol("_leaveCb");function Kl(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Me){t=o;break}}return t}function _s(e){if(!un(e))return go(e.type)&&e.children?Kl(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&&P(o.default))return o.default()}}function pn(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;pn(go(o.type)&&_s(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 bo(e,t){return P(e)?Q({name:e.name},t,{setup:e}):e}function Ls(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Es(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const mo=new WeakMap;function Ct(e,t,o,n,s=!1){if(A(e)){e.forEach((H,ee)=>Ct(H,t&&(A(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?Lo(n.component):n.el,i=s?null:l,{i:r,r:a}=e,u=t&&t.r,p=r.refs===B?r.refs={}:r.refs,h=r.setupState,y=D(h),_=h===B?In:H=>Es(p,H)?!1:U(y,H),F=(H,ee)=>!(ee&&Es(p,ee));if(u!=null&&u!==a){if(Ts(t),J(u))p[u]=null,_(u)&&(h[u]=null);else if(ae(u)){const H=t;F(u,H.k)&&(u.value=null),H.k&&(p[H.k]=null)}}if(P(a))ct(a,r,12,[i,p]);else{const H=J(a),ee=ae(a);if(H||ee){const X=()=>{if(e.f){const I=H?_(a)?h[a]:p[a]:F()||!e.k?a.value:p[e.k];if(s)A(I)&&Vo(I,l);else if(A(I))I.includes(l)||I.push(l);else if(H)p[a]=[l],_(a)&&(h[a]=p[a]);else{const V=[l];F(a,e.k)&&(a.value=V),e.k&&(p[e.k]=V)}}else H?(p[a]=i,_(a)&&(h[a]=i)):ee&&(F(a,e.k)&&(a.value=i),e.k&&(p[e.k]=i))};if(i){const I=()=>{X(),mo.delete(e)};I.id=-1,mo.set(e,I),fe(I,o)}else Ts(e),X()}}}function Ts(e){const t=mo.get(e);t&&(t.flags|=8,mo.delete(e))}oo().requestIdleCallback,oo().cancelIdleCallback;const ht=e=>!!e.type.__asyncLoader,un=e=>e.type.__isKeepAlive;function Wl(e,t){Ms(e,"a",t)}function ql(e,t){Ms(e,"da",t)}function Ms(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(vo(t,n,o),o){let s=o.parent;for(;s&&s.parent;)un(s.parent.vnode)&&Yl(n,t,o,s),s=s.parent}}function Yl(e,t,o,n){const s=vo(t,e,n,!0);Cs(()=>{Vo(n[t],s)},o)}function vo(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 ze=e=>(t,o=ce)=>{(!Dt||e==="sp")&&vo(e,(...n)=>t(...n),o)},Gl=ze("bm"),Ns=ze("m"),Jl=ze("bu"),Xl=ze("u"),Zl=ze("bum"),Cs=ze("um"),Ql=ze("sp"),er=ze("rtg"),tr=ze("rtc");function or(e,t=ce){vo("ec",e,t)}const nr="components";function As(e,t){return ir(nr,e,!0,t)||e}const sr=Symbol.for("v-ndc");function ir(e,t,o=!0,n=!1){const s=ie||ce;if(s){const l=s.type;{const r=hi(l,!1);if(r&&(r===t||r===ne(t)||r===eo(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[eo(ne(t))])}function Te(e,t,o,n){let s;const l=o,i=A(e);if(i||J(e)){const r=i&&Qe(e);let a=!1,u=!1;r&&(a=!ye(e),u=Ge(e),e=so(e)),s=new Array(e.length);for(let p=0,h=e.length;p<h;p++)s[p]=t(a?u?at(je(e[p])):je(e[p]):e[p],p,void 0,l)}else if(typeof e=="number"){s=new Array(e);for(let r=0;r<e;r++)s[r]=t(r+1,r,void 0,l)}else if(j(e))if(e[Symbol.iterator])s=Array.from(e,(r,a)=>t(r,a,void 0,l));else{const r=Object.keys(e);s=new Array(r.length);for(let a=0,u=r.length;a<u;a++){const p=r[a];s[a]=t(e[p],p,a,l)}}else s=[];return s}function At(e,t,o,n,s,l){if(o==null&&(o={}),ie.ce||ie.parent&&ht(ie.parent)&&ie.parent.ce){const u=l!=null&&o.key==null?Q({},o,{key:l}):o,p=Object.keys(u).length>0;return t!=="default"&&(u.name=t),L(),$o(Y,null,[ve("slot",u,n)],p?-2:64)}let i=e[t];i&&i._c&&(i._d=!1);const r=Be.length;L();let a;try{const u=i&&Ps(i(o)),p=o.key||l||u&&u.key;a=$o(Y,{key:(p&&!xe(p)?p:`_${t}`)+(!u&&n?"_fb":"")},u||(n?n():[]),u&&e._===1?64:-2)}catch(u){for(let p=Be.length;p>r;p--)$n();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=>wn(t)?!(t.type===Me||t.type===Y&&!Ps(t.children)):!0)?e:null}const fn=e=>e?pi(e)?Lo(e):fn(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=>fn(e.parent),$root:e=>fn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Us(e),$forceUpdate:e=>e.f||(e.f=()=>{an(e.update)}),$nextTick:e=>e.n||(e.n=ms.bind(e.proxy)),$watch:e=>zl.bind(e)}),hn=(e,t)=>e!==B&&!e.__isScriptSetup&&U(e,t),lr={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 y=i[t];if(y!==void 0)switch(y){case 1:return n[t];case 2:return s[t];case 4:return o[t];case 3:return l[t]}else{if(hn(n,t))return i[t]=1,n[t];if(s!==B&&U(s,t))return i[t]=2,s[t];if(U(l,t))return i[t]=3,l[t];if(o!==B&&U(o,t))return i[t]=4,o[t];gn&&(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!==B&&U(o,t))return i[t]=4,o[t];if(h=a.config.globalProperties,U(h,t))return h[t]},set({_:e},t,o){const{data:n,setupState:s,ctx:l}=e;return hn(s,t)?(s[t]=o,!0):n!==B&&U(n,t)?(n[t]=o,!0):U(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!==B&&r[0]!=="$"&&U(e,r)||hn(t,r)||U(l,r)||U(n,r)||U(Ot,r)||U(s.config.globalProperties,r)||(a=i.__cssModules)&&a[r])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:U(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function Hs(e){return A(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let gn=!0;function rr(e){const t=Us(e),o=e.proxy,n=e.ctx;gn=!1,t.beforeCreate&&Rs(t.beforeCreate,e,"bc");const{data:s,computed:l,methods:i,watch:r,provide:a,inject:u,created:p,beforeMount:h,mounted:y,beforeUpdate:_,updated:F,activated:H,deactivated:ee,beforeDestroy:X,beforeUnmount:I,destroyed:V,unmounted:C,render:oe,renderTracked:Ae,renderTriggered:Oe,errorCaptured:Xe,serverPrefetch:Ro,expose:nt,inheritAttrs:Kt,components:Io,directives:Uo,filters:Hn}=t;if(u&&ar(u,n,null),i)for(const Z in i){const q=i[Z];P(q)&&(n[Z]=q.bind(o))}if(s){const Z=s.call(o,o);j(Z)&&(e.data=nn(Z))}if(gn=!0,l)for(const Z in l){const q=l[Z],st=P(q)?q.bind(o,o):P(q.get)?q.get.bind(o,o):we,Do=!P(q)&&P(q.set)?q.set.bind(o):we,it=Kr({get:st,set:Do});Object.defineProperty(n,Z,{enumerable:!0,configurable:!0,get:()=>it.value,set:Pe=>it.value=Pe})}if(r)for(const Z in r)Is(r[Z],n,o,Z);if(a){const Z=P(a)?a.call(o):a;Reflect.ownKeys(Z).forEach(q=>{Fl(q,Z[q])})}p&&Rs(p,e,"c");function ue(Z,q){A(q)?q.forEach(st=>Z(st.bind(o))):q&&Z(q.bind(o))}if(ue(Gl,h),ue(Ns,y),ue(Jl,_),ue(Xl,F),ue(Wl,H),ue(ql,ee),ue(or,Xe),ue(tr,Ae),ue(er,Oe),ue(Zl,I),ue(Cs,C),ue(Ql,Ro),A(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),Kt!=null&&(e.inheritAttrs=Kt),Io&&(e.components=Io),Uo&&(e.directives=Uo),Ro&&Ls(e)}function ar(e,t,o=we){A(e)&&(e=bn(e));for(const n in e){const s=e[n];let l;j(s)?"default"in s?l=Nt(s.from||n,s.default,!0):l=Nt(s.from||n):l=Nt(s),ae(l)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>l.value,set:i=>l.value=i}):t[n]=l}}function Rs(e,t,o){$e(A(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,o)}function Is(e,t,o,n){let s=n.includes(".")?Ss(o,n):()=>o[n];if(J(e)){const l=t[e];P(l)&&cn(s,l)}else if(P(e))cn(s,e.bind(o));else if(j(e))if(A(e))e.forEach(l=>Is(l,t,o,n));else{const l=P(e.handler)?e.handler.bind(o):t[e.handler];P(l)&&cn(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=>xo(a,u,i,!0)),xo(a,t,i)),j(t)&&l.set(t,a),a}function xo(e,t,o,n=!1){const{mixins:s,extends:l}=t;l&&xo(e,l,o,!0),s&&s.forEach(i=>xo(e,i,o,!0));for(const i in t)if(!(n&&i==="expose")){const r=cr[i]||o&&o[i];e[i]=r?r(e[i],t[i]):t[i]}return e}const cr={data:Ds,props:Fs,emits:Fs,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:pr,provide:Ds,inject:dr};function Ds(e,t){return t?e?function(){return Q(P(e)?e.call(this,this):e,P(t)?t.call(this,this):t)}:t:e}function dr(e,t){return Pt(bn(e),bn(t))}function bn(e){if(A(e)){const t={};for(let o=0;o<e.length;o++)t[e[o]]=e[o];return t}return e}function pe(e,t){return e?[...new Set([].concat(e,t))]:t}function Pt(e,t){return e?Q(Object.create(null),e,t):t}function Fs(e,t){return e?A(e)&&A(t)?[...new Set([...e,...t])]:Q(Object.create(null),Hs(e),Hs(t??{})):t}function pr(e,t){if(!e)return t;if(!t)return e;const o=Q(Object.create(null),e);for(const n in t)o[n]=pe(e[n],t[n]);return o}function js(){return{app:null,config:{isNativeTag:In,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ur=0;function fr(e,t){return function(n,s=null){P(n)||(n=Q({},n)),s!=null&&!j(s)&&(s=null);const l=js(),i=new WeakSet,r=[];let a=!1;const u=l.app={_uid:ur++,_component:n,_props:s,_container:null,_context:l,_instance:null,version:Wr,get config(){return l.config},set config(p){},use(p,...h){return i.has(p)||(p&&P(p.install)?(i.add(p),p.install(u,...h)):P(p)&&(i.add(p),p(u,...h))),u},mixin(p){return l.mixins.includes(p)||l.mixins.push(p),u},component(p,h){return h?(l.components[p]=h,u):l.components[p]},directive(p,h){return h?(l.directives[p]=h,u):l.directives[p]},mount(p,h,y){if(!a){const _=u._ceVNode||ve(n,s);return _.appContext=l,y===!0?y="svg":y===!1&&(y=void 0),e(_,p,y),a=!0,u._container=p,p.__vue_app__=u,Lo(_.component)}},onUnmount(p){r.push(p)},unmount(){a&&($e(r,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(p,h){return l.provides[p]=h,u},runWithContext(p){const h=gt;gt=u;try{return p()}finally{gt=h}}};return u}}let gt=null;const hr=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ne(t)}Modifiers`]||e[`${me(t)}Modifiers`];function gr(e,t,...o){if(e.isUnmounted)return;const n=e.vnode.props||B;let s=o;const l=t.startsWith("update:"),i=l&&hr(n,t.slice(7));i&&(i.trim&&(s=o.map(p=>J(p)?p.trim():p)),i.number&&(s=s.map(Ko)));let r,a=n[r=Bo(t)]||n[r=Bo(ne(t))];!a&&l&&(a=n[r=Bo(me(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 br=new WeakMap;function Vs(e,t,o=!1){const n=o?br:t.emitsCache,s=n.get(e);if(s!==void 0)return s;const l=e.emits;let i={},r=!1;if(!P(e)){const a=u=>{const p=Vs(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):(A(l)?l.forEach(a=>i[a]=null):Q(i,l),j(e)&&n.set(e,i),i)}function ko(e,t){return!e||!Gt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),U(e,t[0].toLowerCase()+t.slice(1))||U(e,me(t))||U(e,t))}function $p(){}function zs(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:y,setupState:_,ctx:F,inheritAttrs:H}=e,ee=ho(e);let X,I;try{if(o.shapeFlag&4){const C=s||n,oe=C;X=Ne(u.call(oe,C,p,h,_,y,F)),I=r}else{const C=t;X=Ne(C.length>1?C(h,{attrs:r,slots:i,emit:a}):C(h,null)),I=t.props?r:mr(r)}}catch(C){Be.length=0,uo(C,e,1),X=ve(Me)}let V=X;if(I&&H!==!1){const C=Object.keys(I),{shapeFlag:oe}=V;C.length&&oe&7&&(l&&C.some(Jt)&&(I=vr(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 C=go(V.type)&&_s(V)||V;pn(C,o.transition)}return X=V,ho(ee),X}const mr=e=>{let t;for(const o in e)(o==="class"||o==="style"||Gt(o))&&((t||(t={}))[o]=e[o]);return t},vr=(e,t)=>{const o={};for(const n in e)(!Jt(n)||!(n.slice(9)in t))&&(o[n]=e[n]);return o};function xr(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?Bs(n,i,u):!!i;if(a&8){const p=t.dynamicProps;for(let h=0;h<p.length;h++){const y=p[h];if(Ks(i,n,y)&&!ko(u,y))return!0}}}else return(s||r)&&(!r||!r.$stable)?!0:n===i?!1:n?i?Bs(n,i,u):!0:!!i;return!1}function Bs(e,t,o){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let s=0;s<n.length;s++){const l=n[s];if(Ks(t,e,l)&&!ko(o,l))return!0}return!1}function Ks(e,t,o){const n=e[o],s=t[o];return o==="style"&&j(n)&&j(s)?!no(n,s):n!==s}function kr({vnode:e,parent:t,suspense:o},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.suspense.vnode.el=s.el=n,e=s),s===e)(e=t.vnode).el=n,t=t.parent;else break}o&&o.activeBranch===e&&(o.vnode.el=n)}const Ws={},qs=()=>Object.create(Ws),Ys=e=>Object.getPrototypeOf(e)===Ws;function yr(e,t,o,n=!1){const s={},l=qs();e.propsDefaults=Object.create(null),Gs(e,t,s,l);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);o?e.props=n?s:Ll(s):e.type.props?e.props=s:e.props=l,e.attrs=l}function $r(e,t,o,n){const{props:s,attrs:l,vnode:{patchFlag:i}}=e,r=D(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<p.length;h++){let y=p[h];if(ko(e.emitsOptions,y))continue;const _=t[y];if(a)if(U(l,y))_!==l[y]&&(l[y]=_,u=!0);else{const F=ne(y);s[F]=mn(a,r,F,_,e,!1)}else _!==l[y]&&(l[y]=_,u=!0)}}}else{Gs(e,t,s,l)&&(u=!0);let p;for(const h in r)(!t||!U(t,h)&&((p=me(h))===h||!U(t,p)))&&(a?o&&(o[h]!==void 0||o[p]!==void 0)&&(s[h]=mn(a,r,h,void 0,e,!0)):delete s[h]);if(l!==r)for(const h in l)(!t||!U(t,h))&&(delete l[h],u=!0)}u&&De(e.attrs,"set","")}function Gs(e,t,o,n){const[s,l]=e.propsOptions;let i=!1,r;if(t)for(let a in t){if(yt(a))continue;const u=t[a];let p;s&&U(s,p=ne(a))?!l||!l.includes(p)?o[p]=u:(r||(r={}))[p]=u:ko(e.emitsOptions,a)||(!(a in n)||u!==n[a])&&(n[a]=u,i=!0)}if(l){const a=D(o),u=r||B;for(let p=0;p<l.length;p++){const h=l[p];o[h]=mn(s,a,h,u[h],e,!U(u,h))}}return i}function mn(e,t,o,n,s,l){const i=e[o];if(i!=null){const r=U(i,"default");if(r&&n===void 0){const a=i.default;if(i.type!==Function&&!i.skipFactory&&P(a)){const{propsDefaults:u}=s;if(o in u)n=u[o];else{const p=Ut(s);n=u[o]=a.call(null,t),p()}}else n=a;s.ce&&s.ce._setProp(o,n)}i[0]&&(l&&!r?n=!1:i[1]&&(n===""||n===me(o))&&(n=!0))}return n}const wr=new WeakMap;function Js(e,t,o=!1){const n=o?wr:t.propsCache,s=n.get(e);if(s)return s;const l=e.props,i={},r=[];let a=!1;if(!P(e)){const p=h=>{a=!0;const[y,_]=Js(h,t,!0);Q(i,y),_&&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(A(l))for(let p=0;p<l.length;p++){const h=ne(l[p]);Xs(h)&&(i[h]=B)}else if(l)for(const p in l){const h=ne(p);if(Xs(h)){const y=l[p],_=i[h]=A(y)||P(y)?{type:y}:Q({},y),F=_.type;let H=!1,ee=!0;if(A(F))for(let X=0;X<F.length;++X){const I=F[X],V=P(I)&&I.name;if(V==="Boolean"){H=!0;break}else V==="String"&&(ee=!1)}else H=P(F)&&F.name==="Boolean";_[0]=H,_[1]=ee,(H||U(_,"default"))&&r.push(h)}}const u=[i,r];return j(e)&&n.set(e,u),u}function Xs(e){return e[0]!=="$"&&!yt(e)}const vn=e=>e==="_"||e==="_ctx"||e==="$stable",xn=e=>A(e)?e.map(Ne):[Ne(e)],Sr=(e,t,o)=>{if(t._n)return t;const n=ut((...s)=>xn(t(...s)),o);return n._c=!1,n},Zs=(e,t,o)=>{const n=e._ctx;for(const s in e){if(vn(s))continue;const l=e[s];if(P(l))t[s]=Sr(s,l,n);else if(l!=null){const i=xn(l);t[s]=()=>i}}},Qs=(e,t)=>{const o=xn(t);e.slots.default=()=>o},ei=(e,t,o)=>{for(const n in t)(o||!vn(n))&&(e[n]=t[n])},_r=(e,t,o)=>{const n=e.slots=qs();if(e.vnode.shapeFlag&32){const s=t._;s?(ei(n,t,o),o&&jn(n,"_",s,!0)):Zs(t,n)}else t&&Qs(e,t)},Lr=(e,t,o)=>{const{vnode:n,slots:s}=e;let l=!0,i=B;if(n.shapeFlag&32){const r=t._;r?o&&r===1?l=!1:ei(s,t,o):(l=!t.$stable,Zs(t,s)),i=t}else t&&(Qs(e,t),i={default:1});if(l)for(const r in s)!vn(r)&&i[r]==null&&delete s[r]},fe=Cr;function Er(e){return Tr(e)}function Tr(e,t){const o=oo();o.__VUE__=!0;const{insert:n,remove:s,patchProp:l,createElement:i,createText:r,createComment:a,setText:u,setElementText:p,parentNode:h,nextSibling:y,setScopeId:_=we,insertStaticContent:F}=e,H=(c,d,f,v=null,m=null,g=null,w=void 0,$=null,k=!!d.dynamicChildren)=>{if(c===d)return;c&&!Rt(c,d)&&(v=Fo(c),Pe(c,m,g,!0),c=null),d.patchFlag===-2&&(k=!1,d.dynamicChildren=null);const{type:b,ref:N,shapeFlag:S}=d;switch(b){case yo:ee(c,d,f,v);break;case Me:X(c,d,f,v);break;case yn:c==null&&I(d,f,v,w);break;case Y:Io(c,d,f,v,m,g,w,$,k);break;default:S&1?oe(c,d,f,v,m,g,w,$,k):S&6?Uo(c,d,f,v,m,g,w,$,k):(S&64||S&128)&&b.process(c,d,f,v,m,g,w,$,k,qt)}N!=null&&m?Ct(N,c&&c.ref,g,d||c,!d):N==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]=F(c.children,d,f,v,c.el,c.anchor)},V=({el:c,anchor:d},f,v)=>{let m;for(;c&&c!==d;)m=y(c),n(c,f,v),c=m;n(d,f,v)},C=({el:c,anchor:d})=>{let f;for(;c&&c!==d;)f=y(c),s(c),c=f;s(d)},oe=(c,d,f,v,m,g,w,$,k)=>{if(d.type==="svg"?w="svg":d.type==="math"&&(w="mathml"),c==null)Ae(d,f,v,m,g,w,$,k);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Ro(c,d,m,g,w,$,k)}finally{b&&b._endPatch()}}},Ae=(c,d,f,v,m,g,w,$)=>{let k,b;const{props:N,shapeFlag:S,transition:M,dirs:O}=c;if(k=c.el=i(c.type,g,N&&N.is,N),S&8?p(k,c.children):S&16&&Xe(c.children,k,null,v,m,kn(c,g),w,$),O&&tt(c,null,v,"created"),Oe(k,c,c.scopeId,w,v),N){for(const K in N)K!=="value"&&!yt(K)&&l(k,K,null,N[K],g,v);"value"in N&&l(k,"value",null,N.value,g),(b=N.onVnodeBeforeMount)&&Ce(b,v,c)}O&&tt(c,null,v,"beforeMount");const R=Mr(m,M);R&&M.beforeEnter(k),n(k,d,f),((b=N&&N.onVnodeMounted)||R||O)&&fe(()=>{try{b&&Ce(b,v,c),R&&M.enter(k),O&&tt(c,null,v,"mounted")}finally{}},m)},Oe=(c,d,f,v,m)=>{if(f&&_(c,f),v)for(let g=0;g<v.length;g++)_(c,v[g]);if(m){let g=m.subTree;if(d===g||ii(g.type)&&(g.ssContent===d||g.ssFallback===d)){const w=m.vnode;Oe(c,w,w.scopeId,w.slotScopeIds,m.parent)}}},Xe=(c,d,f,v,m,g,w,$,k=0)=>{for(let b=k;b<c.length;b++){const N=c[b]=$?We(c[b]):Ne(c[b]);H(null,N,d,f,v,m,g,w,$)}},Ro=(c,d,f,v,m,g,w)=>{const $=d.el=c.el;let{patchFlag:k,dynamicChildren:b,dirs:N}=d;k|=c.patchFlag&16;const S=c.props||B,M=d.props||B;let O;if(f&&ot(f,!1),(O=M.onVnodeBeforeUpdate)&&Ce(O,f,d,c),N&&tt(d,c,f,"beforeUpdate"),f&&ot(f,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&(k=0,w=!1,b=null),(S.innerHTML&&M.innerHTML==null||S.textContent&&M.textContent==null)&&p($,""),b?nt(c.dynamicChildren,b,$,f,v,kn(d,m),g):w||q(c,d,$,null,f,v,kn(d,m),g,!1),k>0){if(k&16)Kt($,S,M,f,m);else if(k&2&&S.class!==M.class&&l($,"class",null,M.class,m),k&4&&l($,"style",S.style,M.style,m),k&8){const R=d.dynamicProps;for(let K=0;K<R.length;K++){const z=R[K],te=S[z],le=M[z];(le!==te||z==="value")&&l($,z,te,le,m,f)}}k&1&&c.children!==d.children&&p($,d.children)}else!w&&b==null&&Kt($,S,M,f,m);((O=M.onVnodeUpdated)||N)&&fe(()=>{O&&Ce(O,f,d,c),N&&tt(d,c,f,"updated")},v)},nt=(c,d,f,v,m,g,w)=>{for(let $=0;$<d.length;$++){const k=c[$],b=d[$],N=k.el&&(k.type===Y||!Rt(k,b)||k.shapeFlag&198)?h(k.el):f;H(k,b,N,null,v,m,g,w,!0)}},Kt=(c,d,f,v,m)=>{if(d!==f){if(d!==B)for(const g in d)!yt(g)&&!(g in f)&&l(c,g,d[g],null,m,v);for(const g in f){if(yt(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)}},Io=(c,d,f,v,m,g,w,$,k)=>{const b=d.el=c?c.el:r(""),N=d.anchor=c?c.anchor:r("");let{patchFlag:S,dynamicChildren:M,slotScopeIds:O}=d;O&&($=$?$.concat(O):O),c==null?(n(b,f,v),n(N,f,v),Xe(d.children||[],f,N,m,g,w,$,k)):S>0&&S&64&&M&&c.dynamicChildren&&c.dynamicChildren.length===M.length?(nt(c.dynamicChildren,M,f,m,g,w,$),(d.key!=null||m&&d===m.subTree)&&ti(c,d,!0)):q(c,d,f,N,m,g,w,$,k)},Uo=(c,d,f,v,m,g,w,$,k)=>{d.slotScopeIds=$,c==null?d.shapeFlag&512?m.ctx.activate(d,f,v,w,k):Hn(d,f,v,m,g,w,k):Ki(c,d,k)},Hn=(c,d,f,v,m,g,w)=>{const $=c.component=Ir(c,v,m);if(un(c)&&($.ctx.renderer=qt),Ur($,!1,w),$.asyncDep){if(m&&m.registerDep($,ue,w),!c.el){const k=$.subTree=ve(Me);X(null,k,d,f),c.placeholder=k.el}}else ue($,c,d,f,m,g,w)},Ki=(c,d,f)=>{const v=d.component=c.component;if(xr(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:M,u:O,parent:R,vnode:K}=c;{const Re=oi(c);if(Re){S&&(S.el=K.el,Z(c,S,w)),Re.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},m)});return}}let z=S,te;ot(c,!1),S?(S.el=K.el,Z(c,S,w)):S=K,M&&to(M),(te=S.props&&S.props.onVnodeBeforeUpdate)&&Ce(te,R,S,K),ot(c,!0);const le=zs(c),He=c.subTree;c.subTree=le,H(He,le,h(He.el),Fo(He),c,m,g),S.el=le.el,z===null&&kr(c,le.el),O&&fe(O,m),(te=S.props&&S.props.onVnodeUpdated)&&fe(()=>Ce(te,R,S,K),m)}else{let S;const{el:M,props:O}=d,{bm:R,m:K,parent:z,root:te,type:le}=c,He=ht(d);ot(c,!1),R&&to(R),!He&&(S=O&&O.onVnodeBeforeMount)&&Ce(S,z,d),ot(c,!0);{te.ce&&te.ce._hasShadowRoot()&&te.ce._injectChildStyle(le,c.parent?c.parent.type:void 0);const Re=c.subTree=zs(c);H(null,Re,f,v,c,m,g),d.el=Re.el}if(K&&fe(K,m),!He&&(S=O&&O.onVnodeMounted)){const Re=d;fe(()=>Ce(S,z,Re),m)}(d.shapeFlag&256||z&&ht(z.vnode)&&z.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,d=f=v=null}};c.scope.on();const k=c.effect=new Yn($);c.scope.off();const b=c.update=k.run.bind(k),N=c.job=k.runIfDirty.bind(k);N.i=c,N.id=c.uid,k.scheduler=()=>an(N),ot(c,!0),b()},Z=(c,d,f)=>{d.component=c;const v=c.vnode.props;c.vnode=d,c.next=null,$r(c,d.props,v,f),Lr(c,d.children,f),Se(),xs(c),_e()},q=(c,d,f,v,m,g,w,$,k=!1)=>{const b=c&&c.children,N=c?c.shapeFlag:0,S=d.children,{patchFlag:M,shapeFlag:O}=d;if(M>0){if(M&128){Do(b,S,f,v,m,g,w,$,k);return}else if(M&256){st(b,S,f,v,m,g,w,$,k);return}}O&8?(N&16&&Wt(b,m,g),S!==b&&p(f,S)):N&16?O&16?Do(b,S,f,v,m,g,w,$,k):Wt(b,m,g,!0):(N&8&&p(f,""),O&16&&Xe(S,f,v,m,g,w,$,k))},st=(c,d,f,v,m,g,w,$,k)=>{c=c||lt,d=d||lt;const b=c.length,N=d.length,S=Math.min(b,N);let M;for(M=0;M<S;M++){const O=d[M]=k?We(d[M]):Ne(d[M]);H(c[M],O,f,null,m,g,w,$,k)}b>N?Wt(c,m,g,!0,!1,S):Xe(d,f,v,m,g,w,$,k,S)},Do=(c,d,f,v,m,g,w,$,k)=>{let b=0;const N=d.length;let S=c.length-1,M=N-1;for(;b<=S&&b<=M;){const O=c[b],R=d[b]=k?We(d[b]):Ne(d[b]);if(Rt(O,R))H(O,R,f,null,m,g,w,$,k);else break;b++}for(;b<=S&&b<=M;){const O=c[S],R=d[M]=k?We(d[M]):Ne(d[M]);if(Rt(O,R))H(O,R,f,null,m,g,w,$,k);else break;S--,M--}if(b>S){if(b<=M){const O=M+1,R=O<N?d[O].el:v;for(;b<=M;)H(null,d[b]=k?We(d[b]):Ne(d[b]),f,R,m,g,w,$,k),b++}}else if(b>M)for(;b<=S;)Pe(c[b],m,g,!0),b++;else{const O=b,R=b,K=new Map;for(b=R;b<=M;b++){const be=d[b]=k?We(d[b]):Ne(d[b]);be.key!=null&&K.set(be.key,b)}let z,te=0;const le=M-R+1;let He=!1,Re=0;const Yt=new Array(le);for(b=0;b<le;b++)Yt[b]=0;for(b=O;b<=S;b++){const be=c[b];if(te>=le){Pe(be,m,g,!0);continue}let Ie;if(be.key!=null)Ie=K.get(be.key);else for(z=R;z<=M;z++)if(Yt[z-R]===0&&Rt(be,d[z])){Ie=z;break}Ie===void 0?Pe(be,m,g,!0):(Yt[Ie-R]=b+1,Ie>=Re?Re=Ie:He=!0,H(be,d[Ie],f,null,m,g,w,$,k),te++)}const Yi=He?Nr(Yt):lt;for(z=Yi.length-1,b=le-1;b>=0;b--){const be=R+b,Ie=d[be],Gi=d[be+1],Ji=be+1<N?Gi.el||si(Gi):v;Yt[b]===0?H(null,Ie,f,Ji,m,g,w,$,k):He&&(z<0||b!==Yi[z]?it(Ie,f,Ji,2):z--)}}},it=(c,d,f,v,m=null)=>{const{el:g,type:w,transition:$,children:k,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,qt);return}if(w===Y){n(g,d,f);for(let S=0;S<k.length;S++)it(k[S],d,f,v);n(c.anchor,d,f);return}if(w===yn){V(c,d,f);return}if(v!==2&&b&1&&$)if(v===0)$.persisted&&!g[dn]?n(g,d,f):($.beforeEnter(g),n(g,d,f),fe(()=>$.enter(g),m));else{const{leave:S,delayLeave:M,afterLeave:O}=$,R=()=>{c.ctx.isUnmounted?s(g):n(g,d,f)},K=()=>{const z=g._isLeaving||!!g[dn];g._isLeaving&&g[dn](!0),$.persisted&&!z?R():S(g,()=>{R(),O&&O()})};M?M(g,R,K):K()}else n(g,d,f)},Pe=(c,d,f,v=!1,m=!1)=>{const{type:g,props:w,ref:$,children:k,dynamicChildren:b,shapeFlag:N,patchFlag:S,dirs:M,cacheIndex:O,memo:R}=c;if(S===-2&&(m=!1),$!=null&&(Se(),Ct($,null,f,c,!0),_e()),O!=null&&(d.renderCache[O]=void 0),N&256){d.ctx.deactivate(c);return}const K=N&1&&M,z=!ht(c);let te;if(z&&(te=w&&w.onVnodeBeforeUnmount)&&Ce(te,d,c),N&6)vp(c.component,f,v);else{if(N&128){c.suspense.unmount(f,v);return}K&&tt(c,null,d,"beforeUnmount"),N&64?c.type.remove(c,d,f,qt,v):b&&!b.hasOnce&&(g!==Y||S>0&&S&64)?Wt(b,d,f,!1,!0):(g===Y&&S&384||!m&&N&16)&&Wt(k,d,f),v&&Wi(c)}const le=R!=null&&O==null;(z&&(te=w&&w.onVnodeUnmounted)||K||le)&&fe(()=>{te&&Ce(te,d,c),K&&tt(c,null,d,"unmounted"),le&&(c.el=null)},f)},Wi=c=>{const{type:d,el:f,anchor:v,transition:m}=c;if(d===Y){mp(f,v);return}if(d===yn){C(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,k=()=>w(f,g);$?$(c.el,g,k):k()}else g()},mp=(c,d)=>{let f;for(;c!==d;)f=y(c),s(c),c=f;s(d)},vp=(c,d,f)=>{const{bum:v,scope:m,job:g,subTree:w,um:$,m:k,a:b}=c;ni(k),ni(b),v&&to(v),m.stop(),g&&(g.flags|=8,Pe(w,c,d,f)),$&&fe($,d),fe(()=>{c.isUnmounted=!0},d)},Wt=(c,d,f,v=!1,m=!1,g=0)=>{for(let w=g;w<c.length;w++)Pe(c[w],d,f,v,m)},Fo=c=>{if(c.shapeFlag&6)return Fo(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const d=y(c.anchor||c.el),f=d&&d[Bl];return f?y(f):d};let Rn=!1;const qi=(c,d,f)=>{let v;c==null?d._vnode&&(Pe(d._vnode,null,null,!0),v=d._vnode.component):H(d._vnode||null,c,d,null,null,null,f),d._vnode=c,Rn||(Rn=!0,xs(v),ks(),Rn=!1)},qt={p:H,um:Pe,m:it,r:Wi,mt:Hn,mc:Xe,pc:q,pbc:nt,n:Fo,o:e};return{render:qi,hydrate:void 0,createApp:fr(qi)}}function kn({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 Mr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ti(e,t,o=!1){const n=e.children,s=t.children;if(A(n)&&A(s))for(let l=0;l<n.length;l++){const i=n[l];let r=s[l];r.shapeFlag&1&&!r.dynamicChildren&&((r.patchFlag<=0||r.patchFlag===32)&&(r=s[l]=We(s[l]),r.el=i.el),!o&&r.patchFlag!==-2&&ti(i,r)),r.type===yo&&(r.patchFlag===-1&&(r=s[l]=We(r)),r.el=i.el),r.type===Me&&!r.el&&(r.el=i.el)}}function Nr(e){const t=e.slice(),o=[0];let n,s,l,i,r;const a=e.length;for(n=0;n<a;n++){const u=e[n];if(u!==0){if(s=o[o.length-1],e[s]<u){t[n]=s,o.push(n);continue}for(l=0,i=o.length-1;l<i;)r=l+i>>1,e[o[r]]<u?l=r+1:i=r;u<e[o[l]]&&(l>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 oi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:oi(t)}function ni(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function si(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?si(t.subTree):null}const ii=e=>e.__isSuspense;function Cr(e,t){t&&t.pendingBranch?A(e)?t.effects.push(...e):t.effects.push(e):Dl(e)}const Y=Symbol.for("v-fgt"),yo=Symbol.for("v-txt"),Me=Symbol.for("v-cmt"),yn=Symbol.for("v-stc"),Be=[];let ge=null;function L(e=!1){Be.push(ge=e?null:[])}function $n(){Be.pop(),ge=Be[Be.length-1]||null}let Ht=1;function li(e,t=!1){Ht+=e,e<0&&ge&&t&&(ge.hasOnce=!0)}function ri(e){return e.dynamicChildren=Ht>0?ge||lt:null,$n(),Ht>0&&ge&&ge.push(e),e}function E(e,t,o,n,s,l){return ri(x(e,t,o,n,s,l,!0))}function $o(e,t,o,n,s){return ri(ve(e,t,o,n,s,!0))}function wn(e){return e?e.__v_isVNode===!0:!1}function Rt(e,t){return e.type===t.type&&e.key===t.key}const ai=({key:e})=>e??null,wo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?J(e)||ae(e)||P(e)?{i:ie,r:e,k:t,f:!!o}:e:null);function x(e,t=null,o=null,n=0,s=null,l=e===Y?0:1,i=!1,r=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ai(t),ref:t&&wo(t),scopeId:$s,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?(So(a,o),l&128&&e.normalize(a)):o&&(a.shapeFlag|=J(o)?8:16),Ht>0&&!i&&ge&&(a.patchFlag>0||l&6)&&a.patchFlag!==32&&ge.push(a),a}const ve=Ar;function Ar(e,t=null,o=null,n=0,s=null,l=!1){if((!e||e===sr)&&(e=Me),wn(e)){const r=bt(e,t,!0);return o&&So(r,o),Ht>0&&!l&&ge&&(r.shapeFlag&6?ge[ge.indexOf(e)]=r:ge.push(r)),r.patchFlag=-2,r}if(Br(e)&&(e=e.__vccOpts),t){t=Or(t);let{class:r,style:a}=t;r&&!J(r)&&(t.class=he(r)),j(a)&&(ln(a)&&!A(a)&&(a=Q({},a)),t.style=$t(a))}const i=J(e)?1:ii(e)?128:go(e)?64:j(e)?4:P(e)?2:0;return x(e,t,o,n,s,i,l,!0)}function Or(e){return e?ln(e)||Ys(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?Pr(s||{},t):s,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&ai(u),ref:t&&t.ref?o&&l?A(l)?l.concat(wo(t)):[l,wo(t)]:wo(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!==Y?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&&pn(p,a.clone(p)),p}function Ke(e=" ",t=0){return ve(yo,null,e,t)}function G(e="",t=!1){return t?(L(),$o(Me,null,e)):ve(Me,null,e)}function Ne(e){return e==null||typeof e=="boolean"?ve(Me):A(e)?ve(Y,null,e.slice()):wn(e)?We(e):ve(yo,null,String(e))}function We(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bt(e)}function So(e,t){let o=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(A(t))o=16;else if(typeof t=="object")if(n&65){const s=t.default;s&&(s._c&&(s._d=!1),So(e,s()),s._c&&(s._d=!0));return}else{o=32;const s=t._;!s&&!Ys(t)?t._ctx=ie:s===3&&ie&&(ie.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(P(t)){if(n&65){So(e,{default:t});return}t={default:t,_ctx:ie},o=32}else t=String(t),n&64?(o=16,t=[Ke(t)]):o=8;e.children=t,e.shapeFlag|=o}function Pr(...e){const t={};for(let o=0;o<e.length;o++){const n=e[o];for(const s in n)if(s==="class")t.class!==n.class&&(t.class=he([t.class,n.class]));else if(s==="style")t.style=$t([t.style,n.style]);else if(Gt(s)){const l=t[s],i=n[s];i&&l!==i&&!(A(l)&&l.includes(i))?t[s]=l?[].concat(l,i):i:i==null&&l==null&&!Jt(s)&&(t[s]=i)}else s!==""&&(t[s]=n[s])}return t}function Ce(e,t,o,n=null){$e(e,t,7,[o,n])}const Hr=js();let Rr=0;function Ir(e,t,o){const n=e.type,s=(t?t.appContext:e.appContext)||Hr,l={uid:Rr++,vnode:e,type:n,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new rl(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(s.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Js(n,s),emitsOptions:Vs(n,s),emit:null,emitted:null,propsDefaults:B,inheritAttrs:n.inheritAttrs,ctx:B,data:B,props:B,attrs:B,slots:B,refs:B,setupState:B,setupContext:null,suspense:o,suspenseId:o?o.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return l.ctx={_:l},l.root=t?t.root:l,l.emit=gr.bind(null,l),e.ce&&e.ce(l),l}let ce=null;const ci=()=>ce||ie;let _o,It;{const e=oo(),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),It=t("__VUE_SSR_SETTERS__",o=>Dt=o)}const Ut=e=>{const t=ce;return _o(e),e.scope.on(),()=>{e.scope.off(),_o(t)}},di=()=>{ce&&ce.scope.off(),_o(null)};function pi(e){return e.vnode.shapeFlag&4}let Dt=!1;function Ur(e,t=!1,o=!1){t&&It(t);const{props:n,children:s}=e.vnode,l=pi(e);yr(e,n,l,t),_r(e,s,o||t);const i=l?Dr(e,t):void 0;return t&&It(!1),i}function Dr(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,lr);const{setup:n}=o;if(n){Se();const s=e.setupContext=n.length>1?jr(e):null,l=Ut(e),i=ct(n,e,0,[e.props,s]),r=Dn(i);if(_e(),l(),(r||e.sp)&&!ht(e)&&Ls(e),r){if(i.then(di,di),t)return i.then(a=>{It(!0);try{ui(e,a,t)}finally{It(!1)}}).catch(a=>{uo(a,e,0)});e.asyncDep=i}else ui(e,i)}else fi(e)}function ui(e,t,o){P(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j(t)&&(e.setupState=hs(t)),fi(e)}function fi(e,t,o){const n=e.type;e.render||(e.render=n.render||we);{const s=Ut(e);Se();try{rr(e)}finally{_e(),s()}}}const Fr={get(e,t){return re(e,"get",""),e[t]}};function jr(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Fr),slots:e.slots,emit:e.emit,expose:t}}function Lo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(hs(El(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 Vr=/(?:^|[-_])\w/g,zr=e=>e.replace(Vr,t=>t.toUpperCase()).replace(/[-_]/g,"");function hi(e,t=!0){return P(e)?e.displayName||e.name:e.name||t&&e.__name}function gi(e,t,o=!1){let n=hi(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?zr(n):o?"App":"Anonymous"}function Br(e){return P(e)&&"__vccOpts"in e}const Kr=(e,t)=>Nl(e,t,Dt),Wr="3.5.42";/**
|
||
* @vue/runtime-dom v3.5.42
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/let Sn;const bi=typeof window<"u"&&window.trustedTypes;if(bi)try{Sn=bi.createPolicy("vue",{createHTML:e=>e})}catch{}const mi=Sn?e=>Sn.createHTML(e):e=>e,qr="http://www.w3.org/2000/svg",Yr="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,vi=qe&&qe.createElement("template"),Gr={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"?qe.createElementNS(qr,e):t==="mathml"?qe.createElementNS(Yr,e):o?qe.createElement(e,{is:o}):qe.createElement(e);return e==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,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{vi.innerHTML=mi(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const r=vi.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]}},Jr=Symbol("_vtc");function Xr(e,t,o){const n=e[Jr];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const Eo=Symbol("_vod"),xi=Symbol("_vsh"),_n={name:"show",beforeMount(e,{value:t},{transition:o}){e[Eo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Ft(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),Ft(e,!0),n.enter(e)):n.leave(e,()=>{Ft(e,!1)}):Ft(e,t))},beforeUnmount(e,{value:t}){Ft(e,t)}};function Ft(e,t){e.style.display=t?e[Eo]:"none",e[xi]=!t}const Zr=Symbol(""),Qr=/(?:^|;)\s*display\s*:/;function ea(e,t,o){const n=e.style,s=J(o);let l=!1;if(o&&!s){if(t)if(J(t))for(const i of t.split(";")){const r=i.slice(0,i.indexOf(":")).trim();o[r]==null&&jt(n,r,"")}else for(const i in t)o[i]==null&&jt(n,i,"");for(const i in o){i==="display"&&(l=!0);const r=o[i];r!=null?oa(e,i,!J(t)&&t?t[i]:void 0,r)||jt(n,i,r):jt(n,i,"")}}else if(s){if(t!==o){const i=n[Zr];i&&(o+=";"+i),n.cssText=o,l=Qr.test(o)}}else t&&e.removeAttribute("style");Eo in e&&(e[Eo]=l?n.display:"",e[xi]&&(n.display="none"))}const To=/\s*!important$/;function jt(e,t,o){if(A(o))o.forEach(n=>jt(e,t,n));else if(o==null&&(o=""),t.startsWith("--"))To.test(o)?e.setProperty(t,o.replace(To,""),"important"):e.setProperty(t,o);else{const n=ta(e,t);To.test(o)?e.setProperty(me(n),o.replace(To,""),"important"):e[n]=o}}const ki=["Webkit","Moz","ms"],Ln={};function ta(e,t){const o=Ln[t];if(o)return o;let n=ne(t);if(n!=="filter"&&n in e)return Ln[t]=n;n=eo(n);for(let s=0;s<ki.length;s++){const l=ki[s]+n;if(l in e)return Ln[t]=l}return t}function oa(e,t,o,n){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&J(n)&&o===n}const yi="http://www.w3.org/1999/xlink";function $i(e,t,o,n,s,l=il(t)){n&&t.startsWith("xlink:")?o==null?e.removeAttributeNS(yi,t.slice(6,t.length)):e.setAttributeNS(yi,t,o):o==null||l&&!Bn(o)?e.removeAttribute(t):e.setAttribute(t,l?"":xe(o)?String(o):o)}function wi(e,t,o,n,s){if(t==="innerHTML"||t==="textContent"){o!=null&&(e[t]=t==="innerHTML"?mi(o):o);return}const l=e.tagName;if(t==="value"&&l!=="PROGRESS"&&!l.includes("-")){const r=l==="OPTION"?e.getAttribute("value")||"":e.value,a=o==null?e.type==="checkbox"?"on":"":String(o);(r!==a||!("_value"in e))&&(e.value=a),o==null&&e.removeAttribute(t),e._value=o;return}let i=!1;if(o===""||o==null){const r=typeof e[t];r==="boolean"?o=Bn(o):o==null&&r==="string"?(o="",i=!0):r==="number"&&(o=0,i=!0)}try{e[t]=o}catch{}i&&e.removeAttribute(s||t)}function mt(e,t,o,n){e.addEventListener(t,o,n)}function na(e,t,o,n){e.removeEventListener(t,o,n)}const Si=Symbol("_vei");function sa(e,t,o,n,s=null){const l=e[Si]||(e[Si]={}),i=l[t];if(n&&i)i.value=n;else{const[r,a]=ra(t);if(n){const u=l[t]=da(n,s);mt(e,r,u,a)}else i&&(na(e,r,i,a),l[t]=void 0)}}const ia=/(Once|Passive|Capture)$/,la=/^on:?(?:Once|Passive|Capture)$/;function ra(e){let t,o;for(;(o=e.match(ia))&&!la.test(e);)t||(t={}),e=e.slice(0,e.length-o[1].length),t[o[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):me(e.slice(2)),t]}let En=0;const aa=Promise.resolve(),ca=()=>En||(aa.then(()=>En=0),En=Date.now());function da(e,t){const o=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=o.attached)return;const s=o.value;if(A(s)){const l=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{l.call(n),n._stopped=!0};const i=s.slice(),r=[n];for(let a=0;a<i.length&&!n._stopped;a++){const u=i[a];u&&$e(u,t,5,r)}}else $e(s,t,5,[n])};return o.value=e,o.attached=ca(),o}const _i=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,pa=(e,t,o,n,s,l)=>{const i=s==="svg";t==="class"?Xr(e,n,i):t==="style"?ea(e,o,n):Gt(t)?Jt(t)||sa(e,t,o,n,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ua(e,t,n,i))?(wi(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&$i(e,t,n,i,l,t!=="value")):e._isVueCE&&(fa(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!J(n)))?wi(e,ne(t),n,l,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),$i(e,t,n,i))};function ua(e,t,o,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&_i(t)&&P(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 _i(t)&&J(o)?!1:t in e}function fa(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 Li={};function ha(e,t,o){let n=bo(e,t);Zt(n)&&(n=Q({},n,t));class s extends Tn{constructor(i){super(n,i,o)}}return s.def=n,s}const ga=typeof HTMLElement<"u"?HTMLElement:class{};class Tn extends ga{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 Tn){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,ms(()=>{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.attributes.length;n++)this._setAttr(this.attributes[n].name);this._ob=new MutationObserver(this._processMutations.bind(this)),this._ob.observe(this,{attributes:!0});const t=(n,s=!1)=>{this._resolved=!0,this._pendingResolve=void 0;const{props:l,styles:i}=n;let r;if(l&&!A(l))for(const a in l){const u=l[a];(u===Number||u&&u.type===Number)&&(a in this._props&&(this._props[a]=Vn(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)U(this,n)||Object.defineProperty(this,n,{get:()=>fs(o[n])})}_resolveProps(t){const{props:o}=t,n=A(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):Li;const s=ne(t);o&&this._numberProps&&this._numberProps[s]&&(n=Vn(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===Li?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(me(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(me(t),o+""):o||this.removeAttribute(me(t)),l&&l.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),ka(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,Zt(i[0])?Q({detail:i},i[0]):{detail:i}))};n.emit=(l,...i)=>{s(l,i),me(l)!==l&&s(me(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<t.childNodes.length;o++){const n=t.childNodes[o];if(!(n instanceof HTMLStyleElement))return n}return null}_parseSlots(){const t=this._slots={};let o;for(;o=this.firstChild;){const n=o.nodeType===1&&o.getAttribute("slot")||"default";(t[n]||(t[n]=[])).push(o),this.removeChild(o)}}_renderSlots(){const t=this._getSlots(),o=this._instance.type.__scopeId;for(let n=0;n<t.length;n++){const s=t[n],l=s.getAttribute("name")||"default",i=this._slots[l],r=s.parentNode;if(i)for(const a of i){if(o&&a.nodeType===1){const u=o+"-s",p=document.createTreeWalker(a,1);a.setAttribute(u,"");let h;for(;h=p.nextNode();)h.setAttribute(u,"")}r.insertBefore(a,s)}else for(;s.firstChild;)r.insertBefore(s.firstChild,s);r.removeChild(s)}}_getSlots(){const t=[this];this._teleportTargets&&t.push(...this._teleportTargets);const o=new Set;for(const n of t){const s=n.querySelectorAll("slot");for(let l=0;l<s.length;l++)o.add(s[l])}return Array.from(o)}_injectChildStyle(t,o){this._applyStyles(t.styles,t,o)}_beginPatch(){this._patching=!0,this._dirty=!1}_endPatch(){this._patching=!1,this._dirty&&this._instance&&this._update()}_hasShadowRoot(){return this._def.shadowRoot!==!1}_removeChildStyle(t){}}const Ei=e=>{const t=e.props["onUpdate:modelValue"]||!1;return A(t)?o=>to(t,o):t};function ba(e){e.target.composing=!0}function Ti(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Mo=Symbol("_assign"),No=Symbol("_initialValue");function Mn(e,t,o){return t&&(e=e.trim()),o&&(e=Ko(e)),e}const Nn={created(e,{modifiers:{lazy:t,trim:o,number:n}},s){e.parentNode&&(e.type==="text"?e[No]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[No]=e.defaultValue.replace(/\r\n?/g,`
|
||
`))),e[Mo]=Ei(s);const l=n||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{i.target.composing||e[Mo](Mn(e.value,o,l))}),(o||l)&&mt(e,"change",()=>{e.value=Mn(e.value,o,l)}),t||(mt(e,"compositionstart",ba),mt(e,"compositionend",Ti),mt(e,"change",Ti))},mounted(e,{value:t,modifiers:{trim:o,number:n}}){const s=t??"",l=e[No];delete e[No],l!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==l?e[Mo](Mn(e.value,o,n)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:n,trim:s,number:l}},i){if(e[Mo]=Ei(i),e.composing)return;const r=(l||e.type==="number")&&!/^0\d/.test(e.value)?Ko(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)}},ma=["ctrl","shift","alt","meta"],va={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)=>ma.some(o=>e[`${o}Key`]&&!t.includes(o))},Mi=(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<t.length;i++){const r=va[t[i]];if(r&&r(s,t))return}return e(s,...l)})},xa=Q({patchProp:pa},Gr);let Ni;function Ci(){return Ni||(Ni=Er(xa))}const ka=(...e)=>{Ci().render(...e)},Ai=(...e)=>{const t=Ci().createApp(...e),{mount:o}=t;return t.mount=n=>{const s=$a(n);if(!s)return;const l=t._component;!P(l)&&!l.render&&!l.template&&(l.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=o(s,!1,ya(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function ya(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function $a(e){return J(e)?document.querySelector(e):e}const wa={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:"رمز الخريطة",mapboxToken:"رمز Mapbox",tokenPaste:"رمز Mapbox العام (pk.…)",tokenUrlLabel:"…أو رابط خدمة الرموز",tokenApply:"استخدام",tokenClear:"مسح",tokenStoredHere:"يُحفظ في هذا المتصفح فقط.",tokenSourceYours:"يُستخدم رمزك",tokenSourceUrl:"يُستخدم رمز من {url}",tokenSourceBuilt:"يُستخدم الرمز المضمَّن في هذه الصفحة",tokenSourceNone:"لا يوجد رمز Mapbox: لا يمكن تحميل خرائط Mapbox (خرائط MapLibre لا تحتاج رمزًا)",tokenSecret:"هذا رمز سري (sk.…). الصق رمزًا عامًا (pk.…): هذه الصفحة عامة.",tokenNotPk:"يبدأ رمز Mapbox العام بـ pk.",tokenUrlFailed:"تعذّر الحصول على رمز من هذا الرابط: {why}",settings:"الإعدادات",mapEngine:"محرّك الخرائط",engineDefault:"الافتراضي لكل خريطة",engineMapboxNote:"يحتاج إلى رمز",engineMaplibreNote:"لا يحتاج إلى رمز",tokenNotNeeded:"تم اختيار MapLibre: خرائطه لا تحتاج إلى رمز Mapbox",hideHeader:"إخفاء الشريط العلوي",showHeader:"إظهار الشريط العلوي"},Sa={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",mapboxToken:"Mapbox-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}",settings:"Einstellungen",mapEngine:"Karten-Engine",engineDefault:"Je Karte eigenes",engineMapboxNote:"braucht einen Token",engineMaplibreNote:"kein Token nötig",tokenNotNeeded:"MapLibre ist gewählt: Seine Karten brauchen keinen Mapbox-Token",hideHeader:"Kopfzeile ausblenden",showHeader:"Kopfzeile einblenden"},_a={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",mapboxToken:"Mapbox 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}",settings:"Settings",mapEngine:"Map engine",engineDefault:"Each map’s own",engineMapboxNote:"needs a token",engineMaplibreNote:"no token needed",tokenNotNeeded:"MapLibre is selected: its maps need no Mapbox token",hideHeader:"Hide header",showHeader:"Show header"},La={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",mapboxToken:"Token de Mapbox",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}",settings:"Ajustes",mapEngine:"Motor de mapas",engineDefault:"El de cada mapa",engineMapboxNote:"necesita un token",engineMaplibreNote:"no necesita token",tokenNotNeeded:"MapLibre está seleccionado: sus mapas no necesitan token de Mapbox",hideHeader:"Ocultar encabezado",showHeader:"Mostrar encabezado"},Ea={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",mapboxToken:"Jeton Mapbox",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}",settings:"Paramètres",mapEngine:"Moteur de carte",engineDefault:"Celui de chaque carte",engineMapboxNote:"nécessite un jeton",engineMaplibreNote:"aucun jeton requis",tokenNotNeeded:"MapLibre est sélectionné : ses cartes n’ont pas besoin de jeton Mapbox",hideHeader:"Masquer l'en-tête",showHeader:"Afficher l'en-tête"},Ta={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:"मानचित्र टोकन",mapboxToken:"Mapbox टोकन",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}",settings:"सेटिंग्स",mapEngine:"मानचित्र इंजन",engineDefault:"हर मानचित्र का अपना",engineMapboxNote:"टोकन चाहिए",engineMaplibreNote:"टोकन की ज़रूरत नहीं",tokenNotNeeded:"MapLibre चुना गया है: इसके मानचित्रों को Mapbox टोकन नहीं चाहिए",hideHeader:"हेडर छिपाएँ",showHeader:"हेडर दिखाएँ"},Ma={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",mapboxToken:"Token Mapbox",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}",settings:"Impostazioni",mapEngine:"Motore mappe",engineDefault:"Quello di ogni mappa",engineMapboxNote:"richiede un token",engineMaplibreNote:"nessun token necessario",tokenNotNeeded:"MapLibre è selezionato: le sue mappe non richiedono un token Mapbox",hideHeader:"Nascondi intestazione",showHeader:"Mostra intestazione"},Na={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",mapboxToken:"Token do Mapbox",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}",settings:"Definições",mapEngine:"Motor de mapas",engineDefault:"O de cada mapa",engineMapboxNote:"precisa de um token",engineMaplibreNote:"não precisa de token",tokenNotNeeded:"MapLibre está selecionado: os seus mapas não precisam de token do Mapbox",hideHeader:"Ocultar cabeçalho",showHeader:"Mostrar cabeçalho"},Ca={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ă",mapboxToken:"Token Mapbox",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}",settings:"Setări",mapEngine:"Motor hărți",engineDefault:"Al fiecărei hărți",engineMapboxNote:"necesită un token",engineMaplibreNote:"nu necesită token",tokenNotNeeded:"MapLibre este selectat: hărțile sale nu necesită token Mapbox",hideHeader:"Ascunde antetul",showHeader:"Afișează antetul"},Aa={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:"Токен карты",mapboxToken:"Токен Mapbox",tokenPaste:"Публичный токен Mapbox (pk.…)",tokenUrlLabel:"…или адрес службы токенов",tokenApply:"Применить",tokenClear:"Очистить",tokenStoredHere:"Хранится только в этом браузере.",tokenSourceYours:"Используется ваш токен",tokenSourceUrl:"Используется токен с {url}",tokenSourceBuilt:"Используется токен, встроенный в страницу",tokenSourceNone:"Нет токена Mapbox: карты Mapbox не загрузятся (MapLibre он не нужен)",tokenSecret:"Это секретный токен (sk.…). Вставьте публичный (pk.…): эта страница общедоступна.",tokenNotPk:"Публичный токен Mapbox начинается с pk.",tokenUrlFailed:"Не удалось получить токен по этому адресу: {why}",settings:"Настройки",mapEngine:"Движок карт",engineDefault:"Свой у каждой карты",engineMapboxNote:"нужен токен",engineMaplibreNote:"токен не нужен",tokenNotNeeded:"Выбран MapLibre: его картам не нужен токен Mapbox",hideHeader:"Скрыть заголовок",showHeader:"Показать заголовок"},Oa={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:"地图令牌",mapboxToken:"Mapbox 令牌",tokenPaste:"Mapbox 公开令牌 (pk.…)",tokenUrlLabel:"…或令牌服务的网址",tokenApply:"使用",tokenClear:"清除",tokenStoredHere:"仅保存在此浏览器中。",tokenSourceYours:"正在使用您的令牌",tokenSourceUrl:"正在使用来自 {url} 的令牌",tokenSourceBuilt:"正在使用此页面内置的令牌",tokenSourceNone:"没有 Mapbox 令牌:Mapbox 地图无法加载(MapLibre 地图不需要)",tokenSecret:"这是秘密令牌 (sk.…)。请粘贴公开令牌 (pk.…):此页面是公开的。",tokenNotPk:"Mapbox 公开令牌以 pk. 开头",tokenUrlFailed:"无法从该网址获取令牌:{why}",settings:"设置",mapEngine:"地图引擎",engineDefault:"各地图自身的",engineMapboxNote:"需要令牌",engineMaplibreNote:"无需令牌",tokenNotNeeded:"已选择 MapLibre:其地图无需 Mapbox 令牌",hideHeader:"隐藏标题栏",showHeader:"显示标题栏"};function Cn(e,t){const o=ci(),n=t||(o&&o.type&&o.type.__hmrId?"hmr-"+o.type.__hmrId:Pa(e));Ns(()=>{var a;if(!o)return;const s=(a=o.proxy)==null?void 0:a.$el;if(!s)return;const l=s.getRootNode();if(!(l instanceof ShadowRoot))return;const i=l.querySelector(`style[data-shadow-styles="${n}"]`);if(i){i.textContent!==e&&(i.textContent=e);return}const r=document.createElement("style");r.setAttribute("data-shadow-styles",n),r.textContent=e,l.appendChild(r)})}function Pa(e){let t=0;for(let o=0;o<e.length;o++)t=(t<<5)-t+e.charCodeAt(o),t|=0;return"s"+Math.abs(t).toString(36)}const Oi={menu:'<line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/>',map:'<polygon points="3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21"/><line x1="9" y1="3" x2="9" y2="18"/><line x1="15" y1="6" x2="15" y2="21"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3a15 15 0 0 1 0 18a15 15 0 0 1 0-18"/>',heart:'<path d="M19 14c1.5-1.5 3-3.5 3-5.5A4.5 4.5 0 0 0 12 6a4.5 4.5 0 0 0-10 2.5C2 10.5 3.5 12.5 5 14l7 7Z"/>',prayer:'<path d="M12 4.2c-.9 1.4-1.9 2.6-2.9 3.8-1 1.2-1.6 2.6-1.6 4.2v3.3c0 1.3.7 2.4 1.8 3 .5.3 1.1-.1 1.1-.7"/><path d="M12 4.2c.9 1.4 1.9 2.6 2.9 3.8 1 1.2 1.6 2.6 1.6 4.2v3.3c0 1.3-.7 2.4-1.8 3-.5.3-1.1-.1-1.1-.7"/><path d="M12 4.2V17"/>',list:'<line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><circle cx="4" cy="6" r="1"/><circle cx="4" cy="12" r="1"/><circle cx="4" cy="18" r="1"/>',users:'<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.9"/><path d="M16 3.1a4 4 0 0 1 0 7.8"/>',flag:'<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V4s-1 1-4 1-5-2-8-2-4 1-4 1z"/><line x1="4" y1="22" x2="4" y2="15"/>',target:'<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5"/><circle cx="12" cy="12" r="1"/>',pin:'<path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z"/><circle cx="12" cy="10" r="3"/>',monitor:'<rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/>',chart:'<line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/>',layers:'<polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/>',flask:'<path d="M9 3h6v5l5 11a2 2 0 0 1-2 3H6a2 2 0 0 1-2-3l5-11z"/><line x1="9" y1="3" x2="15" y2="3"/><line x1="6" y1="15" x2="18" y2="15"/>',share:'<circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.6" y1="13.5" x2="15.4" y2="17.5"/><line x1="15.4" y1="6.5" x2="8.6" y2="10.5"/>',beaker:'<path d="M6 3h12"/><path d="M8 3v7l-3 8a2 2 0 0 0 2 3h10a2 2 0 0 0 2-3l-3-8V3"/>',chevron:'<polyline points="9 18 15 12 9 6"/>',grid:'<rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/>',tree:'<rect x="9" y="3" width="6" height="5" rx="1"/><rect x="2" y="16" width="6" height="5" rx="1"/><rect x="16" y="16" width="6" height="5" rx="1"/><path d="M12 8v4M5 16v-2h14v2"/>',dots:'<circle cx="12" cy="5" r="1.5"/><circle cx="12" cy="12" r="1.5"/><circle cx="12" cy="19" r="1.5"/>',embed:'<polyline points="9 7 4 12 9 17"/><polyline points="15 7 20 12 15 17"/>',send:'<path d="M21 3 L3 10.5 L9.5 13.5 L12.5 20 Z"/><line x1="21" y1="3" x2="9.5" y2="13.5"/>',poster:'<rect x="4" y="3" width="16" height="18" rx="2"/><circle cx="12" cy="10" r="2.5"/><path d="M8 17h8"/>',search:'<circle cx="10.5" cy="10.5" r="7.5"/><line x1="15.8" y1="15.8" x2="20.5" y2="20.5"/>',book:'<path d="M12 6.5C12 6.5 9.5 4.5 4 4.5v13C9.5 17.5 12 19.5 12 19.5"/><path d="M12 6.5C12 6.5 14.5 4.5 20 4.5v13C14.5 17.5 12 19.5 12 19.5"/>',wifi:'<path d="M3.5 9a13 13 0 0 1 17 0"/><path d="M6.8 12.4a8.5 8.5 0 0 1 10.4 0"/><path d="M10 15.7a4 4 0 0 1 4 0"/><circle cx="12" cy="19" r="1"/>'};function Pi(e,t=""){const o=Oi[e]||Oi.map;return`<svg class="ic ${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${o}</svg>`}const Ha=".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}}",An=(e,t)=>{const o=e.__vccOpts||e;for(const[n,s]of t)o[n]=s;return o},Vt={};function Ra(e){return e?(Vt[e]||(Vt[e]=new Promise((t,o)=>{const n=document.createElement("script");n.src=e,n.onload=()=>t(),n.onerror=()=>{delete Vt[e],o(new Error("failed to load "+e))},document.head.appendChild(n)})),Vt[e]):Promise.resolve()}function Ia(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 Ua=`
|
||
/* 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; }
|
||
}
|
||
`,Da=bo({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(){Cn(Ua,"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"},Ra(t.src).then(()=>Ia(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()})}}}),Fa={key:0,class:"vtl-top"},ja=["aria-expanded","aria-label"],Va={class:"vtl-brand"},za={class:"vtl-title"},Ba={class:"vtl-meta"},Ka=["aria-expanded","aria-label"],Wa={class:"vtl-body"},qa=["aria-label","aria-hidden","role","aria-orientation"],Ya=["aria-expanded","aria-label"],Ga=["innerHTML"],Ja={class:"vtl-collapse-tx"},Xa=["aria-expanded","onClick"],Za={key:0,class:"vtl-cap"},Qa={class:"vtl-tl"},ec={key:1,class:"vtl-td"},tc=["innerHTML"],oc={key:1,class:"vtl-tier"},nc={key:0,class:"vtl-cap"},sc={class:"vtl-tl"},ic={key:1,class:"vtl-td"},lc={class:"vtl-rows"},rc=["aria-selected","tabindex","onClick"],ac=["innerHTML"],cc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},dc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},pc={class:"vtl-tab-text"},uc={class:"vtl-tab-label"},fc={key:0,class:"vtl-tab-badge"},hc={key:0,class:"vtl-tab-sub"},gc=["innerHTML"],bc=["aria-selected","tabindex","onClick"],mc=["innerHTML"],vc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},xc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},kc={class:"vtl-tab-text"},yc={class:"vtl-tab-label"},$c={key:0,class:"vtl-tab-sub"},wc={class:"vtl-main"},Sc={class:"vtl-content"},_c=["hidden"],Lc={key:0,class:"vtl-host-hint"},Ec={key:1,class:"vtl-host-hint err"};function Tc(e,t,o,n,s,l){return L(),E("div",{class:he(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(L(),E("header",Fa,[x("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,ja),x("span",Va,[At(e.$slots,"brand")]),x("b",za,T(e.title),1),x("span",Ba,[At(e.$slots,"meta")])])):G("",!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,Ka)):G("",!0),x("div",Wa,[x("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"},[x("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))},[x("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Ga),x("span",Ja,T(e.label("collapse")),1)],8,Ya),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(Y,{key:1},Te(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)):G("",!0),x("span",Qa,T(i.label),1),i.count!=null?(L(),E("span",ec,T(i.count),1)):G("",!0),x("span",{class:he(["vtl-chev",{open:!e.isFolderClosed(i)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,tc)],8,Xa)):(L(),E("div",oc,[i.badge?(L(),E("span",nc,T(i.badge),1)):G("",!0),x("span",sc,T(i.label),1),i.count!=null?(L(),E("span",ic,T(i.count),1)):G("",!0)])),ft(x("div",lc,[(L(!0),E(Y,null,Te(i.rows,r=>(L(),E("button",{key:r.key,type:"button",role:"tab",class:he(["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,ac)):r.emoji?(L(),E("span",cc,T(r.emoji),1)):(L(),E("span",dc,T(e.initial(r.label)),1)),x("span",pc,[x("span",uc,[Ke(T(r.label),1),r.badge?(L(),E("span",fc,T(r.badge),1)):G("",!0)]),r.sub?(L(),E("span",hc,[x("span",{innerHTML:r.sub},null,8,gc)])):G("",!0)])],42,rc))),128))],512),[[_n,!i.folder||!e.isFolderClosed(i)]])]))),128)):(L(!0),E(Y,{key:2},Te(e.items,i=>(L(),E("button",{key:i.key,type:"button",role:"tab",class:he(["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,mc)):i.emoji?(L(),E("span",vc,T(i.emoji),1)):(L(),E("span",xc,T(e.initial(i.label)),1)),x("span",kc,[x("span",yc,T(i.label),1),i.sub?(L(),E("span",$c,T(i.sub),1)):G("",!0)])],42,bc))),128))],8,qa),x("main",wc,[e.header?At(e.$slots,"toolbar",{},void 0,void 0,0):G("",!0),x("div",Sc,[(L(!0),E(Y,null,Te(e.mountedElementRows,i=>ft((L(),E("section",{key:i.key,class:"vtl-host",hidden:i.key!==e.active},[x("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",Lc,"Loading "+T(i.label)+"…",1)):e.hostState[i.key]==="error"?(L(),E("div",Ec,[Ke(" Could not load "+T(i.label)+".",1),t[5]||(t[5]=x("br",null,null,-1)),x("small",null,T(e.hostError[i.key]),1)])):G("",!0)],8,_c)),[[_n,i.key===e.active]])),128)),At(e.$slots,"default")])])])],2)}const Mc=An(Da,[["render",Tc],["styles",[Ha]]]),Nc='.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}',Cc='.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; }',Ac='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="3"/><line x1="8.5" y1="12" x2="15.5" y2="12"/></svg>',Oc={filterPlaceholder:"Filter plugins",collapseAll:"Collapse all",noMatch:"No plugin matches “{query}”.",treeLabel:"Plugins by capability",openSection:"Open {cap}, {label}",part:"part"},Pc='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg>',Hc=bo({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(){Cn(Cc,"studio-tree")},data(){const e=this.readState();return{query:"",focusId:"",secClosed:e.sec||{},nodeOpen:e.node||{},chev:Pc,collapseAllSvg:Ac}},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]||Oc[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))}}}),Rc={key:0,class:"st-activity"},Ic=["aria-label","onClick"],Uc=["innerHTML"],Dc={class:"st-act-n","aria-hidden":"true"},Fc={key:1,class:"st"},jc={class:"st-bar"},Vc={class:"st-find"},zc=["innerHTML"],Bc=["placeholder","aria-label"],Kc=["aria-label","title"],Wc=["innerHTML"],qc=["aria-label"],Yc=["aria-level","aria-expanded","aria-selected","tabindex","title","onClick","onFocus"],Gc=["innerHTML"],Jc={class:"st-cap"},Xc={class:"st-sec-label"},Zc={class:"st-count"},Qc=["innerHTML","onClick"],ed={key:1,class:"st-twisty-sp","aria-hidden":"true"},td=["innerHTML"],od={class:"st-label"},nd={key:2,class:"st-part"},sd={class:"st-desc"},id={key:3,class:"st-count"},ld={key:0,class:"st-empty"};function rd(e,t,o,n,s,l){return e.collapsed?(L(),E("div",Rc,[(L(!0),E(Y,null,Te(e.sections,i=>(L(),E("button",{key:i.id,type:"button",class:he(["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)},[x("span",{class:"st-act-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,Uc),x("span",Dc,T(i.cap),1)],10,Ic))),128))])):(L(),E("div",Fc,[x("div",jc,[x("label",Vc,[x("span",{class:"st-find-ic","aria-hidden":"true",innerHTML:e.svg("search")},null,8,zc),ft(x("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,Bc),[[Nn,e.query]])]),x("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))},[x("span",{"aria-hidden":"true",innerHTML:e.collapseAllSvg},null,8,Wc)],8,Kc)]),x("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(Y,null,Te(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:he(e.rowClass(i)),style:$t({"--st-depth":i.depth}),title:i.title||null,onClick:r=>e.onRowClick(i),onFocus:r=>e.focusId=i.id},[i.section?(L(),E(Y,{key:0},[x("span",{class:"st-twisty","aria-hidden":"true",innerHTML:e.chev},null,8,Gc),x("span",Jc,"CAP "+T(i.cap),1),x("span",Xc,T(i.label),1),x("span",Zc,T(i.count),1)],64)):(L(),E(Y,{key:1},[(L(!0),E(Y,null,Te(i.depth,r=>(L(),E("span",{key:r,class:"st-guide",style:$t({"--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:Mi(r=>e.toggle(i),["stop"])},null,8,Qc)):(L(),E("span",ed)),x("span",{class:"st-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,td),x("span",od,T(i.label),1),i.part?(L(),E("span",nd,T(e.str("part")),1)):G("",!0),x("span",sd,T(i.desc),1),i.expandable?(L(),E("span",id,T(i.kids),1)):G("",!0)],64))],46,Yc))),128)),e.query&&!e.visible.length?(L(),E("p",ld,T(e.str("noMatch",{query:e.query})),1)):G("",!0)],40,qc)]))}const ad=An(Hc,[["render",rd],["styles",[Nc]]]),Co=[{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},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}];Co.filter(e=>!e.hideFromSwitcher);function cd(e){return Co.find(t=>t.code===e)}function On(e){const t=String(e||"").split("-")[0].toLowerCase();return Co.some(o=>o.code===t)?t:"en"}const Hi="doxa-maps:locale";function dd(){try{const e=localStorage.getItem(Hi);if(e)return On(e)}catch{}return On(navigator==null?void 0:navigator.language)}function pd(e){try{localStorage.setItem(Hi,e)}catch{}}const Ao="__doxaMapToken",Ri="doxa:map-token",Ii="__doxaMapTokenBridge",zt=()=>{if(typeof window>"u")return"";const e=window[Ao];return typeof e=="string"?e:""};function Ui(e){if(typeof window>"u")return"";Di();const t=typeof e=="string"?e.trim():"";if(!t||t===zt())return zt();window[Ao]=t;try{window.dispatchEvent(new CustomEvent(Ri,{detail:t}))}catch{}return t}function ud(){var t;if(typeof window>"u")return;const e=zt()||typeof window.MAP_TOKEN=="string"&&window.MAP_TOKEN;if(Di(),window[Ao]="",!((t=Object.getOwnPropertyDescriptor(window,"MAP_TOKEN"))!=null&&t.get))try{window.MAP_TOKEN=""}catch{}if(e)try{window.dispatchEvent(new CustomEvent(Ri,{detail:""}))}catch{}}function Di(){var t;if(typeof window>"u"||window[Ii]&&((t=Object.getOwnPropertyDescriptor(window,"MAP_TOKEN"))!=null&&t.get))return;const e=typeof window.MAP_TOKEN=="string"?window.MAP_TOKEN:"";e&&!zt()&&(window[Ao]=e);try{Object.defineProperty(window,"MAP_TOKEN",{configurable:!0,get(){return zt()},set(o){Ui(o)}}),window[Ii]=!0}catch{}}const fd=":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}.vtl-top{position:relative;z-index:3}.vtl-body{isolation:isolate}.ps-token{position:relative;display:inline-flex}.ps-show-header{position:fixed;top:8px;inset-inline-end:8px;z-index:2147483000;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid #d1d4cd;border-radius:999px;background:#fffffff0;color:#3b463d;font:600 12px system-ui,sans-serif;cursor:pointer;box-shadow:0 4px 14px #0000002e}.ps-show-header:hover,.ps-show-header:focus-visible{background:#fff;outline:2px solid #92b195}.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-head{margin:0;font-weight:600;font-size:12px}.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-token-btn .ps-locale-name{max-width:none}.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}",Oo="plugin-studio:mapbox-token",Po="plugin-studio:mapbox-token-url",Fi="plugin-studio:header-hidden",ji="plugin-studio:map-provider";function vt(e){try{return typeof window<"u"&&window.localStorage.getItem(e)||""}catch{return""}}function xt(e,t){try{t?window.localStorage.setItem(e,t):window.localStorage.removeItem(e)}catch{}}const hd=`
|
||
: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; }
|
||
/* THE HEADER'S MENUS SIT ABOVE EVERY PLUGIN (the agent, 2026-09-25: "the Mapbox token menu is not on top …
|
||
it is underlapping the plugins"). The header row and the pane area are siblings with no stacking context
|
||
of their own, so a menu at z-index 30 competed with each plugin's own chrome (a filter bar at 55, a drawer
|
||
at 1000) and lost. The header now stacks above the content, and the pane area is ISOLATED: whatever
|
||
z-index a plugin uses stays inside its pane. */
|
||
.vtl-top { position:relative; z-index:3; }
|
||
.vtl-body { isolation:isolate; }
|
||
.ps-token { position:relative; display:inline-flex; }
|
||
.ps-show-header { position:fixed; top:8px; inset-inline-end:8px; z-index:2147483000; display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border:1px solid #d1d4cd; border-radius:999px; background:rgba(255,255,255,.94); color:#3b463d; font:600 12px system-ui, sans-serif; cursor:pointer; box-shadow:0 4px 14px rgba(0,0,0,.18); }
|
||
.ps-show-header:hover, .ps-show-header:focus-visible { background:#ffffff; outline:2px solid #92b195; }
|
||
.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-head { margin:0; font-weight:600; font-size:12px; }
|
||
.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-token-btn .ps-locale-name { max-width:none; } /* "Mapbox token" is read in full: it names the prop */
|
||
.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; }
|
||
`,gd={5:"App shell · nested-mfe-spa",4:"Composite element",3:"Multi-view element",2:"Preset element",1:"Single element"},Vi={"nested-mfe-spa":0,"nested-elements-mfe":1,monolithic:2,parameterized:3,single:4},bd=e=>Vi[e]!=null?5-Vi[e]:1,md={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"},zi=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"]),Bi=new Set(["big-picture"]),Ho={};for(const[e,t]of Object.entries(Object.assign({"../../library/i18n/locales/ar/studio.json":wa,"../../library/i18n/locales/de/studio.json":Sa,"../../library/i18n/locales/en/studio.json":_a,"../../library/i18n/locales/es/studio.json":La,"../../library/i18n/locales/fr/studio.json":Ea,"../../library/i18n/locales/hi/studio.json":Ta,"../../library/i18n/locales/it/studio.json":Ma,"../../library/i18n/locales/pt/studio.json":Na,"../../library/i18n/locales/ro/studio.json":Ca,"../../library/i18n/locales/ru/studio.json":Aa,"../../library/i18n/locales/zh/studio.json":Oa}))){const o=e.match(/locales\/([^/]+)\/studio\.json$/);o&&(Ho[o[1]]=t)}const vd={"doxa-maps-spa/doxa-maps-spa":"Research Gallery"},Bt={};function xd(e,t){return Bt[e]||(Bt[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 Bt[e],n(new Error("failed to load "+e))},document.head.appendChild(s)})),Bt[e]}function kd(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 yd=bo({name:"PluginStudio",inheritAttrs:!1,components:{VerticalTabsLayout:Mc,StudioTree:ad},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 Cn(hd,"plugin-studio"),{injectedBase:Nt("psTreeBase","")}},data(){return{activeKey:"",embedOpen:!1,locale:this.initialLocale(),localeOpen:!1,settingsOpen:!1,headerHidden:vt(Fi)==="1",engineOpen:!1,userProvider:vt(ji),tokenBusy:!1,tokenErr:"",tokenDraft:vt(Oo),urlDraft:vt(Po),userTk:vt(Oo),userTokenUrl:vt(Po),fetchedTk:"",bakedTk:"",hostProvider:"",switcherLangs:Co,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:gd[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)+" · "+(md[t.cap]||""),icon:Pn[t.cap]||"embed",nodes:o}})},compositionTrees(){const e=[],t=(o,n,s,l,i)=>{const r=this.manifestBundles.find(y=>y.bundle===o.bundle),a=o.cap>=4&&r&&r.composes||[],u=[],p=[],h=new Set;for(const y of a){const _=this.resolveRef(y,o.bundle);if(!_){p.push(y);continue}_.key===o.key||h.has(_.key)||(h.add(_.key),u.push(_))}u.sort((y,_)=>_.cap-y.cap||y.label.localeCompare(_.label));for(const y of u){const _={id:l.length,label:y.label,tag:y.tag,cap:y.cap,selects:y.key,depth:n+1,ancestors:i,kids:0};l.push(_);const F=l.length;s.has(y.key)||t(y,n+1,new Set([...s,y.key]),l,[...i,_.id]),_.kids=l.filter((H,ee)=>ee>=F&&H.depth===n+2).length}for(const y of p)l.push({id:l.length,label:y,part:!0,selects:o.key,depth:n+1,ancestors:i,kids:0})};for(const o of this.manifestBundles){if(!o.composes||!o.composes.length||Bi.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||""},effectiveProvider(){const e=String(this.userProvider||this.provider||this.cfg.provider||"").toLowerCase().trim();return e==="maplibre"||e==="mapbox"?e:""},engines(){return[{id:"",label:this.tr("engineDefault"),note:""},{id:"mapbox",label:"Mapbox",note:this.tr("engineMapboxNote")},{id:"maplibre",label:"MapLibre",note:this.tr("engineMaplibreNote")}]},engineLabel(){return this.userProvider==="mapbox"?"Mapbox":this.userProvider==="maplibre"?"MapLibre":this.tr("engineDefault")},tokenSource(){return this.userTk?"yours":this.fetchedTk?"url":this.tk||this.cfg.tk||this.bakedTk?"built":"none"},tokenStatus(){return this.effectiveProvider==="maplibre"?this.tr("tokenNotNeeded"):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 cd(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.hostProvider=typeof window<"u"&&typeof window.MAP_PROVIDER=="string"?window.MAP_PROVIDER:"",this.publishProvider(),this.userTk?this.publishToken():(this.userTokenUrl||this.tokenUrl||this.cfg.tokenUrl)&&this.fetchToken(this.userTokenUrl||this.tokenUrl||this.cfg.tokenUrl).then(e=>{e&&e!==this.fetchedTk&&(this.fetchedTk=e,this.publishToken(),this.remountPanes())}).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,xt(Oo,this.userTk),xt(Po,this.userTokenUrl),this.publishToken(),this.remountPanes(),this.settingsOpen=!1}finally{this.tokenBusy=!1}},setHeaderHidden(e){this.headerHidden=!!e,this.settingsOpen=!1,this.engineOpen=!1,this.localeOpen=!1,xt(Fi,e?"1":"")},setProvider(e){this.engineOpen=!1,e!==this.userProvider&&(this.userProvider=e,xt(ji,e),this.publishProvider(),this.remountPanes())},publishProvider(){typeof window>"u"||(this.effectiveProvider?window.MAP_PROVIDER=this.effectiveProvider:this.hostProvider?window.MAP_PROVIDER=this.hostProvider:"MAP_PROVIDER"in window&&delete window.MAP_PROVIDER)},clearToken(){this.tokenDraft="",this.urlDraft="",this.tokenErr="",this.userTk="",this.userTokenUrl="",this.fetchedTk="",xt(Oo,""),xt(Po,""),this.publishToken(),this.remountPanes()},publishToken(){typeof window>"u"||(this.effectiveTk?(Ui(this.effectiveTk),window.MAP_TOKEN!==this.effectiveTk&&(window.MAP_TOKEN=this.effectiveTk)):ud())},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=(Ho[this.locale]||{})[e]||(Ho[o]||{})[e]||(Ho.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):dd()},paneConfig(e,t){const o={profile:e.profile,instanceId:"ps-"+e.key.replace(/\//g,"-"),locale:t};this.effectiveTk&&(o.tk=this.effectiveTk);const n=this.userTokenUrl||this.tokenUrl||this.cfg.tokenUrl;return n&&(o.tokenUrl=n),this.effectiveProvider&&(o.provider=this.effectiveProvider),this.base&&(o.treeBase=this.base),o},setLocale(e){this.locale=e,this.localeOpen=!1,pd(e);try{for(const t of this.rows){if(!t.mounted)continue;const o=this._slots&&this._slots[t.key],n=o&&o.firstElementChild;n&&n.setAttribute&&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"||Bi.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=bd(n.type||"single"),r=zi.has(l)||zi.has(o.bundle);t.push({key:o.bundle+"/"+n.profile,bundle:o.bundle,label:vd[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);xd(t).then(()=>kd(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{}}}}),$d={class:"ps-count"},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"],Md=["onClick"],Nd={class:"ps-flag"},Cd={class:"ps-locale-name"},Ad={class:"ps-locale-en"},Od={class:"ps-locale ps-engine"},Pd=["aria-expanded","aria-label","title"],Hd={class:"ps-locale-name"},Rd=["aria-label"],Id=["aria-selected"],Ud=["onClick"],Dd={class:"ps-locale-name"},Fd={class:"ps-locale-en"},jd={class:"ps-token"},Vd=["aria-expanded","title"],zd={class:"ps-locale-name"},Bd={class:"ps-token-head"},Kd={class:"ps-token-label"},Wd={class:"ps-token-label"},qd={class:"ps-token-row"},Yd=["disabled"],Gd={class:"ps-token-note"},Jd=["title","aria-label"],Xd={class:"ps-locale-name"},Zd={key:0,class:"ps-toolbar"},Qd={class:"ps-bar"},ep={class:"ps-bar-t"},tp={class:"ps-bar-sub"},op={key:0},np=["aria-expanded"],sp={key:0,class:"ps-embed"},ip=["value"],lp=["title","aria-label"],rp={class:"ps-stage"},ap=["hidden"],cp={key:0,class:"ps-hint"},dp={key:1,class:"ps-hint err"},pp={key:0,class:"ps-hint"};function up(e,t,o,n,s,l){const i=As("StudioTree"),r=As("VerticalTabsLayout");return L(),$o(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:!e.headerHidden,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[11]||(t[11]=[x("span",{class:"ps-logo","aria-hidden":"true"},[x("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[x("path",{d:"M10 3v3M14 3v3M7 6h10v5a5 5 0 0 1-10 0V6Z"}),x("path",{d:"M12 16v5"})])],-1)])]),meta:ut(()=>[x("span",$d,T(e.countLabel),1),x("span",wd,[x("button",{type:"button",class:"ps-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":e.tr("changeLanguage"),onClick:t[0]||(t[0]=a=>{e.localeOpen=!e.localeOpen,e.engineOpen=!1,e.settingsOpen=!1})},[x("span",_d,T(e.activeLang.flag),1),x("span",Ld,T(e.activeLang.nativeName),1),t[12]||(t[12]=x("span",{class:"ps-dots","aria-hidden":"true"},"⋮",-1))],8,Sd),e.localeOpen?(L(),E("ul",Ed,[(L(!0),E(Y,null,Te(e.switcherLangs,a=>(L(),E("li",{key:a.code,role:"option","aria-selected":String(a.code===e.locale)},[x("button",{type:"button",class:he(["ps-locale-opt",{active:a.code===e.locale}]),onClick:u=>e.setLocale(a.code)},[x("span",Nd,T(a.flag),1),x("span",Cd,T(a.nativeName),1),x("span",Ad,T(a.name),1)],10,Md)],8,Td))),128))])):G("",!0)]),x("span",Od,[x("button",{type:"button",class:"ps-locale-btn","aria-expanded":String(e.engineOpen),"aria-label":e.tr("mapEngine"),title:e.tr("mapEngine"),onClick:t[1]||(t[1]=a=>{e.engineOpen=!e.engineOpen,e.localeOpen=!1,e.settingsOpen=!1})},[t[13]||(t[13]=x("span",{"aria-hidden":"true"},"🗺",-1)),x("span",Hd,T(e.engineLabel),1),t[14]||(t[14]=x("span",{class:"ps-dots","aria-hidden":"true"},"⋮",-1))],8,Pd),e.engineOpen?(L(),E("ul",{key:0,class:"ps-locale-menu",role:"listbox","aria-label":e.tr("mapEngine")},[(L(!0),E(Y,null,Te(e.engines,a=>(L(),E("li",{key:a.id||"default",role:"option","aria-selected":String(a.id===e.userProvider)},[x("button",{type:"button",class:he(["ps-locale-opt",{active:a.id===e.userProvider}]),onClick:u=>e.setProvider(a.id)},[x("span",Dd,T(a.label),1),x("span",Fd,T(a.note),1)],10,Ud)],8,Id))),128))],8,Rd)):G("",!0)]),x("span",jd,[x("button",{type:"button",class:"ps-locale-btn ps-token-btn","aria-expanded":String(e.settingsOpen),title:e.tokenStatus,onClick:t[2]||(t[2]=a=>{e.settingsOpen=!e.settingsOpen,e.localeOpen=!1,e.engineOpen=!1})},[x("span",zd,T(e.tr("mapboxToken")),1),x("span",{class:he(["ps-token-dot","is-"+e.tokenSource]),"aria-hidden":"true"},null,2)],8,Vd),e.settingsOpen?(L(),E("form",{key:0,class:"ps-token-panel",onSubmit:t[6]||(t[6]=Mi((...a)=>e.applyToken&&e.applyToken(...a),["prevent"]))},[x("p",Bd,T(e.tr("mapToken")),1),x("label",Kd,[Ke(T(e.tr("tokenPaste"))+" ",1),ft(x("input",{class:"ps-token-input","onUpdate:modelValue":t[3]||(t[3]=a=>e.tokenDraft=a),placeholder:"pk.eyJ…",autocomplete:"off",spellcheck:"false"},null,512),[[Nn,e.tokenDraft,void 0,{trim:!0}]])]),x("label",Wd,[Ke(T(e.tr("tokenUrlLabel"))+" ",1),ft(x("input",{class:"ps-token-input","onUpdate:modelValue":t[4]||(t[4]=a=>e.urlDraft=a),type:"url",placeholder:"https://doxa.life/api/maps/token",autocomplete:"off",spellcheck:"false"},null,512),[[Nn,e.urlDraft,void 0,{trim:!0}]])]),x("div",qd,[x("button",{type:"submit",class:"ps-token-apply",disabled:e.tokenBusy},T(e.tr("tokenApply")),9,Yd),x("button",{type:"button",class:"ps-token-clear",onClick:t[5]||(t[5]=(...a)=>e.clearToken&&e.clearToken(...a))},T(e.tr("tokenClear")),1)]),x("p",{class:he(["ps-token-status",{err:!!e.tokenErr}]),role:"status"},T(e.tokenErr||e.tokenStatus),3),x("p",Gd,T(e.tr("tokenStoredHere")),1)],32)):G("",!0)]),x("button",{type:"button",class:"ps-locale-btn ps-hide-header",title:e.tr("hideHeader"),"aria-label":e.tr("hideHeader"),onClick:t[7]||(t[7]=a=>e.setHeaderHidden(!0))},[t[15]||(t[15]=x("span",{"aria-hidden":"true"},"⌃",-1)),x("span",Xd,T(e.tr("hideHeader")),1)],8,Jd)]),toolbar:ut(()=>[e.active?(L(),E("div",Zd,[x("div",Qd,[x("div",ep,[x("b",null,T(e.active.label),1),x("span",tp,[Ke(T(e.active.bundle)+" · <"+T(e.active.tag)+">",1),e.active.description?(L(),E("span",op," · "+T(e.active.description),1)):G("",!0)])]),e.active.embed?(L(),E("button",{key:0,type:"button",class:"ps-btn","aria-expanded":String(e.embedOpen),onClick:t[8]||(t[8]=a=>e.embedOpen=!e.embedOpen)},T(e.tr("copyEmbed")),9,np)):G("",!0)]),e.embedOpen&&e.active.embed?(L(),E("div",sp,[x("label",null,[Ke(T(e.tr("scriptEmbed"))+" ",1),x("button",{type:"button",class:"ps-btn",onClick:t[9]||(t[9]=a=>e.copyText(e.active.embed,a.target))},T(e.tr("copy")),1)]),x("textarea",{readonly:"",value:e.active.embed},null,8,ip)])):G("",!0)])):G("",!0)]),default:ut(()=>[e.headerHidden?(L(),E("button",{key:0,type:"button",class:"ps-show-header",title:e.tr("showHeader"),"aria-label":e.tr("showHeader"),onClick:t[10]||(t[10]=a=>e.setHeaderHidden(!1))},[t[16]||(t[16]=x("span",{"aria-hidden":"true"},"⌄",-1)),Ke(" "+T(e.tr("showHeader")),1)],8,lp)):G("",!0),x("div",rp,[(L(!0),E(Y,null,Te(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(Y,{key:0},[x("div",{class:"ps-slot",ref_for:!0,ref:u=>e.setSlot(a.key,u)},null,512),a.state==="loading"?(L(),E("div",cp,T(e.tr("loading",{name:a.label})),1)):a.state==="error"?(L(),E("div",dp,[Ke(T(e.tr("couldNotLoad",{name:a.label})),1),t[17]||(t[17]=x("br",null,null,-1)),x("small",null,T(a.error),1)])):G("",!0)],64)):G("",!0)],8,ap)),[[_n,a.key===e.activeKey]])),128)),e.activeKey?G("",!0):(L(),E("div",pp,T(e.tr("chooseElement")),1))])]),_:1},8,["title","dir","nav-label","labels","header","active","onUpdate:active"])}const fp=An(yd,[["render",up],["styles",[fd]]]);function hp(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const gp=hp(),bp=ha(fp,{configureApp(e){e.provide("psTreeBase",gp)}});typeof customElements<"u"&&!customElements.get("plugin-studio")&&customElements.define("plugin-studio",bp)})();
|