doxa-maps/public/dx-maps/plugin-studio/plugin-studio.js
Doxa Maps 46b1e857b9
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Rebuild the consumers main left stale (build owner, README rule 5)
check:composite-freshness found stale on main: country-posters
doxa-maps-spa
key-cities
my-upg-100-list
plugin-studio
pplr-data-maps
regions-dashboard. Rebuilt, tree + SRI
regenerated; the landing precondition (fresh, one folder, SRI) passed in main-capture scan.
2026-09-28 00:24:23 +00:00

417 lines
243 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function(){"use strict";/**
* @vue/shared v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/function zo(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const B={},at=[],ye=()=>{},Dn=()=>!1,Xt=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,jo=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},oa=Object.prototype.hasOwnProperty,R=(e,t)=>oa.call(e,t),M=Array.isArray,qe=e=>vt(e)==="[object Map]",Zt=e=>vt(e)==="[object Set]",Un=e=>vt(e)==="[object Date]",O=e=>typeof e=="function",X=e=>typeof e=="string",_e=e=>typeof e=="symbol",W=e=>e!==null&&typeof e=="object",Wn=e=>(W(e)||O(e))&&O(e.then)&&O(e.catch),zn=Object.prototype.toString,vt=e=>zn.call(e),na=e=>vt(e).slice(8,-1),Qt=e=>vt(e)==="[object Object]",Bo=e=>X(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,xt=zo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),eo=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},sa=/-\w/g,ne=eo(e=>e.replace(sa,t=>t.slice(1).toUpperCase())),ia=/\B([A-Z])/g,$e=eo(e=>e.replace(ia,"-$1").toLowerCase()),to=eo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Vo=eo(e=>e?`on${to(e)}`:""),Re=(e,t)=>!Object.is(e,t),oo=(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},Bn=e=>{const t=X(e)?Number(e):NaN;return isNaN(t)?e:t};let Vn;const no=()=>Vn||(Vn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function kt(e){if(M(e)){const t={};for(let o=0;o<e.length;o++){const n=e[o],s=X(n)?ca(n):kt(n);if(s)for(const i in s)t[i]=s[i]}return t}else if(X(e)||W(e))return e}const aa=/;(?![^(]*\))/g,la=/:([^]+)/,ra=/\/\*[^]*?\*\//g;function ca(e){const t={};return e.replace(ra,"").split(aa).forEach(o=>{if(o){const n=o.split(la);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function he(e){let t="";if(X(e))t=e;else if(M(e))for(let o=0;o<e.length;o++){const n=he(e[o]);n&&(t+=n+" ")}else if(W(e))for(const o in e)e[o]&&(t+=o+" ");return t.trim()}const da=zo("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Kn(e){return!!e||e===""}function pa(e,t){if(e.length!==t.length)return!1;let o=!0;for(let n=0;o&&n<e.length;n++)o=so(e[n],t[n]);return o}function Gn(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 i=-1;for(let a=0;a<o.length;a++)if(!n[a]&&so(s,o[a])){i=a;break}if(i<0)return!1;n[i]=1}return!0}function so(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=_e(e),n=_e(t),o||n)return e===t;if(o=M(e),n=M(t),o||n)return o&&n?pa(e,t):!1;if(o=W(e),n=W(t),o||n){if(!o||!n)return!1;if(o=qe(e),n=qe(t),o||n||(o=Zt(e),n=Zt(t),o||n))return o&&n?Gn(e,t):!1;const s=Object.keys(e).length,i=Object.keys(t).length;if(s!==i)return!1;for(const a in e){const l=e.hasOwnProperty(a),r=t.hasOwnProperty(a);if(l&&!r||!l&&r||!so(e[a],t[a]))return!1}}return String(e)===String(t)}const qn=e=>!!(e&&e.__v_isRef===!0),E=e=>X(e)?e:e==null?"":M(e)||W(e)&&(e.toString===zn||!O(e.toString))?qn(e)?E(e.value):JSON.stringify(e,Yn,2):String(e),Yn=(e,t)=>qn(t)?Yn(e,t.value):qe(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[n,s],i)=>(o[Go(n,i)+" =>"]=s,o),{})}:Zt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Go(o))}:_e(t)?Go(t):W(t)&&!M(t)&&!Qt(t)?String(t):t,Go=(e,t="")=>{var o;return _e(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 ua{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 fa(){return se}let K;const qo=new WeakSet;class Xn{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||Zn(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,ns(this),Qn(this);const t=K,o=ve;K=this,ve=!0;try{return this.fn()}finally{es(this),K=t,ve=o,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Zo(t);this.deps=this.depsTail=void 0,ns(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 Jn=0,yt,wt;function Zn(e,t=!1){if(e.flags|=8,t){e.next=wt,wt=e;return}e.next=yt,yt=e}function Yo(){Jn++}function Xo(){if(--Jn>0)return;if(wt){let t=wt;for(wt=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;yt;){let t=yt;for(yt=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 Qn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function es(e){let t,o=e.depsTail,n=o;for(;n;){const s=n.prevDep;n.version===-1?(n===o&&(o=s),Zo(n),ha(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&&(ts(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ts(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===St)||(e.globalVersion=St,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Jo(e))))return;e.flags|=2;const t=e.dep,o=K,n=ve;K=e,ve=!0;try{Qn(e);const s=e.fn(e._value);(t.version===0||Re(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{K=o,ve=n,es(e),e.flags&=-3}}function Zo(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 i=o.computed.deps;i;i=i.nextDep)Zo(i,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function ha(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let ve=!0;const os=[];function we(){os.push(ve),ve=!1}function Se(){const e=os.pop();ve=e===void 0?!0:e}function ns(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=K;K=void 0;try{t()}finally{K=o}}}let St=0;class ga{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 ss{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(!K||!ve||K===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==K)o=this.activeLink=new ga(K,this),K.deps?(o.prevDep=K.depsTail,K.depsTail.nextDep=o,K.depsTail=o):K.deps=K.depsTail=o,is(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=K.depsTail,o.nextDep=void 0,K.depsTail.nextDep=o,K.depsTail=o,K.deps===o&&(K.deps=n)}return o}trigger(t){this.version++,St++,this.notify(t)}notify(t){Yo();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Xo()}}}function is(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)is(n)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Qo=new WeakMap,Ze=Symbol(""),en=Symbol(""),Lt=Symbol("");function le(e,t,o){if(ve&&K){let n=Qo.get(e);n||Qo.set(e,n=new Map);let s=n.get(o);s||(n.set(o,s=new ss),s.map=n,s.key=o),s.track()}}function De(e,t,o,n,s,i){const a=Qo.get(e);if(!a){St++;return}const l=r=>{r&&r.trigger()};if(Yo(),t==="clear")a.forEach(l);else{const r=M(e),p=r&&Bo(o);if(r&&o==="length"){const d=Number(n);a.forEach((f,x)=>{(x==="length"||x===Lt||!_e(x)&&x>=d)&&l(f)})}else switch((o!==void 0||a.has(void 0))&&l(a.get(o)),p&&l(a.get(Lt)),t){case"add":r?p&&l(a.get("length")):(l(a.get(Ze)),qe(e)&&l(a.get(en)));break;case"delete":r||(l(a.get(Ze)),qe(e)&&l(a.get(en)));break;case"set":qe(e)&&l(a.get(Ze));break}}Xo()}function lt(e){const t=D(e);return t===e?t:(le(t,"iterate",Lt),xe(e)?t:t.map(We))}function io(e){return le(e=D(e),"iterate",Lt),e}function Le(e,t){return Ye(e)?rt(Qe(e)?We(t):t):We(t)}const ba={__proto__:null,[Symbol.iterator](){return tn(this,Symbol.iterator,e=>Le(this,e))},concat(...e){return lt(this).concat(...e.map(t=>M(t)?lt(t):t))},entries(){return tn(this,"entries",e=>(e[1]=Le(this,e[1]),e))},every(e,t){return Ue(this,"every",e,t,void 0,arguments)},filter(e,t){return Ue(this,"filter",e,t,o=>o.map(n=>Le(this,n)),arguments)},find(e,t){return Ue(this,"find",e,t,o=>Le(this,o),arguments)},findIndex(e,t){return Ue(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ue(this,"findLast",e,t,o=>Le(this,o),arguments)},findLastIndex(e,t){return Ue(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ue(this,"forEach",e,t,void 0,arguments)},includes(...e){return on(this,"includes",e)},indexOf(...e){return on(this,"indexOf",e)},join(e){return lt(this).join(e)},lastIndexOf(...e){return on(this,"lastIndexOf",e)},map(e,t){return Ue(this,"map",e,t,void 0,arguments)},pop(){return Nt(this,"pop")},push(...e){return Nt(this,"push",e)},reduce(e,...t){return as(this,"reduce",e,t)},reduceRight(e,...t){return as(this,"reduceRight",e,t)},shift(){return Nt(this,"shift")},some(e,t){return Ue(this,"some",e,t,void 0,arguments)},splice(...e){return Nt(this,"splice",e)},toReversed(){return lt(this).toReversed()},toSorted(e){return lt(this).toSorted(e)},toSpliced(...e){return lt(this).toSpliced(...e)},unshift(...e){return Nt(this,"unshift",e)},values(){return tn(this,"values",e=>Le(this,e))}};function tn(e,t,o){const n=io(e),s=n[t]();return n!==e&&!xe(e)&&(s._next=s.next,s.next=()=>{const i=s._next();return i.done||(i.value=o(i.value)),i}),s}const $a=Array.prototype;function Ue(e,t,o,n,s,i){const a=io(e),l=a!==e&&!xe(e),r=a[t];if(r!==$a[t]){const f=r.apply(e,i);return l?We(f):f}let p=o;a!==e&&(l?p=function(f,x){return o.call(this,Le(e,f),x,e)}:o.length>2&&(p=function(f,x){return o.call(this,f,x,e)}));const d=r.call(a,p,n);return l&&s?s(d):d}function as(e,t,o,n){const s=io(e),i=s!==e&&!xe(e);let a=o,l=!1;s!==e&&(i?(l=n.length===0,a=function(p,d,f){return l&&(l=!1,p=Le(e,p)),o.call(this,p,Le(e,d),f,e)}):o.length>3&&(a=function(p,d,f){return o.call(this,p,d,f,e)}));const r=s[t](a,...n);return l?Le(e,r):r}function on(e,t,o){const n=D(e);le(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 Nt(e,t,o=[]){we(),Yo();const n=D(e)[t].apply(e,o);return Xo(),Se(),n}const ma=zo("__proto__,__v_isRef,__isVue"),ls=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(_e));function _a(e){_e(e)||(e=String(e));const t=D(this);return le(t,"has",e),t.hasOwnProperty(e)}class rs{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,i=this._isShallow;if(o==="__v_isReactive")return!s;if(o==="__v_isReadonly")return s;if(o==="__v_isShallow")return i;if(o==="__v_raw")return n===(s?i?hs:fs:i?us:ps).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const a=M(t);if(!s){let r;if(a&&(r=ba[o]))return r;if(o==="hasOwnProperty")return _a}const l=Reflect.get(t,o,re(t)?t:n);if((_e(o)?ls.has(o):ma(o))||(s||le(t,"get",o),i))return l;if(re(l)){const r=a&&Bo(o)?l:l.value;return s&&W(r)?an(r):r}return W(l)?s?an(l):sn(l):l}}class cs extends rs{constructor(t=!1){super(!1,t)}set(t,o,n,s){let i=t[o];const a=M(t)&&Bo(o);if(!this._isShallow){const p=Ye(i);if(!xe(n)&&!Ye(n)&&(i=D(i),n=D(n)),!a&&re(i)&&!re(n))return p||(i.value=n),!0}const l=a?Number(o)<t.length:R(t,o),r=Reflect.set(t,o,n,re(t)?t:s);return t===D(s)&&r&&(l?Re(n,i)&&De(t,"set",o,n):De(t,"add",o,n)),r}deleteProperty(t,o){const n=R(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(!_e(o)||!ls.has(o))&&le(t,"has",o),n}ownKeys(t){return le(t,"iterate",M(t)?"length":Ze),Reflect.ownKeys(t)}}class ds extends rs{constructor(t=!1){super(!0,t)}set(t,o){return!0}deleteProperty(t,o){return!0}}const va=new cs,xa=new ds,ka=new cs(!0),ya=new ds(!0),nn=e=>e,ao=e=>Reflect.getPrototypeOf(e);function wa(e,t,o){return function(...n){const s=this.__v_raw,i=D(s),a=qe(i),l=e==="entries"||e===Symbol.iterator&&a,r=e==="keys"&&a,p=s[e](...n),d=o?nn:t?rt:We;return!t&&le(i,"iterate",r?en:Ze),Q(Object.create(p),{next(){const{value:f,done:x}=p.next();return x?{value:f,done:x}:{value:l?[d(f[0]),d(f[1])]:d(f),done:x}}})}}function lo(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Sa(e,t){const o={get(s){const i=this.__v_raw,a=D(i),l=D(s);e||(Re(s,l)&&le(a,"get",s),le(a,"get",l));const{has:r}=ao(a),p=t?nn:e?rt:We;if(r.call(a,s))return p(i.get(s));if(r.call(a,l))return p(i.get(l));i!==a&&i.get(s)},get size(){const s=this.__v_raw;return!e&&le(D(s),"iterate",Ze),s.size},has(s){const i=this.__v_raw,a=D(i),l=D(s);return e||(Re(s,l)&&le(a,"has",s),le(a,"has",l)),s===l?i.has(s):i.has(s)||i.has(l)},forEach(s,i){const a=this,l=a.__v_raw,r=D(l),p=t?nn:e?rt:We;return!e&&le(r,"iterate",Ze),l.forEach((d,f)=>s.call(i,p(d),p(f),a))}};return Q(o,e?{add:lo("add"),set:lo("set"),delete:lo("delete"),clear:lo("clear")}:{add(s){const i=D(this),a=ao(i),l=D(s),r=!t&&!xe(s)&&!Ye(s)?l:s;return a.has.call(i,r)||Re(s,r)&&a.has.call(i,s)||Re(l,r)&&a.has.call(i,l)||(i.add(r),De(i,"add",r,r)),this},set(s,i){!t&&!xe(i)&&!Ye(i)&&(i=D(i));const a=D(this),{has:l,get:r}=ao(a);let p=l.call(a,s);p||(s=D(s),p=l.call(a,s));const d=r.call(a,s);return a.set(s,i),p?Re(i,d)&&De(a,"set",s,i):De(a,"add",s,i),this},delete(s){const i=D(this),{has:a,get:l}=ao(i);let r=a.call(i,s);r||(s=D(s),r=a.call(i,s)),l&&l.call(i,s);const p=i.delete(s);return r&&De(i,"delete",s,void 0),p},clear(){const s=D(this),i=s.size!==0,a=s.clear();return i&&De(s,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(s=>{o[s]=wa(s,e,t)}),o}function ro(e,t){const o=Sa(e,t);return(n,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?n:Reflect.get(R(o,s)&&s in n?o:n,s,i)}const La={get:ro(!1,!1)},Na={get:ro(!1,!0)},Ea={get:ro(!0,!1)},Pa={get:ro(!0,!0)},ps=new WeakMap,us=new WeakMap,fs=new WeakMap,hs=new WeakMap;function Ta(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function sn(e){return Ye(e)?e:co(e,!1,va,La,ps)}function Ca(e){return co(e,!1,ka,Na,us)}function an(e){return co(e,!0,xa,Ea,fs)}function Op(e){return co(e,!0,ya,Pa,hs)}function co(e,t,o,n,s){if(!W(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=s.get(e);if(i)return i;const a=Ta(na(e));if(a===0)return e;const l=new Proxy(e,a===2?n:o);return s.set(e,l),l}function Qe(e){return Ye(e)?Qe(e.__v_raw):!!(e&&e.__v_isReactive)}function Ye(e){return!!(e&&e.__v_isReadonly)}function xe(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 Ma(e){return!R(e,"__v_skip")&&Object.isExtensible(e)&&jn(e,"__v_skip",!0),e}const We=e=>W(e)?sn(e):e,rt=e=>W(e)?an(e):e;function re(e){return e?e.__v_isRef===!0:!1}function gs(e){return re(e)?e.value:e}const Aa={get:(e,t,o)=>t==="__v_raw"?e:gs(Reflect.get(e,t,o)),set:(e,t,o,n)=>{const s=e[t];return re(s)&&!re(o)?(s.value=o,!0):Reflect.set(e,t,o,n)}};function bs(e){return Qe(e)?e:new Proxy(e,Aa)}class Oa{constructor(t,o,n){this.fn=t,this.setter=o,this._value=void 0,this.dep=new ss(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=St-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&K!==this)return Zn(this,!0),!0}get value(){const t=this.dep.track();return ts(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ia(e,t,o=!1){let n,s;return O(e)?n=e:(n=e.get,s=e.set),new Oa(n,s,o)}const po={},uo=new WeakMap;let et;function Ha(e,t=!1,o=et){if(o){let n=uo.get(o);n||uo.set(o,n=[]),n.push(e)}}function Fa(e,t,o=B){const{immediate:n,deep:s,once:i,scheduler:a,augmentJob:l,call:r}=o,p=C=>s?C:xe(C)||s===!1||s===0?ze(C,1):ze(C);let d,f,x,v,U=!1,I=!1;if(re(e)?(f=()=>e.value,U=xe(e)):Qe(e)?(f=()=>p(e),U=!0):M(e)?(I=!0,U=e.some(C=>Qe(C)||xe(C)),f=()=>e.map(C=>{if(re(C))return C.value;if(Qe(C))return p(C);if(O(C))return r?r(C,2):C()})):O(e)?t?f=r?()=>r(e,2):e:f=()=>{if(x){we();try{x()}finally{Se()}}const C=et;et=d;try{return r?r(e,3,[v]):e(v)}finally{et=C}}:f=ye,t&&s){const C=f,oe=s===!0?1/0:s;f=()=>ze(C(),oe)}const ee=fa(),J=()=>{d.stop(),ee&&ee.active&&jo(ee.effects,d)};if(i&&t){const C=t;t=(...oe)=>{const Me=C(...oe);return J(),Me}}let F=I?new Array(e.length).fill(po):po;const z=C=>{if(!(!(d.flags&1)||!d.dirty&&!C))if(t){const oe=d.run();if(C||s||U||(I?oe.some((Me,Ae)=>Re(Me,F[Ae])):Re(oe,F))){x&&x();const Me=et;et=d;try{const Ae=[oe,F===po?void 0:I&&F[0]===po?[]:F,v];F=oe,r?r(t,3,Ae):t(...Ae)}finally{et=Me}}}else d.run()};return l&&l(z),d=new Xn(f),d.scheduler=a?()=>a(z,!1):z,v=C=>Ha(C,!1,d),x=d.onStop=()=>{const C=uo.get(d);if(C){if(r)r(C,4);else for(const oe of C)oe();uo.delete(d)}},t?n?z(!0):F=d.run():a?a(z.bind(null,!0),!0):d.run(),J.pause=d.pause.bind(d),J.resume=d.resume.bind(d),J.stop=J,J}function ze(e,t=1/0,o){if(t<=0||!W(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,re(e))ze(e.value,t,o);else if(M(e))for(let n=0;n<e.length;n++)ze(e[n],t,o);else if(Zt(e)||qe(e))e.forEach(n=>{ze(n,t,o)});else if(Qt(e)){for(const n in e)ze(e[n],t,o);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&ze(e[n],t,o)}return e}/**
* @vue/runtime-core v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/const Et=[];let rn=!1;function Ip(e,...t){if(rn)return;rn=!0,we();const o=Et.length?Et[Et.length-1].component:null,n=o&&o.appContext.config.warnHandler,s=Ra();if(n)ct(n,o,11,[e+t.map(i=>{var a,l;return(l=(a=i.toString)==null?void 0:a.call(i))!=null?l:JSON.stringify(i)}).join(""),o&&o.proxy,s.map(({vnode:i})=>`at <${$i(o,i.type)}>`).join(`
`),s]);else{const i=[`[Vue warn]: ${e}`,...t];s.length&&i.push(`
`,...Da(s)),console.warn(...i)}Se(),rn=!1}function Ra(){let e=Et[Et.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 Da(e){const t=[];return e.forEach((o,n)=>{t.push(...n===0?[]:[`
`],...Ua(o))}),t}function Ua({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,s=` at <${$i(e.component,e.type,n)}`,i=">"+o;return e.props?[s,...Wa(e.props),i]:[s+i]}function Wa(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(n=>{t.push(...$s(n,e[n]))}),o.length>3&&t.push(" ..."),t}function $s(e,t,o){return X(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:re(t)?(t=$s(e,D(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):O(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){fo(s,t,o)}}function ke(e,t,o,n){if(O(e)){const s=ct(e,t,o,n);return s&&Wn(s)&&s.catch(i=>{fo(i,t,o)}),s}if(M(e)){const s=[];for(let i=0;i<e.length;i++)s.push(ke(e[i],t,o,n));return s}}function fo(e,t,o,n=!0){const s=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:a}=t&&t.appContext.config||B;if(t){let l=t.parent;const r=t.proxy,p=`https://vuejs.org/error-reference/#runtime-${o}`;for(;l;){const d=l.ec;if(d){for(let f=0;f<d.length;f++)if(d[f](e,r,p)===!1)return}l=l.parent}if(i){we(),ct(i,null,10,[e,r,p]),Se();return}}za(e,o,s,n,a)}function za(e,t,o,n=!0,s=!1){if(s)throw e;console.error(e)}const de=[];let Ne=-1;const dt=[];let Xe=null,pt=0;const ms=Promise.resolve();let ho=null;function _s(e){const t=ho||ms;return e?t.then(this?e.bind(this):e):t}function ja(e){let t=Ne+1,o=de.length;for(;t<o;){const n=t+o>>>1,s=de[n],i=Pt(s);i<e||i===e&&s.flags&2?t=n+1:o=n}return t}function cn(e){if(!(e.flags&1)){const t=Pt(e),o=de[de.length-1];!o||!(e.flags&2)&&t>=Pt(o)?de.push(e):de.splice(ja(t),0,e),e.flags|=1,vs()}}function vs(){ho||(ho=ms.then(ys))}function Ba(e){if(!M(e))Xe&&e.id===-1?Xe.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=Ne+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)=>Pt(o)-Pt(n));if(dt.length=0,Xe){for(let o=0;o<t.length;o++)Xe.push(t[o]);return}for(Xe=t,pt=0;pt<Xe.length;pt++){const o=Xe[pt];o.flags&4&&(o.flags&=-2),o.flags&8||o(),o.flags&=-2}Xe=null,pt=0}}const Pt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ys(e){try{for(Ne=0;Ne<de.length;Ne++){const t=de[Ne];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(;Ne<de.length;Ne++){const t=de[Ne];t&&(t.flags&=-2)}Ne=-1,de.length=0,ks(),ho=null,(de.length||dt.length)&&ys()}}let ie=null,ws=null;function go(e){const t=ie;return ie=e,ws=e&&e.type.__scopeId||null,t}function ut(e,t=ie,o){if(!t||e._n)return e;const n=(...s)=>{n._d&&ri(-1);const i=go(t),a=Be.length;let l;try{l=e(...s)}finally{for(let r=Be.length;r>a;r--)yn();go(i),n._d&&ri(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function ft(e,t){if(ie===null)return e;const o=No(ie),n=e.dirs||(e.dirs=[]);for(let s=0;s<t.length;s++){let[i,a,l,r=B]=t[s];i&&(O(i)&&(i={mounted:i,updated:i}),i.deep&&ze(a),n.push({dir:i,instance:o,value:a,oldValue:void 0,arg:l,modifiers:r}))}return e}function tt(e,t,o,n){const s=e.dirs,i=t&&t.dirs;for(let a=0;a<s.length;a++){const l=s[a];i&&(l.oldValue=i[a].value);let r=l.dir[n];r&&(we(),ke(r,o,8,[e.el,l,e,t]),Se())}}function Va(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 Tt(e,t,o=!1){const n=pi();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&&O(t)?t.call(n&&n.proxy):t}}const Ka=Symbol.for("v-scx"),Ga=()=>Tt(Ka);function dn(e,t,o){return Ss(e,t,o)}function Ss(e,t,o=B){const{immediate:n,deep:s,flush:i,once:a}=o,l=Q({},o),r=t&&n||!t&&i!=="post";let p;if(Dt){if(i==="sync"){const v=Ga();p=v.__watcherHandles||(v.__watcherHandles=[])}else if(!r){const v=()=>{};return v.stop=ye,v.resume=ye,v.pause=ye,v}}const d=ce;l.call=(v,U,I)=>ke(v,d,U,I);let f=!1;i==="post"?l.scheduler=v=>{fe(v,d&&d.suspense)}:i!=="sync"&&(f=!0,l.scheduler=(v,U)=>{U?v():cn(v)}),l.augmentJob=v=>{t&&(v.flags|=4),f&&(v.flags|=2,d&&(v.id=d.uid,v.i=d))};const x=Fa(e,t,l);return Dt&&(p?p.push(x):r&&x()),x}function qa(e,t,o){const n=this.proxy,s=X(e)?e.includes(".")?Ls(n,e):()=>n[e]:e.bind(n,n);let i;O(t)?i=t:(i=t.handler,o=t);const a=Rt(this),l=Ss(s,i.bind(n),o);return a(),l}function Ls(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 Ya=Symbol("_vte"),bo=e=>e.__isTeleport,pn=Symbol("_leaveCb");function Xa(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Pe){t=o;break}}return t}function Ns(e){if(!fn(e))return bo(e.type)&&e.children?Xa(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&&O(o.default))return o.default()}}function un(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;un(bo(o.type)&&Ns(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 $o(e,t){return O(e)?Q({name:e.name},t,{setup:e}):e}function Es(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Ps(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(M(e)){e.forEach((I,ee)=>Ct(I,t&&(M(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 i=n.shapeFlag&4?No(n.component):n.el,a=s?null:i,{i:l,r}=e,p=t&&t.r,d=l.refs===B?l.refs={}:l.refs,f=l.setupState,x=D(f),v=f===B?Dn:I=>Ps(d,I)?!1:R(x,I),U=(I,ee)=>!(ee&&Ps(d,ee));if(p!=null&&p!==r){if(Ts(t),X(p))d[p]=null,v(p)&&(f[p]=null);else if(re(p)){const I=t;U(p,I.k)&&(p.value=null),I.k&&(d[I.k]=null)}}if(O(r))ct(r,l,12,[a,d]);else{const I=X(r),ee=re(r);if(I||ee){const J=()=>{if(e.f){const F=I?v(r)?f[r]:d[r]:U()||!e.k?r.value:d[e.k];if(s)M(F)&&jo(F,i);else if(M(F))F.includes(i)||F.push(i);else if(I)d[r]=[i],v(r)&&(f[r]=d[r]);else{const z=[i];U(r,e.k)&&(r.value=z),e.k&&(d[e.k]=z)}}else I?(d[r]=a,v(r)&&(f[r]=a)):ee&&(U(r,e.k)&&(r.value=a),e.k&&(d[e.k]=a))};if(a){const F=()=>{J(),mo.delete(e)};F.id=-1,mo.set(e,F),fe(F,o)}else Ts(e),J()}}}function Ts(e){const t=mo.get(e);t&&(t.flags|=8,mo.delete(e))}no().requestIdleCallback,no().cancelIdleCallback;const ht=e=>!!e.type.__asyncLoader,fn=e=>e.type.__isKeepAlive;function Ja(e,t){Cs(e,"a",t)}function Za(e,t){Cs(e,"da",t)}function Cs(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(_o(t,n,o),o){let s=o.parent;for(;s&&s.parent;)fn(s.parent.vnode)&&Qa(n,t,o,s),s=s.parent}}function Qa(e,t,o,n){const s=_o(t,e,n,!0);As(()=>{jo(n[t],s)},o)}function _o(e,t,o=ce,n=!1){if(o){const s=o[e]||(o[e]=[]),i=t.__weh||(t.__weh=(...a)=>{we();const l=Rt(o),r=ke(t,o,e,a);return l(),Se(),r});return n?s.unshift(i):s.push(i),i}}const je=e=>(t,o=ce)=>{(!Dt||e==="sp")&&_o(e,(...n)=>t(...n),o)},el=je("bm"),Ms=je("m"),tl=je("bu"),ol=je("u"),nl=je("bum"),As=je("um"),sl=je("sp"),il=je("rtg"),al=je("rtc");function ll(e,t=ce){_o("ec",e,t)}const rl="components";function Os(e,t){return dl(rl,e,!0,t)||e}const cl=Symbol.for("v-ndc");function dl(e,t,o=!0,n=!1){const s=ie||ce;if(s){const i=s.type;{const l=bi(i,!1);if(l&&(l===t||l===ne(t)||l===to(ne(t))))return i}const a=Is(s[e]||i[e],t)||Is(s.appContext[e],t);return!a&&n?i:a}}function Is(e,t){return e&&(e[t]||e[ne(t)]||e[to(ne(t))])}function Ee(e,t,o,n){let s;const i=o,a=M(e);if(a||X(e)){const l=a&&Qe(e);let r=!1,p=!1;l&&(r=!xe(e),p=Ye(e),e=io(e)),s=new Array(e.length);for(let d=0,f=e.length;d<f;d++)s[d]=t(r?p?rt(We(e[d])):We(e[d]):e[d],d,void 0,i)}else if(typeof e=="number"){s=new Array(e);for(let l=0;l<e;l++)s[l]=t(l+1,l,void 0,i)}else if(W(e))if(e[Symbol.iterator])s=Array.from(e,(l,r)=>t(l,r,void 0,i));else{const l=Object.keys(e);s=new Array(l.length);for(let r=0,p=l.length;r<p;r++){const d=l[r];s[r]=t(e[d],d,r,i)}}else s=[];return s}function Mt(e,t,o,n,s,i){if(o==null&&(o={}),ie.ce||ie.parent&&ht(ie.parent)&&ie.parent.ce){const p=i!=null&&o.key==null?Q({},o,{key:i}):o,d=Object.keys(p).length>0;return t!=="default"&&(p.name=t),L(),yo(q,null,[me("slot",p,n)],d?-2:64)}let a=e[t];a&&a._c&&(a._d=!1);const l=Be.length;L();let r;try{const p=a&&Hs(a(o)),d=o.key||i||p&&p.key;r=yo(q,{key:(d&&!_e(d)?d:`_${t}`)+(!p&&n?"_fb":"")},p||(n?n():[]),p&&e._===1?64:-2)}catch(p){for(let d=Be.length;d>l;d--)yn();throw p}finally{a&&a._c&&(a._d=!0)}return r.scopeId&&(r.slotScopeIds=[r.scopeId+"-s"]),r}function Hs(e){return e.some(t=>wn(t)?!(t.type===Pe||t.type===q&&!Hs(t.children)):!0)?e:null}const hn=e=>e?fi(e)?No(e):hn(e.parent):null,At=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=>hn(e.parent),$root:e=>hn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Us(e),$forceUpdate:e=>e.f||(e.f=()=>{cn(e.update)}),$nextTick:e=>e.n||(e.n=_s.bind(e.proxy)),$watch:e=>qa.bind(e)}),gn=(e,t)=>e!==B&&!e.__isScriptSetup&&R(e,t),pl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:n,data:s,props:i,accessCache:a,type:l,appContext:r}=e;if(t[0]!=="$"){const x=a[t];if(x!==void 0)switch(x){case 1:return n[t];case 2:return s[t];case 4:return o[t];case 3:return i[t]}else{if(gn(n,t))return a[t]=1,n[t];if(s!==B&&R(s,t))return a[t]=2,s[t];if(R(i,t))return a[t]=3,i[t];if(o!==B&&R(o,t))return a[t]=4,o[t];bn&&(a[t]=0)}}const p=At[t];let d,f;if(p)return t==="$attrs"&&le(e.attrs,"get",""),p(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(o!==B&&R(o,t))return a[t]=4,o[t];if(f=r.config.globalProperties,R(f,t))return f[t]},set({_:e},t,o){const{data:n,setupState:s,ctx:i}=e;return gn(s,t)?(s[t]=o,!0):n!==B&&R(n,t)?(n[t]=o,!0):R(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:n,appContext:s,props:i,type:a}},l){let r;return!!(o[l]||e!==B&&l[0]!=="$"&&R(e,l)||gn(t,l)||R(i,l)||R(n,l)||R(At,l)||R(s.config.globalProperties,l)||(r=a.__cssModules)&&r[l])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:R(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function Fs(e){return M(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let bn=!0;function ul(e){const t=Us(e),o=e.proxy,n=e.ctx;bn=!1,t.beforeCreate&&Rs(t.beforeCreate,e,"bc");const{data:s,computed:i,methods:a,watch:l,provide:r,inject:p,created:d,beforeMount:f,mounted:x,beforeUpdate:v,updated:U,activated:I,deactivated:ee,beforeDestroy:J,beforeUnmount:F,destroyed:z,unmounted:C,render:oe,renderTracked:Me,renderTriggered:Ae,errorCaptured:Je,serverPrefetch:Fo,expose:nt,inheritAttrs:Kt,components:Ro,directives:Do,filters:Fn}=t;if(p&&fl(p,n,null),a)for(const Z in a){const G=a[Z];O(G)&&(n[Z]=G.bind(o))}if(s){const Z=s.call(o,o);W(Z)&&(e.data=sn(Z))}if(bn=!0,i)for(const Z in i){const G=i[Z],st=O(G)?G.bind(o,o):O(G.get)?G.get.bind(o,o):ye,Uo=!O(G)&&O(G.set)?G.set.bind(o):ye,it=Xl({get:st,set:Uo});Object.defineProperty(n,Z,{enumerable:!0,configurable:!0,get:()=>it.value,set:Oe=>it.value=Oe})}if(l)for(const Z in l)Ds(l[Z],n,o,Z);if(r){const Z=O(r)?r.call(o):r;Reflect.ownKeys(Z).forEach(G=>{Va(G,Z[G])})}d&&Rs(d,e,"c");function ue(Z,G){M(G)?G.forEach(st=>Z(st.bind(o))):G&&Z(G.bind(o))}if(ue(el,f),ue(Ms,x),ue(tl,v),ue(ol,U),ue(Ja,I),ue(Za,ee),ue(ll,Je),ue(al,Me),ue(il,Ae),ue(nl,F),ue(As,C),ue(sl,Fo),M(nt))if(nt.length){const Z=e.exposed||(e.exposed={});nt.forEach(G=>{Object.defineProperty(Z,G,{get:()=>o[G],set:st=>o[G]=st,enumerable:!0})})}else e.exposed||(e.exposed={});oe&&e.render===ye&&(e.render=oe),Kt!=null&&(e.inheritAttrs=Kt),Ro&&(e.components=Ro),Do&&(e.directives=Do),Fo&&Es(e)}function fl(e,t,o=ye){M(e)&&(e=$n(e));for(const n in e){const s=e[n];let i;W(s)?"default"in s?i=Tt(s.from||n,s.default,!0):i=Tt(s.from||n):i=Tt(s),re(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[n]=i}}function Rs(e,t,o){ke(M(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,o)}function Ds(e,t,o,n){let s=n.includes(".")?Ls(o,n):()=>o[n];if(X(e)){const i=t[e];O(i)&&dn(s,i)}else if(O(e))dn(s,e.bind(o));else if(W(e))if(M(e))e.forEach(i=>Ds(i,t,o,n));else{const i=O(e.handler)?e.handler.bind(o):t[e.handler];O(i)&&dn(s,i,e)}}function Us(e){const t=e.type,{mixins:o,extends:n}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,l=i.get(t);let r;return l?r=l:!s.length&&!o&&!n?r=t:(r={},s.length&&s.forEach(p=>vo(r,p,a,!0)),vo(r,t,a)),W(t)&&i.set(t,r),r}function vo(e,t,o,n=!1){const{mixins:s,extends:i}=t;i&&vo(e,i,o,!0),s&&s.forEach(a=>vo(e,a,o,!0));for(const a in t)if(!(n&&a==="expose")){const l=hl[a]||o&&o[a];e[a]=l?l(e[a],t[a]):t[a]}return e}const hl={data:Ws,props:zs,emits:zs,methods:Ot,computed:Ot,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:Ot,directives:Ot,watch:bl,provide:Ws,inject:gl};function Ws(e,t){return t?e?function(){return Q(O(e)?e.call(this,this):e,O(t)?t.call(this,this):t)}:t:e}function gl(e,t){return Ot($n(e),$n(t))}function $n(e){if(M(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 Ot(e,t){return e?Q(Object.create(null),e,t):t}function zs(e,t){return e?M(e)&&M(t)?[...new Set([...e,...t])]:Q(Object.create(null),Fs(e),Fs(t??{})):t}function bl(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:Dn,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 $l=0;function ml(e,t){return function(n,s=null){O(n)||(n=Q({},n)),s!=null&&!W(s)&&(s=null);const i=js(),a=new WeakSet,l=[];let r=!1;const p=i.app={_uid:$l++,_component:n,_props:s,_container:null,_context:i,_instance:null,version:Jl,get config(){return i.config},set config(d){},use(d,...f){return a.has(d)||(d&&O(d.install)?(a.add(d),d.install(p,...f)):O(d)&&(a.add(d),d(p,...f))),p},mixin(d){return i.mixins.includes(d)||i.mixins.push(d),p},component(d,f){return f?(i.components[d]=f,p):i.components[d]},directive(d,f){return f?(i.directives[d]=f,p):i.directives[d]},mount(d,f,x){if(!r){const v=p._ceVNode||me(n,s);return v.appContext=i,x===!0?x="svg":x===!1&&(x=void 0),e(v,d,x),r=!0,p._container=d,d.__vue_app__=p,No(v.component)}},onUnmount(d){l.push(d)},unmount(){r&&(ke(l,p._instance,16),e(null,p._container),delete p._container.__vue_app__)},provide(d,f){return i.provides[d]=f,p},runWithContext(d){const f=gt;gt=p;try{return d()}finally{gt=f}}};return p}}let gt=null;const _l=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ne(t)}Modifiers`]||e[`${$e(t)}Modifiers`];function vl(e,t,...o){if(e.isUnmounted)return;const n=e.vnode.props||B;let s=o;const i=t.startsWith("update:"),a=i&&_l(n,t.slice(7));a&&(a.trim&&(s=o.map(d=>X(d)?d.trim():d)),a.number&&(s=s.map(Ko)));let l,r=n[l=Vo(t)]||n[l=Vo(ne(t))];!r&&i&&(r=n[l=Vo($e(t))]),r&&ke(r,e,6,s);const p=n[l+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ke(p,e,6,s)}}const xl=new WeakMap;function Bs(e,t,o=!1){const n=o?xl:t.emitsCache,s=n.get(e);if(s!==void 0)return s;const i=e.emits;let a={},l=!1;if(!O(e)){const r=p=>{const d=Bs(p,t,!0);d&&(l=!0,Q(a,d))};!o&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!i&&!l?(W(e)&&n.set(e,null),null):(M(i)?i.forEach(r=>a[r]=null):Q(a,i),W(e)&&n.set(e,a),a)}function xo(e,t){return!e||!Xt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),R(e,t[0].toLowerCase()+t.slice(1))||R(e,$e(t))||R(e,t))}function Hp(){}function Vs(e){const{type:t,vnode:o,proxy:n,withProxy:s,propsOptions:[i],slots:a,attrs:l,emit:r,render:p,renderCache:d,props:f,data:x,setupState:v,ctx:U,inheritAttrs:I}=e,ee=go(e);let J,F;try{if(o.shapeFlag&4){const C=s||n,oe=C;J=Te(p.call(oe,C,d,f,v,x,U)),F=l}else{const C=t;J=Te(C.length>1?C(f,{attrs:l,slots:a,emit:r}):C(f,null)),F=t.props?l:kl(l)}}catch(C){Be.length=0,fo(C,e,1),J=me(Pe)}let z=J;if(F&&I!==!1){const C=Object.keys(F),{shapeFlag:oe}=z;C.length&&oe&7&&(i&&C.some(Jt)&&(F=yl(F,i)),z=bt(z,F,!1,!0))}if(o.dirs&&(z=bt(z,null,!1,!0),z.dirs=z.dirs?z.dirs.concat(o.dirs):o.dirs),o.transition){const C=bo(z.type)&&Ns(z)||z;un(C,o.transition)}return J=z,go(ee),J}const kl=e=>{let t;for(const o in e)(o==="class"||o==="style"||Xt(o))&&((t||(t={}))[o]=e[o]);return t},yl=(e,t)=>{const o={};for(const n in e)(!Jt(n)||!(n.slice(9)in t))&&(o[n]=e[n]);return o};function wl(e,t,o){const{props:n,children:s,component:i}=e,{props:a,children:l,patchFlag:r}=t,p=i.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&r>=0){if(r&1024)return!0;if(r&16)return n?Ks(n,a,p):!!a;if(r&8){const d=t.dynamicProps;for(let f=0;f<d.length;f++){const x=d[f];if(Gs(a,n,x)&&!xo(p,x))return!0}}}else return(s||l)&&(!l||!l.$stable)?!0:n===a?!1:n?a?Ks(n,a,p):!0:!!a;return!1}function Ks(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 i=n[s];if(Gs(t,e,i)&&!xo(o,i))return!0}return!1}function Gs(e,t,o){const n=e[o],s=t[o];return o==="style"&&W(n)&&W(s)?!so(n,s):n!==s}function Sl({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 qs={},Ys=()=>Object.create(qs),Xs=e=>Object.getPrototypeOf(e)===qs;function Ll(e,t,o,n=!1){const s={},i=Ys();e.propsDefaults=Object.create(null),Js(e,t,s,i);for(const a in e.propsOptions[0])a in s||(s[a]=void 0);o?e.props=n?s:Ca(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function Nl(e,t,o,n){const{props:s,attrs:i,vnode:{patchFlag:a}}=e,l=D(s),[r]=e.propsOptions;let p=!1;if((n||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let f=0;f<d.length;f++){let x=d[f];if(xo(e.emitsOptions,x))continue;const v=t[x];if(r)if(R(i,x))v!==i[x]&&(i[x]=v,p=!0);else{const U=ne(x);s[U]=mn(r,l,U,v,e,!1)}else v!==i[x]&&(i[x]=v,p=!0)}}}else{Js(e,t,s,i)&&(p=!0);let d;for(const f in l)(!t||!R(t,f)&&((d=$e(f))===f||!R(t,d)))&&(r?o&&(o[f]!==void 0||o[d]!==void 0)&&(s[f]=mn(r,l,f,void 0,e,!0)):delete s[f]);if(i!==l)for(const f in i)(!t||!R(t,f))&&(delete i[f],p=!0)}p&&De(e.attrs,"set","")}function Js(e,t,o,n){const[s,i]=e.propsOptions;let a=!1,l;if(t)for(let r in t){if(xt(r))continue;const p=t[r];let d;s&&R(s,d=ne(r))?!i||!i.includes(d)?o[d]=p:(l||(l={}))[d]=p:xo(e.emitsOptions,r)||(!(r in n)||p!==n[r])&&(n[r]=p,a=!0)}if(i){const r=D(o),p=l||B;for(let d=0;d<i.length;d++){const f=i[d];o[f]=mn(s,r,f,p[f],e,!R(p,f))}}return a}function mn(e,t,o,n,s,i){const a=e[o];if(a!=null){const l=R(a,"default");if(l&&n===void 0){const r=a.default;if(a.type!==Function&&!a.skipFactory&&O(r)){const{propsDefaults:p}=s;if(o in p)n=p[o];else{const d=Rt(s);n=p[o]=r.call(null,t),d()}}else n=r;s.ce&&s.ce._setProp(o,n)}a[0]&&(i&&!l?n=!1:a[1]&&(n===""||n===$e(o))&&(n=!0))}return n}const El=new WeakMap;function Zs(e,t,o=!1){const n=o?El:t.propsCache,s=n.get(e);if(s)return s;const i=e.props,a={},l=[];let r=!1;if(!O(e)){const d=f=>{r=!0;const[x,v]=Zs(f,t,!0);Q(a,x),v&&l.push(...v)};!o&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!r)return W(e)&&n.set(e,at),at;if(M(i))for(let d=0;d<i.length;d++){const f=ne(i[d]);Qs(f)&&(a[f]=B)}else if(i)for(const d in i){const f=ne(d);if(Qs(f)){const x=i[d],v=a[f]=M(x)||O(x)?{type:x}:Q({},x),U=v.type;let I=!1,ee=!0;if(M(U))for(let J=0;J<U.length;++J){const F=U[J],z=O(F)&&F.name;if(z==="Boolean"){I=!0;break}else z==="String"&&(ee=!1)}else I=O(U)&&U.name==="Boolean";v[0]=I,v[1]=ee,(I||R(v,"default"))&&l.push(f)}}const p=[a,l];return W(e)&&n.set(e,p),p}function Qs(e){return e[0]!=="$"&&!xt(e)}const _n=e=>e==="_"||e==="_ctx"||e==="$stable",vn=e=>M(e)?e.map(Te):[Te(e)],Pl=(e,t,o)=>{if(t._n)return t;const n=ut((...s)=>vn(t(...s)),o);return n._c=!1,n},ei=(e,t,o)=>{const n=e._ctx;for(const s in e){if(_n(s))continue;const i=e[s];if(O(i))t[s]=Pl(s,i,n);else if(i!=null){const a=vn(i);t[s]=()=>a}}},ti=(e,t)=>{const o=vn(t);e.slots.default=()=>o},oi=(e,t,o)=>{for(const n in t)(o||!_n(n))&&(e[n]=t[n])},Tl=(e,t,o)=>{const n=e.slots=Ys();if(e.vnode.shapeFlag&32){const s=t._;s?(oi(n,t,o),o&&jn(n,"_",s,!0)):ei(t,n)}else t&&ti(e,t)},Cl=(e,t,o)=>{const{vnode:n,slots:s}=e;let i=!0,a=B;if(n.shapeFlag&32){const l=t._;l?o&&l===1?i=!1:oi(s,t,o):(i=!t.$stable,ei(t,s)),a=t}else t&&(ti(e,t),a={default:1});if(i)for(const l in s)!_n(l)&&a[l]==null&&delete s[l]},fe=Hl;function Ml(e){return Al(e)}function Al(e,t){const o=no();o.__VUE__=!0;const{insert:n,remove:s,patchProp:i,createElement:a,createText:l,createComment:r,setText:p,setElementText:d,parentNode:f,nextSibling:x,setScopeId:v=ye,insertStaticContent:U}=e,I=(c,u,h,m=null,$=null,g=null,w=void 0,y=null,k=!!u.dynamicChildren)=>{if(c===u)return;c&&!Ht(c,u)&&(m=Wo(c),Oe(c,$,g,!0),c=null),u.patchFlag===-2&&(k=!1,u.dynamicChildren=null);const{type:b,ref:T,shapeFlag:S}=u;switch(b){case ko:ee(c,u,h,m);break;case Pe:J(c,u,h,m);break;case kn:c==null&&F(u,h,m,w);break;case q:Ro(c,u,h,m,$,g,w,y,k);break;default:S&1?oe(c,u,h,m,$,g,w,y,k):S&6?Do(c,u,h,m,$,g,w,y,k):(S&64||S&128)&&b.process(c,u,h,m,$,g,w,y,k,qt)}T!=null&&$?Ct(T,c&&c.ref,g,u||c,!u):T==null&&c&&c.ref!=null&&Ct(c.ref,null,g,c,!0)},ee=(c,u,h,m)=>{if(c==null)n(u.el=l(u.children),h,m);else{const $=u.el=c.el;u.children!==c.children&&p($,u.children)}},J=(c,u,h,m)=>{c==null?n(u.el=r(u.children||""),h,m):u.el=c.el},F=(c,u,h,m)=>{[c.el,c.anchor]=U(c.children,u,h,m,c.el,c.anchor)},z=({el:c,anchor:u},h,m)=>{let $;for(;c&&c!==u;)$=x(c),n(c,h,m),c=$;n(u,h,m)},C=({el:c,anchor:u})=>{let h;for(;c&&c!==u;)h=x(c),s(c),c=h;s(u)},oe=(c,u,h,m,$,g,w,y,k)=>{if(u.type==="svg"?w="svg":u.type==="math"&&(w="mathml"),c==null)Me(u,h,m,$,g,w,y,k);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Fo(c,u,$,g,w,y,k)}finally{b&&b._endPatch()}}},Me=(c,u,h,m,$,g,w,y)=>{let k,b;const{props:T,shapeFlag:S,transition:P,dirs:A}=c;if(k=c.el=a(c.type,g,T&&T.is,T),S&8?d(k,c.children):S&16&&Je(c.children,k,null,m,$,xn(c,g),w,y),A&&tt(c,null,m,"created"),Ae(k,c,c.scopeId,w,m),T){for(const V in T)V!=="value"&&!xt(V)&&i(k,V,null,T[V],g,m);"value"in T&&i(k,"value",null,T.value,g),(b=T.onVnodeBeforeMount)&&Ce(b,m,c)}A&&tt(c,null,m,"beforeMount");const H=Ol($,P);H&&P.beforeEnter(k),n(k,u,h),((b=T&&T.onVnodeMounted)||H||A)&&fe(()=>{try{b&&Ce(b,m,c),H&&P.enter(k),A&&tt(c,null,m,"mounted")}finally{}},$)},Ae=(c,u,h,m,$)=>{if(h&&v(c,h),m)for(let g=0;g<m.length;g++)v(c,m[g]);if($){let g=$.subTree;if(u===g||li(g.type)&&(g.ssContent===u||g.ssFallback===u)){const w=$.vnode;Ae(c,w,w.scopeId,w.slotScopeIds,$.parent)}}},Je=(c,u,h,m,$,g,w,y,k=0)=>{for(let b=k;b<c.length;b++){const T=c[b]=y?Ke(c[b]):Te(c[b]);I(null,T,u,h,m,$,g,w,y)}},Fo=(c,u,h,m,$,g,w)=>{const y=u.el=c.el;let{patchFlag:k,dynamicChildren:b,dirs:T}=u;k|=c.patchFlag&16;const S=c.props||B,P=u.props||B;let A;if(h&&ot(h,!1),(A=P.onVnodeBeforeUpdate)&&Ce(A,h,u,c),T&&tt(u,c,h,"beforeUpdate"),h&&ot(h,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&(k=0,w=!1,b=null),(S.innerHTML&&P.innerHTML==null||S.textContent&&P.textContent==null)&&d(y,""),b?nt(c.dynamicChildren,b,y,h,m,xn(u,$),g):w||G(c,u,y,null,h,m,xn(u,$),g,!1),k>0){if(k&16)Kt(y,S,P,h,$);else if(k&2&&S.class!==P.class&&i(y,"class",null,P.class,$),k&4&&i(y,"style",S.style,P.style,$),k&8){const H=u.dynamicProps;for(let V=0;V<H.length;V++){const j=H[V],te=S[j],ae=P[j];(ae!==te||j==="value")&&i(y,j,te,ae,$,h)}}k&1&&c.children!==u.children&&d(y,u.children)}else!w&&b==null&&Kt(y,S,P,h,$);((A=P.onVnodeUpdated)||T)&&fe(()=>{A&&Ce(A,h,u,c),T&&tt(u,c,h,"updated")},m)},nt=(c,u,h,m,$,g,w)=>{for(let y=0;y<u.length;y++){const k=c[y],b=u[y],T=k.el&&(k.type===q||!Ht(k,b)||k.shapeFlag&198)?f(k.el):h;I(k,b,T,null,m,$,g,w,!0)}},Kt=(c,u,h,m,$)=>{if(u!==h){if(u!==B)for(const g in u)!xt(g)&&!(g in h)&&i(c,g,u[g],null,$,m);for(const g in h){if(xt(g))continue;const w=h[g],y=u[g];w!==y&&g!=="value"&&i(c,g,y,w,$,m)}"value"in h&&i(c,"value",u.value,h.value,$)}},Ro=(c,u,h,m,$,g,w,y,k)=>{const b=u.el=c?c.el:l(""),T=u.anchor=c?c.anchor:l("");let{patchFlag:S,dynamicChildren:P,slotScopeIds:A}=u;A&&(y=y?y.concat(A):A),c==null?(n(b,h,m),n(T,h,m),Je(u.children||[],h,T,$,g,w,y,k)):S>0&&S&64&&P&&c.dynamicChildren&&c.dynamicChildren.length===P.length?(nt(c.dynamicChildren,P,h,$,g,w,y),(u.key!=null||$&&u===$.subTree)&&ni(c,u,!0)):G(c,u,h,T,$,g,w,y,k)},Do=(c,u,h,m,$,g,w,y,k)=>{u.slotScopeIds=y,c==null?u.shapeFlag&512?$.ctx.activate(u,h,m,w,k):Fn(u,h,m,$,g,w,k):Xi(c,u,k)},Fn=(c,u,h,m,$,g,w)=>{const y=c.component=zl(c,m,$);if(fn(c)&&(y.ctx.renderer=qt),jl(y,!1,w),y.asyncDep){if($&&$.registerDep(y,ue,w),!c.el){const k=y.subTree=me(Pe);J(null,k,u,h),c.placeholder=k.el}}else ue(y,c,u,h,$,g,w)},Xi=(c,u,h)=>{const m=u.component=c.component;if(wl(c,u,h))if(m.asyncDep&&!m.asyncResolved){Z(m,u,h);return}else m.next=u,m.update();else u.el=c.el,m.vnode=u},ue=(c,u,h,m,$,g,w)=>{const y=()=>{if(c.isMounted){let{next:S,bu:P,u:A,parent:H,vnode:V}=c;{const He=si(c);if(He){S&&(S.el=V.el,Z(c,S,w)),He.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},$)});return}}let j=S,te;ot(c,!1),S?(S.el=V.el,Z(c,S,w)):S=V,P&&oo(P),(te=S.props&&S.props.onVnodeBeforeUpdate)&&Ce(te,H,S,V),ot(c,!0);const ae=Vs(c),Ie=c.subTree;c.subTree=ae,I(Ie,ae,f(Ie.el),Wo(Ie),c,$,g),S.el=ae.el,j===null&&Sl(c,ae.el),A&&fe(A,$),(te=S.props&&S.props.onVnodeUpdated)&&fe(()=>Ce(te,H,S,V),$)}else{let S;const{el:P,props:A}=u,{bm:H,m:V,parent:j,root:te,type:ae}=c,Ie=ht(u);ot(c,!1),H&&oo(H),!Ie&&(S=A&&A.onVnodeBeforeMount)&&Ce(S,j,u),ot(c,!0);{te.ce&&te.ce._hasShadowRoot()&&te.ce._injectChildStyle(ae,c.parent?c.parent.type:void 0);const He=c.subTree=Vs(c);I(null,He,h,m,c,$,g),u.el=He.el}if(V&&fe(V,$),!Ie&&(S=A&&A.onVnodeMounted)){const He=u;fe(()=>Ce(S,j,He),$)}(u.shapeFlag&256||j&&ht(j.vnode)&&j.vnode.shapeFlag&256)&&c.a&&fe(c.a,$),c.isMounted=!0,u=h=m=null}};c.scope.on();const k=c.effect=new Xn(y);c.scope.off();const b=c.update=k.run.bind(k),T=c.job=k.runIfDirty.bind(k);T.i=c,T.id=c.uid,k.scheduler=()=>cn(T),ot(c,!0),b()},Z=(c,u,h)=>{u.component=c;const m=c.vnode.props;c.vnode=u,c.next=null,Nl(c,u.props,m,h),Cl(c,u.children,h),we(),xs(c),Se()},G=(c,u,h,m,$,g,w,y,k=!1)=>{const b=c&&c.children,T=c?c.shapeFlag:0,S=u.children,{patchFlag:P,shapeFlag:A}=u;if(P>0){if(P&128){Uo(b,S,h,m,$,g,w,y,k);return}else if(P&256){st(b,S,h,m,$,g,w,y,k);return}}A&8?(T&16&&Gt(b,$,g),S!==b&&d(h,S)):T&16?A&16?Uo(b,S,h,m,$,g,w,y,k):Gt(b,$,g,!0):(T&8&&d(h,""),A&16&&Je(S,h,m,$,g,w,y,k))},st=(c,u,h,m,$,g,w,y,k)=>{c=c||at,u=u||at;const b=c.length,T=u.length,S=Math.min(b,T);let P;for(P=0;P<S;P++){const A=u[P]=k?Ke(u[P]):Te(u[P]);I(c[P],A,h,null,$,g,w,y,k)}b>T?Gt(c,$,g,!0,!1,S):Je(u,h,m,$,g,w,y,k,S)},Uo=(c,u,h,m,$,g,w,y,k)=>{let b=0;const T=u.length;let S=c.length-1,P=T-1;for(;b<=S&&b<=P;){const A=c[b],H=u[b]=k?Ke(u[b]):Te(u[b]);if(Ht(A,H))I(A,H,h,null,$,g,w,y,k);else break;b++}for(;b<=S&&b<=P;){const A=c[S],H=u[P]=k?Ke(u[P]):Te(u[P]);if(Ht(A,H))I(A,H,h,null,$,g,w,y,k);else break;S--,P--}if(b>S){if(b<=P){const A=P+1,H=A<T?u[A].el:m;for(;b<=P;)I(null,u[b]=k?Ke(u[b]):Te(u[b]),h,H,$,g,w,y,k),b++}}else if(b>P)for(;b<=S;)Oe(c[b],$,g,!0),b++;else{const A=b,H=b,V=new Map;for(b=H;b<=P;b++){const be=u[b]=k?Ke(u[b]):Te(u[b]);be.key!=null&&V.set(be.key,b)}let j,te=0;const ae=P-H+1;let Ie=!1,He=0;const Yt=new Array(ae);for(b=0;b<ae;b++)Yt[b]=0;for(b=A;b<=S;b++){const be=c[b];if(te>=ae){Oe(be,$,g,!0);continue}let Fe;if(be.key!=null)Fe=V.get(be.key);else for(j=H;j<=P;j++)if(Yt[j-H]===0&&Ht(be,u[j])){Fe=j;break}Fe===void 0?Oe(be,$,g,!0):(Yt[Fe-H]=b+1,Fe>=He?He=Fe:Ie=!0,I(be,u[Fe],h,null,$,g,w,y,k),te++)}const Qi=Ie?Il(Yt):at;for(j=Qi.length-1,b=ae-1;b>=0;b--){const be=H+b,Fe=u[be],ea=u[be+1],ta=be+1<T?ea.el||ai(ea):m;Yt[b]===0?I(null,Fe,h,ta,$,g,w,y,k):Ie&&(j<0||b!==Qi[j]?it(Fe,h,ta,2):j--)}}},it=(c,u,h,m,$=null)=>{const{el:g,type:w,transition:y,children:k,shapeFlag:b}=c;if(b&6){it(c.component.subTree,u,h,m);return}if(b&128){c.suspense.move(u,h,m);return}if(b&64){w.move(c,u,h,qt);return}if(w===q){n(g,u,h);for(let S=0;S<k.length;S++)it(k[S],u,h,m);n(c.anchor,u,h);return}if(w===kn){z(c,u,h);return}if(m!==2&&b&1&&y)if(m===0)y.persisted&&!g[pn]?n(g,u,h):(y.beforeEnter(g),n(g,u,h),fe(()=>y.enter(g),$));else{const{leave:S,delayLeave:P,afterLeave:A}=y,H=()=>{c.ctx.isUnmounted?s(g):n(g,u,h)},V=()=>{const j=g._isLeaving||!!g[pn];g._isLeaving&&g[pn](!0),y.persisted&&!j?H():S(g,()=>{H(),A&&A()})};P?P(g,H,V):V()}else n(g,u,h)},Oe=(c,u,h,m=!1,$=!1)=>{const{type:g,props:w,ref:y,children:k,dynamicChildren:b,shapeFlag:T,patchFlag:S,dirs:P,cacheIndex:A,memo:H}=c;if(S===-2&&($=!1),y!=null&&(we(),Ct(y,null,h,c,!0),Se()),A!=null&&(u.renderCache[A]=void 0),T&256){u.ctx.deactivate(c);return}const V=T&1&&P,j=!ht(c);let te;if(j&&(te=w&&w.onVnodeBeforeUnmount)&&Ce(te,u,c),T&6)Mp(c.component,h,m);else{if(T&128){c.suspense.unmount(h,m);return}V&&tt(c,null,u,"beforeUnmount"),T&64?c.type.remove(c,u,h,qt,m):b&&!b.hasOnce&&(g!==q||S>0&&S&64)?Gt(b,u,h,!1,!0):(g===q&&S&384||!$&&T&16)&&Gt(k,u,h),m&&Ji(c)}const ae=H!=null&&A==null;(j&&(te=w&&w.onVnodeUnmounted)||V||ae)&&fe(()=>{te&&Ce(te,u,c),V&&tt(c,null,u,"unmounted"),ae&&(c.el=null)},h)},Ji=c=>{const{type:u,el:h,anchor:m,transition:$}=c;if(u===q){Cp(h,m);return}if(u===kn){C(c);return}const g=()=>{s(h),$&&!$.persisted&&$.afterLeave&&$.afterLeave()};if(c.shapeFlag&1&&$&&!$.persisted){const{leave:w,delayLeave:y}=$,k=()=>w(h,g);y?y(c.el,g,k):k()}else g()},Cp=(c,u)=>{let h;for(;c!==u;)h=x(c),s(c),c=h;s(u)},Mp=(c,u,h)=>{const{bum:m,scope:$,job:g,subTree:w,um:y,m:k,a:b}=c;ii(k),ii(b),m&&oo(m),$.stop(),g&&(g.flags|=8,Oe(w,c,u,h)),y&&fe(y,u),fe(()=>{c.isUnmounted=!0},u)},Gt=(c,u,h,m=!1,$=!1,g=0)=>{for(let w=g;w<c.length;w++)Oe(c[w],u,h,m,$)},Wo=c=>{if(c.shapeFlag&6)return Wo(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=x(c.anchor||c.el),h=u&&u[Ya];return h?x(h):u};let Rn=!1;const Zi=(c,u,h)=>{let m;c==null?u._vnode&&(Oe(u._vnode,null,null,!0),m=u._vnode.component):I(u._vnode||null,c,u,null,null,null,h),u._vnode=c,Rn||(Rn=!0,xs(m),ks(),Rn=!1)},qt={p:I,um:Oe,m:it,r:Ji,mt:Fn,mc:Je,pc:G,pbc:nt,n:Wo,o:e};return{render:Zi,hydrate:void 0,createApp:ml(Zi)}}function xn({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 Ol(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ni(e,t,o=!1){const n=e.children,s=t.children;if(M(n)&&M(s))for(let i=0;i<n.length;i++){const a=n[i];let l=s[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=s[i]=Ke(s[i]),l.el=a.el),!o&&l.patchFlag!==-2&&ni(a,l)),l.type===ko&&(l.patchFlag===-1&&(l=s[i]=Ke(l)),l.el=a.el),l.type===Pe&&!l.el&&(l.el=a.el)}}function Il(e){const t=e.slice(),o=[0];let n,s,i,a,l;const r=e.length;for(n=0;n<r;n++){const p=e[n];if(p!==0){if(s=o[o.length-1],e[s]<p){t[n]=s,o.push(n);continue}for(i=0,a=o.length-1;i<a;)l=i+a>>1,e[o[l]]<p?i=l+1:a=l;p<e[o[i]]&&(i>0&&(t[n]=o[i-1]),o[i]=n)}}for(i=o.length,a=o[i-1];i-- >0;)o[i]=a,a=t[a];return o}function si(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:si(t)}function ii(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function ai(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?ai(t.subTree):null}const li=e=>e.__isSuspense;function Hl(e,t){t&&t.pendingBranch?M(e)?t.effects.push(...e):t.effects.push(e):Ba(e)}const q=Symbol.for("v-fgt"),ko=Symbol.for("v-txt"),Pe=Symbol.for("v-cmt"),kn=Symbol.for("v-stc"),Be=[];let ge=null;function L(e=!1){Be.push(ge=e?null:[])}function yn(){Be.pop(),ge=Be[Be.length-1]||null}let It=1;function ri(e,t=!1){It+=e,e<0&&ge&&t&&(ge.hasOnce=!0)}function ci(e){return e.dynamicChildren=It>0?ge||at:null,yn(),It>0&&ge&&ge.push(e),e}function N(e,t,o,n,s,i){return ci(_(e,t,o,n,s,i,!0))}function yo(e,t,o,n,s){return ci(me(e,t,o,n,s,!0))}function wn(e){return e?e.__v_isVNode===!0:!1}function Ht(e,t){return e.type===t.type&&e.key===t.key}const di=({key:e})=>e??null,wo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?X(e)||re(e)||O(e)?{i:ie,r:e,k:t,f:!!o}:e:null);function _(e,t=null,o=null,n=0,s=null,i=e===q?0:1,a=!1,l=!1){const r={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&di(t),ref:t&&wo(t),scopeId:ws,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:i,patchFlag:n,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ie};return l?(So(r,o),i&128&&e.normalize(r)):o&&(r.shapeFlag|=X(o)?8:16),It>0&&!a&&ge&&(r.patchFlag>0||i&6)&&r.patchFlag!==32&&ge.push(r),r}const me=Fl;function Fl(e,t=null,o=null,n=0,s=null,i=!1){if((!e||e===cl)&&(e=Pe),wn(e)){const l=bt(e,t,!0);return o&&So(l,o),It>0&&!i&&ge&&(l.shapeFlag&6?ge[ge.indexOf(e)]=l:ge.push(l)),l.patchFlag=-2,l}if(Yl(e)&&(e=e.__vccOpts),t){t=Rl(t);let{class:l,style:r}=t;l&&!X(l)&&(t.class=he(l)),W(r)&&(ln(r)&&!M(r)&&(r=Q({},r)),t.style=kt(r))}const a=X(e)?1:li(e)?128:bo(e)?64:W(e)?4:O(e)?2:0;return _(e,t,o,n,s,a,i,!0)}function Rl(e){return e?ln(e)||Xs(e)?Q({},e):e:null}function bt(e,t,o=!1,n=!1){const{props:s,ref:i,patchFlag:a,children:l,transition:r}=e,p=t?Dl(s||{},t):s,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&di(p),ref:t&&t.ref?o&&i?M(i)?i.concat(wo(t)):[i,wo(t)]:wo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==q?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:r,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 r&&n&&un(d,r.clone(d)),d}function Ve(e=" ",t=0){return me(ko,null,e,t)}function Y(e="",t=!1){return t?(L(),yo(Pe,null,e)):me(Pe,null,e)}function Te(e){return e==null||typeof e=="boolean"?me(Pe):M(e)?me(q,null,e.slice()):wn(e)?Ke(e):me(ko,null,String(e))}function Ke(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(M(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&&!Xs(t)?t._ctx=ie:s===3&&ie&&(ie.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(O(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=[Ve(t)]):o=8;e.children=t,e.shapeFlag|=o}function Dl(...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=kt([t.style,n.style]);else if(Xt(s)){const i=t[s],a=n[s];a&&i!==a&&!(M(i)&&i.includes(a))?t[s]=i?[].concat(i,a):a:a==null&&i==null&&!Jt(s)&&(t[s]=a)}else s!==""&&(t[s]=n[s])}return t}function Ce(e,t,o,n=null){ke(e,t,7,[o,n])}const Ul=js();let Wl=0;function zl(e,t,o){const n=e.type,s=(t?t.appContext:e.appContext)||Ul,i={uid:Wl++,vnode:e,type:n,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ua(!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:Zs(n,s),emitsOptions:Bs(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 i.ctx={_:i},i.root=t?t.root:i,i.emit=vl.bind(null,i),e.ce&&e.ce(i),i}let ce=null;const pi=()=>ce||ie;let Lo,Ft;{const e=no(),t=(o,n)=>{let s;return(s=e[o])||(s=e[o]=[]),s.push(n),i=>{s.length>1?s.forEach(a=>a(i)):s[0](i)}};Lo=t("__VUE_INSTANCE_SETTERS__",o=>ce=o),Ft=t("__VUE_SSR_SETTERS__",o=>Dt=o)}const Rt=e=>{const t=ce;return Lo(e),e.scope.on(),()=>{e.scope.off(),Lo(t)}},ui=()=>{ce&&ce.scope.off(),Lo(null)};function fi(e){return e.vnode.shapeFlag&4}let Dt=!1;function jl(e,t=!1,o=!1){t&&Ft(t);const{props:n,children:s}=e.vnode,i=fi(e);Ll(e,n,i,t),Tl(e,s,o||t);const a=i?Bl(e,t):void 0;return t&&Ft(!1),a}function Bl(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,pl);const{setup:n}=o;if(n){we();const s=e.setupContext=n.length>1?Kl(e):null,i=Rt(e),a=ct(n,e,0,[e.props,s]),l=Wn(a);if(Se(),i(),(l||e.sp)&&!ht(e)&&Es(e),l){if(a.then(ui,ui),t)return a.then(r=>{Ft(!0);try{hi(e,r,t)}finally{Ft(!1)}}).catch(r=>{fo(r,e,0)});e.asyncDep=a}else hi(e,a)}else gi(e)}function hi(e,t,o){O(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:W(t)&&(e.setupState=bs(t)),gi(e)}function gi(e,t,o){const n=e.type;e.render||(e.render=n.render||ye);{const s=Rt(e);we();try{ul(e)}finally{Se(),s()}}}const Vl={get(e,t){return le(e,"get",""),e[t]}};function Kl(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Vl),slots:e.slots,emit:e.emit,expose:t}}function No(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(bs(Ma(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in At)return At[o](e)},has(t,o){return o in t||o in At}})):e.proxy}const Gl=/(?:^|[-_])\w/g,ql=e=>e.replace(Gl,t=>t.toUpperCase()).replace(/[-_]/g,"");function bi(e,t=!0){return O(e)?e.displayName||e.name:e.name||t&&e.__name}function $i(e,t,o=!1){let n=bi(t);if(!n&&t.__file){const s=t.__file.match(/([^/\\]+)\.\w+$/);s&&(n=s[1])}if(!n&&e){const s=i=>{for(const a in i)if(i[a]===t)return a};n=s(e.components)||e.parent&&s(e.parent.type.components)||s(e.appContext.components)}return n?ql(n):o?"App":"Anonymous"}function Yl(e){return O(e)&&"__vccOpts"in e}const Xl=(e,t)=>Ia(e,t,Dt),Jl="3.5.42";/**
* @vue/runtime-dom v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Sn;const mi=typeof window<"u"&&window.trustedTypes;if(mi)try{Sn=mi.createPolicy("vue",{createHTML:e=>e})}catch{}const _i=Sn?e=>Sn.createHTML(e):e=>e,Zl="http://www.w3.org/2000/svg",Ql="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,vi=Ge&&Ge.createElement("template"),er={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"?Ge.createElementNS(Zl,e):t==="mathml"?Ge.createElementNS(Ql,e):o?Ge.createElement(e,{is:o}):Ge.createElement(e);return e==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,n,s,i){const a=o?o.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),o),!(s===i||!(s=s.nextSibling)););else{vi.innerHTML=_i(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=vi.content;if(n==="svg"||n==="mathml"){const r=l.firstChild;for(;r.firstChild;)l.appendChild(r.firstChild);l.removeChild(r)}t.insertBefore(l,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},tr=Symbol("_vtc");function or(e,t,o){const n=e[tr];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"),Ln={name:"show",beforeMount(e,{value:t},{transition:o}){e[Eo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Ut(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),Ut(e,!0),n.enter(e)):n.leave(e,()=>{Ut(e,!1)}):Ut(e,t))},beforeUnmount(e,{value:t}){Ut(e,t)}};function Ut(e,t){e.style.display=t?e[Eo]:"none",e[xi]=!t}const nr=Symbol(""),sr=/(?:^|;)\s*display\s*:/;function ir(e,t,o){const n=e.style,s=X(o);let i=!1;if(o&&!s){if(t)if(X(t))for(const a of t.split(";")){const l=a.slice(0,a.indexOf(":")).trim();o[l]==null&&Wt(n,l,"")}else for(const a in t)o[a]==null&&Wt(n,a,"");for(const a in o){a==="display"&&(i=!0);const l=o[a];l!=null?lr(e,a,!X(t)&&t?t[a]:void 0,l)||Wt(n,a,l):Wt(n,a,"")}}else if(s){if(t!==o){const a=n[nr];a&&(o+=";"+a),n.cssText=o,i=sr.test(o)}}else t&&e.removeAttribute("style");Eo in e&&(e[Eo]=i?n.display:"",e[xi]&&(n.display="none"))}const Po=/\s*!important$/;function Wt(e,t,o){if(M(o))o.forEach(n=>Wt(e,t,n));else if(o==null&&(o=""),t.startsWith("--"))Po.test(o)?e.setProperty(t,o.replace(Po,""),"important"):e.setProperty(t,o);else{const n=ar(e,t);Po.test(o)?e.setProperty($e(n),o.replace(Po,""),"important"):e[n]=o}}const ki=["Webkit","Moz","ms"],Nn={};function ar(e,t){const o=Nn[t];if(o)return o;let n=ne(t);if(n!=="filter"&&n in e)return Nn[t]=n;n=to(n);for(let s=0;s<ki.length;s++){const i=ki[s]+n;if(i in e)return Nn[t]=i}return t}function lr(e,t,o,n){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&X(n)&&o===n}const yi="http://www.w3.org/1999/xlink";function wi(e,t,o,n,s,i=da(t)){n&&t.startsWith("xlink:")?o==null?e.removeAttributeNS(yi,t.slice(6,t.length)):e.setAttributeNS(yi,t,o):o==null||i&&!Kn(o)?e.removeAttribute(t):e.setAttribute(t,i?"":_e(o)?String(o):o)}function Si(e,t,o,n,s){if(t==="innerHTML"||t==="textContent"){o!=null&&(e[t]=t==="innerHTML"?_i(o):o);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const l=i==="OPTION"?e.getAttribute("value")||"":e.value,r=o==null?e.type==="checkbox"?"on":"":String(o);(l!==r||!("_value"in e))&&(e.value=r),o==null&&e.removeAttribute(t),e._value=o;return}let a=!1;if(o===""||o==null){const l=typeof e[t];l==="boolean"?o=Kn(o):o==null&&l==="string"?(o="",a=!0):l==="number"&&(o=0,a=!0)}try{e[t]=o}catch{}a&&e.removeAttribute(s||t)}function $t(e,t,o,n){e.addEventListener(t,o,n)}function rr(e,t,o,n){e.removeEventListener(t,o,n)}const Li=Symbol("_vei");function cr(e,t,o,n,s=null){const i=e[Li]||(e[Li]={}),a=i[t];if(n&&a)a.value=n;else{const[l,r]=ur(t);if(n){const p=i[t]=gr(n,s);$t(e,l,p,r)}else a&&(rr(e,l,a,r),i[t]=void 0)}}const dr=/(Once|Passive|Capture)$/,pr=/^on:?(?:Once|Passive|Capture)$/;function ur(e){let t,o;for(;(o=e.match(dr))&&!pr.test(e);)t||(t={}),e=e.slice(0,e.length-o[1].length),t[o[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):$e(e.slice(2)),t]}let En=0;const fr=Promise.resolve(),hr=()=>En||(fr.then(()=>En=0),En=Date.now());function gr(e,t){const o=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=o.attached)return;const s=o.value;if(M(s)){const i=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{i.call(n),n._stopped=!0};const a=s.slice(),l=[n];for(let r=0;r<a.length&&!n._stopped;r++){const p=a[r];p&&ke(p,t,5,l)}}else ke(s,t,5,[n])};return o.value=e,o.attached=hr(),o}const Ni=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,br=(e,t,o,n,s,i)=>{const a=s==="svg";t==="class"?or(e,n,a):t==="style"?ir(e,o,n):Xt(t)?Jt(t)||cr(e,t,o,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):$r(e,t,n,a))?(Si(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&wi(e,t,n,a,i,t!=="value")):e._isVueCE&&(mr(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!X(n)))?Si(e,ne(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),wi(e,t,n,a))};function $r(e,t,o,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ni(t)&&O(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 Ni(t)&&X(o)?!1:t in e}function mr(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 Ei={};function _r(e,t,o){let n=$o(e,t);Qt(n)&&(n=Q({},n,t));class s extends Pn{constructor(a){super(n,a,o)}}return s.def=n,s}const vr=typeof HTMLElement<"u"?HTMLElement:class{};class Pn extends vr{constructor(t,o={},n=Oi){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!==Oi?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 Pn){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,_s(()=>{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:i,styles:a}=n;let l;if(i&&!M(i))for(const r in i){const p=i[r];(p===Number||p&&p.type===Number)&&(r in this._props&&(this._props[r]=Bn(this._props[r])),(l||(l=Object.create(null)))[ne(r)]=!0)}this._numberProps=l,this._resolveProps(n),this.shadowRoot&&this._applyStyles(a),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)R(this,n)||Object.defineProperty(this,n,{get:()=>gs(o[n])})}_resolveProps(t){const{props:o}=t,n=M(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(i){this._setProp(s,i,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let n=o?this.getAttribute(t):Ei;const s=ne(t);o&&this._numberProps&&this._numberProps[s]&&(n=Bn(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===Ei?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),s&&this._instance&&this._update(),n)){const i=this._ob;i&&(this._processMutations(i.takeRecords()),i.disconnect()),o===!0?this.setAttribute($e(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute($e(t),o+""):o||this.removeAttribute($e(t)),i&&i.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),Sr(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=me(this._def,Q(t,this._props));return this._instance||(o.ce=n=>{this._instance=n,n.ce=this,n.isCE=!0;const s=(i,a)=>{this.dispatchEvent(new CustomEvent(i,Qt(a[0])?Q({detail:a},a[0]):{detail:a}))};n.emit=(i,...a)=>{s(i,a),$e(i)!==i&&s($e(i),a)},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,i=this.shadowRoot,a=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i);let l=null;for(let r=t.length-1;r>=0;r--){const p=document.createElement("style");s&&p.setAttribute("nonce",s),p.textContent=t[r],i.insertBefore(p,l||a),l=p,r===0&&(n||this._styleAnchors.set(this._def,p),o&&this._styleAnchors.set(o,p))}}_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],i=s.getAttribute("name")||"default",a=this._slots[i],l=s.parentNode;if(a)for(const r of a){if(o&&r.nodeType===1){const p=o+"-s",d=document.createTreeWalker(r,1);r.setAttribute(p,"");let f;for(;f=d.nextNode();)f.setAttribute(p,"")}l.insertBefore(r,s)}else for(;s.firstChild;)l.insertBefore(s.firstChild,s);l.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 i=0;i<s.length;i++)o.add(s[i])}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 Pi=e=>{const t=e.props["onUpdate:modelValue"]||!1;return M(t)?o=>oo(t,o):t};function xr(e){e.target.composing=!0}function Ti(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const To=Symbol("_assign"),Co=Symbol("_initialValue");function Tn(e,t,o){return t&&(e=e.trim()),o&&(e=Ko(e)),e}const Cn={created(e,{modifiers:{lazy:t,trim:o,number:n}},s){e.parentNode&&(e.type==="text"?e[Co]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Co]=e.defaultValue.replace(/\r\n?/g,`
`))),e[To]=Pi(s);const i=n||s.props&&s.props.type==="number";$t(e,t?"change":"input",a=>{a.target.composing||e[To](Tn(e.value,o,i))}),(o||i)&&$t(e,"change",()=>{e.value=Tn(e.value,o,i)}),t||($t(e,"compositionstart",xr),$t(e,"compositionend",Ti),$t(e,"change",Ti))},mounted(e,{value:t,modifiers:{trim:o,number:n}}){const s=t??"",i=e[Co];delete e[Co],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[To](Tn(e.value,o,n)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:n,trim:s,number:i}},a){if(e[To]=Pi(a),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Ko(e.value):e.value,r=t??"";if(l===r)return;const p=e.getRootNode();(p instanceof Document||p instanceof ShadowRoot)&&p.activeElement===e&&e.type!=="range"&&(n&&t===o||s&&e.value.trim()===r)||(e.value=r)}},kr=["ctrl","shift","alt","meta"],yr={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)=>kr.some(o=>e[`${o}Key`]&&!t.includes(o))},Ci=(e,t)=>{if(!e)return e;const o=e._withMods||(e._withMods={}),n=t.join(".");return o[n]||(o[n]=(s,...i)=>{for(let a=0;a<t.length;a++){const l=yr[t[a]];if(l&&l(s,t))return}return e(s,...i)})},wr=Q({patchProp:br},er);let Mi;function Ai(){return Mi||(Mi=Ml(wr))}const Sr=(...e)=>{Ai().render(...e)},Oi=(...e)=>{const t=Ai().createApp(...e),{mount:o}=t;return t.mount=n=>{const s=Nr(n);if(!s)return;const i=t._component;!O(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const a=o(s,!1,Lr(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t};function Lr(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Nr(e){return X(e)?document.querySelector(e):e}const Er={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:"مفرد",stageExperimental:"تجريبي","widget:rudder-voice/rudder-voice":"Rudder · تحويل الصوت إلى نص",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:"إظهار الشريط العلوي",elementsCount:"{n} عناصر",elements:"عناصر"},Pr={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",stageExperimental:"Experimentell","widget:rudder-voice/rudder-voice":"Rudder · Sprache zu Text",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",elementsCount:"{n} Elemente",elements:"Elemente"},Tr={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",stageExperimental:"Experimental","widget:rudder-voice/rudder-voice":"Rudder · voice to text",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",elementsCount:"{n} elements",elements:"elements"},Cr={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",stageExperimental:"Experimental","widget:rudder-voice/rudder-voice":"Rudder · voz a texto",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",elementsCount:"{n} elementos",elements:"elementos"},Mr={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",stageExperimental:"Expérimental","widget:rudder-voice/rudder-voice":"Rudder · voix vers texte",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",elementsCount:"{n} éléments",elements:"éléments"},Ar={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:"एकल",stageExperimental:"प्रायोगिक","widget:rudder-voice/rudder-voice":"Rudder · आवाज़ से टेक्स्ट",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:"हेडर दिखाएँ",elementsCount:"{n} तत्व",elements:"तत्व"},Or={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",stageExperimental:"Sperimentale","widget:rudder-voice/rudder-voice":"Rudder · voce in testo",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",elementsCount:"{n} elementi",elements:"elementi"},Ir={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",stageExperimental:"Experimental","widget:rudder-voice/rudder-voice":"Rudder · voz para texto",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",elementsCount:"{n} elementos",elements:"elementos"},Hr={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",stageExperimental:"Experimental","widget:rudder-voice/rudder-voice":"Rudder · voce în text",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",elementsCount:"{n} elemente",elements:"elemente"},Fr={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:"Одиночный",stageExperimental:"Экспериментальные","widget:rudder-voice/rudder-voice":"Rudder · голос в текст",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:"Показать заголовок",elementsCount:"{n} элементов",elements:"элементов"},Rr={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:"单一",stageExperimental:"实验性","widget:rudder-voice/rudder-voice":"Rudder · 语音转文字",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:"显示标题栏",elementsCount:"{n} 个元素",elements:"元素"};function Mn(e,t){const o=pi(),n=t||(o&&o.type&&o.type.__hmrId?"hmr-"+o.type.__hmrId:Ur(e));Ms(()=>{var r;if(!o)return;const s=(r=o.proxy)==null?void 0:r.$el;if(!s)return;const i=s.getRootNode();if(!(i instanceof ShadowRoot))return;if(!i.querySelector('style[data-shadow-styles="reduced-motion"]')){const p=document.createElement("style");p.setAttribute("data-shadow-styles","reduced-motion"),p.textContent=Dr,i.appendChild(p)}const a=i.querySelector(`style[data-shadow-styles="${n}"]`);if(a){a.textContent!==e&&(a.textContent=e);return}const l=document.createElement("style");l.setAttribute("data-shadow-styles",n),l.textContent=e,i.appendChild(l)})}const Dr=`@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}`;function Ur(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 Wr=Object.assign({"./locales/ar/grid.json":{search:"ابحث عن الشعوب…",hide_filters:"إخفاء عوامل التصفية",show_filters:"إظهار عوامل التصفية",total:"الإجمالي",showing:"المعروض",load_more:"عرض المزيد",full_profile:"الملف الكامل",wagf_region:"المنطقة",wagf_block:"كتلة التقارب",rop1:"الشعب",religion:"الدين",exact_filter:"تطابق تام",clear_all:"مسح الكل",loading:"جارٍ التحميل…",no_results:"لا توجد شعوب مطابقة لهذا التصفية.",type_to_search:"اكتب للبحث...",load_failed:"تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية.",search_people_or_countries:"ابحث عن الشعوب أو الدول…"},"./locales/ar/messages.json":{menuComingSoon:"القائمة قادمة قريباً",pinHint:{tapDot:"اضغط على نقطة ملوّنة — لا يزال هناك من يحتاج إلى الصلاة"},upg100WallHeading:"قائمتي UPG 100 — قوائم الصلاة والملصقات",upg100WallTag:"تعبئة للصلاة",upg100WallIntroA:"وزّع مهمة الصلاة في مجموعات من خمسين ومئة — كما أطعم يسوع الخمسة آلاف (لوقا ٩:١٤). كل ملصق هو قائمة من 100 يمكنك أن تصلي بها وتطبعها وتعلّقها على الحائط — مصلّيًا لأجلهم ",upg100WallIntroEmph:"باسم شعبهم",upg100WallIntroB:".",loadingNamed:"جارٍ تحميل {name}…",couldNotLoadNamed:"تعذّر تحميل {name}.",engineMissing:"لم يتم تحميل محرك الخرائط {engine}.",packetFailed:"فشل إنشاء الكُتيّب: {reason}",selectionPacketFailed:"فشل إنشاء كُتيّب التحديد: {reason}",posterOneTerritory:"الملصق يطبع منطقة واحدة في كل مرة — {count} محددة.",selectionPosterFailed:"فشل إنشاء ملصق التحديد: {reason}",mapUnavailable:"الخريطة غير متاحة",copied:"تم النسخ!",copyFailed:"فشل النسخ — اضغط Ctrl/Cmd-C",engineNotLoaded:"لم يتم تحميل محرك الخريطة",engineNotLoadedDetail:"لم يتم تحميل محرك الخريطة {engine}. القائمة ووسيلة الإيضاح غير متأثرتين."},"./locales/ar/poster.json":{export_poster:"تصدير الملصق",size:"الحجم",orientation:"الاتجاه",portrait:"طولي",landscape:"عرضي",dpi:"DPI",format:"الصيغة",png_raster:"PNG (نقطي)",pdf_raster:"PDF (نقطي على صفحة متجهية)",title:"العنوان",map_title:"عنوان الخريطة",subtitle:"العنوان الفرعي",slots:"العناصر",scale_bar:"شريط المقياس",north_arrow:"سهم الشمال",footer_attribution:"التذييل (الإسناد مطلوب)",cancel:"إلغاء",map_preview:"معاينة الخريطة",loading_snapshot:"جارٍ تحميل لقطة الخريطة…",preview_unavailable:"المعاينة غير متاحة"},"./locales/ar/search.json":{placeholder:"شعب، مكان، لغة، ديانة",placeholderNoPlaces:"شعب، لغة، ديانة (البحث عن الأماكن يتطلب رمز Mapbox)",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"},upg100Placeholder:"ابحث عن شعب أو قائمة UPG-100 أو منطقة…"},"./locales/de/grid.json":{search:"Volksgruppen suchen…",hide_filters:"Filter ausblenden",show_filters:"Filter anzeigen",total:"Gesamt",showing:"Angezeigt",load_more:"Mehr laden",full_profile:"Vollständiges Profil",wagf_region:"Region",wagf_block:"Affinitätsblock",rop1:"Volk",religion:"Religion",exact_filter:"Exakt",clear_all:"Alle löschen",loading:"Wird geladen…",no_results:"Keine Volksgruppen entsprechen diesem Filter.",type_to_search:"Zum Suchen tippen...",load_failed:"Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter.",search_people_or_countries:"Volksgruppen oder Länder suchen…"},"./locales/de/messages.json":{menuComingSoon:"Menü folgt in Kürze",pinHint:{tapDot:"Tippe auf einen farbigen Punkt — jemand braucht noch Gebet"},upg100WallHeading:"Meine UPG-100-Liste — Gebetslisten und Poster",upg100WallTag:"Gebetsmobilisierung",upg100WallIntroA:"Teilen Sie die Gebetsaufgabe in Gruppen zu fünfzig und hundert auf — so wie Jesus die 5.000 speiste (Lukas 9,14). Jedes Poster ist eine 100er-Liste, die Sie beten, drucken und an die Wand hängen können — und für sie ",upg100WallIntroEmph:"mit dem Namen ihrer Volksgruppe",upg100WallIntroB:" beten.",loadingNamed:"{name} wird geladen…",couldNotLoadNamed:"{name} konnte nicht geladen werden.",engineMissing:"Die Karten-Engine {engine} wurde nicht geladen.",packetFailed:"Heft fehlgeschlagen: {reason}",selectionPacketFailed:"Heft der Auswahl fehlgeschlagen: {reason}",posterOneTerritory:"Das Plakat druckt ein Gebiet auf einmal — {count} ausgewählt.",selectionPosterFailed:"Plakat der Auswahl fehlgeschlagen: {reason}",mapUnavailable:"Karte nicht verfügbar",copied:"Kopiert!",copyFailed:"Kopieren fehlgeschlagen — Strg/Cmd-C drücken",engineNotLoaded:"Karten-Engine nicht geladen",engineNotLoadedDetail:"Die Karten-Engine {engine} wurde nicht geladen. Liste und Legende sind nicht betroffen."},"./locales/de/poster.json":{export_poster:"Poster exportieren",size:"Größe",orientation:"Ausrichtung",portrait:"Hochformat",landscape:"Querformat",dpi:"DPI",format:"Format",png_raster:"PNG (Raster)",pdf_raster:"PDF (Raster auf Vektorseite)",title:"Titel",map_title:"Kartentitel",subtitle:"Untertitel",slots:"Elemente",scale_bar:"Maßstabsleiste",north_arrow:"Nordpfeil",footer_attribution:"Fußzeile (Quellenangabe erforderlich)",cancel:"Abbrechen",map_preview:"Kartenvorschau",loading_snapshot:"Kartenaufnahme wird geladen…",preview_unavailable:"Vorschau nicht verfügbar"},"./locales/de/search.json":{placeholder:"Volk, Ort, Sprache, Religion",placeholderNoPlaces:"Volk, Sprache, Religion (Ortssuche braucht ein Mapbox-Token)",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"},kinds:{people:"Volk + Land",peopleGroup:"Volk",bloc:"Affinitätsblock",cluster:"Völkercluster",country:"Land",region:"Region",family:"Sprachfamilie",languageKind:"Sprache",dialect:"Dialekt",religionKind:"Religion"},upg100Placeholder:"Volksgruppe, UPG-100-Liste oder Region suchen…"},"./locales/en/grid.json":{search:"Search people groups…",hide_filters:"Hide Filters",show_filters:"Show Filters",total:"Total",showing:"Showing",load_more:"Load More",full_profile:"Full Profile",wagf_region:"Region",wagf_block:"Affinity Block",rop1:"People Group",religion:"Religion",exact_filter:"Exact",clear_all:"Clear All",loading:"Loading…",no_results:"No people groups match this filter.",type_to_search:"Type to search...",load_failed:"People-group data could not be loaded. This is a connection problem, not your filter.",search_people_or_countries:"Search people groups or countries…"},"./locales/en/messages.json":{menuComingSoon:"Menu coming soon",pinHint:{tapDot:"Tap a coloured dot — someone still needs prayer"},upg100WallHeading:"My UPG 100 List — Prayer Lists & Posters",upg100WallTag:"Prayer Mobilization",upg100WallIntroA:"Hand away the prayer task in clusters of fifties and hundreds — the way Jesus fed the 5,000 (Luke 9:14). Each poster is a 100-list you can pray, print, and put on a wall — praying for them ",upg100WallIntroEmph:"by their people group name",upg100WallIntroB:".",loadingNamed:"Loading {name}…",couldNotLoadNamed:"Could not load {name}.",engineMissing:"The {engine} map engine did not load.",packetFailed:"Packet failed: {reason}",selectionPacketFailed:"Selection packet failed: {reason}",posterOneTerritory:"Poster prints one territory at a time — {count} selected.",selectionPosterFailed:"Selection poster failed: {reason}",mapUnavailable:"Map unavailable",copied:"Copied!",copyFailed:"Copy failed — press Ctrl/Cmd-C",engineNotLoaded:"map engine not loaded",engineNotLoadedDetail:"The {engine} map engine did not load. The list and legend are unaffected."},"./locales/en/poster.json":{export_poster:"Export Poster",size:"Size",orientation:"Orientation",portrait:"Portrait",landscape:"Landscape",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster on vector page)",title:"Title",map_title:"Map title",subtitle:"Subtitle",slots:"Slots",scale_bar:"Scale bar",north_arrow:"North arrow",footer_attribution:"Footer (attribution required)",cancel:"Cancel",map_preview:"map preview",loading_snapshot:"Loading map snapshot…",preview_unavailable:"preview unavailable"},"./locales/en/search.json":{placeholder:"People, place, language, religion",placeholderNoPlaces:"People, language, religion (place search needs a Mapbox token)",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"},upg100Placeholder:"Search people group, UPG-100 list, or region…"},"./locales/es/grid.json":{search:"Buscar pueblos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Cargar más",full_profile:"Perfil completo",wagf_region:"Región",wagf_block:"Bloque de afinidad",rop1:"Pueblo",religion:"Religión",exact_filter:"Exacto",clear_all:"Borrar todo",loading:"Cargando…",no_results:"Ningún pueblo coincide con este filtro.",type_to_search:"Escribe para buscar...",load_failed:"No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro.",search_people_or_countries:"Buscar pueblos o países…"},"./locales/es/messages.json":{menuComingSoon:"Menú próximamente",pinHint:{tapDot:"Toca un punto de color: alguien todavía necesita oración"},upg100WallHeading:"Mi lista UPG 100 — Listas de oración y carteles",upg100WallTag:"Movilización de oración",upg100WallIntroA:"Reparte la tarea de la oración en grupos de cincuenta y de cien, como Jesús alimentó a los 5.000 (Lucas 9:14). Cada cartel es una lista de 100 que puedes orar, imprimir y poner en la pared — orando por ellos ",upg100WallIntroEmph:"por el nombre de su pueblo",upg100WallIntroB:".",loadingNamed:"Cargando {name}…",couldNotLoadNamed:"No se pudo cargar {name}.",engineMissing:"El motor de mapas {engine} no se cargó.",packetFailed:"Error al generar el cuadernillo: {reason}",selectionPacketFailed:"Error al generar el cuadernillo de la selección: {reason}",posterOneTerritory:"El cartel imprime un territorio a la vez: {count} seleccionados.",selectionPosterFailed:"Error al generar el cartel de la selección: {reason}",mapUnavailable:"Mapa no disponible",copied:"¡Copiado!",copyFailed:"Error al copiar: pulsa Ctrl/Cmd-C",engineNotLoaded:"motor de mapas no cargado",engineNotLoadedDetail:"El motor de mapas {engine} no se cargó. La lista y la leyenda no se ven afectadas."},"./locales/es/poster.json":{export_poster:"Exportar póster",size:"Tamaño",orientation:"Orientación",portrait:"Vertical",landscape:"Horizontal",dpi:"DPI",format:"Formato",png_raster:"PNG (ráster)",pdf_raster:"PDF (ráster en página vectorial)",title:"Título",map_title:"Título del mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Flecha norte",footer_attribution:"Pie de página (atribución obligatoria)",cancel:"Cancelar",map_preview:"vista previa del mapa",loading_snapshot:"Cargando la captura del mapa…",preview_unavailable:"vista previa no disponible"},"./locales/es/search.json":{placeholder:"Pueblo, lugar, idioma, religión",placeholderNoPlaces:"Pueblo, idioma, religión (buscar lugares requiere un token de Mapbox)",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"},sections:{within:"Dentro de {selection}",allData:"Todos los datos DOXA"},upg100Placeholder:"Buscar pueblo, lista UPG-100 o región…"},"./locales/fr/grid.json":{search:"Rechercher des peuples…",hide_filters:"Masquer les filtres",show_filters:"Afficher les filtres",total:"Total",showing:"Affichage",load_more:"Charger plus",full_profile:"Profil complet",wagf_region:"Région",wagf_block:"Bloc d'affinité",rop1:"Peuple",religion:"Religion",exact_filter:"Exact",clear_all:"Tout effacer",loading:"Chargement…",no_results:"Aucun peuple ne correspond à ce filtre.",type_to_search:"Tapez pour rechercher...",load_failed:"Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre.",search_people_or_countries:"Rechercher des peuples ou des pays…"},"./locales/fr/messages.json":{menuComingSoon:"Menu bientôt disponible",pinHint:{tapDot:"Touchez un point coloré — quelqu’un a encore besoin de prière"},upg100WallHeading:"Ma liste UPG 100 — Listes de prière et affiches",upg100WallTag:"Mobilisation pour la prière",upg100WallIntroA:"Répartissez la tâche de la prière par groupes de cinquante et de cent — comme Jésus a nourri les 5 000 (Luc 9:14). Chaque affiche est une liste de 100 que vous pouvez prier, imprimer et afficher au mur — en priant pour eux ",upg100WallIntroEmph:"par le nom de leur peuple",upg100WallIntroB:".",loadingNamed:"Chargement de {name}…",couldNotLoadNamed:"Impossible de charger {name}.",engineMissing:"Le moteur de carte {engine} ne s’est pas chargé.",packetFailed:"Échec du livret : {reason}",selectionPacketFailed:"Échec du livret de la sélection : {reason}",posterOneTerritory:"L’affiche imprime un territoire à la fois — {count} sélectionnés.",selectionPosterFailed:"Échec de l’affiche de la sélection : {reason}",mapUnavailable:"Carte indisponible",copied:"Copié !",copyFailed:"Échec de la copie — appuyez sur Ctrl/Cmd-C",engineNotLoaded:"moteur cartographique non chargé",engineNotLoadedDetail:"Le moteur cartographique {engine} ne s’est pas chargé. La liste et la légende ne sont pas affectées."},"./locales/fr/poster.json":{export_poster:"Exporter l'affiche",size:"Taille",orientation:"Orientation",portrait:"Portrait",landscape:"Paysage",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster sur page vectorielle)",title:"Titre",map_title:"Titre de la carte",subtitle:"Sous-titre",slots:"Éléments",scale_bar:"Échelle",north_arrow:"Flèche du nord",footer_attribution:"Pied de page (attribution requise)",cancel:"Annuler",map_preview:"aperçu de la carte",loading_snapshot:"Chargement de l'instantané de la carte…",preview_unavailable:"aperçu indisponible"},"./locales/fr/search.json":{placeholder:"Peuple, lieu, langue, religion",placeholderNoPlaces:"Peuple, langue, religion (la recherche de lieux requiert un jeton Mapbox)",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"},sections:{within:"Dans {selection}",allData:"Toutes les données DOXA"},upg100Placeholder:"Rechercher un peuple, une liste UPG-100 ou une région…"},"./locales/hi/grid.json":{search:"जनसमूह खोजें…",hide_filters:"फ़िल्टर छिपाएँ",show_filters:"फ़िल्टर दिखाएँ",total:"कुल",showing:"दिखा रहे हैं",load_more:"और देखें",full_profile:"पूरी प्रोफ़ाइल",wagf_region:"क्षेत्र",wagf_block:"समानता समूह",rop1:"जनसमूह",religion:"धर्म",exact_filter:"सटीक",clear_all:"सब हटाएँ",loading:"लोड हो रहा है…",no_results:"इस फ़िल्टर से कोई जनसमूह मेल नहीं खाता।",type_to_search:"खोजने के लिए लिखें...",load_failed:"जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।",search_people_or_countries:"जनसमूह या देश खोजें…"},"./locales/hi/messages.json":{menuComingSoon:"मेनू शीघ्र आ रहा है",pinHint:{tapDot:"किसी रंगीन बिंदु पर टैप करें — किसी को अभी भी प्रार्थना की आवश्यकता है"},upg100WallHeading:"मेरी UPG 100 सूची — प्रार्थना सूचियाँ और पोस्टर",upg100WallTag:"प्रार्थना लामबंदी",upg100WallIntroA:"प्रार्थना के काम को पचास-पचास और सौ-सौ के समूहों में बाँटें — जैसे यीशु ने 5,000 लोगों को खिलाया (लूका 9:14)। हर पोस्टर 100 की एक सूची है जिसके लिए आप प्रार्थना कर सकते हैं, छाप सकते हैं और दीवार पर लगा सकते हैं — उनके लिए ",upg100WallIntroEmph:"उनके जनसमूह के नाम से",upg100WallIntroB:" प्रार्थना करते हुए।",loadingNamed:"{name} लोड हो रहा है…",couldNotLoadNamed:"{name} लोड नहीं हो सका।",engineMissing:"{engine} नक्शा इंजन लोड नहीं हुआ।",packetFailed:"पुस्तिका विफल: {reason}",selectionPacketFailed:"चयन की पुस्तिका विफल: {reason}",posterOneTerritory:"पोस्टर एक समय में एक क्षेत्र छापता है — {count} चयनित।",selectionPosterFailed:"चयन का पोस्टर विफल: {reason}",mapUnavailable:"मानचित्र अनुपलब्ध",copied:"कॉपी हो गया!",copyFailed:"कॉपी विफल — Ctrl/Cmd-C दबाएँ",engineNotLoaded:"मानचित्र इंजन लोड नहीं हुआ",engineNotLoadedDetail:"{engine} मानचित्र इंजन लोड नहीं हुआ। सूची और लेजेंड अप्रभावित हैं।"},"./locales/hi/poster.json":{export_poster:"पोस्टर निर्यात करें",size:"आकार",orientation:"अभिविन्यास",portrait:"पोर्ट्रेट",landscape:"लैंडस्केप",dpi:"DPI",format:"प्रारूप",png_raster:"PNG (रास्टर)",pdf_raster:"PDF (वेक्टर पृष्ठ पर रास्टर)",title:"शीर्षक",map_title:"मानचित्र शीर्षक",subtitle:"उपशीर्षक",slots:"स्लॉट",scale_bar:"स्केल बार",north_arrow:"उत्तर तीर",footer_attribution:"फ़ुटर (एट्रिब्यूशन आवश्यक)",cancel:"रद्द करें",map_preview:"मानचित्र पूर्वावलोकन",loading_snapshot:"मानचित्र स्नैपशॉट लोड हो रहा है…",preview_unavailable:"पूर्वावलोकन उपलब्ध नहीं"},"./locales/hi/search.json":{placeholder:"लोग, स्थान, भाषा, धर्म",placeholderNoPlaces:"लोग, भाषा, धर्म (स्थान खोज के लिए Mapbox टोकन चाहिए)",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"},upg100Placeholder:"जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"},"./locales/it/grid.json":{search:"Cerca popoli…",hide_filters:"Nascondi filtri",show_filters:"Mostra filtri",total:"Totale",showing:"Mostrati",load_more:"Carica altro",full_profile:"Profilo completo",wagf_region:"Regione",wagf_block:"Blocco di affinità",rop1:"Popolo",religion:"Religione",exact_filter:"Esatto",clear_all:"Cancella tutto",loading:"Caricamento…",no_results:"Nessun popolo corrisponde a questo filtro.",type_to_search:"Digita per cercare...",load_failed:"Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro.",search_people_or_countries:"Cerca popoli o paesi…"},"./locales/it/messages.json":{menuComingSoon:"Menu in arrivo",pinHint:{tapDot:"Tocca un punto colorato — qualcuno ha ancora bisogno di preghiera"},upg100WallHeading:"La mia lista UPG 100 — Liste di preghiera e poster",upg100WallTag:"Mobilitazione alla preghiera",upg100WallIntroA:"Distribuisci il compito della preghiera in gruppi di cinquanta e di cento — come Gesù sfamò i 5.000 (Luca 9:14). Ogni poster è una lista di 100 che puoi pregare, stampare e appendere al muro — pregando per loro ",upg100WallIntroEmph:"con il nome del loro popolo",upg100WallIntroB:".",loadingNamed:"Caricamento di {name}…",couldNotLoadNamed:"Impossibile caricare {name}.",engineMissing:"Il motore di mappa {engine} non è stato caricato.",packetFailed:"Libretto non riuscito: {reason}",selectionPacketFailed:"Libretto della selezione non riuscito: {reason}",posterOneTerritory:"Il manifesto stampa un territorio alla volta — {count} selezionati.",selectionPosterFailed:"Manifesto della selezione non riuscito: {reason}",mapUnavailable:"Mappa non disponibile",copied:"Copiato!",copyFailed:"Copia non riuscita — premi Ctrl/Cmd-C",engineNotLoaded:"motore di mappe non caricato",engineNotLoadedDetail:"Il motore di mappe {engine} non si è caricato. L’elenco e la legenda non sono interessati."},"./locales/it/poster.json":{export_poster:"Esporta poster",size:"Dimensione",orientation:"Orientamento",portrait:"Verticale",landscape:"Orizzontale",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster su pagina vettoriale)",title:"Titolo",map_title:"Titolo della mappa",subtitle:"Sottotitolo",slots:"Elementi",scale_bar:"Barra della scala",north_arrow:"Freccia nord",footer_attribution:"Piè di pagina (attribuzione obbligatoria)",cancel:"Annulla",map_preview:"anteprima della mappa",loading_snapshot:"Caricamento dell'istantanea della mappa…",preview_unavailable:"anteprima non disponibile"},"./locales/it/search.json":{placeholder:"Popolo, luogo, lingua, religione",placeholderNoPlaces:"Popolo, lingua, religione (la ricerca di luoghi richiede un token Mapbox)",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"},sections:{within:"In {selection}",allData:"Tutti i dati DOXA"},kinds:{people:"Popolo + paese",peopleGroup:"Popolo",bloc:"Blocco di affinità",cluster:"Cluster di popoli",country:"Paese",region:"Regione",family:"Famiglia linguistica",languageKind:"Lingua",dialect:"Dialetto",religionKind:"Religione"},upg100Placeholder:"Cerca popolo, elenco UPG-100 o regione…"},"./locales/pt/grid.json":{search:"Pesquisar povos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Carregar mais",full_profile:"Perfil completo",wagf_region:"Região",wagf_block:"Bloco de afinidade",rop1:"Povo",religion:"Religião",exact_filter:"Exato",clear_all:"Limpar tudo",loading:"A carregar…",no_results:"Nenhum povo corresponde a este filtro.",type_to_search:"Escreva para pesquisar...",load_failed:"Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro.",search_people_or_countries:"Pesquisar povos ou países…"},"./locales/pt/messages.json":{menuComingSoon:"Menu em breve",pinHint:{tapDot:"Toque num ponto colorido — alguém ainda precisa de oração"},upg100WallHeading:"A minha lista UPG 100 — Listas de oração e cartazes",upg100WallTag:"Mobilização de oração",upg100WallIntroA:"Reparta a tarefa da oração em grupos de cinquenta e de cem — como Jesus alimentou os 5.000 (Lucas 9:14). Cada cartaz é uma lista de 100 que pode orar, imprimir e pôr na parede — orando por eles ",upg100WallIntroEmph:"pelo nome do seu povo",upg100WallIntroB:".",loadingNamed:"Carregando {name}…",couldNotLoadNamed:"Não foi possível carregar {name}.",engineMissing:"O motor de mapa {engine} não foi carregado.",packetFailed:"Falha ao gerar o caderno: {reason}",selectionPacketFailed:"Falha ao gerar o caderno da seleção: {reason}",posterOneTerritory:"O cartaz imprime um território de cada vez — {count} selecionados.",selectionPosterFailed:"Falha ao gerar o cartaz da seleção: {reason}",mapUnavailable:"Mapa indisponível",copied:"Copiado!",copyFailed:"Falha ao copiar — pressione Ctrl/Cmd-C",engineNotLoaded:"motor de mapas não carregado",engineNotLoadedDetail:"O motor de mapas {engine} não carregou. A lista e a legenda não são afetadas."},"./locales/pt/poster.json":{export_poster:"Exportar pôster",size:"Tamanho",orientation:"Orientação",portrait:"Retrato",landscape:"Paisagem",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster em página vetorial)",title:"Título",map_title:"Título do mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Seta norte",footer_attribution:"Rodapé (atribuição obrigatória)",cancel:"Cancelar",map_preview:"pré-visualização do mapa",loading_snapshot:"Carregando o instantâneo do mapa…",preview_unavailable:"pré-visualização indisponível"},"./locales/pt/search.json":{placeholder:"Povo, local, língua, religião",placeholderNoPlaces:"Povo, língua, religião (a busca de locais requer um token do Mapbox)",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"},sections:{within:"Dentro de {selection}",allData:"Todos os dados DOXA"},upg100Placeholder:"Procurar povo, lista UPG-100 ou região…"},"./locales/ro/grid.json":{search:"Caută popoare…",hide_filters:"Ascunde filtrele",show_filters:"Arată filtrele",total:"Total",showing:"Se afișează",load_more:"Încarcă mai mult",full_profile:"Profil complet",wagf_region:"Regiune",wagf_block:"Bloc de afinitate",rop1:"Popor",religion:"Religie",exact_filter:"Exact",clear_all:"Șterge tot",loading:"Se încarcă…",no_results:"Niciun popor nu corespunde acestui filtru.",type_to_search:"Scrie pentru a căuta...",load_failed:"Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului.",search_people_or_countries:"Caută popoare sau țări…"},"./locales/ro/messages.json":{menuComingSoon:"Meniu în curând",pinHint:{tapDot:"Atinge un punct colorat — cineva are încă nevoie de rugăciune"},upg100WallHeading:"Lista mea UPG 100 — Liste de rugăciune și afișe",upg100WallTag:"Mobilizare pentru rugăciune",upg100WallIntroA:"Împarte sarcina rugăciunii în grupuri de câte cincizeci și o sută — așa cum Isus a hrănit cei 5.000 (Luca 9:14). Fiecare afiș este o listă de 100 pe care o poți ruga, tipări și pune pe perete — rugându-te pentru ei ",upg100WallIntroEmph:"pe numele poporului lor",upg100WallIntroB:".",loadingNamed:"Se încarcă {name}…",couldNotLoadNamed:"Nu s-a putut încărca {name}.",engineMissing:"Motorul de hartă {engine} nu s-a încărcat.",packetFailed:"Broșura a eșuat: {reason}",selectionPacketFailed:"Broșura selecției a eșuat: {reason}",posterOneTerritory:"Afișul tipărește un teritoriu pe rând — {count} selectate.",selectionPosterFailed:"Afișul selecției a eșuat: {reason}",mapUnavailable:"Harta indisponibilă",copied:"Copiat!",copyFailed:"Copierea a eșuat — apasă Ctrl/Cmd-C",engineNotLoaded:"motorul de hărți nu s-a încărcat",engineNotLoadedDetail:"Motorul de hărți {engine} nu s-a încărcat. Lista și legenda nu sunt afectate."},"./locales/ro/poster.json":{export_poster:"Exportă posterul",size:"Dimensiune",orientation:"Orientare",portrait:"Portret",landscape:"Peisaj",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster pe pagină vectorială)",title:"Titlu",map_title:"Titlul hărții",subtitle:"Subtitlu",slots:"Elemente",scale_bar:"Bară de scară",north_arrow:"Săgeata nord",footer_attribution:"Subsol (atribuire obligatorie)",cancel:"Anulează",map_preview:"previzualizare hartă",loading_snapshot:"Se încarcă instantaneul hărții…",preview_unavailable:"previzualizare indisponibilă"},"./locales/ro/search.json":{placeholder:"Popor, loc, limbă, religie",placeholderNoPlaces:"Popor, limbă, religie (căutarea locurilor necesită un token Mapbox)",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"},sections:{within:"În {selection}",allData:"Toate datele DOXA"},kinds:{people:"Popor + țară",peopleGroup:"Popor",bloc:"Bloc de afinitate",cluster:"Grup de popoare",country:"Țară",region:"Regiune",family:"Familie de limbi",languageKind:"Limbă",dialect:"Dialect",religionKind:"Religie"},upg100Placeholder:"Caută popor, listă UPG-100 sau regiune…"},"./locales/ru/grid.json":{search:"Поиск народов…",hide_filters:"Скрыть фильтры",show_filters:"Показать фильтры",total:"Всего",showing:"Показано",load_more:"Показать ещё",full_profile:"Полный профиль",wagf_region:"Регион",wagf_block:"Блок родства",rop1:"Народ",religion:"Религия",exact_filter:"Точное совпадение",clear_all:"Очистить всё",loading:"Загрузка…",no_results:"Нет народов, соответствующих этому фильтру.",type_to_search:"Введите для поиска...",load_failed:"Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра.",search_people_or_countries:"Поиск народов или стран…"},"./locales/ru/messages.json":{menuComingSoon:"Меню скоро появится",pinHint:{tapDot:"Нажмите на цветную точку — кому-то всё ещё нужна молитва"},upg100WallHeading:"Мой список UPG 100 — молитвенные списки и плакаты",upg100WallTag:"Молитвенная мобилизация",upg100WallIntroA:"Разделите молитвенный труд на группы по пятьдесят и по сто — так Иисус накормил 5000 (Луки 9:14). Каждый плакат — это список из 100, о котором можно молиться, распечатать и повесить на стену, молясь о них ",upg100WallIntroEmph:"по имени их народа",upg100WallIntroB:".",loadingNamed:"Загрузка {name}…",couldNotLoadNamed:"Не удалось загрузить {name}.",engineMissing:"Картографический движок {engine} не загрузился.",packetFailed:"Не удалось создать буклет: {reason}",selectionPacketFailed:"Не удалось создать буклет выбора: {reason}",posterOneTerritory:"Плакат печатает по одной территории — выбрано {count}.",selectionPosterFailed:"Не удалось создать плакат выбора: {reason}",mapUnavailable:"Карта недоступна",copied:"Скопировано!",copyFailed:"Не удалось скопировать — нажмите Ctrl/Cmd-C",engineNotLoaded:"движок карты не загружен",engineNotLoadedDetail:"Движок карты {engine} не загрузился. Список и легенда не затронуты."},"./locales/ru/poster.json":{export_poster:"Экспорт плаката",size:"Размер",orientation:"Ориентация",portrait:"Портретная",landscape:"Альбомная",dpi:"DPI",format:"Формат",png_raster:"PNG (растр)",pdf_raster:"PDF (растр на векторной странице)",title:"Заголовок",map_title:"Заголовок карты",subtitle:"Подзаголовок",slots:"Элементы",scale_bar:"Масштабная линейка",north_arrow:"Указатель севера",footer_attribution:"Нижний колонтитул (указание источника обязательно)",cancel:"Отмена",map_preview:"предпросмотр карты",loading_snapshot:"Загрузка снимка карты…",preview_unavailable:"предпросмотр недоступен"},"./locales/ru/search.json":{placeholder:"Народ, место, язык, религия",placeholderNoPlaces:"Народ, язык, религия (для поиска мест нужен токен Mapbox)",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"},upg100Placeholder:"Поиск народа, списка UPG-100 или региона…"},"./locales/zh/grid.json":{search:"搜索民族…",hide_filters:"隐藏筛选",show_filters:"显示筛选",total:"总计",showing:"显示",load_more:"加载更多",full_profile:"完整档案",wagf_region:"区域",wagf_block:"亲缘板块",rop1:"民族",religion:"宗教",exact_filter:"精确",clear_all:"全部清除",loading:"加载中…",no_results:"没有符合此筛选条件的民族。",type_to_search:"输入以搜索...",load_failed:"无法加载民族数据。这是连接问题,而不是筛选问题。",search_people_or_countries:"搜索民族或国家…"},"./locales/zh/messages.json":{menuComingSoon:"菜单即将推出",pinHint:{tapDot:"点按一个彩色圆点——仍有人需要祷告"},upg100WallHeading:"我的 UPG 100 名單 — 禱告名單與海報",upg100WallTag:"禱告動員",upg100WallIntroA:"將禱告的工作分成五十人、一百人一組 — 就像耶穌餵飽五千人那樣(路加福音 9:14)。每一張海報都是一份 100 人名單,你可以為他們禱告、列印出來、貼在牆上 — ",upg100WallIntroEmph:"按著他們族群的名字",upg100WallIntroB:"為他們禱告。",loadingNamed:"正在加载{name}…",couldNotLoadNamed:"无法加载{name}。",engineMissing:"{engine} 地图引擎未能加载。",packetFailed:"祷告册生成失败:{reason}",selectionPacketFailed:"所选内容的祷告册生成失败:{reason}",posterOneTerritory:"海报一次只能打印一个区域——已选 {count} 个。",selectionPosterFailed:"所选内容的海报生成失败:{reason}",mapUnavailable:"地图不可用",copied:"已复制!",copyFailed:"复制失败——请按 Ctrl/Cmd-C",engineNotLoaded:"地图引擎未加载",engineNotLoadedDetail:"{engine} 地图引擎未能加载。列表和图例不受影响。"},"./locales/zh/poster.json":{export_poster:"导出海报",size:"尺寸",orientation:"方向",portrait:"纵向",landscape:"横向",dpi:"DPI",format:"格式",png_raster:"PNG(位图)",pdf_raster:"PDF(矢量页面上的位图)",title:"标题",map_title:"地图标题",subtitle:"副标题",slots:"元素",scale_bar:"比例尺",north_arrow:"指北针",footer_attribution:"页脚(必须署名)",cancel:"取消",map_preview:"地图预览",loading_snapshot:"正在加载地图快照…",preview_unavailable:"预览不可用"},"./locales/zh/search.json":{placeholder:"民族、地点、语言、宗教",placeholderNoPlaces:"民族、语言、宗教(地点搜索需要 Mapbox 令牌)",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"},upg100Placeholder:"搜索民族、UPG-100 名单或区域…"}}),zt={};for(const[e,t]of Object.entries(Wr)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,n,s]=o;zt[n]??(zt[n]={}),zt[n][s]=t}const Ii=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function zr(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function jr(){var n;const e=zr();if(Ii.includes(e))return e;const o=(((n=document==null?void 0:document.documentElement)==null?void 0:n.lang)||"").split("-")[0].toLowerCase();return Ii.includes(o)?o:"en"}const Br="__DOXA_PAGE_LOCALE";function Vr(){try{return typeof window<"u"&&window[Br]||""}catch{return""}}function Kr(e,t){const o=s=>{let i=zt[s];for(const a of String(e).split(".")){if(!i||typeof i!="object")return;i=i[a]}return typeof i=="string"?i:void 0},n=Vr()||jr();return o(n)??o("en")}const Hi={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"/>',folder:'<path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>',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 Fi(e,t=""){const o=Hi[e]||Hi.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 Gr=".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},qr=(e,t)=>Kr(e)||t,jt={};function Yr(e){return e?(jt[e]||(jt[e]=new Promise((t,o)=>{const n=document.createElement("script");n.src=e,n.onload=()=>t(),n.onerror=()=>{delete jt[e],o(new Error("failed to load "+e))},document.head.appendChild(n)})),jt[e]):Promise.resolve()}function Xr(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 Jr=`
/* 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). Product decision: follow the familiar
Material/YouTube list layout rather than custom styling readers 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. It was then measured 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; }
}
`,Zr=$o({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(){return Mn(Jr,"vertical-tabs-layout"),{T:qr}},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"},Yr(t.src).then(()=>Xr(t.element)).then(()=>{o.innerHTML="";const n=document.createElement(t.element),s=t.attrs||{};for(const i in s){const a=s[i],l=a!=null&&typeof a=="object"?JSON.stringify(a):String(a);try{n[i]=a}catch{}try{n.setAttribute(i,l)}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?Fi(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 i=this._tabEls[s];i&&i.focus&&i.focus()})}}}),Qr={key:0,class:"vtl-top"},ec=["aria-expanded","aria-label"],tc={class:"vtl-brand"},oc={class:"vtl-title"},nc={class:"vtl-meta"},sc=["aria-expanded","aria-label"],ic={class:"vtl-body"},ac=["aria-label","aria-hidden","role","aria-orientation"],lc=["aria-expanded","aria-label"],rc=["innerHTML"],cc={class:"vtl-collapse-tx"},dc=["aria-expanded","onClick"],pc={key:0,class:"vtl-cap"},uc={class:"vtl-tl"},fc={key:1,class:"vtl-td"},hc=["innerHTML"],gc={key:1,class:"vtl-tier"},bc={key:0,class:"vtl-cap"},$c={class:"vtl-tl"},mc={key:1,class:"vtl-td"},_c={class:"vtl-rows"},vc=["aria-selected","tabindex","onClick"],xc=["innerHTML"],kc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},yc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},wc={class:"vtl-tab-text"},Sc={class:"vtl-tab-label"},Lc={key:0,class:"vtl-tab-badge"},Nc={key:0,class:"vtl-tab-sub"},Ec=["innerHTML"],Pc=["aria-selected","tabindex","onClick"],Tc=["innerHTML"],Cc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Mc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Ac={class:"vtl-tab-text"},Oc={class:"vtl-tab-label"},Ic={key:0,class:"vtl-tab-sub"},Hc={class:"vtl-main"},Fc={class:"vtl-content"},Rc=["hidden"],Dc={key:0,class:"vtl-host-hint"},Uc={key:1,class:"vtl-host-hint err"};function Wc(e,t,o,n,s,i){return L(),N("div",{class:he(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(L(),N("header",Qr,[_("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=a=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,ec),_("span",tc,[Mt(e.$slots,"brand")]),_("b",oc,E(e.title),1),_("span",nc,[Mt(e.$slots,"meta")])])):Y("",!0),e.narrow&&!e.header&&!e.navOpen?(L(),N("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=a=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,sc)):Y("",!0),_("div",ic,[_("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"},[_("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]=(...a)=>e.toggleRail&&e.toggleRail(...a))},[_("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,rc),_("span",cc,E(e.label("collapse")),1)],8,lc),e.$slots.rail?Mt(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),N(q,{key:1},Ee(e.groups,a=>(L(),N("div",{class:"vtl-grp",key:a.key},[a.folder?(L(),N("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(a)),onClick:l=>e.toggleFolder(a.key)},[a.badge?(L(),N("span",pc,E(a.badge),1)):Y("",!0),_("span",uc,E(a.label),1),a.count!=null?(L(),N("span",fc,E(a.count),1)):Y("",!0),_("span",{class:he(["vtl-chev",{open:!e.isFolderClosed(a)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,hc)],8,dc)):(L(),N("div",gc,[a.badge?(L(),N("span",bc,E(a.badge),1)):Y("",!0),_("span",$c,E(a.label),1),a.count!=null?(L(),N("span",mc,E(a.count),1)):Y("",!0)])),ft(_("div",_c,[(L(!0),N(q,null,Ee(a.rows,l=>(L(),N("button",{key:l.key,type:"button",role:"tab",class:he(["vtl-tab",{active:l.key===e.active}]),"aria-selected":String(l.key===e.active),tabindex:l.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(l.key,r),onClick:r=>e.pick(l.key),onKeydown:t[3]||(t[3]=r=>e.onKey(r))},[l.icon?(L(),N("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(l.icon)},null,8,xc)):l.emoji?(L(),N("span",kc,E(l.emoji),1)):(L(),N("span",yc,E(e.initial(l.label)),1)),_("span",wc,[_("span",Sc,[Ve(E(l.label),1),l.badge?(L(),N("span",Lc,E(l.badge),1)):Y("",!0)]),l.sub?(L(),N("span",Nc,[_("span",{innerHTML:l.sub},null,8,Ec)])):Y("",!0)])],42,vc))),128))],512),[[Ln,!a.folder||!e.isFolderClosed(a)]])]))),128)):(L(!0),N(q,{key:2},Ee(e.items,a=>(L(),N("button",{key:a.key,type:"button",role:"tab",class:he(["vtl-tab",{active:a.key===e.active}]),"aria-selected":String(a.key===e.active),tabindex:a.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(a.key,l),onClick:l=>e.pick(a.key),onKeydown:t[4]||(t[4]=l=>e.onKey(l))},[a.icon?(L(),N("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(a.icon)},null,8,Tc)):a.emoji?(L(),N("span",Cc,E(a.emoji),1)):(L(),N("span",Mc,E(e.initial(a.label)),1)),_("span",Ac,[_("span",Oc,E(a.label),1),a.sub?(L(),N("span",Ic,E(a.sub),1)):Y("",!0)])],42,Pc))),128))],8,ac),_("main",Hc,[e.header?Mt(e.$slots,"toolbar",{},void 0,void 0,0):Y("",!0),_("div",Fc,[(L(!0),N(q,null,Ee(e.mountedElementRows,a=>ft((L(),N("section",{key:a.key,class:"vtl-host",hidden:a.key!==e.active},[_("div",{class:"vtl-host-slot",ref_for:!0,ref:l=>e.setHostSlot(a.key,l)},null,512),e.hostState[a.key]==="loading"?(L(),N("div",Dc,E(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",a.label)),1)):e.hostState[a.key]==="error"?(L(),N("div",Uc,[Ve(E(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",a.label)),1),t[5]||(t[5]=_("br",null,null,-1)),_("small",null,E(e.hostError[a.key]),1)])):Y("",!0)],8,Rc)),[[Ln,a.key===e.active]])),128)),Mt(e.$slots,"default")])])])],2)}const zc=An(Zr,[["render",Wc],["styles",[Gr]]]),jc='.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}',Bc='.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; }',Vc='<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>',Kc={filterPlaceholder:"Filter plugins",collapseAll:"Collapse all",noMatch:"No plugin matches “{query}”.",treeLabel:"Plugins by capability",openSection:"Open {cap}, {label}",part:"part"},Gc='<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>',On=e=>e.canonical!==void 0?!!e.canonical:e.depth===0,qc=e=>e.canonical!==void 0?!e.canonical&&!e.folder:e.depth>0,Yc=$o({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(){Mn(Bc,"studio-tree")},data(){const e=this.readState();return{query:"",focusId:"",secClosed:e.sec||{},nodeOpen:e.node||{},chev:Gc,collapseAllSvg:Vc}},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,badge:t.badge||"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:qc(n)})}return e},activeSectionId(){for(const e of this.sections)if(e.nodes.some(t=>On(t)&&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?Fi(e):""},str(e,t){let o=this.strings[e]||Kc[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&&On(t));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.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(i=>i.id===this.focusId)),n=t[o],s=i=>i.section?"":i.parent||"sec:"+i.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 i=e.key.toLowerCase(),l=t.slice(o+1).concat(t.slice(0,o+1)).find(r=>String(r.label).toLowerCase().startsWith(i));l&&this.focusRow(l.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=>On(o)&&o.target===this.active),e){this.secClosed[t.id]&&(this.secClosed={...this.secClosed,[t.id]:!1},this.saveState());break}if(e)for(let t=e.parent;t;){const o=this.byId.get(t);if(!o)break;if(o.target===this.active&&!this.nodeOpen[t]){e=o;break}t=o.parent}if(e){let t=e.parent,o=!1;for(;t;)this.nodeOpen[t]||(this.nodeOpen={...this.nodeOpen,[t]:!0},o=!0),t=this.byId.get(t)&&this.byId.get(t).parent;o&&this.saveState()}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))}}}),Xc={key:0,class:"st-activity"},Jc=["aria-label","onClick"],Zc=["innerHTML"],Qc={class:"st-act-n","aria-hidden":"true"},ed={key:1,class:"st"},td={class:"st-bar"},od={class:"st-find"},nd=["innerHTML"],sd=["placeholder","aria-label"],id=["aria-label","title"],ad=["innerHTML"],ld=["aria-label"],rd=["aria-level","aria-expanded","aria-selected","tabindex","title","onClick","onFocus"],cd=["innerHTML"],dd={class:"st-cap"},pd={class:"st-sec-label"},ud={class:"st-count"},fd=["innerHTML","onClick"],hd={key:1,class:"st-twisty-sp","aria-hidden":"true"},gd=["innerHTML"],bd={class:"st-label"},$d={key:2,class:"st-part"},md={class:"st-desc"},_d={key:3,class:"st-count"},vd={key:0,class:"st-empty"};function xd(e,t,o,n,s,i){return e.collapsed?(L(),N("div",Xc,[(L(!0),N(q,null,Ee(e.sections,a=>(L(),N("button",{key:a.id,type:"button",class:he(["st-act",{active:a.id===e.activeSectionId}]),"aria-label":e.str("openSection",{cap:a.badge||"CAP "+a.cap,label:a.label}),onClick:l=>e.openSectionFromActivity(a.id)},[_("span",{class:"st-act-ic","aria-hidden":"true",innerHTML:e.svg(a.icon)},null,8,Zc),_("span",Qc,E(a.short||a.cap),1)],10,Jc))),128))])):(L(),N("div",ed,[_("div",td,[_("label",od,[_("span",{class:"st-find-ic","aria-hidden":"true",innerHTML:e.svg("search")},null,8,nd),ft(_("input",{ref:"find",type:"search",class:"st-find-in","onUpdate:modelValue":t[0]||(t[0]=a=>e.query=a),placeholder:e.str("filterPlaceholder"),"aria-label":e.str("filterPlaceholder"),onKeydown:t[1]||(t[1]=(...a)=>e.onFindKey&&e.onFindKey(...a))},null,40,sd),[[Cn,e.query]])]),_("button",{type:"button",class:"st-tool","aria-label":e.str("collapseAll"),title:e.str("collapseAll"),onClick:t[2]||(t[2]=(...a)=>e.collapseAll&&e.collapseAll(...a))},[_("span",{"aria-hidden":"true",innerHTML:e.collapseAllSvg},null,8,ad)],8,id)]),_("div",{class:"st-tree",role:"tree","aria-label":e.str("treeLabel"),onKeydown:t[3]||(t[3]=(...a)=>e.onTreeKey&&e.onTreeKey(...a))},[(L(!0),N(q,null,Ee(e.visible,a=>(L(),N("div",{key:a.id,ref_for:!0,ref:l=>e.setRow(a.id,l),role:"treeitem","aria-level":a.level,"aria-expanded":a.expandable?String(e.isOpen(a)):null,"aria-selected":a.section?null:String(a.target===e.active),tabindex:a.id===e.focusId?0:-1,class:he(e.rowClass(a)),style:kt({"--st-depth":a.depth}),title:a.title||null,onClick:l=>e.onRowClick(a),onFocus:l=>e.focusId=a.id},[a.section?(L(),N(q,{key:0},[_("span",{class:"st-twisty","aria-hidden":"true",innerHTML:e.chev},null,8,cd),_("span",dd,E(a.badge),1),_("span",pd,E(a.label),1),_("span",ud,E(a.count),1)],64)):(L(),N(q,{key:1},[(L(!0),N(q,null,Ee(a.depth,l=>(L(),N("span",{key:l,class:"st-guide",style:kt({"--st-g":l-1}),"aria-hidden":"true"},null,4))),128)),a.expandable?(L(),N("span",{key:0,class:"st-twisty","aria-hidden":"true",innerHTML:e.chev,onClick:Ci(l=>e.toggle(a),["stop"])},null,8,fd)):(L(),N("span",hd)),_("span",{class:"st-ic","aria-hidden":"true",innerHTML:e.svg(a.icon)},null,8,gd),_("span",bd,E(a.label),1),a.part?(L(),N("span",$d,E(e.str("part")),1)):Y("",!0),_("span",md,E(a.desc),1),a.expandable?(L(),N("span",_d,E(a.kids),1)):Y("",!0)],64))],46,rd))),128)),e.query&&!e.visible.length?(L(),N("p",vd,E(e.str("noMatch",{query:e.query})),1)):Y("",!0)],40,ld)]))}const kd=An(Yc,[["render",xd],["styles",[jc]]]),Mo=[{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}];Mo.filter(e=>!e.hideFromSwitcher);function yd(e){return Mo.find(t=>t.code===e)}function In(e){const t=String(e||"").split("-")[0].toLowerCase();return Mo.some(o=>o.code===t)?t:"en"}const Ri="doxa-maps:locale";function wd(){try{const e=localStorage.getItem(Ri);if(e)return In(e)}catch{}return In(navigator==null?void 0:navigator.language)}function Sd(e){try{localStorage.setItem(Ri,e)}catch{}}const Ao="__doxaMapToken",Di="doxa:map-token",Ui="__doxaMapTokenBridge",Bt=()=>{if(typeof window>"u")return"";const e=window[Ao];return typeof e=="string"?e:""};function Wi(e){if(typeof window>"u")return"";zi();const t=typeof e=="string"?e.trim():"";if(!t||t===Bt())return Bt();window[Ao]=t;try{window.dispatchEvent(new CustomEvent(Di,{detail:t}))}catch{}return t}function Ld(){var t;if(typeof window>"u")return;const e=Bt()||typeof window.MAP_TOKEN=="string"&&window.MAP_TOKEN;if(zi(),window[Ao]="",!((t=Object.getOwnPropertyDescriptor(window,"MAP_TOKEN"))!=null&&t.get))try{window.MAP_TOKEN=""}catch{}if(e)try{window.dispatchEvent(new CustomEvent(Di,{detail:""}))}catch{}}function zi(){var t;if(typeof window>"u"||window[Ui]&&((t=Object.getOwnPropertyDescriptor(window,"MAP_TOKEN"))!=null&&t.get))return;const e=typeof window.MAP_TOKEN=="string"?window.MAP_TOKEN:"";e&&!Bt()&&(window[Ao]=e);try{Object.defineProperty(window,"MAP_TOKEN",{configurable:!0,get(){return Bt()},set(o){Wi(o)}}),window[Ui]=!0}catch{}}const Nd=":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",Io="plugin-studio:mapbox-token-url",ji="plugin-studio:header-hidden",Bi="plugin-studio:map-provider";function mt(e){try{return typeof window<"u"&&window.localStorage.getItem(e)||""}catch{return""}}function _t(e,t){try{t?window.localStorage.setItem(e,t):window.localStorage.removeItem(e)}catch{}}const Ed=`
: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 (Driver, 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; }
`,Pd={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},Td=e=>Vi[e]!=null?5-Vi[e]:1,Cd={5:"nested-mfe-spa",4:"nested-elements-mfe",3:"monolithic",2:"parameterized",1:"single"},Hn={5:"monitor",4:"tree",3:"layers",2:"grid",1:"embed"},Ki=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","gospel-internet-board"]),Gi=new Set(["big-picture"]),Ho={};for(const[e,t]of Object.entries(Object.assign({"../../library/i18n/locales/ar/studio.json":Er,"../../library/i18n/locales/de/studio.json":Pr,"../../library/i18n/locales/en/studio.json":Tr,"../../library/i18n/locales/es/studio.json":Cr,"../../library/i18n/locales/fr/studio.json":Mr,"../../library/i18n/locales/hi/studio.json":Ar,"../../library/i18n/locales/it/studio.json":Or,"../../library/i18n/locales/pt/studio.json":Ir,"../../library/i18n/locales/ro/studio.json":Hr,"../../library/i18n/locales/ru/studio.json":Fr,"../../library/i18n/locales/zh/studio.json":Rr}))){const o=e.match(/locales\/([^/]+)\/studio\.json$/);o&&(Ho[o[1]]=t)}const Md={"doxa-maps-spa/doxa-maps-spa":"Research Gallery"},Vt={};function qi(e,t){return Vt[e]||(Vt[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 Vt[e],n(new Error("failed to load "+e))},document.head.appendChild(s)})),Vt[e]}function Yi(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 Ad=`
[data-studio-widgets]{position:fixed;z-index:2147483647;display:flex;flex-direction:column;gap:10px;pointer-events:none}
[data-studio-widgets] > *{pointer-events:auto}
[data-studio-widgets="bottom-right"]{bottom:max(16px,env(safe-area-inset-bottom));right:max(16px,env(safe-area-inset-right));align-items:flex-end}
[data-studio-widgets="bottom-left"]{bottom:max(16px,env(safe-area-inset-bottom));left:max(16px,env(safe-area-inset-left));align-items:flex-start}
[data-studio-widgets="top-right"]{top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));align-items:flex-end}
[data-studio-widgets="top-left"]{top:max(16px,env(safe-area-inset-top));left:max(16px,env(safe-area-inset-left));align-items:flex-start}
[data-widget]{display:flex;flex-direction:column;align-items:inherit;gap:10px}
[data-studio-widgets^="top"] [data-widget]{flex-direction:column-reverse}
[data-widget-panel]{display:none;position:relative;width:360px;max-width:calc(100vw - 32px);height:min(480px,calc(100vh - 110px));height:min(480px,calc(100dvh - 110px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));border-radius:16px;overflow:hidden;background:#0b0f14;box-shadow:0 12px 40px rgba(0,0,0,.35)}
[data-widget-panel][data-open]{display:block}
[data-widget-bubble]{position:relative;display:inline-flex;align-items:center;gap:8px;height:48px;max-width:min(360px,calc(100vw - 32px));padding:0 18px 0 14px;border:1px solid #334155;border-radius:999px;background:#0f172a;color:#e5e7eb;font:600 14px/1 system-ui,-apple-system,"Segoe UI",sans-serif;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.3)}
[data-widget-bubble]:focus-visible{outline:3px solid #7dd3fc;outline-offset:3px}
[data-wb-icon]{display:grid;place-items:center;flex:none;color:#38bdf8}
[data-wb-icon] svg,[data-wb-chev] svg{width:20px;height:20px;display:block}
[data-wb-text]{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
[data-wb-dot],[data-wb-chev]{display:none;flex:none}
[data-wb-dot]{width:10px;height:10px;border-radius:50%;background:#ef4444}
[data-widget-bubble][aria-expanded="true"] [data-wb-chev]{display:block}
[data-widget-bubble][data-listening="true"]{border-color:#ef4444;background:#1f0f12;animation:studio-widget-pulse 1.4s ease-out infinite}
[data-widget-bubble][data-listening="true"] [data-wb-dot]{display:block}
[data-widget-bubble][data-listening="true"] [data-wb-icon]{color:#6b7280}
[data-widget-bubble][data-speaking="true"] [data-wb-icon]{color:#4ade80;animation:studio-widget-speak .5s ease-in-out infinite alternate}
@keyframes studio-widget-pulse{0%{box-shadow:0 0 0 0 rgba(239,68,68,.55)}70%{box-shadow:0 0 0 12px rgba(239,68,68,0)}100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}}
@keyframes studio-widget-speak{from{transform:scale(1)}to{transform:scale(1.18)}}
@media (prefers-reduced-motion:reduce){[data-widget-bubble][data-listening="true"],[data-widget-bubble][data-speaking="true"] [data-wb-icon]{animation:none}}
@media (max-width:480px){
[data-studio-widgets^="bottom"]{bottom:max(8px,env(safe-area-inset-bottom))}
[data-studio-widgets$="right"]{right:max(8px,env(safe-area-inset-right))}
[data-studio-widgets$="left"]{left:max(8px,env(safe-area-inset-left))}
[data-widget-panel]{width:calc(100vw - 16px);max-width:none;height:60vh;height:60dvh}
[data-widget-bubble]{max-width:calc(100vw - 16px)}
}`,Od='<span data-wb-dot aria-hidden="true"></span><span data-wb-icon>'+'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="2" width="6" height="12" rx="3"/><path d="M5 10v1a7 7 0 0 0 14 0v-1"/><path d="M12 18v4"/></svg>'+"</span><span data-wb-text></span><span data-wb-chev>"+'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>'+"</span>",Id=$o({name:"PluginStudio",inheritAttrs:!1,components:{VerticalTabsLayout:zc,StudioTree:kd},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 Mn(Ed,"plugin-studio"),{injectedBase:Tt("psTreeBase","")}},data(){return{activeKey:"",embedOpen:!1,locale:this.initialLocale(),localeOpen:!1,settingsOpen:!1,headerHidden:mt(ji)==="1",engineOpen:!1,userProvider:mt(Bi),tokenBusy:!1,tokenErr:"",tokenDraft:mt(Oo),urlDraft:mt(Io),userTk:mt(Oo),userTokenUrl:mt(Io),fetchedTk:"",bakedTk:"",hostProvider:"",switcherLangs:Mo,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:Pd[t]||"capability "+t,rows:e[t]}))},treeSections(){const e=new Map(this.compositionTrees.map(s=>[s.nodes[0].selects,s])),t=new Map;for(const s of this.rows)t.has(s.bundle)||t.set(s.bundle,[]),t.get(s.bundle).push(s);const o=[...t.entries()].map(([s,i])=>({bundle:s,rows:i,cap:Math.max(...i.map(a=>a.cap))}));return[5,4,3,2,1].map(s=>({cap:s,group:o.filter(i=>i.cap===s).sort((i,a)=>i.bundle.localeCompare(a.bundle))})).map(({cap:s,group:i})=>{if(!i.length)return null;const a=[],l=(r,p,d)=>{const f=e.get(r.key);if(a.push({id:r.key,parent:d,depth:p,label:r.label,desc:(r.stage==="production"?"":this.tr("stageExperimental")+" · ")+"cap "+r.cap+" · "+r.tag,icon:r.icon,target:r.key,canonical:!0,kids:f?f.nodes[0].kids:0,title:r.label+" · <"+r.tag+"> · CAP "+r.cap+" "+this.tr("cap"+r.cap)}),!f)return;const x=v=>v===0?r.key:r.key+">"+v;for(const v of f.nodes.slice(1))a.push({id:x(v.id),parent:x(v.ancestors[v.ancestors.length-1]),depth:p+v.depth,label:v.label,part:!!v.part,target:v.selects||"",canonical:!1,icon:v.part?"dots":Hn[v.cap]||"embed",desc:v.part?this.tr("noStandalone"):"cap "+v.cap+" · "+v.tag,kids:v.kids||0,title:v.part?v.label+" · "+this.tr("partOf",{name:r.label}):v.label+" · <"+v.tag+"> · CAP "+v.cap+" "+this.tr("cap"+v.cap)})};for(const r of i){const p=[...r.rows].sort((f,x)=>x.cap-f.cap||f.label.localeCompare(x.label));if(p.length===1){l(p[0],0,"");continue}const d="bundle:"+r.bundle;a.push({id:d,parent:"",depth:0,label:r.bundle,desc:this.tr("elementsCount",{n:p.length}),icon:"folder",target:p[0].key,canonical:!1,folder:!0,kids:p.length,title:r.bundle+" · plugin-designs/"+r.bundle+"/ · "+p.length+" "+this.tr("elements")});for(const f of p)l(f,1,d)}return{id:"cap-"+s,cap:s,label:this.tr("cap"+s),title:this.tr("cap"+s)+" · "+(Cd[s]||""),icon:Hn[s]||"embed",nodes:a}}).filter(Boolean)},compositionTrees(){const e=[],t=(o,n,s,i,a)=>{const l=this.manifestBundles.find(x=>x.bundle===o.bundle),r=o.cap>=4&&l&&l.composes||[],p=[],d=[],f=new Set;for(const x of r){const v=this.resolveRef(x,o.bundle);if(!v){d.push(x);continue}v.key===o.key||f.has(v.key)||(f.add(v.key),p.push(v))}p.sort((x,v)=>v.cap-x.cap||x.label.localeCompare(v.label));for(const x of p){const v={id:i.length,label:x.label,tag:x.tag,cap:x.cap,selects:x.key,depth:n+1,ancestors:a,kids:0};i.push(v);const U=i.length;s.has(x.key)||t(x,n+1,new Set([...s,x.key]),i,[...a,v.id]),v.kids=i.filter((I,ee)=>ee>=U&&I.depth===n+2).length}for(const x of d)i.push({id:i.length,label:x,part:!0,selects:o.key,depth:n+1,ancestors:a,kids:0})};for(const o of this.manifestBundles){if(!o.composes||!o.composes.length||Gi.has(o.bundle))continue;const n=this.rows.find(i=>i.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(i=>i.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 yd(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:"same-origin"})}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,_t(Oo,this.userTk),_t(Io,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,_t(ji,e?"1":"")},setProvider(e){this.engineOpen=!1,e!==this.userProvider&&(this.userProvider=e,_t(Bi,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="",_t(Oo,""),_t(Io,""),this.publishToken(),this.remountPanes()},publishToken(){typeof window>"u"||(this.effectiveTk?(Wi(this.effectiveTk),window.MAP_TOKEN!==this.effectiveTk&&(window.MAP_TOKEN=this.effectiveTk)):Ld())},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?In(o):wd()},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,Sd(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.setupWidgets(),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"||Gi.has(o.bundle)))for(const n of o.profiles||[]){const s=o.elements&&o.elements.length?o.elements:null,i=(n.element&&(!s||s.includes(n.element))?n.element:null)||s&&s[0]||n.element||o.bundle,a=Td(n.type||"single"),l=Ki.has(i)||Ki.has(o.bundle)||n.heavy===!0;t.push({key:o.bundle+"/"+n.profile,bundle:o.bundle,stage:o.stage==="production"?"production":"experimental",label:Md[o.bundle+"/"+n.profile]||n.profile,profile:n.profile,tag:i,cap:a,icon:Hn[a]||"embed",description:n.description||"",widget:n.widget&&["bottom-right","bottom-left","top-right","top-left"].includes(n.widget.corner)?n.widget.corner:"",heavy:l,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(s=>s.key===e))return;const t=this.rows.find(s=>s.key===e);if(t&&t.widget){this.openWidget(t,!0);return}const o=this.activeKey;if(this.activeKey=e,this.embedOpen=!1,o&&o!==e){const s=this.rows.find(i=>i.key===o);s&&s.heavy&&s.mounted&&this.releaseRow(s)}const n=this.rows.find(s=>s.key===e);n&&(this.writeLastTab(e),n.mounted||this.$nextTick(()=>{this.activeKey===n.key&&this.mountElement(n)}))},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=""},widgetStore(){return window.__doxaStudioWidgets||(window.__doxaStudioWidgets={hosts:{},els:{}}),window.__doxaStudioWidgets},widgetHost(e){const t=this.widgetStore();if(!document.getElementById("studio-widget-css")){const n=document.createElement("style");n.id="studio-widget-css",n.textContent=Ad,document.head.appendChild(n)}if(t.hosts[e]&&t.hosts[e].isConnected)return t.hosts[e];const o=document.createElement("div");return o.setAttribute("data-studio-widgets",e),document.body.appendChild(o),t.hosts[e]=o,o},setupWidgets(){for(const e of this.rows.filter(t=>t.widget)){const t=this.widgetStore(),o=this.widgetHost(e.widget);let n=o.querySelector(`[data-widget="${e.key}"]`);if(!n){n=document.createElement("div"),n.setAttribute("data-widget",e.key);const i=document.createElement("div");i.setAttribute("data-widget-panel","");const a=document.createElement("button");a.type="button",a.setAttribute("data-widget-bubble","");const l="widget:"+e.key,r=this.tr(l);a.setAttribute("aria-label",r!==l?r:e.label),a.title=a.getAttribute("aria-label"),a.setAttribute("aria-expanded","false"),a.innerHTML=Od,a.querySelector("[data-wb-text]").textContent=a.getAttribute("aria-label"),a.addEventListener("click",()=>this.openWidget(e,!i.hasAttribute("data-open"))),n.appendChild(i),n.appendChild(a),o.appendChild(n)}t.els[e.key]&&!n.querySelector(e.tag)&&n.querySelector("[data-widget-panel]").appendChild(t.els[e.key]);let s=!1;try{s=localStorage.getItem("plugin-studio:widget-open:"+e.key)==="1"}catch{}s&&this.openWidget(e,!0)}},openWidget(e,t){const n=this.widgetHost(e.widget).querySelector(`[data-widget="${e.key}"]`);if(!n){this.setupWidgets();return}const s=n.querySelector("[data-widget-panel]"),i=n.querySelector("[data-widget-bubble]");t?s.setAttribute("data-open",""):s.removeAttribute("data-open"),i.setAttribute("aria-expanded",t?"true":"false");try{localStorage.setItem("plugin-studio:widget-open:"+e.key,t?"1":"0")}catch{}const a=this.widgetStore();!t||a.els[e.key]||qi(this.resolve(e.bundleJs)).then(()=>Yi(e.tag)).then(()=>{if(a.els[e.key])return;const l=document.createElement(e.tag);l.setAttribute("profile-config",JSON.stringify(this.paneConfig(e,this.locale))),l.setAttribute("variant","widget"),this.base&&l.setAttribute("tree-base",this.base.replace(/\/+$/,"")),l.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;overflow-y:auto;overscroll-behavior:contain;";const r=n.querySelector("[data-widget-bubble]"),p=r.querySelector("[data-wb-text]");l.addEventListener("recording",d=>{const f=!!(Array.isArray(d.detail)?d.detail[0]:d.detail);r.setAttribute("data-listening",f?"true":"false"),f?p.textContent="":(r.setAttribute("data-speaking","false"),p.textContent=r.getAttribute("aria-label"))}),l.addEventListener("activity",d=>{const f=(Array.isArray(d.detail)?d.detail[0]:d.detail)||{};r.getAttribute("data-listening")==="true"&&(r.setAttribute("data-speaking",f.speaking?"true":"false"),p.textContent=f.words||"")}),a.els[e.key]=l,s.appendChild(l)}).catch(l=>{s.textContent=l&&l.message||String(l)})},mountElement(e){e.mounted=!0,e.state="loading";const t=this.resolve(e.bundleJs);qi(t).then(()=>Yi(e.tag)).then(()=>{try{if(e.heavy&&this.activeKey!==e.key){e.mounted=!1,e.state="idle";return}const o=this._slots&&this._slots[e.key];if(!o){e.state="error",e.error="no slot";return}o.innerHTML="";const n=document.createElement(e.tag);n.setAttribute("profile-config",JSON.stringify(this.paneConfig(e,this.locale))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(n),e.state="ready"}catch(o){e.state="error",e.error="mount failed: "+(o&&o.message||String(o))}}).catch(o=>{e.state="error",e.error=o&&o.message||String(o)})},copyText(e,t){const o=()=>{const n=t.textContent;t.textContent=this.tr("copied"),setTimeout(()=>{t.textContent=n},1200)};if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(e).then(o,()=>{});else try{const n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),o()}catch{}}}}),Hd={class:"ps-count"},Fd={class:"ps-locale"},Rd=["aria-expanded","aria-label"],Dd={class:"ps-flag"},Ud={class:"ps-locale-name"},Wd={key:0,class:"ps-locale-menu",role:"listbox"},zd=["aria-selected"],jd=["onClick"],Bd={class:"ps-flag"},Vd={class:"ps-locale-name"},Kd={class:"ps-locale-en"},Gd={class:"ps-locale ps-engine"},qd=["aria-expanded","aria-label","title"],Yd={class:"ps-locale-name"},Xd=["aria-label"],Jd=["aria-selected"],Zd=["onClick"],Qd={class:"ps-locale-name"},ep={class:"ps-locale-en"},tp={class:"ps-token"},op=["aria-expanded","title"],np={class:"ps-locale-name"},sp={class:"ps-token-head"},ip={class:"ps-token-label"},ap={class:"ps-token-label"},lp={class:"ps-token-row"},rp=["disabled"],cp={class:"ps-token-note"},dp=["title","aria-label"],pp={class:"ps-locale-name"},up={key:0,class:"ps-toolbar"},fp={class:"ps-bar"},hp={class:"ps-bar-t"},gp={class:"ps-bar-sub"},bp={key:0},$p=["aria-expanded"],mp={key:0,class:"ps-embed"},_p=["value"],vp=["title","aria-label"],xp={class:"ps-stage"},kp=["hidden"],yp={key:0,class:"ps-hint"},wp={key:1,class:"ps-hint err"},Sp={key:0,class:"ps-hint"};function Lp(e,t,o,n,s,i){const a=Os("StudioTree"),l=Os("VerticalTabsLayout");return L(),yo(l,{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:r,expand:p,pick:d})=>[me(a,{sections:e.treeSections,active:e.activeKey,collapsed:r,expand:p,pick:d,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]=[_("span",{class:"ps-logo","aria-hidden":"true"},[_("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("path",{d:"M10 3v3M14 3v3M7 6h10v5a5 5 0 0 1-10 0V6Z"}),_("path",{d:"M12 16v5"})])],-1)])]),meta:ut(()=>[_("span",Hd,E(e.countLabel),1),_("span",Fd,[_("button",{type:"button",class:"ps-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":e.tr("changeLanguage"),onClick:t[0]||(t[0]=r=>{e.localeOpen=!e.localeOpen,e.engineOpen=!1,e.settingsOpen=!1})},[_("span",Dd,E(e.activeLang.flag),1),_("span",Ud,E(e.activeLang.nativeName),1),t[12]||(t[12]=_("span",{class:"ps-dots","aria-hidden":"true"},"⋮",-1))],8,Rd),e.localeOpen?(L(),N("ul",Wd,[(L(!0),N(q,null,Ee(e.switcherLangs,r=>(L(),N("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[_("button",{type:"button",class:he(["ps-locale-opt",{active:r.code===e.locale}]),onClick:p=>e.setLocale(r.code)},[_("span",Bd,E(r.flag),1),_("span",Vd,E(r.nativeName),1),_("span",Kd,E(r.name),1)],10,jd)],8,zd))),128))])):Y("",!0)]),_("span",Gd,[_("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]=r=>{e.engineOpen=!e.engineOpen,e.localeOpen=!1,e.settingsOpen=!1})},[t[13]||(t[13]=_("span",{"aria-hidden":"true"},"🗺",-1)),_("span",Yd,E(e.engineLabel),1),t[14]||(t[14]=_("span",{class:"ps-dots","aria-hidden":"true"},"⋮",-1))],8,qd),e.engineOpen?(L(),N("ul",{key:0,class:"ps-locale-menu",role:"listbox","aria-label":e.tr("mapEngine")},[(L(!0),N(q,null,Ee(e.engines,r=>(L(),N("li",{key:r.id||"default",role:"option","aria-selected":String(r.id===e.userProvider)},[_("button",{type:"button",class:he(["ps-locale-opt",{active:r.id===e.userProvider}]),onClick:p=>e.setProvider(r.id)},[_("span",Qd,E(r.label),1),_("span",ep,E(r.note),1)],10,Zd)],8,Jd))),128))],8,Xd)):Y("",!0)]),_("span",tp,[_("button",{type:"button",class:"ps-locale-btn ps-token-btn","aria-expanded":String(e.settingsOpen),title:e.tokenStatus,onClick:t[2]||(t[2]=r=>{e.settingsOpen=!e.settingsOpen,e.localeOpen=!1,e.engineOpen=!1})},[_("span",np,E(e.tr("mapboxToken")),1),_("span",{class:he(["ps-token-dot","is-"+e.tokenSource]),"aria-hidden":"true"},null,2)],8,op),e.settingsOpen?(L(),N("form",{key:0,class:"ps-token-panel",onSubmit:t[6]||(t[6]=Ci((...r)=>e.applyToken&&e.applyToken(...r),["prevent"]))},[_("p",sp,E(e.tr("mapToken")),1),_("label",ip,[Ve(E(e.tr("tokenPaste"))+" ",1),ft(_("input",{class:"ps-token-input","onUpdate:modelValue":t[3]||(t[3]=r=>e.tokenDraft=r),placeholder:"pk.eyJ…",autocomplete:"off",spellcheck:"false"},null,512),[[Cn,e.tokenDraft,void 0,{trim:!0}]])]),_("label",ap,[Ve(E(e.tr("tokenUrlLabel"))+" ",1),ft(_("input",{class:"ps-token-input","onUpdate:modelValue":t[4]||(t[4]=r=>e.urlDraft=r),type:"url",placeholder:"https://doxa.life/api/maps/token",autocomplete:"off",spellcheck:"false"},null,512),[[Cn,e.urlDraft,void 0,{trim:!0}]])]),_("div",lp,[_("button",{type:"submit",class:"ps-token-apply",disabled:e.tokenBusy},E(e.tr("tokenApply")),9,rp),_("button",{type:"button",class:"ps-token-clear",onClick:t[5]||(t[5]=(...r)=>e.clearToken&&e.clearToken(...r))},E(e.tr("tokenClear")),1)]),_("p",{class:he(["ps-token-status",{err:!!e.tokenErr}]),role:"status"},E(e.tokenErr||e.tokenStatus),3),_("p",cp,E(e.tr("tokenStoredHere")),1)],32)):Y("",!0)]),_("button",{type:"button",class:"ps-locale-btn ps-hide-header",title:e.tr("hideHeader"),"aria-label":e.tr("hideHeader"),onClick:t[7]||(t[7]=r=>e.setHeaderHidden(!0))},[t[15]||(t[15]=_("span",{"aria-hidden":"true"},"⌃",-1)),_("span",pp,E(e.tr("hideHeader")),1)],8,dp)]),toolbar:ut(()=>[e.active?(L(),N("div",up,[_("div",fp,[_("div",hp,[_("b",null,E(e.active.label),1),_("span",gp,[Ve(E(e.active.bundle)+" · <"+E(e.active.tag)+">",1),e.active.description?(L(),N("span",bp," · "+E(e.active.description),1)):Y("",!0)])]),e.active.embed?(L(),N("button",{key:0,type:"button",class:"ps-btn","aria-expanded":String(e.embedOpen),onClick:t[8]||(t[8]=r=>e.embedOpen=!e.embedOpen)},E(e.tr("copyEmbed")),9,$p)):Y("",!0)]),e.embedOpen&&e.active.embed?(L(),N("div",mp,[_("label",null,[Ve(E(e.tr("scriptEmbed"))+" ",1),_("button",{type:"button",class:"ps-btn",onClick:t[9]||(t[9]=r=>e.copyText(e.active.embed,r.target))},E(e.tr("copy")),1)]),_("textarea",{readonly:"",value:e.active.embed},null,8,_p)])):Y("",!0)])):Y("",!0)]),default:ut(()=>[e.headerHidden?(L(),N("button",{key:0,type:"button",class:"ps-show-header",title:e.tr("showHeader"),"aria-label":e.tr("showHeader"),onClick:t[10]||(t[10]=r=>e.setHeaderHidden(!1))},[t[16]||(t[16]=_("span",{"aria-hidden":"true"},"⌄",-1)),Ve(" "+E(e.tr("showHeader")),1)],8,vp)):Y("",!0),_("div",xp,[(L(!0),N(q,null,Ee(e.flatRows,r=>ft((L(),N("section",{key:r.key,class:"ps-pane",hidden:r.key!==e.activeKey},[!r.heavy||r.key===e.activeKey?(L(),N(q,{key:0},[_("div",{class:"ps-slot",ref_for:!0,ref:p=>e.setSlot(r.key,p)},null,512),r.state==="loading"?(L(),N("div",yp,E(e.tr("loading",{name:r.label})),1)):r.state==="error"?(L(),N("div",wp,[Ve(E(e.tr("couldNotLoad",{name:r.label})),1),t[17]||(t[17]=_("br",null,null,-1)),_("small",null,E(r.error),1)])):Y("",!0)],64)):Y("",!0)],8,kp)),[[Ln,r.key===e.activeKey]])),128)),e.activeKey?Y("",!0):(L(),N("div",Sp,E(e.tr("chooseElement")),1))])]),_:1},8,["title","dir","nav-label","labels","header","active","onUpdate:active"])}const Np=An(Id,[["render",Lp],["styles",[Nd]]]);function Ep(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Pp=Ep(),Tp=_r(Np,{configureApp(e){e.provide("psTreeBase",Pp)}});typeof customElements<"u"&&!customElements.get("plugin-studio")&&customElements.define("plugin-studio",Tp)})();