From 42b3105fedeb25cda404120a6da97aa40acd6b8a Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Fri, 25 Sep 2026 20:49:01 +0000 Subject: [PATCH] Rebuild the consumers main left stale (build owner, README rule 5) check:composite-freshness found stale on main: dashboard-plus-grid; also rebuilt: plugin-studio. Rebuilt, tree + SRI regenerated; the landing precondition (fresh, one folder, SRI) passed in main-capture scan. --- .../dashboard-plus-grid.js | 98 ------------------- .../dashboard-plus-grid/default/index.html | 2 +- .../dashboard-plus-grid/index.html | 2 +- public/dx-maps/doxa-maps-spa/manifest.json | 8 +- public/dx-maps/index.html | 2 +- public/dx-maps/manifest.json | 8 +- public/dx-maps/plugin-studio/plugin-studio.js | 9 +- .../plugin-studio/plugin-studio/index.html | 2 +- .../plugin-studio/studio/index.html | 2 +- 9 files changed, 21 insertions(+), 112 deletions(-) diff --git a/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid.js b/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid.js index 1a2596324..a87e1ea80 100644 --- a/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid.js +++ b/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid.js @@ -2,7 +2,6 @@ * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -<<<<<<< HEAD **/function ps(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const Je={},on=[],Zt=()=>{},Qr=()=>!1,da=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ga=e=>e.startsWith("onUpdate:"),it=Object.assign,ds=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},kp=Object.prototype.hasOwnProperty,Ye=(e,t)=>kp.call(e,t),Te=Array.isArray,Po=e=>Pn(e)==="[object Map]",fa=e=>Pn(e)==="[object Set]",ei=e=>Pn(e)==="[object Date]",Re=e=>typeof e=="function",nt=e=>typeof e=="string",jt=e=>typeof e=="symbol",Xe=e=>e!==null&&typeof e=="object",ti=e=>(Xe(e)||Re(e))&&Re(e.then)&&Re(e.catch),oi=Object.prototype.toString,Pn=e=>oi.call(e),wp=e=>Pn(e).slice(8,-1),ha=e=>Pn(e)==="[object Object]",gs=e=>nt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,En=ps(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ma=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},xp=/-\w/g,Et=ma(e=>e.replace(xp,t=>t.slice(1).toUpperCase())),Sp=/\B([A-Z])/g,Rt=ma(e=>e.replace(Sp,"-$1").toLowerCase()),ni=ma(e=>e.charAt(0).toUpperCase()+e.slice(1)),fs=ma(e=>e?`on${ni(e)}`:""),Jt=(e,t)=>!Object.is(e,t),$a=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:o})},hs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},si=e=>{const t=nt(e)?Number(e):NaN;return isNaN(t)?e:t};let ri;const ba=()=>ri||(ri=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function lt(e){if(Te(e)){const t={};for(let o=0;o{if(o){const n=o.split(Ap);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function He(e){let t="";if(nt(e))t=e;else if(Te(e))for(let o=0;o!!(e&&e.__v_isRef===!0),ue=e=>nt(e)?e:e==null?"":Te(e)||Xe(e)&&(e.toString===oi||!Re(e.toString))?ci(e)?ue(e.value):JSON.stringify(e,ui,2):String(e),ui=(e,t)=>ci(t)?ui(e,t.value):Po(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[n,a],s)=>(o[ms(n,s)+" =>"]=a,o),{})}:fa(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>ms(o))}:jt(t)?ms(t):Xe(t)&&!Te(t)&&!ha(t)?String(t):t,ms=(e,t="")=>{var o;return jt(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -42,47 +41,6 @@ * (c) 2025 kazuya kawaguchi * Released under the MIT License. */const x_="9.14.5";function S_(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(_o().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(_o().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(_o().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(_o().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(_o().__INTLIFY_PROD_DEVTOOLS__=!1)}const L_=n_.__EXTEND_POINT__,vo=Ka(L_);vo(),vo(),vo(),vo(),vo(),vo(),vo(),vo(),vo();const Vc=Kt.__EXTEND_POINT__,Ct=Ka(Vc),dt={UNEXPECTED_RETURN_TYPE:Vc,INVALID_ARGUMENT:Ct(),MUST_BE_CALL_SETUP_TOP:Ct(),NOT_INSTALLED:Ct(),NOT_AVAILABLE_IN_LEGACY_MODE:Ct(),REQUIRED_VALUE:Ct(),INVALID_VALUE:Ct(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Ct(),NOT_INSTALLED_WITH_PROVIDE:Ct(),UNEXPECTED_ERROR:Ct(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Ct(),BRIDGE_SUPPORT_VUE_2_ONLY:Ct(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Ct(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Ct(),__EXTEND_POINT__:Ct()};function ht(e,...t){return fn(e,null,void 0)}const gr=Mo("__translateVNode"),fr=Mo("__datetimeParts"),hr=Mo("__numberParts"),qc=Mo("__setPluralRules"),Hc=Mo("__injectWithOption"),mr=Mo("__dispose");function oa(e){if(!Ke(e)||io(e))return e;for(const t in e)if(Ht(e,t))if(!t.includes("."))Ke(e[t])&&oa(e[t]);else{const o=t.split("."),n=o.length-1;let a=e,s=!1;for(let r=0;r{if("locale"in i&&"resource"in i){const{locale:l,resource:c}=i;l?(r[l]=r[l]||Ze(),Xa(c,r[l])):Xa(c,r)}else _e(i)&&Xa(JSON.parse(i),r)}),a==null&&s)for(const i in r)Ht(r,i)&&oa(r[i]);return r}function Wc(e){return e.type}function Kc(e,t,o){let n=Ke(t.messages)?t.messages:Ze();"__i18nGlobal"in o&&(n=es(e.locale.value,{messages:n,__i18n:o.__i18nGlobal}));const a=Object.keys(n);a.length&&a.forEach(s=>{e.mergeLocaleMessage(s,n[s])});{if(Ke(t.datetimeFormats)){const s=Object.keys(t.datetimeFormats);s.length&&s.forEach(r=>{e.mergeDateTimeFormat(r,t.datetimeFormats[r])})}if(Ke(t.numberFormats)){const s=Object.keys(t.numberFormats);s.length&&s.forEach(r=>{e.mergeNumberFormat(r,t.numberFormats[r])})}}}function Yc(e){return Ge(Vn,null,e,0)}const Xc="__INTLIFY_META__",Zc=()=>[],A_=()=>!1;let Jc=0;function Qc(e){return(t,o,n,a)=>e(o,n,Ro()||void 0,a)}const P_=()=>{const e=Ro();let t=null;return e&&(t=Wc(e)[Xc])?{[Xc]:t}:null};function $r(e={},t){const{__root:o,__injectWithOption:n}=e,a=o===void 0,s=e.flatJson,r=Ha?de:On,i=!!e.translateExistCompatible;let l=Be(e.inheritLocale)?e.inheritLocale:!0;const c=r(o&&l?o.locale.value:_e(e.locale)?e.locale:$n),u=r(o&&l?o.fallbackLocale.value:_e(e.fallbackLocale)||at(e.fallbackLocale)||Oe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),d=r(es(c.value,e)),f=r(Oe(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),v=r(Oe(e.numberFormats)?e.numberFormats:{[c.value]:{}});let L=o?o.missingWarn:Be(e.missingWarn)||Oo(e.missingWarn)?e.missingWarn:!0,k=o?o.fallbackWarn:Be(e.fallbackWarn)||Oo(e.fallbackWarn)?e.fallbackWarn:!0,x=o?o.fallbackRoot:Be(e.fallbackRoot)?e.fallbackRoot:!0,C=!!e.fallbackFormat,m=ot(e.missing)?e.missing:null,h=ot(e.missing)?Qc(e.missing):null,p=ot(e.postTranslation)?e.postTranslation:null,b=o?o.warnHtmlMessage:Be(e.warnHtmlMessage)?e.warnHtmlMessage:!0,A=!!e.escapeParameter;const w=o?o.modifiers:Oe(e.modifiers)?e.modifiers:{};let M=e.pluralRules||o&&o.pluralRules,U;U=(()=>{a&&Ec(null);const R={version:x_,locale:c.value,fallbackLocale:u.value,messages:d.value,modifiers:w,pluralRules:M,missing:h===null?void 0:h,missingWarn:L,fallbackWarn:k,fallbackFormat:C,unresolving:!0,postTranslation:p===null?void 0:p,warnHtmlMessage:b,escapeParameter:A,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};R.datetimeFormats=f.value,R.numberFormats=v.value,R.__datetimeFormatters=Oe(U)?U.__datetimeFormatters:void 0,R.__numberFormatters=Oe(U)?U.__numberFormatters:void 0;const j=f_(R);return a&&Ec(j),j})(),ta(U,c.value,u.value);function B(){return[c.value,u.value,d.value,f.value,v.value]}const X=re({get:()=>c.value,set:R=>{c.value=R,U.locale=c.value}}),pe=re({get:()=>u.value,set:R=>{u.value=R,U.fallbackLocale=u.value,ta(U,c.value,R)}}),I=re(()=>d.value),J=re(()=>f.value),W=re(()=>v.value);function G(){return ot(p)?p:null}function ae(R){p=R,U.postTranslation=R}function F(){return m}function O(R){R!==null&&(h=Qc(R)),m=R,U.missing=h}const V=(R,j,le,ve,Ue,qe)=>{B();let je;try{__INTLIFY_PROD_DEVTOOLS__,a||(U.fallbackContext=o?g_():void 0),je=R(U)}finally{__INTLIFY_PROD_DEVTOOLS__,a||(U.fallbackContext=void 0)}if(le!=="translate exists"&&ct(je)&&je===Qa||le==="translate exists"&&!je){const[gt,mt]=j();return o&&x?ve(o):Ue(gt)}else{if(qe(je))return je;throw ht(dt.UNEXPECTED_RETURN_TYPE)}};function D(...R){return V(j=>Reflect.apply(Oc,null,[j,...R]),()=>ur(...R),"translate",j=>Reflect.apply(j.t,j,[...R]),j=>j,j=>_e(j))}function se(...R){const[j,le,ve]=R;if(ve&&!Ke(ve))throw ht(dt.INVALID_ARGUMENT);return D(j,le,bt({resolvedMessage:!0},ve||{}))}function me(...R){return V(j=>Reflect.apply(Dc,null,[j,...R]),()=>pr(...R),"datetime format",j=>Reflect.apply(j.d,j,[...R]),()=>vc,j=>_e(j))}function we(...R){return V(j=>Reflect.apply(jc,null,[j,...R]),()=>dr(...R),"number format",j=>Reflect.apply(j.n,j,[...R]),()=>vc,j=>_e(j))}function Le(R){return R.map(j=>_e(j)||ct(j)||Be(j)?Yc(String(j)):j)}const ke={normalize:Le,interpolate:R=>R,type:"vnode"};function oe(...R){return V(j=>{let le;const ve=j;try{ve.processor=ke,le=Reflect.apply(Oc,null,[ve,...R])}finally{ve.processor=null}return le},()=>ur(...R),"translate",j=>j[gr](...R),j=>[Yc(j)],j=>at(j))}function fe(...R){return V(j=>Reflect.apply(jc,null,[j,...R]),()=>dr(...R),"number format",j=>j[hr](...R),Zc,j=>_e(j)||at(j))}function ye(...R){return V(j=>Reflect.apply(Dc,null,[j,...R]),()=>pr(...R),"datetime format",j=>j[fr](...R),Zc,j=>_e(j)||at(j))}function _(R){M=R,U.pluralRules=M}function P(R,j){return V(()=>{if(!R)return!1;const le=_e(j)?j:c.value,ve=ee(le),Ue=U.messageResolver(ve,R);return i?Ue!=null:io(Ue)||Ut(Ue)||_e(Ue)},()=>[R],"translate exists",le=>Reflect.apply(le.te,le,[R,j]),A_,le=>Be(le))}function S(R){let j=null;const le=_c(U,u.value,c.value);for(let ve=0;ve{l&&(c.value=R,U.locale=R,ta(U,c.value,u.value))}),rt(o.fallbackLocale,R=>{l&&(u.value=R,U.fallbackLocale=R,ta(U,c.value,u.value))}));const K={id:Jc,locale:X,fallbackLocale:pe,get inheritLocale(){return l},set inheritLocale(R){l=R,R&&o&&(c.value=o.locale.value,u.value=o.fallbackLocale.value,ta(U,c.value,u.value))},get availableLocales(){return Object.keys(d.value).sort()},messages:I,get modifiers(){return w},get pluralRules(){return M||{}},get isGlobal(){return a},get missingWarn(){return L},set missingWarn(R){L=R,U.missingWarn=L},get fallbackWarn(){return k},set fallbackWarn(R){k=R,U.fallbackWarn=k},get fallbackRoot(){return x},set fallbackRoot(R){x=R},get fallbackFormat(){return C},set fallbackFormat(R){C=R,U.fallbackFormat=C},get warnHtmlMessage(){return b},set warnHtmlMessage(R){b=R,U.warnHtmlMessage=R},get escapeParameter(){return A},set escapeParameter(R){A=R,U.escapeParameter=R},t:D,getLocaleMessage:ee,setLocaleMessage:te,mergeLocaleMessage:ce,getPostTranslationHandler:G,setPostTranslationHandler:ae,getMissingHandler:F,setMissingHandler:O,[qc]:_};return K.datetimeFormats=J,K.numberFormats=W,K.rt=se,K.te=P,K.tm=z,K.d=me,K.n=we,K.getDateTimeFormat=ie,K.setDateTimeFormat=g,K.mergeDateTimeFormat=$,K.getNumberFormat=y,K.setNumberFormat=E,K.mergeNumberFormat=q,K[Hc]=n,K[gr]=oe,K[fr]=ye,K[hr]=fe,K}function E_(e){const t=_e(e.locale)?e.locale:$n,o=_e(e.fallbackLocale)||at(e.fallbackLocale)||Oe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,n=ot(e.missing)?e.missing:void 0,a=Be(e.silentTranslationWarn)||Oo(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,s=Be(e.silentFallbackWarn)||Oo(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,r=Be(e.fallbackRoot)?e.fallbackRoot:!0,i=!!e.formatFallbackMessages,l=Oe(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=ot(e.postTranslation)?e.postTranslation:void 0,d=_e(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,f=!!e.escapeParameterHtml,v=Be(e.sync)?e.sync:!0;let L=e.messages;if(Oe(e.sharedMessages)){const A=e.sharedMessages;L=Object.keys(A).reduce((M,U)=>{const ne=M[U]||(M[U]={});return bt(ne,A[U]),M},L||{})}const{__i18n:k,__root:x,__injectWithOption:C}=e,m=e.datetimeFormats,h=e.numberFormats,p=e.flatJson,b=e.translateExistCompatible;return{locale:t,fallbackLocale:o,messages:L,flatJson:p,datetimeFormats:m,numberFormats:h,missing:n,missingWarn:a,fallbackWarn:s,fallbackRoot:r,fallbackFormat:i,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:d,escapeParameter:f,messageResolver:e.messageResolver,inheritLocale:v,translateExistCompatible:b,__i18n:k,__root:x,__injectWithOption:C}}function br(e={},t){{const o=$r(E_(e)),{__extender:n}=e,a={id:o.id,get locale(){return o.locale.value},set locale(s){o.locale.value=s},get fallbackLocale(){return o.fallbackLocale.value},set fallbackLocale(s){o.fallbackLocale.value=s},get messages(){return o.messages.value},get datetimeFormats(){return o.datetimeFormats.value},get numberFormats(){return o.numberFormats.value},get availableLocales(){return o.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(s){},get missing(){return o.getMissingHandler()},set missing(s){o.setMissingHandler(s)},get silentTranslationWarn(){return Be(o.missingWarn)?!o.missingWarn:o.missingWarn},set silentTranslationWarn(s){o.missingWarn=Be(s)?!s:s},get silentFallbackWarn(){return Be(o.fallbackWarn)?!o.fallbackWarn:o.fallbackWarn},set silentFallbackWarn(s){o.fallbackWarn=Be(s)?!s:s},get modifiers(){return o.modifiers},get formatFallbackMessages(){return o.fallbackFormat},set formatFallbackMessages(s){o.fallbackFormat=s},get postTranslation(){return o.getPostTranslationHandler()},set postTranslation(s){o.setPostTranslationHandler(s)},get sync(){return o.inheritLocale},set sync(s){o.inheritLocale=s},get warnHtmlInMessage(){return o.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(s){o.warnHtmlMessage=s!=="off"},get escapeParameterHtml(){return o.escapeParameter},set escapeParameterHtml(s){o.escapeParameter=s},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(s){},get pluralizationRules(){return o.pluralRules||{}},__composer:o,t(...s){const[r,i,l]=s,c={};let u=null,d=null;if(!_e(r))throw ht(dt.INVALID_ARGUMENT);const f=r;return _e(i)?c.locale=i:at(i)?u=i:Oe(i)&&(d=i),at(l)?u=l:Oe(l)&&(d=l),Reflect.apply(o.t,o,[f,u||d||{},c])},rt(...s){return Reflect.apply(o.rt,o,[...s])},tc(...s){const[r,i,l]=s,c={plural:1};let u=null,d=null;if(!_e(r))throw ht(dt.INVALID_ARGUMENT);const f=r;return _e(i)?c.locale=i:ct(i)?c.plural=i:at(i)?u=i:Oe(i)&&(d=i),_e(l)?c.locale=l:at(l)?u=l:Oe(l)&&(d=l),Reflect.apply(o.t,o,[f,u||d||{},c])},te(s,r){return o.te(s,r)},tm(s){return o.tm(s)},getLocaleMessage(s){return o.getLocaleMessage(s)},setLocaleMessage(s,r){o.setLocaleMessage(s,r)},mergeLocaleMessage(s,r){o.mergeLocaleMessage(s,r)},d(...s){return Reflect.apply(o.d,o,[...s])},getDateTimeFormat(s){return o.getDateTimeFormat(s)},setDateTimeFormat(s,r){o.setDateTimeFormat(s,r)},mergeDateTimeFormat(s,r){o.mergeDateTimeFormat(s,r)},n(...s){return Reflect.apply(o.n,o,[...s])},getNumberFormat(s){return o.getNumberFormat(s)},setNumberFormat(s,r){o.setNumberFormat(s,r)},mergeNumberFormat(s,r){o.mergeNumberFormat(s,r)},getChoiceIndex(s,r){return-1}};return a.__extender=n,a}}const _r={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function C_({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((n,a)=>[...n,...a.type===Ce?a.children:[a]],[]):t.reduce((o,n)=>{const a=e[n];return a&&(o[n]=a()),o},Ze())}function eu(e){return Ce}const tu=Gn({name:"i18n-t",props:bt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>ct(e)||!isNaN(e)}},_r),setup(e,t){const{slots:o,attrs:n}=t,a=e.i18n||Jo({useScope:e.scope,__useComponent:!0});return()=>{const s=Object.keys(o).filter(d=>d!=="_"),r=Ze();e.locale&&(r.locale=e.locale),e.plural!==void 0&&(r.plural=_e(e.plural)?+e.plural:e.plural);const i=C_(t,s),l=a[gr](e.keypath,i,r),c=bt(Ze(),n),u=_e(e.tag)||Ke(e.tag)?e.tag:eu();return Cl(u,c,l)}}});function N_(e){return at(e)&&!_e(e[0])}function ou(e,t,o,n){const{slots:a,attrs:s}=t;return()=>{const r={part:!0};let i=Ze();e.locale&&(r.locale=e.locale),_e(e.format)?r.key=e.format:Ke(e.format)&&(_e(e.format.key)&&(r.key=e.format.key),i=Object.keys(e.format).reduce((f,v)=>o.includes(v)?bt(Ze(),f,{[v]:e.format[v]}):f,Ze()));const l=n(e.value,r,i);let c=[r.key];at(l)?c=l.map((f,v)=>{const L=a[f.type],k=L?L({[f.type]:f.value,index:v,parts:l}):[f.value];return N_(k)&&(k[0].key=`${f.type}-${v}`),k}):_e(l)&&(c=[l]);const u=bt(Ze(),s),d=_e(e.tag)||Ke(e.tag)?e.tag:eu();return Cl(d,u,c)}}const nu=Gn({name:"i18n-n",props:bt({value:{type:Number,required:!0},format:{type:[String,Object]}},_r),setup(e,t){const o=e.i18n||Jo({useScope:e.scope,__useComponent:!0});return ou(e,t,zc,(...n)=>o[hr](...n))}}),au=Gn({name:"i18n-d",props:bt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},_r),setup(e,t){const o=e.i18n||Jo({useScope:e.scope,__useComponent:!0});return ou(e,t,Uc,(...n)=>o[fr](...n))}});function T_(e,t){const o=e;if(e.mode==="composition")return o.__getInstance(t)||e.global;{const n=o.__getInstance(t);return n!=null?n.__composer:e.global.__composer}}function R_(e){const t=r=>{const{instance:i,modifiers:l,value:c}=r;if(!i||!i.$)throw ht(dt.UNEXPECTED_ERROR);const u=T_(e,i.$),d=su(c);return[Reflect.apply(u.t,u,[...ru(d)]),u]};return{created:(r,i)=>{const[l,c]=t(i);Ha&&e.global===c&&(r.__i18nWatcher=rt(c.locale,()=>{i.instance&&i.instance.$forceUpdate()})),r.__composer=c,r.textContent=l},unmounted:r=>{Ha&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:i})=>{if(r.__composer){const l=r.__composer,c=su(i);r.textContent=Reflect.apply(l.t,l,[...ru(c)])}},getSSRProps:r=>{const[i]=t(r);return{textContent:i}}}}function su(e){if(_e(e))return{path:e};if(Oe(e)){if(!("path"in e))throw ht(dt.REQUIRED_VALUE,"path");return e}else throw ht(dt.INVALID_VALUE)}function ru(e){const{path:t,locale:o,args:n,choice:a,plural:s}=e,r={},i=n||{};return _e(o)&&(r.locale=o),ct(a)&&(r.plural=a),ct(s)&&(r.plural=s),[t,i,r]}function M_(e,t,...o){const n=Oe(o[0])?o[0]:{},a=!!n.useI18nComponentName;(Be(n.globalInstall)?n.globalInstall:!0)&&([a?"i18n":tu.name,"I18nT"].forEach(r=>e.component(r,tu)),[nu.name,"I18nN"].forEach(r=>e.component(r,nu)),[au.name,"I18nD"].forEach(r=>e.component(r,au))),e.directive("t",R_(t))}function O_(e,t,o){return{beforeCreate(){const n=Ro();if(!n)throw ht(dt.UNEXPECTED_ERROR);const a=this.$options;if(a.i18n){const s=a.i18n;if(a.__i18n&&(s.__i18n=a.__i18n),s.__root=t,this===this.$root)this.$i18n=iu(e,s);else{s.__injectWithOption=!0,s.__extender=o.__vueI18nExtend,this.$i18n=br(s);const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}}else if(a.__i18n)if(this===this.$root)this.$i18n=iu(e,a);else{this.$i18n=br({__i18n:a.__i18n,__injectWithOption:!0,__extender:o.__vueI18nExtend,__root:t});const s=this.$i18n;s.__extender&&(s.__disposer=s.__extender(this.$i18n))}else this.$i18n=e;a.__i18nGlobal&&Kc(t,a,a),this.$t=(...s)=>this.$i18n.t(...s),this.$rt=(...s)=>this.$i18n.rt(...s),this.$tc=(...s)=>this.$i18n.tc(...s),this.$te=(s,r)=>this.$i18n.te(s,r),this.$d=(...s)=>this.$i18n.d(...s),this.$n=(...s)=>this.$i18n.n(...s),this.$tm=s=>this.$i18n.tm(s),o.__setInstance(n,this.$i18n)},mounted(){},unmounted(){const n=Ro();if(!n)throw ht(dt.UNEXPECTED_ERROR);const a=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,a.__disposer&&(a.__disposer(),delete a.__disposer,delete a.__extender),o.__deleteInstance(n),delete this.$i18n}}}function iu(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[qc](t.pluralizationRules||e.pluralizationRules);const o=es(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(o).forEach(n=>e.mergeLocaleMessage(n,o[n])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const F_=Mo("global-vue-i18n");function I_(e={},t){const o=__VUE_I18N_LEGACY_API__&&Be(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=Be(e.globalInjection)?e.globalInjection:!0,a=__VUE_I18N_LEGACY_API__&&o?!!e.allowComposition:!0,s=new Map,[r,i]=D_(e,o),l=Mo("");function c(f){return s.get(f)||null}function u(f,v){s.set(f,v)}function d(f){s.delete(f)}{const f={get mode(){return __VUE_I18N_LEGACY_API__&&o?"legacy":"composition"},get allowComposition(){return a},async install(v,...L){if(v.__VUE_I18N_SYMBOL__=l,v.provide(v.__VUE_I18N_SYMBOL__,f),Oe(L[0])){const C=L[0];f.__composerExtend=C.__composerExtend,f.__vueI18nExtend=C.__vueI18nExtend}let k=null;!o&&n&&(k=W_(v,f.global)),__VUE_I18N_FULL_INSTALL__&&M_(v,f,...L),__VUE_I18N_LEGACY_API__&&o&&v.mixin(O_(i,i.__composer,f));const x=v.unmount;v.unmount=()=>{k&&k(),f.dispose(),x()}},get global(){return i},dispose(){r.stop()},__instances:s,__getInstance:c,__setInstance:u,__deleteInstance:d};return f}}function Jo(e={}){const t=Ro();if(t==null)throw ht(dt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw ht(dt.NOT_INSTALLED);const o=U_(t),n=j_(o),a=Wc(t),s=G_(e,a);if(__VUE_I18N_LEGACY_API__&&o.mode==="legacy"&&!e.__useComponent){if(!o.allowComposition)throw ht(dt.NOT_AVAILABLE_IN_LEGACY_MODE);return q_(t,s,n,e)}if(s==="global")return Kc(n,e,a),n;if(s==="parent"){let l=z_(o,t,e.__useComponent);return l==null&&(l=n),l}const r=o;let i=r.__getInstance(t);if(i==null){const l=bt({},e);"__i18n"in a&&(l.__i18n=a.__i18n),n&&(l.__root=n),i=$r(l),r.__composerExtend&&(i[mr]=r.__composerExtend(i)),V_(r,t,i),r.__setInstance(t,i)}return i}function D_(e,t,o){const n=di();{const a=__VUE_I18N_LEGACY_API__&&t?n.run(()=>br(e)):n.run(()=>$r(e));if(a==null)throw ht(dt.UNEXPECTED_ERROR);return[n,a]}}function U_(e){{const t=Fe(e.isCE?F_:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw ht(e.isCE?dt.NOT_INSTALLED_WITH_PROVIDE:dt.UNEXPECTED_ERROR);return t}}function G_(e,t){return Wa(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function j_(e){return e.mode==="composition"?e.global:e.global.__composer}function z_(e,t,o=!1){let n=null;const a=t.root;let s=B_(t,o);for(;s!=null;){const r=e;if(e.mode==="composition")n=r.__getInstance(s);else if(__VUE_I18N_LEGACY_API__){const i=r.__getInstance(s);i!=null&&(n=i.__composer,o&&n&&!n[Hc]&&(n=null))}if(n!=null||a===s)break;s=s.parent}return n}function B_(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function V_(e,t,o){vt(()=>{},t),Ds(()=>{const n=o;e.__deleteInstance(t);const a=n[mr];a&&(a(),delete n[mr])},t)}function q_(e,t,o,n={}){const a=t==="local",s=On(null);if(a&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw ht(dt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const r=Be(n.inheritLocale)?n.inheritLocale:!_e(n.locale),i=de(!a||r?o.locale.value:_e(n.locale)?n.locale:$n),l=de(!a||r?o.fallbackLocale.value:_e(n.fallbackLocale)||at(n.fallbackLocale)||Oe(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:i.value),c=de(es(i.value,n)),u=de(Oe(n.datetimeFormats)?n.datetimeFormats:{[i.value]:{}}),d=de(Oe(n.numberFormats)?n.numberFormats:{[i.value]:{}}),f=a?o.missingWarn:Be(n.missingWarn)||Oo(n.missingWarn)?n.missingWarn:!0,v=a?o.fallbackWarn:Be(n.fallbackWarn)||Oo(n.fallbackWarn)?n.fallbackWarn:!0,L=a?o.fallbackRoot:Be(n.fallbackRoot)?n.fallbackRoot:!0,k=!!n.fallbackFormat,x=ot(n.missing)?n.missing:null,C=ot(n.postTranslation)?n.postTranslation:null,m=a?o.warnHtmlMessage:Be(n.warnHtmlMessage)?n.warnHtmlMessage:!0,h=!!n.escapeParameter,p=a?o.modifiers:Oe(n.modifiers)?n.modifiers:{},b=n.pluralRules||a&&o.pluralRules;function A(){return[i.value,l.value,c.value,u.value,d.value]}const w=re({get:()=>s.value?s.value.locale.value:i.value,set:S=>{s.value&&(s.value.locale.value=S),i.value=S}}),M=re({get:()=>s.value?s.value.fallbackLocale.value:l.value,set:S=>{s.value&&(s.value.fallbackLocale.value=S),l.value=S}}),U=re(()=>s.value?s.value.messages.value:c.value),ne=re(()=>u.value),B=re(()=>d.value);function X(){return s.value?s.value.getPostTranslationHandler():C}function pe(S){s.value&&s.value.setPostTranslationHandler(S)}function I(){return s.value?s.value.getMissingHandler():x}function J(S){s.value&&s.value.setMissingHandler(S)}function W(S){return A(),S()}function G(...S){return s.value?W(()=>Reflect.apply(s.value.t,null,[...S])):W(()=>"")}function ae(...S){return s.value?Reflect.apply(s.value.rt,null,[...S]):""}function F(...S){return s.value?W(()=>Reflect.apply(s.value.d,null,[...S])):W(()=>"")}function O(...S){return s.value?W(()=>Reflect.apply(s.value.n,null,[...S])):W(()=>"")}function V(S){return s.value?s.value.tm(S):{}}function D(S,z){return s.value?s.value.te(S,z):!1}function se(S){return s.value?s.value.getLocaleMessage(S):{}}function me(S,z){s.value&&(s.value.setLocaleMessage(S,z),c.value[S]=z)}function we(S,z){s.value&&s.value.mergeLocaleMessage(S,z)}function Le(S){return s.value?s.value.getDateTimeFormat(S):{}}function Ae(S,z){s.value&&(s.value.setDateTimeFormat(S,z),u.value[S]=z)}function ke(S,z){s.value&&s.value.mergeDateTimeFormat(S,z)}function oe(S){return s.value?s.value.getNumberFormat(S):{}}function fe(S,z){s.value&&(s.value.setNumberFormat(S,z),d.value[S]=z)}function ye(S,z){s.value&&s.value.mergeNumberFormat(S,z)}const _={get id(){return s.value?s.value.id:-1},locale:w,fallbackLocale:M,messages:U,datetimeFormats:ne,numberFormats:B,get inheritLocale(){return s.value?s.value.inheritLocale:r},set inheritLocale(S){s.value&&(s.value.inheritLocale=S)},get availableLocales(){return s.value?s.value.availableLocales:Object.keys(c.value)},get modifiers(){return s.value?s.value.modifiers:p},get pluralRules(){return s.value?s.value.pluralRules:b},get isGlobal(){return s.value?s.value.isGlobal:!1},get missingWarn(){return s.value?s.value.missingWarn:f},set missingWarn(S){s.value&&(s.value.missingWarn=S)},get fallbackWarn(){return s.value?s.value.fallbackWarn:v},set fallbackWarn(S){s.value&&(s.value.missingWarn=S)},get fallbackRoot(){return s.value?s.value.fallbackRoot:L},set fallbackRoot(S){s.value&&(s.value.fallbackRoot=S)},get fallbackFormat(){return s.value?s.value.fallbackFormat:k},set fallbackFormat(S){s.value&&(s.value.fallbackFormat=S)},get warnHtmlMessage(){return s.value?s.value.warnHtmlMessage:m},set warnHtmlMessage(S){s.value&&(s.value.warnHtmlMessage=S)},get escapeParameter(){return s.value?s.value.escapeParameter:h},set escapeParameter(S){s.value&&(s.value.escapeParameter=S)},t:G,getPostTranslationHandler:X,setPostTranslationHandler:pe,getMissingHandler:I,setMissingHandler:J,rt:ae,d:F,n:O,tm:V,te:D,getLocaleMessage:se,setLocaleMessage:me,mergeLocaleMessage:we,getDateTimeFormat:Le,setDateTimeFormat:Ae,mergeDateTimeFormat:ke,getNumberFormat:oe,setNumberFormat:fe,mergeNumberFormat:ye};function P(S){S.locale.value=i.value,S.fallbackLocale.value=l.value,Object.keys(c.value).forEach(z=>{S.mergeLocaleMessage(z,c.value[z])}),Object.keys(u.value).forEach(z=>{S.mergeDateTimeFormat(z,u.value[z])}),Object.keys(d.value).forEach(z=>{S.mergeNumberFormat(z,d.value[z])}),S.escapeParameter=h,S.fallbackFormat=k,S.fallbackRoot=L,S.fallbackWarn=v,S.missingWarn=f,S.warnHtmlMessage=m}return Zi(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw ht(dt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const S=s.value=e.proxy.$i18n.__composer;t==="global"?(i.value=S.locale.value,l.value=S.fallbackLocale.value,c.value=S.messages.value,u.value=S.datetimeFormats.value,d.value=S.numberFormats.value):a&&P(S)}),_}const H_=["locale","fallbackLocale","availableLocales"],lu=["t","rt","d","n","tm","te"];function W_(e,t){const o=Object.create(null);return H_.forEach(a=>{const s=Object.getOwnPropertyDescriptor(t,a);if(!s)throw ht(dt.UNEXPECTED_ERROR);const r=ft(s.value)?{get(){return s.value.value},set(i){s.value.value=i}}:{get(){return s.get&&s.get()}};Object.defineProperty(o,a,r)}),e.config.globalProperties.$i18n=o,lu.forEach(a=>{const s=Object.getOwnPropertyDescriptor(t,a);if(!s||!s.value)throw ht(dt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${a}`,s)}),()=>{delete e.config.globalProperties.$i18n,lu.forEach(a=>{delete e.config.globalProperties[`$${a}`]})}}if(S_(),__INTLIFY_JIT_COMPILATION__?xc(__):xc(b_),c_(Bb),u_(_c),__INTLIFY_PROD_DEVTOOLS__){const e=_o();e.__INTLIFY__=!0,Jb(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const K_=Object.assign({"./locales/ar/allPeopleGroups.json":Yg,"./locales/ar/aria.json":Xg,"./locales/ar/buttons.json":Zg,"./locales/ar/connectivity.json":Jg,"./locales/ar/controls.json":Qg,"./locales/ar/dashboard.json":ef,"./locales/ar/detail.json":tf,"./locales/ar/gospel.json":of,"./locales/ar/grid.json":nf,"./locales/ar/legend.json":af,"./locales/ar/messages.json":sf,"./locales/ar/options.json":rf,"./locales/ar/popup.json":lf,"./locales/ar/prayerLaps.json":cf,"./locales/ar/regions.json":uf,"./locales/ar/search.json":pf,"./locales/ar/studio.json":df,"./locales/ar/tabs.json":gf,"./locales/ar/vision.json":ff,"./locales/de/allPeopleGroups.json":hf,"./locales/de/aria.json":mf,"./locales/de/buttons.json":$f,"./locales/de/connectivity.json":bf,"./locales/de/controls.json":_f,"./locales/de/dashboard.json":yf,"./locales/de/detail.json":vf,"./locales/de/gospel.json":kf,"./locales/de/grid.json":wf,"./locales/de/legend.json":xf,"./locales/de/messages.json":Sf,"./locales/de/options.json":Lf,"./locales/de/popup.json":Af,"./locales/de/prayerLaps.json":Pf,"./locales/de/regions.json":Ef,"./locales/de/search.json":Cf,"./locales/de/studio.json":Nf,"./locales/de/tabs.json":Tf,"./locales/de/vision.json":Rf,"./locales/en/allPeopleGroups.json":Mf,"./locales/en/aria.json":Of,"./locales/en/buttons.json":Ff,"./locales/en/connectivity.json":If,"./locales/en/controls.json":Df,"./locales/en/dashboard.json":Uf,"./locales/en/detail.json":Gf,"./locales/en/gospel.json":jf,"./locales/en/grid.json":zf,"./locales/en/legend.json":Bf,"./locales/en/messages.json":Vf,"./locales/en/options.json":qf,"./locales/en/popup.json":Hf,"./locales/en/prayerLaps.json":Wf,"./locales/en/regions.json":Kf,"./locales/en/search.json":Yf,"./locales/en/studio.json":Xf,"./locales/en/tabs.json":Zf,"./locales/en/vision.json":Jf,"./locales/es/allPeopleGroups.json":Qf,"./locales/es/aria.json":eh,"./locales/es/buttons.json":th,"./locales/es/connectivity.json":oh,"./locales/es/controls.json":nh,"./locales/es/dashboard.json":ah,"./locales/es/detail.json":sh,"./locales/es/gospel.json":rh,"./locales/es/grid.json":ih,"./locales/es/legend.json":lh,"./locales/es/messages.json":ch,"./locales/es/options.json":uh,"./locales/es/popup.json":ph,"./locales/es/prayerLaps.json":dh,"./locales/es/regions.json":gh,"./locales/es/search.json":fh,"./locales/es/studio.json":hh,"./locales/es/tabs.json":mh,"./locales/es/vision.json":$h,"./locales/fr/allPeopleGroups.json":bh,"./locales/fr/aria.json":_h,"./locales/fr/buttons.json":yh,"./locales/fr/connectivity.json":vh,"./locales/fr/controls.json":kh,"./locales/fr/dashboard.json":wh,"./locales/fr/detail.json":xh,"./locales/fr/gospel.json":Sh,"./locales/fr/grid.json":Lh,"./locales/fr/legend.json":Ah,"./locales/fr/messages.json":Ph,"./locales/fr/options.json":Eh,"./locales/fr/popup.json":Ch,"./locales/fr/prayerLaps.json":Nh,"./locales/fr/regions.json":Th,"./locales/fr/search.json":Rh,"./locales/fr/studio.json":Mh,"./locales/fr/tabs.json":Oh,"./locales/fr/vision.json":Fh,"./locales/hi/allPeopleGroups.json":Ih,"./locales/hi/aria.json":Dh,"./locales/hi/buttons.json":Uh,"./locales/hi/connectivity.json":Gh,"./locales/hi/controls.json":jh,"./locales/hi/dashboard.json":zh,"./locales/hi/detail.json":Bh,"./locales/hi/gospel.json":Vh,"./locales/hi/grid.json":qh,"./locales/hi/legend.json":Hh,"./locales/hi/messages.json":Wh,"./locales/hi/options.json":Kh,"./locales/hi/popup.json":Yh,"./locales/hi/prayerLaps.json":Xh,"./locales/hi/regions.json":Zh,"./locales/hi/search.json":Jh,"./locales/hi/studio.json":Qh,"./locales/hi/tabs.json":em,"./locales/hi/vision.json":tm,"./locales/it/allPeopleGroups.json":om,"./locales/it/aria.json":nm,"./locales/it/buttons.json":am,"./locales/it/connectivity.json":sm,"./locales/it/controls.json":rm,"./locales/it/dashboard.json":im,"./locales/it/detail.json":lm,"./locales/it/gospel.json":cm,"./locales/it/grid.json":um,"./locales/it/legend.json":pm,"./locales/it/messages.json":dm,"./locales/it/options.json":gm,"./locales/it/popup.json":fm,"./locales/it/prayerLaps.json":hm,"./locales/it/regions.json":mm,"./locales/it/search.json":$m,"./locales/it/studio.json":bm,"./locales/it/tabs.json":_m,"./locales/it/vision.json":ym,"./locales/pt/allPeopleGroups.json":vm,"./locales/pt/aria.json":km,"./locales/pt/buttons.json":wm,"./locales/pt/connectivity.json":xm,"./locales/pt/controls.json":Sm,"./locales/pt/dashboard.json":Lm,"./locales/pt/detail.json":Am,"./locales/pt/gospel.json":Pm,"./locales/pt/grid.json":Em,"./locales/pt/legend.json":Cm,"./locales/pt/messages.json":Nm,"./locales/pt/options.json":Tm,"./locales/pt/popup.json":Rm,"./locales/pt/prayerLaps.json":Mm,"./locales/pt/regions.json":Om,"./locales/pt/search.json":Fm,"./locales/pt/studio.json":Im,"./locales/pt/tabs.json":Dm,"./locales/pt/vision.json":Um,"./locales/ro/allPeopleGroups.json":Gm,"./locales/ro/aria.json":jm,"./locales/ro/buttons.json":zm,"./locales/ro/connectivity.json":Bm,"./locales/ro/controls.json":Vm,"./locales/ro/dashboard.json":qm,"./locales/ro/detail.json":Hm,"./locales/ro/gospel.json":Wm,"./locales/ro/grid.json":Km,"./locales/ro/legend.json":Ym,"./locales/ro/messages.json":Xm,"./locales/ro/options.json":Zm,"./locales/ro/popup.json":Jm,"./locales/ro/prayerLaps.json":Qm,"./locales/ro/regions.json":e$,"./locales/ro/search.json":t$,"./locales/ro/studio.json":o$,"./locales/ro/tabs.json":n$,"./locales/ro/vision.json":a$,"./locales/ru/allPeopleGroups.json":s$,"./locales/ru/aria.json":r$,"./locales/ru/buttons.json":i$,"./locales/ru/connectivity.json":l$,"./locales/ru/controls.json":c$,"./locales/ru/dashboard.json":u$,"./locales/ru/detail.json":p$,"./locales/ru/gospel.json":d$,"./locales/ru/grid.json":g$,"./locales/ru/legend.json":f$,"./locales/ru/messages.json":h$,"./locales/ru/options.json":m$,"./locales/ru/popup.json":$$,"./locales/ru/prayerLaps.json":b$,"./locales/ru/regions.json":_$,"./locales/ru/search.json":y$,"./locales/ru/studio.json":v$,"./locales/ru/tabs.json":k$,"./locales/ru/vision.json":w$,"./locales/zh/allPeopleGroups.json":x$,"./locales/zh/aria.json":S$,"./locales/zh/buttons.json":L$,"./locales/zh/connectivity.json":A$,"./locales/zh/controls.json":P$,"./locales/zh/dashboard.json":E$,"./locales/zh/detail.json":C$,"./locales/zh/gospel.json":N$,"./locales/zh/grid.json":T$,"./locales/zh/legend.json":R$,"./locales/zh/messages.json":M$,"./locales/zh/options.json":O$,"./locales/zh/popup.json":F$,"./locales/zh/prayerLaps.json":I$,"./locales/zh/regions.json":D$,"./locales/zh/search.json":U$,"./locales/zh/studio.json":G$,"./locales/zh/tabs.json":j$,"./locales/zh/vision.json":z$}),Qo={};for(const[e,t]of Object.entries(K_)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,n,a]=o;Qo[n]??(Qo[n]={}),Qo[n][a]=t}Qo.en;const ts=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"],Y_=new Set(["ar"]);function X_(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function cu(){var n;const e=X_();if(ts.includes(e))return e;const o=(((n=document==null?void 0:document.documentElement)==null?void 0:n.lang)||"").split("-")[0].toLowerCase();return ts.includes(o)?o:"en"}function Z_(){const e=cu();try{Y_.has(e)&&(document!=null&&document.documentElement)&&(document.documentElement.dir="rtl")}catch{}const t=I_({legacy:!1,globalInjection:!0,locale:e,fallbackLocale:"en",messages:Qo,missingWarn:!1,fallbackWarn:!1});rt(t.global.locale,n=>pu(n),{immediate:!0});const o=t.install.bind(t);return t.install=(n,...a)=>{const s=o(n,...a);return n.provide("appI18n",t),s},t}const uu="__DOXA_PAGE_LOCALE";function pu(e){const t=String(e||"").split("-")[0].toLowerCase();if(ts.includes(t))try{typeof window<"u"&&(window[uu]=t)}catch{}}function J_(){try{return typeof window<"u"&&window[uu]||""}catch{return""}}function Se(e,t){const o=a=>{let s=Qo[a];for(const r of String(e).split(".")){if(!s||typeof s!="object")return;s=s[r]}return typeof s=="string"?s:void 0},n=t||J_()||cu();return o(n)??o("en")}const du="adoptionStatus",ko={notAdopted:"#f03b2d",hasAdoption:"#22c55e"},Q_=ko,yr={notAdopted:"Needs Adoption",hasAdopted:"Has Adoption"},ey=yr;function gu(e){var n;const t=e.adoptionStatus??((n=e._raw)==null?void 0:n.adopted_by_churches);return t===!0||t===1||typeof t=="number"&&t>0||typeof t=="object"&&(t==null?void 0:t.value)?ko.hasAdoption:ko.notAdopted}function vr({colorSource:e="properties"}={}){const t=e==="feature-state"?["feature-state","adoptionStatus"]:["get","adoptionStatus"];return["case",["==",t,!0],ko.hasAdoption,["==",t,1],ko.hasAdoption,ko.notAdopted]}const fu=vr,ty=Object.freeze(Object.defineProperty({__proto__:null,ADOPTION_COLORS:Q_,ADOPTION_LABELS:ey,LABELS:yr,PALETTE:ko,PROPERTY_KEY:du,applyColor:vr,buildColorExpression:fu,default:{name:"Adoption Progress",propertyKey:du,palette:ko,colors:ko,labels:yr,getColor:gu,applyColor:vr,buildColorExpression:fu},getColor:gu},Symbol.toStringTag,{value:"Module"})),hu="engagementStatus",wo={notEngaged:"#f03b2d",hasEngagement:"#22c55e"},oy=wo,kr={notEngaged:"Unengaged",hasEngagement:"Engaged"},ny=kr;function mu(e){var n;const t=e.engagementStatus??((n=e._raw)==null?void 0:n.people_committed);return t===!0||t===1||typeof t=="number"&&t>0||typeof t=="object"&&(t==null?void 0:t.value)?wo.hasEngagement:wo.notEngaged}function wr({colorSource:e="properties"}={}){const t=e==="feature-state"?["feature-state","engagementStatus"]:["get","engagementStatus"];return["case",["==",t,!0],wo.hasEngagement,["==",t,1],wo.hasEngagement,wo.notEngaged]}const $u=wr,ay=Object.freeze(Object.defineProperty({__proto__:null,ENGAGEMENT_COLORS:oy,ENGAGEMENT_LABELS:ny,LABELS:kr,PALETTE:wo,PROPERTY_KEY:hu,applyColor:wr,buildColorExpression:$u,default:{name:"Engagement Progress",propertyKey:hu,palette:wo,colors:wo,labels:kr,getColor:mu,applyColor:wr,buildColorExpression:$u},getColor:mu},Symbol.toStringTag,{value:"Module"})),xr="languageFamily",sy="#000000",xo={"Indo-European":"#e74c3c",Dravidian:"#ff9800","Afro-Asiatic":"#27ae60","Sino-Tibetan":"#3498db","Niger-Congo":"#9b59b6",Unclassified:"#95a5a6","Nilo-Saharan":"#e91e63","Khoe-Kwadi":"#00bcd4","Austro-Asiatic":"#00bcd4","Kra-Dai":"#8e44ad",Austronesian:"#ff69b4","Hmong-Mien":"#f44336",Turkic:"#ffc107","Nakh-Daghestanian":"#009688",Mongolic:"#795548",Uralic:"#607d8b",Tungusic:"#4caf50",Japonic:"#ff5722",Cariban:"#673ab7",Tupian:"#03a9f4",Tucanoan:"#8bc34a",Maipurean:"#ffc107",Panoan:"#cddc39",Guajiboan:"#9e9e9e",Chibchan:"#ff7043",Quechuan:"#ab47bc",Jean:"#26a69a",Harákmbut:"#7e57c2",Nambikwara:"#42a5f5",Muran:"#66bb6a",Karajá:"#ffa726",Bororoan:"#ef5350",Arauan:"#5c6bc0",Yanomaman:"#26c6da",Yaguan:"#d4e157",Witotoan:"#78909c",Zamucoan:"#8d6e63",Puinavean:"#aed581",Barbacoan:"#4db6ac","Eyak-Athabaskan":"#7986cb","Trans-New Guinea":"#ba68c8",Andamanese:"#4dd0e1","Atlantic-Congo":"#7D3C98",Mande:"#B9770E","Sign Language":"#212121",Creole:"#9575cd","Mixed language":"#a1887f","Language isolate":"#90a4ae",Unknown:"#000000"},ry=xo;function Sr(e){return xo[e]||sy}const iy=(()=>{const e=o=>String(o||"").toLowerCase().trim(),t={};for(const o of Object.keys(xo))t[e(o)]=o;return t})(),ly={"tai-kadai":"Kra-Dai",none:"Unknown"};function _n(e){if(!e)return"Unknown";const t=String(e).trim(),o=t.toLowerCase();return ly[o]||iy[o]||t}function bu(e){var t;return Sr(e.languageFamily||((t=e._normalized)==null?void 0:t.languageFamily))}function Lr(){const e=["match",["get",xr]];return Object.entries(xo).forEach(([t,o])=>{e.push(t,o)}),e.push("#95a5a6"),e}const _u=Lr,cy=Object.freeze(Object.defineProperty({__proto__:null,LANGUAGE_FAMILY_COLORS:ry,PALETTE:xo,PROPERTY_KEY:xr,applyColor:Lr,buildColorExpression:_u,canonicalFamilyName:_n,default:{name:"Language Family",propertyKey:xr,palette:xo,colors:xo,getColor:bu,applyColor:Lr,buildColorExpression:_u,getLanguageFamilyColor:Sr,canonicalFamilyName:_n},defaultFamilyColor:"#95a5a6",getColor:bu,getLanguageFamilyColor:Sr,languageFamilyColors:xo},Symbol.toStringTag,{value:"Module"})),yu="peoplePraying",os=144,Uo={noPrayer:"#f03b2d",hasPrayer:"#f0c64a",fullPrayer:"#22c55e"},uy=Uo,na={noPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayer:"Has Full Prayer Coverage"},py=na;function yn(e){var n;const t=(e==null?void 0:e.peoplePraying)??((n=e==null?void 0:e._raw)==null?void 0:n.people_praying)??null,o=Number(t)||0;return o>=os?"fullPrayer":o>0?"hasPrayer":"noPrayer"}function Ar(e){return Uo[yn(e)]}function vu(e){var o;const t=(e==null?void 0:e.peoplePraying)??((o=e==null?void 0:e._raw)==null?void 0:o.people_praying)??null;return t!==null&&t>0}function ku(e){return yn(e)==="fullPrayer"}function wu(e){return Ar(e)}function ns({colorSource:e="properties"}={}){const t=e==="feature-state"?["feature-state","peoplePraying"]:["get","peoplePraying"];return["case",[">=",t,os],Uo.fullPrayer,[">",t,0],Uo.hasPrayer,Uo.noPrayer]}const xu=ns,dy=Object.freeze(Object.defineProperty({__proto__:null,FULL_PRAYER_THRESHOLD:os,LABELS:na,PALETTE:Uo,PRAYER_COLORS:uy,PRAYER_LABELS:py,PROPERTY_KEY:yu,applyColor:ns,buildColorExpression:xu,checkHasFullPrayer:ku,checkHasPrayer:vu,default:{name:"Prayer Progress",propertyKey:yu,palette:Uo,colors:Uo,labels:na,threshold:os,getColor:wu,applyColor:ns,buildColorExpression:xu,getPrayerLevel:yn,getPrayerColor:Ar,checkHasPrayer:vu,checkHasFullPrayer:ku},getColor:wu,getPrayerColor:Ar,getPrayerLevel:yn},Symbol.toStringTag,{value:"Module"})),Su="religion",Pr="#94a3b8",So={C:"Christianity",M:"Islam",H:"Hinduism",B:"Buddhism",E:"Ethnoreligion",J:"Judaism",S:"Sikhism",N:"Unaffiliated",O:"Other",U:"Unknown"},Nt={C:"#3b82f6",M:"#ef4444",H:"#f59e0b",B:"#facc15",E:"#84cc16",J:"#a855f7",S:"#ec4899",N:"#71717a",O:"#ff6b2b",U:"#94a3b8"};function Er(e){if(!e||typeof e!="string")return"U";const t=e.charAt(0).toUpperCase();return So[t]?t:"U"}function Lu(e){var o,n,a;const t=(e==null?void 0:e.religion)||((n=(o=e==null?void 0:e._raw)==null?void 0:o.religion)==null?void 0:n.value)||((a=e==null?void 0:e._raw)==null?void 0:a.religion);return Nt[Er(t)]||Pr}function Cr(){return["match",["slice",["coalesce",["get","religion"],""],0,1],"C",Nt.C,"M",Nt.M,"H",Nt.H,"B",Nt.B,"E",Nt.E,"J",Nt.J,"S",Nt.S,"N",Nt.N,"O",Nt.O,Pr]}const Au=Cr,gy=Object.freeze(Object.defineProperty({__proto__:null,PALETTE:Nt,PROPERTY_KEY:Su,RELIGION_FAMILIES:So,applyColor:Cr,buildColorExpression:Au,default:{name:"Religion",propertyKey:Su,palette:Nt,families:So,getColor:Lu,applyColor:Cr,buildColorExpression:Au,fallback:Pr},getColor:Lu,getReligionFamily:Er},Symbol.toStringTag,{value:"Module"})),Pu="region",Nr="#6d766e",Eu={africa:"Africa",asia:"Asia",europe:"Europe","latin_america_&_caribbean":"Latin America & Caribbean",middle_east:"Middle East","north_america_&_non-spanish_caribbean":"North America & Non-Spanish Caribbean",oceania:"Oceania"},aa={africa:"#ff2e2e",asia:"#1a8cff",europe:"#1ee05f","latin_america_&_caribbean":"#FFEB3B",middle_east:"#a83dff","north_america_&_non-spanish_caribbean":"#00e0bd",oceania:"#ff7f11"},Tr=Object.keys(aa);function Cu(e){var o,n,a;const t=(e==null?void 0:e.region)||((n=(o=e==null?void 0:e._raw)==null?void 0:o.wagf_region)==null?void 0:n.value)||((a=e==null?void 0:e._raw)==null?void 0:a.wagf_region);return aa[t]||Nr}function Rr(){const e=["match",["coalesce",["get","region"],""]];for(const t of Tr)e.push(t,aa[t]);return e.push(Nr),e}const Nu=Rr,fy=Object.assign({"./adoption.js":ty,"./engagement.js":ay,"./language-family.js":cy,"./prayer-progress.js":dy,"./religion.js":gy,"./wagf-region.js":Object.freeze(Object.defineProperty({__proto__:null,PALETTE:aa,PROPERTY_KEY:Pu,REGION_ORDER:Tr,WAGF_REGIONS:Eu,applyColor:Rr,buildColorExpression:Nu,default:{name:"WAGF Region",propertyKey:Pu,palette:aa,regions:Eu,order:Tr,getColor:Cu,applyColor:Rr,buildColorExpression:Nu,fallback:Nr},getColor:Cu},Symbol.toStringTag,{value:"Module"}))}),hy=e=>e.replace(/-([a-z0-9])/g,(t,o)=>o.toUpperCase()),my=e=>e.replace(/-/g,"_").toUpperCase(),Lo={...{STATUS:"status",CUSTOM:"custom"}},Mr={};function Tu(e){for(const t of Object.keys(e).sort()){const o=t.split("/").pop().replace(/\.js$/,"");if(o.startsWith("_")||o.startsWith("."))continue;const n=e[t].default;if(!n)continue;const a=hy(o);Lo[my(o)]=a,Mr[a]=n}}Tu(fy);function $y(e){e&&Tu(e)}function as(e){return Mr[e]||Mr[Lo.LANGUAGE_FAMILY]}const Ru={mapbox:"https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.3.0/mapbox-gl-rtl-text.js",maplibre:"https://cdn.jsdelivr.net/npm/@mapbox/mapbox-gl-rtl-text@0.3.0/dist/mapbox-gl-rtl-text.js"};function by(e){return!!e&&typeof window<"u"&&e===window.maplibregl}function Mu(e){if(typeof window>"u")return!1;const t=e?[e]:[window.maplibregl,window.mapboxgl].filter(Boolean);let o=!1;for(const n of t)if(!(!n||!n.setRTLTextPlugin))try{if(by(n)){if(n.getRTLTextPluginStatus&&n.getRTLTextPluginStatus()!=="unavailable")continue;const a=n.setRTLTextPlugin(Ru.maplibre,!0);a&&a.catch&&a.catch(()=>{})}else n.setRTLTextPlugin(Ru.mapbox,null,!0);o=!0}catch{}return o}const Ou="affinityBlock",vn="#95a5a6",kn={A001:"Arab World",A002:"East Asian Peoples",A003:"Eurasian Peoples",A004:"Horn of Africa Peoples",A005:"Jewish",A006:"Malay Peoples",A007:"Persian-Median Peoples",A008:"South Asian Peoples",A009:"North American Peoples",A010:"Pacific Islanders",A011:"Southeast Asian Peoples",A012:"Sub-Saharan Peoples",A013:"Tibetan-Himalayan Peoples",A014:"Turkic Peoples",A015:"Latin-Caribbean Americans",A017:"Deaf",A018:"Tibetan Peoples",A019:"Himalayan Peoples"},Or={A001:"#E74C3C",A002:"#3498DB",A003:"#2ECC71",A004:"#F39C12",A005:"#9B59B6",A006:"#1ABC9C",A007:"#E67E22",A008:"#34495E",A009:"#95A5A6",A010:"#5DADE2",A011:"#16A085",A012:"#C0392B",A013:"#8E44AD",A014:"#D35400",A015:"#27AE60",A017:"#000000",A018:"#6C3483",A019:"#A569BD"},wn=Or;Object.entries(kn).reduce((e,[t,o])=>(e[o]=t,e),{});const _y=Object.entries(kn).reduce((e,[t,o])=>(e[o]=wn[t],e),{}),yy=kn;function Fu(e){return kn[e]||"Unknown"}function Iu(e){return wn[e]||vn}function vy(e){return e?typeof e=="string"&&/^A\d{3}$/.test(e)?wn[e]||vn:_y[e]||vn:vn}function ky(){return Object.entries(kn).map(([e,t])=>({code:e,name:t,color:wn[e]}))}function wy(e){return{code:e,name:kn[e]||"Unknown",color:wn[e]||vn}}function xy(e){var o;const t=e.affinityBlock||((o=e._raw)==null?void 0:o.ROP1);return Iu(t)}function Sy(e){var o;const t=e.affinityBlock||((o=e._raw)==null?void 0:o.ROP1);return Fu(t)}function Du(){const e=["match",["get",Ou]];return Object.entries(wn).forEach(([t,o])=>{e.push(t,o)}),e.push(vn),e}const Ly={name:"Affinity Block",propertyKey:Ou,palette:Or,colors:Or,names:yy,getColor:xy,applyColor:Du,buildColorExpression:Du,getName:Sy,getAffinityBlockName:Fu,getAffinityBlockColor:vy,getAffinityBlockColorByCode:Iu,getAffinityBlocksArray:ky,getAffinityBlockData:wy};function Ay(e){if(!e)return"hsl(0, 60%, 50%)";let t=0;for(let n=0;n{e.push(t,o)}),e.push(Fr),e}const Cy={name:"DOXA Region",propertyKey:Uu,palette:ju,colors:ju,slugColors:Ir,aliases:Bu,fallback:Fr,getColor:Ey,applyColor:Vu,buildColorExpression:Vu,getRegionColor:Py,getRegionColorBySlug:zu},Ny=tn&&tn.tagName.toUpperCase()==="SCRIPT"&&tn.src||new URL("dashboard-plus-grid.js",document.baseURI).href,Go=e=>String(e||"").trim().replace(/\/+$/,"");function Dr(){try{const t=String(Ny||"").split(/[?#]/)[0].match(/^(.*)\/([^/]+)\/([^/]+)\.js$/);return!t||t[2]!==t[3]?null:t[1]||null}catch{return null}}function qu(e){const t=e==null?void 0:e.embedBaseUrl;if(typeof t=="string"&&t.trim())return Go(t);if(typeof window<"u"){const o=window.MAP_EMBED_BASE_URL;if(typeof o=="string"&&o.trim())return Go(o)}return Go(Dr()||"")}function Hu(e){const t=e==null?void 0:e.assetsBase;if(typeof t=="string"&&t.trim()){const n=Go(t);if(/^https?:\/\//i.test(n)||n.startsWith("/"))return n}const o=Go((e==null?void 0:e.treeBase)||"")||Go(Dr()||"");if(o)try{const n=typeof document<"u"?document.baseURI:void 0;return Go(new URL(o+"/assets",n).href)}catch{return Go(o+"/assets")}return"./assets"}function Ty({shareUrl:e,embedPath:t,profileConfig:o}={}){const n=o||null,a=typeof window<"u",s=e||(n==null?void 0:n.shareUrl);if(typeof s=="string"&&s.trim())return s.trim();const r=String(t||(n==null?void 0:n.shareEmbedPath)||"").trim();if(r){if(/^https?:\/\//i.test(r))return r;if(r.startsWith("/"))return a?window.location.origin+r:r;const i=qu(n),l=r.replace(/^\.\//,"");if(i)return i+"/"+l;if(typeof document<"u")try{return new URL(l,document.baseURI).href}catch{}return l}return a?window.location.origin+window.location.pathname:""}const Ur="__doxaMapToken",Gr="doxa:map-token",Wu="__doxaMapTokenBridge",xn=()=>{if(typeof window>"u")return"";const e=window[Ur];return typeof e=="string"?e:""};function Ku(e){if(typeof window>"u")return"";const t=typeof e=="string"?e.trim():"";if(!t||t===xn())return xn();window[Ur]=t;try{window.dispatchEvent(new CustomEvent(Gr,{detail:t}))}catch{}return t}function Ry(){if(typeof window>"u"||window[Wu])return;const e=typeof window.MAP_TOKEN=="string"?window.MAP_TOKEN:"";e&&!xn()&&(window[Ur]=e);try{Object.defineProperty(window,"MAP_TOKEN",{configurable:!0,get(){return xn()},set(t){Ku(t)}}),window[Wu]=!0}catch{}}function My(){Ry();const e=de(xn());if(typeof window<"u"){const t=()=>{e.value=xn()};window.addEventListener(Gr,t);try{Dt(()=>window.removeEventListener(Gr,t))}catch{}}return e}function Ot(e,t){const o=t||Oy(e);vt(()=>{var i;const n=Ro();if(!n)return;const a=(i=n.proxy)==null?void 0:i.$el;if(!a)return;const s=a.getRootNode();if(!(s instanceof ShadowRoot)||s.querySelector(`style[data-shadow-styles="${o}"]`))return;const r=document.createElement("style");r.setAttribute("data-shadow-styles",o),r.textContent=e,s.appendChild(r)})}function Oy(e){let t=0;for(let o=0;o{const o=e.__vccOpts||e;for(const[n,a]of t)o[n]=a;return o},sa={},Iy="dx-maps".replace(/[.*+?^${}()|[\]\\]/g,"\\$&");function Dy(e){if(!e||/^(https?:)?\/\//.test(e)||e.startsWith("/"))return e;const t=e.replace(/^(\.\.\/)+/,"").replace(/^\.\//,""),o=new RegExp("^(.*/"+Iy+"/)").exec(window.location.pathname);if(o)return o[1]+t;const n=Dr();return n?String(n).replace(/\/+$/,"")+"/"+t:e}function Uy(e){const t=Dy(e);return t?(sa[t]||(sa[t]=new Promise((o,n)=>{const a=document.createElement("script");a.src=t,(/^\/plugin-designs\//.test(t)||/\/index\.js(\?|$)/.test(t))&&(a.type="module"),a.onload=()=>o(),a.onerror=()=>{delete sa[t],n(new Error("failed to load "+t))},document.head.appendChild(a)})),sa[t]):Promise.resolve()}function Gy(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 jy=` -======= -**/function ps(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const Qe={},on=[],Zt=()=>{},Qr=()=>!1,da=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ga=e=>e.startsWith("onUpdate:"),it=Object.assign,ds=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},vp=Object.prototype.hasOwnProperty,Xe=(e,t)=>vp.call(e,t),Te=Array.isArray,Po=e=>Pn(e)==="[object Map]",fa=e=>Pn(e)==="[object Set]",ei=e=>Pn(e)==="[object Date]",Re=e=>typeof e=="function",nt=e=>typeof e=="string",jt=e=>typeof e=="symbol",Ze=e=>e!==null&&typeof e=="object",ti=e=>(Ze(e)||Re(e))&&Re(e.then)&&Re(e.catch),oi=Object.prototype.toString,Pn=e=>oi.call(e),kp=e=>Pn(e).slice(8,-1),ha=e=>Pn(e)==="[object Object]",gs=e=>nt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,En=ps(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ma=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},wp=/-\w/g,Et=ma(e=>e.replace(wp,t=>t.slice(1).toUpperCase())),xp=/\B([A-Z])/g,Rt=ma(e=>e.replace(xp,"-$1").toLowerCase()),ni=ma(e=>e.charAt(0).toUpperCase()+e.slice(1)),fs=ma(e=>e?`on${ni(e)}`:""),Jt=(e,t)=>!Object.is(e,t),$a=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:o})},hs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},si=e=>{const t=nt(e)?Number(e):NaN;return isNaN(t)?e:t};let ri;const ba=()=>ri||(ri=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function lt(e){if(Te(e)){const t={};for(let o=0;o{if(o){const n=o.split(Lp);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function qe(e){let t="";if(nt(e))t=e;else if(Te(e))for(let o=0;o!!(e&&e.__v_isRef===!0),ue=e=>nt(e)?e:e==null?"":Te(e)||Ze(e)&&(e.toString===oi||!Re(e.toString))?ci(e)?ue(e.value):JSON.stringify(e,ui,2):String(e),ui=(e,t)=>ci(t)?ui(e,t.value):Po(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[n,a],s)=>(o[ms(n,s)+" =>"]=a,o),{})}:fa(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>ms(o))}:jt(t)?ms(t):Ze(t)&&!Te(t)&&!ha(t)?String(t):t,ms=(e,t="")=>{var o;return jt(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 $t;class pi{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&&$t&&($t.active?(this.parent=$t,this.index=($t.scopes||($t.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const n=this.scopes.slice();for(t=0,o=n.length;t0&&--this._on===0){if($t===this)$t=this.prevScope;else{let t=$t;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,n;for(o=0,n=this.effects.length;o0)return;if(Nn){let t=Nn;for(Nn=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;Cn;){let t=Cn;for(Cn=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 mi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function $i(e){let t,o=e.depsTail,n=o;for(;n;){const a=n.prevDep;n.version===-1?(n===o&&(o=a),vs(n),Tp(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=a}e.deps=t,e.depsTail=o}function ys(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(bi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function bi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Tn)||(e.globalVersion=Tn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ys(e))))return;e.flags|=2;const t=e.dep,o=et,n=zt;et=e,zt=!0;try{mi(e);const a=e.fn(e._value);(t.version===0||Jt(a,e._value))&&(e.flags|=128,e._value=a,t.version++)}catch(a){throw t.version++,a}finally{et=o,zt=n,$i(e),e.flags&=-3}}function vs(e,t=!1){const{dep:o,prevSub:n,nextSub:a}=e;if(n&&(n.nextSub=a,e.prevSub=void 0),a&&(a.prevSub=n,e.nextSub=void 0),o.subs===e&&(o.subs=n,!n&&o.computed)){o.computed.flags&=-5;for(let s=o.computed.deps;s;s=s.nextDep)vs(s,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Tp(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let zt=!0;const _i=[];function Qt(){_i.push(zt),zt=!1}function eo(){const e=_i.pop();zt=e===void 0?!0:e}function yi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=et;et=void 0;try{t()}finally{et=o}}}let Tn=0;class Rp{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 ks{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(!et||!zt||et===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==et)o=this.activeLink=new Rp(et,this),et.deps?(o.prevDep=et.depsTail,et.depsTail.nextDep=o,et.depsTail=o):et.deps=et.depsTail=o,vi(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=et.depsTail,o.nextDep=void 0,et.depsTail.nextDep=o,et.depsTail=o,et.deps===o&&(et.deps=n)}return o}trigger(t){this.version++,Tn++,this.notify(t)}notify(t){bs();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{_s()}}}function vi(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)vi(n)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const ws=new WeakMap,zo=Symbol(""),xs=Symbol(""),Rn=Symbol("");function _t(e,t,o){if(zt&&et){let n=ws.get(e);n||ws.set(e,n=new Map);let a=n.get(o);a||(n.set(o,a=new ks),a.map=n,a.key=o),a.track()}}function uo(e,t,o,n,a,s){const r=ws.get(e);if(!r){Tn++;return}const i=l=>{l&&l.trigger()};if(bs(),t==="clear")r.forEach(i);else{const l=Te(e),c=l&&gs(o);if(l&&o==="length"){const u=Number(n);r.forEach((d,f)=>{(f==="length"||f===Rn||!jt(f)&&f>=u)&&i(d)})}else switch((o!==void 0||r.has(void 0))&&i(r.get(o)),c&&i(r.get(Rn)),t){case"add":l?c&&i(r.get("length")):(i(r.get(zo)),Po(e)&&i(r.get(xs)));break;case"delete":l||(i(r.get(zo)),Po(e)&&i(r.get(xs)));break;case"set":Po(e)&&i(r.get(zo));break}}_s()}function nn(e){const t=We(e);return t===e?t:(_t(t,"iterate",Rn),Ft(e)?t:t.map(Bt))}function ya(e){return _t(e=We(e),"iterate",Rn),e}function to(e,t){return go(e)?an(Vo(e)?Bt(t):t):Bt(t)}const Mp={__proto__:null,[Symbol.iterator](){return Ss(this,Symbol.iterator,e=>to(this,e))},concat(...e){return nn(this).concat(...e.map(t=>Te(t)?nn(t):t))},entries(){return Ss(this,"entries",e=>(e[1]=to(this,e[1]),e))},every(e,t){return po(this,"every",e,t,void 0,arguments)},filter(e,t){return po(this,"filter",e,t,o=>o.map(n=>to(this,n)),arguments)},find(e,t){return po(this,"find",e,t,o=>to(this,o),arguments)},findIndex(e,t){return po(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return po(this,"findLast",e,t,o=>to(this,o),arguments)},findLastIndex(e,t){return po(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return po(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ls(this,"includes",e)},indexOf(...e){return Ls(this,"indexOf",e)},join(e){return nn(this).join(e)},lastIndexOf(...e){return Ls(this,"lastIndexOf",e)},map(e,t){return po(this,"map",e,t,void 0,arguments)},pop(){return Mn(this,"pop")},push(...e){return Mn(this,"push",e)},reduce(e,...t){return ki(this,"reduce",e,t)},reduceRight(e,...t){return ki(this,"reduceRight",e,t)},shift(){return Mn(this,"shift")},some(e,t){return po(this,"some",e,t,void 0,arguments)},splice(...e){return Mn(this,"splice",e)},toReversed(){return nn(this).toReversed()},toSorted(e){return nn(this).toSorted(e)},toSpliced(...e){return nn(this).toSpliced(...e)},unshift(...e){return Mn(this,"unshift",e)},values(){return Ss(this,"values",e=>to(this,e))}};function Ss(e,t,o){const n=ya(e),a=n[t]();return n!==e&&!Ft(e)&&(a._next=a.next,a.next=()=>{const s=a._next();return s.done||(s.value=o(s.value)),s}),a}const Op=Array.prototype;function po(e,t,o,n,a,s){const r=ya(e),i=r!==e&&!Ft(e),l=r[t];if(l!==Op[t]){const d=l.apply(e,s);return i?Bt(d):d}let c=o;r!==e&&(i?c=function(d,f){return o.call(this,to(e,d),f,e)}:o.length>2&&(c=function(d,f){return o.call(this,d,f,e)}));const u=l.call(r,c,n);return i&&a?a(u):u}function ki(e,t,o,n){const a=ya(e),s=a!==e&&!Ft(e);let r=o,i=!1;a!==e&&(s?(i=n.length===0,r=function(c,u,d){return i&&(i=!1,c=to(e,c)),o.call(this,c,to(e,u),d,e)}):o.length>3&&(r=function(c,u,d){return o.call(this,c,u,d,e)}));const l=a[t](r,...n);return i?to(e,l):l}function Ls(e,t,o){const n=We(e);_t(n,"iterate",Rn);const a=n[t](...o);return(a===-1||a===!1)&&Es(o[0])?(o[0]=We(o[0]),n[t](...o)):a}function Mn(e,t,o=[]){Qt(),bs();const n=We(e)[t].apply(e,o);return _s(),eo(),n}const Fp=ps("__proto__,__v_isRef,__isVue"),wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(jt));function Ip(e){jt(e)||(e=String(e));const t=We(this);return _t(t,"has",e),t.hasOwnProperty(e)}class xi{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,n){if(o==="__v_skip")return t.__v_skip;const a=this._isReadonly,s=this._isShallow;if(o==="__v_isReactive")return!a;if(o==="__v_isReadonly")return a;if(o==="__v_isShallow")return s;if(o==="__v_raw")return n===(a?s?Ci:Ei:s?Pi:Ai).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const r=Te(t);if(!a){let l;if(r&&(l=Mp[o]))return l;if(o==="hasOwnProperty")return Ip}const i=Reflect.get(t,o,gt(t)?t:n);if((jt(o)?wi.has(o):Fp(o))||(a||_t(t,"get",o),s))return i;if(gt(i)){const l=r&&gs(o)?i:i.value;return a&&Ze(l)?Ps(l):l}return Ze(i)?a?Ps(i):Bo(i):i}}class Si extends xi{constructor(t=!1){super(!1,t)}set(t,o,n,a){let s=t[o];const r=Te(t)&&gs(o);if(!this._isShallow){const c=go(s);if(!Ft(n)&&!go(n)&&(s=We(s),n=We(n)),!r&>(s)&&!gt(n))return c||(s.value=n),!0}const i=r?Number(o)e,va=e=>Reflect.getPrototypeOf(e);function zp(e,t,o){return function(...n){const a=this.__v_raw,s=We(a),r=Po(s),i=e==="entries"||e===Symbol.iterator&&r,l=e==="keys"&&r,c=a[e](...n),u=o?As:t?an:Bt;return!t&&_t(s,"iterate",l?xs:zo),it(Object.create(c),{next(){const{value:d,done:f}=c.next();return f?{value:d,done:f}:{value:i?[u(d[0]),u(d[1])]:u(d),done:f}}})}}function ka(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Bp(e,t){const o={get(a){const s=this.__v_raw,r=We(s),i=We(a);e||(Jt(a,i)&&_t(r,"get",a),_t(r,"get",i));const{has:l}=va(r),c=t?As:e?an:Bt;if(l.call(r,a))return c(s.get(a));if(l.call(r,i))return c(s.get(i));s!==r&&s.get(a)},get size(){const a=this.__v_raw;return!e&&_t(We(a),"iterate",zo),a.size},has(a){const s=this.__v_raw,r=We(s),i=We(a);return e||(Jt(a,i)&&_t(r,"has",a),_t(r,"has",i)),a===i?s.has(a):s.has(a)||s.has(i)},forEach(a,s){const r=this,i=r.__v_raw,l=We(i),c=t?As:e?an:Bt;return!e&&_t(l,"iterate",zo),i.forEach((u,d)=>a.call(s,c(u),c(d),r))}};return it(o,e?{add:ka("add"),set:ka("set"),delete:ka("delete"),clear:ka("clear")}:{add(a){const s=We(this),r=va(s),i=We(a),l=!t&&!Ft(a)&&!go(a)?i:a;return r.has.call(s,l)||Jt(a,l)&&r.has.call(s,a)||Jt(i,l)&&r.has.call(s,i)||(s.add(l),uo(s,"add",l,l)),this},set(a,s){!t&&!Ft(s)&&!go(s)&&(s=We(s));const r=We(this),{has:i,get:l}=va(r);let c=i.call(r,a);c||(a=We(a),c=i.call(r,a));const u=l.call(r,a);return r.set(a,s),c?Jt(s,u)&&uo(r,"set",a,s):uo(r,"add",a,s),this},delete(a){const s=We(this),{has:r,get:i}=va(s);let l=r.call(s,a);l||(a=We(a),l=r.call(s,a)),i&&i.call(s,a);const c=s.delete(a);return l&&uo(s,"delete",a,void 0),c},clear(){const a=We(this),s=a.size!==0,r=a.clear();return s&&uo(a,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(a=>{o[a]=zp(a,e,t)}),o}function wa(e,t){const o=Bp(e,t);return(n,a,s)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?n:Reflect.get(Xe(o,a)&&a in n?o:n,a,s)}const Vp={get:wa(!1,!1)},qp={get:wa(!1,!0)},Hp={get:wa(!0,!1)},Wp={get:wa(!0,!0)},Ai=new WeakMap,Pi=new WeakMap,Ei=new WeakMap,Ci=new WeakMap;function Kp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Bo(e){return go(e)?e:xa(e,!1,Dp,Vp,Ai)}function Yp(e){return xa(e,!1,Gp,qp,Pi)}function Ps(e){return xa(e,!0,Up,Hp,Ei)}function ix(e){return xa(e,!0,jp,Wp,Ci)}function xa(e,t,o,n,a){if(!Ze(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const s=a.get(e);if(s)return s;const r=Kp(kp(e));if(r===0)return e;const i=new Proxy(e,r===2?n:o);return a.set(e,i),i}function Vo(e){return go(e)?Vo(e.__v_raw):!!(e&&e.__v_isReactive)}function go(e){return!!(e&&e.__v_isReadonly)}function Ft(e){return!!(e&&e.__v_isShallow)}function Es(e){return e?!!e.__v_raw:!1}function We(e){const t=e&&e.__v_raw;return t?We(t):e}function Ni(e){return!Xe(e,"__v_skip")&&Object.isExtensible(e)&&ai(e,"__v_skip",!0),e}const Bt=e=>Ze(e)?Bo(e):e,an=e=>Ze(e)?Ps(e):e;function gt(e){return e?e.__v_isRef===!0:!1}function pe(e){return Ti(e,!1)}function On(e){return Ti(e,!0)}function Ti(e,t){return gt(e)?e:new Xp(e,t)}class Xp{constructor(t,o){this.dep=new ks,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:We(t),this._value=o?t:Bt(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){const o=this._rawValue,n=this.__v_isShallow||Ft(t)||go(t);t=n?t:We(t),Jt(t,o)&&(this._rawValue=t,this._value=n?t:Bt(t),this.dep.trigger())}}function he(e){return gt(e)?e.value:e}const Zp={get:(e,t,o)=>t==="__v_raw"?e:he(Reflect.get(e,t,o)),set:(e,t,o,n)=>{const a=e[t];return gt(a)&&!gt(o)?(a.value=o,!0):Reflect.set(e,t,o,n)}};function Ri(e){return Vo(e)?e:new Proxy(e,Zp)}class Jp{constructor(t,o,n){this.fn=t,this.setter=o,this._value=void 0,this.dep=new ks(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Tn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&et!==this)return hi(this,!0),!0}get value(){const t=this.dep.track();return bi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Qp(e,t,o=!1){let n,a;return Re(e)?n=e:(n=e.get,a=e.set),new Jp(n,a,o)}const Sa={},La=new WeakMap;let qo;function ed(e,t=!1,o=qo){if(o){let n=La.get(o);n||La.set(o,n=[]),n.push(e)}}function td(e,t,o=Qe){const{immediate:n,deep:a,once:s,scheduler:r,augmentJob:i,call:l}=o,c=p=>a?p:Ft(p)||a===!1||a===0?fo(p,1):fo(p);let u,d,f,v,L=!1,k=!1;if(gt(e)?(d=()=>e.value,L=Ft(e)):Vo(e)?(d=()=>c(e),L=!0):Te(e)?(k=!0,L=e.some(p=>Vo(p)||Ft(p)),d=()=>e.map(p=>{if(gt(p))return p.value;if(Vo(p))return c(p);if(Re(p))return l?l(p,2):p()})):Re(e)?t?d=l?()=>l(e,2):e:d=()=>{if(f){Qt();try{f()}finally{eo()}}const p=qo;qo=u;try{return l?l(e,3,[v]):e(v)}finally{qo=p}}:d=Zt,t&&a){const p=d,b=a===!0?1/0:a;d=()=>fo(p(),b)}const x=Np(),C=()=>{u.stop(),x&&x.active&&ds(x.effects,u)};if(s&&t){const p=t;t=(...b)=>{const A=p(...b);return C(),A}}let h=k?new Array(e.length).fill(Sa):Sa;const m=p=>{if(!(!(u.flags&1)||!u.dirty&&!p))if(t){const b=u.run();if(p||a||L||(k?b.some((A,w)=>Jt(A,h[w])):Jt(b,h))){f&&f();const A=qo;qo=u;try{const w=[b,h===Sa?void 0:k&&h[0]===Sa?[]:h,v];h=b,l?l(t,3,w):t(...w)}finally{qo=A}}}else u.run()};return i&&i(m),u=new gi(d),u.scheduler=r?()=>r(m,!1):m,v=p=>ed(p,!1,u),f=u.onStop=()=>{const p=La.get(u);if(p){if(l)l(p,4);else for(const b of p)b();La.delete(u)}},t?n?m(!0):h=u.run():r?r(m.bind(null,!0),!0):u.run(),C.pause=u.pause.bind(u),C.resume=u.resume.bind(u),C.stop=C,C}function fo(e,t=1/0,o){if(t<=0||!Ze(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,gt(e))fo(e.value,t,o);else if(Te(e))for(let n=0;n{fo(n,t,o)});else if(ha(e)){for(const n in e)fo(e[n],t,o);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&fo(e[n],t,o)}return e}/** -* @vue/runtime-core v3.5.42 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const Fn=[];let Cs=!1;function lx(e,...t){if(Cs)return;Cs=!0,Qt();const o=Fn.length?Fn[Fn.length-1].component:null,n=o&&o.appContext.config.warnHandler,a=od();if(n)sn(n,o,11,[e+t.map(s=>{var r,i;return(i=(r=s.toString)==null?void 0:r.call(s))!=null?i:JSON.stringify(s)}).join(""),o&&o.proxy,a.map(({vnode:s})=>`at <${El(o,s.type)}>`).join(` -`),a]);else{const s=[`[Vue warn]: ${e}`,...t];a.length&&s.push(` -`,...nd(a)),console.warn(...s)}eo(),Cs=!1}function od(){let e=Fn[Fn.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 nd(e){const t=[];return e.forEach((o,n)=>{t.push(...n===0?[]:[` -`],...ad(o))}),t}function ad({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,a=` at <${El(e.component,e.type,n)}`,s=">"+o;return e.props?[a,...sd(e.props),s]:[a+s]}function sd(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(n=>{t.push(...Mi(n,e[n]))}),o.length>3&&t.push(" ..."),t}function Mi(e,t,o){return nt(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:gt(t)?(t=Mi(e,We(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):Re(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=We(t),o?t:[`${e}=`,t])}function sn(e,t,o,n){try{return n?e(...n):e()}catch(a){Aa(a,t,o)}}function Vt(e,t,o,n){if(Re(e)){const a=sn(e,t,o,n);return a&&ti(a)&&a.catch(s=>{Aa(s,t,o)}),a}if(Te(e)){const a=[];for(let s=0;s>>1,a=kt[n],s=Dn(a);s=Dn(o)?kt.push(e):kt.splice(id(t),0,e),e.flags|=1,Fi()}}function Fi(){Pa||(Pa=Oi.then(Ui))}function ld(e){if(!Te(e))Eo&&e.id===-1?Eo.splice(ln+1,0,e):e.flags&1||(rn.push(e),e.flags|=1);else for(let t=0;tDn(o)-Dn(n));if(rn.length=0,Eo){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function Ui(e){try{for(oo=0;oo{n._d&&Fa(-1);const s=Ea(t),r=mo.length;let i;try{i=e(...a)}finally{for(let l=mo.length;l>r;l--)Ys();Ea(s),n._d&&Fa(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function It(e,t){if(yt===null)return e;const o=Ga(yt),n=e.dirs||(e.dirs=[]);for(let a=0;a1)return o&&Re(t)?t.call(n&&n.proxy):t}}const cd=Symbol.for("v-scx"),ud=()=>Ie(cd);function ji(e,t){return Ts(e,null,t)}function rt(e,t,o){return Ts(e,t,o)}function Ts(e,t,o=Qe){const{immediate:n,deep:a,flush:s,once:r}=o,i=it({},o),l=t&&n||!t&&s!=="post";let c;if(Xn){if(s==="sync"){const v=ud();c=v.__watcherHandles||(v.__watcherHandles=[])}else if(!l){const v=()=>{};return v.stop=Zt,v.resume=Zt,v.pause=Zt,v}}const u=St;i.call=(v,L,k)=>Vt(v,u,L,k);let d=!1;s==="post"?i.scheduler=v=>{xt(v,u&&u.suspense)}:s!=="sync"&&(d=!0,i.scheduler=(v,L)=>{L?v():Ns(v)}),i.augmentJob=v=>{t&&(v.flags|=4),d&&(v.flags|=2,u&&(v.id=u.uid,v.i=u))};const f=td(e,t,i);return Xn&&(c?c.push(f):l&&f()),f}function pd(e,t,o){const n=this.proxy,a=nt(e)?e.includes(".")?zi(n,e):()=>n[e]:e.bind(n,n);let s;Re(t)?s=t:(s=t.handler,o=t);const r=Yn(this),i=Ts(a,s.bind(n),o);return r(),i}function zi(e,t){const o=t.split(".");return()=>{let n=e;for(let a=0;ae.__isTeleport,Wo=e=>e&&(e.disabled||e.disabled===""),dd=e=>e&&(e.defer||e.defer===""),Vi=e=>typeof SVGElement<"u"&&e instanceof SVGElement,qi=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Rs=(e,t)=>{const o=e&&e.to;return nt(o)?t?t(o):null:o},gd={name:"Teleport",__isTeleport:!0,process(e,t,o,n,a,s,r,i,l,c){const{mc:u,pc:d,pbc:f,o:{insert:v,querySelector:L,createText:k,createComment:x,parentNode:C}}=c,h=Wo(t.props);let{dynamicChildren:m}=t;const p=(w,M,U)=>{w.shapeFlag&16&&u(w.children,M,U,a,s,r,i,l)},b=(w=t)=>{const M=Wo(w.props),U=w.target=Rs(w.props,L),ne=Ms(U,w,k,v);U&&(r!=="svg"&&Vi(U)?r="svg":r!=="mathml"&&qi(U)&&(r="mathml"),a&&a.isCE&&(a.ce._teleportTargets||(a.ce._teleportTargets=new Set)).add(U),M||(p(w,U,ne),Un(w,!1)))},A=w=>{const M=()=>{if(No.get(w)===M){if(No.delete(w),Wo(w.props)){const U=C(w.el)||o;p(w,U,w.anchor),Un(w,!0)}b(w)}};No.set(w,M),xt(M,s)};if(e==null){const w=t.el=k(""),M=t.anchor=k("");if(v(w,o,n),v(M,o,n),dd(t.props)||s&&s.pendingBranch){A(t);return}h&&(p(t,o,M),Un(t,!0)),b()}else{t.el=e.el;const w=t.anchor=e.anchor,M=No.get(e);if(M){M.flags|=8,No.delete(e),A(t);return}t.targetStart=e.targetStart;const U=t.target=e.target,ne=t.targetAnchor=e.targetAnchor,B=Wo(e.props),Y=B?o:U,ge=B?w:ne;if(r==="svg"||Vi(U)?r="svg":(r==="mathml"||qi(U))&&(r="mathml"),m?(f(e.dynamicChildren,m,Y,a,s,r,i),Ws(e,t,!0)):l||d(e,t,Y,ge,a,s,r,i,!1),h)B?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Na(t,o,w,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=Rs(t.props,L);I&&(t.target=I,Na(t,I,null,c,0))}else B&&Na(t,U,ne,c,1);Un(t,h)}},remove(e,t,o,{um:n,o:{remove:a}},s){const{shapeFlag:r,children:i,anchor:l,targetStart:c,targetAnchor:u,target:d,props:f}=e,v=Wo(f),L=s||!v,k=No.get(e);if(k&&(k.flags|=8,No.delete(e)),d&&(a(c),a(u)),s&&a(l),!k&&(v||d)&&r&16)for(let x=0;x1){for(const o of e)if(o.type!==ao){t=o;break}}return t}function Hi(e){if(!Is(e))return Ca(e.type)&&e.children?md(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&&Re(o.default))return o.default()}}function Fs(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;Fs(Ca(o.type)&&Hi(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 Gn(e,t){return Re(e)?it({name:e.name},t,{setup:e}):e}function Wi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Ki(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const Ta=new WeakMap;function jn(e,t,o,n,a=!1){if(Te(e)){e.forEach((k,x)=>jn(k,t&&(Te(t)?t[x]:t),o,n,a));return}if(cn(n)&&!a){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&jn(e,t,o,n.component.subTree);return}const s=n.shapeFlag&4?Ga(n.component):n.el,r=a?null:s,{i,r:l}=e,c=t&&t.r,u=i.refs===Qe?i.refs={}:i.refs,d=i.setupState,f=We(d),v=d===Qe?Qr:k=>Ki(u,k)?!1:Xe(f,k),L=(k,x)=>!(x&&Ki(u,x));if(c!=null&&c!==l){if(Yi(t),nt(c))u[c]=null,v(c)&&(d[c]=null);else if(gt(c)){const k=t;L(c,k.k)&&(c.value=null),k.k&&(u[k.k]=null)}}if(Re(l))sn(l,i,12,[r,u]);else{const k=nt(l),x=gt(l);if(k||x){const C=()=>{if(e.f){const h=k?v(l)?d[l]:u[l]:L()||!e.k?l.value:u[e.k];if(a)Te(h)&&ds(h,s);else if(Te(h))h.includes(s)||h.push(s);else if(k)u[l]=[s],v(l)&&(d[l]=u[l]);else{const m=[s];L(l,e.k)&&(l.value=m),e.k&&(u[e.k]=m)}}else k?(u[l]=r,v(l)&&(d[l]=r)):x&&(L(l,e.k)&&(l.value=r),e.k&&(u[e.k]=r))};if(r){const h=()=>{C(),Ta.delete(e)};h.id=-1,Ta.set(e,h),xt(h,o)}else Yi(e),C()}}}function Yi(e){const t=Ta.get(e);t&&(t.flags|=8,Ta.delete(e))}ba().requestIdleCallback,ba().cancelIdleCallback;const cn=e=>!!e.type.__asyncLoader,Is=e=>e.type.__isKeepAlive;function $d(e,t){Xi(e,"a",t)}function bd(e,t){Xi(e,"da",t)}function Xi(e,t,o=St){const n=e.__wdc||(e.__wdc=()=>{let a=o;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Ra(t,n,o),o){let a=o.parent;for(;a&&a.parent;)Is(a.parent.vnode)&&_d(n,t,o,a),a=a.parent}}function _d(e,t,o,n){const a=Ra(t,e,n,!0);Ds(()=>{ds(n[t],a)},o)}function Ra(e,t,o=St,n=!1){if(o){const a=o[e]||(o[e]=[]),s=t.__weh||(t.__weh=(...r)=>{Qt();const i=Yn(o),l=Vt(t,o,e,r);return i(),eo(),l});return n?a.unshift(s):a.push(s),s}}const ho=e=>(t,o=St)=>{(!Xn||e==="sp")&&Ra(e,(...n)=>t(...n),o)},Zi=ho("bm"),vt=ho("m"),yd=ho("bu"),vd=ho("u"),Dt=ho("bum"),Ds=ho("um"),kd=ho("sp"),wd=ho("rtg"),xd=ho("rtc");function Sd(e,t=St){Ra("ec",e,t)}const Ld=Symbol.for("v-ndc");function tt(e,t,o,n){let a;const s=o,r=Te(e);if(r||nt(e)){const i=r&&Vo(e);let l=!1,c=!1;i&&(l=!Ft(e),c=go(e),e=ya(e)),a=new Array(e.length);for(let u=0,d=e.length;ut(i,l,void 0,s));else{const i=Object.keys(e);a=new Array(i.length);for(let l=0,c=i.length;l0;return t!=="default"&&(c.name=t),W(),To(Ce,null,[je("slot",c,n)],u?-2:64)}let r=e[t];r&&r._c&&(r._d=!1);const i=mo.length;W();let l;try{const c=r&&Ji(r(o)),u=o.key||s||c&&c.key;l=To(Ce,{key:(u&&!jt(u)?u:`_${t}`)+(!c&&n?"_fb":"")},c||(n?n():[]),c&&e._===1?64:-2)}catch(c){for(let u=mo.length;u>i;u--)Ys();throw c}finally{r&&r._c&&(r._d=!0)}return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Ji(e){return e.some(t=>Hn(t)?!(t.type===ao||t.type===Ce&&!Ji(t.children)):!0)?e:null}const Us=e=>e?Ll(e)?Ga(e):Us(e.parent):null,zn=it(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=>Us(e.parent),$root:e=>Us(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ol(e),$forceUpdate:e=>e.f||(e.f=()=>{Ns(e.update)}),$nextTick:e=>e.n||(e.n=In.bind(e.proxy)),$watch:e=>pd.bind(e)}),Gs=(e,t)=>e!==Qe&&!e.__isScriptSetup&&Xe(e,t),Ad={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:n,data:a,props:s,accessCache:r,type:i,appContext:l}=e;if(t[0]!=="$"){const f=r[t];if(f!==void 0)switch(f){case 1:return n[t];case 2:return a[t];case 4:return o[t];case 3:return s[t]}else{if(Gs(n,t))return r[t]=1,n[t];if(a!==Qe&&Xe(a,t))return r[t]=2,a[t];if(Xe(s,t))return r[t]=3,s[t];if(o!==Qe&&Xe(o,t))return r[t]=4,o[t];js&&(r[t]=0)}}const c=zn[t];let u,d;if(c)return t==="$attrs"&&_t(e.attrs,"get",""),c(e);if((u=i.__cssModules)&&(u=u[t]))return u;if(o!==Qe&&Xe(o,t))return r[t]=4,o[t];if(d=l.config.globalProperties,Xe(d,t))return d[t]},set({_:e},t,o){const{data:n,setupState:a,ctx:s}=e;return Gs(a,t)?(a[t]=o,!0):n!==Qe&&Xe(n,t)?(n[t]=o,!0):Xe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:n,appContext:a,props:s,type:r}},i){let l;return!!(o[i]||e!==Qe&&i[0]!=="$"&&Xe(e,i)||Gs(t,i)||Xe(s,i)||Xe(n,i)||Xe(zn,i)||Xe(a.config.globalProperties,i)||(l=r.__cssModules)&&l[i])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:Xe(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function Qi(e){return Te(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let js=!0;function Pd(e){const t=ol(e),o=e.proxy,n=e.ctx;js=!1,t.beforeCreate&&el(t.beforeCreate,e,"bc");const{data:a,computed:s,methods:r,watch:i,provide:l,inject:c,created:u,beforeMount:d,mounted:f,beforeUpdate:v,updated:L,activated:k,deactivated:x,beforeDestroy:C,beforeUnmount:h,destroyed:m,unmounted:p,render:b,renderTracked:A,renderTriggered:w,errorCaptured:M,serverPrefetch:U,expose:ne,inheritAttrs:B,components:Y,directives:ge,filters:I}=t;if(c&&Ed(c,n,null),r)for(const G in r){const ie=r[G];Re(ie)&&(n[G]=ie.bind(o))}if(a){const G=a.call(o,o);Ze(G)&&(e.data=Bo(G))}if(js=!0,s)for(const G in s){const ie=s[G],F=Re(ie)?ie.bind(o,o):Re(ie.get)?ie.get.bind(o,o):Zt,O=!Re(ie)&&Re(ie.set)?ie.set.bind(o):Zt,V=re({get:F,set:O});Object.defineProperty(n,G,{enumerable:!0,configurable:!0,get:()=>V.value,set:D=>V.value=D})}if(i)for(const G in i)tl(i[G],n,o,G);if(l){const G=Re(l)?l.call(o):l;Reflect.ownKeys(G).forEach(ie=>{no(ie,G[ie])})}u&&el(u,e,"c");function H(G,ie){Te(ie)?ie.forEach(F=>G(F.bind(o))):ie&&G(ie.bind(o))}if(H(Zi,d),H(vt,f),H(yd,v),H(vd,L),H($d,k),H(bd,x),H(Sd,M),H(xd,A),H(wd,w),H(Dt,h),H(Ds,p),H(kd,U),Te(ne))if(ne.length){const G=e.exposed||(e.exposed={});ne.forEach(ie=>{Object.defineProperty(G,ie,{get:()=>o[ie],set:F=>o[ie]=F,enumerable:!0})})}else e.exposed||(e.exposed={});b&&e.render===Zt&&(e.render=b),B!=null&&(e.inheritAttrs=B),Y&&(e.components=Y),ge&&(e.directives=ge),U&&Wi(e)}function Ed(e,t,o=Zt){Te(e)&&(e=zs(e));for(const n in e){const a=e[n];let s;Ze(a)?"default"in a?s=Ie(a.from||n,a.default,!0):s=Ie(a.from||n):s=Ie(a),gt(s)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>s.value,set:r=>s.value=r}):t[n]=s}}function el(e,t,o){Vt(Te(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,o)}function tl(e,t,o,n){let a=n.includes(".")?zi(o,n):()=>o[n];if(nt(e)){const s=t[e];Re(s)&&rt(a,s)}else if(Re(e))rt(a,e.bind(o));else if(Ze(e))if(Te(e))e.forEach(s=>tl(s,t,o,n));else{const s=Re(e.handler)?e.handler.bind(o):t[e.handler];Re(s)&&rt(a,s,e)}}function ol(e){const t=e.type,{mixins:o,extends:n}=t,{mixins:a,optionsCache:s,config:{optionMergeStrategies:r}}=e.appContext,i=s.get(t);let l;return i?l=i:!a.length&&!o&&!n?l=t:(l={},a.length&&a.forEach(c=>Ma(l,c,r,!0)),Ma(l,t,r)),Ze(t)&&s.set(t,l),l}function Ma(e,t,o,n=!1){const{mixins:a,extends:s}=t;s&&Ma(e,s,o,!0),a&&a.forEach(r=>Ma(e,r,o,!0));for(const r in t)if(!(n&&r==="expose")){const i=Cd[r]||o&&o[r];e[r]=i?i(e[r],t[r]):t[r]}return e}const Cd={data:nl,props:al,emits:al,methods:Bn,computed:Bn,beforeCreate:wt,created:wt,beforeMount:wt,mounted:wt,beforeUpdate:wt,updated:wt,beforeDestroy:wt,beforeUnmount:wt,destroyed:wt,unmounted:wt,activated:wt,deactivated:wt,errorCaptured:wt,serverPrefetch:wt,components:Bn,directives:Bn,watch:Td,provide:nl,inject:Nd};function nl(e,t){return t?e?function(){return it(Re(e)?e.call(this,this):e,Re(t)?t.call(this,this):t)}:t:e}function Nd(e,t){return Bn(zs(e),zs(t))}function zs(e){if(Te(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Et(t)}Modifiers`]||e[`${Rt(t)}Modifiers`];function Fd(e,t,...o){if(e.isUnmounted)return;const n=e.vnode.props||Qe;let a=o;const s=t.startsWith("update:"),r=s&&Od(n,t.slice(7));r&&(r.trim&&(a=o.map(u=>nt(u)?u.trim():u)),r.number&&(a=a.map(hs)));let i,l=n[i=fs(t)]||n[i=fs(Et(t))];!l&&s&&(l=n[i=fs(Rt(t))]),l&&Vt(l,e,6,a);const c=n[i+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Vt(c,e,6,a)}}const Id=new WeakMap;function rl(e,t,o=!1){const n=o?Id:t.emitsCache,a=n.get(e);if(a!==void 0)return a;const s=e.emits;let r={},i=!1;if(!Re(e)){const l=c=>{const u=rl(c,t,!0);u&&(i=!0,it(r,u))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!s&&!i?(Ze(e)&&n.set(e,null),null):(Te(s)?s.forEach(l=>r[l]=null):it(r,s),Ze(e)&&n.set(e,r),r)}function Oa(e,t){return!e||!da(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Xe(e,t[0].toLowerCase()+t.slice(1))||Xe(e,Rt(t))||Xe(e,t))}function cx(){}function il(e){const{type:t,vnode:o,proxy:n,withProxy:a,propsOptions:[s],slots:r,attrs:i,emit:l,render:c,renderCache:u,props:d,data:f,setupState:v,ctx:L,inheritAttrs:k}=e,x=Ea(e);let C,h;try{if(o.shapeFlag&4){const p=a||n,b=p;C=so(c.call(b,p,u,d,v,f,L)),h=i}else{const p=t;C=so(p.length>1?p(d,{attrs:i,slots:r,emit:l}):p(d,null)),h=t.props?i:Dd(i)}}catch(p){mo.length=0,Aa(p,e,1),C=je(ao)}let m=C;if(h&&k!==!1){const p=Object.keys(h),{shapeFlag:b}=m;p.length&&b&7&&(s&&p.some(ga)&&(h=Ud(h,s)),m=pn(m,h,!1,!0))}if(o.dirs&&(m=pn(m,null,!1,!0),m.dirs=m.dirs?m.dirs.concat(o.dirs):o.dirs),o.transition){const p=Ca(m.type)&&Hi(m)||m;Fs(p,o.transition)}return C=m,Ea(x),C}const Dd=e=>{let t;for(const o in e)(o==="class"||o==="style"||da(o))&&((t||(t={}))[o]=e[o]);return t},Ud=(e,t)=>{const o={};for(const n in e)(!ga(n)||!(n.slice(9)in t))&&(o[n]=e[n]);return o};function Gd(e,t,o){const{props:n,children:a,component:s}=e,{props:r,children:i,patchFlag:l}=t,c=s.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return n?ll(n,r,c):!!r;if(l&8){const u=t.dynamicProps;for(let d=0;dObject.create(ul),dl=e=>Object.getPrototypeOf(e)===ul;function zd(e,t,o,n=!1){const a={},s=pl();e.propsDefaults=Object.create(null),gl(e,t,a,s);for(const r in e.propsOptions[0])r in a||(a[r]=void 0);o?e.props=n?a:Yp(a):e.type.props?e.props=a:e.props=s,e.attrs=s}function Bd(e,t,o,n){const{props:a,attrs:s,vnode:{patchFlag:r}}=e,i=We(a),[l]=e.propsOptions;let c=!1;if((n||r>0)&&!(r&16)){if(r&8){const u=e.vnode.dynamicProps;for(let d=0;d{l=!0;const[f,v]=fl(d,t,!0);it(r,f),v&&i.push(...v)};!o&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!s&&!l)return Ze(e)&&n.set(e,on),on;if(Te(s))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",qs=e=>Te(e)?e.map(so):[so(e)],qd=(e,t,o)=>{if(t._n)return t;const n=Co((...a)=>qs(t(...a)),o);return n._c=!1,n},ml=(e,t,o)=>{const n=e._ctx;for(const a in e){if(Vs(a))continue;const s=e[a];if(Re(s))t[a]=qd(a,s,n);else if(s!=null){const r=qs(s);t[a]=()=>r}}},$l=(e,t)=>{const o=qs(t);e.slots.default=()=>o},bl=(e,t,o)=>{for(const n in t)(o||!Vs(n))&&(e[n]=t[n])},Hd=(e,t,o)=>{const n=e.slots=pl();if(e.vnode.shapeFlag&32){const a=t._;a?(bl(n,t,o),o&&ai(n,"_",a,!0)):ml(t,n)}else t&&$l(e,t)},Wd=(e,t,o)=>{const{vnode:n,slots:a}=e;let s=!0,r=Qe;if(n.shapeFlag&32){const i=t._;i?o&&i===1?s=!1:bl(a,t,o):(s=!t.$stable,ml(t,a)),r=t}else t&&($l(e,t),r={default:1});if(s)for(const i in a)!Vs(i)&&r[i]==null&&delete a[i]},xt=Jd;function Kd(e){return Yd(e)}function Yd(e,t){const o=ba();o.__VUE__=!0;const{insert:n,remove:a,patchProp:s,createElement:r,createText:i,createComment:l,setText:c,setElementText:u,parentNode:d,nextSibling:f,setScopeId:v=Zt,insertStaticContent:L}=e,k=(_,P,S,j=null,ee=null,te=null,ce=void 0,le=null,g=!!P.dynamicChildren)=>{if(_===P)return;_&&!Wn(_,P)&&(j=Ae(_),D(_,ee,te,!0),_=null),P.patchFlag===-2&&(g=!1,P.dynamicChildren=null);const{type:$,ref:y,shapeFlag:E}=P;switch($){case Vn:x(_,P,S,j);break;case ao:C(_,P,S,j);break;case Ks:_==null&&h(P,S,j,ce);break;case Ce:Y(_,P,S,j,ee,te,ce,le,g);break;default:E&1?b(_,P,S,j,ee,te,ce,le,g):E&6?ge(_,P,S,j,ee,te,ce,le,g):(E&64||E&128)&&$.process(_,P,S,j,ee,te,ce,le,g,fe)}y!=null&&ee?jn(y,_&&_.ref,te,P||_,!P):y==null&&_&&_.ref!=null&&jn(_.ref,null,te,_,!0)},x=(_,P,S,j)=>{if(_==null)n(P.el=i(P.children),S,j);else{const ee=P.el=_.el;P.children!==_.children&&c(ee,P.children)}},C=(_,P,S,j)=>{_==null?n(P.el=l(P.children||""),S,j):P.el=_.el},h=(_,P,S,j)=>{[_.el,_.anchor]=L(_.children,P,S,j,_.el,_.anchor)},m=({el:_,anchor:P},S,j)=>{let ee;for(;_&&_!==P;)ee=f(_),n(_,S,j),_=ee;n(P,S,j)},p=({el:_,anchor:P})=>{let S;for(;_&&_!==P;)S=f(_),a(_),_=S;a(P)},b=(_,P,S,j,ee,te,ce,le,g)=>{if(P.type==="svg"?ce="svg":P.type==="math"&&(ce="mathml"),_==null)A(P,S,j,ee,te,ce,le,g);else{const $=_.el&&_.el._isVueCE?_.el:null;try{$&&$._beginPatch(),U(_,P,ee,te,ce,le,g)}finally{$&&$._endPatch()}}},A=(_,P,S,j,ee,te,ce,le)=>{let g,$;const{props:y,shapeFlag:E,transition:q,dirs:K}=_;if(g=_.el=r(_.type,te,y&&y.is,y),E&8?u(g,_.children):E&16&&M(_.children,g,null,j,ee,Hs(_,te),ce,le),K&&Ho(_,null,j,"created"),w(g,_,_.scopeId,ce,j),y){for(const z in y)z!=="value"&&!En(z)&&s(g,z,null,y[z],te,j);"value"in y&&s(g,"value",null,y.value,te),($=y.onVnodeBeforeMount)&&ro($,j,_)}K&&Ho(_,null,j,"beforeMount");const N=Xd(ee,q);N&&q.beforeEnter(g),n(g,P,S),(($=y&&y.onVnodeMounted)||N||K)&&xt(()=>{try{$&&ro($,j,_),N&&q.enter(g),K&&Ho(_,null,j,"mounted")}finally{}},ee)},w=(_,P,S,j,ee)=>{if(S&&v(_,S),j)for(let te=0;te{for(let $=g;$<_.length;$++){const y=_[$]=le?$o(_[$]):so(_[$]);k(null,y,P,S,j,ee,te,ce,le)}},U=(_,P,S,j,ee,te,ce)=>{const le=P.el=_.el;let{patchFlag:g,dynamicChildren:$,dirs:y}=P;g|=_.patchFlag&16;const E=_.props||Qe,q=P.props||Qe;let K;if(S&&Yo(S,!1),(K=q.onVnodeBeforeUpdate)&&ro(K,S,P,_),y&&Ho(P,_,S,"beforeUpdate"),S&&Yo(S,!0),$&&(!_.dynamicChildren||_.dynamicChildren.length!==$.length)&&(g=0,ce=!1,$=null),(E.innerHTML&&q.innerHTML==null||E.textContent&&q.textContent==null)&&u(le,""),$?ne(_.dynamicChildren,$,le,S,j,Hs(P,ee),te):ce||ie(_,P,le,null,S,j,Hs(P,ee),te,!1),g>0){if(g&16)B(le,E,q,S,ee);else if(g&2&&E.class!==q.class&&s(le,"class",null,q.class,ee),g&4&&s(le,"style",E.style,q.style,ee),g&8){const N=P.dynamicProps;for(let z=0;z{K&&ro(K,S,P,_),y&&Ho(P,_,S,"updated")},j)},ne=(_,P,S,j,ee,te,ce)=>{for(let le=0;le{if(P!==S){if(P!==Qe)for(const te in P)!En(te)&&!(te in S)&&s(_,te,P[te],null,ee,j);for(const te in S){if(En(te))continue;const ce=S[te],le=P[te];ce!==le&&te!=="value"&&s(_,te,le,ce,ee,j)}"value"in S&&s(_,"value",P.value,S.value,ee)}},Y=(_,P,S,j,ee,te,ce,le,g)=>{const $=P.el=_?_.el:i(""),y=P.anchor=_?_.anchor:i("");let{patchFlag:E,dynamicChildren:q,slotScopeIds:K}=P;K&&(le=le?le.concat(K):K),_==null?(n($,S,j),n(y,S,j),M(P.children||[],S,y,ee,te,ce,le,g)):E>0&&E&64&&q&&_.dynamicChildren&&_.dynamicChildren.length===q.length?(ne(_.dynamicChildren,q,S,ee,te,ce,le),(P.key!=null||ee&&P===ee.subTree)&&Ws(_,P,!0)):ie(_,P,S,y,ee,te,ce,le,g)},ge=(_,P,S,j,ee,te,ce,le,g)=>{P.slotScopeIds=le,_==null?P.shapeFlag&512?ee.ctx.activate(P,S,j,ce,g):I(P,S,j,ee,te,ce,g):Q(_,P,g)},I=(_,P,S,j,ee,te,ce)=>{const le=_.component=ag(_,j,ee);if(Is(_)&&(le.ctx.renderer=fe),sg(le,!1,ce),le.asyncDep){if(ee&&ee.registerDep(le,H,ce),!_.el){const g=le.subTree=je(ao);C(null,g,P,S),_.placeholder=g.el}}else H(le,_,P,S,ee,te,ce)},Q=(_,P,S)=>{const j=P.component=_.component;if(Gd(_,P,S))if(j.asyncDep&&!j.asyncResolved){G(j,P,S);return}else j.next=P,j.update();else P.el=_.el,j.vnode=P},H=(_,P,S,j,ee,te,ce)=>{const le=()=>{if(_.isMounted){let{next:E,bu:q,u:K,parent:N,vnode:z}=_;{const He=_l(_);if(He){E&&(E.el=z.el,G(_,E,ce)),He.asyncDep.then(()=>{xt(()=>{_.isUnmounted||$()},ee)});return}}let se=E,ke;Yo(_,!1),E?(E.el=z.el,G(_,E,ce)):E=z,q&&$a(q),(ke=E.props&&E.props.onVnodeBeforeUpdate)&&ro(ke,N,E,z),Yo(_,!0);const Fe=il(_),Ve=_.subTree;_.subTree=Fe,k(Ve,Fe,d(Ve.el),Ae(Ve),_,ee,te),E.el=Fe.el,se===null&&jd(_,Fe.el),K&&xt(K,ee),(ke=E.props&&E.props.onVnodeUpdated)&&xt(()=>ro(ke,N,E,z),ee)}else{let E;const{el:q,props:K}=P,{bm:N,m:z,parent:se,root:ke,type:Fe}=_,Ve=cn(P);Yo(_,!1),N&&$a(N),!Ve&&(E=K&&K.onVnodeBeforeMount)&&ro(E,se,P),Yo(_,!0);{ke.ce&&ke.ce._hasShadowRoot()&&ke.ce._injectChildStyle(Fe,_.parent?_.parent.type:void 0);const He=_.subTree=il(_);k(null,He,S,j,_,ee,te),P.el=He.el}if(z&&xt(z,ee),!Ve&&(E=K&&K.onVnodeMounted)){const He=P;xt(()=>ro(E,se,He),ee)}(P.shapeFlag&256||se&&cn(se.vnode)&&se.vnode.shapeFlag&256)&&_.a&&xt(_.a,ee),_.isMounted=!0,P=S=j=null}};_.scope.on();const g=_.effect=new gi(le);_.scope.off();const $=_.update=g.run.bind(g),y=_.job=g.runIfDirty.bind(g);y.i=_,y.id=_.uid,g.scheduler=()=>Ns(y),Yo(_,!0),$()},G=(_,P,S)=>{P.component=_;const j=_.vnode.props;_.vnode=P,_.next=null,Bd(_,P.props,j,S),Wd(_,P.children,S),Qt(),Ii(_),eo()},ie=(_,P,S,j,ee,te,ce,le,g=!1)=>{const $=_&&_.children,y=_?_.shapeFlag:0,E=P.children,{patchFlag:q,shapeFlag:K}=P;if(q>0){if(q&128){O($,E,S,j,ee,te,ce,le,g);return}else if(q&256){F($,E,S,j,ee,te,ce,le,g);return}}K&8?(y&16&&Le($,ee,te),E!==$&&u(S,E)):y&16?K&16?O($,E,S,j,ee,te,ce,le,g):Le($,ee,te,!0):(y&8&&u(S,""),K&16&&M(E,S,j,ee,te,ce,le,g))},F=(_,P,S,j,ee,te,ce,le,g)=>{_=_||on,P=P||on;const $=_.length,y=P.length,E=Math.min($,y);let q;for(q=0;qy?Le(_,ee,te,!0,!1,E):M(P,S,j,ee,te,ce,le,g,E)},O=(_,P,S,j,ee,te,ce,le,g)=>{let $=0;const y=P.length;let E=_.length-1,q=y-1;for(;$<=E&&$<=q;){const K=_[$],N=P[$]=g?$o(P[$]):so(P[$]);if(Wn(K,N))k(K,N,S,null,ee,te,ce,le,g);else break;$++}for(;$<=E&&$<=q;){const K=_[E],N=P[q]=g?$o(P[q]):so(P[q]);if(Wn(K,N))k(K,N,S,null,ee,te,ce,le,g);else break;E--,q--}if($>E){if($<=q){const K=q+1,N=Kq)for(;$<=E;)D(_[$],ee,te,!0),$++;else{const K=$,N=$,z=new Map;for($=N;$<=q;$++){const Ye=P[$]=g?$o(P[$]):so(P[$]);Ye.key!=null&&z.set(Ye.key,$)}let se,ke=0;const Fe=q-N+1;let Ve=!1,He=0;const ht=new Array(Fe);for($=0;$=Fe){D(Ye,ee,te,!0);continue}let J;if(Ye.key!=null)J=z.get(Ye.key);else for(se=N;se<=q;se++)if(ht[se-N]===0&&Wn(Ye,P[se])){J=se;break}J===void 0?D(Ye,ee,te,!0):(ht[J-N]=$+1,J>=He?He=J:Ve=!0,k(Ye,P[J],S,null,ee,te,ce,le,g),ke++)}const mt=Ve?Zd(ht):on;for(se=mt.length-1,$=Fe-1;$>=0;$--){const Ye=N+$,J=P[Ye],$e=P[Ye+1],be=Ye+1{const{el:te,type:ce,transition:le,children:g,shapeFlag:$}=_;if($&6){V(_.component.subTree,P,S,j);return}if($&128){_.suspense.move(P,S,j);return}if($&64){ce.move(_,P,S,fe);return}if(ce===Ce){n(te,P,S);for(let E=0;Ele.enter(te),ee));else{const{leave:E,delayLeave:q,afterLeave:K}=le,N=()=>{_.ctx.isUnmounted?a(te):n(te,P,S)},z=()=>{const se=te._isLeaving||!!te[Os];te._isLeaving&&te[Os](!0),le.persisted&&!se?N():E(te,()=>{N(),K&&K()})};q?q(te,N,z):z()}else n(te,P,S)},D=(_,P,S,j=!1,ee=!1)=>{const{type:te,props:ce,ref:le,children:g,dynamicChildren:$,shapeFlag:y,patchFlag:E,dirs:q,cacheIndex:K,memo:N}=_;if(E===-2&&(ee=!1),le!=null&&(Qt(),jn(le,null,S,_,!0),eo()),K!=null&&(P.renderCache[K]=void 0),y&256){P.ctx.deactivate(_);return}const z=y&1&&q,se=!cn(_);let ke;if(se&&(ke=ce&&ce.onVnodeBeforeUnmount)&&ro(ke,P,_),y&6)we(_.component,S,j);else{if(y&128){_.suspense.unmount(S,j);return}z&&Ho(_,null,P,"beforeUnmount"),y&64?_.type.remove(_,P,S,fe,j):$&&!$.hasOnce&&(te!==Ce||E>0&&E&64)?Le($,P,S,!1,!0):(te===Ce&&E&384||!ee&&y&16)&&Le(g,P,S),j&&ae(_)}const Fe=N!=null&&K==null;(se&&(ke=ce&&ce.onVnodeUnmounted)||z||Fe)&&xt(()=>{ke&&ro(ke,P,_),z&&Ho(_,null,P,"unmounted"),Fe&&(_.el=null)},S)},ae=_=>{const{type:P,el:S,anchor:j,transition:ee}=_;if(P===Ce){me(S,j);return}if(P===Ks){p(_);return}const te=()=>{a(S),ee&&!ee.persisted&&ee.afterLeave&&ee.afterLeave()};if(_.shapeFlag&1&&ee&&!ee.persisted){const{leave:ce,delayLeave:le}=ee,g=()=>ce(S,te);le?le(_.el,te,g):g()}else te()},me=(_,P)=>{let S;for(;_!==P;)S=f(_),a(_),_=S;a(P)},we=(_,P,S)=>{const{bum:j,scope:ee,job:te,subTree:ce,um:le,m:g,a:$}=_;yl(g),yl($),j&&$a(j),ee.stop(),te&&(te.flags|=8,D(ce,_,P,S)),le&&xt(le,P),xt(()=>{_.isUnmounted=!0},P)},Le=(_,P,S,j=!1,ee=!1,te=0)=>{for(let ce=te;ce<_.length;ce++)D(_[ce],P,S,j,ee)},Ae=_=>{if(_.shapeFlag&6)return Ae(_.component.subTree);if(_.shapeFlag&128)return _.suspense.next();const P=f(_.anchor||_.el),S=P&&P[Bi];return S?f(S):P};let ve=!1;const oe=(_,P,S)=>{let j;_==null?P._vnode&&(D(P._vnode,null,null,!0),j=P._vnode.component):k(P._vnode||null,_,P,null,null,null,S),P._vnode=_,ve||(ve=!0,Ii(j),Di(),ve=!1)},fe={p:k,um:D,m:V,r:ae,mt:I,mc:M,pc:ie,pbc:ne,n:Ae,o:e};return{render:oe,hydrate:void 0,createApp:Md(oe)}}function Hs({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 Yo({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Xd(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ws(e,t,o=!1){const n=e.children,a=t.children;if(Te(n)&&Te(a))for(let s=0;s>1,e[o[i]]0&&(t[n]=o[s-1]),o[s]=n)}}for(s=o.length,r=o[s-1];s-- >0;)o[s]=r,r=t[r];return o}function _l(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:_l(t)}function yl(e){if(e)for(let t=0;te.__isSuspense;function Jd(e,t){t&&t.pendingBranch?Te(e)?t.effects.push(...e):t.effects.push(e):ld(e)}const Ce=Symbol.for("v-fgt"),Vn=Symbol.for("v-txt"),ao=Symbol.for("v-cmt"),Ks=Symbol.for("v-stc"),mo=[];let Mt=null;function W(e=!1){mo.push(Mt=e?null:[])}function Ys(){mo.pop(),Mt=mo[mo.length-1]||null}let qn=1;function Fa(e,t=!1){qn+=e,e<0&&Mt&&t&&(Mt.hasOnce=!0)}function wl(e){return e.dynamicChildren=qn>0?Mt||on:null,Ys(),qn>0&&Mt&&Mt.push(e),e}function X(e,t,o,n,a,s){return wl(T(e,t,o,n,a,s,!0))}function To(e,t,o,n,a){return wl(je(e,t,o,n,a,!0))}function Hn(e){return e?e.__v_isVNode===!0:!1}function Wn(e,t){return e.type===t.type&&e.key===t.key}const xl=({key:e})=>e??null,Ia=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?nt(e)||gt(e)||Re(e)?{i:yt,r:e,k:t,f:!!o}:e:null);function T(e,t=null,o=null,n=0,a=null,s=e===Ce?0:1,r=!1,i=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&xl(t),ref:t&&Ia(t),scopeId:Gi,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:s,patchFlag:n,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:yt};return i?(Da(l,o),s&128&&e.normalize(l)):o&&(l.shapeFlag|=nt(o)?8:16),qn>0&&!r&&Mt&&(l.patchFlag>0||s&6)&&l.patchFlag!==32&&Mt.push(l),l}const je=Qd;function Qd(e,t=null,o=null,n=0,a=null,s=!1){if((!e||e===Ld)&&(e=ao),Hn(e)){const i=pn(e,t,!0);return o&&Da(i,o),qn>0&&!s&&Mt&&(i.shapeFlag&6?Mt[Mt.indexOf(e)]=i:Mt.push(i)),i.patchFlag=-2,i}if(dg(e)&&(e=e.__vccOpts),t){t=eg(t);let{class:i,style:l}=t;i&&!nt(i)&&(t.class=qe(i)),Ze(l)&&(Es(l)&&!Te(l)&&(l=it({},l)),t.style=lt(l))}const r=nt(e)?1:kl(e)?128:Ca(e)?64:Ze(e)?4:Re(e)?2:0;return T(e,t,o,n,a,r,s,!0)}function eg(e){return e?Es(e)||dl(e)?it({},e):e:null}function pn(e,t,o=!1,n=!1){const{props:a,ref:s,patchFlag:r,children:i,transition:l}=e,c=t?tg(a||{},t):a,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&xl(c),ref:t&&t.ref?o&&s?Te(s)?s.concat(Ia(t)):[s,Ia(t)]:Ia(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ce?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&pn(e.ssContent),ssFallback:e.ssFallback&&pn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&n&&Fs(u,l.clone(u)),u}function ut(e=" ",t=0){return je(Vn,null,e,t)}function Me(e="",t=!1){return t?(W(),To(ao,null,e)):je(ao,null,e)}function so(e){return e==null||typeof e=="boolean"?je(ao):Te(e)?je(Ce,null,e.slice()):Hn(e)?$o(e):je(Vn,null,String(e))}function $o(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:pn(e)}function Da(e,t){let o=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Te(t))o=16;else if(typeof t=="object")if(n&65){const a=t.default;a&&(a._c&&(a._d=!1),Da(e,a()),a._c&&(a._d=!0));return}else{o=32;const a=t._;!a&&!dl(t)?t._ctx=yt:a===3&&yt&&(yt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(Re(t)){if(n&65){Da(e,{default:t});return}t={default:t,_ctx:yt},o=32}else t=String(t),n&64?(o=16,t=[ut(t)]):o=8;e.children=t,e.shapeFlag|=o}function tg(...e){const t={};for(let o=0;oSt||yt;let Ua,Kn;{const e=ba(),t=(o,n)=>{let a;return(a=e[o])||(a=e[o]=[]),a.push(n),s=>{a.length>1?a.forEach(r=>r(s)):a[0](s)}};Ua=t("__VUE_INSTANCE_SETTERS__",o=>St=o),Kn=t("__VUE_SSR_SETTERS__",o=>Xn=o)}const Yn=e=>{const t=St;return Ua(e),e.scope.on(),()=>{e.scope.off(),Ua(t)}},Sl=()=>{St&&St.scope.off(),Ua(null)};function Ll(e){return e.vnode.shapeFlag&4}let Xn=!1;function sg(e,t=!1,o=!1){t&&Kn(t);const{props:n,children:a}=e.vnode,s=Ll(e);zd(e,n,s,t),Hd(e,a,o||t);const r=s?rg(e,t):void 0;return t&&Kn(!1),r}function rg(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ad);const{setup:n}=o;if(n){Qt();const a=e.setupContext=n.length>1?lg(e):null,s=Yn(e),r=sn(n,e,0,[e.props,a]),i=ti(r);if(eo(),s(),(i||e.sp)&&!cn(e)&&Wi(e),i){if(r.then(Sl,Sl),t)return r.then(l=>{Kn(!0);try{Al(e,l,t)}finally{Kn(!1)}}).catch(l=>{Aa(l,e,0)});e.asyncDep=r}else Al(e,r)}else Pl(e)}function Al(e,t,o){Re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ze(t)&&(e.setupState=Ri(t)),Pl(e)}function Pl(e,t,o){const n=e.type;e.render||(e.render=n.render||Zt);{const a=Yn(e);Qt();try{Pd(e)}finally{eo(),a()}}}const ig={get(e,t){return _t(e,"get",""),e[t]}};function lg(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,ig),slots:e.slots,emit:e.emit,expose:t}}function Ga(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ri(Ni(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in zn)return zn[o](e)},has(t,o){return o in t||o in zn}})):e.proxy}const cg=/(?:^|[-_])\w/g,ug=e=>e.replace(cg,t=>t.toUpperCase()).replace(/[-_]/g,"");function pg(e,t=!0){return Re(e)?e.displayName||e.name:e.name||t&&e.__name}function El(e,t,o=!1){let n=pg(t);if(!n&&t.__file){const a=t.__file.match(/([^/\\]+)\.\w+$/);a&&(n=a[1])}if(!n&&e){const a=s=>{for(const r in s)if(s[r]===t)return r};n=a(e.components)||e.parent&&a(e.parent.type.components)||a(e.appContext.components)}return n?ug(n):o?"App":"Anonymous"}function dg(e){return Re(e)&&"__vccOpts"in e}const re=(e,t)=>Qp(e,t,Xn);function Cl(e,t,o){try{Fa(-1);const n=arguments.length;return n===2?Ze(t)&&!Te(t)?Hn(t)?je(e,null,[t]):je(e,t):je(e,null,t):(n>3?o=Array.prototype.slice.call(arguments,2):n===3&&Hn(o)&&(o=[o]),je(e,t,o))}finally{Fa(1)}}const gg="3.5.42";/** -* @vue/runtime-dom v3.5.42 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Xs;const Nl=typeof window<"u"&&window.trustedTypes;if(Nl)try{Xs=Nl.createPolicy("vue",{createHTML:e=>e})}catch{}const Tl=Xs?e=>Xs.createHTML(e):e=>e,fg="http://www.w3.org/2000/svg",hg="http://www.w3.org/1998/Math/MathML",bo=typeof document<"u"?document:null,Rl=bo&&bo.createElement("template"),mg={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 a=t==="svg"?bo.createElementNS(fg,e):t==="mathml"?bo.createElementNS(hg,e):o?bo.createElement(e,{is:o}):bo.createElement(e);return e==="select"&&n&&n.multiple!=null&&a.setAttribute("multiple",n.multiple),a},createText:e=>bo.createTextNode(e),createComment:e=>bo.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>bo.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,n,a,s){const r=o?o.previousSibling:t.lastChild;if(a&&(a===s||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),o),!(a===s||!(a=a.nextSibling)););else{Rl.innerHTML=Tl(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const i=Rl.content;if(n==="svg"||n==="mathml"){const l=i.firstChild;for(;l.firstChild;)i.appendChild(l.firstChild);i.removeChild(l)}t.insertBefore(i,o)}return[r?r.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},$g=Symbol("_vtc");function bg(e,t,o){const n=e[$g];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const ja=Symbol("_vod"),Ml=Symbol("_vsh"),qt={name:"show",beforeMount(e,{value:t},{transition:o}){e[ja]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Zn(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),Zn(e,!0),n.enter(e)):n.leave(e,()=>{Zn(e,!1)}):Zn(e,t))},beforeUnmount(e,{value:t}){Zn(e,t)}};function Zn(e,t){e.style.display=t?e[ja]:"none",e[Ml]=!t}const _g=Symbol(""),yg=/(?:^|;)\s*display\s*:/;function vg(e,t,o){const n=e.style,a=nt(o);let s=!1;if(o&&!a){if(t)if(nt(t))for(const r of t.split(";")){const i=r.slice(0,r.indexOf(":")).trim();o[i]==null&&Jn(n,i,"")}else for(const r in t)o[r]==null&&Jn(n,r,"");for(const r in o){r==="display"&&(s=!0);const i=o[r];i!=null?wg(e,r,!nt(t)&&t?t[r]:void 0,i)||Jn(n,r,i):Jn(n,r,"")}}else if(a){if(t!==o){const r=n[_g];r&&(o+=";"+r),n.cssText=o,s=yg.test(o)}}else t&&e.removeAttribute("style");ja in e&&(e[ja]=s?n.display:"",e[Ml]&&(n.display="none"))}const za=/\s*!important$/;function Jn(e,t,o){if(Te(o))o.forEach(n=>Jn(e,t,n));else if(o==null&&(o=""),t.startsWith("--"))za.test(o)?e.setProperty(t,o.replace(za,""),"important"):e.setProperty(t,o);else{const n=kg(e,t);za.test(o)?e.setProperty(Rt(n),o.replace(za,""),"important"):e[n]=o}}const Ol=["Webkit","Moz","ms"],Zs={};function kg(e,t){const o=Zs[t];if(o)return o;let n=Et(t);if(n!=="filter"&&n in e)return Zs[t]=n;n=ni(n);for(let a=0;aJs||(Eg.then(()=>Js=0),Js=Date.now());function Ng(e,t){const o=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=o.attached)return;const a=o.value;if(Te(a)){const s=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{s.call(n),n._stopped=!0};const r=a.slice(),i=[n];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Tg=(e,t,o,n,a,s)=>{const r=a==="svg";t==="class"?bg(e,n,r):t==="style"?vg(e,o,n):da(t)?ga(t)||Sg(e,t,o,n,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Rg(e,t,n,r))?(Dl(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Il(e,t,n,r,s,t!=="value")):e._isVueCE&&(Mg(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!nt(n)))?Dl(e,Et(t),n,s,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Il(e,t,n,r))};function Rg(e,t,o,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Gl(t)&&Re(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 a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return Gl(t)&&nt(o)?!1:t in e}function Mg(e,t){const o=e._def.props;if(!o)return!1;const n=Et(t);return Array.isArray(o)?o.some(a=>Et(a)===n):Object.keys(o).some(a=>Et(a)===n)}const jl={};function Og(e,t,o){let n=Gn(e,t);ha(n)&&(n=it({},n,t));class a extends Qs{constructor(r){super(n,r,o)}}return a.def=n,a}const Fg=typeof HTMLElement<"u"?HTMLElement:class{};class Qs extends Fg{constructor(t,o={},n=Hl){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!==Hl?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(it({},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 Qs){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,In(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let n=0;n{this._resolved=!0,this._pendingResolve=void 0;const{props:s,styles:r}=n;let i;if(s&&!Te(s))for(const l in s){const c=s[l];(c===Number||c&&c.type===Number)&&(l in this._props&&(this._props[l]=si(this._props[l])),(i||(i=Object.create(null)))[Et(l)]=!0)}this._numberProps=i,this._resolveProps(n),this.shadowRoot&&this._applyStyles(r),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)Xe(this,n)||Object.defineProperty(this,n,{get:()=>he(o[n])})}_resolveProps(t){const{props:o}=t,n=Te(o)?o:Object.keys(o||{});for(const a of Object.keys(this))a[0]!=="_"&&n.includes(a)&&this._setProp(a,this[a]);for(const a of n.map(Et))Object.defineProperty(this,a,{get(){return this._getProp(a)},set(s){this._setProp(a,s,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let n=o?this.getAttribute(t):jl;const a=Et(t);o&&this._numberProps&&this._numberProps[a]&&(n=si(n)),this._setProp(a,n,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,n=!0,a=!1){if(o!==this._props[t]&&(this._dirty=!0,o===jl?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),a&&this._instance&&this._update(),n)){const s=this._ob;s&&(this._processMutations(s.takeRecords()),s.disconnect()),o===!0?this.setAttribute(Rt(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(Rt(t),o+""):o||this.removeAttribute(Rt(t)),s&&s.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),Bg(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=je(this._def,it(t,this._props));return this._instance||(o.ce=n=>{this._instance=n,n.ce=this,n.isCE=!0;const a=(s,r)=>{this.dispatchEvent(new CustomEvent(s,ha(r[0])?it({detail:r},r[0]):{detail:r}))};n.emit=(s,...r)=>{a(s,r),Rt(s)!==s&&a(Rt(s),r)},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 a=this._nonce,s=this.shadowRoot,r=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(s);let i=null;for(let l=t.length-1;l>=0;l--){const c=document.createElement("style");a&&c.setAttribute("nonce",a),c.textContent=t[l],s.insertBefore(c,i||r),i=c,l===0&&(n||this._styleAnchors.set(this._def,c),o&&this._styleAnchors.set(o,c))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{const t=e.props["onUpdate:modelValue"]||!1;return Te(t)?o=>$a(t,o):t};function Ig(e){e.target.composing=!0}function Bl(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ba=Symbol("_assign"),Va=Symbol("_initialValue");function er(e,t,o){return t&&(e=e.trim()),o&&(e=hs(e)),e}const Dg={created(e,{modifiers:{lazy:t,trim:o,number:n}},a){e.parentNode&&(e.type==="text"?e[Va]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Va]=e.defaultValue.replace(/\r\n?/g,` -`))),e[Ba]=zl(a);const s=n||a.props&&a.props.type==="number";dn(e,t?"change":"input",r=>{r.target.composing||e[Ba](er(e.value,o,s))}),(o||s)&&dn(e,"change",()=>{e.value=er(e.value,o,s)}),t||(dn(e,"compositionstart",Ig),dn(e,"compositionend",Bl),dn(e,"change",Bl))},mounted(e,{value:t,modifiers:{trim:o,number:n}}){const a=t??"",s=e[Va];delete e[Va],s!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==s?e[Ba](er(e.value,o,n)):e.value=a},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:n,trim:a,number:s}},r){if(e[Ba]=zl(r),e.composing)return;const i=(s||e.type==="number")&&!/^0\d/.test(e.value)?hs(e.value):e.value,l=t??"";if(i===l)return;const c=e.getRootNode();(c instanceof Document||c instanceof ShadowRoot)&&c.activeElement===e&&e.type!=="range"&&(n&&t===o||a&&e.value.trim()===l)||(e.value=l)}},Ug=["ctrl","shift","alt","meta"],Gg={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)=>Ug.some(o=>e[`${o}Key`]&&!t.includes(o))},gn=(e,t)=>{if(!e)return e;const o=e._withMods||(e._withMods={}),n=t.join(".");return o[n]||(o[n]=(a,...s)=>{for(let r=0;r{const o=e._withKeys||(e._withKeys={}),n=t.join(".");return o[n]||(o[n]=a=>{if(!("key"in a))return;const s=Rt(a.key);if(t.some(r=>r===s||jg[r]===s))return e(a)})},zg=it({patchProp:Tg},mg);let Vl;function ql(){return Vl||(Vl=Kd(zg))}const Bg=(...e)=>{ql().render(...e)},Hl=(...e)=>{const t=ql().createApp(...e),{mount:o}=t;return t.mount=n=>{const a=qg(n);if(!a)return;const s=t._component;!Re(s)&&!s.render&&!s.template&&(s.template=a.innerHTML),a.nodeType===1&&(a.textContent="");const r=o(a,!1,Vg(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),r},t};function Vg(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function qg(e){return nt(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Hg=Symbol();var Wl;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Wl||(Wl={}));function Wg(){const e=di(!0),t=e.run(()=>pe({}));let o=[],n=[];const a=Ni({install(s){a._a=s,s.provide(Hg,a),s.config.globalProperties.$pinia=a,n.forEach(r=>o.push(r)),n=[]},use(s){return this._a?o.push(s):n.push(s),this},_p:o,_a:null,_e:e,_s:new Map,state:t});return a}const Kg={title:"كل مجموعات الشعوب",locations:"{n} موقعًا (مجموعة × بلد)",doxa:"مجموعات شعوب DOXA",frontier:"حدودية — لم يبدأ شيء",unreached:"غير مُبشَّرة — العمل يبدأ",reached:"مُبشَّرة — الكنيسة موجودة",hint:"انقر على صف لعرضها كلها · انقر مرة أخرى لعرض الكل",loading:"جارٍ تحميل كل مجموعات الشعوب…",loadError:"تعذّر تحميل الخريطة.",pray:"صلِّ لأجلهم ←",population:"السكان {n}"},Yg={backToLegend:"العودة إلى المفتاح",closeDetailView:"إغلاق عرض التفاصيل",collapseLegend:"طيّ وسيلة الإيضاح",expandLegend:"توسيع وسيلة الإيضاح",toggleLegend:"إظهار وسيلة الإيضاح أو إخفاؤها"},Xg={prayForThem:"صلِّ من أجلهم",adoptThem:"تبنَّهم",moreInfo:"مزيد من المعلومات",zoomIn:"تكبير",zoomOut:"تصغير",switchToLightMode:"التبديل إلى الوضع الفاتح",switchToDarkMode:"التبديل إلى الوضع الداكن",resetView:"إعادة تعيين العرض",toggleFullscreen:"تبديل ملء الشاشة",aboutThisMap:"حول هذه الخريطة",closeMenu:"إغلاق القائمة",reloadMap:"إعادة تحميل الخريطة",showClusters:"إظهار المجموعات",clusterSettings:"إعدادات المجموعات",startAutoFly:"بدء الطيران التلقائي",stopFlight:"إيقاف الطيران",speedLabel:"السرعة:",speedOption:{slow:"بطيء",normal:"عادي",fast:"سريع"},shareEmbed:"مشاركة وتضمين",posterMap:"خريطة الملصق",prayerList:"قائمة الصلاة",cardDeck:"مجموعة البطاقات",printOptions:"خيارات الطباعة",showOnMap:"أظهر على الخريطة",close:"إغلاق",showOnMapAria:"أظهر {label} على الخريطة",cardStockAria:"حجم بطاقة الصلاة",previewPrintPoster:"معاينة وطباعة ملصق {label}",share:"مشاركة",shareSteps:["ضع هذه الخريطة على موقعك","أعدّ قائمة بمواقع الويب في مدينتك","علّمهم أن يضعوها أيضًا","علّمهم أن يعلّموا غيرهم وضعها","لنكثر الخرائط في كل مكان ليسوع!"],clearSelection:"إلغاء التحديد",noOptions:"لا توجد نتائج",renderingLocal:"يتم إنشاء صورة بجودة الطباعة في متصفحك — لا يتم تحميل أي شيء.",postersPerRow:"الملصقات في كل صف"},Zg={title:"الوصول إلى الإنترنت حيث تعيش الشعوب غير المنخرطة",bands:{yes:"متصل 60%+",partial:"جزئي 25–59%",no:"منخفض، أقل من 25%",unknown:"غير مُقاس"},peopleGroup:"شعب",caveat:"أرقام وطنية (البنك الدولي). بيانات الاتصال لكل مدينة غير متاحة للعامة — لا تستنتج حال مدينة من بيانات بلدها.",sheet:{close:"إغلاق",ai:"عُثر على هذه البيانات عبر بحث معمّق بالذكاء الاصطناعي — وقد تتضمن معلومات خاطئة.",dismiss:"إغلاق التنبيه",internetUsers:"مستخدمو الإنترنت",measured:"سنة القياس",mobilePer100:"اشتراكات الجوال لكل 100",peopleGroups:"الشعوب",topPlatform:"المنصة الأولى",unknown:"غير معروف",carriers:"شركات الاتصالات ومزودو الإنترنت ({n})",socialPlatforms:"منصات التواصل الاجتماعي",note:"أرقام وطنية وليست قياسات للمدن. أسماء شركات الاتصالات هي أسماء أصحاب سجلات ASN — وتشمل البنوك والجامعات إلى جانب مزودي الإنترنت، لذا فإن تصنيفها كشركات اتصالات تقدير مبني على الاسم وليس تصنيفًا مُتحقَّقًا منه."}},Jg={research_controls:"أدوات البحث",clustering:"التجميع",filters:"عوامل التصفية",pin_dim:"خفوت النقاط",export_poster:"تصدير ملصق…",reload_data:"إعادة تحميل البيانات",off:"إيقاف",native:"أصلي",mst:"الشجرة الممتدة",network:"شبكة",off_desc:"إظهار كل نقطة على حدة",native_desc:"تجميع دوائر Mapbox (الأسرع)",mst_desc:"شبكات تقارب بالشجرة الممتدة الصغرى",network_desc:"خطوط ربط بأقرب جار",search_languages:"ابحث عن اللغات…",search_religions:"ابحث عن الأديان…",reset_all:"إعادة تعيين الكل",no_languages:"لم تُحمَّل أي لغات بعد",no_religions:"لم تُحمَّل أي أديان بعد",unadopted:"غير متبنّى",min:"الأدنى",max:"الأعلى",adopted:"متبنَّاة",adoption:"التبني",engaged:"مُخْدُومَة",engagement:"المشاركة",unengaged:"يحتاج إلى انخراط",language:"اللغة",religion:"الدين",population:"السكان",any:"الكل",active_count:"{n} نشط",prayer_status:"حالة الصلاة",close:"إغلاق",clear:"مسح",map_controls:"أدوات التحكم بالخريطة"},Qg={bloc:"كتلة التقارب",gospel_access:"الوصول إلى الإنجيل",people:"الشعوب",people_name:"الشعب (الاسم)",praying:"يصلّون",religion_family:"عائلة الأديان",search_language:"ابحث عن لغة",search_people:"ابحث عن شعب",search_place:"ابحث عن مكان",search_religion:"ابحث عن دين",upgs_in_scope:"الشعوب ضمن النطاق",countries_touched:"الدول المشمولة",unreached:"غير موصولين",sum_population:"مجموع السكان",sum_praying:"مجموع المصلّين",charts:"الرسوم البيانية",table:"الجدول",cluster:"المجموعة",country:"الدولة",engagement:"المشاركة",language:"اللغة",language_family:"عائلة اللغة",people_group:"الشعب",population:"السكان",prayer:"الصلاة",region:"المنطقة",religion:"الدين",status:"الحالة",adopted:"متبنَّاة",filters:"عوامل التصفية",gospel_resources:"موارد الإنجيل",map:"الخريطة",search_placeholder:"ابحث عن الشعوب والأماكن واللغات والأديان…",any:"الكل",active_count:"{n} نشط",prayer_status:"حالة الصلاة",map_controls:"أدوات التحكم بالخريطة",close:"إغلاق",clear:"مسح",dashboard_title:"لوحة البحث الشاملة",align_dashboard:"محاذاة اللوحة",align_dashboard_tip:"إعادة تخطيط اللوحة إلى المحاذاة الافتراضية",selected:"المحدد",world:"العالم",vertical_legend:"مفتاح عمودي",groups_in_scope:"مجموعة ضمن النطاق",filter_by:"تصفية حسب",remove_filter:"إزالة التصفية",groups:"مجموعة",expand:"توسيع",collapse:"طيّ",place:"المكان"},ef={labels:{country:"الدولة:",population:"السكان:",language:"اللغة:",religion:"الديانة:",languageFamily:"العائلة اللغوية:",peopleCommitted:"ملتزمون بالصلاة:"},messages:{noDescription:"لا يوجد وصف متاح."}},tf={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"الملاحظات التوضيحية أدناه باللغة الإنجليزية."},mode:{gap:"الفجوة",coverage:"الموارد المتوفرة"},search:{placeholder:"ابحث عن شعب أو لغة أو رمز ISO",clear:"مسح البحث",none:"لا شيء يطابق هذا الاسم أو اللغة أو الرمز.",placeholderShort:"شعب أو لغة أو رمز ISO"},legend:{title:"شعوب غير مبلَّغة ولا يوجد لها أي مورد إنجيلي",band60:"⁦60%+⁩ بلا أي مورد",band30:"⁦30–59%⁩",bandSome:"بعض الشعوب",bandAll:"كل الشعوب لديها شيء",tier2:"الكتاب المقدس والفيلم",tier1:"وُجد بعض الموارد",tier0:"لا شيء",hnr:"يمكنهم السماع، ولا يوجد نص",showAll:"عرض كل الشعوب",titleCoverage:"شعوب غير مبلَّغة ويوجد لها بعض الموارد الإنجيلية",cov80:"⁦80%+⁩ لديهم شيء",cov50:"⁦50–79%⁩",cov1:"⁦1–49%⁩",cov0:"لا شيء لأي منهم",tallyEach:"كل",tallyIs:"هو شعب واحد —",tallyOf:"منها،",tallyLink:"لديها رابط",doxa0:"لدى الجميع شيء",doxa1:"‪1–4‬ بلا شيء",doxa5:"‪5–14‬",doxa15:"‪15–39‬",doxa40:"‪40+‬",cvd1:"‪1–4‬ لديهم موارد",cvd5:"‪5–14‬",cvd15:"‪15–39‬",cvd40:"‪40+‬",onMap:"شعوب دوكسا على هذه الخريطة",notPlaced:"ضمن القائمة، بلا موقع بعد",outOfScope:"لا توجد شعوب دوكسا — غير ملوَّنة"},tabs:{groups:"أكبر الشعوب",countries:"حسب البلد",regions:"حسب المنطقة",noprayer:"لا أحد يصلّي",hnr:"يسمعون، بلا نص"},stat:{language:"اللغة",population:"عدد السكان",countries:"البلدان",peopleGroups:"الشعوب",noResource:"لا يوجد أي مورد",peopleAffected:"الأشخاص المتأثرون",haveScripture:"لديهم الكتاب المقدس",haveFilm:"لديهم الفيلم",haveAudio:"لديهم كتاب مقدس مسموع",signLanguages:"لغات الإشارة",growingUnreached:"متزايدون وغير مبلَّغين",deathsDay:"الوفيات المقدَّرة يوميًا"},sheet:{ownLanguage:"بلغتهم الأم",close:"إغلاق",loading:"جارٍ تحميل الموارد…",pray:"صلِّ من أجل",everyResource:"كل الموارد بـ",alsoSpeak:"يتحدثون أيضًا"},res:{scripture:"الكتاب المقدس",film:"الفيلم",audio:"صوتي",bibleVideo:"فيديو كتابي",bibleStories:"Open Bible Stories",gospelAudio:"صوتيات الإنجيل",gospelPresentation:"عرض للإنجيل",scriptureEarth:"Scripture Earth",training:"تدريب على التلمذة",jesusFilm:"فيلم يسوع",audioScripture:"الكتاب المقدس الصوتي",bibleStoriesPlain:"قصص الكتاب المقدس"},state:{noneFound:"لا شيء",noneAtFcbh:"لا شيء في FCBH",noneAtGrn:"لا شيء في GRN",notInZume:"ليست ضمن لغات Zume الـ54",linkChecked:"تم التحقق من الرابط",unchecked:"لم يُتحقق منه",linkDead:"رابط معطّل",wrongLanguage:"لغة غير صحيحة",varietyNotStated:"(اللهجة غير محددة)",inLanguage:"بـ"},guide:{dotVsCountry:"كل نقطة هي شعب واحد من شعوب دوكسا ولغته؛ أما لون البلد فهو عدد تلك الشعوب.",noneFoundShort:"«لا شيء» تعني غير موجود في المصادر التي بحثنا فيها — وليست دليلًا على عدم وجوده.",tapCountry:"اضغط على بلد لترى الموارد الفعلية، شعبًا شعبًا."},tables:{title:"موارد الإنجيل — البيانات",showing:"عرض",of:"من",for:"لـ",filteredTo:"مصفّى حسب",showAll:"عرض كل الموارد",t_doxa:"دوكسا — الوصول إلى الإنجيل",t_links:"كل مورد ورابطه",t_nothing:"حيث لا يوجد شيء",t_countrygap:"الفجوة حسب البلد",t_translation:"يسمعون ولا نص لديهم",t_translationcountry:"أين نترجم",t_gaps:"الفجوات والفرص",t_bridges:"جسور المدن",t_deaf:"فجوة الصم",t_resources:"الموارد حسب الشعب",t_languages:"اللغات حسب البلد",t_growth:"الوصول مقابل نمو السكان"},pages:{listTitle:"موارد الإنجيل حسب اللغة",chartsTitle:"موارد الإنجيل — حسب اللغة",loadingTables:"جارٍ تحميل جداول الموارد…"},list:{noText:"بلا نص مقدس",hasScripture:"لديها الكتاب المقدس",allLanguages:"كل اللغات",peopleGroup:"شعب",peopleGroups:"شعوب",scriptureHere:"الكتاب المقدس بهذه اللغة"},columns:{"People group":"الشعب",Country:"البلد",Region:"المنطقة",Language:"اللغة",Population:"عدد السكان",Religion:"الديانة","Gospel access":"الوصول إلى الإنجيل",Resources:"الموارد",Scripture:"الكتاب المقدس","Bible video":"فيديو كتابي","Gospel presentation":"عرض للإنجيل",Countries:"البلدان","People groups":"الشعوب"},charts:{scriptureAny:"الكتاب المقدس (أي نوع)",fullBible:"الكتاب المقدس كاملاً",newTestament:"العهد الجديد",filmAny:"الفيلم (أي نوع)",nothingInPools:"لا شيء في المصادر التي جرى البحث فيها",nothingInPoolsLower:"لا شيء في المصادر التي جرى البحث فيها",noResourceInPools:"لم يُعثر على أي مورد في المصادر التي جرى البحث فيها",aResourceFound:"وُجد مورد",tabCoverage:"تغطية الموارد",tabGap:"أكبر الفجوات",keyScripture:"الكتاب المقدس",keyFilmStories:"الفيلم / القصص",keyAudioEtc:"صوتيات / عرض / تدريب",unresolvedCode:"رمز خارج ISO 639-3 — غير محسوم، لم يُقَس"}},of={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:"تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية."},nf={title:{adoption:"تقدم التبني",affinityBlocs:"كتل القرابة",doxaRegions:"مناطق Doxa",engagement:"تقدم الانخراط",gospelResources:"موارد الإنجيل",languageFamilies:"العائلات اللغوية",prayer:"تقدم الصلاة",upg100List:"قائمة UPG 100 الخاصة بي"},header:{collapsed:"وسيلة الإيضاح",peopleGroupFallback:"مجموعة الشعب",default:"مفتاح الخريطة"},prayer:{needsPrayer:"يحتاج إلى صلاة",hasPrayer:"لديه صلاة",fullPrayerCoverage:"تغطية صلاة كاملة"},progress:{title:"التقدم",covered:"{covered} من {total} مجموعة شعبية مغطاة بالصلاة · {pct}%",short:"{covered} من {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"يحتاج إلى انخراط",hasEngagement:"لديه انخراط"},adoption:{needsAdoption:"يحتاج إلى تبني",hasAdoption:"لديه تبني"},columns:{upgs:"UUPGs",population:"السكان",name:"الاسم"},footer:{total:"الإجمالي"},sortByUpgs:"ترتيب حسب UUPG",sortByPop:"ترتيب حسب السكان",colLabel:{religion:"ديانات UUPG",prayer:"حالة الصلاة",engagement:"حالة المشاركة",adoption:"حالة التبني",status:"الحالة"},titleBar:{legend:"مفتاح الخريطة",peopleGroups:"الشعوب",wagfRegions:"مناطق WAGF",languages:"اللغات"},tabInfo:{upg100Region:"المنطقة — ترتّب قوائم UPG-100 حسب منطقة العالم (أفريقيا، الهند، الشرق الأوسط، الصمّ، …). الأعداد هي مجموع UUPG والسكان لكل قائمة تحتها.",upg100Zone:"قوائم UPG-100 — كل واحدة هي قائمة صلاة للشعوب غير الموصول إليها في منطقة ما، وهي ما ترسمه الخريطة وتلوّنه. تُطبع كل قائمة ككُتيّب خاص بها.",upg100Group:"مجموعة شعبية — المجموعات غير الموصول إليها داخل القائمة، الأكثر حاجة للصلاة أولاً. كل نقطة على الخريطة هي واحدة منها."},a11y:{expandRow:"توسيع {label}",collapseRow:"طي {label}",clearSelection:"إلغاء التحديد"}},af={menuComingSoon:"القائمة قادمة قريباً",pinHint:{tapDot:"اضغط على نقطة ملوّنة — لا يزال هناك من يحتاج إلى الصلاة"},upg100WallHeading:"قائمتي UPG 100 — قوائم الصلاة والملصقات",upg100WallTag:"تعبئة للصلاة",upg100WallIntro:"وزّع مهمة الصلاة في مجموعات من خمسين ومئة — كما أطعم يسوع الخمسة آلاف (لوقا ٩:١٤). كل ملصق هو قائمة من 100 يمكنك أن تصلي بها وتطبعها وتعلّقها على الحائط — مصلّيًا لأجلهم باسم شعبهم."},sf={clusterByRegion:"حسب منطقة Doxa",clusterByLanguageFamily:"حسب العائلة اللغوية",clusterByGospelResource:"حسب مورد الإنجيل"},rf={country:{wagfRegion:"منطقة WAGF",wagfBlock:"كتلة WAGF",country:"الدولة",uupgCount:"عدد UUPG"}},lf={header:"دورة الصلاة الحالية",lap:"الدورة",upgs:"UUPGs",separator:" من "},cf={"%count% people groups in %countries% countries":"%count% مجموعة شعبية في %countries% دولة","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"تضم %region% %count% مجموعة بشرية في %countries% دولة. يشير لون كل نقطة إلى عدد الأشخاص الذين يصلّون من أجل تلك المجموعة البشرية.","1+ People Praying":"شخص واحد أو أكثر يصلّي","100+ People Praying":"أكثر من 100 شخص يصلّون",Adopted:"متبنَّاة","Adoption Progress":"تقدُّم التبنّي","All Regions":"جميع المناطق","Alternate Names":"الأسماء البديلة","Choose a region":"اختر منطقة","Clear All":"مسح الكل",Countries:"الدول","Countries in this region":"الدول في هذه المنطقة",Country:"الدولة",Engaged:"مُخْدُومَة","Engagement Progress":"تقدُّم الانخراط","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"كل مجموعة بشرية غير مبشرة تتبناها كنيسة ملتزمة بالصلاة والعطاء والإرسال","Exact Search":"بحث دقيق","Find unreached people groups by region and country.":"ابحث عن المجموعات البشرية غير المُبلَّغة حسب المنطقة والدولة.","Full Profile":"الملف الكامل",Goal:"الهدف","Hide Filters":"إخفاء المرشحات","Hide country posters":"إخفاء ملصقات الدولة",Intercessors:"المتشفعين","Load More":"تحميل المزيد","Loading results...":"النتائج قيد التحميل...",Map:"الخريطة","Mobilize 100+ people praying daily for each DOXA people group":"حشد أكثر من 100 شخص للصلاة يوميًا من أجل كل مجموعة بشرية من مجموعات دوكسا","No One Praying":"لا أحد يصلّي","No options found":"لم يتم العثور على أي خيارات","No poster has been generated for this country yet.":"لم يُنشأ أي ملصق لهذه الدولة بعد.","No unengaged people groups by 2033":"الهدف هو القضاء على جميع الشعوب الغير مخدومة روحيا بحلول عام 2033","Not Adopted":"لم يتم انتماؤه",Other:"أخرى","Page Not Found":"الصفحة غير موجودة","People Group":"مجموعة بشرية","People Groups":"مجموعات شعبية","People committed to praying":"الأشخاص الذين التزموا بالصلاة","Pick a region above, or click any dot to open that people group's country.":"اختر منطقة أعلاه، أو انقر على أي نقطة لفتح دولة تلك المجموعة البشرية.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"اختر منطقة أو دولة من تبويب قائمة المناطق لتضييق نطاق لوحة المعلومات هذه.",Population:"عدد السكان","Prayer Coverage":"تغطية الصلاة","Prayer coverage progress":"تقدم تغطية الصلاة","Region Dashboards":"لوحات معلومات المناطق","Region dashboard":"لوحة معلومات المنطقة",Regions:"المناطق","Regions List":"قائمة المناطق",Religion:"الدين","Search names, country/continent, religions...":"ابحث عن الأسماء، الدولة/القارة، الأديان...","See %region% dashboard":"عرض لوحة معلومات %region%","See All":"عرض جميع العناصر",Select:"اختر","Select View":"اختر العرض","Show Filters":"إظهار عوامل التصفية","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"توجد %count% مجموعات بشرية في %country%. تحقق من الخريطة لمعرفة المجموعات البشرية الواقعة على حدود هذه الدولة أيضًا.",Total:"المجموع","Type to search...":"اكتب ما تريد البحث عنه...","Unengaged people groups":"المجموعات الشعبية غير المَخْدُومَة","View country posters":"عرض ملصقات الدولة",Views:"العروض","WAGF Block":"كتلة WAGF","WAGF Region":"منطقة WAGF","people groups adopted":"مجموعات شعبية متبنَّاة","people groups engaged":"مجموعات شعبية مُخْدُومَة","Outside this region":"خارج هذه المنطقة",Pray:"صلّي","Loading region dashboards…":"جارٍ تحميل لوحات المناطق…","No regions found.":"لم يتم العثور على مناطق.","Region data could not be loaded. This is a connection problem, not a filter.":"تعذّر تحميل بيانات المناطق. هذه مشكلة في الاتصال، وليست تصفية.","People groups could not be loaded. This is a connection problem, not a filter.":"تعذّر تحميل الشعوب. هذه مشكلة في الاتصال، وليست تصفية.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"تعذّر تشغيل الخريطة. هذه مشكلة في رمز الخريطة أو في الاتصال، وليست تصفية — والأرقام أعلاه غير متأثرة."},uf={placeholder:"شعب، مكان، لغة، ديانة",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"},upg100Placeholder:"ابحث عن شعب أو قائمة UPG-100 أو منطقة…"},pf={title:"استوديو الإضافات",navLabel:"الإضافات حسب القدرة",countLabel:"{bundles} حزمة · {elements} إضافة مدرجة هنا",changeLanguage:"تغيير اللغة",copyEmbed:"نسخ رمز التضمين",copy:"نسخ",copied:"تم النسخ",scriptEmbed:"تضمين عبر سكربت",loading:"جارٍ تحميل {name}…",couldNotLoad:"تعذّر تحميل {name}.",chooseElement:"اختر إضافة من القائمة.",filterPlaceholder:"تصفية الإضافات",collapseAll:"طي الكل",noMatch:"لا توجد إضافة تطابق «{query}».",openSection:"فتح {cap}، {label}",part:"جزء",noStandalone:"بلا صفحة مستقلة",cap5:"هيكل التطبيق",cap4:"مركّب",cap3:"متعدد العروض",cap2:"إعداد مسبق",cap1:"مفرد",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي",partOf:"جزء من {name}، غير منشور بمفرده",mapToken:"رمز الخريطة",tokenPaste:"رمز Mapbox العام (pk.…)",tokenUrlLabel:"…أو رابط خدمة الرموز",tokenApply:"استخدام",tokenClear:"مسح",tokenStoredHere:"يُحفظ في هذا المتصفح فقط.",tokenSourceYours:"يُستخدم رمزك",tokenSourceUrl:"يُستخدم رمز من {url}",tokenSourceBuilt:"يُستخدم الرمز المضمَّن في هذه الصفحة",tokenSourceNone:"لا يوجد رمز Mapbox: لا يمكن تحميل خرائط Mapbox (خرائط MapLibre لا تحتاج رمزًا)",tokenSecret:"هذا رمز سري (sk.…). الصق رمزًا عامًا (pk.…): هذه الصفحة عامة.",tokenNotPk:"يبدأ رمز Mapbox العام بـ pk.",tokenUrlFailed:"تعذّر الحصول على رمز من هذا الرابط: {why}",settings:"الإعدادات",mapEngine:"محرّك الخرائط",engineDefault:"الافتراضي لكل خريطة",engineMapboxNote:"يحتاج إلى رمز",engineMaplibreNote:"لا يحتاج إلى رمز",tokenNotNeeded:"تم اختيار MapLibre: خرائطه لا تحتاج إلى رمز Mapbox"},df={prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة",upg100Region:"المنطقة",upg100Zone:"قوائم UPG-100",upg100Group:"مجموعة شعبية",selectView:"اختر العرض",views:"العروض",prayerResources:"موارد الصلاة",map:"الخريطة"},gf={kicker:"DOXA · الرؤية",title:"كل شعب. كل مكان.",tagline:"من كل مجموعات الشعوب في العالم إلى التي تصلي لأجلها DOXA، محسوبةً من البيانات.",funnelLabel:"من كل مجموعات الشعوب إلى مجموعات شعوب DOXA",allLabel:"مجموعات الشعوب",allNote:"كل مجموعة شعب، في كل بلد تعيش فيه",unreachedLabel:"غير المُبشَّرة",unreachedNote:"أقل من 2% إنجيليون",frontierLabel:"الحدودية",frontierNote:"أقل من 0.1% إنجيليون",doxaLabel:"مجموعات شعوب DOXA",doxaNote:"{frontier} منها حدودية",people:"{n} نسمة",sources:"مجموعات الشعوب: {imb}، بيانات {date}. قائمة DOXA: ‏pray.doxa.life، {date2}.",howCounted:"كيف تُحسب هذه الأرقام",ruleAll:"كل صف في بيانات IMB لمجموعات الشعوب: مجموعة شعب واحدة في بلد واحد.",ruleUnreached:"أولوية الضياع لدى IMB من 0 إلى 2: أقل من 2% إنجيليون.",ruleFrontier:"أولوية الضياع لدى IMB رقم 0: أقل من 0.1% إنجيليون. جزء من غير المُبشَّرة.",ruleDoxa:"كل مجموعة في قائمة صلاة DOXA، مطابَقة مع بيانات IMB حسب الشعب والبلد. ليست كلها حدودية."},ff={title:"Alle Volksgruppen",locations:"{n} Standorte (Gruppe × Land)",doxa:"DOXA-Volksgruppen",frontier:"Frontier — noch nichts begonnen",unreached:"Unerreicht — Arbeit beginnt",reached:"Erreicht — Gemeinde ist da",hint:"Zeile anklicken, um alle zu sehen · erneut klicken für alle",loading:"Alle Volksgruppen werden geladen…",loadError:"Die Karte konnte nicht geladen werden.",pray:"Für sie beten →",population:"Einw. {n}"},hf={backToLegend:"Zurück zur Legende",closeDetailView:"Detailansicht schließen",collapseLegend:"Legende einklappen",expandLegend:"Legende ausklappen",toggleLegend:"Legende ein- oder ausblenden"},mf={prayForThem:"Für sie beten",adoptThem:"Sie adoptieren",moreInfo:"Mehr Infos",zoomIn:"Vergrößern",zoomOut:"Verkleinern",switchToLightMode:"Zum hellen Modus wechseln",switchToDarkMode:"Zum dunklen Modus wechseln",resetView:"Ansicht zurücksetzen",toggleFullscreen:"Vollbild umschalten",aboutThisMap:"Über diese Karte",closeMenu:"Menü schließen",reloadMap:"Karte neu laden",showClusters:"Cluster anzeigen",clusterSettings:"Cluster-Einstellungen",startAutoFly:"Auto-Flug starten",stopFlight:"Flug stoppen",speedLabel:"Geschwindigkeit:",speedOption:{slow:"Langsam",normal:"Normal",fast:"Schnell"},shareEmbed:"Teilen und einbetten",posterMap:"Posterkarte",prayerList:"Gebetsliste",cardDeck:"Kartenset",printOptions:"Druckoptionen",showOnMap:"Auf der Karte zeigen",close:"Schließen",showOnMapAria:"{label} auf der Karte zeigen",cardStockAria:"Größe der Gebetskarte",previewPrintPoster:"Vorschau und Druck des Posters {label}",share:"Teilen",shareSteps:["Binde diese Karte auf deiner Website ein","Erstelle eine Liste der Websites in deiner Stadt","Zeige ihnen, wie sie sie ebenfalls einbinden","Zeige ihnen, wie sie es anderen beibringen","Lasst uns Karten überall vermehren – für Jesus!"],clearSelection:"Auswahl aufheben",noOptions:"Keine Optionen gefunden",renderingLocal:"Ein druckfähiges Bild wird in deinem Browser erzeugt — es wird nichts hochgeladen.",postersPerRow:"Poster pro Zeile"},$f={title:"Internetzugang dort, wo Volksgruppen ohne Engagement leben",bands:{yes:"verbunden 60%+",partial:"teilweise 25–59%",no:"gering, unter 25%",unknown:"nicht gemessen"},peopleGroup:"Volksgruppe",caveat:"LANDESWEITE Zahlen (Weltbank). Konnektivität je Stadt ist nicht öffentlich verfügbar — schließen Sie nicht vom Land auf eine Stadt.",sheet:{close:"Schließen",ai:"Diese Daten wurden durch KI-gestützte Recherche gefunden — sie können falsche Angaben enthalten.",dismiss:"Ausblenden",internetUsers:"Internetnutzer",measured:"Gemessen",mobilePer100:"Mobilfunk pro 100",peopleGroups:"Volksgruppen",topPlatform:"Wichtigste Plattform",unknown:"unbekannt",carriers:"Netzbetreiber & ISPs ({n})",socialPlatforms:"Soziale Plattformen",note:"Landesweite Zahlen, keine Messungen je Stadt. Betreibernamen sind ASN-Registerinhaber — darunter neben ISPs auch Banken und Universitäten; die Einstufung als Netzbetreiber ist daher eine Namensheuristik, keine geprüfte Klassifizierung."}},bf={research_controls:"Forschungssteuerung",clustering:"Clustering",filters:"Filter",pin_dim:"Pin-Transparenz",export_poster:"Poster exportieren…",reload_data:"Daten neu laden",off:"Aus",native:"Nativ",mst:"MST",network:"Netzwerk",off_desc:"Jeden Pin einzeln anzeigen",native_desc:"Mapbox-Kreiscluster (am schnellsten)",mst_desc:"Affinitätsnetze über minimalen Spannbaum",network_desc:"Verbindungslinien zum nächsten Nachbarn",search_languages:"Sprachen suchen…",search_religions:"Religionen suchen…",reset_all:"Alles zurücksetzen",no_languages:"Noch keine Sprachen geladen",no_religions:"Noch keine Religionen geladen",unadopted:"Nicht adoptiert",min:"min",max:"max",adopted:"Adoptiert",adoption:"Adoption",engaged:"Engagiert",engagement:"Engagement",unengaged:"Braucht Engagement",language:"Sprache",religion:"Religion",population:"Bevölkerung",any:"Alle",active_count:"{n} aktiv",prayer_status:"Gebetsstatus",close:"Schließen",clear:"Zurücksetzen",map_controls:"Kartensteuerung"},_f={bloc:"Affinitätsblock",gospel_access:"Zugang zum Evangelium",people:"Völker",people_name:"Volk (Name)",praying:"Betend",religion_family:"Religionsfamilie",search_language:"Sprache suchen",search_people:"Volk suchen",search_place:"Ort suchen",search_religion:"Religion suchen",upgs_in_scope:"UPGs im Bereich",countries_touched:"berührte Länder",unreached:"unerreicht",sum_population:"Σ Bevölkerung",sum_praying:"Σ Betende",charts:"Diagramme",table:"Tabelle",cluster:"Cluster",country:"Land",engagement:"Engagement",language:"Sprache",language_family:"Sprachfamilie",people_group:"Volk",population:"Bevölkerung",prayer:"Gebet",region:"Region",religion:"Religion",status:"Status",adopted:"Adoptiert",filters:"Filter",gospel_resources:"Evangeliumsressourcen",map:"Karte",search_placeholder:"Volksgruppen, Orte, Sprachen, Religionen suchen…",any:"Alle",active_count:"{n} aktiv",prayer_status:"Gebetsstatus",map_controls:"Kartensteuerung",close:"Schließen",clear:"Zurücksetzen",dashboard_title:"Big-Picture-Forschungsdashboard",align_dashboard:"Layout ausrichten",align_dashboard_tip:"Das Dashboard-Layout auf die Standardausrichtung zurücksetzen",selected:"Ausgewählt",world:"Welt",vertical_legend:"Vertikale Legende",groups_in_scope:"Volksgruppen im Bereich",filter_by:"Filtern nach",remove_filter:"Filter entfernen",groups:"Volksgruppen",expand:"Aufklappen",collapse:"Zuklappen",place:"Ort"},yf={labels:{country:"Land:",population:"Bevölkerung:",language:"Sprache:",religion:"Religion:",languageFamily:"Sprachfamilie:",peopleCommitted:"Zum Gebet verpflichtet:"},messages:{noDescription:"Keine Beschreibung verfügbar."}},vf={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"Die erläuternden Hinweise unten sind auf Englisch."},mode:{gap:"Lücke",coverage:"Gefundene Ressourcen"},search:{placeholder:"Volksgruppe, Sprache oder ISO-Code suchen",clear:"Suche löschen",none:"Nichts passt zu diesem Namen, dieser Sprache oder diesem Code.",placeholderShort:"Gruppe, Sprache oder ISO-Code"},legend:{title:"Unerreichte Volksgruppen ohne gefundene Evangeliums-Ressource",band60:"60 %+ ohne jede Ressource",band30:"30–59 %",bandSome:"einige Gruppen",bandAll:"alle Gruppen haben etwas",tier2:"Bibeltext und Film",tier1:"etwas gefunden",tier0:"nichts gefunden",hnr:"können hören, kein Text",showAll:"Alle Gruppen anzeigen",titleCoverage:"Unerreichte Volksgruppen mit einer gefundenen Evangeliums-Ressource",cov80:"80 %+ haben etwas",cov50:"50–79 %",cov1:"1–49 %",cov0:"für keinen etwas gefunden",tallyEach:"Jeder",tallyIs:"ist EINE Volksgruppe —",tallyOf:"davon,",tallyLink:"mit einem Link",doxa0:"alle haben etwas",doxa1:"1–4 ohne",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 erreicht",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Doxa-Volksgruppen auf dieser Karte",notPlaced:"auf der Liste, noch nicht verortet",outOfScope:"keine Doxa-Volksgruppen — nicht eingefärbt"},tabs:{groups:"Größte Gruppen",countries:"Nach Land",regions:"Nach Region",noprayer:"Niemand betet",hnr:"Hören ja, Text nein"},stat:{language:"Sprache",population:"Bevölkerung",countries:"Länder",peopleGroups:"Volksgruppen",noResource:"Keine Ressource gefunden",peopleAffected:"Betroffene Menschen",haveScripture:"Haben Bibeltext",haveFilm:"Haben Film",haveAudio:"Haben Hörbibel",signLanguages:"Gebärdensprachen",growingUnreached:"Wachsend & unerreicht",deathsDay:"Geschätzte Todesfälle/Tag"},sheet:{ownLanguage:"In ihrer eigenen Sprache",close:"Schließen",loading:"Ressourcen werden geladen…",pray:"Betet für",everyResource:"Alle Ressourcen auf",alsoSpeak:"Sprechen ebenfalls"},res:{scripture:"Bibeltext",film:"Film",audio:"Audio",bibleVideo:"Bibelvideo",bibleStories:"Open Bible Stories",gospelAudio:"Evangeliums-Audio",gospelPresentation:"Evangeliums-Darstellung",scriptureEarth:"Scripture Earth",training:"Jüngerschaftstraining",jesusFilm:"JESUS Film",audioScripture:"Audio-Bibeltext",bibleStoriesPlain:"Bibelgeschichten"},state:{noneFound:"nichts gefunden",noneAtFcbh:"nichts bei FCBH",noneAtGrn:"nichts bei GRN",notInZume:"nicht in Zumes 54",linkChecked:"Link geprüft",unchecked:"ungeprüft",linkDead:"Link tot",wrongLanguage:"falsche Sprache",varietyNotStated:"(Varietät nicht angegeben)",inLanguage:"auf"},guide:{dotVsCountry:"Ein Punkt ist EINE Volksgruppe von Doxa mit ihrer eigenen Sprache; ein Land ist die ANZAHL dieser Gruppen.",noneFoundShort:"„Nichts gefunden“ heißt: nicht in den geprüften Quellen — nie ein Beweis, dass es nichts gibt.",tapCountry:"Tippen Sie auf ein Land, um die Ressourcen Gruppe für Gruppe zu sehen."},tables:{title:"Evangeliums-Ressourcen — Daten",showing:"Zeige",of:"von",for:"für",filteredTo:"Gefiltert nach",showAll:"Alle Ressourcen zeigen",t_doxa:"Doxa — Zugang zum Evangelium",t_links:"Jede Ressource + Link",t_nothing:"Wo nichts gefunden wurde",t_countrygap:"Die Lücke nach Land",t_translation:"Hören ja, Text nein",t_translationcountry:"Wo übersetzen",t_gaps:"Lücken & Chancen",t_bridges:"Stadt-Brücken",t_deaf:"Die Gehörlosen-Lücke",t_resources:"Ressourcen nach Volksgruppe",t_languages:"Sprachen nach Land",t_growth:"Zugang vs. Bevölkerungswachstum"},pages:{listTitle:"Evangeliums-Ressourcen nach Sprache",chartsTitle:"Evangeliums-Ressourcen — nach Sprache",loadingTables:"Ressourcentabellen werden geladen…"},list:{noText:"Kein Bibeltext",hasScripture:"Hat Bibeltext",allLanguages:"Alle Sprachen",peopleGroup:"Volksgruppe",peopleGroups:"Volksgruppen",scriptureHere:"Bibeltext in dieser Sprache"},columns:{"People group":"Volksgruppe",Country:"Land",Region:"Region",Language:"Sprache",Population:"Bevölkerung",Religion:"Religion","Gospel access":"Zugang zum Evangelium",Resources:"Ressourcen",Scripture:"Bibeltext","Bible video":"Bibelvideo","Gospel presentation":"Evangeliums-Darstellung",Countries:"Länder","People groups":"Volksgruppen"},charts:{scriptureAny:"Bibeltext (beliebig)",fullBible:"Vollbibel",newTestament:"Neues Testament",filmAny:"Film (beliebig)",nothingInPools:"Nichts in den geprüften Quellen gefunden",nothingInPoolsLower:"nichts in den geprüften Quellen gefunden",noResourceInPools:"keine Ressource in den geprüften Quellen gefunden",aResourceFound:"eine Ressource gefunden",tabCoverage:"Ressourcenabdeckung",tabGap:"Größte Lücken",keyScripture:"Bibeltext",keyFilmStories:"Film / Geschichten",keyAudioEtc:"Audio / Präsentation / Schulung",unresolvedCode:"Code außerhalb ISO 639-3 — ungeklärt, nicht gemessen"}},kf={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."},wf={title:{adoption:"Adoptionsfortschritt",affinityBlocs:"Affinitätsblöcke",doxaRegions:"Doxa-Regionen",engagement:"Engagement-Fortschritt",gospelResources:"Evangeliumsressourcen",languageFamilies:"Sprachfamilien",prayer:"Gebetsfortschritt",upg100List:"Meine UPG-100-Liste"},header:{collapsed:"Legende",peopleGroupFallback:"Volksgruppe",default:"Legende"},prayer:{needsPrayer:"Braucht Gebet",hasPrayer:"Hat Gebet",fullPrayerCoverage:"Vollständige Gebetsabdeckung"},progress:{title:"Fortschritt",covered:"{covered} von {total} Volksgruppen im Gebet abgedeckt · {pct}%",short:"{covered} von {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Braucht Engagement",hasEngagement:"Hat Engagement"},adoption:{needsAdoption:"Braucht Adoption",hasAdoption:"Hat Adoption"},columns:{upgs:"UUPGs",population:"Bevölkerung",name:"Name"},footer:{total:"Gesamt"},sortByUpgs:"Nach UUPGs sortieren",sortByPop:"Nach Bevölkerung sortieren",colLabel:{religion:"UUPG-Religionen",prayer:"Gebetsstatus",engagement:"Engagement-Status",adoption:"Adoptionsstatus",status:"Status"},titleBar:{legend:"Legende",peopleGroups:"Völker",wagfRegions:"WAGF-Regionen",languages:"Sprachen"},tabInfo:{upg100Region:"Region — sortiert die UPG-100-Listen nach Weltgegend (Afrika, Indien, Naher Osten, Gehörlose, …). Die Zahlen sind die UUPGs und die Bevölkerung aller darunterliegenden Listen zusammen.",upg100Zone:"UPG-100-Listen — jede ist eine Gebetsliste der unerreichten Volksgruppen eines Gebiets und das, was die Karte zeichnet und einfärbt. Jede Liste wird als eigenes Heft gedruckt.",upg100Group:"Volksgruppe — die einzelnen unerreichten Gruppen innerhalb einer Liste, größter Gebetsbedarf zuerst. Jeder Kartenpunkt ist eine davon."},a11y:{expandRow:"{label} ausklappen",collapseRow:"{label} einklappen",clearSelection:"Auswahl aufheben"}},xf={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",upg100WallIntro:"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 mit dem Namen ihrer Volksgruppe beten."},Sf={clusterByRegion:"Nach Doxa-Region",clusterByLanguageFamily:"Nach Sprachfamilie",clusterByGospelResource:"Nach Evangeliumsressource"},Lf={country:{wagfRegion:"WAGF-Region",wagfBlock:"WAGF-Block",country:"Land",uupgCount:"Anzahl UUPG"}},Af={header:"AKTUELLE GEBETSRUNDE",lap:"Runde",upgs:"UUPGs",separator:" von "},Pf={"%count% people groups in %countries% countries":"%count% Volksgruppen in %countries% Ländern","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% hat %count% Volksgruppen in %countries% Ländern. Die Farbe jedes Punktes zeigt, wie viele Menschen für diese Volksgruppe beten.","1+ People Praying":"1+ Menschen beten","100+ People Praying":"100+ Menschen beten",Adopted:"Adoptiert","Adoption Progress":"Adoptionsfortschritt","All Regions":"Alle Regionen","Alternate Names":"Alternative Namen","Choose a region":"Region auswählen","Clear All":"Alle löschen",Countries:"Länder","Countries in this region":"Länder in dieser Region",Country:"Land",Engaged:"Engagiert","Engagement Progress":"Fortschritt der Arbeit vor Ort","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Jede einzelne der völlig unerreichten Volksgruppen soll von einer Ortsgemeinde adoptiert werden, durch Beten, Geben und Senden","Exact Search":"Exakte Suche","Find unreached people groups by region and country.":"Finde unerreichte Volksgruppen nach Region und Land.","Full Profile":"Vollständiges Profil",Goal:"Ziel","Hide Filters":"Filter ausblenden","Hide country posters":"Länderposter ausblenden",Intercessors:"Fürbitter","Load More":"Mehr laden","Loading results...":"Ergebnisse werden geladen...",Map:"Karte","Mobilize 100+ people praying daily for each DOXA people group":"Mobilisiere 100+ Menschen, die täglich für jede DOXA-Volksgruppe beten","No One Praying":"Niemand betet","No options found":"Keine Standorte gefunden","No poster has been generated for this country yet.":"Für dieses Land wurde noch kein Poster erstellt.","No unengaged people groups by 2033":"Dass es bis 2033 keine völlig unerreichte Volksgruppe mehr gibt","Not Adopted":"noch nicht adoptiert",Other:"Andere","Page Not Found":"Seite nicht gefunden","People Group":"Personengruppe","People Groups":"Volksgruppen","People committed to praying":"Menschen, die sich dem Beten verpflichtet haben","Pick a region above, or click any dot to open that people group's country.":"Wählen Sie oben eine Region aus oder klicken Sie auf einen Punkt, um das Land dieser Volksgruppe zu öffnen.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Wählen Sie im Tab „Regionenliste“ eine Region oder ein Land aus, um dieses Dashboard einzugrenzen.",Population:"Bevölkerung","Prayer Coverage":"Gebetsabdeckung","Prayer coverage progress":"Fortschritt der Gebetsabdeckung","Region Dashboards":"Regionen-Dashboards","Region dashboard":"Regions-Dashboard",Regions:"Regionen","Regions List":"Regionenliste",Religion:"Primäre Religion","Search names, country/continent, religions...":"Suche nach Namen, Land/Kontinent, Religionen...","See %region% dashboard":"Dashboard anzeigen: %region%","See All":"Alle anzeigen",Select:"Auswählen","Select View":"Ansicht auswählen","Show Filters":"Filter anzeigen","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"In %country% gibt es %count% Volksgruppen. Sieh auch auf der Karte nach den Volksgruppen an der Grenze dieses Landes.",Total:"Gesamt","Type to search...":"Geben Sie etwas ein, um danach zu suchen","Unengaged people groups":"Unberührte Volksgruppen","View country posters":"Länderposter ansehen",Views:"Ansichten","WAGF Block":"WAGF-Block","WAGF Region":"WAGF-Region","people groups adopted":"adoptierte Volksgruppen","people groups engaged":"engagierte Volksgruppen","Outside this region":"Außerhalb dieser Region",Pray:"Ich bete","Loading region dashboards…":"Regions-Dashboards werden geladen…","No regions found.":"Keine Regionen gefunden.","Region data could not be loaded. This is a connection problem, not a filter.":"Regionsdaten konnten nicht geladen werden. Das ist ein Verbindungsproblem, kein Filter.","People groups could not be loaded. This is a connection problem, not a filter.":"Volksgruppen konnten nicht geladen werden. Das ist ein Verbindungsproblem, kein Filter.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"Die Karte konnte nicht starten. Das ist ein Karten-Token- oder Verbindungsproblem, kein Filter — die Zahlen oben sind davon nicht betroffen."},Ef={placeholder:"Volk, Ort, Sprache, Religion",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…"},Cf={title:"Plugin-Studio",navLabel:"Plugins nach Fähigkeit",countLabel:"{bundles} Bundles · {elements} Plugins hier aufgeführt",changeLanguage:"Sprache ändern",copyEmbed:"Einbettung kopieren",copy:"Kopieren",copied:"Kopiert",scriptEmbed:"Skript-Einbettung",loading:"{name} wird geladen…",couldNotLoad:"{name} konnte nicht geladen werden.",chooseElement:"Wählen Sie ein Plugin aus der Liste.",filterPlaceholder:"Plugins filtern",collapseAll:"Alle einklappen",noMatch:"Kein Plugin entspricht „{query}“.",openSection:"{cap} öffnen, {label}",part:"Teil",noStandalone:"keine eigene Seite",cap5:"App-Shell",cap4:"Komposit",cap3:"Mehrfachansicht",cap2:"Voreinstellung",cap1:"Einzeln",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen",partOf:"Teil von {name}, nicht eigenständig veröffentlicht",mapToken:"Karten-Token",tokenPaste:"Öffentlicher Mapbox-Token (pk.…)",tokenUrlLabel:"…oder die URL eines Token-Dienstes",tokenApply:"Verwenden",tokenClear:"Löschen",tokenStoredHere:"Nur in diesem Browser gespeichert.",tokenSourceYours:"Ihr Token wird verwendet",tokenSourceUrl:"Token von {url} wird verwendet",tokenSourceBuilt:"Der in diese Seite eingebaute Token wird verwendet",tokenSourceNone:"Kein Mapbox-Token: Mapbox-Karten können nicht laden (MapLibre-Karten brauchen keinen)",tokenSecret:"Das ist ein geheimer Token (sk.…). Fügen Sie einen öffentlichen ein (pk.…): Diese Seite ist öffentlich.",tokenNotPk:"Ein öffentlicher Mapbox-Token beginnt mit pk.",tokenUrlFailed:"Von dieser URL kam kein Token: {why}",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"},Nf={prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land",upg100Region:"Region",upg100Zone:"UPG-100-Listen",upg100Group:"Volksgruppe",selectView:"Ansicht wählen",views:"Ansichten",prayerResources:"Gebetsressourcen",map:"Karte"},Tf={kicker:"DOXA · Vision",title:"Jedes Volk. Jeder Ort.",tagline:"Von allen Volksgruppen der Welt bis zu denen, für die DOXA betet, aus den Daten gezählt.",funnelLabel:"Von allen Volksgruppen zu den DOXA-Volksgruppen",allLabel:"Volksgruppen",allNote:"jede Volksgruppe in jedem Land, in dem sie lebt",unreachedLabel:"Unerreicht",unreachedNote:"unter 2 % Evangelikale",frontierLabel:"Frontier",frontierNote:"unter 0,1 % Evangelikale",doxaLabel:"DOXA-Volksgruppen",doxaNote:"{frontier} davon sind Frontier",people:"{n} Menschen",sources:"Volksgruppen: {imb}, Datenstand {date}. DOXA-Liste: pray.doxa.life, {date2}.",howCounted:"So wird gezählt",ruleAll:"Jede Zeile der IMB-Volksgruppendaten: eine Volksgruppe in einem Land.",ruleUnreached:"IMB-Lostness-Priorität 0 bis 2: weniger als 2 % Evangelikale.",ruleFrontier:"IMB-Lostness-Priorität 0: weniger als 0,1 % Evangelikale. Eine Teilmenge der Unerreichten.",ruleDoxa:"Jede Gruppe auf der DOXA-Gebetsliste, den IMB-Daten nach Volk und Land zugeordnet. Nicht alle sind Frontier."},Rf={title:"All People Groups",locations:"{n} group–country locations",doxa:"DOXA people groups",frontier:"Frontier — nothing started",unreached:"Unreached — work beginning",reached:"Reached — church is there",hint:"Click a row to see all of them · click again for everything",loading:"Loading every people group…",loadError:"The map could not be loaded.",pray:"Pray for them →",population:"pop {n}"},Mf={backToLegend:"Back to Legend",closeDetailView:"Close detail view",collapseLegend:"Collapse legend",expandLegend:"Expand legend",toggleLegend:"Show or hide the legend"},Of={prayForThem:"Pray for them",adoptThem:"Adopt",moreInfo:"More info",zoomIn:"Zoom in",zoomOut:"Zoom out",switchToLightMode:"Switch to light mode",switchToDarkMode:"Switch to dark mode",resetView:"Reset view",toggleFullscreen:"Toggle fullscreen",aboutThisMap:"About this map",closeMenu:"Close menu",reloadMap:"Reload Map",showClusters:"Show Clusters",clusterSettings:"Cluster Settings",startAutoFly:"Start Auto Fly",stopFlight:"Stop Flight",speedLabel:"Speed:",speedOption:{slow:"Slow",normal:"Normal",fast:"Fast"},shareEmbed:"Share & embed",shareSteps:["Embed this map on your site","Create a list of the websites in your city","Train them to embed it too","Train them to train others to embed it too","Multiply maps everywhere for Jesus!"],share:"Share",posterMap:"Poster Map",prayerList:"Prayer List",cardDeck:"Card Deck",printOptions:"Print Options",showOnMap:"Show on map",close:"Close",showOnMapAria:"Show {label} on the map",cardStockAria:"Prayer card size",previewPrintPoster:"Preview & print the {label} poster",clearSelection:"Clear selection",noOptions:"No options found",renderingLocal:"Rendering a print-quality image in your browser — nothing is uploaded.",postersPerRow:"Posters per row"},Ff={title:"Internet access where unengaged people groups live",bands:{yes:"connected 60%+",partial:"partial 25–59%",no:"low, under 25%",unknown:"not measured"},peopleGroup:"people group",caveat:"NATIONAL figures (World Bank). Per-city connectivity is not publicly available — do not read a city off a country.",sheet:{close:"Close",ai:"Data was found by AI deep research — it is subject to false information.",dismiss:"Dismiss",internetUsers:"Internet users",measured:"Measured",mobilePer100:"Mobile per 100",peopleGroups:"People groups",topPlatform:"Top platform",unknown:"unknown",carriers:"Carriers & ISPs ({n})",socialPlatforms:"Social platforms",note:"National figures, not city measurements. Carrier names are ASN registry holders — that set includes banks and universities as well as ISPs, so the carrier flag is a name heuristic, not a verified classification."}},If={research_controls:"Research controls",clustering:"Clustering",filters:"Filters",pin_dim:"Pin dim",export_poster:"Export poster…",reload_data:"Reload data",off:"Off",native:"Native",mst:"MST",network:"Network",off_desc:"Show every pin individually",native_desc:"Mapbox circle clusters (fastest)",mst_desc:"Minimum-spanning-tree affinity webs",network_desc:"Nearest-neighbor connection lines",search_languages:"Search languages…",search_religions:"Search religions…",reset_all:"Reset all",no_languages:"No languages loaded yet",no_religions:"No religions loaded yet",unadopted:"Unadopted",min:"min",max:"max",adopted:"Adopted",adoption:"Adoption",engaged:"Engaged",engagement:"Engagement",unengaged:"Unengaged",language:"Language",religion:"Religion",population:"Population",any:"Any",active_count:"{n} active",prayer_status:"Prayer Status",close:"Close",clear:"Clear",map_controls:"Research map controls"},Df={bloc:"Bloc",gospel_access:"Gospel Access",people:"People",people_name:"People (name)",praying:"Praying",religion_family:"Religion Family",search_language:"Search language",search_people:"Search people",search_place:"Search place",search_religion:"Search religion",upgs_in_scope:"UPGs in scope",countries_touched:"countries touched",unreached:"unreached",sum_population:"Σ population",sum_praying:"Σ praying",charts:"Charts",table:"Table",cluster:"Cluster",country:"Country",engagement:"Engagement",language:"Language",language_family:"Language Family",people_group:"People Group",population:"Population",prayer:"Prayer",region:"Region",religion:"Religion",status:"Status",adopted:"Adopted",filters:"Filters",gospel_resources:"Gospel Resources",map:"Map",search_placeholder:"Search people groups, place, language, religion…",any:"Any",active_count:"{n} active",prayer_status:"Prayer Status",map_controls:"Research map controls",close:"Close",clear:"Clear",dashboard_title:"Big Picture Research Dashboard",align_dashboard:"Align Dashboard",align_dashboard_tip:"Reset the dashboard layout to its default alignment",selected:"Selected",world:"World",vertical_legend:"Vertical Legend",groups_in_scope:"groups in scope",filter_by:"Filter by",remove_filter:"Remove filter",groups:"groups",expand:"Expand",collapse:"Collapse",place:"Place"},Uf={labels:{country:"Country:",population:"Population:",language:"Language:",religion:"Religion:",languageFamily:"Language Family:",peopleCommitted:"Committed to pray:"},messages:{noDescription:"No description available."}},Gf={_note:'SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file: it carries doctrinal and statistical precision — which pools were searched, what "nothing found" does and does not claim, why Open Bible Stories is not Scripture — and a mistranslated caveat there would read as authoritative. `prose.english` is the one translated line that says so. When a human-reviewed translation of the prose exists, it gets its own area file and that line comes out.',prose:{english:"Explanatory notes below are in English."},mode:{gap:"Gap",coverage:"Resources found"},search:{placeholder:"Find a people group, language or ISO code",clear:"Clear search",none:"Nothing matches that name, language or code.",placeholderShort:"Group, language or ISO code"},legend:{title:"Unengaged groups with no gospel resource found",band60:"60%+ with nothing found",band30:"30–59%",bandSome:"some groups",bandAll:"all groups have some",tier2:"Scripture and film",tier1:"some resource found",tier0:"nothing found",hnr:"can hear it, no text found",showAll:"Show all groups",titleCoverage:"Unengaged groups with some gospel resource found",cov80:"80%+ have something found",cov50:"50–79%",cov1:"1–49%",cov0:"nothing found for any",tallyEach:"Each",tallyIs:"is ONE people group —",tallyOf:"of them,",tallyLink:"with a link",doxa0:"all have something",doxa1:"1–4 with nothing",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 reached",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Doxa people groups on this map",notPlaced:"on the roster, not yet placed",outOfScope:"no Doxa people groups — not coloured"},tabs:{groups:"Largest groups",countries:"By country",regions:"By region",noprayer:"Nobody praying",hnr:"Can hear, no text"},stat:{language:"Language",population:"Population",countries:"Countries",peopleGroups:"People groups",noResource:"No resource found",peopleAffected:"People affected",haveScripture:"Have scripture",haveFilm:"Have film",haveAudio:"Have audio Scripture",signLanguages:"Sign languages",growingUnreached:"Growing & unreached",deathsDay:"Est. deaths/day"},sheet:{ownLanguage:"In their own language",close:"Close",loading:"Loading resources…",pray:"Pray for",everyResource:"Every resource in",alsoSpeak:"Also speak"},res:{scripture:"Scripture",film:"Film",audio:"Audio",bibleVideo:"Bible video",bibleStories:"Open Bible Stories",gospelAudio:"Gospel audio",gospelPresentation:"Gospel presentation",scriptureEarth:"Scripture Earth",training:"Discipleship training",jesusFilm:"JESUS Film",audioScripture:"Audio Scripture",bibleStoriesPlain:"Bible Stories"},state:{noneFound:"none found",noneAtFcbh:"none found at FCBH",noneAtGrn:"none found at GRN",notInZume:"not in Zume's 54",linkChecked:"link checked",unchecked:"unchecked",linkDead:"link dead",wrongLanguage:"wrong language",varietyNotStated:"(variety not stated)",inLanguage:"in"},guide:{dotVsCountry:"A dot is ONE of Doxa's people groups and its own language; a country is a COUNT of those groups.",noneFoundShort:"“None found” means not present in the pools this build checked — never proof that nothing exists.",tapCountry:"Tap a country to see the actual resources, group by group."},tables:{title:"Gospel Resources — Data",showing:"Showing",of:"of",for:"for",filteredTo:"Filtered to",showAll:"Show all resources",t_doxa:"Doxa — Gospel Access",t_links:"Every Resource + Link",t_nothing:"Where Nothing Was Found",t_countrygap:"The Gap by Country",t_translation:"Can Hear It, No Text",t_translationcountry:"Where to Translate",t_gaps:"Gaps & Opportunities",t_bridges:"City Bridges",t_deaf:"The Deaf Gap",t_resources:"Resources by People Group",t_languages:"Languages by Country",t_growth:"Access vs Population Growth"},pages:{listTitle:"Gospel Resources by Language",chartsTitle:"Gospel Resources — by Language",loadingTables:"Loading resource tables…"},list:{noText:"No text Scripture",hasScripture:"Has scripture",allLanguages:"All languages",peopleGroup:"people group",peopleGroups:"people groups",scriptureHere:"Scripture in this language"},columns:{"People group":"People group",Country:"Country",Region:"Region",Language:"Language",Population:"Population",Religion:"Religion","Gospel access":"Gospel access",Resources:"Resources",Scripture:"Scripture","Bible video":"Bible video","Gospel presentation":"Gospel presentation",Countries:"Countries","People groups":"People groups"},charts:{scriptureAny:"Scripture (any)",fullBible:"Full Bible",newTestament:"New Testament",filmAny:"Film (any)",nothingInPools:"Nothing found in pools checked",nothingInPoolsLower:"nothing found in pools checked",noResourceInPools:"no resource found in pools checked",aResourceFound:"a resource found",tabCoverage:"Resource coverage",tabGap:"Largest gaps",keyScripture:"scripture",keyFilmStories:"film / stories",keyAudioEtc:"audio / presentation / training",unresolvedCode:"code outside ISO 639-3 — unresolved, not measured"}},jf={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."},zf={title:{adoption:"Adoption Progress",affinityBlocs:"Affinity Blocks",doxaRegions:"Doxa Regions",engagement:"Engagement Progress",gospelResources:"Gospel Resources",languageFamilies:"Language Families",prayer:"Prayer Progress",upg100List:"My UPG 100 List"},header:{default:"Legend",collapsed:"Legend",peopleGroupFallback:"People Group"},prayer:{needsPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayerCoverage:"Full Prayer Coverage"},progress:{title:"Progress",covered:"{covered} of {total} people groups covered in prayer · {pct}%",short:"{covered} of {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Unengaged",hasEngagement:"Engaged"},adoption:{needsAdoption:"Needs Adoption",hasAdoption:"Has Adoption"},columns:{upgs:"UUPGs",population:"Population",name:"Name"},footer:{total:"Total"},sortByUpgs:"Sort by UUPGs",sortByPop:"Sort by Population",colLabel:{religion:"UUPG Religions",prayer:"Prayer Status",engagement:"Engagement Status",adoption:"Adoption Status",status:"Status"},titleBar:{legend:"Legend",peopleGroups:"People Groups",wagfRegions:"WAGF Regions",languages:"Languages"},tabInfo:{upg100Region:"Region — sort the UPG-100 lists by world area (Africa, India, Middle East, Deaf, …). Counts are the UUPGs and population summed across every list beneath it.",upg100Zone:"UPG-100 Lists — each one is a prayer list of the unreached people groups in an area, and is what the map paints and colours. Every list prints as its own packet.",upg100Group:"People Group — the individual unreached groups inside a list, largest prayer need first. Each map dot is one of these."},a11y:{expandRow:"Expand {label}",collapseRow:"Collapse {label}",clearSelection:"Clear selection"}},Bf={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",upg100WallIntro:"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 by their people group name."},Vf={clusterByRegion:"By Doxa Region",clusterByLanguageFamily:"By Language Family",clusterByGospelResource:"By Gospel Resource"},qf={country:{wagfRegion:"WAGF Region",wagfBlock:"WAGF Bloc",country:"Country",uupgCount:"UUPG Count"}},Hf={header:"CURRENT PRAYER LAP",lap:"Lap",upgs:"UUPGs",separator:" of "},Wf={"%count% people groups in %countries% countries":"%count% people groups in %countries% countries","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.","1+ People Praying":"1+ People Praying","100+ People Praying":"100+ People Praying",Adopted:"Adopted","Adoption Progress":"Adoption Progress","All Regions":"All Regions","Alternate Names":"Alternate Names","Choose a region":"Choose a region","Clear All":"Clear All",Countries:"Countries","Countries in this region":"Countries in this region",Country:"Country",Engaged:"Engaged","Engagement Progress":"Engagement Progress","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Every unengaged people group adopted by a church committed to prayer, giving, and sending","Exact Search":"Exact Search","Find unreached people groups by region and country.":"Find unreached people groups by region and country.","Full Profile":"Full Profile",Goal:"Goal","Hide Filters":"Hide Filters","Hide country posters":"Hide country posters",Intercessors:"Intercessors","Load More":"Load More","Loading results...":"Loading results...",Map:"Map","Mobilize 100+ people praying daily for each DOXA people group":"Mobilize 100+ people praying daily for each DOXA people group","No One Praying":"No One Praying","No options found":"No options found","No poster has been generated for this country yet.":"No poster has been generated for this country yet.","No unengaged people groups by 2033":"No unengaged people groups by 2033","Not Adopted":"Not Adopted",Other:"Other","Page Not Found":"Page Not Found","People Group":"People Group","People Groups":"People Groups","People committed to praying":"People committed to praying","Pick a region above, or click any dot to open that people group's country.":"Pick a region above, or click any dot to open that people group's country.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Pick a region or a country on the Regions List tab to narrow this dashboard.",Population:"Population","Prayer Coverage":"Prayer Coverage","Prayer coverage progress":"Prayer coverage progress","Region Dashboards":"Region Dashboards","Region dashboard":"Region dashboard",Regions:"Regions","Regions List":"Regions List",Religion:"Religion","Search names, country/continent, religions...":"Search names, country/continent, religions...","See %region% dashboard":"See %region% dashboard","See All":"See All",Select:"Select","Select View":"Select View","Show Filters":"Show Filters","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.",Total:"Total","Type to search...":"Type to search...","Unengaged people groups":"Unengaged people groups","View country posters":"View country posters",Views:"Views","WAGF Block":"WAGF Block","WAGF Region":"WAGF Region","people groups adopted":"people groups adopted","people groups engaged":"people groups engaged","Outside this region":"Outside this region",Pray:"Pray","Loading region dashboards…":"Loading region dashboards…","No regions found.":"No regions found.","Region data could not be loaded. This is a connection problem, not a filter.":"Region data could not be loaded. This is a connection problem, not a filter.","People groups could not be loaded. This is a connection problem, not a filter.":"People groups could not be loaded. This is a connection problem, not a filter.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected."},Kf={placeholder:"People, place, language, religion",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…"},Yf={title:"Plugin Studio",navLabel:"Plugins by capability",countLabel:"{bundles} bundles · {elements} plugins listed here",changeLanguage:"Change language",copyEmbed:"Copy embed",copy:"Copy",copied:"Copied",scriptEmbed:"Script embed",loading:"Loading {name}…",couldNotLoad:"Could not load {name}.",chooseElement:"Choose a plugin from the list.",filterPlaceholder:"Filter plugins",collapseAll:"Collapse all",noMatch:"No plugin matches “{query}”.",openSection:"Open {cap}, {label}",part:"part",noStandalone:"no standalone page",cap5:"App shell",cap4:"Composite",cap3:"Multi-view",cap2:"Preset",cap1:"Single",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse",partOf:"part of {name}, not published on its own",mapToken:"Map token",tokenPaste:"Mapbox public token (pk.…)",tokenUrlLabel:"…or the URL of a token service",tokenApply:"Use",tokenClear:"Clear",tokenStoredHere:"Kept in this browser only.",tokenSourceYours:"Using your token",tokenSourceUrl:"Using a token from {url}",tokenSourceBuilt:"Using the token built into this page",tokenSourceNone:"No Mapbox token: Mapbox maps cannot load (MapLibre maps need none)",tokenSecret:"That is a secret token (sk.…). Paste a public one (pk.…): this page is public.",tokenNotPk:"A Mapbox public token starts with pk.",tokenUrlFailed:"Could not get a token from that URL: {why}",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"},Xf={prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country",upg100Region:"Region",upg100Zone:"UPG-100 Lists",upg100Group:"People Group",selectView:"Select View",views:"Views",prayerResources:"Prayer Resources",map:"Map"},Zf={kicker:"DOXA · Vision",title:"Every people. Every place.",tagline:"From every people group on earth to the ones DOXA prays for, counted from the data.",funnelLabel:"From all people groups to DOXA people groups",allLabel:"People groups",allNote:"each people group, in each country it lives in",unreachedLabel:"Unreached",unreachedNote:"under 2% evangelical",frontierLabel:"Frontier",frontierNote:"under 0.1% evangelical",doxaLabel:"DOXA people groups",doxaNote:"{frontier} of them are frontier",people:"{n} people",sources:"People groups: {imb}, data of {date}. DOXA list: pray.doxa.life, {date2}.",howCounted:"How these are counted",ruleAll:"Every row of the IMB people-group data: one people group in one country.",ruleUnreached:"IMB lostness priority 0 to 2: less than 2% evangelical.",ruleFrontier:"IMB lostness priority 0: less than 0.1% evangelical. A subset of the unreached.",ruleDoxa:"Every group on the DOXA prayer list, matched to the IMB data by people and country. Not all are frontier."},Jf={title:"Todos los grupos étnicos",locations:"{n} ubicaciones (grupo × país)",doxa:"Grupos étnicos de DOXA",frontier:"Frontera — nada iniciado",unreached:"No alcanzados — el trabajo comienza",reached:"Alcanzados — la iglesia está ahí",hint:"Haga clic en una fila para verlos todos · de nuevo para ver todo",loading:"Cargando todos los grupos étnicos…",loadError:"No se pudo cargar el mapa.",pray:"Ore por ellos →",population:"pobl. {n}"},Qf={backToLegend:"Volver a la leyenda",closeDetailView:"Cerrar vista de detalle",collapseLegend:"Contraer la leyenda",expandLegend:"Expandir la leyenda",toggleLegend:"Mostrar u ocultar la leyenda"},eh={prayForThem:"Ora por ellos",adoptThem:"Adóptalos",moreInfo:"Más información",zoomIn:"Acercar",zoomOut:"Alejar",switchToLightMode:"Cambiar a modo claro",switchToDarkMode:"Cambiar a modo oscuro",resetView:"Restablecer vista",toggleFullscreen:"Alternar pantalla completa",aboutThisMap:"Acerca de este mapa",closeMenu:"Cerrar menú",reloadMap:"Recargar mapa",showClusters:"Mostrar clústeres",clusterSettings:"Ajustes de clústeres",startAutoFly:"Iniciar vuelo automático",stopFlight:"Detener vuelo",speedLabel:"Velocidad:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Compartir e incrustar",posterMap:"Mapa del cartel",prayerList:"Lista de oración",cardDeck:"Baraja de tarjetas",printOptions:"Opciones de impresión",showOnMap:"Ver en el mapa",close:"Cerrar",showOnMapAria:"Ver {label} en el mapa",cardStockAria:"Tamaño de la tarjeta de oración",previewPrintPoster:"Previsualizar e imprimir el cartel de {label}",share:"Compartir",shareSteps:["Inserta este mapa en tu sitio","Haz una lista de los sitios web de tu ciudad","Enséñales a insertarlo también","Enséñales a enseñar a otros a insertarlo","¡Multiplica los mapas por todas partes para Jesús!"],clearSelection:"Borrar la selección",noOptions:"No se encontraron opciones",renderingLocal:"Se está generando una imagen con calidad de impresión en tu navegador: no se sube nada.",postersPerRow:"Pósteres por fila"},th={title:"Acceso a internet donde viven pueblos sin implicación",bands:{yes:"conectado 60%+",partial:"parcial 25–59%",no:"bajo, menos del 25%",unknown:"sin medir"},peopleGroup:"pueblo",caveat:"Cifras NACIONALES (Banco Mundial). La conectividad por ciudad no está disponible públicamente: no deduzca una ciudad a partir de su país.",sheet:{close:"Cerrar",ai:"Estos datos se obtuvieron mediante investigación con IA y pueden contener información falsa.",dismiss:"Descartar",internetUsers:"Usuarios de internet",measured:"Medido",mobilePer100:"Móviles por cada 100",peopleGroups:"Pueblos",topPlatform:"Plataforma principal",unknown:"desconocido",carriers:"Operadores y proveedores de internet ({n})",socialPlatforms:"Redes sociales",note:"Cifras nacionales, no mediciones por ciudad. Los nombres de operadores son titulares de registros ASN (incluyen bancos y universidades además de proveedores), así que la marca de operador es una heurística por nombre, no una clasificación verificada."}},oh={research_controls:"Controles de investigación",clustering:"Agrupación",filters:"Filtros",pin_dim:"Atenuar puntos",export_poster:"Exportar póster…",reload_data:"Recargar datos",off:"Desactivado",native:"Nativo",mst:"MST",network:"Red",off_desc:"Mostrar cada punto por separado",native_desc:"Grupos circulares de Mapbox (lo más rápido)",mst_desc:"Redes de afinidad por árbol de expansión mínima",network_desc:"Líneas de conexión al vecino más cercano",search_languages:"Buscar idiomas…",search_religions:"Buscar religiones…",reset_all:"Restablecer todo",no_languages:"Aún no se han cargado idiomas",no_religions:"Aún no se han cargado religiones",unadopted:"No adoptado",min:"mín",max:"máx",adopted:"Adoptado",adoption:"Adopción",engaged:"Comprometido",engagement:"Compromiso",unengaged:"Necesita implicación",language:"Idioma",religion:"Religión",population:"Población",any:"Cualquiera",active_count:"{n} activos",prayer_status:"Estado de oración",close:"Cerrar",clear:"Borrar",map_controls:"Controles del mapa"},nh={bloc:"Bloque de afinidad",gospel_access:"Acceso al evangelio",people:"Pueblos",people_name:"Pueblo (nombre)",praying:"Orando",religion_family:"Familia religiosa",search_language:"Buscar idioma",search_people:"Buscar pueblo",search_place:"Buscar lugar",search_religion:"Buscar religión",upgs_in_scope:"UPG en el ámbito",countries_touched:"países alcanzados",unreached:"no alcanzados",sum_population:"Σ población",sum_praying:"Σ orando",charts:"Gráficos",table:"Tabla",cluster:"Clúster",country:"País",engagement:"Compromiso",language:"Idioma",language_family:"Familia lingüística",people_group:"Pueblo",population:"Población",prayer:"Oración",region:"Región",religion:"Religión",status:"Estado",adopted:"Adoptado",filters:"Filtros",gospel_resources:"Recursos del Evangelio",map:"Mapa",search_placeholder:"Buscar pueblos, lugares, idiomas, religiones…",any:"Cualquiera",active_count:"{n} activos",prayer_status:"Estado de oración",map_controls:"Controles del mapa",close:"Cerrar",clear:"Borrar",dashboard_title:"Panel de investigación general",align_dashboard:"Alinear panel",align_dashboard_tip:"Restablecer la disposición del panel a su alineación predeterminada",selected:"Seleccionado",world:"Mundo",vertical_legend:"Leyenda vertical",groups_in_scope:"pueblos en el ámbito",filter_by:"Filtrar por",remove_filter:"Quitar filtro",groups:"pueblos",expand:"Expandir",collapse:"Contraer",place:"Lugar"},ah={labels:{country:"País:",population:"Población:",language:"Idioma:",religion:"Religión:",languageFamily:"Familia lingüística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"No hay descripción disponible."}},sh={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"Las notas explicativas siguientes están en inglés."},mode:{gap:"Brecha",coverage:"Recursos encontrados"},search:{placeholder:"Busca un pueblo, idioma o código ISO",clear:"Borrar búsqueda",none:"Nada coincide con ese nombre, idioma o código.",placeholderShort:"Pueblo, idioma o código ISO"},legend:{title:"Pueblos no alcanzados sin ningún recurso del evangelio",band60:"60 %+ sin nada encontrado",band30:"30–59 %",bandSome:"algunos pueblos",bandAll:"todos los pueblos tienen algo",tier2:"Escrituras y película",tier1:"se encontró algún recurso",tier0:"no se encontró nada",hnr:"pueden oírlo, sin texto",showAll:"Mostrar todos los pueblos",titleCoverage:"Pueblos no alcanzados con algún recurso del evangelio",cov80:"80 %+ tienen algo",cov50:"50–79 %",cov1:"1–49 %",cov0:"nada para ninguno",tallyEach:"Cada",tallyIs:"es UN pueblo —",tallyOf:"de ellos,",tallyLink:"con un enlace",doxa0:"todos tienen algo",doxa1:"1–4 sin nada",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 alcanzados",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Pueblos de Doxa en este mapa",notPlaced:"en la lista, aún sin ubicar",outOfScope:"sin pueblos de Doxa — sin color"},tabs:{groups:"Pueblos más grandes",countries:"Por país",regions:"Por región",noprayer:"Nadie ora",hnr:"Oyen, sin texto"},stat:{language:"Idioma",population:"Población",countries:"Países",peopleGroups:"Pueblos",noResource:"Ningún recurso encontrado",peopleAffected:"Personas afectadas",haveScripture:"Tienen Escrituras",haveFilm:"Tienen película",haveAudio:"Tienen Escrituras en audio",signLanguages:"Lenguas de señas",growingUnreached:"En crecimiento y no alcanzados",deathsDay:"Muertes estimadas/día"},sheet:{ownLanguage:"En su propio idioma",close:"Cerrar",loading:"Cargando recursos…",pray:"Ora por",everyResource:"Todos los recursos en",alsoSpeak:"También hablan"},res:{scripture:"Escrituras",film:"Película",audio:"Audio",bibleVideo:"Video bíblico",bibleStories:"Open Bible Stories",gospelAudio:"Audio del evangelio",gospelPresentation:"Presentación del evangelio",scriptureEarth:"Scripture Earth",training:"Formación de discipulado",jesusFilm:"Película JESÚS",audioScripture:"Escrituras en audio",bibleStoriesPlain:"Historias bíblicas"},state:{noneFound:"nada encontrado",noneAtFcbh:"nada en FCBH",noneAtGrn:"nada en GRN",notInZume:"no está entre los 54 de Zume",linkChecked:"enlace verificado",unchecked:"sin verificar",linkDead:"enlace roto",wrongLanguage:"idioma incorrecto",varietyNotStated:"(variedad no indicada)",inLanguage:"en"},guide:{dotVsCountry:"Cada punto es UN pueblo de Doxa y su propio idioma; un país es el NÚMERO de esos pueblos.",noneFoundShort:"«Nada encontrado» significa ausente de las fuentes consultadas, nunca prueba de que no exista.",tapCountry:"Toca un país para ver los recursos, pueblo por pueblo."},tables:{title:"Recursos del evangelio — Datos",showing:"Mostrando",of:"de",for:"para",filteredTo:"Filtrado por",showAll:"Mostrar todos los recursos",t_doxa:"Doxa — Acceso al evangelio",t_links:"Cada recurso + enlace",t_nothing:"Donde no se encontró nada",t_countrygap:"La brecha por país",t_translation:"Pueden oírlo, sin texto",t_translationcountry:"Dónde traducir",t_gaps:"Brechas y oportunidades",t_bridges:"Puentes urbanos",t_deaf:"La brecha sorda",t_resources:"Recursos por pueblo",t_languages:"Idiomas por país",t_growth:"Acceso vs crecimiento"},pages:{listTitle:"Recursos del evangelio por idioma",chartsTitle:"Recursos del evangelio — por idioma",loadingTables:"Cargando tablas de recursos…"},list:{noText:"Sin texto bíblico",hasScripture:"Tiene Escrituras",allLanguages:"Todos los idiomas",peopleGroup:"pueblo",peopleGroups:"pueblos",scriptureHere:"Escrituras en este idioma"},columns:{"People group":"Pueblo",Country:"País",Region:"Región",Language:"Idioma",Population:"Población",Religion:"Religión","Gospel access":"Acceso al evangelio",Resources:"Recursos",Scripture:"Escrituras","Bible video":"Video bíblico","Gospel presentation":"Presentación del evangelio",Countries:"Países","People groups":"Pueblos"},charts:{scriptureAny:"Escrituras (cualquiera)",fullBible:"Biblia completa",newTestament:"Nuevo Testamento",filmAny:"Película (cualquiera)",nothingInPools:"No se encontró nada en las fuentes consultadas",nothingInPoolsLower:"no se encontró nada en las fuentes consultadas",noResourceInPools:"no se encontró ningún recurso en las fuentes consultadas",aResourceFound:"se encontró un recurso",tabCoverage:"Cobertura de recursos",tabGap:"Mayores brechas",keyScripture:"escrituras",keyFilmStories:"película / historias",keyAudioEtc:"audio / presentación / formación",unresolvedCode:"código fuera de ISO 639-3 — sin resolver, no medido"}},rh={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."},ih={title:{adoption:"Progreso de adopción",affinityBlocs:"Bloques de afinidad",doxaRegions:"Regiones Doxa",engagement:"Progreso de implicación",gospelResources:"Recursos del Evangelio",languageFamilies:"Familias lingüísticas",prayer:"Progreso de oración",upg100List:"Mi lista UPG 100"},header:{collapsed:"Leyenda",peopleGroupFallback:"Grupo de personas",default:"Leyenda"},prayer:{needsPrayer:"Necesita oración",hasPrayer:"Tiene oración",fullPrayerCoverage:"Cobertura de oración completa"},progress:{title:"Progreso",covered:"{covered} de {total} grupos de personas cubiertos en oración · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesita implicación",hasEngagement:"Tiene implicación"},adoption:{needsAdoption:"Necesita adopción",hasAdoption:"Tiene adopción"},columns:{upgs:"UUPGs",population:"Población",name:"Nombre"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por población",colLabel:{religion:"Religiones UUPG",prayer:"Estado de oración",engagement:"Estado de compromiso",adoption:"Estado de adopción",status:"Estado"},titleBar:{legend:"Leyenda",peopleGroups:"Pueblos",wagfRegions:"Regiones WAGF",languages:"Idiomas"},tabInfo:{upg100Region:"Región — ordena las listas UPG-100 por área mundial (África, India, Oriente Medio, Sordos, …). Los totales son los UUPG y la población sumados de todas las listas que contiene.",upg100Zone:"Listas UPG-100 — cada una es una lista de oración de los grupos étnicos no alcanzados de un área, y es lo que el mapa pinta y colorea. Cada lista se imprime como su propio paquete.",upg100Group:"Grupo étnico — los grupos no alcanzados dentro de una lista, primero los de mayor necesidad de oración. Cada punto del mapa es uno de ellos."},a11y:{expandRow:"Expandir {label}",collapseRow:"Contraer {label}",clearSelection:"Borrar la selección"}},lh={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",upg100WallIntro:"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 por el nombre de su pueblo."},ch={clusterByRegion:"Por región Doxa",clusterByLanguageFamily:"Por familia lingüística",clusterByGospelResource:"Por recurso del Evangelio"},uh={country:{wagfRegion:"Región WAGF",wagfBlock:"Bloque WAGF",country:"País",uupgCount:"Número de UUPG"}},ph={header:"VUELTA DE ORACIÓN ACTUAL",lap:"Vuelta",upgs:"UUPGs",separator:" de "},dh={"%count% people groups in %countries% countries":"%count% grupos étnicos en %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tiene %count% grupos étnicos en %countries% países. El color de cada punto indica cuántas personas oran por ese grupo étnico.","1+ People Praying":"1+ personas orando","100+ People Praying":"100+ personas orando",Adopted:"Adoptado","Adoption Progress":"Progreso de la adopción","All Regions":"Todas las regiones","Alternate Names":"Nombres alternativos","Choose a region":"Elige una región","Clear All":"Borrar todo",Countries:"Países","Countries in this region":"Países de esta región",Country:"País",Engaged:"Comprometido","Engagement Progress":"Progreso del compromiso","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico no evangelizado adoptado por una iglesia comprometida con la oración, la ofrenda y el envío.","Exact Search":"Búsqueda exacta","Find unreached people groups by region and country.":"Encuentra grupos étnicos no alcanzados por región y país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros","Hide country posters":"Ocultar los carteles del país",Intercessors:"Intercesores","Load More":"Cargar más","Loading results...":"Cargando resultados...",Map:"Mapa","Mobilize 100+ people praying daily for each DOXA people group":"Movilizar a más de 100 personas que oren diariamente por cada grupo étnico DOXA.","No One Praying":"Nadie orando","No options found":"No se han encontrado opciones","No poster has been generated for this country yet.":"Todavía no se ha generado ningún cartel para este país.","No unengaged people groups by 2033":"No habrá grupos étnicos sin evangelizar para 2033","Not Adopted":"No adoptado",Other:"Otros","Page Not Found":"Página no encontrada","People Group":"Grupo Étnico","People Groups":"Grupos Étnicos","People committed to praying":"Personas comprometidas con la oración","Pick a region above, or click any dot to open that people group's country.":"Elige una región arriba, o haz clic en cualquier punto para abrir el país de ese pueblo.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Elige una región o un país en la pestaña Lista de regiones para acotar este panel.",Population:"Población","Prayer Coverage":"Cobertura de oración","Prayer coverage progress":"Progreso de la cobertura de oración","Region Dashboards":"Paneles de regiones","Region dashboard":"Panel de la región",Regions:"Regiones","Regions List":"Lista de regiones",Religion:"Religión","Search names, country/continent, religions...":"Buscar nombres, país/continente, religiones...","See %region% dashboard":"Ver el panel de %region%","See All":"Ver todo",Select:"Seleccionar","Select View":"Seleccionar vista","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Hay %count% grupos étnicos en %country%. Consulta también el mapa para ver los grupos étnicos en la frontera de este país.",Total:"Total","Type to search...":"Escribe para buscar...","Unengaged people groups":"Grupos étnicos no comprometidos","View country posters":"Ver los carteles del país",Views:"Vistas","WAGF Block":"Bloque WAGF","WAGF Region":"Región de la WAGF","people groups adopted":"grupos étnicos adoptados","people groups engaged":"grupos étnicos comprometidos","Outside this region":"Fuera de esta región",Pray:"Oración","Loading region dashboards…":"Cargando los paneles de regiones…","No regions found.":"No se encontraron regiones.","Region data could not be loaded. This is a connection problem, not a filter.":"No se pudieron cargar los datos de las regiones. Es un problema de conexión, no un filtro.","People groups could not be loaded. This is a connection problem, not a filter.":"No se pudieron cargar los pueblos. Es un problema de conexión, no un filtro.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"El mapa no pudo iniciarse. Es un problema del token del mapa o de conexión, no un filtro: las cifras de arriba no se ven afectadas."},gh={placeholder:"Pueblo, lugar, idioma, religión",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…"},fh={title:"Estudio de plugins",navLabel:"Plugins por capacidad",countLabel:"{bundles} paquetes · {elements} plugins listados aquí",changeLanguage:"Cambiar idioma",copyEmbed:"Copiar código de inserción",copy:"Copiar",copied:"Copiado",scriptEmbed:"Inserción por script",loading:"Cargando {name}…",couldNotLoad:"No se pudo cargar {name}.",chooseElement:"Elija un plugin de la lista.",filterPlaceholder:"Filtrar plugins",collapseAll:"Contraer todo",noMatch:"Ningún plugin coincide con «{query}».",openSection:"Abrir {cap}, {label}",part:"parte",noStandalone:"sin página propia",cap5:"Contenedor de aplicación",cap4:"Compuesto",cap3:"Multivista",cap2:"Preajuste",cap1:"Individual",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer",partOf:"parte de {name}, no publicada por separado",mapToken:"Token del mapa",tokenPaste:"Token público de Mapbox (pk.…)",tokenUrlLabel:"…o la URL de un servicio de tokens",tokenApply:"Usar",tokenClear:"Borrar",tokenStoredHere:"Se guarda solo en este navegador.",tokenSourceYours:"Usando tu token",tokenSourceUrl:"Usando un token de {url}",tokenSourceBuilt:"Usando el token integrado en esta página",tokenSourceNone:"Sin token de Mapbox: los mapas de Mapbox no cargan (los de MapLibre no lo necesitan)",tokenSecret:"Ese es un token secreto (sk.…). Pega uno público (pk.…): esta página es pública.",tokenNotPk:"Un token público de Mapbox empieza por pk.",tokenUrlFailed:"No se pudo obtener un token de esa URL: {why}",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"},hh={prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País",upg100Region:"Región",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Seleccionar vista",views:"Vistas",prayerResources:"Recursos de oración",map:"Mapa"},mh={kicker:"DOXA · Visión",title:"Cada pueblo. Cada lugar.",tagline:"De todos los grupos étnicos del mundo a aquellos por los que DOXA ora, contados a partir de los datos.",funnelLabel:"De todos los grupos étnicos a los grupos étnicos de DOXA",allLabel:"Grupos étnicos",allNote:"cada grupo étnico, en cada país donde vive",unreachedLabel:"No alcanzados",unreachedNote:"menos del 2 % evangélicos",frontierLabel:"Frontera",frontierNote:"menos del 0,1 % evangélicos",doxaLabel:"Grupos étnicos de DOXA",doxaNote:"{frontier} de ellos son de frontera",people:"{n} personas",sources:"Grupos étnicos: {imb}, datos de {date}. Lista de DOXA: pray.doxa.life, {date2}.",howCounted:"Cómo se cuentan",ruleAll:"Cada fila de los datos de grupos étnicos del IMB: un grupo étnico en un país.",ruleUnreached:"Prioridad de perdición del IMB de 0 a 2: menos del 2 % evangélicos.",ruleFrontier:"Prioridad de perdición del IMB 0: menos del 0,1 % evangélicos. Un subconjunto de los no alcanzados.",ruleDoxa:"Cada grupo de la lista de oración de DOXA, vinculado a los datos del IMB por pueblo y país. No todos son de frontera."},$h={title:"Tous les groupes ethniques",locations:"{n} emplacements (groupe × pays)",doxa:"Groupes ethniques DOXA",frontier:"Frontière — rien n’a commencé",unreached:"Non atteints — le travail commence",reached:"Atteints — l’Église est là",hint:"Cliquez sur une ligne pour les voir tous · recliquez pour tout voir",loading:"Chargement de tous les groupes ethniques…",loadError:"La carte n’a pas pu être chargée.",pray:"Priez pour eux →",population:"pop. {n}"},bh={backToLegend:"Retour à la légende",closeDetailView:"Fermer la vue détaillée",collapseLegend:"Réduire la légende",expandLegend:"Développer la légende",toggleLegend:"Afficher ou masquer la légende"},_h={prayForThem:"Priez pour eux",adoptThem:"Adoptez-les",moreInfo:"Plus d'infos",zoomIn:"Zoom avant",zoomOut:"Zoom arrière",switchToLightMode:"Passer au mode clair",switchToDarkMode:"Passer au mode sombre",resetView:"Réinitialiser la vue",toggleFullscreen:"Basculer en plein écran",aboutThisMap:"À propos de cette carte",closeMenu:"Fermer le menu",reloadMap:"Recharger la carte",showClusters:"Afficher les clusters",clusterSettings:"Paramètres des clusters",startAutoFly:"Démarrer le vol auto",stopFlight:"Arrêter le vol",speedLabel:"Vitesse :",speedOption:{slow:"Lente",normal:"Normale",fast:"Rapide"},shareEmbed:"Partager et intégrer",posterMap:"Carte de l'affiche",prayerList:"Liste de prière",cardDeck:"Jeu de cartes",printOptions:"Options d'impression",showOnMap:"Voir sur la carte",close:"Fermer",showOnMapAria:"Voir {label} sur la carte",cardStockAria:"Taille de la carte de prière",previewPrintPoster:"Aperçu et impression de l’affiche {label}",share:"Partager",shareSteps:["Intégrez cette carte à votre site","Dressez la liste des sites web de votre ville","Apprenez-leur à l’intégrer aussi","Apprenez-leur à former d’autres personnes à l’intégrer","Multiplions les cartes partout pour Jésus !"],clearSelection:"Effacer la sélection",noOptions:"Aucune option trouvée",renderingLocal:"Une image de qualité impression est générée dans votre navigateur — rien n’est envoyé.",postersPerRow:"Affiches par ligne"},yh={title:"Accès à Internet là où vivent les peuples sans engagement",bands:{yes:"connecté 60 %+",partial:"partiel 25–59 %",no:"faible, moins de 25 %",unknown:"non mesuré"},peopleGroup:"peuple",caveat:"Chiffres NATIONAUX (Banque mondiale). La connectivité par ville n'est pas publique — ne déduisez pas une ville à partir de son pays.",sheet:{close:"Fermer",ai:"Ces données proviennent d'une recherche approfondie par IA — elles peuvent contenir des informations erronées.",dismiss:"Ignorer",internetUsers:"Internautes",measured:"Mesuré",mobilePer100:"Mobiles pour 100",peopleGroups:"Peuples",topPlatform:"Plateforme principale",unknown:"inconnu",carriers:"Opérateurs et FAI ({n})",socialPlatforms:"Réseaux sociaux",note:"Chiffres nationaux, pas des mesures par ville. Les noms d'opérateurs sont les titulaires de registres ASN (on y trouve aussi des banques et des universités à côté des FAI), donc l'étiquette « opérateur » est une heuristique fondée sur le nom, non une classification vérifiée."}},vh={research_controls:"Commandes de recherche",clustering:"Regroupement",filters:"Filtres",pin_dim:"Atténuation des points",export_poster:"Exporter l’affiche…",reload_data:"Recharger les données",off:"Désactivé",native:"Natif",mst:"MST",network:"Réseau",off_desc:"Afficher chaque point séparément",native_desc:"Groupes circulaires Mapbox (le plus rapide)",mst_desc:"Réseaux d’affinité par arbre couvrant minimal",network_desc:"Lignes vers le plus proche voisin",search_languages:"Rechercher des langues…",search_religions:"Rechercher des religions…",reset_all:"Tout réinitialiser",no_languages:"Aucune langue chargée pour l’instant",no_religions:"Aucune religion chargée pour l’instant",unadopted:"Non adopté",min:"min",max:"max",adopted:"Adopté",adoption:"Adoption",engaged:"Engagé",engagement:"Engagement",unengaged:"Besoin d'engagement",language:"Langue",religion:"Religion",population:"Population",any:"Tous",active_count:"{n} actifs",prayer_status:"État de prière",close:"Fermer",clear:"Effacer",map_controls:"Commandes de la carte"},kh={bloc:"Bloc d’affinité",gospel_access:"Accès à l’Évangile",people:"Peuples",people_name:"Peuple (nom)",praying:"En prière",religion_family:"Famille religieuse",search_language:"Rechercher une langue",search_people:"Rechercher un peuple",search_place:"Rechercher un lieu",search_religion:"Rechercher une religion",upgs_in_scope:"UPG dans le périmètre",countries_touched:"pays touchés",unreached:"non atteints",sum_population:"Σ population",sum_praying:"Σ en prière",charts:"Graphiques",table:"Tableau",cluster:"Grappe",country:"Pays",engagement:"Engagement",language:"Langue",language_family:"Famille linguistique",people_group:"Peuple",population:"Population",prayer:"Prière",region:"Région",religion:"Religion",status:"Statut",adopted:"Adopté",filters:"Filtres",gospel_resources:"Ressources de l'Évangile",map:"Carte",search_placeholder:"Rechercher peuples, lieux, langues, religions…",any:"Tous",active_count:"{n} actifs",prayer_status:"État de prière",map_controls:"Commandes de la carte",close:"Fermer",clear:"Effacer",dashboard_title:"Tableau de bord de recherche global",align_dashboard:"Aligner le tableau",align_dashboard_tip:"Rétablir la disposition par défaut du tableau de bord",selected:"Sélectionné",world:"Monde",vertical_legend:"Légende verticale",groups_in_scope:"peuples dans le périmètre",filter_by:"Filtrer par",remove_filter:"Retirer le filtre",groups:"peuples",expand:"Développer",collapse:"Replier",place:"Lieu"},wh={labels:{country:"Pays :",population:"Population :",language:"Langue :",religion:"Religion :",languageFamily:"Famille de langues :",peopleCommitted:"Engagés à prier :"},messages:{noDescription:"Aucune description disponible."}},xh={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"Les notes explicatives ci-dessous sont en anglais."},mode:{gap:"Écart",coverage:"Ressources trouvées"},search:{placeholder:"Chercher un peuple, une langue ou un code ISO",clear:"Effacer la recherche",none:"Rien ne correspond à ce nom, cette langue ou ce code.",placeholderShort:"Peuple, langue ou code ISO"},legend:{title:"Peuples non atteints sans aucune ressource de l'Évangile",band60:"60 %+ sans rien trouvé",band30:"30–59 %",bandSome:"quelques peuples",bandAll:"tous les peuples ont quelque chose",tier2:"Écritures et film",tier1:"une ressource trouvée",tier0:"rien trouvé",hnr:"peuvent l'entendre, aucun texte",showAll:"Afficher tous les peuples",titleCoverage:"Peuples non atteints avec une ressource de l'Évangile",cov80:"80 %+ ont quelque chose",cov50:"50–79 %",cov1:"1–49 %",cov0:"rien pour aucun",tallyEach:"Chaque",tallyIs:"est UN peuple —",tallyOf:"d'entre eux,",tallyLink:"avec un lien",doxa0:"tous ont quelque chose",doxa1:"1–4 sans rien",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 atteints",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Peuples Doxa sur cette carte",notPlaced:"sur la liste, pas encore localisés",outOfScope:"aucun peuple Doxa — non coloré"},tabs:{groups:"Peuples les plus nombreux",countries:"Par pays",regions:"Par région",noprayer:"Personne ne prie",hnr:"Entendent, sans texte"},stat:{language:"Langue",population:"Population",countries:"Pays",peopleGroups:"Peuples",noResource:"Aucune ressource trouvée",peopleAffected:"Personnes concernées",haveScripture:"Ont les Écritures",haveFilm:"Ont le film",haveAudio:"Ont les Écritures en audio",signLanguages:"Langues des signes",growingUnreached:"En croissance et non atteints",deathsDay:"Décès estimés/jour"},sheet:{ownLanguage:"Dans leur propre langue",close:"Fermer",loading:"Chargement des ressources…",pray:"Priez pour",everyResource:"Toutes les ressources en",alsoSpeak:"Parlent aussi"},res:{scripture:"Écritures",film:"Film",audio:"Audio",bibleVideo:"Vidéo biblique",bibleStories:"Open Bible Stories",gospelAudio:"Audio de l'Évangile",gospelPresentation:"Présentation de l'Évangile",scriptureEarth:"Scripture Earth",training:"Formation au discipulat",jesusFilm:"Film JÉSUS",audioScripture:"Écritures en audio",bibleStoriesPlain:"Histoires bibliques"},state:{noneFound:"rien trouvé",noneAtFcbh:"rien chez FCBH",noneAtGrn:"rien chez GRN",notInZume:"pas dans les 54 de Zume",linkChecked:"lien vérifié",unchecked:"non vérifié",linkDead:"lien mort",wrongLanguage:"mauvaise langue",varietyNotStated:"(variété non précisée)",inLanguage:"en"},guide:{dotVsCountry:"Un point est UN peuple de Doxa et sa propre langue ; un pays est le NOMBRE de ces peuples.",noneFoundShort:"« Rien trouvé » signifie absent des sources consultées, jamais la preuve que rien n'existe.",tapCountry:"Touchez un pays pour voir les ressources, peuple par peuple."},tables:{title:"Ressources de l'Évangile — Données",showing:"Affichage de",of:"sur",for:"pour",filteredTo:"Filtré sur",showAll:"Afficher toutes les ressources",t_doxa:"Doxa — Accès à l'Évangile",t_links:"Chaque ressource + lien",t_nothing:"Où rien n'a été trouvé",t_countrygap:"L'écart par pays",t_translation:"Entendent, sans texte",t_translationcountry:"Où traduire",t_gaps:"Écarts et opportunités",t_bridges:"Ponts urbains",t_deaf:"L'écart sourd",t_resources:"Ressources par peuple",t_languages:"Langues par pays",t_growth:"Accès vs croissance"},pages:{listTitle:"Ressources de l'Évangile par langue",chartsTitle:"Ressources de l'Évangile — par langue",loadingTables:"Chargement des tableaux…"},list:{noText:"Pas de texte biblique",hasScripture:"A les Écritures",allLanguages:"Toutes les langues",peopleGroup:"peuple",peopleGroups:"peuples",scriptureHere:"Écritures dans cette langue"},columns:{"People group":"Peuple",Country:"Pays",Region:"Région",Language:"Langue",Population:"Population",Religion:"Religion","Gospel access":"Accès à l'Évangile",Resources:"Ressources",Scripture:"Écritures","Bible video":"Vidéo biblique","Gospel presentation":"Présentation de l'Évangile",Countries:"Pays","People groups":"Peuples"},charts:{scriptureAny:"Écritures (toutes)",fullBible:"Bible complète",newTestament:"Nouveau Testament",filmAny:"Film (tous)",nothingInPools:"Rien trouvé dans les sources consultées",nothingInPoolsLower:"rien trouvé dans les sources consultées",noResourceInPools:"aucune ressource trouvée dans les sources consultées",aResourceFound:"une ressource trouvée",tabCoverage:"Couverture des ressources",tabGap:"Plus grands écarts",keyScripture:"écritures",keyFilmStories:"film / histoires",keyAudioEtc:"audio / présentation / formation",unresolvedCode:"code hors ISO 639-3 — non résolu, non mesuré"}},Sh={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."},Lh={title:{adoption:"Progression de l'adoption",affinityBlocs:"Blocs d'affinité",doxaRegions:"Régions Doxa",engagement:"Progression de l'engagement",gospelResources:"Ressources de l'Évangile",languageFamilies:"Familles de langues",prayer:"Progression de la prière",upg100List:"Ma liste UPG 100"},header:{collapsed:"Légende",peopleGroupFallback:"Groupe de personnes",default:"Légende"},prayer:{needsPrayer:"Besoin de prière",hasPrayer:"Prière en cours",fullPrayerCoverage:"Couverture de prière complète"},progress:{title:"Progression",covered:"{covered} sur {total} groupes de personnes couverts par la prière · {pct}%",short:"{covered} sur {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Besoin d'engagement",hasEngagement:"Engagement en cours"},adoption:{needsAdoption:"Besoin d'adoption",hasAdoption:"Adoption en cours"},columns:{upgs:"UUPGs",population:"Population",name:"Nom"},footer:{total:"Total"},sortByUpgs:"Trier par UUPG",sortByPop:"Trier par population",colLabel:{religion:"Religions UUPG",prayer:"Statut de prière",engagement:"Statut d'engagement",adoption:"Statut d'adoption",status:"Statut"},titleBar:{legend:"Légende",peopleGroups:"Peuples",wagfRegions:"Régions WAGF",languages:"Langues"},tabInfo:{upg100Region:"Région — trie les listes UPG-100 par zone du monde (Afrique, Inde, Moyen-Orient, Sourds, …). Les totaux sont les UUPG et la population additionnés sur toutes les listes qu’elle contient.",upg100Zone:"Listes UPG-100 — chacune est une liste de prière des groupes de peuples non atteints d’une zone, et c’est ce que la carte dessine et colore. Chaque liste s’imprime comme son propre livret.",upg100Group:"Groupe de peuples — les groupes non atteints au sein d’une liste, les plus grands besoins de prière en premier. Chaque point de la carte en est un."},a11y:{expandRow:"Développer {label}",collapseRow:"Réduire {label}",clearSelection:"Effacer la sélection"}},Ah={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",upg100WallIntro:"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 par le nom de leur peuple."},Ph={clusterByRegion:"Par région Doxa",clusterByLanguageFamily:"Par famille de langues",clusterByGospelResource:"Par ressource de l'Évangile"},Eh={country:{wagfRegion:"Région WAGF",wagfBlock:"Bloc WAGF",country:"Pays",uupgCount:"Nombre d'UUPG"}},Ch={header:"TOUR DE PRIÈRE ACTUEL",lap:"Tour",upgs:"UUPGs",separator:" sur "},Nh={"%count% people groups in %countries% countries":"%count% peuples dans %countries% pays","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% compte %count% peuples répartis dans %countries% pays. La couleur de chaque point indique combien de personnes prient pour ce peuple.","1+ People Praying":"1+ personnes en prière","100+ People Praying":"100+ personnes en prière",Adopted:"Adopté","Adoption Progress":"Progrès de l'adoption","All Regions":"Toutes les régions","Alternate Names":"Autres noms","Choose a region":"Choisissez une région","Clear All":"Tout effacer",Countries:"Pays","Countries in this region":"Pays de cette région",Country:"Pays",Engaged:"Engagé","Engagement Progress":"Progrès de l'engagement","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Chaque peuple non engagé adopté par une église locale engagée dans la prière, le don et l'envoi","Exact Search":"Recherche exacte","Find unreached people groups by region and country.":"Trouvez des peuples non atteints par région et par pays.","Full Profile":"Profil complet",Goal:"Objectif","Hide Filters":"Masquer les filtres","Hide country posters":"Masquer les affiches du pays",Intercessors:"Intercesseurs","Load More":"Afficher plus","Loading results...":"Chargement des résultats...",Map:"Carte","Mobilize 100+ people praying daily for each DOXA people group":"Mobiliser plus de 100 personnes priant chaque jour pour chaque peuple DOXA","No One Praying":"Personne ne prie","No options found":"Aucun lieu trouvé","No poster has been generated for this country yet.":"Aucune affiche n'a encore été générée pour ce pays.","No unengaged people groups by 2033":"Plus aucun peuple non engagé d'ici 2033","Not Adopted":"Non adopté",Other:"Autre","Page Not Found":"Page introuvable","People Group":"Peuple","People Groups":"Peuples","People committed to praying":"Personnes engagées dans la prière","Pick a region above, or click any dot to open that people group's country.":"Choisissez une région ci-dessus, ou cliquez sur un point pour ouvrir le pays de ce peuple.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Choisissez une région ou un pays dans l’onglet Liste des régions pour affiner ce tableau de bord.",Population:"Population","Prayer Coverage":"Couverture de prière","Prayer coverage progress":"Progression de la couverture de prière","Region Dashboards":"Tableaux de bord des régions","Region dashboard":"Tableau de bord de la région",Regions:"Régions","Regions List":"Liste des régions",Religion:"Religion","Search names, country/continent, religions...":"Rechercher des noms, pays/continent, religions...","See %region% dashboard":"Voir le tableau de bord : %region%","See All":"Tout afficher",Select:"Sélectionner","Select View":"Sélectionner la vue","Show Filters":"Afficher les filtres","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Il y a %count% peuples en %country%. Consultez la carte pour découvrir également les peuples situés à la frontière de ce pays.",Total:"Total","Type to search...":"Entrer votre recherche","Unengaged people groups":"Peuples non engagés","View country posters":"Voir les affiches du pays",Views:"Vues","WAGF Block":"Bloc WAGF","WAGF Region":"Région WAGF","people groups adopted":"peuples adoptés","people groups engaged":"peuples engagés","Outside this region":"Hors de cette région",Pray:"Prier","Loading region dashboards…":"Chargement des tableaux de bord des régions…","No regions found.":"Aucune région trouvée.","Region data could not be loaded. This is a connection problem, not a filter.":"Les données des régions n'ont pas pu être chargées. Il s'agit d'un problème de connexion, pas d'un filtre.","People groups could not be loaded. This is a connection problem, not a filter.":"Les peuples n'ont pas pu être chargés. Il s'agit d'un problème de connexion, pas d'un filtre.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"La carte n'a pas pu démarrer. Il s'agit d'un problème de jeton de carte ou de connexion, pas d'un filtre — les chiffres ci-dessus ne sont pas affectés."},Th={placeholder:"Peuple, lieu, langue, religion",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…"},Rh={title:"Studio de plugins",navLabel:"Plugins par capacité",countLabel:"{bundles} paquets · {elements} plugins listés ici",changeLanguage:"Changer de langue",copyEmbed:"Copier le code d’intégration",copy:"Copier",copied:"Copié",scriptEmbed:"Intégration par script",loading:"Chargement de {name}…",couldNotLoad:"Impossible de charger {name}.",chooseElement:"Choisissez un plugin dans la liste.",filterPlaceholder:"Filtrer les plugins",collapseAll:"Tout replier",noMatch:"Aucun plugin ne correspond à « {query} ».",openSection:"Ouvrir {cap}, {label}",part:"partie",noStandalone:"pas de page autonome",cap5:"Coquille d’application",cap4:"Composite",cap3:"Multivue",cap2:"Préréglage",cap1:"Simple",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier",partOf:"partie de {name}, non publiée seule",mapToken:"Jeton de carte",tokenPaste:"Jeton public Mapbox (pk.…)",tokenUrlLabel:"…ou l’URL d’un service de jetons",tokenApply:"Utiliser",tokenClear:"Effacer",tokenStoredHere:"Conservé dans ce navigateur uniquement.",tokenSourceYours:"Votre jeton est utilisé",tokenSourceUrl:"Jeton obtenu de {url}",tokenSourceBuilt:"Jeton intégré à cette page",tokenSourceNone:"Aucun jeton Mapbox : les cartes Mapbox ne peuvent pas charger (MapLibre n’en a pas besoin)",tokenSecret:"C’est un jeton secret (sk.…). Collez un jeton public (pk.…) : cette page est publique.",tokenNotPk:"Un jeton public Mapbox commence par pk.",tokenUrlFailed:"Impossible d’obtenir un jeton depuis cette URL : {why}",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"},Mh={prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays",upg100Region:"Région",upg100Zone:"Listes UPG-100",upg100Group:"Groupe de peuples",selectView:"Choisir la vue",views:"Vues",prayerResources:"Ressources de prière",map:"Carte"},Oh={kicker:"DOXA · Vision",title:"Chaque peuple. Chaque lieu.",tagline:"De tous les groupes ethniques du monde à ceux pour qui DOXA prie, comptés à partir des données.",funnelLabel:"De tous les groupes ethniques aux groupes ethniques DOXA",allLabel:"Groupes ethniques",allNote:"chaque groupe ethnique, dans chaque pays où il vit",unreachedLabel:"Non atteints",unreachedNote:"moins de 2 % d’évangéliques",frontierLabel:"Frontière",frontierNote:"moins de 0,1 % d’évangéliques",doxaLabel:"Groupes ethniques DOXA",doxaNote:"dont {frontier} de frontière",people:"{n} personnes",sources:"Groupes ethniques : {imb}, données du {date}. Liste DOXA : pray.doxa.life, {date2}.",howCounted:"Comment ces chiffres sont comptés",ruleAll:"Chaque ligne des données IMB : un groupe ethnique dans un pays.",ruleUnreached:"Priorité de perdition IMB 0 à 2 : moins de 2 % d’évangéliques.",ruleFrontier:"Priorité de perdition IMB 0 : moins de 0,1 % d’évangéliques. Un sous-ensemble des non-atteints.",ruleDoxa:"Chaque groupe de la liste de prière DOXA, rapproché des données IMB par peuple et pays. Tous ne sont pas de frontière."},Fh={title:"सभी जनसमूह",locations:"{n} स्थान (समूह × देश)",doxa:"DOXA जनसमूह",frontier:"सीमांत — कुछ शुरू नहीं हुआ",unreached:"अप्रचारित — काम शुरू हो रहा है",reached:"प्रचारित — कलीसिया मौजूद है",hint:"सभी देखने के लिए पंक्ति पर क्लिक करें · सब कुछ देखने के लिए फिर क्लिक करें",loading:"सभी जनसमूह लोड हो रहे हैं…",loadError:"मानचित्र लोड नहीं हो सका।",pray:"उनके लिए प्रार्थना करें →",population:"जनसंख्या {n}"},Ih={backToLegend:"लेजेंड पर वापस जाएं",closeDetailView:"विवरण दृश्य बंद करें",collapseLegend:"लेजेंड संक्षिप्त करें",expandLegend:"लेजेंड विस्तृत करें",toggleLegend:"लेजेंड दिखाएँ या छिपाएँ"},Dh={prayForThem:"उनके लिए प्रार्थना करें",adoptThem:"उन्हें गोद लें",moreInfo:"अधिक जानकारी",zoomIn:"ज़ूम इन",zoomOut:"ज़ूम आउट",switchToLightMode:"लाइट मोड पर जाएं",switchToDarkMode:"डार्क मोड पर जाएं",resetView:"दृश्य रीसेट करें",toggleFullscreen:"फ़ुलस्क्रीन टॉगल करें",aboutThisMap:"इस मानचित्र के बारे में",closeMenu:"मेनू बंद करें",reloadMap:"मानचित्र पुनः लोड करें",showClusters:"क्लस्टर दिखाएं",clusterSettings:"क्लस्टर सेटिंग्स",startAutoFly:"ऑटो फ्लाई शुरू करें",stopFlight:"उड़ान रोकें",speedLabel:"गति:",speedOption:{slow:"धीमी",normal:"सामान्य",fast:"तेज़"},shareEmbed:"साझा करें और एम्बेड करें",posterMap:"पोस्टर मानचित्र",prayerList:"प्रार्थना सूची",cardDeck:"कार्ड सेट",printOptions:"छपाई विकल्प",showOnMap:"मानचित्र पर देखें",close:"बंद करें",showOnMapAria:"{label} को मानचित्र पर देखें",cardStockAria:"प्रार्थना कार्ड का आकार",previewPrintPoster:"{label} पोस्टर देखें और प्रिंट करें",share:"साझा करें",shareSteps:["इस मानचित्र को अपनी वेबसाइट पर लगाएँ","अपने शहर की वेबसाइटों की सूची बनाएँ","उन्हें भी इसे लगाना सिखाएँ","उन्हें सिखाएँ कि वे औरों को लगाना सिखाएँ","यीशु के लिए हर जगह मानचित्र बढ़ाएँ!"],clearSelection:"चयन हटाएँ",noOptions:"कोई विकल्प नहीं मिला",renderingLocal:"आपके ब्राउज़र में प्रिंट-गुणवत्ता वाली छवि बन रही है — कुछ भी अपलोड नहीं किया जाता।",postersPerRow:"प्रति पंक्ति पोस्टर"},Uh={title:"इंटरनेट पहुँच जहाँ बिना सहभागिता वाले जनसमूह रहते हैं",bands:{yes:"जुड़ा हुआ 60%+",partial:"आंशिक 25–59%",no:"कम, 25% से नीचे",unknown:"मापा नहीं गया"},peopleGroup:"जनसमूह",caveat:"राष्ट्रीय आँकड़े (विश्व बैंक)। शहर-स्तर की कनेक्टिविटी सार्वजनिक रूप से उपलब्ध नहीं है — देश के आँकड़ों से किसी शहर का अनुमान न लगाएँ।",sheet:{close:"बंद करें",ai:"यह डेटा एआई गहन शोध से मिला है — इसमें गलत जानकारी हो सकती है।",dismiss:"हटाएँ",internetUsers:"इंटरनेट उपयोगकर्ता",measured:"मापा गया",mobilePer100:"प्रति 100 मोबाइल",peopleGroups:"जनसमूह",topPlatform:"शीर्ष प्लेटफ़ॉर्म",unknown:"अज्ञात",carriers:"कैरियर और आईएसपी ({n})",socialPlatforms:"सोशल प्लेटफ़ॉर्म",note:"ये राष्ट्रीय आँकड़े हैं, शहरों के माप नहीं। कैरियर के नाम ASN रजिस्ट्री धारकों के हैं — उनमें आईएसपी के साथ बैंक और विश्वविद्यालय भी शामिल हैं, इसलिए कैरियर का चिह्न नाम पर आधारित अनुमान है, सत्यापित वर्गीकरण नहीं।"}},Gh={research_controls:"शोध नियंत्रण",clustering:"क्लस्टरिंग",filters:"फ़िल्टर",pin_dim:"पिन धुंधलापन",export_poster:"पोस्टर निर्यात करें…",reload_data:"डेटा फिर से लोड करें",off:"बंद",native:"नेटिव",mst:"MST",network:"नेटवर्क",off_desc:"हर पिन अलग-अलग दिखाएँ",native_desc:"Mapbox वृत्त क्लस्टर (सबसे तेज़)",mst_desc:"न्यूनतम स्पैनिंग ट्री आधारित जाल",network_desc:"निकटतम पड़ोसी को जोड़ने वाली रेखाएँ",search_languages:"भाषाएँ खोजें…",search_religions:"धर्म खोजें…",reset_all:"सब रीसेट करें",no_languages:"अभी कोई भाषा लोड नहीं हुई",no_religions:"अभी कोई धर्म लोड नहीं हुआ",unadopted:"अ-गोद लिया",min:"न्यून",max:"अधि",adopted:"गोद लिया गया",adoption:"गोद लेना",engaged:"संपर्कित",engagement:"सहभागिता",unengaged:"सहभागिता चाहिए",language:"भाषा",religion:"धर्म",population:"जनसंख्या",any:"कोई भी",active_count:"{n} सक्रिय",prayer_status:"प्रार्थना स्थिति",close:"बंद करें",clear:"साफ़ करें",map_controls:"मानचित्र नियंत्रण"},jh={bloc:"समानता समूह",gospel_access:"सुसमाचार पहुँच",people:"जनसमूह",people_name:"जनसमूह (नाम)",praying:"प्रार्थना कर रहे",religion_family:"धर्म परिवार",search_language:"भाषा खोजें",search_people:"जनसमूह खोजें",search_place:"स्थान खोजें",search_religion:"धर्म खोजें",upgs_in_scope:"दायरे में UPG",countries_touched:"छुए गए देश",unreached:"अनपहुँचे",sum_population:"Σ जनसंख्या",sum_praying:"Σ प्रार्थना",charts:"चार्ट",table:"तालिका",cluster:"क्लस्टर",country:"देश",engagement:"सहभागिता",language:"भाषा",language_family:"भाषा परिवार",people_group:"जनसमूह",population:"जनसंख्या",prayer:"प्रार्थना",region:"क्षेत्र",religion:"धर्म",status:"स्थिति",adopted:"गोद लिया गया",filters:"फ़िल्टर",gospel_resources:"सुसमाचार संसाधन",map:"नक्शा",search_placeholder:"जनसमूह, स्थान, भाषा, धर्म खोजें…",any:"कोई भी",active_count:"{n} सक्रिय",prayer_status:"प्रार्थना स्थिति",map_controls:"मानचित्र नियंत्रण",close:"बंद करें",clear:"साफ़ करें",dashboard_title:"बिग पिक्चर शोध डैशबोर्ड",align_dashboard:"डैशबोर्ड संरेखित करें",align_dashboard_tip:"डैशबोर्ड लेआउट को डिफ़ॉल्ट संरेखण पर लौटाएँ",selected:"चयनित",world:"विश्व",vertical_legend:"लंबवत लेजेंड",groups_in_scope:"दायरे में जनसमूह",filter_by:"इससे फ़िल्टर करें",remove_filter:"फ़िल्टर हटाएँ",groups:"जनसमूह",expand:"विस्तार करें",collapse:"संक्षिप्त करें",place:"स्थान"},zh={labels:{country:"देश:",population:"जनसंख्या:",language:"भाषा:",religion:"धर्म:",languageFamily:"भाषा परिवार:",peopleCommitted:"प्रार्थना के लिए प्रतिबद्ध:"},messages:{noDescription:"कोई विवरण उपलब्ध नहीं है।"}},Bh={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"नीचे दी गई व्याख्यात्मक टिप्पणियाँ अंग्रेज़ी में हैं।"},mode:{gap:"कमी",coverage:"उपलब्ध संसाधन"},search:{placeholder:"जनसमूह, भाषा या ISO कोड खोजें",clear:"खोज साफ़ करें",none:"इस नाम, भाषा या कोड से कुछ भी मेल नहीं खाता।",placeholderShort:"जनसमूह, भाषा या ISO कोड"},legend:{title:"ऐसे जनसमूह जिन तक सुसमाचार नहीं पहुँचा और कोई संसाधन नहीं मिला",band60:"60%+ के पास कुछ नहीं",band30:"30–59%",bandSome:"कुछ जनसमूह",bandAll:"सभी जनसमूहों के पास कुछ है",tier2:"पवित्र शास्त्र और फ़िल्म",tier1:"कुछ संसाधन मिला",tier0:"कुछ नहीं मिला",hnr:"सुन सकते हैं, पाठ नहीं",showAll:"सभी जनसमूह दिखाएँ",titleCoverage:"ऐसे अनपहुँचे जनसमूह जिनके लिए कुछ सुसमाचार संसाधन मिला",cov80:"80%+ के पास कुछ है",cov50:"50–79%",cov1:"1–49%",cov0:"किसी के लिए कुछ नहीं",tallyEach:"हर",tallyIs:"एक जनसमूह है —",tallyOf:"में से,",tallyLink:"के पास लिंक है",doxa0:"सभी के पास कुछ है",doxa1:"1–4 के पास कुछ नहीं",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 तक पहुँच",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"इस मानचित्र पर दोक्सा जनसमूह",notPlaced:"सूची में, अभी स्थान नहीं",outOfScope:"कोई दोक्सा जनसमूह नहीं — रंग नहीं"},tabs:{groups:"सबसे बड़े जनसमूह",countries:"देश के अनुसार",regions:"क्षेत्र के अनुसार",noprayer:"कोई प्रार्थना नहीं कर रहा",hnr:"सुन सकते हैं, पाठ नहीं"},stat:{language:"भाषा",population:"जनसंख्या",countries:"देश",peopleGroups:"जनसमूह",noResource:"कोई संसाधन नहीं मिला",peopleAffected:"प्रभावित लोग",haveScripture:"पवित्र शास्त्र उपलब्ध",haveFilm:"फ़िल्म उपलब्ध",haveAudio:"ऑडियो शास्त्र उपलब्ध",signLanguages:"सांकेतिक भाषाएँ",growingUnreached:"बढ़ते और अनपहुँचे",deathsDay:"अनुमानित मृत्यु/दिन"},sheet:{ownLanguage:"उनकी अपनी भाषा में",close:"बंद करें",loading:"संसाधन लोड हो रहे हैं…",pray:"के लिए प्रार्थना करें",everyResource:"में सभी संसाधन",alsoSpeak:"यह भी बोलते हैं"},res:{scripture:"पवित्र शास्त्र",film:"फ़िल्म",audio:"ऑडियो",bibleVideo:"बाइबल वीडियो",bibleStories:"Open Bible Stories",gospelAudio:"सुसमाचार ऑडियो",gospelPresentation:"सुसमाचार प्रस्तुति",scriptureEarth:"Scripture Earth",training:"शिष्यत्व प्रशिक्षण",jesusFilm:"यीशु फ़िल्म",audioScripture:"ऑडियो पवित्र शास्त्र",bibleStoriesPlain:"बाइबल की कहानियाँ"},state:{noneFound:"कुछ नहीं मिला",noneAtFcbh:"FCBH में कुछ नहीं",noneAtGrn:"GRN में कुछ नहीं",notInZume:"Zume की 54 भाषाओं में नहीं",linkChecked:"लिंक जाँचा गया",unchecked:"अनजाँचा",linkDead:"लिंक निष्क्रिय",wrongLanguage:"ग़लत भाषा",varietyNotStated:"(उपभाषा नहीं बताई गई)",inLanguage:"में"},guide:{dotVsCountry:"हर बिंदु दोक्सा का एक जनसमूह और उसकी अपनी भाषा है; देश का रंग उन जनसमूहों की संख्या है।",noneFoundShort:"“कुछ नहीं मिला” का अर्थ है जाँचे गए स्रोतों में नहीं — यह प्रमाण नहीं कि कुछ है ही नहीं।",tapCountry:"संसाधन देखने के लिए किसी देश पर टैप करें, जनसमूह दर जनसमूह।"},tables:{title:"सुसमाचार संसाधन — डेटा",showing:"दिखा रहे हैं",of:"में से",for:"के लिए",filteredTo:"फ़िल्टर:",showAll:"सभी संसाधन दिखाएँ",t_doxa:"दोक्सा — सुसमाचार पहुँच",t_links:"हर संसाधन + लिंक",t_nothing:"जहाँ कुछ नहीं मिला",t_countrygap:"देश अनुसार कमी",t_translation:"सुन सकते हैं, पाठ नहीं",t_translationcountry:"अनुवाद कहाँ करें",t_gaps:"कमियाँ और अवसर",t_bridges:"नगर सेतु",t_deaf:"बधिर कमी",t_resources:"जनसमूह अनुसार संसाधन",t_languages:"देश अनुसार भाषाएँ",t_growth:"पहुँच बनाम जनसंख्या वृद्धि"},pages:{listTitle:"भाषा अनुसार सुसमाचार संसाधन",chartsTitle:"सुसमाचार संसाधन — भाषा अनुसार",loadingTables:"संसाधन तालिकाएँ लोड हो रही हैं…"},list:{noText:"कोई लिखित शास्त्र नहीं",hasScripture:"शास्त्र उपलब्ध",allLanguages:"सभी भाषाएँ",peopleGroup:"जनसमूह",peopleGroups:"जनसमूह",scriptureHere:"इस भाषा में पवित्र शास्त्र"},columns:{"People group":"जनसमूह",Country:"देश",Region:"क्षेत्र",Language:"भाषा",Population:"जनसंख्या",Religion:"धर्म","Gospel access":"सुसमाचार पहुँच",Resources:"संसाधन",Scripture:"पवित्र शास्त्र","Bible video":"बाइबल वीडियो","Gospel presentation":"सुसमाचार प्रस्तुति",Countries:"देश","People groups":"जनसमूह"},charts:{scriptureAny:"पवित्र शास्त्र (कोई भी)",fullBible:"पूरी बाइबल",newTestament:"नया नियम",filmAny:"फ़िल्म (कोई भी)",nothingInPools:"जाँचे गए स्रोतों में कुछ नहीं मिला",nothingInPoolsLower:"जाँचे गए स्रोतों में कुछ नहीं मिला",noResourceInPools:"जाँचे गए स्रोतों में कोई संसाधन नहीं मिला",aResourceFound:"एक संसाधन मिला",tabCoverage:"संसाधन कवरेज",tabGap:"सबसे बड़े अंतराल",keyScripture:"पवित्र शास्त्र",keyFilmStories:"फ़िल्म / कहानियाँ",keyAudioEtc:"ऑडियो / प्रस्तुति / प्रशिक्षण",unresolvedCode:"ISO 639-3 से बाहर कोड — अनसुलझा, मापा नहीं गया"}},Vh={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:"जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।"},qh={title:{adoption:"गोद लेने की प्रगति",affinityBlocs:"समानता समूह",doxaRegions:"Doxa क्षेत्र",engagement:"सहभागिता प्रगति",gospelResources:"सुसमाचार संसाधन",languageFamilies:"भाषा परिवार",prayer:"प्रार्थना प्रगति",upg100List:"मेरी UPG 100 सूची"},header:{collapsed:"किंवदंती",peopleGroupFallback:"जनजाति समूह",default:"सूचकांक"},prayer:{needsPrayer:"प्रार्थना चाहिए",hasPrayer:"प्रार्थना है",fullPrayerCoverage:"पूर्ण प्रार्थना कवरेज"},progress:{title:"प्रगति",covered:"{total} में से {covered} जनजाति समूह प्रार्थना में कवर · {pct}%",short:"{total} में से {covered} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"सहभागिता चाहिए",hasEngagement:"सहभागिता है"},adoption:{needsAdoption:"गोद लेना चाहिए",hasAdoption:"गोद लिया गया"},columns:{upgs:"UUPGs",population:"जनसंख्या",name:"नाम"},footer:{total:"कुल"},sortByUpgs:"UUPG के अनुसार क्रमबद्ध करें",sortByPop:"जनसंख्या के अनुसार क्रमबद्ध करें",colLabel:{religion:"UUPG धर्म",prayer:"प्रार्थना स्थिति",engagement:"सहभागिता स्थिति",adoption:"गोद लेने की स्थिति",status:"स्थिति"},titleBar:{legend:"सूचकांक",peopleGroups:"जनसमूह",wagfRegions:"WAGF क्षेत्र",languages:"भाषाएँ"},tabInfo:{upg100Region:"क्षेत्र — UPG-100 सूचियों को विश्व क्षेत्र के अनुसार क्रमित करता है (अफ़्रीका, भारत, मध्य पूर्व, बधिर, …)। संख्याएँ उसके नीचे की हर सूची के UUPG और जनसंख्या का योग हैं।",upg100Zone:"UPG-100 सूचियाँ — हर एक किसी क्षेत्र के अनपहुँचे जनसमूहों की प्रार्थना सूची है, और यही मानचित्र बनाता और रंगता है। हर सूची अपने अलग पैकेट के रूप में छपती है।",upg100Group:"जनसमूह — किसी सूची के भीतर के अलग-अलग अनपहुँचे समूह, सबसे बड़ी प्रार्थना आवश्यकता पहले। मानचित्र का हर बिंदु इनमें से एक है।"},a11y:{expandRow:"{label} का विस्तार करें",collapseRow:"{label} को छोटा करें",clearSelection:"चयन हटाएँ"}},Hh={menuComingSoon:"मेनू शीघ्र आ रहा है",pinHint:{tapDot:"किसी रंगीन बिंदु पर टैप करें — किसी को अभी भी प्रार्थना की आवश्यकता है"},upg100WallHeading:"मेरी UPG 100 सूची — प्रार्थना सूचियाँ और पोस्टर",upg100WallTag:"प्रार्थना लामबंदी",upg100WallIntro:"प्रार्थना के काम को पचास-पचास और सौ-सौ के समूहों में बाँटें — जैसे यीशु ने 5,000 लोगों को खिलाया (लूका 9:14)। हर पोस्टर 100 की एक सूची है जिसके लिए आप प्रार्थना कर सकते हैं, छाप सकते हैं और दीवार पर लगा सकते हैं — उनके लिए उनके जनसमूह के नाम से प्रार्थना करते हुए।"},Wh={clusterByRegion:"Doxa क्षेत्र के अनुसार",clusterByLanguageFamily:"भाषा परिवार के अनुसार",clusterByGospelResource:"सुसमाचार संसाधन के अनुसार"},Kh={country:{wagfRegion:"WAGF क्षेत्र",wagfBlock:"WAGF ब्लॉक",country:"देश",uupgCount:"UUPG संख्या"}},Yh={header:"वर्तमान प्रार्थना चक्र",lap:"चक्र",upgs:"UUPGs",separator:" में से "},Xh={"%count% people groups in %countries% countries":"%countries% देशों में %count% जनसमूह","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% में %countries% देशों में %count% लोगों के समूह हैं। प्रत्येक बिंदु का रंग दर्शाता है कि उस लोगों के समूह के लिए कितने लोग प्रार्थना कर रहे हैं।","1+ People Praying":"1+ लोग प्रार्थना कर रहे हैं","100+ People Praying":"100+ लोग प्रार्थना कर रहे हैं",Adopted:"गोद लिया गया","Adoption Progress":"गोद लेने की प्रगति","All Regions":"सभी क्षेत्र","Alternate Names":"वैकल्पिक नाम","Choose a region":"क्षेत्र चुनें","Clear All":"सभी साफ़ करें",Countries:"देश","Countries in this region":"इस क्षेत्र के देश",Country:"देश",Engaged:"संपर्कित","Engagement Progress":"संलग्नता की प्रगति","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"प्रत्येक असंलग्न जनसमूह जिसे प्रार्थना, दान और भेजने के लिए प्रतिबद्ध एक चर्च ने अपनाया है।","Exact Search":"सटीक खोज","Find unreached people groups by region and country.":"क्षेत्र और देश के अनुसार अगम्य लोगों के समूह खोजें।","Full Profile":"पूरी प्रोफ़ाइल",Goal:"लक्ष्य","Hide Filters":"फ़िल्टर छिपाएँ","Hide country posters":"देश के पोस्टर छिपाएँ",Intercessors:"मध्यस्थ","Load More":"और लोड करें","Loading results...":"परिणाम लोड हो रहे हैं..।",Map:"नक्शा","Mobilize 100+ people praying daily for each DOXA people group":"प्रत्येक DOXA जनसमूह के लिए प्रतिदिन प्रार्थना करने हेतु 100+ लोगों को सक्रिय करें।","No One Praying":"कोई प्रार्थना नहीं कर रहा","No options found":"कोई विकल्प नहीं मिला","No poster has been generated for this country yet.":"इस देश के लिए अभी तक कोई पोस्टर नहीं बना है।","No unengaged people groups by 2033":"2033 तक कोई भी संलग्न न किया गया जनसमूह नहीं रहेगा।","Not Adopted":"दत्तक नहीं लिया गया",Other:"अन्य","Page Not Found":"पृष्ठ नहीं मिला","People Group":"लोगों का समूह","People Groups":"जनसमूह","People committed to praying":"प्रार्थना के लिए प्रतिबद्ध लोग","Pick a region above, or click any dot to open that people group's country.":"ऊपर कोई क्षेत्र चुनें, या उस लोगों के समूह का देश खोलने के लिए किसी बिंदु पर क्लिक करें।","Pick a region or a country on the Regions List tab to narrow this dashboard.":"इस डैशबोर्ड को सीमित करने के लिए क्षेत्रों की सूची टैब में कोई क्षेत्र या देश चुनें।",Population:"जनसंख्या","Prayer Coverage":"प्रार्थना कवरेज","Prayer coverage progress":"प्रार्थना कवरेज की प्रगति","Region Dashboards":"क्षेत्र डैशबोर्ड","Region dashboard":"क्षेत्र डैशबोर्ड",Regions:"क्षेत्र","Regions List":"क्षेत्रों की सूची",Religion:"धर्म","Search names, country/continent, religions...":"नाम, देश/महाद्वीप, धर्म खोजें…","See %region% dashboard":"%region% डैशबोर्ड देखें","See All":"सभी देखें",Select:"चयन/छंटनी","Select View":"दृश्य चुनें","Show Filters":"फ़िल्टर दिखाएँ","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"%country% में %count% लोगों के समूह हैं। इस देश की सीमा पर स्थित लोगों के समूहों के लिए मानचित्र भी देखें।",Total:"संपूर्ण","Type to search...":"खोजने के लिए टाइप करें..।","Unengaged people groups":"अनसंपर्कित जनसमूह","View country posters":"देश के पोस्टर देखें",Views:"दृश्य","WAGF Block":"WAGF ब्लॉक","WAGF Region":"डब्ल्यूएजीएफ क्षेत्र","people groups adopted":"जनसमूह गोद लिए गए","people groups engaged":"संपर्कित जनसमूह","Outside this region":"इस क्षेत्र के बाहर",Pray:"प्रार्थना करें","Loading region dashboards…":"क्षेत्र डैशबोर्ड लोड हो रहे हैं…","No regions found.":"कोई क्षेत्र नहीं मिला।","Region data could not be loaded. This is a connection problem, not a filter.":"क्षेत्र डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, फ़िल्टर की नहीं।","People groups could not be loaded. This is a connection problem, not a filter.":"लोकसमूह लोड नहीं हो सके। यह कनेक्शन की समस्या है, फ़िल्टर की नहीं।","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"नक्शा शुरू नहीं हो सका। यह नक्शा-टोकन या कनेक्शन की समस्या है, फ़िल्टर की नहीं — ऊपर के आंकड़े प्रभावित नहीं हैं।"},Zh={placeholder:"लोग, स्थान, भाषा, धर्म",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"},upg100Placeholder:"जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"},Jh={title:"प्लगइन स्टूडियो",navLabel:"क्षमता के अनुसार प्लगइन",countLabel:"{bundles} बंडल · यहाँ {elements} प्लगइन सूचीबद्ध",changeLanguage:"भाषा बदलें",copyEmbed:"एम्बेड कोड कॉपी करें",copy:"कॉपी करें",copied:"कॉपी हो गया",scriptEmbed:"स्क्रिप्ट एम्बेड",loading:"{name} लोड हो रहा है…",couldNotLoad:"{name} लोड नहीं हो सका।",chooseElement:"सूची से कोई प्लगइन चुनें।",filterPlaceholder:"प्लगइन फ़िल्टर करें",collapseAll:"सभी संक्षिप्त करें",noMatch:"“{query}” से कोई प्लगइन मेल नहीं खाता।",openSection:"{cap} खोलें, {label}",part:"भाग",noStandalone:"कोई अलग पेज नहीं",cap5:"ऐप शेल",cap4:"संयुक्त",cap3:"बहु-दृश्य",cap2:"प्रीसेट",cap1:"एकल",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें",partOf:"{name} का भाग, अलग से प्रकाशित नहीं",mapToken:"मानचित्र टोकन",tokenPaste:"Mapbox सार्वजनिक टोकन (pk.…)",tokenUrlLabel:"…या किसी टोकन सेवा का URL",tokenApply:"उपयोग करें",tokenClear:"साफ़ करें",tokenStoredHere:"केवल इसी ब्राउज़र में रखा जाता है।",tokenSourceYours:"आपका टोकन उपयोग हो रहा है",tokenSourceUrl:"{url} से टोकन उपयोग हो रहा है",tokenSourceBuilt:"इस पेज में बना टोकन उपयोग हो रहा है",tokenSourceNone:"कोई Mapbox टोकन नहीं: Mapbox मानचित्र लोड नहीं हो सकते (MapLibre को इसकी ज़रूरत नहीं)",tokenSecret:"यह एक गुप्त टोकन है (sk.…)। सार्वजनिक टोकन (pk.…) चिपकाएँ: यह पेज सार्वजनिक है।",tokenNotPk:"Mapbox सार्वजनिक टोकन pk. से शुरू होता है",tokenUrlFailed:"उस URL से टोकन नहीं मिल सका: {why}",settings:"सेटिंग्स",mapEngine:"मानचित्र इंजन",engineDefault:"हर मानचित्र का अपना",engineMapboxNote:"टोकन चाहिए",engineMaplibreNote:"टोकन की ज़रूरत नहीं",tokenNotNeeded:"MapLibre चुना गया है: इसके मानचित्रों को Mapbox टोकन नहीं चाहिए"},Qh={prayer:"प्रार्थना",adoption:"गोद लेना",engagement:"सहभागिता","affinity-blocks":"जनसमूह",regions:"क्षेत्र",countries:"देश","language-families":"भाषाएँ",religion:"धर्म",family:"भाषा परिवार",language:"भाषा",dialect:"बोली/रूप",bloc:"समानता समूह",cluster:"क्लस्टर",group:"जनसमूह",pgic:"देश में जनसमूह",region:"WAGF क्षेत्र",block:"WAGF ब्लॉक",country:"देश",upg100Region:"क्षेत्र",upg100Zone:"UPG-100 सूचियाँ",upg100Group:"जनसमूह",selectView:"दृश्य चुनें",views:"दृश्य",prayerResources:"प्रार्थना संसाधन",map:"मानचित्र"},em={kicker:"DOXA · दर्शन",title:"हर जनसमूह। हर स्थान।",tagline:"दुनिया के हर जनसमूह से उन तक जिनके लिए DOXA प्रार्थना करता है, आँकड़ों से गिने गए।",funnelLabel:"सभी जनसमूहों से DOXA जनसमूहों तक",allLabel:"जनसमूह",allNote:"हर जनसमूह, हर उस देश में जहाँ वह रहता है",unreachedLabel:"अप्रचारित",unreachedNote:"2% से कम इवेंजेलिकल",frontierLabel:"सीमांत",frontierNote:"0.1% से कम इवेंजेलिकल",doxaLabel:"DOXA जनसमूह",doxaNote:"इनमें से {frontier} सीमांत हैं",people:"{n} लोग",sources:"जनसमूह: {imb}, {date} के आँकड़े। DOXA सूची: pray.doxa.life, {date2}।",howCounted:"ये कैसे गिने गए",ruleAll:"IMB जनसमूह आँकड़ों की हर पंक्ति: एक देश में एक जनसमूह।",ruleUnreached:"IMB लॉस्टनेस प्राथमिकता 0 से 2: 2% से कम इवेंजेलिकल।",ruleFrontier:"IMB लॉस्टनेस प्राथमिकता 0: 0.1% से कम इवेंजेलिकल। अप्रचारितों का एक भाग।",ruleDoxa:"DOXA प्रार्थना सूची का हर समूह, जनसमूह और देश के आधार पर IMB आँकड़ों से मिलाया गया। सभी सीमांत नहीं हैं।"},tm={title:"Tutti i gruppi etnici",locations:"{n} località (gruppo × paese)",doxa:"Gruppi etnici DOXA",frontier:"Frontiera — non è iniziato nulla",unreached:"Non raggiunti — il lavoro inizia",reached:"Raggiunti — la chiesa c’è",hint:"Fai clic su una riga per vederli tutti · di nuovo per vedere tutto",loading:"Caricamento di tutti i gruppi etnici…",loadError:"Impossibile caricare la mappa.",pray:"Prega per loro →",population:"pop. {n}"},om={backToLegend:"Torna alla legenda",closeDetailView:"Chiudi vista dettaglio",collapseLegend:"Comprimi la legenda",expandLegend:"Espandi la legenda",toggleLegend:"Mostra o nascondi la legenda"},nm={prayForThem:"Prega per loro",adoptThem:"Adottali",moreInfo:"Più informazioni",zoomIn:"Ingrandisci",zoomOut:"Riduci",switchToLightMode:"Passa alla modalità chiara",switchToDarkMode:"Passa alla modalità scura",resetView:"Reimposta vista",toggleFullscreen:"Attiva/disattiva schermo intero",aboutThisMap:"Informazioni su questa mappa",closeMenu:"Chiudi menu",reloadMap:"Ricarica mappa",showClusters:"Mostra cluster",clusterSettings:"Impostazioni cluster",startAutoFly:"Avvia volo automatico",stopFlight:"Ferma volo",speedLabel:"Velocità:",speedOption:{slow:"Lenta",normal:"Normale",fast:"Veloce"},shareEmbed:"Condividi e incorpora",posterMap:"Mappa del poster",prayerList:"Lista di preghiera",cardDeck:"Mazzo di carte",printOptions:"Opzioni di stampa",showOnMap:"Mostra sulla mappa",close:"Chiudi",showOnMapAria:"Mostra {label} sulla mappa",cardStockAria:"Formato della scheda di preghiera",previewPrintPoster:"Anteprima e stampa del poster {label}",share:"Condividi",shareSteps:["Incorpora questa mappa nel tuo sito","Fai un elenco dei siti web della tua città","Insegna loro a incorporarla a loro volta","Insegna loro a formare altri a incorporarla","Moltiplichiamo le mappe ovunque per Gesù!"],clearSelection:"Cancella la selezione",noOptions:"Nessuna opzione trovata",renderingLocal:"Un’immagine con qualità di stampa viene generata nel tuo browser: nulla viene caricato.",postersPerRow:"Poster per riga"},am={title:"Accesso a internet dove vivono i popoli senza impegno",bands:{yes:"connesso 60%+",partial:"parziale 25–59%",no:"basso, sotto il 25%",unknown:"non misurato"},peopleGroup:"popolo",caveat:"Dati NAZIONALI (Banca Mondiale). La connettività per città non è disponibile pubblicamente: non dedurre una città dal suo paese.",sheet:{close:"Chiudi",ai:"Questi dati provengono da una ricerca approfondita con IA e possono contenere informazioni errate.",dismiss:"Ignora",internetUsers:"Utenti internet",measured:"Misurato",mobilePer100:"Cellulari ogni 100",peopleGroups:"Popoli",topPlatform:"Piattaforma principale",unknown:"sconosciuto",carriers:"Operatori e ISP ({n})",socialPlatforms:"Piattaforme social",note:"Dati nazionali, non misure per città. I nomi degli operatori sono titolari di registri ASN (includono banche e università oltre agli ISP), quindi l'etichetta di operatore è un'euristica basata sul nome, non una classificazione verificata."}},sm={research_controls:"Controlli di ricerca",clustering:"Raggruppamento",filters:"Filtri",pin_dim:"Opacità dei punti",export_poster:"Esporta poster…",reload_data:"Ricarica i dati",off:"Disattivato",native:"Nativo",mst:"MST",network:"Rete",off_desc:"Mostra ogni punto singolarmente",native_desc:"Cluster circolari Mapbox (il più veloce)",mst_desc:"Reti di affinità ad albero ricoprente minimo",network_desc:"Linee verso il vicino più prossimo",search_languages:"Cerca lingue…",search_religions:"Cerca religioni…",reset_all:"Reimposta tutto",no_languages:"Nessuna lingua ancora caricata",no_religions:"Nessuna religione ancora caricata",unadopted:"Non adottato",min:"min",max:"max",adopted:"Adottato",adoption:"Adozione",engaged:"Coinvolto",engagement:"Impegno",unengaged:"Necessita impegno",language:"Lingua",religion:"Religione",population:"Popolazione",any:"Tutti",active_count:"{n} attivi",prayer_status:"Stato di preghiera",close:"Chiudi",clear:"Cancella",map_controls:"Controlli della mappa"},rm={bloc:"Blocco di affinità",gospel_access:"Accesso al vangelo",people:"Popoli",people_name:"Popolo (nome)",praying:"In preghiera",religion_family:"Famiglia religiosa",search_language:"Cerca lingua",search_people:"Cerca popolo",search_place:"Cerca luogo",search_religion:"Cerca religione",upgs_in_scope:"UPG nell’ambito",countries_touched:"paesi toccati",unreached:"non raggiunti",sum_population:"Σ popolazione",sum_praying:"Σ in preghiera",charts:"Grafici",table:"Tabella",cluster:"Cluster",country:"Paese",engagement:"Impegno",language:"Lingua",language_family:"Famiglia linguistica",people_group:"Popolo",population:"Popolazione",prayer:"Preghiera",region:"Regione",religion:"Religione",status:"Stato",adopted:"Adottato",filters:"Filtri",gospel_resources:"Risorse del Vangelo",map:"Mappa",search_placeholder:"Cerca popoli, luoghi, lingue, religioni…",any:"Tutti",active_count:"{n} attivi",prayer_status:"Stato di preghiera",map_controls:"Controlli della mappa",close:"Chiudi",clear:"Cancella",dashboard_title:"Cruscotto di ricerca generale",align_dashboard:"Allinea cruscotto",align_dashboard_tip:"Ripristina la disposizione predefinita del cruscotto",selected:"Selezionato",world:"Mondo",vertical_legend:"Legenda verticale",groups_in_scope:"popoli nell’ambito",filter_by:"Filtra per",remove_filter:"Rimuovi filtro",groups:"popoli",expand:"Espandi",collapse:"Comprimi",place:"Luogo"},im={labels:{country:"Paese:",population:"Popolazione:",language:"Lingua:",religion:"Religione:",languageFamily:"Famiglia linguistica:",peopleCommitted:"Impegnati a pregare:"},messages:{noDescription:"Nessuna descrizione disponibile."}},lm={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"Le note esplicative qui sotto sono in inglese."},mode:{gap:"Divario",coverage:"Risorse trovate"},search:{placeholder:"Cerca un popolo, una lingua o un codice ISO",clear:"Cancella ricerca",none:"Nessuna corrispondenza per quel nome, lingua o codice.",placeholderShort:"Popolo, lingua o codice ISO"},legend:{title:"Popoli non raggiunti senza alcuna risorsa del vangelo",band60:"60%+ senza nulla",band30:"30–59%",bandSome:"alcuni popoli",bandAll:"tutti i popoli hanno qualcosa",tier2:"Scritture e film",tier1:"qualche risorsa trovata",tier0:"nulla trovato",hnr:"possono ascoltarlo, nessun testo",showAll:"Mostra tutti i popoli",titleCoverage:"Popoli non raggiunti con qualche risorsa del vangelo",cov80:"80%+ hanno qualcosa",cov50:"50–79%",cov1:"1–49%",cov0:"nulla per nessuno",tallyEach:"Ogni",tallyIs:"è UN popolo —",tallyOf:"di questi,",tallyLink:"con un link",doxa0:"tutti hanno qualcosa",doxa1:"1–4 senza nulla",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 raggiunti",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Popoli Doxa su questa mappa",notPlaced:"in elenco, non ancora collocati",outOfScope:"nessun popolo Doxa — non colorato"},tabs:{groups:"Popoli più numerosi",countries:"Per paese",regions:"Per regione",noprayer:"Nessuno prega",hnr:"Ascoltano, senza testo"},stat:{language:"Lingua",population:"Popolazione",countries:"Paesi",peopleGroups:"Popoli",noResource:"Nessuna risorsa trovata",peopleAffected:"Persone coinvolte",haveScripture:"Hanno le Scritture",haveFilm:"Hanno il film",haveAudio:"Hanno le Scritture in audio",signLanguages:"Lingue dei segni",growingUnreached:"In crescita e non raggiunti",deathsDay:"Decessi stimati/giorno"},sheet:{ownLanguage:"Nella loro lingua",close:"Chiudi",loading:"Caricamento risorse…",pray:"Prega per",everyResource:"Tutte le risorse in",alsoSpeak:"Parlano anche"},res:{scripture:"Scritture",film:"Film",audio:"Audio",bibleVideo:"Video biblico",bibleStories:"Open Bible Stories",gospelAudio:"Audio del Vangelo",gospelPresentation:"Presentazione del Vangelo",scriptureEarth:"Scripture Earth",training:"Formazione al discepolato",jesusFilm:"Film GESÙ",audioScripture:"Scritture in audio",bibleStoriesPlain:"Storie bibliche"},state:{noneFound:"nulla trovato",noneAtFcbh:"nulla presso FCBH",noneAtGrn:"nulla presso GRN",notInZume:"non tra le 54 di Zume",linkChecked:"link verificato",unchecked:"non verificato",linkDead:"link non attivo",wrongLanguage:"lingua errata",varietyNotStated:"(varietà non indicata)",inLanguage:"in"},guide:{dotVsCountry:"Ogni punto è UN popolo di Doxa con la sua lingua; un paese è il NUMERO di quei popoli.",noneFoundShort:"«Nulla trovato» significa assente dalle fonti controllate, mai la prova che non esista.",tapCountry:"Tocca un paese per vedere le risorse, popolo per popolo."},tables:{title:"Risorse del Vangelo — Dati",showing:"Mostrando",of:"di",for:"per",filteredTo:"Filtrato per",showAll:"Mostra tutte le risorse",t_doxa:"Doxa — Accesso al Vangelo",t_links:"Ogni risorsa + link",t_nothing:"Dove non si è trovato nulla",t_countrygap:"Il divario per paese",t_translation:"Ascoltano, senza testo",t_translationcountry:"Dove tradurre",t_gaps:"Divari e opportunità",t_bridges:"Ponti urbani",t_deaf:"Il divario sordo",t_resources:"Risorse per popolo",t_languages:"Lingue per paese",t_growth:"Accesso vs crescita"},pages:{listTitle:"Risorse del Vangelo per lingua",chartsTitle:"Risorse del Vangelo — per lingua",loadingTables:"Caricamento delle tabelle…"},list:{noText:"Nessun testo biblico",hasScripture:"Ha le Scritture",allLanguages:"Tutte le lingue",peopleGroup:"popolo",peopleGroups:"popoli",scriptureHere:"Scritture in questa lingua"},columns:{"People group":"Popolo",Country:"Paese",Region:"Regione",Language:"Lingua",Population:"Popolazione",Religion:"Religione","Gospel access":"Accesso al Vangelo",Resources:"Risorse",Scripture:"Scritture","Bible video":"Video biblico","Gospel presentation":"Presentazione del Vangelo",Countries:"Paesi","People groups":"Popoli"},charts:{scriptureAny:"Scritture (qualsiasi)",fullBible:"Bibbia completa",newTestament:"Nuovo Testamento",filmAny:"Film (qualsiasi)",nothingInPools:"Nulla trovato nelle fonti controllate",nothingInPoolsLower:"nulla trovato nelle fonti controllate",noResourceInPools:"nessuna risorsa trovata nelle fonti controllate",aResourceFound:"una risorsa trovata",tabCoverage:"Copertura delle risorse",tabGap:"Lacune maggiori",keyScripture:"scritture",keyFilmStories:"film / storie",keyAudioEtc:"audio / presentazione / formazione",unresolvedCode:"codice fuori ISO 639-3 — non risolto, non misurato"}},cm={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."},um={title:{adoption:"Avanzamento dell'adozione",affinityBlocs:"Blocchi di affinità",doxaRegions:"Regioni Doxa",engagement:"Avanzamento dell'impegno",gospelResources:"Risorse del Vangelo",languageFamilies:"Famiglie linguistiche",prayer:"Avanzamento della preghiera",upg100List:"La mia lista UPG 100"},header:{collapsed:"Legenda",peopleGroupFallback:"Gruppo di persone",default:"Legenda"},prayer:{needsPrayer:"Necessita preghiera",hasPrayer:"Ha preghiera",fullPrayerCoverage:"Copertura di preghiera completa"},progress:{title:"Avanzamento",covered:"{covered} di {total} gruppi di persone coperti dalla preghiera · {pct}%",short:"{covered} di {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necessita impegno",hasEngagement:"Ha impegno"},adoption:{needsAdoption:"Necessita adozione",hasAdoption:"Ha adozione"},columns:{upgs:"UUPGs",population:"Popolazione",name:"Nome"},footer:{total:"Totale"},sortByUpgs:"Ordina per UUPG",sortByPop:"Ordina per popolazione",colLabel:{religion:"Religioni UUPG",prayer:"Stato della preghiera",engagement:"Stato dell'impegno",adoption:"Stato dell'adozione",status:"Stato"},titleBar:{legend:"Legenda",peopleGroups:"Popoli",wagfRegions:"Regioni WAGF",languages:"Lingue"},tabInfo:{upg100Region:"Regione — ordina le liste UPG-100 per area del mondo (Africa, India, Medio Oriente, Sordi, …). I totali sono gli UUPG e la popolazione sommati di ogni lista sottostante.",upg100Zone:"Liste UPG-100 — ognuna è una lista di preghiera dei gruppi etnici non raggiunti di un’area, ed è ciò che la mappa disegna e colora. Ogni lista si stampa come il proprio fascicolo.",upg100Group:"Gruppo etnico — i singoli gruppi non raggiunti dentro una lista, prima quelli con maggiore bisogno di preghiera. Ogni punto della mappa è uno di questi."},a11y:{expandRow:"Espandi {label}",collapseRow:"Comprimi {label}",clearSelection:"Cancella la selezione"}},pm={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",upg100WallIntro:"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 con il nome del loro popolo."},dm={clusterByRegion:"Per regione Doxa",clusterByLanguageFamily:"Per famiglia linguistica",clusterByGospelResource:"Per risorsa del Vangelo"},gm={country:{wagfRegion:"Regione WAGF",wagfBlock:"Blocco WAGF",country:"Paese",uupgCount:"Numero di UUPG"}},fm={header:"GIRO DI PREGHIERA ATTUALE",lap:"Giro",upgs:"UUPGs",separator:" di "},hm={"%count% people groups in %countries% countries":"%count% popoli in %countries% paesi","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% conta %count% popoli in %countries% paesi. Il colore di ogni punto indica quante persone pregano per quel popolo.","1+ People Praying":"1+ persone in preghiera","100+ People Praying":"100+ persone in preghiera",Adopted:"Adottato","Adoption Progress":"Avanzamento dell'adozione","All Regions":"Tutte le regioni","Alternate Names":"Nomi alternativi","Choose a region":"Scegli una regione","Clear All":"Cancella tutto",Countries:"Paesi","Countries in this region":"Paesi di questa regione",Country:"Paese",Engaged:"Coinvolto","Engagement Progress":"Avanzamento dell'impegno","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Ogni popolo non ancora raggiunto adottato da una chiesa impegnata nella preghiera, nel dare e nell'inviare","Exact Search":"Ricerca esatta","Find unreached people groups by region and country.":"Trova i popoli non raggiunti per regione e paese.","Full Profile":"Profilo completo",Goal:"Obiettivo","Hide Filters":"Nascondi i filtri","Hide country posters":"Nascondi i poster del paese",Intercessors:"Intercessori","Load More":"Carica altri","Loading results...":"Caricamento dei risultati…",Map:"Mappa","Mobilize 100+ people praying daily for each DOXA people group":"Mobilitare oltre 100 persone che pregano ogni giorno per ciascun popolo DOXA","No One Praying":"Nessuno prega","No options found":"Nessuna opzione trovata","No poster has been generated for this country yet.":"Per questo paese non è ancora stato generato alcun poster.","No unengaged people groups by 2033":"Nessun popolo senza impegno entro il 2033","Not Adopted":"Non adottato",Other:"Altro","Page Not Found":"Pagina non trovata","People Group":"Popolo","People Groups":"Popoli","People committed to praying":"Persone impegnate a pregare","Pick a region above, or click any dot to open that people group's country.":"Scegli una regione qui sopra, oppure clicca su un punto per aprire il paese di quel gruppo etnico.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Scegli una regione o un paese nella scheda Elenco delle regioni per restringere questo cruscotto.",Population:"Popolazione","Prayer Coverage":"Copertura della preghiera","Prayer coverage progress":"Avanzamento della copertura di preghiera","Region Dashboards":"Cruscotti delle regioni","Region dashboard":"Cruscotto della regione",Regions:"Regioni","Regions List":"Elenco delle regioni",Religion:"Religione","Search names, country/continent, religions...":"Cerca nomi, paese/continente, religioni…","See %region% dashboard":"Vedi il cruscotto di %region%","See All":"Vedi tutto",Select:"Seleziona","Select View":"Seleziona vista","Show Filters":"Mostra i filtri","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"In %country% ci sono %count% popoli. Controlla sulla mappa anche i popoli ai confini di questo paese.",Total:"Totale","Type to search...":"Digita per cercare…","Unengaged people groups":"Popoli senza impegno","View country posters":"Vedi i poster del paese",Views:"Viste","WAGF Block":"Blocco WAGF","WAGF Region":"Regione WAGF","people groups adopted":"popoli adottati","people groups engaged":"popoli coinvolti","Outside this region":"Fuori da questa regione",Pray:"Prega","Loading region dashboards…":"Caricamento delle dashboard delle regioni…","No regions found.":"Nessuna regione trovata.","Region data could not be loaded. This is a connection problem, not a filter.":"Non è stato possibile caricare i dati delle regioni. È un problema di connessione, non un filtro.","People groups could not be loaded. This is a connection problem, not a filter.":"Non è stato possibile caricare i gruppi di popolazione. È un problema di connessione, non un filtro.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"La mappa non è potuta avviare. È un problema di token della mappa o di connessione, non un filtro: i dati sopra non sono interessati."},mm={placeholder:"Popolo, luogo, lingua, religione",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…"},$m={title:"Studio dei plugin",navLabel:"Plugin per capacità",countLabel:"{bundles} pacchetti · {elements} plugin elencati qui",changeLanguage:"Cambia lingua",copyEmbed:"Copia codice di incorporamento",copy:"Copia",copied:"Copiato",scriptEmbed:"Incorporamento tramite script",loading:"Caricamento di {name}…",couldNotLoad:"Impossibile caricare {name}.",chooseElement:"Scegli un plugin dall’elenco.",filterPlaceholder:"Filtra i plugin",collapseAll:"Comprimi tutto",noMatch:"Nessun plugin corrisponde a «{query}».",openSection:"Apri {cap}, {label}",part:"parte",noStandalone:"nessuna pagina propria",cap5:"Shell dell’app",cap4:"Composito",cap3:"Multivista",cap2:"Preimpostato",cap1:"Singolo",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi",partOf:"parte di {name}, non pubblicata da sola",mapToken:"Token mappa",tokenPaste:"Token pubblico Mapbox (pk.…)",tokenUrlLabel:"…o l’URL di un servizio di token",tokenApply:"Usa",tokenClear:"Cancella",tokenStoredHere:"Conservato solo in questo browser.",tokenSourceYours:"Uso il tuo token",tokenSourceUrl:"Uso un token da {url}",tokenSourceBuilt:"Uso il token integrato in questa pagina",tokenSourceNone:"Nessun token Mapbox: le mappe Mapbox non si caricano (MapLibre non ne ha bisogno)",tokenSecret:"Questo è un token segreto (sk.…). Incolla un token pubblico (pk.…): questa pagina è pubblica.",tokenNotPk:"Un token pubblico Mapbox inizia con pk.",tokenUrlFailed:"Impossibile ottenere un token da quell’URL: {why}",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"},bm={prayer:"Preghiera",adoption:"Adozione",engagement:"Impegno","affinity-blocks":"Popoli",regions:"Regioni",countries:"Paesi","language-families":"Lingue",religion:"Religioni",family:"Famiglia ling.",language:"Lingua",dialect:"Dialetto/Variante",bloc:"Blocco di affinità",cluster:"Cluster",group:"Popolo",pgic:"Popolo nel paese",region:"Regione WAGF",block:"Blocco WAGF",country:"Paese",upg100Region:"Regione",upg100Zone:"Liste UPG-100",upg100Group:"Gruppo etnico",selectView:"Seleziona vista",views:"Viste",prayerResources:"Risorse di preghiera",map:"Mappa"},_m={kicker:"DOXA · Visione",title:"Ogni popolo. Ogni luogo.",tagline:"Da tutti i gruppi etnici del mondo a quelli per cui DOXA prega, contati dai dati.",funnelLabel:"Da tutti i gruppi etnici ai gruppi etnici DOXA",allLabel:"Gruppi etnici",allNote:"ogni gruppo etnico, in ogni paese in cui vive",unreachedLabel:"Non raggiunti",unreachedNote:"meno del 2% evangelici",frontierLabel:"Frontiera",frontierNote:"meno dello 0,1% evangelici",doxaLabel:"Gruppi etnici DOXA",doxaNote:"{frontier} di questi sono di frontiera",people:"{n} persone",sources:"Gruppi etnici: {imb}, dati del {date}. Elenco DOXA: pray.doxa.life, {date2}.",howCounted:"Come vengono contati",ruleAll:"Ogni riga dei dati IMB sui gruppi etnici: un gruppo etnico in un paese.",ruleUnreached:"Priorità di perdizione IMB da 0 a 2: meno del 2% evangelici.",ruleFrontier:"Priorità di perdizione IMB 0: meno dello 0,1% evangelici. Un sottoinsieme dei non raggiunti.",ruleDoxa:"Ogni gruppo dell’elenco di preghiera DOXA, abbinato ai dati IMB per popolo e paese. Non tutti sono di frontiera."},ym={title:"Todos os grupos étnicos",locations:"{n} locais (grupo × país)",doxa:"Grupos étnicos da DOXA",frontier:"Fronteira — nada iniciado",unreached:"Não alcançados — o trabalho começa",reached:"Alcançados — a igreja está lá",hint:"Clique em uma linha para ver todos · clique de novo para ver tudo",loading:"Carregando todos os grupos étnicos…",loadError:"Não foi possível carregar o mapa.",pray:"Ore por eles →",population:"pop. {n}"},vm={backToLegend:"Voltar à legenda",closeDetailView:"Fechar vista de detalhe",collapseLegend:"Recolher a legenda",expandLegend:"Expandir a legenda",toggleLegend:"Mostrar ou ocultar a legenda"},km={prayForThem:"Ore por eles",adoptThem:"Adote-os",moreInfo:"Mais informações",zoomIn:"Ampliar",zoomOut:"Reduzir",switchToLightMode:"Mudar para modo claro",switchToDarkMode:"Mudar para modo escuro",resetView:"Repor vista",toggleFullscreen:"Alternar ecrã inteiro",aboutThisMap:"Sobre este mapa",closeMenu:"Fechar menu",reloadMap:"Recarregar mapa",showClusters:"Mostrar clusters",clusterSettings:"Definições de clusters",startAutoFly:"Iniciar voo automático",stopFlight:"Parar voo",speedLabel:"Velocidade:",speedOption:{slow:"Lenta",normal:"Normal",fast:"Rápida"},shareEmbed:"Partilhar e incorporar",posterMap:"Mapa do cartaz",prayerList:"Lista de oração",cardDeck:"Baralho de cartões",printOptions:"Opções de impressão",showOnMap:"Ver no mapa",close:"Fechar",showOnMapAria:"Ver {label} no mapa",cardStockAria:"Tamanho do cartão de oração",previewPrintPoster:"Pré-visualizar e imprimir o cartaz de {label}",share:"Partilhar",shareSteps:["Incorpore este mapa no seu site","Faça uma lista dos sites da sua cidade","Ensine-os a incorporá-lo também","Ensine-os a ensinar outros a incorporá-lo","Multipliquemos mapas por toda a parte para Jesus!"],clearSelection:"Limpar a seleção",noOptions:"Nenhuma opção encontrada",renderingLocal:"Uma imagem com qualidade de impressão está a ser gerada no seu navegador — nada é enviado.",postersPerRow:"Cartazes por linha"},wm={title:"Acesso à internet onde vivem os povos sem envolvimento",bands:{yes:"conectado 60%+",partial:"parcial 25–59%",no:"baixo, abaixo de 25%",unknown:"não medido"},peopleGroup:"povo",caveat:"Números NACIONAIS (Banco Mundial). A conectividade por cidade não está disponível publicamente — não deduza uma cidade a partir do país.",sheet:{close:"Fechar",ai:"Estes dados foram encontrados por pesquisa aprofundada com IA — podem conter informações falsas.",dismiss:"Dispensar",internetUsers:"Usuários de internet",measured:"Medido",mobilePer100:"Celulares por 100",peopleGroups:"Povos",topPlatform:"Plataforma principal",unknown:"desconhecido",carriers:"Operadoras e provedores ({n})",socialPlatforms:"Redes sociais",note:"Números nacionais, não medições por cidade. Os nomes das operadoras são titulares de registros ASN (incluem bancos e universidades além de provedores), então a marcação de operadora é uma heurística pelo nome, não uma classificação verificada."}},xm={research_controls:"Controlos de pesquisa",clustering:"Agrupamento",filters:"Filtros",pin_dim:"Esbater pontos",export_poster:"Exportar cartaz…",reload_data:"Recarregar dados",off:"Desligado",native:"Nativo",mst:"MST",network:"Rede",off_desc:"Mostrar cada ponto individualmente",native_desc:"Grupos circulares Mapbox (mais rápido)",mst_desc:"Redes de afinidade por árvore geradora mínima",network_desc:"Linhas para o vizinho mais próximo",search_languages:"Pesquisar idiomas…",search_religions:"Pesquisar religiões…",reset_all:"Repor tudo",no_languages:"Ainda não há idiomas carregados",no_religions:"Ainda não há religiões carregadas",unadopted:"Não adotado",min:"mín",max:"máx",adopted:"Adotado",adoption:"Adoção",engaged:"Engajado",engagement:"Engajamento",unengaged:"Precisa de envolvimento",language:"Idioma",religion:"Religião",population:"População",any:"Qualquer",active_count:"{n} ativos",prayer_status:"Estado de oração",close:"Fechar",clear:"Limpar",map_controls:"Controlos do mapa"},Sm={bloc:"Bloco de afinidade",gospel_access:"Acesso ao evangelho",people:"Povos",people_name:"Povo (nome)",praying:"A orar",religion_family:"Família religiosa",search_language:"Pesquisar idioma",search_people:"Pesquisar povo",search_place:"Pesquisar lugar",search_religion:"Pesquisar religião",upgs_in_scope:"UPG no âmbito",countries_touched:"países alcançados",unreached:"não alcançados",sum_population:"Σ população",sum_praying:"Σ a orar",charts:"Gráficos",table:"Tabela",cluster:"Agrupamento",country:"País",engagement:"Engajamento",language:"Idioma",language_family:"Família linguística",people_group:"Povo",population:"População",prayer:"Oração",region:"Região",religion:"Religião",status:"Status",adopted:"Adotado",filters:"Filtros",gospel_resources:"Recursos do Evangelho",map:"Mapa",search_placeholder:"Pesquisar povos, lugares, idiomas, religiões…",any:"Qualquer",active_count:"{n} ativos",prayer_status:"Estado de oração",map_controls:"Controlos do mapa",close:"Fechar",clear:"Limpar",dashboard_title:"Painel de pesquisa geral",align_dashboard:"Alinhar painel",align_dashboard_tip:"Repor a disposição do painel para o alinhamento predefinido",selected:"Selecionado",world:"Mundo",vertical_legend:"Legenda vertical",groups_in_scope:"povos no âmbito",filter_by:"Filtrar por",remove_filter:"Remover filtro",groups:"povos",expand:"Expandir",collapse:"Recolher",place:"Lugar"},Lm={labels:{country:"País:",population:"População:",language:"Língua:",religion:"Religião:",languageFamily:"Família linguística:",peopleCommitted:"Comprometidos a orar:"},messages:{noDescription:"Sem descrição disponível."}},Am={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"As notas explicativas abaixo estão em inglês."},mode:{gap:"Lacuna",coverage:"Recursos encontrados"},search:{placeholder:"Procure um povo, idioma ou código ISO",clear:"Limpar busca",none:"Nada corresponde a esse nome, idioma ou código.",placeholderShort:"Povo, idioma ou código ISO"},legend:{title:"Povos não alcançados sem nenhum recurso do evangelho",band60:"60%+ sem nada encontrado",band30:"30–59%",bandSome:"alguns povos",bandAll:"todos os povos têm algo",tier2:"Escrituras e filme",tier1:"algum recurso encontrado",tier0:"nada encontrado",hnr:"podem ouvir, sem texto",showAll:"Mostrar todos os povos",titleCoverage:"Povos não alcançados com algum recurso do evangelho",cov80:"80%+ têm algo",cov50:"50–79%",cov1:"1–49%",cov0:"nada para ninguém",tallyEach:"Cada",tallyIs:"é UM povo —",tallyOf:"deles,",tallyLink:"com um link",doxa0:"todos têm algo",doxa1:"1–4 sem nada",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 alcançados",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Povos Doxa neste mapa",notPlaced:"na lista, ainda sem localização",outOfScope:"sem povos Doxa — sem cor"},tabs:{groups:"Maiores povos",countries:"Por país",regions:"Por região",noprayer:"Ninguém orando",hnr:"Ouvem, sem texto"},stat:{language:"Idioma",population:"População",countries:"Países",peopleGroups:"Povos",noResource:"Nenhum recurso encontrado",peopleAffected:"Pessoas afetadas",haveScripture:"Têm Escrituras",haveFilm:"Têm filme",haveAudio:"Têm Escrituras em áudio",signLanguages:"Línguas de sinais",growingUnreached:"Em crescimento e não alcançados",deathsDay:"Mortes estimadas/dia"},sheet:{ownLanguage:"No próprio idioma",close:"Fechar",loading:"Carregando recursos…",pray:"Ore por",everyResource:"Todos os recursos em",alsoSpeak:"Também falam"},res:{scripture:"Escrituras",film:"Filme",audio:"Áudio",bibleVideo:"Vídeo bíblico",bibleStories:"Open Bible Stories",gospelAudio:"Áudio do evangelho",gospelPresentation:"Apresentação do evangelho",scriptureEarth:"Scripture Earth",training:"Treinamento de discipulado",jesusFilm:"Filme JESUS",audioScripture:"Escrituras em áudio",bibleStoriesPlain:"Histórias bíblicas"},state:{noneFound:"nada encontrado",noneAtFcbh:"nada na FCBH",noneAtGrn:"nada na GRN",notInZume:"não está entre as 54 da Zume",linkChecked:"link verificado",unchecked:"não verificado",linkDead:"link inativo",wrongLanguage:"idioma incorreto",varietyNotStated:"(variedade não indicada)",inLanguage:"em"},guide:{dotVsCountry:"Cada ponto é UM povo da Doxa e o seu próprio idioma; um país é o NÚMERO desses povos.",noneFoundShort:"«Nada encontrado» significa ausente das fontes verificadas, nunca prova de que não exista.",tapCountry:"Toque num país para ver os recursos, povo a povo."},tables:{title:"Recursos do evangelho — Dados",showing:"Mostrando",of:"de",for:"para",filteredTo:"Filtrado por",showAll:"Mostrar todos os recursos",t_doxa:"Doxa — Acesso ao evangelho",t_links:"Cada recurso + link",t_nothing:"Onde nada foi encontrado",t_countrygap:"A lacuna por país",t_translation:"Ouvem, sem texto",t_translationcountry:"Onde traduzir",t_gaps:"Lacunas e oportunidades",t_bridges:"Pontes urbanas",t_deaf:"A lacuna surda",t_resources:"Recursos por povo",t_languages:"Idiomas por país",t_growth:"Acesso vs crescimento"},pages:{listTitle:"Recursos do evangelho por idioma",chartsTitle:"Recursos do evangelho — por idioma",loadingTables:"Carregando tabelas de recursos…"},list:{noText:"Sem texto bíblico",hasScripture:"Tem Escrituras",allLanguages:"Todos os idiomas",peopleGroup:"povo",peopleGroups:"povos",scriptureHere:"Escrituras neste idioma"},columns:{"People group":"Povo",Country:"País",Region:"Região",Language:"Idioma",Population:"População",Religion:"Religião","Gospel access":"Acesso ao evangelho",Resources:"Recursos",Scripture:"Escrituras","Bible video":"Vídeo bíblico","Gospel presentation":"Apresentação do evangelho",Countries:"Países","People groups":"Povos"},charts:{scriptureAny:"Escrituras (qualquer)",fullBible:"Bíblia completa",newTestament:"Novo Testamento",filmAny:"Filme (qualquer)",nothingInPools:"Nada encontrado nas fontes consultadas",nothingInPoolsLower:"nada encontrado nas fontes consultadas",noResourceInPools:"nenhum recurso encontrado nas fontes consultadas",aResourceFound:"um recurso encontrado",tabCoverage:"Cobertura de recursos",tabGap:"Maiores lacunas",keyScripture:"escrituras",keyFilmStories:"filme / histórias",keyAudioEtc:"áudio / apresentação / treinamento",unresolvedCode:"código fora da ISO 639-3 — não resolvido, não medido"}},Pm={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."},Em={title:{adoption:"Progresso da adoção",affinityBlocs:"Blocos de afinidade",doxaRegions:"Regiões Doxa",engagement:"Progresso do envolvimento",gospelResources:"Recursos do Evangelho",languageFamilies:"Famílias linguísticas",prayer:"Progresso da oração",upg100List:"A minha lista UPG 100"},header:{collapsed:"Legenda",peopleGroupFallback:"Grupo de pessoas",default:"Legenda"},prayer:{needsPrayer:"Precisa de oração",hasPrayer:"Tem oração",fullPrayerCoverage:"Cobertura de oração completa"},progress:{title:"Progresso",covered:"{covered} de {total} grupos de pessoas cobertos em oração · {pct}%",short:"{covered} de {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Precisa de envolvimento",hasEngagement:"Tem envolvimento"},adoption:{needsAdoption:"Precisa de adoção",hasAdoption:"Tem adoção"},columns:{upgs:"UUPGs",population:"População",name:"Nome"},footer:{total:"Total"},sortByUpgs:"Ordenar por UUPG",sortByPop:"Ordenar por população",colLabel:{religion:"Religiões UUPG",prayer:"Status de oração",engagement:"Status de engajamento",adoption:"Status de adoção",status:"Status"},titleBar:{legend:"Legenda",peopleGroups:"Povos",wagfRegions:"Regiões WAGF",languages:"Idiomas"},tabInfo:{upg100Region:"Região — ordena as listas UPG-100 por área do mundo (África, Índia, Oriente Médio, Surdos, …). Os totais são os UUPG e a população somados de todas as listas abaixo dela.",upg100Zone:"Listas UPG-100 — cada uma é uma lista de oração dos grupos étnicos não alcançados de uma área, e é o que o mapa pinta e colore. Cada lista é impressa como seu próprio pacote.",upg100Group:"Grupo étnico — os grupos não alcançados dentro de uma lista, primeiro os de maior necessidade de oração. Cada ponto do mapa é um deles."},a11y:{expandRow:"Expandir {label}",collapseRow:"Recolher {label}",clearSelection:"Limpar a seleção"}},Cm={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",upg100WallIntro:"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 pelo nome do seu povo."},Nm={clusterByRegion:"Por região Doxa",clusterByLanguageFamily:"Por família linguística",clusterByGospelResource:"Por recurso do Evangelho"},Tm={country:{wagfRegion:"Região WAGF",wagfBlock:"Bloco WAGF",country:"País",uupgCount:"Número de UUPG"}},Rm={header:"VOLTA DE ORAÇÃO ATUAL",lap:"Volta",upgs:"UUPGs",separator:" de "},Mm={"%count% people groups in %countries% countries":"%count% grupos étnicos em %countries% países","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% tem %count% grupos étnicos em %countries% países. A cor de cada ponto indica quantas pessoas oram por esse grupo étnico.","1+ People Praying":"1+ pessoas orando","100+ People Praying":"100+ pessoas orando",Adopted:"Adotado","Adoption Progress":"Progresso da adoção","All Regions":"Todas as regiões","Alternate Names":"Nomes alternativos","Choose a region":"Escolha uma região","Clear All":"Limpar tudo",Countries:"Países","Countries in this region":"Países desta região",Country:"País",Engaged:"Engajado","Engagement Progress":"Progresso do engajamento","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Cada grupo étnico não engajado adotado por uma igreja comprometida com a oração, contribuição e o envio","Exact Search":"Pesquisa exata","Find unreached people groups by region and country.":"Encontre grupos étnicos não alcançados por região e país.","Full Profile":"Perfil completo",Goal:"Meta","Hide Filters":"Ocultar filtros","Hide country posters":"Ocultar os cartazes do país",Intercessors:"Intercessores","Load More":"Carregar mais","Loading results...":"A carregar resultados...",Map:"Mapa","Mobilize 100+ people praying daily for each DOXA people group":"Mobilizar mais de 100 pessoas para orar diariamente por cada grupo étnico DOXA","No One Praying":"Ninguém orando","No options found":"Não foram encontradas opções","No poster has been generated for this country yet.":"Ainda não foi gerado nenhum cartaz para este país.","No unengaged people groups by 2033":"Nenhum grupo étnico não engajado até 2033","Not Adopted":"Não adotado",Other:"Outros","Page Not Found":"Página não encontrada","People Group":"Grupo étnico","People Groups":"Grupos étnicos","People committed to praying":"Pessoas comprometidas com a oração","Pick a region above, or click any dot to open that people group's country.":"Escolha uma região acima, ou clique em qualquer ponto para abrir o país desse povo.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Escolha uma região ou um país na aba Lista de regiões para restringir este painel.",Population:"População","Prayer Coverage":"Cobertura de oração","Prayer coverage progress":"Progresso da cobertura de oração","Region Dashboards":"Painéis das regiões","Region dashboard":"Painel da região",Regions:"Regiões","Regions List":"Lista de regiões",Religion:"Religião","Search names, country/continent, religions...":"Busque nomes, país/continente, religiões...","See %region% dashboard":"Ver o painel: %region%","See All":"Ver tudo",Select:"Selecionar","Select View":"Selecionar visualização","Show Filters":"Mostrar filtros","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Existem %count% grupos étnicos em %country%. Verifique no mapa também os grupos étnicos na fronteira deste país.",Total:"Total","Type to search...":"Digite para pesquisar...","Unengaged people groups":"Grupos étnicos não engajados","View country posters":"Ver os cartazes do país",Views:"Visualizações","WAGF Block":"Bloco WAGF","WAGF Region":"Região da WAGF","people groups adopted":"grupos étnicos adotados","people groups engaged":"grupos étnicos engajados","Outside this region":"Fora desta região",Pray:"Ore","Loading region dashboards…":"Carregando os painéis das regiões…","No regions found.":"Nenhuma região encontrada.","Region data could not be loaded. This is a connection problem, not a filter.":"Não foi possível carregar os dados das regiões. É um problema de conexão, não um filtro.","People groups could not be loaded. This is a connection problem, not a filter.":"Não foi possível carregar os povos. É um problema de conexão, não um filtro.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"O mapa não pôde iniciar. É um problema do token do mapa ou de conexão, não um filtro — os números acima não são afetados."},Om={placeholder:"Povo, local, língua, religião",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…"},Fm={title:"Estúdio de plugins",navLabel:"Plugins por capacidade",countLabel:"{bundles} pacotes · {elements} plugins listados aqui",changeLanguage:"Mudar idioma",copyEmbed:"Copiar código de incorporação",copy:"Copiar",copied:"Copiado",scriptEmbed:"Incorporação por script",loading:"Carregando {name}…",couldNotLoad:"Não foi possível carregar {name}.",chooseElement:"Escolha um plugin na lista.",filterPlaceholder:"Filtrar plugins",collapseAll:"Recolher tudo",noMatch:"Nenhum plugin corresponde a “{query}”.",openSection:"Abrir {cap}, {label}",part:"parte",noStandalone:"sem página própria",cap5:"Shell do aplicativo",cap4:"Composto",cap3:"Multivisualização",cap2:"Predefinição",cap1:"Único",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher",partOf:"parte de {name}, não publicada separadamente",mapToken:"Token do mapa",tokenPaste:"Token público do Mapbox (pk.…)",tokenUrlLabel:"…ou o URL de um serviço de tokens",tokenApply:"Usar",tokenClear:"Limpar",tokenStoredHere:"Guardado apenas neste navegador.",tokenSourceYours:"A usar o seu token",tokenSourceUrl:"A usar um token de {url}",tokenSourceBuilt:"A usar o token incorporado nesta página",tokenSourceNone:"Sem token do Mapbox: os mapas Mapbox não carregam (os MapLibre não precisam)",tokenSecret:"Esse é um token secreto (sk.…). Cole um público (pk.…): esta página é pública.",tokenNotPk:"Um token público do Mapbox começa por pk.",tokenUrlFailed:"Não foi possível obter um token desse URL: {why}",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"},Im={prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País",upg100Region:"Região",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Selecionar vista",views:"Vistas",prayerResources:"Recursos de oração",map:"Mapa"},Dm={kicker:"DOXA · Visão",title:"Cada povo. Cada lugar.",tagline:"De todos os grupos étnicos do mundo àqueles pelos quais a DOXA ora, contados a partir dos dados.",funnelLabel:"De todos os grupos étnicos aos grupos étnicos da DOXA",allLabel:"Grupos étnicos",allNote:"cada grupo étnico, em cada país onde vive",unreachedLabel:"Não alcançados",unreachedNote:"menos de 2% evangélicos",frontierLabel:"Fronteira",frontierNote:"menos de 0,1% evangélicos",doxaLabel:"Grupos étnicos da DOXA",doxaNote:"{frontier} deles são de fronteira",people:"{n} pessoas",sources:"Grupos étnicos: {imb}, dados de {date}. Lista da DOXA: pray.doxa.life, {date2}.",howCounted:"Como são contados",ruleAll:"Cada linha dos dados de grupos étnicos do IMB: um grupo étnico em um país.",ruleUnreached:"Prioridade de perdição do IMB de 0 a 2: menos de 2% evangélicos.",ruleFrontier:"Prioridade de perdição do IMB 0: menos de 0,1% evangélicos. Um subconjunto dos não alcançados.",ruleDoxa:"Cada grupo da lista de oração da DOXA, associado aos dados do IMB por povo e país. Nem todos são de fronteira."},Um={title:"Toate grupurile etnice",locations:"{n} locații (grup × țară)",doxa:"Grupuri etnice DOXA",frontier:"Frontieră — nimic început",unreached:"Neatinse — lucrarea începe",reached:"Atinse — biserica este acolo",hint:"Faceți clic pe un rând pentru a le vedea pe toate · din nou pentru tot",loading:"Se încarcă toate grupurile etnice…",loadError:"Harta nu a putut fi încărcată.",pray:"Rugați-vă pentru ei →",population:"pop. {n}"},Gm={backToLegend:"Înapoi la legendă",closeDetailView:"Închide vizualizarea detaliată",collapseLegend:"Restrânge legenda",expandLegend:"Extinde legenda",toggleLegend:"Afișează sau ascunde legenda"},jm={prayForThem:"Roagă-te pentru ei",adoptThem:"Adoptă-i",moreInfo:"Mai multe informații",zoomIn:"Mărește",zoomOut:"Micșorează",switchToLightMode:"Comută la modul luminos",switchToDarkMode:"Comută la modul întunecat",resetView:"Resetează vizualizarea",toggleFullscreen:"Comută ecran complet",aboutThisMap:"Despre această hartă",closeMenu:"Închide meniul",reloadMap:"Reîncarcă harta",showClusters:"Arată clusterele",clusterSettings:"Setări clustere",startAutoFly:"Pornește zborul automat",stopFlight:"Oprește zborul",speedLabel:"Viteză:",speedOption:{slow:"Lent",normal:"Normal",fast:"Rapid"},shareEmbed:"Partajează și încorporează",posterMap:"Harta afișului",prayerList:"Listă de rugăciune",cardDeck:"Pachet de cartonașe",printOptions:"Opțiuni de tipărire",showOnMap:"Arată pe hartă",close:"Închide",showOnMapAria:"Arată {label} pe hartă",cardStockAria:"Dimensiunea cardului de rugăciune",previewPrintPoster:"Previzualizează și tipărește posterul {label}",share:"Distribuie",shareSteps:["Încorporează această hartă pe site-ul tău","Fă o listă cu site-urile din orașul tău","Învață-i să o încorporeze și ei","Învață-i să îi formeze pe alții să o încorporeze","Să multiplicăm hărți pretutindeni pentru Isus!"],clearSelection:"Șterge selecția",noOptions:"Nicio opțiune găsită",renderingLocal:"O imagine de calitate pentru tipar este generată în browserul tău — nimic nu este încărcat.",postersPerRow:"Postere pe rând"},zm={title:"Acces la internet unde trăiesc popoarele fără implicare",bands:{yes:"conectat 60%+",partial:"parțial 25–59%",no:"scăzut, sub 25%",unknown:"nemăsurat"},peopleGroup:"popor",caveat:"Cifre NAȚIONALE (Banca Mondială). Conectivitatea pe oraș nu este disponibilă public — nu deduceți un oraș din datele țării.",sheet:{close:"Închide",ai:"Aceste date au fost găsite prin cercetare aprofundată cu IA — pot conține informații false.",dismiss:"Închide notificarea",internetUsers:"Utilizatori de internet",measured:"Măsurat",mobilePer100:"Mobile la 100",peopleGroups:"Popoare",topPlatform:"Platforma principală",unknown:"necunoscut",carriers:"Operatori și ISP-uri ({n})",socialPlatforms:"Platforme sociale",note:"Cifre naționale, nu măsurători pe oraș. Numele operatorilor sunt titulari de înregistrări ASN (printre ei se află și bănci și universități, nu doar ISP-uri), deci eticheta de operator este o euristică după nume, nu o clasificare verificată."}},Bm={research_controls:"Comenzi de cercetare",clustering:"Grupare",filters:"Filtre",pin_dim:"Estompare puncte",export_poster:"Exportă posterul…",reload_data:"Reîncarcă datele",off:"Oprit",native:"Nativ",mst:"MST",network:"Rețea",off_desc:"Arată fiecare punct separat",native_desc:"Grupuri circulare Mapbox (cel mai rapid)",mst_desc:"Rețele de afinitate prin arbore minim de acoperire",network_desc:"Linii către cel mai apropiat vecin",search_languages:"Caută limbi…",search_religions:"Caută religii…",reset_all:"Resetează tot",no_languages:"Nicio limbă încărcată încă",no_religions:"Nicio religie încărcată încă",unadopted:"Neadoptat",min:"min",max:"max",adopted:"Adoptat",adoption:"Adopție",engaged:"Implicat",engagement:"Implicare",unengaged:"Necesită implicare",language:"Limbă",religion:"Religie",population:"Populație",any:"Oricare",active_count:"{n} active",prayer_status:"Stare de rugăciune",close:"Închide",clear:"Șterge",map_controls:"Comenzile hărții"},Vm={bloc:"Bloc de afinitate",gospel_access:"Acces la Evanghelie",people:"Popoare",people_name:"Popor (nume)",praying:"Se roagă",religion_family:"Familie religioasă",search_language:"Caută limbă",search_people:"Caută popor",search_place:"Caută loc",search_religion:"Caută religie",upgs_in_scope:"UPG în domeniu",countries_touched:"țări atinse",unreached:"neatinși",sum_population:"Σ populație",sum_praying:"Σ se roagă",charts:"Grafice",table:"Tabel",cluster:"Grup",country:"Țară",engagement:"Implicare",language:"Limbă",language_family:"Familie de limbi",people_group:"Popor",population:"Populație",prayer:"Rugăciune",region:"Regiune",religion:"Religie",status:"Stare",adopted:"Adoptat",filters:"Filtre",gospel_resources:"Resurse ale Evangheliei",map:"Hartă",search_placeholder:"Caută popoare, locuri, limbi, religii…",any:"Oricare",active_count:"{n} active",prayer_status:"Stare de rugăciune",map_controls:"Comenzile hărții",close:"Închide",clear:"Șterge",dashboard_title:"Tablou de bord de cercetare general",align_dashboard:"Aliniază tabloul",align_dashboard_tip:"Readu aranjarea tabloului la alinierea implicită",selected:"Selectat",world:"Lume",vertical_legend:"Legendă verticală",groups_in_scope:"popoare în domeniu",filter_by:"Filtrează după",remove_filter:"Elimină filtrul",groups:"popoare",expand:"Extinde",collapse:"Restrânge",place:"Loc"},qm={labels:{country:"Țară:",population:"Populație:",language:"Limbă:",religion:"Religie:",languageFamily:"Familie de limbi:",peopleCommitted:"Angajați să se roage:"},messages:{noDescription:"Nicio descriere disponibilă."}},Hm={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"Notele explicative de mai jos sunt în limba engleză."},mode:{gap:"Golul",coverage:"Resurse găsite"},search:{placeholder:"Caută un popor, o limbă sau un cod ISO",clear:"Șterge căutarea",none:"Nimic nu se potrivește cu acel nume, limbă sau cod.",placeholderShort:"Popor, limbă sau cod ISO"},legend:{title:"Popoare neatinse, fără nicio resursă a Evangheliei",band60:"60%+ fără nimic găsit",band30:"30–59%",bandSome:"unele popoare",bandAll:"toate popoarele au ceva",tier2:"Scripturi și film",tier1:"s-a găsit o resursă",tier0:"nimic găsit",hnr:"pot auzi, fără text",showAll:"Arată toate popoarele",titleCoverage:"Popoare neatinse cu o resursă a Evangheliei",cov80:"80%+ au ceva",cov50:"50–79%",cov1:"1–49%",cov0:"nimic pentru niciunul",tallyEach:"Fiecare",tallyIs:"este UN popor —",tallyOf:"dintre ele,",tallyLink:"cu un link",doxa0:"toate au ceva",doxa1:"1–4 fără nimic",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 atinse",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Popoare Doxa pe această hartă",notPlaced:"pe listă, încă nelocalizate",outOfScope:"niciun popor Doxa — necolorat"},tabs:{groups:"Cele mai mari popoare",countries:"După țară",regions:"După regiune",noprayer:"Nimeni nu se roagă",hnr:"Aud, fără text"},stat:{language:"Limba",population:"Populație",countries:"Țări",peopleGroups:"Popoare",noResource:"Nicio resursă găsită",peopleAffected:"Persoane afectate",haveScripture:"Au Scripturile",haveFilm:"Au filmul",haveAudio:"Au Scripturi audio",signLanguages:"Limbaje semne",growingUnreached:"În creștere și neatinse",deathsDay:"Decese estimate/zi"},sheet:{ownLanguage:"În limba lor",close:"Închide",loading:"Se încarcă resursele…",pray:"Roagă-te pentru",everyResource:"Toate resursele în",alsoSpeak:"Vorbesc și"},res:{scripture:"Scripturi",film:"Film",audio:"Audio",bibleVideo:"Video biblic",bibleStories:"Open Bible Stories",gospelAudio:"Audio cu Evanghelia",gospelPresentation:"Prezentarea Evangheliei",scriptureEarth:"Scripture Earth",training:"Instruire în ucenicie",jesusFilm:"Filmul ISUS",audioScripture:"Scripturi audio",bibleStoriesPlain:"Povestiri biblice"},state:{noneFound:"nimic găsit",noneAtFcbh:"nimic la FCBH",noneAtGrn:"nimic la GRN",notInZume:"nu este între cele 54 Zume",linkChecked:"link verificat",unchecked:"neverificat",linkDead:"link mort",wrongLanguage:"limbă greșită",varietyNotStated:"(varietate nespecificată)",inLanguage:"în"},guide:{dotVsCountry:"Fiecare punct este UN popor Doxa și limba lui; o țară este NUMĂRUL acelor popoare.",noneFoundShort:"„Nimic găsit” înseamnă absent din sursele verificate, niciodată dovada că nu există.",tapCountry:"Atinge o țară pentru a vedea resursele, popor cu popor."},tables:{title:"Resurse ale Evangheliei — Date",showing:"Se afișează",of:"din",for:"pentru",filteredTo:"Filtrat după",showAll:"Arată toate resursele",t_doxa:"Doxa — Acces la Evanghelie",t_links:"Fiecare resursă + link",t_nothing:"Unde nu s-a găsit nimic",t_countrygap:"Golul pe țări",t_translation:"Aud, fără text",t_translationcountry:"Unde să traducem",t_gaps:"Goluri și oportunități",t_bridges:"Punți urbane",t_deaf:"Golul surd",t_resources:"Resurse pe popoare",t_languages:"Limbi pe țări",t_growth:"Acces vs creștere"},pages:{listTitle:"Resurse ale Evangheliei pe limbi",chartsTitle:"Resurse ale Evangheliei — pe limbi",loadingTables:"Se încarcă tabelele…"},list:{noText:"Fără text biblic",hasScripture:"Are Scripturi",allLanguages:"Toate limbile",peopleGroup:"popor",peopleGroups:"popoare",scriptureHere:"Scripturi în această limbă"},columns:{"People group":"Popor",Country:"Țară",Region:"Regiune",Language:"Limbă",Population:"Populație",Religion:"Religie","Gospel access":"Acces la Evanghelie",Resources:"Resurse",Scripture:"Scripturi","Bible video":"Video biblic","Gospel presentation":"Prezentarea Evangheliei",Countries:"Țări","People groups":"Popoare"},charts:{scriptureAny:"Scripturi (oricare)",fullBible:"Biblia completă",newTestament:"Noul Testament",filmAny:"Film (oricare)",nothingInPools:"Nimic găsit în sursele verificate",nothingInPoolsLower:"nimic găsit în sursele verificate",noResourceInPools:"nicio resursă găsită în sursele verificate",aResourceFound:"o resursă găsită",tabCoverage:"Acoperirea resurselor",tabGap:"Cele mai mari lacune",keyScripture:"scripturi",keyFilmStories:"film / povestiri",keyAudioEtc:"audio / prezentare / instruire",unresolvedCode:"cod în afara ISO 639-3 — nerezolvat, nemăsurat"}},Wm={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."},Km={title:{adoption:"Progresul adopției",affinityBlocs:"Blocuri de afinitate",doxaRegions:"Regiuni Doxa",engagement:"Progresul implicării",gospelResources:"Resurse ale Evangheliei",languageFamilies:"Familii de limbi",prayer:"Progresul rugăciunii",upg100List:"Lista mea UPG 100"},header:{collapsed:"Legendă",peopleGroupFallback:"Grup de popoare",default:"Legendă"},prayer:{needsPrayer:"Necesită rugăciune",hasPrayer:"Are rugăciune",fullPrayerCoverage:"Acoperire completă de rugăciune"},progress:{title:"Progres",covered:"{covered} din {total} grupuri de popoare acoperite în rugăciune · {pct}%",short:"{covered} din {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Necesită implicare",hasEngagement:"Are implicare"},adoption:{needsAdoption:"Necesită adopție",hasAdoption:"Are adopție"},columns:{upgs:"UUPGs",population:"Populație",name:"Nume"},footer:{total:"Total"},sortByUpgs:"Sortează după UUPG",sortByPop:"Sortează după populație",colLabel:{religion:"Religii UUPG",prayer:"Starea rugăciunii",engagement:"Starea implicării",adoption:"Starea adopției",status:"Stare"},titleBar:{legend:"Legendă",peopleGroups:"Popoare",wagfRegions:"Regiuni WAGF",languages:"Limbi"},tabInfo:{upg100Region:"Regiune — sortează listele UPG-100 după zona lumii (Africa, India, Orientul Mijlociu, Surzi, …). Totalurile sunt UUPG-urile și populația însumate din fiecare listă de dedesubt.",upg100Zone:"Liste UPG-100 — fiecare este o listă de rugăciune a grupurilor etnice neatinse dintr-o zonă și este ceea ce harta desenează și colorează. Fiecare listă se tipărește ca propriul pachet.",upg100Group:"Grup etnic — grupurile neatinse dintr-o listă, mai întâi cele cu cea mai mare nevoie de rugăciune. Fiecare punct de pe hartă este unul dintre ele."},a11y:{expandRow:"Extinde {label}",collapseRow:"Restrânge {label}",clearSelection:"Șterge selecția"}},Ym={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",upg100WallIntro:"Î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 pe numele poporului lor."},Xm={clusterByRegion:"După regiune Doxa",clusterByLanguageFamily:"După familia de limbi",clusterByGospelResource:"După resursa Evangheliei"},Zm={country:{wagfRegion:"Regiunea WAGF",wagfBlock:"Blocul WAGF",country:"Țară",uupgCount:"Număr de UUPG"}},Jm={header:"TURUL DE RUGĂCIUNE CURENT",lap:"Tur",upgs:"UUPGs",separator:" din "},Qm={"%count% people groups in %countries% countries":"%count% popoare în %countries% țări","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% are %count% popoare în %countries% țări. Culoarea fiecărui punct arată câți oameni se roagă pentru acel popor.","1+ People Praying":"1+ persoane se roagă","100+ People Praying":"100+ persoane se roagă",Adopted:"Adoptat","Adoption Progress":"Progresul adopției","All Regions":"Toate regiunile","Alternate Names":"Denumiri alternative","Choose a region":"Alege o regiune","Clear All":"Șterge tot",Countries:"Țări","Countries in this region":"Țările din această regiune",Country:"Țară",Engaged:"Implicat","Engagement Progress":"Progresul implicării","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Fiecare popor neimplicat adoptat de o biserică dedicată rugăciunii, dăruirii și trimiterii","Exact Search":"Căutare exactă","Find unreached people groups by region and country.":"Găsește popoarele neatinse după regiune și țară.","Full Profile":"Profil complet",Goal:"Obiectiv","Hide Filters":"Ascunde filtrele","Hide country posters":"Ascunde posterele țării",Intercessors:"Mijlocitori","Load More":"Încarcă mai multe","Loading results...":"Se încarcă rezultatele…",Map:"Hartă","Mobilize 100+ people praying daily for each DOXA people group":"Mobilizarea a peste 100 de persoane care se roagă zilnic pentru fiecare popor DOXA","No One Praying":"Nimeni nu se roagă","No options found":"Nu s-a găsit nicio opțiune","No poster has been generated for this country yet.":"Pentru această țară nu a fost generat încă niciun poster.","No unengaged people groups by 2033":"Niciun popor neimplicat până în 2033","Not Adopted":"Neadoptat",Other:"Altele","Page Not Found":"Pagina nu a fost găsită","People Group":"Popor","People Groups":"Popoare","People committed to praying":"Persoane dedicate rugăciunii","Pick a region above, or click any dot to open that people group's country.":"Alege o regiune mai sus sau dă clic pe orice punct pentru a deschide țara acelui grup etnic.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Alege o regiune sau o țară din fila Lista regiunilor pentru a restrânge acest panou.",Population:"Populație","Prayer Coverage":"Acoperirea prin rugăciune","Prayer coverage progress":"Progresul acoperirii prin rugăciune","Region Dashboards":"Panouri ale regiunilor","Region dashboard":"Panoul regiunii",Regions:"Regiuni","Regions List":"Lista regiunilor",Religion:"Religie","Search names, country/continent, religions...":"Caută nume, țară/continent, religii…","See %region% dashboard":"Vezi panoul %region%","See All":"Vezi tot",Select:"Selectează","Select View":"Selectează vizualizarea","Show Filters":"Arată filtrele","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"În %country% există %count% popoare. Verifică pe hartă și popoarele de la granițele acestei țări.",Total:"Total","Type to search...":"Scrie pentru a căuta…","Unengaged people groups":"Popoare neimplicate","View country posters":"Vezi posterele țării",Views:"Vizualizări","WAGF Block":"Bloc WAGF","WAGF Region":"Regiune WAGF","people groups adopted":"popoare adoptate","people groups engaged":"popoare implicate","Outside this region":"În afara acestei regiuni",Pray:"Roagă-te","Loading region dashboards…":"Se încarcă panourile regiunilor…","No regions found.":"Nu au fost găsite regiuni.","Region data could not be loaded. This is a connection problem, not a filter.":"Datele regiunilor nu au putut fi încărcate. Este o problemă de conexiune, nu un filtru.","People groups could not be loaded. This is a connection problem, not a filter.":"Grupurile de popoare nu au putut fi încărcate. Este o problemă de conexiune, nu un filtru.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"Harta nu a putut porni. Este o problemă de token al hărții sau de conexiune, nu un filtru — cifrele de mai sus nu sunt afectate."},e$={placeholder:"Popor, loc, limbă, religie",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…"},t$={title:"Studio de pluginuri",navLabel:"Pluginuri după capacitate",countLabel:"{bundles} pachete · {elements} pluginuri listate aici",changeLanguage:"Schimbă limba",copyEmbed:"Copiază codul de încorporare",copy:"Copiază",copied:"Copiat",scriptEmbed:"Încorporare prin script",loading:"Se încarcă {name}…",couldNotLoad:"{name} nu a putut fi încărcat.",chooseElement:"Alegeți un plugin din listă.",filterPlaceholder:"Filtrează pluginurile",collapseAll:"Restrânge tot",noMatch:"Niciun plugin nu corespunde cu „{query}”.",openSection:"Deschide {cap}, {label}",part:"parte",noStandalone:"fără pagină proprie",cap5:"Cadru de aplicație",cap4:"Compus",cap3:"Vizualizări multiple",cap2:"Presetat",cap1:"Simplu",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge",partOf:"parte din {name}, nepublicată separat",mapToken:"Token hartă",tokenPaste:"Token public Mapbox (pk.…)",tokenUrlLabel:"…sau adresa URL a unui serviciu de tokenuri",tokenApply:"Folosește",tokenClear:"Șterge",tokenStoredHere:"Păstrat doar în acest browser.",tokenSourceYours:"Se folosește tokenul tău",tokenSourceUrl:"Se folosește un token de la {url}",tokenSourceBuilt:"Se folosește tokenul inclus în această pagină",tokenSourceNone:"Niciun token Mapbox: hărțile Mapbox nu se pot încărca (MapLibre nu are nevoie)",tokenSecret:"Acesta este un token secret (sk.…). Lipește unul public (pk.…): pagina este publică.",tokenNotPk:"Un token public Mapbox începe cu pk.",tokenUrlFailed:"Nu s-a putut obține un token de la acea adresă: {why}",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"},o$={prayer:"Rugăciune",adoption:"Adopție",engagement:"Implicare","affinity-blocks":"Popoare",regions:"Regiuni",countries:"Țări","language-families":"Limbi",religion:"Religii",family:"Familie de limbi",language:"Limbă",dialect:"Dialect/Variantă",bloc:"Bloc de afinitate",cluster:"Grup",group:"Popor",pgic:"Popor în țară",region:"Regiune WAGF",block:"Bloc WAGF",country:"Țară",upg100Region:"Regiune",upg100Zone:"Liste UPG-100",upg100Group:"Grup etnic",selectView:"Alege vizualizarea",views:"Vizualizări",prayerResources:"Resurse de rugăciune",map:"Hartă"},n$={kicker:"DOXA · Viziune",title:"Fiecare popor. Fiecare loc.",tagline:"De la toate grupurile etnice ale lumii la cele pentru care se roagă DOXA, numărate din date.",funnelLabel:"De la toate grupurile etnice la grupurile etnice DOXA",allLabel:"Grupuri etnice",allNote:"fiecare grup etnic, în fiecare țară în care trăiește",unreachedLabel:"Neatinse",unreachedNote:"sub 2% evanghelici",frontierLabel:"Frontieră",frontierNote:"sub 0,1% evanghelici",doxaLabel:"Grupuri etnice DOXA",doxaNote:"{frontier} dintre ele sunt de frontieră",people:"{n} oameni",sources:"Grupuri etnice: {imb}, date din {date}. Lista DOXA: pray.doxa.life, {date2}.",howCounted:"Cum sunt numărate",ruleAll:"Fiecare rând din datele IMB despre grupuri etnice: un grup etnic într-o țară.",ruleUnreached:"Prioritatea de pierzare IMB 0–2: sub 2% evanghelici.",ruleFrontier:"Prioritatea de pierzare IMB 0: sub 0,1% evanghelici. O submulțime a celor neatinse.",ruleDoxa:"Fiecare grup de pe lista de rugăciune DOXA, potrivit cu datele IMB după popor și țară. Nu toate sunt de frontieră."},a$={title:"Все народы",locations:"{n} мест (народ × страна)",doxa:"Народы DOXA",frontier:"Рубежные — ничего не начато",unreached:"Недостигнутые — работа начинается",reached:"Достигнутые — церковь есть",hint:"Нажмите на строку, чтобы увидеть все · ещё раз — чтобы показать всё",loading:"Загрузка всех народов…",loadError:"Не удалось загрузить карту.",pray:"Молиться за них →",population:"нас. {n}"},s$={backToLegend:"Назад к легенде",closeDetailView:"Закрыть подробный вид",collapseLegend:"Свернуть легенду",expandLegend:"Развернуть легенду",toggleLegend:"Показать или скрыть легенду"},r$={prayForThem:"Молитесь о них",adoptThem:"Усыновите их",moreInfo:"Подробнее",zoomIn:"Приблизить",zoomOut:"Отдалить",switchToLightMode:"Переключить на светлый режим",switchToDarkMode:"Переключить на тёмный режим",resetView:"Сбросить вид",toggleFullscreen:"Полноэкранный режим",aboutThisMap:"Об этой карте",closeMenu:"Закрыть меню",reloadMap:"Перезагрузить карту",showClusters:"Показать кластеры",clusterSettings:"Настройки кластеров",startAutoFly:"Начать авто-полёт",stopFlight:"Остановить полёт",speedLabel:"Скорость:",speedOption:{slow:"Медленно",normal:"Нормально",fast:"Быстро"},shareEmbed:"Поделиться и встроить",posterMap:"Карта плаката",prayerList:"Молитвенный список",cardDeck:"Набор карточек",printOptions:"Параметры печати",showOnMap:"Показать на карте",close:"Закрыть",showOnMapAria:"Показать {label} на карте",cardStockAria:"Размер молитвенной карточки",previewPrintPoster:"Просмотр и печать плаката {label}",share:"Поделиться",shareSteps:["Разместите эту карту на своём сайте","Составьте список сайтов вашего города","Научите их тоже размещать её","Научите их учить других размещать её","Умножим карты повсюду для Иисуса!"],clearSelection:"Снять выделение",noOptions:"Ничего не найдено",renderingLocal:"Изображение типографского качества создаётся в вашем браузере — ничего не загружается на сервер.",postersPerRow:"Плакатов в ряду"},i$={title:"Доступ к интернету там, где живут народы без вовлечённости",bands:{yes:"подключено 60%+",partial:"частично 25–59%",no:"низкий, менее 25%",unknown:"не измерено"},peopleGroup:"народ",caveat:"НАЦИОНАЛЬНЫЕ данные (Всемирный банк). Данных о подключении по городам в открытом доступе нет — не судите о городе по стране.",sheet:{close:"Закрыть",ai:"Эти данные найдены с помощью углублённого поиска ИИ и могут содержать ошибки.",dismiss:"Скрыть",internetUsers:"Пользователи интернета",measured:"Год измерения",mobilePer100:"Мобильных на 100",peopleGroups:"Народы",topPlatform:"Главная платформа",unknown:"неизвестно",carriers:"Операторы и провайдеры ({n})",socialPlatforms:"Социальные платформы",note:"Национальные данные, а не измерения по городам. Названия операторов — это владельцы записей в реестре ASN; среди них есть банки и университеты, а не только провайдеры, поэтому пометка «оператор» — эвристика по названию, а не проверенная классификация."}},l$={research_controls:"Инструменты исследования",clustering:"Кластеризация",filters:"Фильтры",pin_dim:"Прозрачность точек",export_poster:"Экспорт постера…",reload_data:"Обновить данные",off:"Выкл.",native:"Встроенная",mst:"MST",network:"Сеть",off_desc:"Показывать каждую точку отдельно",native_desc:"Круговые кластеры Mapbox (быстрее всего)",mst_desc:"Сети родства по минимальному остовному дереву",network_desc:"Линии до ближайшего соседа",search_languages:"Поиск языков…",search_religions:"Поиск религий…",reset_all:"Сбросить всё",no_languages:"Языки ещё не загружены",no_religions:"Религии ещё не загружены",unadopted:"Не усыновлён",min:"мин",max:"макс",adopted:"Ответственность взята",adoption:"Усыновление",engaged:"Вовлечён",engagement:"Вовлечённость",unengaged:"Нуждается в вовлечённости",language:"Язык",religion:"Религия",population:"Население",any:"Любой",active_count:"{n} активно",prayer_status:"Статус молитвы",close:"Закрыть",clear:"Очистить",map_controls:"Элементы управления картой"},c$={bloc:"Блок родства",gospel_access:"Доступ к Евангелию",people:"Народы",people_name:"Народ (название)",praying:"Молятся",religion_family:"Семья религий",search_language:"Поиск языка",search_people:"Поиск народа",search_place:"Поиск места",search_religion:"Поиск религии",upgs_in_scope:"UPG в выборке",countries_touched:"затронутых стран",unreached:"неохваченные",sum_population:"Σ население",sum_praying:"Σ молящихся",charts:"Графики",table:"Таблица",cluster:"Кластер",country:"Страна",engagement:"Вовлечённость",language:"Язык",language_family:"Языковая семья",people_group:"Народ",population:"Население",prayer:"Молитва",region:"Регион",religion:"Религия",status:"Статус",adopted:"Ответственность взята",filters:"Фильтры",gospel_resources:"Евангельские ресурсы",map:"Карта",search_placeholder:"Поиск народов, мест, языков, религий…",any:"Любой",active_count:"{n} активно",prayer_status:"Статус молитвы",map_controls:"Элементы управления картой",close:"Закрыть",clear:"Очистить",dashboard_title:"Обзорная исследовательская панель",align_dashboard:"Выровнять панель",align_dashboard_tip:"Вернуть расположение панели к виду по умолчанию",selected:"Выбрано",world:"Мир",vertical_legend:"Вертикальная легенда",groups_in_scope:"народов в выборке",filter_by:"Фильтровать по",remove_filter:"Убрать фильтр",groups:"народов",expand:"Развернуть",collapse:"Свернуть",place:"Место"},u$={labels:{country:"Страна:",population:"Население:",language:"Язык:",religion:"Религия:",languageFamily:"Языковая семья:",peopleCommitted:"Обязались молиться:"},messages:{noDescription:"Описание недоступно."}},p$={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"Пояснительные примечания ниже — на английском языке."},mode:{gap:"Пробел",coverage:"Найденные ресурсы"},search:{placeholder:"Найдите народ, язык или код ISO",clear:"Очистить поиск",none:"Ничего не найдено по этому названию, языку или коду.",placeholderShort:"Народ, язык или код ISO"},legend:{title:"Недостигнутые народы, для которых не найдено ни одного ресурса",band60:"60%+ без единого ресурса",band30:"30–59%",bandSome:"часть народов",bandAll:"у всех народов что-то есть",tier2:"Писание и фильм",tier1:"что-то найдено",tier0:"ничего не найдено",hnr:"могут услышать, текста нет",showAll:"Показать все народы",titleCoverage:"Недостигнутые народы, для которых найдены ресурсы",cov80:"у 80%+ что-то есть",cov50:"50–79%",cov1:"1–49%",cov0:"ни для кого ничего",tallyEach:"Каждая",tallyIs:"— это ОДИН народ,",tallyOf:"из них",tallyLink:"со ссылкой",doxa0:"у всех что-то есть",doxa1:"1–4 без ресурсов",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 достигнуты",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"Народы Doxa на этой карте",notPlaced:"в списке, пока без координат",outOfScope:"нет народов Doxa — не окрашено"},tabs:{groups:"Крупнейшие народы",countries:"По странам",regions:"По регионам",noprayer:"Никто не молится",hnr:"Слышат, но не читают"},stat:{language:"Язык",population:"Численность",countries:"Страны",peopleGroups:"Народы",noResource:"Ресурсов не найдено",peopleAffected:"Затронутые люди",haveScripture:"Есть Писание",haveFilm:"Есть фильм",haveAudio:"Есть аудио-Писание",signLanguages:"Жестовые языки",growingUnreached:"Растущие и недостигнутые",deathsDay:"Оценка смертей в день"},sheet:{ownLanguage:"На их родном языке",close:"Закрыть",loading:"Загрузка ресурсов…",pray:"Молитесь о",everyResource:"Все ресурсы на",alsoSpeak:"Также говорят на"},res:{scripture:"Писание",film:"Фильм",audio:"Аудио",bibleVideo:"Библейское видео",bibleStories:"Open Bible Stories",gospelAudio:"Аудио с Евангелием",gospelPresentation:"Изложение Евангелия",scriptureEarth:"Scripture Earth",training:"Обучение ученичеству",jesusFilm:"Фильм «Иисус»",audioScripture:"Аудио с Писанием",bibleStoriesPlain:"Библейские истории"},state:{noneFound:"ничего не найдено",noneAtFcbh:"нет в FCBH",noneAtGrn:"нет в GRN",notInZume:"нет среди 54 языков Zume",linkChecked:"ссылка проверена",unchecked:"не проверено",linkDead:"ссылка не работает",wrongLanguage:"не тот язык",varietyNotStated:"(вариант не указан)",inLanguage:"на"},guide:{dotVsCountry:"Точка — это ОДИН народ Doxa и его родной язык; цвет страны — это ЧИСЛО таких народов.",noneFoundShort:"«Ничего не найдено» значит: нет в проверенных источниках — но не доказательство отсутствия.",tapCountry:"Нажмите на страну, чтобы увидеть ресурсы по каждому народу."},tables:{title:"Ресурсы Евангелия — данные",showing:"Показано",of:"из",for:"для",filteredTo:"Фильтр:",showAll:"Показать все ресурсы",t_doxa:"Doxa — доступ к Евангелию",t_links:"Каждый ресурс и ссылка",t_nothing:"Где ничего не найдено",t_countrygap:"Пробел по странам",t_translation:"Слышат, но не читают",t_translationcountry:"Где переводить",t_gaps:"Пробелы и возможности",t_bridges:"Городские мосты",t_deaf:"Пробел у глухих",t_resources:"Ресурсы по народам",t_languages:"Языки по странам",t_growth:"Доступ и рост населения"},pages:{listTitle:"Ресурсы Евангелия по языкам",chartsTitle:"Ресурсы Евангелия — по языкам",loadingTables:"Загрузка таблиц ресурсов…"},list:{noText:"Нет текста Писания",hasScripture:"Есть Писание",allLanguages:"Все языки",peopleGroup:"народ",peopleGroups:"народов",scriptureHere:"Писание на этом языке"},columns:{"People group":"Народ",Country:"Страна",Region:"Регион",Language:"Язык",Population:"Численность",Religion:"Религия","Gospel access":"Доступ к Евангелию",Resources:"Ресурсы",Scripture:"Писание","Bible video":"Библейское видео","Gospel presentation":"Изложение Евангелия",Countries:"Страны","People groups":"Народы"},charts:{scriptureAny:"Писание (любое)",fullBible:"Полная Библия",newTestament:"Новый Завет",filmAny:"Фильм (любой)",nothingInPools:"Ничего не найдено в проверенных источниках",nothingInPoolsLower:"ничего не найдено в проверенных источниках",noResourceInPools:"ни одного ресурса не найдено в проверенных источниках",aResourceFound:"ресурс найден",tabCoverage:"Охват ресурсами",tabGap:"Наибольшие пробелы",keyScripture:"писание",keyFilmStories:"фильм / истории",keyAudioEtc:"аудио / презентация / обучение",unresolvedCode:"код вне ISO 639-3 — не определён, не измерен"}},d$={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:"Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра."},g$={title:{adoption:"Прогресс усыновления",affinityBlocs:"Блоки родства",doxaRegions:"Регионы Doxa",engagement:"Прогресс вовлечённости",gospelResources:"Евангельские ресурсы",languageFamilies:"Языковые семьи",prayer:"Прогресс молитвы",upg100List:"Мой список UPG 100"},header:{collapsed:"Условные обозначения",peopleGroupFallback:"Народная группа",default:"Легенда"},prayer:{needsPrayer:"Нуждается в молитве",hasPrayer:"Есть молитва",fullPrayerCoverage:"Полное молитвенное покрытие"},progress:{title:"Прогресс",covered:"{covered} из {total} народных групп охвачены молитвой · {pct}%",short:"{covered} из {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"Нуждается в вовлечённости",hasEngagement:"Есть вовлечённость"},adoption:{needsAdoption:"Нуждается в усыновлении",hasAdoption:"Есть усыновление"},columns:{upgs:"UUPGs",population:"Население",name:"Название"},footer:{total:"Всего"},sortByUpgs:"Сортировать по UUPG",sortByPop:"Сортировать по населению",colLabel:{religion:"Религии UUPG",prayer:"Статус молитвы",engagement:"Статус вовлечённости",adoption:"Статус усыновления",status:"Статус"},titleBar:{legend:"Легенда",peopleGroups:"Народы",wagfRegions:"Регионы WAGF",languages:"Языки"},tabInfo:{upg100Region:"Регион — сортирует списки UPG-100 по частям света (Африка, Индия, Ближний Восток, Глухие, …). Числа — это UUPG и население, просуммированные по всем спискам внутри.",upg100Zone:"Списки UPG-100 — каждый представляет собой молитвенный список непросвещённых народов области и именно он отображается и раскрашивается на карте. Каждый список печатается отдельным буклетом.",upg100Group:"Народ — отдельные непросвещённые народы внутри списка, сначала с наибольшей нуждой в молитве. Каждая точка на карте — один из них."},a11y:{expandRow:"Развернуть {label}",collapseRow:"Свернуть {label}",clearSelection:"Снять выделение"}},f$={menuComingSoon:"Меню скоро появится",pinHint:{tapDot:"Нажмите на цветную точку — кому-то всё ещё нужна молитва"},upg100WallHeading:"Мой список UPG 100 — молитвенные списки и плакаты",upg100WallTag:"Молитвенная мобилизация",upg100WallIntro:"Разделите молитвенный труд на группы по пятьдесят и по сто — так Иисус накормил 5000 (Луки 9:14). Каждый плакат — это список из 100, о котором можно молиться, распечатать и повесить на стену, молясь о них по имени их народа."},h$={clusterByRegion:"По региону Doxa",clusterByLanguageFamily:"По языковой семье",clusterByGospelResource:"По евангельскому ресурсу"},m$={country:{wagfRegion:"Регион WAGF",wagfBlock:"Блок WAGF",country:"Страна",uupgCount:"Число UUPG"}},$$={header:"ТЕКУЩИЙ КРУГ МОЛИТВЫ",lap:"Круг",upgs:"UUPGs",separator:" из "},b$={"%count% people groups in %countries% countries":"%count% народов в %countries% странах","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"В регионе %region% — %count% групп людей в %countries% странах. Цвет каждой точки показывает, сколько человек молится за эту группу людей.","1+ People Praying":"1+ человек молится","100+ People Praying":"100+ человек молятся",Adopted:"Ответственность взята","Adoption Progress":"Прогресс принятия ответственности","All Regions":"Все регионы","Alternate Names":"Альтернативные названия","Choose a region":"Выберите регион","Clear All":"Очистить всё",Countries:"Страны","Countries in this region":"Страны этого региона",Country:"Страна",Engaged:"Вовлечён","Engagement Progress":"Прогресс вовлечения","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"Каждая незадействованная народность принята церковью, приверженной молитве, пожертвованиям и посылке миссионеров","Exact Search":"Точный поиск","Find unreached people groups by region and country.":"Найдите недостигнутые группы людей по регионам и странам.","Full Profile":"Полный профиль",Goal:"Цель","Hide Filters":"Скрыть фильтры","Hide country posters":"Скрыть плакаты страны",Intercessors:"Ходатаи","Load More":"Загрузить ещё","Loading results...":"Загрузка результатов...",Map:"Карта","Mobilize 100+ people praying daily for each DOXA people group":"Мобилизуйте 100+ человек для ежедневной молитвы за каждую народность DOXA","No One Praying":"Никто не молится","No options found":"Вариантов не найдено","No poster has been generated for this country yet.":"Для этой страны плакат ещё не создан.","No unengaged people groups by 2033":"К 2033 году не останется незадействованных народов","Not Adopted":"Не принято",Other:"Другое","Page Not Found":"Страница не найдена","People Group":"Группа людей","People Groups":"Народы","People committed to praying":"Люди, посвятившие себя молитве","Pick a region above, or click any dot to open that people group's country.":"Выберите регион выше или нажмите на любую точку, чтобы открыть страну этой группы народа.","Pick a region or a country on the Regions List tab to narrow this dashboard.":"Выберите регион или страну на вкладке «Список регионов», чтобы сузить эту панель.",Population:"Население","Prayer Coverage":"Молитвенный охват","Prayer coverage progress":"Прогресс молитвенного покрытия","Region Dashboards":"Панели регионов","Region dashboard":"Панель региона",Regions:"Регионы","Regions List":"Список регионов",Religion:"Религия","Search names, country/continent, religions...":"Поиск по названиям, странам/континентам, религиям...","See %region% dashboard":"Открыть панель: %region%","See All":"Смотреть все",Select:"Выбрать","Select View":"Выберите вид","Show Filters":"Показать фильтры","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"Страна %country% насчитывает %count% групп людей. Проверьте также на карте группы людей, расположенные вдоль границ этой страны.",Total:"Итого","Type to search...":"Введите текст для поиска...","Unengaged people groups":"Невовлечённые народы","View country posters":"Показать плакаты страны",Views:"Виды","WAGF Block":"Блок WAGF","WAGF Region":"Регион WAGF","people groups adopted":"народов, за которые взята ответственность","people groups engaged":"вовлечённые народы","Outside this region":"За пределами этого региона",Pray:"Молиться","Loading region dashboards…":"Загрузка панелей по регионам…","No regions found.":"Регионы не найдены.","Region data could not be loaded. This is a connection problem, not a filter.":"Не удалось загрузить данные по регионам. Это проблема соединения, а не фильтра.","People groups could not be loaded. This is a connection problem, not a filter.":"Не удалось загрузить народы. Это проблема соединения, а не фильтра.","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"Карта не запустилась. Это проблема токена карты или соединения, а не фильтра — цифры выше не затронуты."},_$={placeholder:"Народ, место, язык, религия",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"},upg100Placeholder:"Поиск народа, списка UPG-100 или региона…"},y$={title:"Студия плагинов",navLabel:"Плагины по возможностям",countLabel:"Здесь: пакетов {bundles} · плагинов {elements}",changeLanguage:"Сменить язык",copyEmbed:"Скопировать код встраивания",copy:"Копировать",copied:"Скопировано",scriptEmbed:"Встраивание через скрипт",loading:"Загрузка {name}…",couldNotLoad:"Не удалось загрузить {name}.",chooseElement:"Выберите плагин из списка.",filterPlaceholder:"Фильтр плагинов",collapseAll:"Свернуть всё",noMatch:"Нет плагинов, соответствующих «{query}».",openSection:"Открыть {cap}, {label}",part:"часть",noStandalone:"нет отдельной страницы",cap5:"Оболочка приложения",cap4:"Составной",cap3:"Несколько видов",cap2:"Предустановка",cap1:"Одиночный",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть",partOf:"часть {name}, не публикуется отдельно",mapToken:"Токен карты",tokenPaste:"Публичный токен Mapbox (pk.…)",tokenUrlLabel:"…или адрес службы токенов",tokenApply:"Применить",tokenClear:"Очистить",tokenStoredHere:"Хранится только в этом браузере.",tokenSourceYours:"Используется ваш токен",tokenSourceUrl:"Используется токен с {url}",tokenSourceBuilt:"Используется токен, встроенный в страницу",tokenSourceNone:"Нет токена Mapbox: карты Mapbox не загрузятся (MapLibre он не нужен)",tokenSecret:"Это секретный токен (sk.…). Вставьте публичный (pk.…): эта страница общедоступна.",tokenNotPk:"Публичный токен Mapbox начинается с pk.",tokenUrlFailed:"Не удалось получить токен по этому адресу: {why}",settings:"Настройки",mapEngine:"Движок карт",engineDefault:"Свой у каждой карты",engineMapboxNote:"нужен токен",engineMaplibreNote:"токен не нужен",tokenNotNeeded:"Выбран MapLibre: его картам не нужен токен Mapbox"},v$={prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна",upg100Region:"Регион",upg100Zone:"Списки UPG-100",upg100Group:"Народ",selectView:"Выбрать вид",views:"Виды",prayerResources:"Молитвенные ресурсы",map:"Карта"},k$={kicker:"DOXA · Видение",title:"Каждый народ. Каждое место.",tagline:"От всех народов мира до тех, за кого молится DOXA, — по данным.",funnelLabel:"От всех народов до народов DOXA",allLabel:"Народы",allNote:"каждый народ в каждой стране, где он живёт",unreachedLabel:"Недостигнутые",unreachedNote:"менее 2% евангельских христиан",frontierLabel:"Рубежные",frontierNote:"менее 0,1% евангельских христиан",doxaLabel:"Народы DOXA",doxaNote:"из них рубежных: {frontier}",people:"{n} человек",sources:"Народы: {imb}, данные на {date}. Список DOXA: pray.doxa.life, {date2}.",howCounted:"Как это посчитано",ruleAll:"Каждая строка данных IMB о народах: один народ в одной стране.",ruleUnreached:"Приоритет IMB 0–2: менее 2% евангельских христиан.",ruleFrontier:"Приоритет IMB 0: менее 0,1% евангельских христиан. Часть недостигнутых.",ruleDoxa:"Каждая группа из молитвенного списка DOXA, сопоставленная с данными IMB по народу и стране. Не все из них рубежные."},w$={title:"所有族群",locations:"{n} 个族群–国家位置",doxa:"DOXA 族群",frontier:"前沿族群 — 尚未开始",unreached:"未得之民 — 事工起步",reached:"已得之民 — 教会已在",hint:"点击一行查看全部 · 再次点击显示所有",loading:"正在加载所有族群…",loadError:"无法加载地图。",pray:"为他们祷告 →",population:"人口 {n}"},x$={backToLegend:"返回图例",closeDetailView:"关闭详情视图",collapseLegend:"收起图例",expandLegend:"展开图例",toggleLegend:"显示或隐藏图例"},S$={prayForThem:"为他们祷告",adoptThem:"认领他们",moreInfo:"更多信息",zoomIn:"放大",zoomOut:"缩小",switchToLightMode:"切换至浅色模式",switchToDarkMode:"切换至深色模式",resetView:"重置视图",toggleFullscreen:"切换全屏",aboutThisMap:"关于此地图",closeMenu:"关闭菜单",reloadMap:"重新加载地图",showClusters:"显示聚类",clusterSettings:"聚类设置",startAutoFly:"开始自动飞行",stopFlight:"停止飞行",speedLabel:"速度:",speedOption:{slow:"慢",normal:"正常",fast:"快"},shareEmbed:"分享与嵌入",posterMap:"海报地图",prayerList:"禱告名單",cardDeck:"禱告卡組",printOptions:"列印選項",showOnMap:"在地圖上顯示",close:"關閉",showOnMapAria:"在地圖上顯示 {label}",cardStockAria:"祷告卡片尺寸",previewPrintPoster:"预览并打印 {label} 海报",share:"分享",shareSteps:["把這張地圖嵌入你的網站","列出你城市裡的網站","教他們也嵌入這張地圖","教他們去教別人嵌入","為耶穌讓地圖遍地繁增!"],clearSelection:"清除选择",noOptions:"未找到选项",renderingLocal:"正在您的浏览器中生成可打印质量的图片——不会上传任何内容。",postersPerRow:"每行海报数"},L$={title:"未参与族群所在地的互联网接入",bands:{yes:"已联网 60%+",partial:"部分 25–59%",no:"低,低于 25%",unknown:"未测量"},peopleGroup:"族群",caveat:"全国数据(世界银行)。各城市的联网数据未公开——请勿用国家数据推断某个城市。",sheet:{close:"关闭",ai:"这些数据来自人工智能深度检索,可能包含错误信息。",dismiss:"忽略",internetUsers:"互联网用户",measured:"测量年份",mobilePer100:"每百人移动电话",peopleGroups:"族群",topPlatform:"主要平台",unknown:"未知",carriers:"运营商和互联网服务商({n})",socialPlatforms:"社交平台",note:"这是全国数据,不是城市测量值。运营商名称来自 ASN 注册持有者——其中除互联网服务商外还包括银行和大学,因此“运营商”标记是基于名称的推断,并非经过核实的分类。"}},A$={research_controls:"研究控件",clustering:"聚类",filters:"筛选",pin_dim:"圆点淡化",export_poster:"导出海报…",reload_data:"重新加载数据",off:"关闭",native:"原生",mst:"MST",network:"网络",off_desc:"逐个显示每个圆点",native_desc:"Mapbox 圆形聚类(最快)",mst_desc:"最小生成树亲缘网络",network_desc:"最近邻连接线",search_languages:"搜索语言…",search_religions:"搜索宗教…",reset_all:"全部重置",no_languages:"尚未加载语言",no_religions:"尚未加载宗教",unadopted:"未认领",min:"最小",max:"最大",adopted:"已认领",adoption:"认领",engaged:"已参与",engagement:"参与",unengaged:"需要参与",language:"语言",religion:"宗教",population:"人口",any:"全部",active_count:"{n} 项启用",prayer_status:"代祷状态",close:"关闭",clear:"清除",map_controls:"地图控件"},P$={bloc:"亲缘板块",gospel_access:"福音可及性",people:"民族",people_name:"民族(名称)",praying:"正在代祷",religion_family:"宗教族系",search_language:"搜索语言",search_people:"搜索民族",search_place:"搜索地点",search_religion:"搜索宗教",upgs_in_scope:"范围内的 UPG",countries_touched:"涉及国家",unreached:"未得之民",sum_population:"Σ 人口",sum_praying:"Σ 代祷",charts:"图表",table:"表格",cluster:"民族群",country:"國家",engagement:"参与",language:"语言",language_family:"语系",people_group:"民族",population:"人口",prayer:"祷告",region:"区域",religion:"宗教",status:"状态",adopted:"已认领",filters:"筛选",gospel_resources:"福音资源",map:"地图",search_placeholder:"搜索民族、地点、语言、宗教…",any:"全部",active_count:"{n} 项启用",prayer_status:"代祷状态",map_controls:"地图控件",close:"关闭",clear:"清除",dashboard_title:"全局研究仪表板",align_dashboard:"对齐仪表板",align_dashboard_tip:"将仪表板布局恢复为默认对齐",selected:"已选择",world:"世界",vertical_legend:"垂直图例",groups_in_scope:"个民族在范围内",filter_by:"筛选",remove_filter:"移除筛选",groups:"个民族",expand:"展开",collapse:"收起",place:"地点"},E$={labels:{country:"国家:",population:"人口:",language:"语言:",religion:"宗教:",languageFamily:"语系:",peopleCommitted:"承诺祷告人数:"},messages:{noDescription:"暂无描述。"}},C$={_note:"SHORT UI LABELS ONLY for the gospel-resources bundle. The explanatory prose on those surfaces stays in English on purpose and is NOT in this file; prose.english is the one translated line that says so.",prose:{english:"以下说明性文字为英文。"},mode:{gap:"缺口",coverage:"已找到的资源"},search:{placeholder:"搜索族群、语言或 ISO 代码",clear:"清除搜索",none:"没有符合该名称、语言或代码的结果。",placeholderShort:"族群、语言或 ISO 代码"},legend:{title:"尚未接触且未找到任何福音资源的族群",band60:"60% 以上一无所有",band30:"30–59%",bandSome:"部分族群",bandAll:"所有族群都有一些",tier2:"圣经与影片",tier1:"找到部分资源",tier0:"一无所获",hnr:"能听,但没有文字",showAll:"显示所有族群",titleCoverage:"尚未接触但已找到部分福音资源的族群",cov80:"80% 以上有资源",cov50:"50–79%",cov1:"1–49%",cov0:"无人拥有",tallyEach:"每个",tallyIs:"代表一个族群 —",tallyOf:"个族群中,",tallyLink:"个有链接",doxa0:"全部都有资源",doxa1:"1–4 个一无所有",doxa5:"5–14",doxa15:"15–39",doxa40:"40+",cvd1:"1–4 个已触及",cvd5:"5–14",cvd15:"15–39",cvd40:"40+",onMap:"本地图上的 Doxa 族群",notPlaced:"在名单上,尚未定位",outOfScope:"没有 Doxa 族群 — 不着色"},tabs:{groups:"最大的族群",countries:"按国家",regions:"按地区",noprayer:"无人代祷",hnr:"能听,无文字"},stat:{language:"语言",population:"人口",countries:"国家",peopleGroups:"族群",noResource:"未找到资源",peopleAffected:"受影响人数",haveScripture:"有圣经",haveFilm:"有影片",haveAudio:"有有声圣经",signLanguages:"手语",growingUnreached:"增长中且未接触",deathsDay:"每日估计死亡人数"},sheet:{ownLanguage:"以他们自己的语言",close:"关闭",loading:"正在加载资源…",pray:"为其代祷:",everyResource:"所有资源 —",alsoSpeak:"同样使用"},res:{scripture:"圣经",film:"影片",audio:"音频",bibleVideo:"圣经视频",bibleStories:"Open Bible Stories",gospelAudio:"福音音频",gospelPresentation:"福音简介",scriptureEarth:"Scripture Earth",training:"门徒训练",jesusFilm:"《耶稣传》",audioScripture:"音频圣经",bibleStoriesPlain:"圣经故事"},state:{noneFound:"一无所获",noneAtFcbh:"FCBH 没有",noneAtGrn:"GRN 没有",notInZume:"不在 Zume 的 54 种语言内",linkChecked:"链接已核实",unchecked:"未核实",linkDead:"链接失效",wrongLanguage:"语言不符",varietyNotStated:"(未注明变体)",inLanguage:"—"},guide:{dotVsCountry:"每个圆点代表 Doxa 的一个族群及其语言;国家的颜色代表这类族群的数量。",noneFoundShort:"“一无所获”指未见于本次查询的资源库,并不证明其不存在。",tapCountry:"点按国家,逐个族群查看实际资源。"},tables:{title:"福音资源 — 数据",showing:"显示",of:"/共",for:"—",filteredTo:"筛选:",showAll:"显示全部资源",t_doxa:"Doxa — 福音可及性",t_links:"每项资源与链接",t_nothing:"一无所获之处",t_countrygap:"各国缺口",t_translation:"能听,无文字",t_translationcountry:"何处需要翻译",t_gaps:"缺口与机会",t_bridges:"城市桥梁",t_deaf:"聋人缺口",t_resources:"按族群列出资源",t_languages:"各国语言",t_growth:"可及性与人口增长"},pages:{listTitle:"按语言列出的福音资源",chartsTitle:"福音资源 — 按语言",loadingTables:"正在加载资源表…"},list:{noText:"没有文字圣经",hasScripture:"有圣经",allLanguages:"全部语言",peopleGroup:"个族群",peopleGroups:"个族群",scriptureHere:"本语言的圣经"},columns:{"People group":"族群",Country:"国家",Region:"地区",Language:"语言",Population:"人口",Religion:"宗教","Gospel access":"福音可及性",Resources:"资源",Scripture:"圣经","Bible video":"圣经视频","Gospel presentation":"福音简介",Countries:"国家","People groups":"族群"},charts:{scriptureAny:"圣经(任意)",fullBible:"全本圣经",newTestament:"新约",filmAny:"影片(任意)",nothingInPools:"在已检索的资源库中一无所获",nothingInPoolsLower:"在已检索的资源库中一无所获",noResourceInPools:"在已检索的资源库中未找到资源",aResourceFound:"找到资源",tabCoverage:"资源覆盖",tabGap:"最大缺口",keyScripture:"圣经",keyFilmStories:"影片 / 故事",keyAudioEtc:"音频 / 简介 / 训练",unresolvedCode:"ISO 639-3 之外的代码 — 未确定,未测量"}},N$={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:"无法加载民族数据。这是连接问题,而不是筛选问题。"},T$={title:{adoption:"认领进度",affinityBlocs:"亲缘板块",doxaRegions:"Doxa 区域",engagement:"参与进度",gospelResources:"福音资源",languageFamilies:"语系",prayer:"祷告进度",upg100List:"我的 UPG 100 名单"},header:{collapsed:"图例",peopleGroupFallback:"民族群体",default:"圖例"},prayer:{needsPrayer:"需要祷告",hasPrayer:"已有祷告",fullPrayerCoverage:"全面祷告覆盖"},progress:{title:"进度",covered:"{total} 个民族群体中已有 {covered} 个被祷告覆盖 · {pct}%",short:"{covered} / {total} · {pct}%",segment:"{label} · {count} · {pct}%"},engagement:{needsEngagement:"需要参与",hasEngagement:"已有参与"},adoption:{needsAdoption:"需要认领",hasAdoption:"已有认领"},columns:{upgs:"UUPGs",population:"人口",name:"名称"},footer:{total:"总计"},sortByUpgs:"按 UUPG 排序",sortByPop:"按人口排序",colLabel:{religion:"UUPG 宗教",prayer:"祷告状态",engagement:"参与状态",adoption:"认领状态",status:"状态"},titleBar:{legend:"图例",peopleGroups:"民族",wagfRegions:"WAGF 区域",languages:"语言"},tabInfo:{upg100Region:"区域 — 按世界区域排列 UPG-100 名单(非洲、印度、中东、聋人……)。数字是其下每份名单的 UUPG 与人口总和。",upg100Zone:"UPG-100 名单 — 每一份都是某地区未得之民的祷告名单,也是地图所绘制和上色的内容。每份名单印成独立的祷告册。",upg100Group:"族群 — 名单内各个未得之民群体,祷告需要最大的排在前面。地图上每个点就是其中之一。"},a11y:{expandRow:"展开{label}",collapseRow:"折叠{label}",clearSelection:"清除选择"}},R$={menuComingSoon:"菜单即将推出",pinHint:{tapDot:"点按一个彩色圆点——仍有人需要祷告"},upg100WallHeading:"我的 UPG 100 名單 — 禱告名單與海報",upg100WallTag:"禱告動員",upg100WallIntro:"將禱告的工作分成五十人、一百人一組 — 就像耶穌餵飽五千人那樣(路加福音 9:14)。每一張海報都是一份 100 人名單,你可以為他們禱告、列印出來、貼在牆上 — 按著他們族群的名字為他們禱告。"},M$={clusterByRegion:"按 Doxa 区域",clusterByLanguageFamily:"按语系",clusterByGospelResource:"按福音资源"},O$={country:{wagfRegion:"WAGF 地區",wagfBlock:"WAGF 區塊",country:"國家",uupgCount:"UUPG 數量"}},F$={header:"当前祷告轮次",lap:"第",upgs:"UUPGs",separator:" / "},I$={"%count% people groups in %countries% countries":"%countries% 个国家中的 %count% 个民族","%region% has %count% people groups across %countries% countries. Each pin is coloured by how many people are praying for that people group.":"%region% 在 %countries% 个国家中有 %count% 个民族。每个标记的颜色表示有多少人在为该民族祷告。","1+ People Praying":"1 人以上祷告","100+ People Praying":"100 人以上祷告",Adopted:"已认领","Adoption Progress":"认领进度","All Regions":"所有区域","Alternate Names":"其他名称","Choose a region":"选择区域","Clear All":"全部清除",Countries:"国家","Countries in this region":"本区域的国家",Country:"国家",Engaged:"已参与","Engagement Progress":"参与进度","Every unengaged people group adopted by a church committed to prayer, giving, and sending":"每一个尚无人参与的民族,都由一间委身于祷告、奉献与差派的教会认领","Exact Search":"精确搜索","Find unreached people groups by region and country.":"按区域和国家查找未得之民。","Full Profile":"完整档案",Goal:"目标","Hide Filters":"隐藏筛选","Hide country posters":"隐藏国家海报",Intercessors:"代祷者","Load More":"加载更多","Loading results...":"正在加载结果…",Map:"地图","Mobilize 100+ people praying daily for each DOXA people group":"为每个 DOXA 民族动员 100 人以上每日祷告","No One Praying":"无人祷告","No options found":"未找到选项","No poster has been generated for this country yet.":"尚未为该国家生成海报。","No unengaged people groups by 2033":"到 2033 年不再有无人参与的民族","Not Adopted":"未认领",Other:"其他","Page Not Found":"未找到页面","People Group":"民族","People Groups":"民族","People committed to praying":"委身祷告的人数","Pick a region above, or click any dot to open that people group's country.":"在上方选择一个区域,或点击任意圆点以打开该民族所在的国家。","Pick a region or a country on the Regions List tab to narrow this dashboard.":"在“区域列表”标签中选择一个区域或国家,以缩小此仪表板的范围。",Population:"人口","Prayer Coverage":"祷告覆盖","Prayer coverage progress":"祷告覆盖进度","Region Dashboards":"区域仪表板","Region dashboard":"区域仪表板",Regions:"区域","Regions List":"区域列表",Religion:"宗教","Search names, country/continent, religions...":"搜索名称、国家/大洲、宗教…","See %region% dashboard":"查看 %region% 仪表板","See All":"查看全部",Select:"选择","Select View":"选择视图","Show Filters":"显示筛选","There are %count% people groups in %country%. Check the map for the people groups on the border of this country as well.":"%country% 有 %count% 个民族。也请在地图上查看该国边境地区的民族。",Total:"总计","Type to search...":"输入以搜索…","Unengaged people groups":"无人参与的民族","View country posters":"查看国家海报",Views:"视图","WAGF Block":"WAGF 板块","WAGF Region":"WAGF 区域","people groups adopted":"已认领的民族","people groups engaged":"已参与的民族","Outside this region":"在此区域之外",Pray:"祷告","Loading region dashboards…":"正在加载区域面板…","No regions found.":"未找到区域。","Region data could not be loaded. This is a connection problem, not a filter.":"无法加载区域数据。这是连接问题,不是筛选问题。","People groups could not be loaded. This is a connection problem, not a filter.":"无法加载民族群体。这是连接问题,不是筛选问题。","The map could not start. This is a map-token or connection problem, not a filter — the figures above are unaffected.":"地图无法启动。这是地图令牌或连接问题,不是筛选问题——上方的数字不受影响。"},D$={placeholder:"民族、地点、语言、宗教",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"},upg100Placeholder:"搜索民族、UPG-100 名单或区域…"},U$={title:"插件工作室",navLabel:"按能力分类的插件",countLabel:"此处列出 {bundles} 个包 · {elements} 个插件",changeLanguage:"切换语言",copyEmbed:"复制嵌入代码",copy:"复制",copied:"已复制",scriptEmbed:"脚本嵌入",loading:"正在加载 {name}…",couldNotLoad:"无法加载 {name}。",chooseElement:"请从列表中选择一个插件。",filterPlaceholder:"筛选插件",collapseAll:"全部折叠",noMatch:"没有与“{query}”匹配的插件。",openSection:"打开 {cap},{label}",part:"部分",noStandalone:"无独立页面",cap5:"应用外壳",cap4:"组合",cap3:"多视图",cap2:"预设",cap1:"单一",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠",partOf:"{name} 的一部分,不单独发布",mapToken:"地图令牌",tokenPaste:"Mapbox 公开令牌 (pk.…)",tokenUrlLabel:"…或令牌服务的网址",tokenApply:"使用",tokenClear:"清除",tokenStoredHere:"仅保存在此浏览器中。",tokenSourceYours:"正在使用您的令牌",tokenSourceUrl:"正在使用来自 {url} 的令牌",tokenSourceBuilt:"正在使用此页面内置的令牌",tokenSourceNone:"没有 Mapbox 令牌:Mapbox 地图无法加载(MapLibre 地图不需要)",tokenSecret:"这是秘密令牌 (sk.…)。请粘贴公开令牌 (pk.…):此页面是公开的。",tokenNotPk:"Mapbox 公开令牌以 pk. 开头",tokenUrlFailed:"无法从该网址获取令牌:{why}",settings:"设置",mapEngine:"地图引擎",engineDefault:"各地图自身的",engineMapboxNote:"需要令牌",engineMaplibreNote:"无需令牌",tokenNotNeeded:"已选择 MapLibre:其地图无需 Mapbox 令牌"},G$={prayer:"祷告",adoption:"认领",engagement:"参与","affinity-blocks":"民族",regions:"区域",countries:"国家","language-families":"语言",religion:"宗教",family:"语系",language:"语言",dialect:"方言/变体",bloc:"亲缘板块",cluster:"民族群",group:"民族",pgic:"国内民族",region:"WAGF 区域",block:"WAGF 板块",country:"国家",upg100Region:"区域",upg100Zone:"UPG-100 名单",upg100Group:"族群",selectView:"選擇檢視",views:"檢視",prayerResources:"禱告資源",map:"地圖"},j$={kicker:"DOXA · 异象",title:"每一个民族,每一个地方。",tagline:"从世界上所有族群到 DOXA 为之祷告的族群,全部依据数据计算。",funnelLabel:"从所有族群到 DOXA 族群",allLabel:"族群",allNote:"每个族群在其居住的每个国家各计一次",unreachedLabel:"未得之民",unreachedNote:"福音派信徒少于 2%",frontierLabel:"前沿族群",frontierNote:"福音派信徒少于 0.1%",doxaLabel:"DOXA 族群",doxaNote:"其中 {frontier} 个为前沿族群",people:"{n} 人",sources:"族群:{imb},数据日期 {date}。DOXA 名单:pray.doxa.life,{date2}。",howCounted:"这些数字如何计算",ruleAll:"IMB 族群数据的每一行:一个国家中的一个族群。",ruleUnreached:"IMB 迷失优先级 0 至 2:福音派信徒少于 2%。",ruleFrontier:"IMB 迷失优先级 0:福音派信徒少于 0.1%。属于未得之民的一部分。",ruleDoxa:"DOXA 祷告名单上的每个族群,按民族和国家与 IMB 数据匹配。并非全部都是前沿族群。"};/*! - * shared v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function z$(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const Ha=typeof window<"u",Mo=(e,t=!1)=>t?Symbol.for(e):Symbol(e),B$=(e,t,o)=>V$({l:e,k:t,s:o}),V$=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),ct=e=>typeof e=="number"&&isFinite(e),q$=e=>Jl(e)==="[object Date]",Oo=e=>Jl(e)==="[object RegExp]",Wa=e=>Oe(e)&&Object.keys(e).length===0,bt=Object.assign,H$=Object.create,Je=(e=null)=>H$(e);let Kl;const _o=()=>Kl||(Kl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:Je());function Yl(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/=/g,"=")}function Xl(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function W$(e){return e=e.replace(/(\w+)\s*=\s*"([^"]*)"/g,(n,a,s)=>`${a}="${Xl(s)}"`),e=e.replace(/(\w+)\s*=\s*'([^']*)'/g,(n,a,s)=>`${a}='${Xl(s)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(e)&&(e=e.replace(/(\s+)(on)(\w+\s*=)/gi,"$1on$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(n=>{e=e.replace(n,"$1javascript:")}),e}const K$=Object.prototype.hasOwnProperty;function Ht(e,t){return K$.call(e,t)}const at=Array.isArray,ot=e=>typeof e=="function",_e=e=>typeof e=="string",ze=e=>typeof e=="boolean",Ke=e=>e!==null&&typeof e=="object",Y$=e=>Ke(e)&&ot(e.then)&&ot(e.catch),Zl=Object.prototype.toString,Jl=e=>Zl.call(e),Oe=e=>{if(!Ke(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},X$=e=>e==null?"":at(e)||Oe(e)&&e.toString===Zl?JSON.stringify(e,null,2):String(e);function Z$(e,t=""){return e.reduce((o,n,a)=>a===0?o+n:o+t+n,"")}function Ka(e){let t=e;return()=>++t}const Ya=e=>!Ke(e)||at(e);function Xa(e,t){if(Ya(e)||Ya(t))throw new Error("Invalid value");const o=[{src:e,des:t}];for(;o.length;){const{src:n,des:a}=o.pop();Object.keys(n).forEach(s=>{s!=="__proto__"&&(Ke(n[s])&&!Ke(a[s])&&(a[s]=Array.isArray(n[s])?[]:Je()),Ya(a[s])||Ya(n[s])?a[s]=n[s]:o.push({src:n[s],des:a[s]}))})}}/*! - * message-compiler v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function J$(e,t,o){return{line:e,column:t,offset:o}}function Za(e,t,o){return{start:e,end:t}}const Q$=/\{([0-9a-zA-Z]+)\}/g;function Ql(e,...t){return t.length===1&&eb(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(Q$,(o,n)=>t.hasOwnProperty(n)?t[n]:"")}const ec=Object.assign,tc=e=>typeof e=="string",eb=e=>e!==null&&typeof e=="object";function oc(e,t=""){return e.reduce((o,n,a)=>a===0?o+n:o+t+n,"")}const tr={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},tb={[tr.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function ob(e,t,...o){const n=Ql(tb[e],...o||[]),a={message:String(n),code:e};return t&&(a.location=t),a}const Ne={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},nb={[Ne.EXPECTED_TOKEN]:"Expected token: '{0}'",[Ne.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[Ne.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[Ne.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[Ne.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[Ne.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[Ne.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[Ne.EMPTY_PLACEHOLDER]:"Empty placeholder",[Ne.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[Ne.INVALID_LINKED_FORMAT]:"Invalid linked format",[Ne.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[Ne.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[Ne.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[Ne.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[Ne.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[Ne.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function fn(e,t,o={}){const{domain:n,messages:a,args:s}=o,r=Ql((a||nb)[e]||"",...s||[]),i=new SyntaxError(String(r));return i.code=e,t&&(i.location=t),i.domain=n,i}function ab(e){throw e}const yo=" ",sb="\r",Lt=` -`,rb="\u2028",ib="\u2029";function lb(e){const t=e;let o=0,n=1,a=1,s=0;const r=w=>t[w]===sb&&t[w+1]===Lt,i=w=>t[w]===Lt,l=w=>t[w]===ib,c=w=>t[w]===rb,u=w=>r(w)||i(w)||l(w)||c(w),d=()=>o,f=()=>n,v=()=>a,L=()=>s,k=w=>r(w)||l(w)||c(w)?Lt:t[w],x=()=>k(o),C=()=>k(o+s);function h(){return s=0,u(o)&&(n++,a=0),r(o)&&o++,o++,a++,t[o]}function m(){return r(o+s)&&s++,s++,t[o+s]}function p(){o=0,n=1,a=1,s=0}function b(w=0){s=w}function A(){const w=o+s;for(;w!==o;)h();s=0}return{index:d,line:f,column:v,peekOffset:L,charAt:k,currentChar:x,currentPeek:C,next:h,peek:m,reset:p,resetPeek:b,skipToPeek:A}}const Fo=void 0,cb=".",nc="'",ub="tokenizer";function pb(e,t={}){const o=t.location!==!1,n=lb(e),a=()=>n.index(),s=()=>J$(n.line(),n.column(),n.index()),r=s(),i=a(),l={currentType:14,offset:i,startLoc:r,endLoc:r,lastType:14,lastOffset:i,lastStartLoc:r,lastEndLoc:r,braceNest:0,inLinked:!1,text:""},c=()=>l,{onError:u}=t;function d(g,$,y,...E){const q=c();if($.column+=y,$.offset+=y,u){const K=o?Za(q.startLoc,$):null,N=fn(g,K,{domain:ub,args:E});u(N)}}function f(g,$,y){g.endLoc=s(),g.currentType=$;const E={type:$};return o&&(E.loc=Za(g.startLoc,g.endLoc)),y!=null&&(E.value=y),E}const v=g=>f(g,14);function L(g,$){return g.currentChar()===$?(g.next(),$):(d(Ne.EXPECTED_TOKEN,s(),0,$),"")}function k(g){let $="";for(;g.currentPeek()===yo||g.currentPeek()===Lt;)$+=g.currentPeek(),g.peek();return $}function x(g){const $=k(g);return g.skipToPeek(),$}function C(g){if(g===Fo)return!1;const $=g.charCodeAt(0);return $>=97&&$<=122||$>=65&&$<=90||$===95}function h(g){if(g===Fo)return!1;const $=g.charCodeAt(0);return $>=48&&$<=57}function m(g,$){const{currentType:y}=$;if(y!==2)return!1;k(g);const E=C(g.currentPeek());return g.resetPeek(),E}function p(g,$){const{currentType:y}=$;if(y!==2)return!1;k(g);const E=g.currentPeek()==="-"?g.peek():g.currentPeek(),q=h(E);return g.resetPeek(),q}function b(g,$){const{currentType:y}=$;if(y!==2)return!1;k(g);const E=g.currentPeek()===nc;return g.resetPeek(),E}function A(g,$){const{currentType:y}=$;if(y!==8)return!1;k(g);const E=g.currentPeek()===".";return g.resetPeek(),E}function w(g,$){const{currentType:y}=$;if(y!==9)return!1;k(g);const E=C(g.currentPeek());return g.resetPeek(),E}function M(g,$){const{currentType:y}=$;if(!(y===8||y===12))return!1;k(g);const E=g.currentPeek()===":";return g.resetPeek(),E}function U(g,$){const{currentType:y}=$;if(y!==10)return!1;const E=()=>{const K=g.currentPeek();return K==="{"?C(g.peek()):K==="@"||K==="%"||K==="|"||K===":"||K==="."||K===yo||!K?!1:K===Lt?(g.peek(),E()):Y(g,!1)},q=E();return g.resetPeek(),q}function ne(g){k(g);const $=g.currentPeek()==="|";return g.resetPeek(),$}function B(g){const $=k(g),y=g.currentPeek()==="%"&&g.peek()==="{";return g.resetPeek(),{isModulo:y,hasSpace:$.length>0}}function Y(g,$=!0){const y=(q=!1,K="",N=!1)=>{const z=g.currentPeek();return z==="{"?K==="%"?!1:q:z==="@"||!z?K==="%"?!0:q:z==="%"?(g.peek(),y(q,"%",!0)):z==="|"?K==="%"||N?!0:!(K===yo||K===Lt):z===yo?(g.peek(),y(!0,yo,N)):z===Lt?(g.peek(),y(!0,Lt,N)):!0},E=y();return $&&g.resetPeek(),E}function ge(g,$){const y=g.currentChar();return y===Fo?Fo:$(y)?(g.next(),y):null}function I(g){const $=g.charCodeAt(0);return $>=97&&$<=122||$>=65&&$<=90||$>=48&&$<=57||$===95||$===36}function Q(g){return ge(g,I)}function H(g){const $=g.charCodeAt(0);return $>=97&&$<=122||$>=65&&$<=90||$>=48&&$<=57||$===95||$===36||$===45}function G(g){return ge(g,H)}function ie(g){const $=g.charCodeAt(0);return $>=48&&$<=57}function F(g){return ge(g,ie)}function O(g){const $=g.charCodeAt(0);return $>=48&&$<=57||$>=65&&$<=70||$>=97&&$<=102}function V(g){return ge(g,O)}function D(g){let $="",y="";for(;$=F(g);)y+=$;return y}function ae(g){x(g);const $=g.currentChar();return $!=="%"&&d(Ne.EXPECTED_TOKEN,s(),0,$),g.next(),"%"}function me(g){let $="";for(;;){const y=g.currentChar();if(y==="{"||y==="}"||y==="@"||y==="|"||!y)break;if(y==="%")if(Y(g))$+=y,g.next();else break;else if(y===yo||y===Lt)if(Y(g))$+=y,g.next();else{if(ne(g))break;$+=y,g.next()}else $+=y,g.next()}return $}function we(g){x(g);let $="",y="";for(;$=G(g);)y+=$;return g.currentChar()===Fo&&d(Ne.UNTERMINATED_CLOSING_BRACE,s(),0),y}function Le(g){x(g);let $="";return g.currentChar()==="-"?(g.next(),$+=`-${D(g)}`):$+=D(g),g.currentChar()===Fo&&d(Ne.UNTERMINATED_CLOSING_BRACE,s(),0),$}function Ae(g){return g!==nc&&g!==Lt}function ve(g){x(g),L(g,"'");let $="",y="";for(;$=ge(g,Ae);)$==="\\"?y+=oe(g):y+=$;const E=g.currentChar();return E===Lt||E===Fo?(d(Ne.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,s(),0),E===Lt&&(g.next(),L(g,"'")),y):(L(g,"'"),y)}function oe(g){const $=g.currentChar();switch($){case"\\":case"'":return g.next(),`\\${$}`;case"u":return fe(g,$,4);case"U":return fe(g,$,6);default:return d(Ne.UNKNOWN_ESCAPE_SEQUENCE,s(),0,$),""}}function fe(g,$,y){L(g,$);let E="";for(let q=0;q{const E=g.currentChar();return E==="{"||E==="%"||E==="@"||E==="|"||E==="("||E===")"||!E||E===yo?y:(y+=E,g.next(),$(y))};return $("")}function j(g){x(g);const $=L(g,"|");return x(g),$}function ee(g,$){let y=null;switch(g.currentChar()){case"{":return $.braceNest>=1&&d(Ne.NOT_ALLOW_NEST_PLACEHOLDER,s(),0),g.next(),y=f($,2,"{"),x(g),$.braceNest++,y;case"}":return $.braceNest>0&&$.currentType===2&&d(Ne.EMPTY_PLACEHOLDER,s(),0),g.next(),y=f($,3,"}"),$.braceNest--,$.braceNest>0&&x(g),$.inLinked&&$.braceNest===0&&($.inLinked=!1),y;case"@":return $.braceNest>0&&d(Ne.UNTERMINATED_CLOSING_BRACE,s(),0),y=te(g,$)||v($),$.braceNest=0,y;default:{let q=!0,K=!0,N=!0;if(ne(g))return $.braceNest>0&&d(Ne.UNTERMINATED_CLOSING_BRACE,s(),0),y=f($,1,j(g)),$.braceNest=0,$.inLinked=!1,y;if($.braceNest>0&&($.currentType===5||$.currentType===6||$.currentType===7))return d(Ne.UNTERMINATED_CLOSING_BRACE,s(),0),$.braceNest=0,ce(g,$);if(q=m(g,$))return y=f($,5,we(g)),x(g),y;if(K=p(g,$))return y=f($,6,Le(g)),x(g),y;if(N=b(g,$))return y=f($,7,ve(g)),x(g),y;if(!q&&!K&&!N)return y=f($,13,_(g)),d(Ne.INVALID_TOKEN_IN_PLACEHOLDER,s(),0,y.value),x(g),y;break}}return y}function te(g,$){const{currentType:y}=$;let E=null;const q=g.currentChar();switch((y===8||y===9||y===12||y===10)&&(q===Lt||q===yo)&&d(Ne.INVALID_LINKED_FORMAT,s(),0),q){case"@":return g.next(),E=f($,8,"@"),$.inLinked=!0,E;case".":return x(g),g.next(),f($,9,".");case":":return x(g),g.next(),f($,10,":");default:return ne(g)?(E=f($,1,j(g)),$.braceNest=0,$.inLinked=!1,E):A(g,$)||M(g,$)?(x(g),te(g,$)):w(g,$)?(x(g),f($,12,P(g))):U(g,$)?(x(g),q==="{"?ee(g,$)||E:f($,11,S(g))):(y===8&&d(Ne.INVALID_LINKED_FORMAT,s(),0),$.braceNest=0,$.inLinked=!1,ce(g,$))}}function ce(g,$){let y={type:14};if($.braceNest>0)return ee(g,$)||v($);if($.inLinked)return te(g,$)||v($);switch(g.currentChar()){case"{":return ee(g,$)||v($);case"}":return d(Ne.UNBALANCED_CLOSING_BRACE,s(),0),g.next(),f($,3,"}");case"@":return te(g,$)||v($);default:{if(ne(g))return y=f($,1,j(g)),$.braceNest=0,$.inLinked=!1,y;const{isModulo:q,hasSpace:K}=B(g);if(q)return K?f($,0,me(g)):f($,4,ae(g));if(Y(g))return f($,0,me(g));break}}return y}function le(){const{currentType:g,offset:$,startLoc:y,endLoc:E}=l;return l.lastType=g,l.lastOffset=$,l.lastStartLoc=y,l.lastEndLoc=E,l.offset=a(),l.startLoc=s(),n.currentChar()===Fo?f(l,14):ce(n,l)}return{nextToken:le,currentOffset:a,currentPosition:s,context:c}}const db="parser",gb=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function fb(e,t,o){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const n=parseInt(t||o,16);return n<=55295||n>=57344?String.fromCodePoint(n):"�"}}}function hb(e={}){const t=e.location!==!1,{onError:o,onWarn:n}=e;function a(m,p,b,A,...w){const M=m.currentPosition();if(M.offset+=A,M.column+=A,o){const U=t?Za(b,M):null,ne=fn(p,U,{domain:db,args:w});o(ne)}}function s(m,p,b,A,...w){const M=m.currentPosition();if(M.offset+=A,M.column+=A,n){const U=t?Za(b,M):null;n(ob(p,U,w))}}function r(m,p,b){const A={type:m};return t&&(A.start=p,A.end=p,A.loc={start:b,end:b}),A}function i(m,p,b,A){t&&(m.end=p,m.loc&&(m.loc.end=b))}function l(m,p){const b=m.context(),A=r(3,b.offset,b.startLoc);return A.value=p,i(A,m.currentOffset(),m.currentPosition()),A}function c(m,p){const b=m.context(),{lastOffset:A,lastStartLoc:w}=b,M=r(5,A,w);return M.index=parseInt(p,10),m.nextToken(),i(M,m.currentOffset(),m.currentPosition()),M}function u(m,p,b){const A=m.context(),{lastOffset:w,lastStartLoc:M}=A,U=r(4,w,M);return U.key=p,b===!0&&(U.modulo=!0),m.nextToken(),i(U,m.currentOffset(),m.currentPosition()),U}function d(m,p){const b=m.context(),{lastOffset:A,lastStartLoc:w}=b,M=r(9,A,w);return M.value=p.replace(gb,fb),m.nextToken(),i(M,m.currentOffset(),m.currentPosition()),M}function f(m){const p=m.nextToken(),b=m.context(),{lastOffset:A,lastStartLoc:w}=b,M=r(8,A,w);return p.type!==12?(a(m,Ne.UNEXPECTED_EMPTY_LINKED_MODIFIER,b.lastStartLoc,0),M.value="",i(M,A,w),{nextConsumeToken:p,node:M}):(p.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,Wt(p)),M.value=p.value||"",i(M,m.currentOffset(),m.currentPosition()),{node:M})}function v(m,p){const b=m.context(),A=r(7,b.offset,b.startLoc);return A.value=p,i(A,m.currentOffset(),m.currentPosition()),A}function L(m){const p=m.context(),b=r(6,p.offset,p.startLoc);let A=m.nextToken();if(A.type===9){const w=f(m);b.modifier=w.node,A=w.nextConsumeToken||m.nextToken()}switch(A.type!==10&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(A)),A=m.nextToken(),A.type===2&&(A=m.nextToken()),A.type){case 11:A.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(A)),b.key=v(m,A.value||"");break;case 5:A.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(A)),b.key=u(m,A.value||"");break;case 6:A.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(A)),b.key=c(m,A.value||"");break;case 7:A.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(A)),b.key=d(m,A.value||"");break;default:{a(m,Ne.UNEXPECTED_EMPTY_LINKED_KEY,p.lastStartLoc,0);const w=m.context(),M=r(7,w.offset,w.startLoc);return M.value="",i(M,w.offset,w.startLoc),b.key=M,i(b,w.offset,w.startLoc),{nextConsumeToken:A,node:b}}}return i(b,m.currentOffset(),m.currentPosition()),{node:b}}function k(m){const p=m.context(),b=p.currentType===1?m.currentOffset():p.offset,A=p.currentType===1?p.endLoc:p.startLoc,w=r(2,b,A);w.items=[];let M=null,U=null;do{const Y=M||m.nextToken();switch(M=null,Y.type){case 0:Y.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(Y)),w.items.push(l(m,Y.value||""));break;case 6:Y.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(Y)),w.items.push(c(m,Y.value||""));break;case 4:U=!0;break;case 5:Y.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(Y)),w.items.push(u(m,Y.value||"",!!U)),U&&(s(m,tr.USE_MODULO_SYNTAX,p.lastStartLoc,0,Wt(Y)),U=null);break;case 7:Y.value==null&&a(m,Ne.UNEXPECTED_LEXICAL_ANALYSIS,p.lastStartLoc,0,Wt(Y)),w.items.push(d(m,Y.value||""));break;case 8:{const ge=L(m);w.items.push(ge.node),M=ge.nextConsumeToken||null;break}}}while(p.currentType!==14&&p.currentType!==1);const ne=p.currentType===1?p.lastOffset:m.currentOffset(),B=p.currentType===1?p.lastEndLoc:m.currentPosition();return i(w,ne,B),w}function x(m,p,b,A){const w=m.context();let M=A.items.length===0;const U=r(1,p,b);U.cases=[],U.cases.push(A);do{const ne=k(m);M||(M=ne.items.length===0),U.cases.push(ne)}while(w.currentType!==14);return M&&a(m,Ne.MUST_HAVE_MESSAGES_IN_PLURAL,b,0),i(U,m.currentOffset(),m.currentPosition()),U}function C(m){const p=m.context(),{offset:b,startLoc:A}=p,w=k(m);return p.currentType===14?w:x(m,b,A,w)}function h(m){const p=pb(m,ec({},e)),b=p.context(),A=r(0,b.offset,b.startLoc);return t&&A.loc&&(A.loc.source=m),A.body=C(p),e.onCacheKey&&(A.cacheKey=e.onCacheKey(m)),b.currentType!==14&&a(p,Ne.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,m[b.offset]||""),i(A,p.currentOffset(),p.currentPosition()),A}return{parse:h}}function Wt(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function mb(e,t={}){const o={ast:e,helpers:new Set};return{context:()=>o,helper:s=>(o.helpers.add(s),s)}}function ac(e,t){for(let o=0;osc(o)),e}function sc(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let o=0;or;function l(k,x){r.code+=k}function c(k,x=!0){const C=x?n:"";l(a?C+" ".repeat(k):C)}function u(k=!0){const x=++r.indentLevel;k&&c(x)}function d(k=!0){const x=--r.indentLevel;k&&c(x)}function f(){c(r.indentLevel)}return{context:i,push:l,indent:u,deindent:d,newline:f,helper:k=>`_${k}`,needIndent:()=>r.needIndent}}function kb(e,t){const{helper:o}=e;e.push(`${o("linked")}(`),mn(e,t.key),t.modifier?(e.push(", "),mn(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function wb(e,t){const{helper:o,needIndent:n}=e;e.push(`${o("normalize")}([`),e.indent(n());const a=t.items.length;for(let s=0;s1){e.push(`${o("plural")}([`),e.indent(n());const a=t.cases.length;for(let s=0;s{const o=tc(t.mode)?t.mode:"normal",n=tc(t.filename)?t.filename:"message.intl";t.sourceMap;const a=t.breakLineCode!=null?t.breakLineCode:o==="arrow"?";":` -`,s=t.needIndent?t.needIndent:o!=="arrow",r=e.helpers||[],i=vb(e,{filename:n,breakLineCode:a,needIndent:s});i.push(o==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),i.indent(s),r.length>0&&(i.push(`const { ${oc(r.map(u=>`${u}: _${u}`),", ")} } = ctx`),i.newline()),i.push("return "),mn(i,e),i.deindent(s),i.push("}"),delete e.helpers;const{code:l,map:c}=i.context();return{ast:e,code:l,map:c?c.toJSON():void 0}};function Ab(e,t={}){const o=ec({},t),n=!!o.jit,a=!!o.minify,s=o.optimize==null?!0:o.optimize,i=hb(o).parse(e);return n?(s&&bb(i),a&&hn(i),{ast:i,code:""}):($b(i,o),Lb(i,o))}/*! - * core-base v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */function Pb(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(_o().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(_o().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(_o().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function io(e){return Ke(e)&&nr(e)===0&&(Ht(e,"b")||Ht(e,"body"))}const rc=["b","body"];function Eb(e){return Io(e,rc)}const ic=["c","cases"];function Cb(e){return Io(e,ic,[])}const lc=["s","static"];function Nb(e){return Io(e,lc)}const cc=["i","items"];function Tb(e){return Io(e,cc,[])}const uc=["t","type"];function nr(e){return Io(e,uc)}const pc=["v","value"];function Ja(e,t){const o=Io(e,pc);if(o!=null)return o;throw Qn(t)}const dc=["m","modifier"];function Rb(e){return Io(e,dc)}const gc=["k","key"];function Mb(e){const t=Io(e,gc);if(t)return t;throw Qn(6)}function Io(e,t,o){for(let n=0;n{r===void 0?r=i:r+=i},f[1]=()=>{r!==void 0&&(t.push(r),r=void 0)},f[2]=()=>{f[0](),a++},f[3]=()=>{if(a>0)a--,n=4,f[0]();else{if(a=0,r===void 0||(r=Ub(r),r===!1))return!1;f[1]()}};function v(){const L=e[o+1];if(n===5&&L==="'"||n===6&&L==='"')return o++,i="\\"+L,f[0](),!0}for(;n!==null;)if(o++,s=e[o],!(s==="\\"&&v())){if(l=Db(s),d=Do[n],c=d[l]||d.l||8,c===8||(n=c[0],c[1]!==void 0&&(u=f[c[1]],u&&(i=s,u()===!1))))return;if(n===7)return t}}const hc=new Map;function jb(e,t){return Ke(e)?e[t]:null}function zb(e,t){if(!Ke(e))return null;let o=hc.get(t);if(o||(o=Gb(t),o&&hc.set(t,o)),!o)return null;const n=o.length;let a=e,s=0;for(;se,Vb=e=>"",qb="text",Hb=e=>e.length===0?"":Z$(e),Wb=X$;function mc(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function Kb(e){const t=ct(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(ct(e.named.count)||ct(e.named.n))?ct(e.named.count)?e.named.count:ct(e.named.n)?e.named.n:t:t}function Yb(e,t){t.count||(t.count=e),t.n||(t.n=e)}function Xb(e={}){const t=e.locale,o=Kb(e),n=Ke(e.pluralRules)&&_e(t)&&ot(e.pluralRules[t])?e.pluralRules[t]:mc,a=Ke(e.pluralRules)&&_e(t)&&ot(e.pluralRules[t])?mc:void 0,s=C=>C[n(o,C.length,a)],r=e.list||[],i=C=>r[C],l=e.named||Je();ct(e.pluralIndex)&&Yb(o,l);const c=C=>l[C];function u(C){const h=ot(e.messages)?e.messages(C):Ke(e.messages)?e.messages[C]:!1;return h||(e.parent?e.parent.message(C):Vb)}const d=C=>e.modifiers?e.modifiers[C]:Bb,f=Oe(e.processor)&&ot(e.processor.normalize)?e.processor.normalize:Hb,v=Oe(e.processor)&&ot(e.processor.interpolate)?e.processor.interpolate:Wb,L=Oe(e.processor)&&_e(e.processor.type)?e.processor.type:qb,x={list:i,named:c,plural:s,linked:(C,...h)=>{const[m,p]=h;let b="text",A="";h.length===1?Ke(m)?(A=m.modifier||A,b=m.type||b):_e(m)&&(A=m||A):h.length===2&&(_e(m)&&(A=m||A),_e(p)&&(b=p||b));const w=u(C)(x),M=b==="vnode"&&at(w)&&A?w[0]:w;return A?d(A)(M,b):M},message:u,type:L,interpolate:v,normalize:f,values:bt(Je(),r,l)};return x}let ea=null;function Zb(e){ea=e}function Jb(e,t,o){ea&&ea.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:o})}const Qb=e_("function:translate");function e_(e){return t=>ea&&ea.emit(e,t)}const t_=tr.__EXTEND_POINT__,Xo=Ka(t_),o_={FALLBACK_TO_TRANSLATE:Xo(),CANNOT_FORMAT_NUMBER:Xo(),FALLBACK_TO_NUMBER_FORMAT:Xo(),CANNOT_FORMAT_DATE:Xo(),FALLBACK_TO_DATE_FORMAT:Xo(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Xo(),__EXTEND_POINT__:Xo()},$c=Ne.__EXTEND_POINT__,Zo=Ka($c),Kt={INVALID_ARGUMENT:$c,INVALID_DATE_ARGUMENT:Zo(),INVALID_ISO_DATE_ARGUMENT:Zo(),NOT_SUPPORT_NON_STRING_MESSAGE:Zo(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:Zo(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:Zo(),NOT_SUPPORT_LOCALE_TYPE:Zo(),__EXTEND_POINT__:Zo()};function lo(e){return fn(e,null,void 0)}function ar(e,t){return t.locale!=null?bc(t.locale):bc(e.locale)}let sr;function bc(e){if(_e(e))return e;if(ot(e)){if(e.resolvedOnce&&sr!=null)return sr;if(e.constructor.name==="Function"){const t=e();if(Y$(t))throw lo(Kt.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return sr=t}else throw lo(Kt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw lo(Kt.NOT_SUPPORT_LOCALE_TYPE)}function n_(e,t,o){return[...new Set([o,...at(t)?t:Ke(t)?Object.keys(t):_e(t)?[t]:[o]])]}function _c(e,t,o){const n=_e(o)?o:$n,a=e;a.__localeChainCache||(a.__localeChainCache=new Map);let s=a.__localeChainCache.get(n);if(!s){s=[];let r=[o];for(;at(r);)r=yc(s,r,t);const i=at(t)||!Oe(t)?t:t.default?t.default:null;r=_e(i)?[i]:i,at(r)&&yc(s,r,!1),a.__localeChainCache.set(n,s)}return s}function yc(e,t,o){let n=!0;for(let a=0;a`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function i_(){return{upper:(e,t)=>t==="text"&&_e(e)?e.toUpperCase():t==="vnode"&&Ke(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&_e(e)?e.toLowerCase():t==="vnode"&&Ke(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&_e(e)?kc(e):t==="vnode"&&Ke(e)&&"__v_isVNode"in e?kc(e.children):e}}let wc;function xc(e){wc=e}let Sc;function l_(e){Sc=e}let Lc;function c_(e){Lc=e}let Ac=null;const u_=e=>{Ac=e},p_=()=>Ac;let Pc=null;const Ec=e=>{Pc=e},d_=()=>Pc;let Cc=0;function g_(e={}){const t=ot(e.onWarn)?e.onWarn:z$,o=_e(e.version)?e.version:r_,n=_e(e.locale)||ot(e.locale)?e.locale:$n,a=ot(n)?$n:n,s=at(e.fallbackLocale)||Oe(e.fallbackLocale)||_e(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:a,r=Oe(e.messages)?e.messages:rr(a),i=Oe(e.datetimeFormats)?e.datetimeFormats:rr(a),l=Oe(e.numberFormats)?e.numberFormats:rr(a),c=bt(Je(),e.modifiers,i_()),u=e.pluralRules||Je(),d=ot(e.missing)?e.missing:null,f=ze(e.missingWarn)||Oo(e.missingWarn)?e.missingWarn:!0,v=ze(e.fallbackWarn)||Oo(e.fallbackWarn)?e.fallbackWarn:!0,L=!!e.fallbackFormat,k=!!e.unresolving,x=ot(e.postTranslation)?e.postTranslation:null,C=Oe(e.processor)?e.processor:null,h=ze(e.warnHtmlMessage)?e.warnHtmlMessage:!0,m=!!e.escapeParameter,p=ot(e.messageCompiler)?e.messageCompiler:wc,b=ot(e.messageResolver)?e.messageResolver:Sc||jb,A=ot(e.localeFallbacker)?e.localeFallbacker:Lc||n_,w=Ke(e.fallbackContext)?e.fallbackContext:void 0,M=e,U=Ke(M.__datetimeFormatters)?M.__datetimeFormatters:new Map,ne=Ke(M.__numberFormatters)?M.__numberFormatters:new Map,B=Ke(M.__meta)?M.__meta:{};Cc++;const Y={version:o,cid:Cc,locale:n,fallbackLocale:s,messages:r,modifiers:c,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:v,fallbackFormat:L,unresolving:k,postTranslation:x,processor:C,warnHtmlMessage:h,escapeParameter:m,messageCompiler:p,messageResolver:b,localeFallbacker:A,fallbackContext:w,onWarn:t,__meta:B};return Y.datetimeFormats=i,Y.numberFormats=l,Y.__datetimeFormatters=U,Y.__numberFormatters=ne,__INTLIFY_PROD_DEVTOOLS__&&Jb(Y,o,B),Y}const rr=e=>({[e]:Je()});function ir(e,t,o,n,a){const{missing:s,onWarn:r}=e;if(s!==null){const i=s(e,o,t,a);return _e(i)?i:t}else return t}function ta(e,t,o){const n=e;n.__localeChainCache=new Map,e.localeFallbacker(e,o,t)}function f_(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function h_(e,t){const o=t.indexOf(e);if(o===-1)return!1;for(let n=o+1;nm_(o,e)}function m_(e,t){const o=Eb(t);if(o==null)throw Qn(0);if(nr(o)===1){const s=Cb(o);return e.plural(s.reduce((r,i)=>[...r,Nc(e,i)],[]))}else return Nc(e,o)}function Nc(e,t){const o=Nb(t);if(o!=null)return e.type==="text"?o:e.normalize([o]);{const n=Tb(t).reduce((a,s)=>[...a,cr(e,s)],[]);return e.normalize(n)}}function cr(e,t){const o=nr(t);switch(o){case 3:return Ja(t,o);case 9:return Ja(t,o);case 4:{const n=t;if(Ht(n,"k")&&n.k)return e.interpolate(e.named(n.k));if(Ht(n,"key")&&n.key)return e.interpolate(e.named(n.key));throw Qn(o)}case 5:{const n=t;if(Ht(n,"i")&&ct(n.i))return e.interpolate(e.list(n.i));if(Ht(n,"index")&&ct(n.index))return e.interpolate(e.list(n.index));throw Qn(o)}case 6:{const n=t,a=Rb(n),s=Mb(n);return e.linked(cr(e,s),a?cr(e,a):void 0,e.type)}case 7:return Ja(t,o);case 8:return Ja(t,o);default:throw new Error(`unhandled node on format message part: ${o}`)}}const Tc=e=>e;let bn=Je();function Rc(e,t={}){let o=!1;const n=t.onError||ab;return t.onError=a=>{o=!0,n(a)},{...Ab(e,t),detectError:o}}const $_=(e,t)=>{if(!_e(e))throw lo(Kt.NOT_SUPPORT_NON_STRING_MESSAGE);{ze(t.warnHtmlMessage)&&t.warnHtmlMessage;const n=(t.onCacheKey||Tc)(e),a=bn[n];if(a)return a;const{code:s,detectError:r}=Rc(e,t),i=new Function(`return ${s}`)();return r?i:bn[n]=i}};function b_(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&_e(e)){ze(t.warnHtmlMessage)&&t.warnHtmlMessage;const n=(t.onCacheKey||Tc)(e),a=bn[n];if(a)return a;const{ast:s,detectError:r}=Rc(e,{...t,location:!1,jit:!0}),i=lr(s);return r?i:bn[n]=i}else{const o=e.cacheKey;if(o){const n=bn[o];return n||(bn[o]=lr(e))}else return lr(e)}}const Mc=()=>"",Ut=e=>ot(e);function Oc(e,...t){const{fallbackFormat:o,postTranslation:n,unresolving:a,messageCompiler:s,fallbackLocale:r,messages:i}=e,[l,c]=ur(...t),u=ze(c.missingWarn)?c.missingWarn:e.missingWarn,d=ze(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=ze(c.escapeParameter)?c.escapeParameter:e.escapeParameter,v=!!c.resolvedMessage,L=_e(c.default)||ze(c.default)?ze(c.default)?s?l:()=>l:c.default:o?s?l:()=>l:"",k=o||L!=="",x=ar(e,c);f&&__(c);let[C,h,m]=v?[l,x,i[x]||Je()]:Fc(e,l,x,r,d,u),p=C,b=l;if(!v&&!(_e(p)||io(p)||Ut(p))&&k&&(p=L,b=p),!v&&(!(_e(p)||io(p)||Ut(p))||!_e(h)))return a?Qa:l;let A=!1;const w=()=>{A=!0},M=Ut(p)?p:Ic(e,l,h,p,b,w);if(A)return p;const U=k_(e,h,m,c),ne=Xb(U),B=y_(e,M,ne);let Y=n?n(B,l):B;if(f&&_e(Y)&&(Y=W$(Y)),__INTLIFY_PROD_DEVTOOLS__){const ge={timestamp:Date.now(),key:_e(l)?l:Ut(p)?p.key:"",locale:h||(Ut(p)?p.locale:""),format:_e(p)?p:Ut(p)?p.source:"",message:Y};ge.meta=bt({},e.__meta,p_()||{}),Qb(ge)}return Y}function __(e){at(e.list)?e.list=e.list.map(t=>_e(t)?Yl(t):t):Ke(e.named)&&Object.keys(e.named).forEach(t=>{_e(e.named[t])&&(e.named[t]=Yl(e.named[t]))})}function Fc(e,t,o,n,a,s){const{messages:r,onWarn:i,messageResolver:l,localeFallbacker:c}=e,u=c(e,n,o);let d=Je(),f,v=null;const L="translate";for(let k=0;kn;return c.locale=o,c.key=t,c}const l=r(n,v_(e,o,a,n,i,s));return l.locale=o,l.key=t,l.source=n,l}function y_(e,t,o){return t(o)}function ur(...e){const[t,o,n]=e,a=Je();if(!_e(t)&&!ct(t)&&!Ut(t)&&!io(t))throw lo(Kt.INVALID_ARGUMENT);const s=ct(t)?String(t):(Ut(t),t);return ct(o)?a.plural=o:_e(o)?a.default=o:Oe(o)&&!Wa(o)?a.named=o:at(o)&&(a.list=o),ct(n)?a.plural=n:_e(n)?a.default=n:Oe(n)&&bt(a,n),[s,a]}function v_(e,t,o,n,a,s){return{locale:t,key:o,warnHtmlMessage:a,onError:r=>{throw s&&s(r),r},onCacheKey:r=>B$(t,o,r)}}function k_(e,t,o,n){const{modifiers:a,pluralRules:s,messageResolver:r,fallbackLocale:i,fallbackWarn:l,missingWarn:c,fallbackContext:u}=e,f={locale:t,modifiers:a,pluralRules:s,messages:v=>{let L=r(o,v);if(L==null&&u){const[,,k]=Fc(u,v,t,i,l,c);L=r(k,v)}if(_e(L)||io(L)){let k=!1;const C=Ic(e,v,t,L,v,()=>{k=!0});return k?Mc:C}else return Ut(L)?L:Mc}};return e.processor&&(f.processor=e.processor),n.list&&(f.list=n.list),n.named&&(f.named=n.named),ct(n.plural)&&(f.pluralIndex=n.plural),f}function Dc(e,...t){const{datetimeFormats:o,unresolving:n,fallbackLocale:a,onWarn:s,localeFallbacker:r}=e,{__datetimeFormatters:i}=e,[l,c,u,d]=pr(...t),f=ze(u.missingWarn)?u.missingWarn:e.missingWarn;ze(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const v=!!u.part,L=ar(e,u),k=r(e,a,L);if(!_e(l)||l==="")return new Intl.DateTimeFormat(L,d).format(c);let x={},C,h=null;const m="datetime format";for(let A=0;A{Uc.includes(l)?r[l]=o[l]:s[l]=o[l]}),_e(n)?s.locale=n:Oe(n)&&(r=n),Oe(a)&&(r=a),[s.key||"",i,s,r]}function Gc(e,t,o){const n=e;for(const a in o){const s=`${t}__${a}`;n.__datetimeFormatters.has(s)&&n.__datetimeFormatters.delete(s)}}function jc(e,...t){const{numberFormats:o,unresolving:n,fallbackLocale:a,onWarn:s,localeFallbacker:r}=e,{__numberFormatters:i}=e,[l,c,u,d]=dr(...t),f=ze(u.missingWarn)?u.missingWarn:e.missingWarn;ze(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const v=!!u.part,L=ar(e,u),k=r(e,a,L);if(!_e(l)||l==="")return new Intl.NumberFormat(L,d).format(c);let x={},C,h=null;const m="number format";for(let A=0;A{zc.includes(l)?r[l]=o[l]:s[l]=o[l]}),_e(n)?s.locale=n:Oe(n)&&(r=n),Oe(a)&&(r=a),[s.key||"",i,s,r]}function Bc(e,t,o){const n=e;for(const a in o){const s=`${t}__${a}`;n.__numberFormatters.has(s)&&n.__numberFormatters.delete(s)}}Pb();/*! - * vue-i18n v9.14.5 - * (c) 2025 kazuya kawaguchi - * Released under the MIT License. - */const w_="9.14.5";function x_(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(_o().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(_o().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(_o().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(_o().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(_o().__INTLIFY_PROD_DEVTOOLS__=!1)}const S_=o_.__EXTEND_POINT__,vo=Ka(S_);vo(),vo(),vo(),vo(),vo(),vo(),vo(),vo(),vo();const Vc=Kt.__EXTEND_POINT__,Ct=Ka(Vc),dt={UNEXPECTED_RETURN_TYPE:Vc,INVALID_ARGUMENT:Ct(),MUST_BE_CALL_SETUP_TOP:Ct(),NOT_INSTALLED:Ct(),NOT_AVAILABLE_IN_LEGACY_MODE:Ct(),REQUIRED_VALUE:Ct(),INVALID_VALUE:Ct(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Ct(),NOT_INSTALLED_WITH_PROVIDE:Ct(),UNEXPECTED_ERROR:Ct(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Ct(),BRIDGE_SUPPORT_VUE_2_ONLY:Ct(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Ct(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Ct(),__EXTEND_POINT__:Ct()};function ft(e,...t){return fn(e,null,void 0)}const gr=Mo("__translateVNode"),fr=Mo("__datetimeParts"),hr=Mo("__numberParts"),qc=Mo("__setPluralRules"),Hc=Mo("__injectWithOption"),mr=Mo("__dispose");function oa(e){if(!Ke(e)||io(e))return e;for(const t in e)if(Ht(e,t))if(!t.includes("."))Ke(e[t])&&oa(e[t]);else{const o=t.split("."),n=o.length-1;let a=e,s=!1;for(let r=0;r{if("locale"in i&&"resource"in i){const{locale:l,resource:c}=i;l?(r[l]=r[l]||Je(),Xa(c,r[l])):Xa(c,r)}else _e(i)&&Xa(JSON.parse(i),r)}),a==null&&s)for(const i in r)Ht(r,i)&&oa(r[i]);return r}function Wc(e){return e.type}function Kc(e,t,o){let n=Ke(t.messages)?t.messages:Je();"__i18nGlobal"in o&&(n=es(e.locale.value,{messages:n,__i18n:o.__i18nGlobal}));const a=Object.keys(n);a.length&&a.forEach(s=>{e.mergeLocaleMessage(s,n[s])});{if(Ke(t.datetimeFormats)){const s=Object.keys(t.datetimeFormats);s.length&&s.forEach(r=>{e.mergeDateTimeFormat(r,t.datetimeFormats[r])})}if(Ke(t.numberFormats)){const s=Object.keys(t.numberFormats);s.length&&s.forEach(r=>{e.mergeNumberFormat(r,t.numberFormats[r])})}}}function Yc(e){return je(Vn,null,e,0)}const Xc="__INTLIFY_META__",Zc=()=>[],L_=()=>!1;let Jc=0;function Qc(e){return(t,o,n,a)=>e(o,n,Ro()||void 0,a)}const A_=()=>{const e=Ro();let t=null;return e&&(t=Wc(e)[Xc])?{[Xc]:t}:null};function $r(e={},t){const{__root:o,__injectWithOption:n}=e,a=o===void 0,s=e.flatJson,r=Ha?pe:On,i=!!e.translateExistCompatible;let l=ze(e.inheritLocale)?e.inheritLocale:!0;const c=r(o&&l?o.locale.value:_e(e.locale)?e.locale:$n),u=r(o&&l?o.fallbackLocale.value:_e(e.fallbackLocale)||at(e.fallbackLocale)||Oe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),d=r(es(c.value,e)),f=r(Oe(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),v=r(Oe(e.numberFormats)?e.numberFormats:{[c.value]:{}});let L=o?o.missingWarn:ze(e.missingWarn)||Oo(e.missingWarn)?e.missingWarn:!0,k=o?o.fallbackWarn:ze(e.fallbackWarn)||Oo(e.fallbackWarn)?e.fallbackWarn:!0,x=o?o.fallbackRoot:ze(e.fallbackRoot)?e.fallbackRoot:!0,C=!!e.fallbackFormat,h=ot(e.missing)?e.missing:null,m=ot(e.missing)?Qc(e.missing):null,p=ot(e.postTranslation)?e.postTranslation:null,b=o?o.warnHtmlMessage:ze(e.warnHtmlMessage)?e.warnHtmlMessage:!0,A=!!e.escapeParameter;const w=o?o.modifiers:Oe(e.modifiers)?e.modifiers:{};let M=e.pluralRules||o&&o.pluralRules,U;U=(()=>{a&&Ec(null);const N={version:w_,locale:c.value,fallbackLocale:u.value,messages:d.value,modifiers:w,pluralRules:M,missing:m===null?void 0:m,missingWarn:L,fallbackWarn:k,fallbackFormat:C,unresolving:!0,postTranslation:p===null?void 0:p,warnHtmlMessage:b,escapeParameter:A,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};N.datetimeFormats=f.value,N.numberFormats=v.value,N.__datetimeFormatters=Oe(U)?U.__datetimeFormatters:void 0,N.__numberFormatters=Oe(U)?U.__numberFormatters:void 0;const z=g_(N);return a&&Ec(z),z})(),ta(U,c.value,u.value);function B(){return[c.value,u.value,d.value,f.value,v.value]}const Y=re({get:()=>c.value,set:N=>{c.value=N,U.locale=c.value}}),ge=re({get:()=>u.value,set:N=>{u.value=N,U.fallbackLocale=u.value,ta(U,c.value,N)}}),I=re(()=>d.value),Q=re(()=>f.value),H=re(()=>v.value);function G(){return ot(p)?p:null}function ie(N){p=N,U.postTranslation=N}function F(){return h}function O(N){N!==null&&(m=Qc(N)),h=N,U.missing=m}const V=(N,z,se,ke,Fe,Ve)=>{B();let He;try{__INTLIFY_PROD_DEVTOOLS__,a||(U.fallbackContext=o?d_():void 0),He=N(U)}finally{__INTLIFY_PROD_DEVTOOLS__,a||(U.fallbackContext=void 0)}if(se!=="translate exists"&&ct(He)&&He===Qa||se==="translate exists"&&!He){const[ht,mt]=z();return o&&x?ke(o):Fe(ht)}else{if(Ve(He))return He;throw ft(dt.UNEXPECTED_RETURN_TYPE)}};function D(...N){return V(z=>Reflect.apply(Oc,null,[z,...N]),()=>ur(...N),"translate",z=>Reflect.apply(z.t,z,[...N]),z=>z,z=>_e(z))}function ae(...N){const[z,se,ke]=N;if(ke&&!Ke(ke))throw ft(dt.INVALID_ARGUMENT);return D(z,se,bt({resolvedMessage:!0},ke||{}))}function me(...N){return V(z=>Reflect.apply(Dc,null,[z,...N]),()=>pr(...N),"datetime format",z=>Reflect.apply(z.d,z,[...N]),()=>vc,z=>_e(z))}function we(...N){return V(z=>Reflect.apply(jc,null,[z,...N]),()=>dr(...N),"number format",z=>Reflect.apply(z.n,z,[...N]),()=>vc,z=>_e(z))}function Le(N){return N.map(z=>_e(z)||ct(z)||ze(z)?Yc(String(z)):z)}const ve={normalize:Le,interpolate:N=>N,type:"vnode"};function oe(...N){return V(z=>{let se;const ke=z;try{ke.processor=ve,se=Reflect.apply(Oc,null,[ke,...N])}finally{ke.processor=null}return se},()=>ur(...N),"translate",z=>z[gr](...N),z=>[Yc(z)],z=>at(z))}function fe(...N){return V(z=>Reflect.apply(jc,null,[z,...N]),()=>dr(...N),"number format",z=>z[hr](...N),Zc,z=>_e(z)||at(z))}function ye(...N){return V(z=>Reflect.apply(Dc,null,[z,...N]),()=>pr(...N),"datetime format",z=>z[fr](...N),Zc,z=>_e(z)||at(z))}function _(N){M=N,U.pluralRules=M}function P(N,z){return V(()=>{if(!N)return!1;const se=_e(z)?z:c.value,ke=ee(se),Fe=U.messageResolver(ke,N);return i?Fe!=null:io(Fe)||Ut(Fe)||_e(Fe)},()=>[N],"translate exists",se=>Reflect.apply(se.te,se,[N,z]),L_,se=>ze(se))}function S(N){let z=null;const se=_c(U,u.value,c.value);for(let ke=0;ke{l&&(c.value=N,U.locale=N,ta(U,c.value,u.value))}),rt(o.fallbackLocale,N=>{l&&(u.value=N,U.fallbackLocale=N,ta(U,c.value,u.value))}));const K={id:Jc,locale:Y,fallbackLocale:ge,get inheritLocale(){return l},set inheritLocale(N){l=N,N&&o&&(c.value=o.locale.value,u.value=o.fallbackLocale.value,ta(U,c.value,u.value))},get availableLocales(){return Object.keys(d.value).sort()},messages:I,get modifiers(){return w},get pluralRules(){return M||{}},get isGlobal(){return a},get missingWarn(){return L},set missingWarn(N){L=N,U.missingWarn=L},get fallbackWarn(){return k},set fallbackWarn(N){k=N,U.fallbackWarn=k},get fallbackRoot(){return x},set fallbackRoot(N){x=N},get fallbackFormat(){return C},set fallbackFormat(N){C=N,U.fallbackFormat=C},get warnHtmlMessage(){return b},set warnHtmlMessage(N){b=N,U.warnHtmlMessage=N},get escapeParameter(){return A},set escapeParameter(N){A=N,U.escapeParameter=N},t:D,getLocaleMessage:ee,setLocaleMessage:te,mergeLocaleMessage:ce,getPostTranslationHandler:G,setPostTranslationHandler:ie,getMissingHandler:F,setMissingHandler:O,[qc]:_};return K.datetimeFormats=Q,K.numberFormats=H,K.rt=ae,K.te=P,K.tm=j,K.d=me,K.n=we,K.getDateTimeFormat=le,K.setDateTimeFormat=g,K.mergeDateTimeFormat=$,K.getNumberFormat=y,K.setNumberFormat=E,K.mergeNumberFormat=q,K[Hc]=n,K[gr]=oe,K[fr]=ye,K[hr]=fe,K}function P_(e){const t=_e(e.locale)?e.locale:$n,o=_e(e.fallbackLocale)||at(e.fallbackLocale)||Oe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,n=ot(e.missing)?e.missing:void 0,a=ze(e.silentTranslationWarn)||Oo(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,s=ze(e.silentFallbackWarn)||Oo(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,r=ze(e.fallbackRoot)?e.fallbackRoot:!0,i=!!e.formatFallbackMessages,l=Oe(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=ot(e.postTranslation)?e.postTranslation:void 0,d=_e(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,f=!!e.escapeParameterHtml,v=ze(e.sync)?e.sync:!0;let L=e.messages;if(Oe(e.sharedMessages)){const A=e.sharedMessages;L=Object.keys(A).reduce((M,U)=>{const ne=M[U]||(M[U]={});return bt(ne,A[U]),M},L||{})}const{__i18n:k,__root:x,__injectWithOption:C}=e,h=e.datetimeFormats,m=e.numberFormats,p=e.flatJson,b=e.translateExistCompatible;return{locale:t,fallbackLocale:o,messages:L,flatJson:p,datetimeFormats:h,numberFormats:m,missing:n,missingWarn:a,fallbackWarn:s,fallbackRoot:r,fallbackFormat:i,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:d,escapeParameter:f,messageResolver:e.messageResolver,inheritLocale:v,translateExistCompatible:b,__i18n:k,__root:x,__injectWithOption:C}}function br(e={},t){{const o=$r(P_(e)),{__extender:n}=e,a={id:o.id,get locale(){return o.locale.value},set locale(s){o.locale.value=s},get fallbackLocale(){return o.fallbackLocale.value},set fallbackLocale(s){o.fallbackLocale.value=s},get messages(){return o.messages.value},get datetimeFormats(){return o.datetimeFormats.value},get numberFormats(){return o.numberFormats.value},get availableLocales(){return o.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(s){},get missing(){return o.getMissingHandler()},set missing(s){o.setMissingHandler(s)},get silentTranslationWarn(){return ze(o.missingWarn)?!o.missingWarn:o.missingWarn},set silentTranslationWarn(s){o.missingWarn=ze(s)?!s:s},get silentFallbackWarn(){return ze(o.fallbackWarn)?!o.fallbackWarn:o.fallbackWarn},set silentFallbackWarn(s){o.fallbackWarn=ze(s)?!s:s},get modifiers(){return o.modifiers},get formatFallbackMessages(){return o.fallbackFormat},set formatFallbackMessages(s){o.fallbackFormat=s},get postTranslation(){return o.getPostTranslationHandler()},set postTranslation(s){o.setPostTranslationHandler(s)},get sync(){return o.inheritLocale},set sync(s){o.inheritLocale=s},get warnHtmlInMessage(){return o.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(s){o.warnHtmlMessage=s!=="off"},get escapeParameterHtml(){return o.escapeParameter},set escapeParameterHtml(s){o.escapeParameter=s},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(s){},get pluralizationRules(){return o.pluralRules||{}},__composer:o,t(...s){const[r,i,l]=s,c={};let u=null,d=null;if(!_e(r))throw ft(dt.INVALID_ARGUMENT);const f=r;return _e(i)?c.locale=i:at(i)?u=i:Oe(i)&&(d=i),at(l)?u=l:Oe(l)&&(d=l),Reflect.apply(o.t,o,[f,u||d||{},c])},rt(...s){return Reflect.apply(o.rt,o,[...s])},tc(...s){const[r,i,l]=s,c={plural:1};let u=null,d=null;if(!_e(r))throw ft(dt.INVALID_ARGUMENT);const f=r;return _e(i)?c.locale=i:ct(i)?c.plural=i:at(i)?u=i:Oe(i)&&(d=i),_e(l)?c.locale=l:at(l)?u=l:Oe(l)&&(d=l),Reflect.apply(o.t,o,[f,u||d||{},c])},te(s,r){return o.te(s,r)},tm(s){return o.tm(s)},getLocaleMessage(s){return o.getLocaleMessage(s)},setLocaleMessage(s,r){o.setLocaleMessage(s,r)},mergeLocaleMessage(s,r){o.mergeLocaleMessage(s,r)},d(...s){return Reflect.apply(o.d,o,[...s])},getDateTimeFormat(s){return o.getDateTimeFormat(s)},setDateTimeFormat(s,r){o.setDateTimeFormat(s,r)},mergeDateTimeFormat(s,r){o.mergeDateTimeFormat(s,r)},n(...s){return Reflect.apply(o.n,o,[...s])},getNumberFormat(s){return o.getNumberFormat(s)},setNumberFormat(s,r){o.setNumberFormat(s,r)},mergeNumberFormat(s,r){o.mergeNumberFormat(s,r)},getChoiceIndex(s,r){return-1}};return a.__extender=n,a}}const _r={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function E_({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((n,a)=>[...n,...a.type===Ce?a.children:[a]],[]):t.reduce((o,n)=>{const a=e[n];return a&&(o[n]=a()),o},Je())}function eu(e){return Ce}const tu=Gn({name:"i18n-t",props:bt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>ct(e)||!isNaN(e)}},_r),setup(e,t){const{slots:o,attrs:n}=t,a=e.i18n||Jo({useScope:e.scope,__useComponent:!0});return()=>{const s=Object.keys(o).filter(d=>d!=="_"),r=Je();e.locale&&(r.locale=e.locale),e.plural!==void 0&&(r.plural=_e(e.plural)?+e.plural:e.plural);const i=E_(t,s),l=a[gr](e.keypath,i,r),c=bt(Je(),n),u=_e(e.tag)||Ke(e.tag)?e.tag:eu();return Cl(u,c,l)}}});function C_(e){return at(e)&&!_e(e[0])}function ou(e,t,o,n){const{slots:a,attrs:s}=t;return()=>{const r={part:!0};let i=Je();e.locale&&(r.locale=e.locale),_e(e.format)?r.key=e.format:Ke(e.format)&&(_e(e.format.key)&&(r.key=e.format.key),i=Object.keys(e.format).reduce((f,v)=>o.includes(v)?bt(Je(),f,{[v]:e.format[v]}):f,Je()));const l=n(e.value,r,i);let c=[r.key];at(l)?c=l.map((f,v)=>{const L=a[f.type],k=L?L({[f.type]:f.value,index:v,parts:l}):[f.value];return C_(k)&&(k[0].key=`${f.type}-${v}`),k}):_e(l)&&(c=[l]);const u=bt(Je(),s),d=_e(e.tag)||Ke(e.tag)?e.tag:eu();return Cl(d,u,c)}}const nu=Gn({name:"i18n-n",props:bt({value:{type:Number,required:!0},format:{type:[String,Object]}},_r),setup(e,t){const o=e.i18n||Jo({useScope:e.scope,__useComponent:!0});return ou(e,t,zc,(...n)=>o[hr](...n))}}),au=Gn({name:"i18n-d",props:bt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},_r),setup(e,t){const o=e.i18n||Jo({useScope:e.scope,__useComponent:!0});return ou(e,t,Uc,(...n)=>o[fr](...n))}});function N_(e,t){const o=e;if(e.mode==="composition")return o.__getInstance(t)||e.global;{const n=o.__getInstance(t);return n!=null?n.__composer:e.global.__composer}}function T_(e){const t=r=>{const{instance:i,modifiers:l,value:c}=r;if(!i||!i.$)throw ft(dt.UNEXPECTED_ERROR);const u=N_(e,i.$),d=su(c);return[Reflect.apply(u.t,u,[...ru(d)]),u]};return{created:(r,i)=>{const[l,c]=t(i);Ha&&e.global===c&&(r.__i18nWatcher=rt(c.locale,()=>{i.instance&&i.instance.$forceUpdate()})),r.__composer=c,r.textContent=l},unmounted:r=>{Ha&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:i})=>{if(r.__composer){const l=r.__composer,c=su(i);r.textContent=Reflect.apply(l.t,l,[...ru(c)])}},getSSRProps:r=>{const[i]=t(r);return{textContent:i}}}}function su(e){if(_e(e))return{path:e};if(Oe(e)){if(!("path"in e))throw ft(dt.REQUIRED_VALUE,"path");return e}else throw ft(dt.INVALID_VALUE)}function ru(e){const{path:t,locale:o,args:n,choice:a,plural:s}=e,r={},i=n||{};return _e(o)&&(r.locale=o),ct(a)&&(r.plural=a),ct(s)&&(r.plural=s),[t,i,r]}function R_(e,t,...o){const n=Oe(o[0])?o[0]:{},a=!!n.useI18nComponentName;(ze(n.globalInstall)?n.globalInstall:!0)&&([a?"i18n":tu.name,"I18nT"].forEach(r=>e.component(r,tu)),[nu.name,"I18nN"].forEach(r=>e.component(r,nu)),[au.name,"I18nD"].forEach(r=>e.component(r,au))),e.directive("t",T_(t))}function M_(e,t,o){return{beforeCreate(){const n=Ro();if(!n)throw ft(dt.UNEXPECTED_ERROR);const a=this.$options;if(a.i18n){const s=a.i18n;if(a.__i18n&&(s.__i18n=a.__i18n),s.__root=t,this===this.$root)this.$i18n=iu(e,s);else{s.__injectWithOption=!0,s.__extender=o.__vueI18nExtend,this.$i18n=br(s);const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}}else if(a.__i18n)if(this===this.$root)this.$i18n=iu(e,a);else{this.$i18n=br({__i18n:a.__i18n,__injectWithOption:!0,__extender:o.__vueI18nExtend,__root:t});const s=this.$i18n;s.__extender&&(s.__disposer=s.__extender(this.$i18n))}else this.$i18n=e;a.__i18nGlobal&&Kc(t,a,a),this.$t=(...s)=>this.$i18n.t(...s),this.$rt=(...s)=>this.$i18n.rt(...s),this.$tc=(...s)=>this.$i18n.tc(...s),this.$te=(s,r)=>this.$i18n.te(s,r),this.$d=(...s)=>this.$i18n.d(...s),this.$n=(...s)=>this.$i18n.n(...s),this.$tm=s=>this.$i18n.tm(s),o.__setInstance(n,this.$i18n)},mounted(){},unmounted(){const n=Ro();if(!n)throw ft(dt.UNEXPECTED_ERROR);const a=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,a.__disposer&&(a.__disposer(),delete a.__disposer,delete a.__extender),o.__deleteInstance(n),delete this.$i18n}}}function iu(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[qc](t.pluralizationRules||e.pluralizationRules);const o=es(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(o).forEach(n=>e.mergeLocaleMessage(n,o[n])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const O_=Mo("global-vue-i18n");function F_(e={},t){const o=__VUE_I18N_LEGACY_API__&&ze(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=ze(e.globalInjection)?e.globalInjection:!0,a=__VUE_I18N_LEGACY_API__&&o?!!e.allowComposition:!0,s=new Map,[r,i]=I_(e,o),l=Mo("");function c(f){return s.get(f)||null}function u(f,v){s.set(f,v)}function d(f){s.delete(f)}{const f={get mode(){return __VUE_I18N_LEGACY_API__&&o?"legacy":"composition"},get allowComposition(){return a},async install(v,...L){if(v.__VUE_I18N_SYMBOL__=l,v.provide(v.__VUE_I18N_SYMBOL__,f),Oe(L[0])){const C=L[0];f.__composerExtend=C.__composerExtend,f.__vueI18nExtend=C.__vueI18nExtend}let k=null;!o&&n&&(k=H_(v,f.global)),__VUE_I18N_FULL_INSTALL__&&R_(v,f,...L),__VUE_I18N_LEGACY_API__&&o&&v.mixin(M_(i,i.__composer,f));const x=v.unmount;v.unmount=()=>{k&&k(),f.dispose(),x()}},get global(){return i},dispose(){r.stop()},__instances:s,__getInstance:c,__setInstance:u,__deleteInstance:d};return f}}function Jo(e={}){const t=Ro();if(t==null)throw ft(dt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw ft(dt.NOT_INSTALLED);const o=D_(t),n=G_(o),a=Wc(t),s=U_(e,a);if(__VUE_I18N_LEGACY_API__&&o.mode==="legacy"&&!e.__useComponent){if(!o.allowComposition)throw ft(dt.NOT_AVAILABLE_IN_LEGACY_MODE);return V_(t,s,n,e)}if(s==="global")return Kc(n,e,a),n;if(s==="parent"){let l=j_(o,t,e.__useComponent);return l==null&&(l=n),l}const r=o;let i=r.__getInstance(t);if(i==null){const l=bt({},e);"__i18n"in a&&(l.__i18n=a.__i18n),n&&(l.__root=n),i=$r(l),r.__composerExtend&&(i[mr]=r.__composerExtend(i)),B_(r,t,i),r.__setInstance(t,i)}return i}function I_(e,t,o){const n=di();{const a=__VUE_I18N_LEGACY_API__&&t?n.run(()=>br(e)):n.run(()=>$r(e));if(a==null)throw ft(dt.UNEXPECTED_ERROR);return[n,a]}}function D_(e){{const t=Ie(e.isCE?O_:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw ft(e.isCE?dt.NOT_INSTALLED_WITH_PROVIDE:dt.UNEXPECTED_ERROR);return t}}function U_(e,t){return Wa(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function G_(e){return e.mode==="composition"?e.global:e.global.__composer}function j_(e,t,o=!1){let n=null;const a=t.root;let s=z_(t,o);for(;s!=null;){const r=e;if(e.mode==="composition")n=r.__getInstance(s);else if(__VUE_I18N_LEGACY_API__){const i=r.__getInstance(s);i!=null&&(n=i.__composer,o&&n&&!n[Hc]&&(n=null))}if(n!=null||a===s)break;s=s.parent}return n}function z_(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function B_(e,t,o){vt(()=>{},t),Ds(()=>{const n=o;e.__deleteInstance(t);const a=n[mr];a&&(a(),delete n[mr])},t)}function V_(e,t,o,n={}){const a=t==="local",s=On(null);if(a&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw ft(dt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const r=ze(n.inheritLocale)?n.inheritLocale:!_e(n.locale),i=pe(!a||r?o.locale.value:_e(n.locale)?n.locale:$n),l=pe(!a||r?o.fallbackLocale.value:_e(n.fallbackLocale)||at(n.fallbackLocale)||Oe(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:i.value),c=pe(es(i.value,n)),u=pe(Oe(n.datetimeFormats)?n.datetimeFormats:{[i.value]:{}}),d=pe(Oe(n.numberFormats)?n.numberFormats:{[i.value]:{}}),f=a?o.missingWarn:ze(n.missingWarn)||Oo(n.missingWarn)?n.missingWarn:!0,v=a?o.fallbackWarn:ze(n.fallbackWarn)||Oo(n.fallbackWarn)?n.fallbackWarn:!0,L=a?o.fallbackRoot:ze(n.fallbackRoot)?n.fallbackRoot:!0,k=!!n.fallbackFormat,x=ot(n.missing)?n.missing:null,C=ot(n.postTranslation)?n.postTranslation:null,h=a?o.warnHtmlMessage:ze(n.warnHtmlMessage)?n.warnHtmlMessage:!0,m=!!n.escapeParameter,p=a?o.modifiers:Oe(n.modifiers)?n.modifiers:{},b=n.pluralRules||a&&o.pluralRules;function A(){return[i.value,l.value,c.value,u.value,d.value]}const w=re({get:()=>s.value?s.value.locale.value:i.value,set:S=>{s.value&&(s.value.locale.value=S),i.value=S}}),M=re({get:()=>s.value?s.value.fallbackLocale.value:l.value,set:S=>{s.value&&(s.value.fallbackLocale.value=S),l.value=S}}),U=re(()=>s.value?s.value.messages.value:c.value),ne=re(()=>u.value),B=re(()=>d.value);function Y(){return s.value?s.value.getPostTranslationHandler():C}function ge(S){s.value&&s.value.setPostTranslationHandler(S)}function I(){return s.value?s.value.getMissingHandler():x}function Q(S){s.value&&s.value.setMissingHandler(S)}function H(S){return A(),S()}function G(...S){return s.value?H(()=>Reflect.apply(s.value.t,null,[...S])):H(()=>"")}function ie(...S){return s.value?Reflect.apply(s.value.rt,null,[...S]):""}function F(...S){return s.value?H(()=>Reflect.apply(s.value.d,null,[...S])):H(()=>"")}function O(...S){return s.value?H(()=>Reflect.apply(s.value.n,null,[...S])):H(()=>"")}function V(S){return s.value?s.value.tm(S):{}}function D(S,j){return s.value?s.value.te(S,j):!1}function ae(S){return s.value?s.value.getLocaleMessage(S):{}}function me(S,j){s.value&&(s.value.setLocaleMessage(S,j),c.value[S]=j)}function we(S,j){s.value&&s.value.mergeLocaleMessage(S,j)}function Le(S){return s.value?s.value.getDateTimeFormat(S):{}}function Ae(S,j){s.value&&(s.value.setDateTimeFormat(S,j),u.value[S]=j)}function ve(S,j){s.value&&s.value.mergeDateTimeFormat(S,j)}function oe(S){return s.value?s.value.getNumberFormat(S):{}}function fe(S,j){s.value&&(s.value.setNumberFormat(S,j),d.value[S]=j)}function ye(S,j){s.value&&s.value.mergeNumberFormat(S,j)}const _={get id(){return s.value?s.value.id:-1},locale:w,fallbackLocale:M,messages:U,datetimeFormats:ne,numberFormats:B,get inheritLocale(){return s.value?s.value.inheritLocale:r},set inheritLocale(S){s.value&&(s.value.inheritLocale=S)},get availableLocales(){return s.value?s.value.availableLocales:Object.keys(c.value)},get modifiers(){return s.value?s.value.modifiers:p},get pluralRules(){return s.value?s.value.pluralRules:b},get isGlobal(){return s.value?s.value.isGlobal:!1},get missingWarn(){return s.value?s.value.missingWarn:f},set missingWarn(S){s.value&&(s.value.missingWarn=S)},get fallbackWarn(){return s.value?s.value.fallbackWarn:v},set fallbackWarn(S){s.value&&(s.value.missingWarn=S)},get fallbackRoot(){return s.value?s.value.fallbackRoot:L},set fallbackRoot(S){s.value&&(s.value.fallbackRoot=S)},get fallbackFormat(){return s.value?s.value.fallbackFormat:k},set fallbackFormat(S){s.value&&(s.value.fallbackFormat=S)},get warnHtmlMessage(){return s.value?s.value.warnHtmlMessage:h},set warnHtmlMessage(S){s.value&&(s.value.warnHtmlMessage=S)},get escapeParameter(){return s.value?s.value.escapeParameter:m},set escapeParameter(S){s.value&&(s.value.escapeParameter=S)},t:G,getPostTranslationHandler:Y,setPostTranslationHandler:ge,getMissingHandler:I,setMissingHandler:Q,rt:ie,d:F,n:O,tm:V,te:D,getLocaleMessage:ae,setLocaleMessage:me,mergeLocaleMessage:we,getDateTimeFormat:Le,setDateTimeFormat:Ae,mergeDateTimeFormat:ve,getNumberFormat:oe,setNumberFormat:fe,mergeNumberFormat:ye};function P(S){S.locale.value=i.value,S.fallbackLocale.value=l.value,Object.keys(c.value).forEach(j=>{S.mergeLocaleMessage(j,c.value[j])}),Object.keys(u.value).forEach(j=>{S.mergeDateTimeFormat(j,u.value[j])}),Object.keys(d.value).forEach(j=>{S.mergeNumberFormat(j,d.value[j])}),S.escapeParameter=m,S.fallbackFormat=k,S.fallbackRoot=L,S.fallbackWarn=v,S.missingWarn=f,S.warnHtmlMessage=h}return Zi(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw ft(dt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const S=s.value=e.proxy.$i18n.__composer;t==="global"?(i.value=S.locale.value,l.value=S.fallbackLocale.value,c.value=S.messages.value,u.value=S.datetimeFormats.value,d.value=S.numberFormats.value):a&&P(S)}),_}const q_=["locale","fallbackLocale","availableLocales"],lu=["t","rt","d","n","tm","te"];function H_(e,t){const o=Object.create(null);return q_.forEach(a=>{const s=Object.getOwnPropertyDescriptor(t,a);if(!s)throw ft(dt.UNEXPECTED_ERROR);const r=gt(s.value)?{get(){return s.value.value},set(i){s.value.value=i}}:{get(){return s.get&&s.get()}};Object.defineProperty(o,a,r)}),e.config.globalProperties.$i18n=o,lu.forEach(a=>{const s=Object.getOwnPropertyDescriptor(t,a);if(!s||!s.value)throw ft(dt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${a}`,s)}),()=>{delete e.config.globalProperties.$i18n,lu.forEach(a=>{delete e.config.globalProperties[`$${a}`]})}}if(x_(),__INTLIFY_JIT_COMPILATION__?xc(b_):xc($_),l_(zb),c_(_c),__INTLIFY_PROD_DEVTOOLS__){const e=_o();e.__INTLIFY__=!0,Zb(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const W_=Object.assign({"./locales/ar/allPeopleGroups.json":Kg,"./locales/ar/aria.json":Yg,"./locales/ar/buttons.json":Xg,"./locales/ar/connectivity.json":Zg,"./locales/ar/controls.json":Jg,"./locales/ar/dashboard.json":Qg,"./locales/ar/detail.json":ef,"./locales/ar/gospel.json":tf,"./locales/ar/grid.json":of,"./locales/ar/legend.json":nf,"./locales/ar/messages.json":af,"./locales/ar/options.json":sf,"./locales/ar/popup.json":rf,"./locales/ar/prayerLaps.json":lf,"./locales/ar/regions.json":cf,"./locales/ar/search.json":uf,"./locales/ar/studio.json":pf,"./locales/ar/tabs.json":df,"./locales/ar/vision.json":gf,"./locales/de/allPeopleGroups.json":ff,"./locales/de/aria.json":hf,"./locales/de/buttons.json":mf,"./locales/de/connectivity.json":$f,"./locales/de/controls.json":bf,"./locales/de/dashboard.json":_f,"./locales/de/detail.json":yf,"./locales/de/gospel.json":vf,"./locales/de/grid.json":kf,"./locales/de/legend.json":wf,"./locales/de/messages.json":xf,"./locales/de/options.json":Sf,"./locales/de/popup.json":Lf,"./locales/de/prayerLaps.json":Af,"./locales/de/regions.json":Pf,"./locales/de/search.json":Ef,"./locales/de/studio.json":Cf,"./locales/de/tabs.json":Nf,"./locales/de/vision.json":Tf,"./locales/en/allPeopleGroups.json":Rf,"./locales/en/aria.json":Mf,"./locales/en/buttons.json":Of,"./locales/en/connectivity.json":Ff,"./locales/en/controls.json":If,"./locales/en/dashboard.json":Df,"./locales/en/detail.json":Uf,"./locales/en/gospel.json":Gf,"./locales/en/grid.json":jf,"./locales/en/legend.json":zf,"./locales/en/messages.json":Bf,"./locales/en/options.json":Vf,"./locales/en/popup.json":qf,"./locales/en/prayerLaps.json":Hf,"./locales/en/regions.json":Wf,"./locales/en/search.json":Kf,"./locales/en/studio.json":Yf,"./locales/en/tabs.json":Xf,"./locales/en/vision.json":Zf,"./locales/es/allPeopleGroups.json":Jf,"./locales/es/aria.json":Qf,"./locales/es/buttons.json":eh,"./locales/es/connectivity.json":th,"./locales/es/controls.json":oh,"./locales/es/dashboard.json":nh,"./locales/es/detail.json":ah,"./locales/es/gospel.json":sh,"./locales/es/grid.json":rh,"./locales/es/legend.json":ih,"./locales/es/messages.json":lh,"./locales/es/options.json":ch,"./locales/es/popup.json":uh,"./locales/es/prayerLaps.json":ph,"./locales/es/regions.json":dh,"./locales/es/search.json":gh,"./locales/es/studio.json":fh,"./locales/es/tabs.json":hh,"./locales/es/vision.json":mh,"./locales/fr/allPeopleGroups.json":$h,"./locales/fr/aria.json":bh,"./locales/fr/buttons.json":_h,"./locales/fr/connectivity.json":yh,"./locales/fr/controls.json":vh,"./locales/fr/dashboard.json":kh,"./locales/fr/detail.json":wh,"./locales/fr/gospel.json":xh,"./locales/fr/grid.json":Sh,"./locales/fr/legend.json":Lh,"./locales/fr/messages.json":Ah,"./locales/fr/options.json":Ph,"./locales/fr/popup.json":Eh,"./locales/fr/prayerLaps.json":Ch,"./locales/fr/regions.json":Nh,"./locales/fr/search.json":Th,"./locales/fr/studio.json":Rh,"./locales/fr/tabs.json":Mh,"./locales/fr/vision.json":Oh,"./locales/hi/allPeopleGroups.json":Fh,"./locales/hi/aria.json":Ih,"./locales/hi/buttons.json":Dh,"./locales/hi/connectivity.json":Uh,"./locales/hi/controls.json":Gh,"./locales/hi/dashboard.json":jh,"./locales/hi/detail.json":zh,"./locales/hi/gospel.json":Bh,"./locales/hi/grid.json":Vh,"./locales/hi/legend.json":qh,"./locales/hi/messages.json":Hh,"./locales/hi/options.json":Wh,"./locales/hi/popup.json":Kh,"./locales/hi/prayerLaps.json":Yh,"./locales/hi/regions.json":Xh,"./locales/hi/search.json":Zh,"./locales/hi/studio.json":Jh,"./locales/hi/tabs.json":Qh,"./locales/hi/vision.json":em,"./locales/it/allPeopleGroups.json":tm,"./locales/it/aria.json":om,"./locales/it/buttons.json":nm,"./locales/it/connectivity.json":am,"./locales/it/controls.json":sm,"./locales/it/dashboard.json":rm,"./locales/it/detail.json":im,"./locales/it/gospel.json":lm,"./locales/it/grid.json":cm,"./locales/it/legend.json":um,"./locales/it/messages.json":pm,"./locales/it/options.json":dm,"./locales/it/popup.json":gm,"./locales/it/prayerLaps.json":fm,"./locales/it/regions.json":hm,"./locales/it/search.json":mm,"./locales/it/studio.json":$m,"./locales/it/tabs.json":bm,"./locales/it/vision.json":_m,"./locales/pt/allPeopleGroups.json":ym,"./locales/pt/aria.json":vm,"./locales/pt/buttons.json":km,"./locales/pt/connectivity.json":wm,"./locales/pt/controls.json":xm,"./locales/pt/dashboard.json":Sm,"./locales/pt/detail.json":Lm,"./locales/pt/gospel.json":Am,"./locales/pt/grid.json":Pm,"./locales/pt/legend.json":Em,"./locales/pt/messages.json":Cm,"./locales/pt/options.json":Nm,"./locales/pt/popup.json":Tm,"./locales/pt/prayerLaps.json":Rm,"./locales/pt/regions.json":Mm,"./locales/pt/search.json":Om,"./locales/pt/studio.json":Fm,"./locales/pt/tabs.json":Im,"./locales/pt/vision.json":Dm,"./locales/ro/allPeopleGroups.json":Um,"./locales/ro/aria.json":Gm,"./locales/ro/buttons.json":jm,"./locales/ro/connectivity.json":zm,"./locales/ro/controls.json":Bm,"./locales/ro/dashboard.json":Vm,"./locales/ro/detail.json":qm,"./locales/ro/gospel.json":Hm,"./locales/ro/grid.json":Wm,"./locales/ro/legend.json":Km,"./locales/ro/messages.json":Ym,"./locales/ro/options.json":Xm,"./locales/ro/popup.json":Zm,"./locales/ro/prayerLaps.json":Jm,"./locales/ro/regions.json":Qm,"./locales/ro/search.json":e$,"./locales/ro/studio.json":t$,"./locales/ro/tabs.json":o$,"./locales/ro/vision.json":n$,"./locales/ru/allPeopleGroups.json":a$,"./locales/ru/aria.json":s$,"./locales/ru/buttons.json":r$,"./locales/ru/connectivity.json":i$,"./locales/ru/controls.json":l$,"./locales/ru/dashboard.json":c$,"./locales/ru/detail.json":u$,"./locales/ru/gospel.json":p$,"./locales/ru/grid.json":d$,"./locales/ru/legend.json":g$,"./locales/ru/messages.json":f$,"./locales/ru/options.json":h$,"./locales/ru/popup.json":m$,"./locales/ru/prayerLaps.json":$$,"./locales/ru/regions.json":b$,"./locales/ru/search.json":_$,"./locales/ru/studio.json":y$,"./locales/ru/tabs.json":v$,"./locales/ru/vision.json":k$,"./locales/zh/allPeopleGroups.json":w$,"./locales/zh/aria.json":x$,"./locales/zh/buttons.json":S$,"./locales/zh/connectivity.json":L$,"./locales/zh/controls.json":A$,"./locales/zh/dashboard.json":P$,"./locales/zh/detail.json":E$,"./locales/zh/gospel.json":C$,"./locales/zh/grid.json":N$,"./locales/zh/legend.json":T$,"./locales/zh/messages.json":R$,"./locales/zh/options.json":M$,"./locales/zh/popup.json":O$,"./locales/zh/prayerLaps.json":F$,"./locales/zh/regions.json":I$,"./locales/zh/search.json":D$,"./locales/zh/studio.json":U$,"./locales/zh/tabs.json":G$,"./locales/zh/vision.json":j$}),Qo={};for(const[e,t]of Object.entries(W_)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,n,a]=o;Qo[n]??(Qo[n]={}),Qo[n][a]=t}Qo.en;const ts=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"],K_=new Set(["ar"]);function Y_(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function cu(){var n;const e=Y_();if(ts.includes(e))return e;const o=(((n=document==null?void 0:document.documentElement)==null?void 0:n.lang)||"").split("-")[0].toLowerCase();return ts.includes(o)?o:"en"}function X_(){const e=cu();try{K_.has(e)&&(document!=null&&document.documentElement)&&(document.documentElement.dir="rtl")}catch{}const t=F_({legacy:!1,globalInjection:!0,locale:e,fallbackLocale:"en",messages:Qo,missingWarn:!1,fallbackWarn:!1});rt(t.global.locale,n=>pu(n),{immediate:!0});const o=t.install.bind(t);return t.install=(n,...a)=>{const s=o(n,...a);return n.provide("appI18n",t),s},t}const uu="__DOXA_PAGE_LOCALE";function pu(e){const t=String(e||"").split("-")[0].toLowerCase();if(ts.includes(t))try{typeof window<"u"&&(window[uu]=t)}catch{}}function Z_(){try{return typeof window<"u"&&window[uu]||""}catch{return""}}function Se(e,t){const o=a=>{let s=Qo[a];for(const r of String(e).split(".")){if(!s||typeof s!="object")return;s=s[r]}return typeof s=="string"?s:void 0},n=t||Z_()||cu();return o(n)??o("en")}const du="adoptionStatus",ko={notAdopted:"#f03b2d",hasAdoption:"#22c55e"},J_=ko,yr={notAdopted:"Needs Adoption",hasAdopted:"Has Adoption"},Q_=yr;function gu(e){var n;const t=e.adoptionStatus??((n=e._raw)==null?void 0:n.adopted_by_churches);return t===!0||t===1||typeof t=="number"&&t>0||typeof t=="object"&&(t==null?void 0:t.value)?ko.hasAdoption:ko.notAdopted}function vr({colorSource:e="properties"}={}){const t=e==="feature-state"?["feature-state","adoptionStatus"]:["get","adoptionStatus"];return["case",["==",t,!0],ko.hasAdoption,["==",t,1],ko.hasAdoption,ko.notAdopted]}const fu=vr,ey=Object.freeze(Object.defineProperty({__proto__:null,ADOPTION_COLORS:J_,ADOPTION_LABELS:Q_,LABELS:yr,PALETTE:ko,PROPERTY_KEY:du,applyColor:vr,buildColorExpression:fu,default:{name:"Adoption Progress",propertyKey:du,palette:ko,colors:ko,labels:yr,getColor:gu,applyColor:vr,buildColorExpression:fu},getColor:gu},Symbol.toStringTag,{value:"Module"})),hu="engagementStatus",wo={notEngaged:"#f03b2d",hasEngagement:"#22c55e"},ty=wo,kr={notEngaged:"Unengaged",hasEngagement:"Engaged"},oy=kr;function mu(e){var n;const t=e.engagementStatus??((n=e._raw)==null?void 0:n.people_committed);return t===!0||t===1||typeof t=="number"&&t>0||typeof t=="object"&&(t==null?void 0:t.value)?wo.hasEngagement:wo.notEngaged}function wr({colorSource:e="properties"}={}){const t=e==="feature-state"?["feature-state","engagementStatus"]:["get","engagementStatus"];return["case",["==",t,!0],wo.hasEngagement,["==",t,1],wo.hasEngagement,wo.notEngaged]}const $u=wr,ny=Object.freeze(Object.defineProperty({__proto__:null,ENGAGEMENT_COLORS:ty,ENGAGEMENT_LABELS:oy,LABELS:kr,PALETTE:wo,PROPERTY_KEY:hu,applyColor:wr,buildColorExpression:$u,default:{name:"Engagement Progress",propertyKey:hu,palette:wo,colors:wo,labels:kr,getColor:mu,applyColor:wr,buildColorExpression:$u},getColor:mu},Symbol.toStringTag,{value:"Module"})),xr="languageFamily",ay="#000000",xo={"Indo-European":"#e74c3c",Dravidian:"#ff9800","Afro-Asiatic":"#27ae60","Sino-Tibetan":"#3498db","Niger-Congo":"#9b59b6",Unclassified:"#95a5a6","Nilo-Saharan":"#e91e63","Khoe-Kwadi":"#00bcd4","Austro-Asiatic":"#00bcd4","Kra-Dai":"#8e44ad",Austronesian:"#ff69b4","Hmong-Mien":"#f44336",Turkic:"#ffc107","Nakh-Daghestanian":"#009688",Mongolic:"#795548",Uralic:"#607d8b",Tungusic:"#4caf50",Japonic:"#ff5722",Cariban:"#673ab7",Tupian:"#03a9f4",Tucanoan:"#8bc34a",Maipurean:"#ffc107",Panoan:"#cddc39",Guajiboan:"#9e9e9e",Chibchan:"#ff7043",Quechuan:"#ab47bc",Jean:"#26a69a",Harákmbut:"#7e57c2",Nambikwara:"#42a5f5",Muran:"#66bb6a",Karajá:"#ffa726",Bororoan:"#ef5350",Arauan:"#5c6bc0",Yanomaman:"#26c6da",Yaguan:"#d4e157",Witotoan:"#78909c",Zamucoan:"#8d6e63",Puinavean:"#aed581",Barbacoan:"#4db6ac","Eyak-Athabaskan":"#7986cb","Trans-New Guinea":"#ba68c8",Andamanese:"#4dd0e1","Atlantic-Congo":"#7D3C98",Mande:"#B9770E","Sign Language":"#212121",Creole:"#9575cd","Mixed language":"#a1887f","Language isolate":"#90a4ae",Unknown:"#000000"},sy=xo;function Sr(e){return xo[e]||ay}const ry=(()=>{const e=o=>String(o||"").toLowerCase().trim(),t={};for(const o of Object.keys(xo))t[e(o)]=o;return t})(),iy={"tai-kadai":"Kra-Dai",none:"Unknown"};function _n(e){if(!e)return"Unknown";const t=String(e).trim(),o=t.toLowerCase();return iy[o]||ry[o]||t}function bu(e){var t;return Sr(e.languageFamily||((t=e._normalized)==null?void 0:t.languageFamily))}function Lr(){const e=["match",["get",xr]];return Object.entries(xo).forEach(([t,o])=>{e.push(t,o)}),e.push("#95a5a6"),e}const _u=Lr,ly=Object.freeze(Object.defineProperty({__proto__:null,LANGUAGE_FAMILY_COLORS:sy,PALETTE:xo,PROPERTY_KEY:xr,applyColor:Lr,buildColorExpression:_u,canonicalFamilyName:_n,default:{name:"Language Family",propertyKey:xr,palette:xo,colors:xo,getColor:bu,applyColor:Lr,buildColorExpression:_u,getLanguageFamilyColor:Sr,canonicalFamilyName:_n},defaultFamilyColor:"#95a5a6",getColor:bu,getLanguageFamilyColor:Sr,languageFamilyColors:xo},Symbol.toStringTag,{value:"Module"})),yu="peoplePraying",os=144,Uo={noPrayer:"#f03b2d",hasPrayer:"#f0c64a",fullPrayer:"#22c55e"},cy=Uo,na={noPrayer:"Needs Prayer",hasPrayer:"Has Prayer",fullPrayer:"Has Full Prayer Coverage"},uy=na;function yn(e){var n;const t=(e==null?void 0:e.peoplePraying)??((n=e==null?void 0:e._raw)==null?void 0:n.people_praying)??null,o=Number(t)||0;return o>=os?"fullPrayer":o>0?"hasPrayer":"noPrayer"}function Ar(e){return Uo[yn(e)]}function vu(e){var o;const t=(e==null?void 0:e.peoplePraying)??((o=e==null?void 0:e._raw)==null?void 0:o.people_praying)??null;return t!==null&&t>0}function ku(e){return yn(e)==="fullPrayer"}function wu(e){return Ar(e)}function ns({colorSource:e="properties"}={}){const t=e==="feature-state"?["feature-state","peoplePraying"]:["get","peoplePraying"];return["case",[">=",t,os],Uo.fullPrayer,[">",t,0],Uo.hasPrayer,Uo.noPrayer]}const xu=ns,py=Object.freeze(Object.defineProperty({__proto__:null,FULL_PRAYER_THRESHOLD:os,LABELS:na,PALETTE:Uo,PRAYER_COLORS:cy,PRAYER_LABELS:uy,PROPERTY_KEY:yu,applyColor:ns,buildColorExpression:xu,checkHasFullPrayer:ku,checkHasPrayer:vu,default:{name:"Prayer Progress",propertyKey:yu,palette:Uo,colors:Uo,labels:na,threshold:os,getColor:wu,applyColor:ns,buildColorExpression:xu,getPrayerLevel:yn,getPrayerColor:Ar,checkHasPrayer:vu,checkHasFullPrayer:ku},getColor:wu,getPrayerColor:Ar,getPrayerLevel:yn},Symbol.toStringTag,{value:"Module"})),Su="religion",Pr="#94a3b8",So={C:"Christianity",M:"Islam",H:"Hinduism",B:"Buddhism",E:"Ethnoreligion",J:"Judaism",S:"Sikhism",N:"Unaffiliated",O:"Other",U:"Unknown"},Nt={C:"#3b82f6",M:"#ef4444",H:"#f59e0b",B:"#facc15",E:"#84cc16",J:"#a855f7",S:"#ec4899",N:"#71717a",O:"#ff6b2b",U:"#94a3b8"};function Er(e){if(!e||typeof e!="string")return"U";const t=e.charAt(0).toUpperCase();return So[t]?t:"U"}function Lu(e){var o,n,a;const t=(e==null?void 0:e.religion)||((n=(o=e==null?void 0:e._raw)==null?void 0:o.religion)==null?void 0:n.value)||((a=e==null?void 0:e._raw)==null?void 0:a.religion);return Nt[Er(t)]||Pr}function Cr(){return["match",["slice",["coalesce",["get","religion"],""],0,1],"C",Nt.C,"M",Nt.M,"H",Nt.H,"B",Nt.B,"E",Nt.E,"J",Nt.J,"S",Nt.S,"N",Nt.N,"O",Nt.O,Pr]}const Au=Cr,dy=Object.freeze(Object.defineProperty({__proto__:null,PALETTE:Nt,PROPERTY_KEY:Su,RELIGION_FAMILIES:So,applyColor:Cr,buildColorExpression:Au,default:{name:"Religion",propertyKey:Su,palette:Nt,families:So,getColor:Lu,applyColor:Cr,buildColorExpression:Au,fallback:Pr},getColor:Lu,getReligionFamily:Er},Symbol.toStringTag,{value:"Module"})),Pu="region",Nr="#6d766e",Eu={africa:"Africa",asia:"Asia",europe:"Europe","latin_america_&_caribbean":"Latin America & Caribbean",middle_east:"Middle East","north_america_&_non-spanish_caribbean":"North America & Non-Spanish Caribbean",oceania:"Oceania"},aa={africa:"#ff2e2e",asia:"#1a8cff",europe:"#1ee05f","latin_america_&_caribbean":"#FFEB3B",middle_east:"#a83dff","north_america_&_non-spanish_caribbean":"#00e0bd",oceania:"#ff7f11"},Tr=Object.keys(aa);function Cu(e){var o,n,a;const t=(e==null?void 0:e.region)||((n=(o=e==null?void 0:e._raw)==null?void 0:o.wagf_region)==null?void 0:n.value)||((a=e==null?void 0:e._raw)==null?void 0:a.wagf_region);return aa[t]||Nr}function Rr(){const e=["match",["coalesce",["get","region"],""]];for(const t of Tr)e.push(t,aa[t]);return e.push(Nr),e}const Nu=Rr,gy=Object.assign({"./adoption.js":ey,"./engagement.js":ny,"./language-family.js":ly,"./prayer-progress.js":py,"./religion.js":dy,"./wagf-region.js":Object.freeze(Object.defineProperty({__proto__:null,PALETTE:aa,PROPERTY_KEY:Pu,REGION_ORDER:Tr,WAGF_REGIONS:Eu,applyColor:Rr,buildColorExpression:Nu,default:{name:"WAGF Region",propertyKey:Pu,palette:aa,regions:Eu,order:Tr,getColor:Cu,applyColor:Rr,buildColorExpression:Nu,fallback:Nr},getColor:Cu},Symbol.toStringTag,{value:"Module"}))}),fy=e=>e.replace(/-([a-z0-9])/g,(t,o)=>o.toUpperCase()),hy=e=>e.replace(/-/g,"_").toUpperCase(),Lo={...{STATUS:"status",CUSTOM:"custom"}},Mr={};function Tu(e){for(const t of Object.keys(e).sort()){const o=t.split("/").pop().replace(/\.js$/,"");if(o.startsWith("_")||o.startsWith("."))continue;const n=e[t].default;if(!n)continue;const a=fy(o);Lo[hy(o)]=a,Mr[a]=n}}Tu(gy);function my(e){e&&Tu(e)}function as(e){return Mr[e]||Mr[Lo.LANGUAGE_FAMILY]}const Ru={mapbox:"https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.3.0/mapbox-gl-rtl-text.js",maplibre:"https://cdn.jsdelivr.net/npm/@mapbox/mapbox-gl-rtl-text@0.3.0/dist/mapbox-gl-rtl-text.js"};function $y(e){return!!e&&typeof window<"u"&&e===window.maplibregl}function Mu(e){if(typeof window>"u")return!1;const t=e?[e]:[window.maplibregl,window.mapboxgl].filter(Boolean);let o=!1;for(const n of t)if(!(!n||!n.setRTLTextPlugin))try{if($y(n)){if(n.getRTLTextPluginStatus&&n.getRTLTextPluginStatus()!=="unavailable")continue;const a=n.setRTLTextPlugin(Ru.maplibre,!0);a&&a.catch&&a.catch(()=>{})}else n.setRTLTextPlugin(Ru.mapbox,null,!0);o=!0}catch{}return o}const Ou="affinityBlock",vn="#95a5a6",kn={A001:"Arab World",A002:"East Asian Peoples",A003:"Eurasian Peoples",A004:"Horn of Africa Peoples",A005:"Jewish",A006:"Malay Peoples",A007:"Persian-Median Peoples",A008:"South Asian Peoples",A009:"North American Peoples",A010:"Pacific Islanders",A011:"Southeast Asian Peoples",A012:"Sub-Saharan Peoples",A013:"Tibetan-Himalayan Peoples",A014:"Turkic Peoples",A015:"Latin-Caribbean Americans",A017:"Deaf",A018:"Tibetan Peoples",A019:"Himalayan Peoples"},Or={A001:"#E74C3C",A002:"#3498DB",A003:"#2ECC71",A004:"#F39C12",A005:"#9B59B6",A006:"#1ABC9C",A007:"#E67E22",A008:"#34495E",A009:"#95A5A6",A010:"#5DADE2",A011:"#16A085",A012:"#C0392B",A013:"#8E44AD",A014:"#D35400",A015:"#27AE60",A017:"#000000",A018:"#6C3483",A019:"#A569BD"},wn=Or;Object.entries(kn).reduce((e,[t,o])=>(e[o]=t,e),{});const by=Object.entries(kn).reduce((e,[t,o])=>(e[o]=wn[t],e),{}),_y=kn;function Fu(e){return kn[e]||"Unknown"}function Iu(e){return wn[e]||vn}function yy(e){return e?typeof e=="string"&&/^A\d{3}$/.test(e)?wn[e]||vn:by[e]||vn:vn}function vy(){return Object.entries(kn).map(([e,t])=>({code:e,name:t,color:wn[e]}))}function ky(e){return{code:e,name:kn[e]||"Unknown",color:wn[e]||vn}}function wy(e){var o;const t=e.affinityBlock||((o=e._raw)==null?void 0:o.ROP1);return Iu(t)}function xy(e){var o;const t=e.affinityBlock||((o=e._raw)==null?void 0:o.ROP1);return Fu(t)}function Du(){const e=["match",["get",Ou]];return Object.entries(wn).forEach(([t,o])=>{e.push(t,o)}),e.push(vn),e}const Sy={name:"Affinity Block",propertyKey:Ou,palette:Or,colors:Or,names:_y,getColor:wy,applyColor:Du,buildColorExpression:Du,getName:xy,getAffinityBlockName:Fu,getAffinityBlockColor:yy,getAffinityBlockColorByCode:Iu,getAffinityBlocksArray:vy,getAffinityBlockData:ky};function Ly(e){if(!e)return"hsl(0, 60%, 50%)";let t=0;for(let n=0;n{e.push(t,o)}),e.push(Fr),e}const Ey={name:"DOXA Region",propertyKey:Uu,palette:ju,colors:ju,slugColors:Ir,aliases:Bu,fallback:Fr,getColor:Py,applyColor:Vu,buildColorExpression:Vu,getRegionColor:Ay,getRegionColorBySlug:zu},Cy=tn&&tn.tagName.toUpperCase()==="SCRIPT"&&tn.src||new URL("dashboard-plus-grid.js",document.baseURI).href,Go=e=>String(e||"").trim().replace(/\/+$/,"");function Dr(){try{const t=String(Cy||"").split(/[?#]/)[0].match(/^(.*)\/([^/]+)\/([^/]+)\.js$/);return!t||t[2]!==t[3]?null:t[1]||null}catch{return null}}function qu(e){const t=e==null?void 0:e.embedBaseUrl;if(typeof t=="string"&&t.trim())return Go(t);if(typeof window<"u"){const o=window.MAP_EMBED_BASE_URL;if(typeof o=="string"&&o.trim())return Go(o)}return Go(Dr()||"")}function Hu(e){const t=e==null?void 0:e.assetsBase;if(typeof t=="string"&&t.trim()){const n=Go(t);if(/^https?:\/\//i.test(n)||n.startsWith("/"))return n}const o=Go((e==null?void 0:e.treeBase)||"")||Go(Dr()||"");if(o)try{const n=typeof document<"u"?document.baseURI:void 0;return Go(new URL(o+"/assets",n).href)}catch{return Go(o+"/assets")}return"./assets"}function Ny({shareUrl:e,embedPath:t,profileConfig:o}={}){const n=o||null,a=typeof window<"u",s=e||(n==null?void 0:n.shareUrl);if(typeof s=="string"&&s.trim())return s.trim();const r=String(t||(n==null?void 0:n.shareEmbedPath)||"").trim();if(r){if(/^https?:\/\//i.test(r))return r;if(r.startsWith("/"))return a?window.location.origin+r:r;const i=qu(n),l=r.replace(/^\.\//,"");if(i)return i+"/"+l;if(typeof document<"u")try{return new URL(l,document.baseURI).href}catch{}return l}return a?window.location.origin+window.location.pathname:""}const Ur="__doxaMapToken",Gr="doxa:map-token",Wu="__doxaMapTokenBridge",xn=()=>{if(typeof window>"u")return"";const e=window[Ur];return typeof e=="string"?e:""};function Ku(e){if(typeof window>"u")return"";const t=typeof e=="string"?e.trim():"";if(!t||t===xn())return xn();window[Ur]=t;try{window.dispatchEvent(new CustomEvent(Gr,{detail:t}))}catch{}return t}function Ty(){if(typeof window>"u"||window[Wu])return;const e=typeof window.MAP_TOKEN=="string"?window.MAP_TOKEN:"";e&&!xn()&&(window[Ur]=e);try{Object.defineProperty(window,"MAP_TOKEN",{configurable:!0,get(){return xn()},set(t){Ku(t)}}),window[Wu]=!0}catch{}}function Ry(){Ty();const e=pe(xn());if(typeof window<"u"){const t=()=>{e.value=xn()};window.addEventListener(Gr,t);try{Dt(()=>window.removeEventListener(Gr,t))}catch{}}return e}function Ot(e,t){const o=t||My(e);vt(()=>{var i;const n=Ro();if(!n)return;const a=(i=n.proxy)==null?void 0:i.$el;if(!a)return;const s=a.getRootNode();if(!(s instanceof ShadowRoot)||s.querySelector(`style[data-shadow-styles="${o}"]`))return;const r=document.createElement("style");r.setAttribute("data-shadow-styles",o),r.textContent=e,s.appendChild(r)})}function My(e){let t=0;for(let o=0;o{const o=e.__vccOpts||e;for(const[n,a]of t)o[n]=a;return o},sa={},Fy="dx-maps".replace(/[.*+?^${}()|[\]\\]/g,"\\$&");function Iy(e){if(!e||/^(https?:)?\/\//.test(e)||e.startsWith("/"))return e;const t=e.replace(/^(\.\.\/)+/,"").replace(/^\.\//,""),o=new RegExp("^(.*/"+Fy+"/)").exec(window.location.pathname);if(o)return o[1]+t;const n=Dr();return n?String(n).replace(/\/+$/,"")+"/"+t:e}function Dy(e){const t=Iy(e);return t?(sa[t]||(sa[t]=new Promise((o,n)=>{const a=document.createElement("script");a.src=t,(/^\/plugin-designs\//.test(t)||/\/index\.js(\?|$)/.test(t))&&(a.type="module"),a.onload=()=>o(),a.onerror=()=>{delete sa[t],n(new Error("failed to load "+t))},document.head.appendChild(a)})),sa[t]):Promise.resolve()}function Uy(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 Gy=` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .stl { display:flow-root; width:100%; min-height:100%; background:#f3f3f1; color:#3b463d; font-family:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif; -webkit-font-smoothing:antialiased; --stl-accent:#92b195; --stl-border:#d1d4cd; --stl-elevated:#ffffff; --stl-muted:#6d766e; } .stl-top { display:flex; align-items:center; gap:10px; padding:11px 16px; border-bottom:1px solid var(--stl-border); background:#ffffff; position:sticky; top:0; z-index:5; } .stl-brand { display:inline-flex; align-items:center; } @@ -109,19 +67,11 @@ .stl ::-webkit-scrollbar-thumb { background:#c4c8c0; border-radius:8px; } .stl ::-webkit-scrollbar-thumb:hover { background:#9aa197; } .stl ::-webkit-scrollbar-corner { background:transparent; } -<<<<<<< HEAD `,zy=Gn({name:"StackLayout",props:{sections:{type:Array,default:()=>[]},title:{type:String,default:""},maxSectionHeight:{type:String,default:""},minSectionHeight:{type:String,default:""}},setup(){Ot(jy,"stack-layout")},data(){return{_hosts:{},_mounted:{}}},mounted(){for(const e of this.sections||[])e.element&&this.mountSection(e)},methods:{registerHost(e,t){t&&(this._hosts[e]=t)},sectionStyle(e){const t={},o=e.maxHeight||this.maxSectionHeight,n=e.minHeight||this.minSectionHeight,a=!!(o&&n&&o===n);return o&&(t.maxHeight=o,a||(t.overflow="auto")),n&&(t.minHeight=n),Object.keys(t).length?t:null},hasDefiniteHeight(e){const t=e.maxHeight||this.maxSectionHeight,o=e.minHeight||this.minSectionHeight;return!!(t&&o&&t===o)},mountSection(e){if(this._mounted[e.key])return;this._mounted[e.key]=!0;const t=this._hosts[e.key];t&&Uy(e.src).then(()=>Gy(e.element)).then(()=>{if(!customElements.get(e.element))return;const o=document.createElement(e.element),n=e.attrs||{};for(const a in n){const s=n[a];try{o[a]=s}catch{}try{o.setAttribute(a,s==null?"":String(s))}catch{}}t.innerHTML="",t.appendChild(o)}).catch(o=>{const n=o&&o.message||String(o);console.error('[StackLayout] section "'+e.key+'" failed to mount <'+e.element+">"+(e.src?" from "+e.src:"")+": "+n);try{t.innerHTML="";const a=document.createElement("div");a.setAttribute("role","status"),a.style.cssText="box-sizing:border-box;max-width:100%;padding:16px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:#6d766e;background:#fff;border:1px solid #d1d4cd;border-radius:8px;margin:12px 0;overflow-wrap:anywhere;word-break:break-word",a.textContent="Could not load <"+e.element+">"+(e.src?" from "+e.src:"")+" — "+n,t.appendChild(a)}catch{}})}}}),By={class:"stl"},Vy={key:0,class:"stl-top"},qy={class:"stl-brand"},Hy={key:0,class:"stl-title"},Wy={class:"stl-meta"},Ky={class:"stl-stack"},Yy={key:0,class:"stl-sec-head"},Xy={class:"stl-sec-title"},Zy={key:0,class:"stl-sec-sub"},Jy={key:2,class:"stl-slot"},Qy={class:"stl-tail"};function ev(e,t,o,n,a,s){return H(),Z("div",By,[e.$slots.brand||e.$slots.meta||e.title?(H(),Z("header",Vy,[T("span",qy,[Ko(e.$slots,"brand")]),e.title?(H(),Z("b",Hy,ue(e.title),1)):Me("",!0),T("span",Wy,[Ko(e.$slots,"meta")])])):Me("",!0),T("div",Ky,[(H(!0),Z(Ce,null,tt(e.sections,r=>(H(),Z("section",{key:r.key,class:He(["stl-sec",{"stl-sec-fill":e.hasDefiniteHeight(r)}]),style:lt(e.sectionStyle(r))},[r.title?(H(),Z("div",Yy,[T("b",Xy,ue(r.title),1),r.sub?(H(),Z("span",Zy,ue(r.sub),1)):Me("",!0)])):Me("",!0),r.element?(H(),Z("div",{key:1,class:"stl-host",ref_for:!0,ref:i=>e.registerHost(r.key,i)},null,512)):(H(),Z("div",Jy,[Ko(e.$slots,"section-"+r.key)]))],6))),128)),T("div",Qy,[Ko(e.$slots,"default")])])])}const tv=Sn(zy,[["render",ev],["styles",[Fy]]]);function ss(e,t){if(!t.includes("."))return e==null?void 0:e[t];const[o,...n]=t.split(".");let a=e==null?void 0:e[o];for(const s of n)a=a==null?void 0:a[s];return a}function ov(e,t){const o=e.toLowerCase(),n=t.toLowerCase(),a=[];let s=0,r=o.indexOf(n,s);for(;r!==-1;)a.push([r,r+n.length-1]),s=r+n.length,r=o.indexOf(n,s);return a}function Yu(e,t,o){const n=e.toLowerCase(),a=t.toLowerCase(),s=a.length;if(!s||!n.length)return null;const r=Math.min(2,Math.floor(o*s));if(r<=0)return null;let i=new Array(n.length+1).fill(0),l=new Array(n.length+1);for(let f=1;f<=s;f++){l[0]=f;for(let v=1;v<=n.length;v++){const L=i[v-1]+(a[f-1]===n[v-1]?0:1);l[v]=Math.min(L,i[v]+1,l[v-1]+1)}[i,l]=[l,i]}let c=1/0,u=-1;for(let f=1;f<=n.length;f++)i[f]r?null:[[Math.max(0,u-s),u-1]]}function nv(e,t){const o=String(e??""),n=String(t??"").trim();return n?o?o.toLowerCase().includes(n.toLowerCase()):!1:!0}function Xu(e,t,{threshold:o=.4}={}){const n=String(e??"").trim().toLowerCase();if(!n)return[];const a=Math.min(2,Math.floor(o*n.length)),s=[];for(const i of t){if(!i)continue;const l=String(i).toLowerCase();if(Math.abs(l.length-n.length)>a)continue;const c=av(l,n,a);c<=a&&s.push({value:i,distance:c})}if(!s.length)return[];const r=Math.min(...s.map(i=>i.distance));return s.filter(i=>i.distance===r).map(i=>i.value)}function av(e,t,o){if(e===t)return 0;let n=Array.from({length:t.length+1},(s,r)=>r);const a=new Array(t.length+1);for(let s=1;s<=e.length;s++){a[0]=s;let r=s;for(let i=1;i<=t.length;i++)a[i]=Math.min(n[i-1]+(e[s-1]===t[i-1]?0:1),n[i]+1,a[i-1]+1),a[i]o)return o+1;for(let i=0;i<=t.length;i++)n[i]=a[i]}return n[t.length]}function sv(e,t,{threshold:o=.4,minMatchCharLength:n=3}={}){const a=String(e??""),s=String(t??"").trim();return s?a?a.toLowerCase().includes(s.toLowerCase())?!0:o===0||s.length({item:c,matches:[]}));if(o.length!t[n[a]].includes(r))):s}}return t}function lv(){const e=Bo({}),t=new Set,o=de(0),n=de(""),a=new Map;function s(m,h){return a.has(m)||a.set(m,new Set),a.get(m).add(h),()=>{var p;return(p=a.get(m))==null?void 0:p.delete(h)}}function r(m,h){var p;(p=a.get(m))==null||p.forEach(b=>{try{b(h)}catch{}})}let i={};function l(m){i=iv(m)}function c(m,h){if(h==null){delete e[m];for(const p of i[m]||[])delete e[p]}else e[m]=h;r("filter",e)}function u(){Object.keys(e).forEach(m=>delete e[m]),r("filter",e)}function d(m){n.value=m==null?"":String(m),r("search",n.value)}function f(){o.value++,r("select",t)}function v(m){t.has(m)?t.delete(m):t.add(m),f()}function L(){t.size&&(t.clear(),f())}function k(m,{additive:h=!0}={}){let p=!1;h||t.size&&(t.clear(),p=!0);for(const b of m)t.has(b)||(t.add(b),p=!0);return p&&f(),p}function x(m){let h=!1;for(const p of m)t.delete(p)&&(h=!0);return h&&f(),h}function C(m){const h=m instanceof Set?m:new Set(m);if(h.size===t.size){let p=!0;for(const b of h)if(!t.has(b)){p=!1;break}if(p)return!1}t.clear();for(const p of h)t.add(p);return f(),!0}return{filterSet:e,selectionSet:t,selectionVersion:o,searchTerm:n,on:s,emit:r,setFilter:c,clearFilters:u,setSearch:d,configureHierarchy:l,toggleSelect:v,clearSelection:L,selectMany:k,deselectMany:x,setSelection:C}}const jr={};function zr(){return typeof window<"u"&&window.MAP_APP_API_URL||typeof{url:tn&&tn.tagName.toUpperCase()==="SCRIPT"&&tn.src||new URL("dashboard-plus-grid.js",document.baseURI).href}<"u"&&(jr==null?void 0:jr.VITE_API_BASE_URL)||""}const Yt={_meta:{_comment:"Single source of truth for data-source connections across all doxa-maps bundles.",_comment_token:"Mapbox access token is fetched at runtime from window.MAP_TOKEN_URL (same modular pattern as window.MAP_APP_API_URL). Not hardcoded to any host — set mapboxTokenUrl below or override window.MAP_TOKEN_URL on the host page.",mapboxTokenUrl:"window.MAP_TOKEN_URL"},activeSource:"pray-tools",sources:{"pray-tools":{id:"pray-tools",name:"Prayer.Tools API",type:"rest-api",description:"pray.doxa.life live API — people-group prayer, engagement, and adoption data. Base URL read from window.MAP_APP_API_URL or VITE_API_BASE_URL at runtime.",endpoints:{bulk:"/api/people-groups/list",detail:"/api/people-groups/detail/{slug}",statistics:"/api/people-groups/statistics"},queryParams:{lang:"en"},defaultFields:["slug","name","latitude","longitude","wagf_region","wagf_block","wagf_member","rop1","imb_reg_of_people_2","imb_reg_of_people_25","imb_reg_of_people_3","country_code","religion","population","has_photo","image_url","people_praying","people_committed","adopted_by_churches","engagement_status","imb_gsec","primary_language","imb_language_family","imb_language_class","imb_language_speakers"],pollFields:["slug","people_praying"],pollInterval:3e5,fallbackSourceId:null,fieldMappings:{uniqueId:"slug",slug:"slug",name:"name",latitude:"latitude",longitude:"longitude",wagfRegion:"wagf_region",doxaRegion:"wagf_region",wagfBlock:"wagf_block",wagfMember:"wagf_member",affinityBlock:"rop1",countryIso:"country_code",religion:"religion",religionCode:"religion",population:"population",hasPhoto:"has_photo",imageUrl:"image_url",photoUrl:"image_url",peoplePraying:"people_praying",peopleCommitted:"people_committed",engagementStatus:"engagement_status",adoptionStatus:"adopted_by_churches",language:"primary_language",cluster:"imb_reg_of_people_2",peopleGroup:"imb_reg_of_people_25",peopleGroupCountry:"imb_reg_of_people_3",languageFamily:"imb_language_family",languageClass:"imb_language_class",languageSpeakers:"imb_language_speakers"},imageConfig:{useField:"imageUrl",fallbackField:null,fallbackUrlTemplate:null,placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg",useSvgPlaceholder:!0}},"doxa-csv":{id:"doxa-csv",name:"DOXA People Groups CSV",type:"csv",path:"assets/data/Joshua-project-ids-Doxa-1439.csv",description:"People groups dataset from DOXA / Joshua Project",fieldMappings:{uniqueId:"ROP3",peopleGroupId:"ROP3",countryCode:"ROG",peopleId3:"PeopleID3",name:"Name",displayName:"NmDisp",alternateName:"NmAlt",description:"PeopleDesc",locationDescription:"LocationDe",country:"Ctry",countryIso:"ISOalpha3",region:"Regn",subRegion:"RegnSub",wagfRegion:"WAGF Region",doxaRegion:"WAGF Region",wagfBlock:"WAGF BLOCK",affinityBloc:"Affbloc",affinityBlock:"ROP1",affinityCode:"AffCd",affinityName:"Aff",peopleCluster:"PplClstr",ethneName:"Ethne",latitude:"Latitude",longitude:"Longitude",population:"Pop",populationClass:"PopCls",status:"Status",engagementStatus:"EngStat",evangelicalLevel:"EvngLvl",gsec:"GSEC",gsecBrief:"GSECbrf",gsecLong:"GSEClng",spiScore:"SPI",spiDescription:"SPIdesc",language:"Lang",languageCode:"ROL",languageFamily:"LangFamily",religion:"Rlgn",religionCode:"ROR",religionDescription:"RORdesc",religionBase:"RlgnBs",religionDiv:"RlgnDiv",bible:"Bible",jesusFilm:"Jesus",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories",resourcesTotal:"ResTot",bibleLevel:"LvlBible",yearPublished:"YrPub",photoCredit:"PicCrdt",photoUrl:"PicURL",hasPhoto:"Photo",isIndigenous:"Indigenous"},imageConfig:{useField:"photoUrl",fallbackField:"peopleId3",fallbackUrlTemplate:"https://joshuaproject.net/assets/media/profiles/photos/p{peopleId3}.jpg",placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg"}}},systemFields:{uniqueId:{description:"Unique identifier per row (slug for API, ROP3+ROG for CSV)",required:!0},peopleGroupId:{description:"People group ID — same group can appear in multiple countries",required:!0},name:{description:"People group display name",required:!0},latitude:{description:"Latitude coordinate for map pin",required:!0},longitude:{description:"Longitude coordinate for map pin",required:!0},engagementStatus:{description:"Boolean — true if engaged_status = 'engaged'",required:!1},adoptionStatus:{description:"Boolean — true if adopted_by_churches > 0",required:!1},peoplePraying:{description:"Number of people currently praying for this group — from pray-tools API",required:!1},peopleCommitted:{description:"Raw count of committed workers for this group — source of engagementStatus",required:!1},languageFamily:{description:"Language family name",required:!1},religion:{description:"Primary religion",required:!1},population:{description:"Population count",required:!1},doxaRegion:{description:"WAGF/DOXA region name",required:!1},photoUrl:{description:"URL to people group photo",required:!1},description:{description:"People group description text",required:!1}}};function cv(e={}){const t=de(!1),o=de(null),n=On(new Map),a=On([]),s=de(null),r=de(0),i=e.source||Yt.activeSource;async function l(){var c,u,d,f;t.value=!0,o.value=null;try{const v=((c=Yt==null?void 0:Yt.sources)==null?void 0:c[i])||{},L=zr(),k=((u=v.endpoints)==null?void 0:u.bulk)||"/api/people-groups/list",x=(v.defaultFields||[]).join(","),C=((d=v.queryParams)==null?void 0:d.lang)||"en",m=`${L}${k}?${x?`fields=${x}&`:""}lang=${C}&_=${Date.now()}`,h=await fetch(m,{cache:"no-store"});if(!h.ok)throw new Error(`list HTTP ${h.status}`);const p=await h.json(),b=Array.isArray(p)?p:p.posts||p.data||p.results||[],A=new Map;for(const M of b){const U=M&&(M.slug||M.id);U&&A.set(U,M)}n.value=A,a.value=b,r.value=A.size;const w=((f=v.endpoints)==null?void 0:f.statistics)||"/api/people-groups/statistics";try{const M=await fetch(`${L}${w}?_=${Date.now()}`,{cache:"no-store"});M.ok&&(M.headers.get("content-type")||"").includes("json")&&(s.value=await M.json())}catch{}r.value===0&&(o.value="No records loaded from the live API.")}catch(v){o.value=v&&v.message?v.message:String(v)}finally{t.value=!1}}return{loading:t,error:o,rowStore:n,rows:a,stats:s,total:r,load:l,sourceId:i}}const rs=["slug","name","imb_alternate_name","doxa_wagf_uid","imb_uid","imb_peid","imb_pgid","joshua_project_id","imb_affinity_code","latitude","longitude","country_code","region","wagf_region","wagf_block","wagf_member","imb_subregion","location_description","rop1","imb_reg_of_people_2","imb_reg_of_people_25","imb_reg_of_people_3","primary_language","imb_language_family","imb_language_class","imb_language_speakers","work_in_local_language","imb_is_indigenous","religion","imb_reg_of_religion_3","imb_reg_of_religion_4","population","imb_population_class","believers_count","evangelical_pct","imb_evangelical_level","imb_congregation_existing","people_praying","people_committed","committed_duration","adopted_by_churches","adopted_by_count","adopted_by_names","engagement_status","status","reason_engaged","reason_unlisted","global_start_date","workers_long_term","imb_church_planting","disciple_and_church_multiplication","imb_bible_available","imb_bible_translation_level","imb_bible_year_published","imb_bible_stories_available","imb_audio_scripture_available","imb_gospel_recordings_available","imb_jesus_film_available","imb_radio_broadcast_available","imb_total_resources_available","imb_gsec","imb_lostness_priority_index","imb_strategic_priority_index","has_photo","image_url","picture_credit","imb_people_description"];function Br({rowStore:e,rows:t,selectionSet:o,filterSet:n,FACET_ACC:a,dataOpts:s={},labelFor:r=null}){let i=null,l=null;function c(){return l||(l=(async()=>{var J,W,G;const b=s.source||Yt.activeSource,A=((J=Yt==null?void 0:Yt.sources)==null?void 0:J[b])||{},w=Array.isArray(A.exportFields)&&A.exportFields.length?A.exportFields:rs,M=((W=A.endpoints)==null?void 0:W.bulk)||"/api/people-groups/list",U=((G=A.queryParams)==null?void 0:G.lang)||"en",ne=`${zr()}${M}?fields=${w.join(",")}&lang=${U}`,B=await fetch(ne,{cache:"no-store"});if(!B.ok)throw new Error(`export list HTTP ${B.status}`);const X=await B.json(),pe=Array.isArray(X)?X:X.posts||X.data||X.results||[],I=new Map;for(const ae of pe){const F=ae&&(ae.slug||ae.id);F&&I.set(F,ae)}return i=I,I})().catch(b=>{throw l=null,b}),l)}function u(b){if(!i)return b;const A=i.get(b&&(b.slug||b.id));return A?{...b,...A}:b}function d(){if(o&&o.size)return[...o].map(A=>e.value.get(A)).filter(Boolean);const b=Object.keys(n);return b.length?(t.value||[]).filter(A=>b.every(w=>{const M=a[w];return M?M(A)===n[w]:!0})):t.value||[]}function f(){return o&&o.size?`selection (${o.size})`:Object.keys(n).length?"filter result":"all"}function v(b){return b==null?b:Array.isArray(b)?b.map(A=>v(A)).filter(A=>A!==""&&A!==null&&A!==void 0).join(" | "):typeof b=="object"?b.label??b.value??b.text??b.name??b.link??JSON.stringify(b):b}function L(b){const A={};for(const w of Object.keys(b))A[w]=v(b[w]);return A}function k(b){let A=b==null?"":String(b);return/^[=+\-@]/.test(A)&&(A="'"+A),/[",\n\r]/.test(A)&&(A='"'+A.replace(/"/g,'""')+'"'),A}function x(){const b=d().map(u).map(L),A=b.reduce((B,X)=>(Object.keys(X).forEach(pe=>B.add(pe)),B),new Set),w=[...rs.filter(B=>A.has(B)),...[...A].filter(B=>!rs.includes(B))],M=Object.entries(n).map(([B,X])=>`${B}=${r?r(B,X):X}`).join(" | ")||"none",U=`# Research Dashboard export — scope: ${f()}; filters: ${M}; rows: ${b.length}`;return[w.map(k).join(","),...b.map(B=>w.map(X=>k(B[X])).join(",")),U].join(`\r `)}const C={rows:0,clipboard:!1,downloaded:!1,at:0,fields:0,wide:!1};function m(){const b=x(),A=d().length,w=(b.split(`\r `)[0]||"").split(",").length;try{typeof window<"u"&&(window.__rdashLastCsv=b)}catch{}let M=!1,U=!1;try{typeof navigator<"u"&&navigator.clipboard&&navigator.clipboard.writeText&&(navigator.clipboard.writeText(b).catch(()=>{}),M=!0)}catch{}try{const ne=new Blob([b],{type:"text/csv;charset=utf-8"}),B=URL.createObjectURL(ne),X=document.createElement("a");X.href=B,X.download="research-dashboard.csv",X.style.display="none",document.body.appendChild(X),X.click(),U=!0,setTimeout(()=>{try{URL.revokeObjectURL(B),X.remove()}catch{}},200)}catch{}Object.assign(C,{rows:A,clipboard:M,downloaded:U,fields:w,wide:!!i,at:typeof performance<"u"?performance.now():0});try{window.__rdashExportStatus={rows:A,clipboard:M,downloaded:U,fields:w,wide:!!i}}catch{}return{csv:b,rows:A,clipboard:M,downloaded:U,fields:w,wide:!!i}}async function h(){try{await c()}catch{}return m()}function p(){try{return c()}catch{return null}}return{exportCsv:m,exportCsvAsync:h,buildCsv:x,pickRows:d,scopeLabel:f,lastExport:C,prefetchExportFields:p,EXPORT_FIELDS:rs}}const uv="#6b7280";function pv(){const e=as(Lo.AFFINITY_BLOCK);return e&&e.propertyKey==="affinityBlock"&&e.palette?e.palette:{}}function dv(e,t){const o=pv();return e&&o[e]?o[e]:uv}function gv(e){return(e==null?void 0:e.properties)||e||{}}function Vr(e){return e&&typeof e=="object"&&"label"in e?e.label||e.value||"":e}function fv(e){var t;return String(e.affinityBlock||Vr((t=e._raw)==null?void 0:t.rop1)||"").trim()}function hv(e){var t;return String(e.affinityBlockLabel||((t=e._raw)!=null&&t.rop1&&typeof e._raw.rop1=="object"?e._raw.rop1.label:"")||"").trim()}function mv(e){var t;return String(e.cluster||Vr((t=e._raw)==null?void 0:t.imb_reg_of_people_2)||"").trim()}function $v(e){var t;return String(e.clusterLabel||((t=e._raw)!=null&&t.imb_reg_of_people_2&&typeof e._raw.imb_reg_of_people_2=="object"?e._raw.imb_reg_of_people_2.label:"")||"").trim()}function bv(e){var t;return String(e.peopleGroup||Vr((t=e._raw)==null?void 0:t.imb_reg_of_people_25)||"").trim()}function _v(e){var t;return String(e.peopleGroupLabel||((t=e._raw)!=null&&t.imb_reg_of_people_25&&typeof e._raw.imb_reg_of_people_25=="object"?e._raw.imb_reg_of_people_25.label:"")||e.name||"").trim()}function yv(e){var t;return String(e.uniqueId||e.slug||((t=e._raw)==null?void 0:t.slug)||"").trim()}function vv(e){var t;return String(e.name||e.displayName||((t=e._raw)==null?void 0:t.name)||"").trim()}function kv(e){var o;const t=Number(e.population??e.populationNum??((o=e._raw)==null?void 0:o.population)??0);return Number.isFinite(t)?t:0}function wv(e){return String(e.countryName||e.country||e.countryIsoLabel||e.countryIso||"").trim()}function xv(e){const t=re(()=>{const s=e&&e.value||[],r=new Map;for(const i of s){const l=gv(i),c=fv(l),u=hv(l)||c||"— Unknown —",d=mv(l),f=$v(l)||d||"— Unknown —",v=bv(l),L=_v(l)||v||"— Unknown —",k=yv(l),x=vv(l)||k,C=kv(l),m=wv(l);if(!k)continue;let h=r.get(c||"__unknown__");h||(h={code:c,label:u,count:0,pop:0,memberIds:[],clusters:new Map},r.set(c||"__unknown__",h)),h.count+=1,h.pop+=C,h.memberIds.push(k);let p=h.clusters.get(d||"__unknown__");p||(p={code:d,label:f,count:0,pop:0,memberIds:[],peopleGroups:new Map},h.clusters.set(d||"__unknown__",p)),p.count+=1,p.pop+=C,p.memberIds.push(k);let b=p.peopleGroups.get(v||"__unknown__");b||(b={code:v,label:L,count:0,pop:0,memberIds:[],instances:[]},p.peopleGroups.set(v||"__unknown__",b)),b.count+=1,b.pop+=C,b.memberIds.push(k),b.instances.push({id:k,name:x,country:m,pop:C})}return r}),o=s=>s&&s.length?["in",["get","uniqueId"],["literal",s]]:["==",["get","uniqueId"],"__none__"],n=re(()=>{const s=t.value,r=[];for(const i of s.values()){const l=dv(i.code,i.label),c={id:`bloc:${i.code||i.label}`,label:i.label,color:l,count:i.count,pop:i.pop,filter:o(i.memberIds),children:[]};for(const u of i.clusters.values()){const d={id:`cluster:${i.code}__${u.code||u.label}`,label:`${u.label} (Cluster)`,color:l,count:u.count,pop:u.pop,filter:o(u.memberIds),children:[]};for(const f of u.peopleGroups.values()){const v={id:`pg:${i.code}__${u.code}__${f.code||f.label}`,label:`${f.label} (PG)`,color:l,count:f.count,pop:f.pop,filter:o(f.memberIds),children:[]};f.instances.sort((L,k)=>k.pop-L.pop||L.country.localeCompare(k.country));for(const L of f.instances)v.children.push({id:`pgic:${L.id}`,label:`${L.country?`${L.name}, ${L.country}`:L.name} (PGIC)`,color:l,count:1,pop:L.pop,filter:["==",["get","uniqueId"],L.id],children:[]});d.children.push(v)}d.children.sort((f,v)=>v.count-f.count||v.pop-f.pop),c.children.push(d)}c.children.sort((u,d)=>d.count-u.count||d.pop-u.pop),r.push(c)}return r.sort((i,l)=>l.count-i.count||l.pop-i.pop),r});function a(s){if(typeof window>"u"||typeof window.CustomEvent!="function")return;if(!s){window.dispatchEvent(new CustomEvent("legend:highlight",{detail:{kind:null}}));return}const r=String(s.id||""),i={kind:null,label:s.label,filterExpr:s.filter};r.startsWith("bloc:")?i.kind="bloc":r.startsWith("cluster:")?i.kind="cluster":r.startsWith("pg:")?i.kind="people-group":r.startsWith("pgic:")&&(i.kind="people-group-in-country"),window.dispatchEvent(new CustomEvent("legend:highlight",{detail:i}))}return{aggregated:t,affinityTree:n,highlight:a}}function ra(e,t,o){const n=re(()=>{const l=t&&o&&t.sources&&t.sources[o];return l&&l.features||[]}),{aggregated:a}=xv(n),s=re(()=>{const l=(e&&e.facetRail||[]).find(c=>c.tree==="affinity");return l&&l.drill||[]}),r=re(()=>{const[l,c,u]=s.value,d=new Map,f=new Map,v=new Map;for(const k of a.value.values()){k.code&&d.set(k.code,k.label);for(const x of k.clusters.values()){x.code&&f.set(x.code,x.label);for(const C of x.peopleGroups.values())C.code&&v.set(C.code,C.label)}}const L={};return l&&(L[l]=d),c&&(L[c]=f),u&&(L[u]=v),L});function i(l,c){const u=r.value[l];return u&&u.get(c)||c}return{normalizedFeatures:n,affinityAgg:a,affinityLabelMaps:r,treeFacetKeys:s,labelFor:i}}class Zu{constructor(t={}){this.sourcesConfig=null,this.activeSource=null,this.rawData=[],this.normalizedData=[],this.dataByUniqueId=new Map,this.baseUrl=typeof window<"u"&&window.MAP_APP_BASE_URL||"./",this.locale=t.locale||null,this.cache=new Map,this.cacheEnabled=!0,this.cacheTTL=5*60*1e3}async init(){return this.sourcesConfig=Yt,this.sourcesConfig}getActiveSourceId(){var t;return((t=this.sourcesConfig)==null?void 0:t.activeSource)||"doxa-csv"}getSourceConfig(t){var o,n;return(n=(o=this.sourcesConfig)==null?void 0:o.sources)==null?void 0:n[t]}async setActiveSource(t){const o=this.getSourceConfig(t);if(!o)throw new Error(`Source not found: ${t}`);if(this.activeSource=o,this.cacheEnabled&&this.cache.has(t)){const n=this.cache.get(t);return this.normalizedData=n.normalizedData,this.dataByUniqueId=n.dataByUniqueId,this.normalizedData}return o.type==="csv"?await this.loadCSVData(o):o.type==="api"?await this.loadAPIData(o):o.type==="rest-api"&&await this.loadRestApiData(o),this.cacheEnabled&&this.cache.set(t,{normalizedData:this.normalizedData,dataByUniqueId:this.dataByUniqueId,timestamp:Date.now()}),this.normalizedData}clearCache(t=null){t?this.cache.delete(t):this.cache.clear()}isCached(t){return this.cache.has(t)}async loadActiveSource(){return this.sourcesConfig||await this.init(),this.setActiveSource(this.getActiveSourceId())}parseCSV(t){const o=[],n=[];let a="",s=!1,r=[],i=!0;for(let l=0;l0){if(r.push(a.trim()),a="",i)n.push(...r),i=!1;else if(r.length>1){const d={};n.forEach((f,v)=>{d[f]=r[v]||""}),o.push(d)}r=[]}}else a+=c}if((a||r.length>0)&&(r.push(a.trim()),!i&&r.length>1)){const l={};n.forEach((c,u)=>{l[c]=r[u]||""}),o.push(l)}return{headers:n,data:o}}async loadCSVData(t){try{const n=await(await fetch(this.baseUrl+t.path)).text(),{headers:a,data:s}=this.parseCSV(n);return this.rawData=s,this.validateFieldMappings(t.fieldMappings,a,t.name),this.normalizeData(t),this.normalizedData}catch(o){throw console.error("Failed to load CSV data:",o),o}}validateFieldMappings(t,o,n){const a=new Set(o.map(r=>r.trim())),s=[];for(const[r,i]of Object.entries(t||{}))if(Array.isArray(i))for(const l of i)a.has(l)||s.push({systemField:r,sourceField:l,isComposite:!0});else i&&!a.has(i)&&s.push({systemField:r,sourceField:i,isComposite:!1});s.length>0&&console.warn(`[DataSourceManager] ${n}: missing CSV columns:`,s)}async loadAPIData(t){try{const n=await(await fetch(t.url||t.endpoint)).json();return this.rawData=Array.isArray(n)?n:n.posts||n.data||n.peopleGroups||n.results||[],this.normalizeData(t),this.normalizedData}catch(o){throw console.error("Failed to load API data:",o),o}}async loadRestApiData(t){var l,c;const o=zr(),n=((l=t.endpoints)==null?void 0:l.bulk)||"/api/people-groups/list",a=((c=t.defaultFields)==null?void 0:c.join(","))||"",s=[];a&&s.push(`fields=${a}`);const r={...t.queryParams||{}};this.locale&&(r.lang=this.locale);for(const[u,d]of Object.entries(r))s.push(`${u}=${encodeURIComponent(d)}`);const i=`${o}${n}?${s.join("&")}`;try{const u=await fetch(i);if(!u.ok)throw new Error(`HTTP ${u.status}: ${u.statusText}`);const d=u.headers.get("content-type")||"";if(!d.includes("application/json"))throw new Error(`API returned "${d}" instead of JSON. Server at ${o} may be down or misconfigured.`);const f=await u.json();return this.rawData=Array.isArray(f)?f:f.posts||f.data||f.results||[],this.normalizeData(t),this.normalizedData}catch(u){throw console.error(`[rest-api] Failed to load from ${t.id}:`,u),u}}normalizeData(t){const o=t.fieldMappings||{};this.normalizedData=[],this.dataByUniqueId=new Map;for(const n of this.rawData){const a={};for(const[l,c]of Object.entries(o))if(Array.isArray(c)){const u=c.map(d=>this.getFieldValue(n,d));a[l]=u.join("_")}else a[l]=this.getFieldValue(n,c);if(a.latitude=parseFloat(a.latitude)||0,a.longitude=parseFloat(a.longitude)||0,a.latitude===0&&a.longitude===0)continue;a.populationNum=this.parsePopulation(a.population),a.imageUrl=this.getImageUrl(a,t.imageConfig);const s=a.engagementStatus;s!=null&&(typeof s=="object"&&"value"in s?(a.engagementStatusLabel=s.label||s.value,a.engagementStatus=s.value==="engaged"):a.engagementStatus=s===!0||s===1||s==="1"||s==="true"||typeof s=="number"&&s>0||typeof s=="string"&&parseInt(s,10)>0);const r=a.adoptionStatus;r!=null&&(a.adoptionStatus=r===!0||r===1||r==="1"||r==="true"||typeof r=="object"&&!!(r!=null&&r.value)||typeof r=="number"&&r>0||typeof r=="string"&&parseInt(r,10)>0);const i=["doxaRegion","wagfRegion","wagfBlock","wagfMember","affinityBlock","cluster","peopleGroup","countryIso","religion","religionCode"];for(const l of i){const c=a[l];c!=null&&typeof c=="object"&&"value"in c?(a[l+"Label"]=c.label||c.value,a[l]=c.value):c!=null&&typeof c=="string"&&c!==""&&(a[l+"Label"]||(a[l+"Label"]=c))}a.countryName=a.countryIsoLabel||a.country||a.countryIso||"",a.religionName=a.religionLabel||a.religion||"",a._raw=n,this.normalizedData.push(a),this.dataByUniqueId.set(a.uniqueId,a)}this.rawData=null}getFieldValue(t,o){if(!o)return"";if(t[o]!==void 0)return t[o];const n=o.trim();if(t[n]!==void 0)return t[n];for(const a of Object.keys(t))if(a.trim()===n||a.includes(n)||n.includes(a.trim()))return t[a];return""}parsePopulation(t){if(!t)return 0;const o=String(t).replace(/,/g,"").trim(),n=parseInt(o,10);return isNaN(n)?0:n}getImageUrl(t,o){if(!o)return"";const n=o.placeholderUrl||"",a=t[o.useField];return a&&String(a).trim()&&!String(a).includes("NoImageAvailable")?a:n}getData(){return this.normalizedData}getByUniqueId(t){return this.dataByUniqueId.get(t)}getByCoordinates(t,o,n=1e-4){return this.normalizedData.find(a=>Math.abs(a.latitude-t)o.peopleGroupId===t)}getLanguageFamilies(){const t=new Set;return this.normalizedData.forEach(o=>{o.languageFamily&&t.add(o.languageFamily)}),Array.from(t).sort()}getDataByLanguageFamily(){const t={};return this.normalizedData.forEach(o=>{const n=o.languageFamily||"Unknown";t[n]||(t[n]=[]),t[n].push(o)}),t}getDataByRegion(){const t={};return this.normalizedData.forEach(o=>{const n=o.doxaRegion||"Unknown";t[n]||(t[n]=[]),t[n].push(o)}),t}getStats(){return{totalRecords:this.normalizedData.length,withPeopleId3:this.normalizedData.filter(t=>t.peopleId3).length,withPhotos:this.normalizedData.filter(t=>t.imageUrl&&!String(t.imageUrl).includes("NoImageAvailable")).length,languageFamilies:this.getLanguageFamilies().length,countries:new Set(this.normalizedData.map(t=>t.country)).size,regions:Object.keys(this.getDataByRegion()).length}}}new Zu;const Ju=(e,t)=>Object.fromEntries(Object.entries(e||{}).map(([o,n])=>[o,t(n,o)])),Qu=e=>e==null?"—":Number(e).toLocaleString("en-US");function ia(e){const t=Ju(e.facets,a=>a.get),o=Object.fromEntries((e.columns||[]).map(a=>[a.key,a.get])),n=Array.isArray(e.searchKeys)?e.searchKeys:null;return n?n.map(a=>t[a]||o[a]).filter(a=>typeof a=="function"):(e.columns||[]).filter(a=>a.type!=="num"&&typeof a.get=="function").map(a=>a.get)}function la(e,t){const o=(a,s)=>{var i;const r=(((i=e==null?void 0:e.searchTerm)==null?void 0:i.value)||"").trim();if(!r)return!0;for(const l of t){const c=l(a);if(c!=null&&s(String(c),r,{threshold:.4,minMatchCharLength:3}))return!0}return!1},n=a=>o(a,sv);return n.exact=a=>o(a,nv),n.active=()=>{var a;return!!(((a=e==null?void 0:e.searchTerm)==null?void 0:a.value)||"").trim()},n.term=()=>{var a;return(((a=e==null?void 0:e.searchTerm)==null?void 0:a.value)||"").trim()},n.accessors=t,n}function ca(e,t){if(!t.active())return e;const o=e.filter(t.exact);if(o.length)return o;const n=t.term(),a=new Set;for(const r of t.accessors)for(const i of e){const l=r(i);l!=null&&l!==""&&a.add(String(l))}const s=new Set(Xu(n,[...a],{threshold:.4}));if(s.size){const r=e.filter(i=>t.accessors.some(l=>{const c=l(i);return c!=null&&s.has(String(c))}));if(r.length)return r}return e.filter(t)}function Sv(e,t,o,n,a){return(e||[]).map(s=>{var l,c;let r,i;if(s.kind==="count")r=t.length,s.showDelta&&(i=Math.max(0,o.length-t.length));else if(s.kind==="sum")r=t.reduce((u,d)=>u+(Number(d[s.field])||0),0);else if(s.kind==="pct")r=t.length?Math.round(t.filter(s.test).length/t.length*100)+"%":"—";else if(s.kind==="distinct"){const u=s.via?(c=(l=a==null?void 0:a.facets)==null?void 0:l[s.field])==null?void 0:c[s.via]:n[s.field],d=new Set;t.forEach(f=>{const v=u?u(f):f[s.field];v&&d.add(v)}),r=d.size}return{id:s.id,label:s.label,kind:s.kind,value:r,delta:i}})}function Lv(e){const t=de(null),o=de(!1),n=de(!1),a=de(!1),s=de("map"),r=[{k:"map",get l(){return Se("dashboard.map")||"Map"}},{k:"facets",get l(){return Se("dashboard.filters")||"Filters"}},{k:"table",get l(){return Se("dashboard.table")||"Table"}},{k:"charts",get l(){return Se("dashboard.charts")||"Charts"}}];let i=null;const l=de(!1),c=de(!1),u=de(!1);vt(()=>{t.value&&(i=new ResizeObserver(()=>{const x=t.value.clientWidth;o.value=x<760,n.value=x>=760&&x<1180,a.value=x>=760&&x<980}),i.observe(t.value)),e&&e.on("toggleTable",x=>{l.value=!!x}),e&&e.on("toggleFacet",x=>{c.value=!!x}),e&&e.on("toggleRail",x=>{u.value=!!x})}),Dt(()=>i&&i.disconnect());function d(x){const C=x.target.closest("[data-view]");C&&(s.value=C.getAttribute("data-view"))}const f=re(()=>!o.value||s.value==="facets"),v=re(()=>!o.value||s.value==="map"),L=re(()=>!o.value||s.value==="table"),k=re(()=>!o.value||s.value==="charts");return{shell:t,isNarrow:o,slimRail:n,slimFacet:a,mobileView:s,SEG:r,tableCollapsed:l,facetCollapsed:c,railCollapsed:u,setView:d,showFacets:f,showMap:v,showTable:L,showCharts:k}}const Av=e=>String(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40),Pv=e=>String(e).replace(/[%;:*+]/g,t=>"%"+t.charCodeAt(0).toString(16).toUpperCase()).replace(/ /g,"+"),Ev=e=>{try{return decodeURIComponent(String(e).replace(/\+/g,"%20"))}catch{return String(e).replace(/\+/g," ")}};function Cv(e,t){function o(){try{const n=Object.entries(e.filterSet).map(([a,s])=>{const r=typeof t=="function"?t(a,s):null,i=r&&String(r)!==String(s)?Av(r):"";return a+":"+Pv(s)+(i?"*"+i:"")});typeof location<"u"&&history.replaceState(null,"","#f="+n.join(";"))}catch{}}rt(()=>({...e.filterSet}),o,{deep:!0}),vt(()=>{try{const n=typeof location<"u"&&/[#&]f=([^&]+)/.exec(location.hash);if(!n)return;const a=n[1];if(a.startsWith("{")||a.startsWith("%7B")||a.startsWith("%7b")){const s=JSON.parse(decodeURIComponent(a));Object.entries(s).forEach(([r,i])=>e.setFilter(r,i));return}for(const s of a.split(";")){const r=s.indexOf(":");if(r<1)continue;const i=s.slice(0,r),l=Ev(s.slice(r+1).split("*")[0]);i&&l&&e.setFilter(i,l)}}catch{}})}function Nv(e){var k;const t=lv();t.configureHierarchy(e);const o=cv(e.data),n=Ju(e.facets,x=>x.get),a=la(t,ia(e)),s=re(()=>{var p;const x=o.rows.value||[],C=Object.keys(t.filterSet),m=!!(((p=t.searchTerm)==null?void 0:p.value)||"").trim();if(!C.length&&!m)return x;const h=C.length?x.filter(b=>C.every(A=>{const w=n[A];return w?w(b)===t.filterSet[A]:!0})):x;return ca(h,a)}),r=re(()=>Sv(e.kpis,s.value,o.rows.value||[],n,e)),i=Lv(t),l=o.sourceId||Yt.activeSource,c=((k=Yt.sources)==null?void 0:k[l])||{},u=new Zu,d=re(()=>{const x=o.rows.value||[];return x.length?(u.rawData=x.slice(),u.normalizeData(c),u.normalizedData):[]}),f={sources:{[l]:{get features(){return d.value}}}},{labelFor:v}=ra(e,f,l);Cv(t,v);const L=Br({rowStore:o.rowStore,rows:o.rows,selectionSet:t.selectionSet,filterSet:t.filterSet,FACET_ACC:n,dataOpts:e.data,labelFor:v});return no("selectionBus",t),no("dashboardData",o),no("dashboardConfig",e),no("dataStore",f),no("searchSourceId",l),vt(()=>o.load()),{bus:t,data:o,FACET_ACC:n,filteredRows:s,kpis:r,exporter:L,responsive:i}}const Tv={facetW:296,railW:296,tableH:"34%",mapH:340,shellH:562},Rv={facetW:[160,420],railW:[200,520],tableH:[12,70],mapH:[220,1400],shellH:[400,2600]},ep=32,tp=120,At=(e,[t,o])=>Math.min(o,Math.max(t,e)),is=(e,t)=>{const o=parseFloat(String(e));return Number.isFinite(o)?o:t};function Mv(e={}){const{shellRef:t,bus:o=null,isNarrow:n=!1,pageScroll:a=!1,storageKey:s="rd-dashboard-layout-v6"}=e,r={...Tv,...e.defaults||{}},i={...Rv,...e.clamps||{}},l=de(r.facetW),c=de(r.railW),u=de(r.tableH),d=de(r.mapH),f=de(r.shellH),v=de(!1),L=de(!1),k=de(!1),x=()=>!!he(n),C=()=>!!he(a);function m(){const O=t&&t.value;if(!O)return f.value;const V=parseFloat(getComputedStyle(O).getPropertyValue("--rd-shell-h"));if(Number.isFinite(V)&&V>0)return Math.round(V);const D=O.querySelector('[data-region="map"]'),se=O.querySelector('[data-region="table"]');if(!D||!se)return f.value;const me=D.getBoundingClientRect().height+se.getBoundingClientRect().height;return me>0?Math.round(me):f.value}function h(){const O=t&&t.value;O&&(v.value&&(O.style.setProperty("--facet-w",l.value+"px"),O.style.setProperty("--rail-w",c.value+"px"),O.style.setProperty("--table-h",u.value)),L.value&&O.style.setProperty("--rd-map-h",d.value+"px"),k.value&&O.style.setProperty("--rd-shell-h",f.value+"px"))}function p(){const O=t&&t.value;O&&(O.style.removeProperty("--facet-w"),O.style.removeProperty("--rail-w"),O.style.removeProperty("--table-h"),O.style.removeProperty("--rd-map-h"),O.style.removeProperty("--rd-shell-h"))}function b(){try{localStorage.setItem(s,JSON.stringify({facetW:l.value,railW:c.value,tableH:u.value,mapH:d.value,shellH:f.value}))}catch{}}function A(){try{const O=localStorage.getItem(s);if(!O)return!1;const V=JSON.parse(O);return Number.isFinite(V.facetW)&&(l.value=At(V.facetW,i.facetW)),Number.isFinite(V.railW)&&(c.value=At(V.railW,i.railW)),V.tableH!=null&&(u.value=At(is(V.tableH,is(r.tableH,34)),i.tableH)+"%"),v.value=!0,Number.isFinite(V.shellH)&&(f.value=At(V.shellH,i.shellH),k.value=!0),Number.isFinite(V.mapH)&&(d.value=At(V.mapH,i.mapH),L.value=!0),!0}catch{return!1}}function w(){try{localStorage.removeItem(s)}catch{}l.value=r.facetW,c.value=r.railW,u.value=r.tableH,d.value=r.mapH,f.value=r.shellH,v.value=!1,L.value=!1,k.value=!1,p()}const M=de(!1);function U(){if(M.value)return;M.value=!0;const O=t&&t.value;if(O&&O.setAttribute("data-rd-resizing","1"),o&&typeof o.emit=="function")try{o.emit("layoutResizing",!0)}catch{}}function ne(){if(!M.value)return;M.value=!1;const O=t&&t.value;if(O&&O.removeAttribute("data-rd-resizing"),o&&typeof o.emit=="function")try{o.emit("layoutResizing",!1)}catch{}}function B(O,V){if(x())return;const D=t&&t.value;if(!D)return;V.preventDefault();const se=D.getBoundingClientRect(),me=V.clientX,we=l.value,Le=c.value,Ae=V.currentTarget,ke=O==="table"&&C(),oe=O==="shell"&&C();let fe=0,ye=i.mapH[1];if(ke){const ie=D.querySelector('[data-region="map"]'),g=ie?ie.getBoundingClientRect():null;fe=g?g.top:V.clientY-d.value,ye=Math.max(i.mapH[0],f.value-(ep+tp))}const _=V.clientY,P=oe?m():f.value;try{Ae&&Ae.setPointerCapture&&Ae.setPointerCapture(V.pointerId)}catch{}U();let S=0,z=null;function ee(){if(S=0,!z)return;const ie=z;if(z=null,O==="facet")l.value=Math.round(At(we+(ie.clientX-me),i.facetW)),v.value=!0;else if(O==="rail")c.value=Math.round(At(Le-(ie.clientX-me),i.railW)),v.value=!0;else if(ke)d.value=Math.round(At(ie.clientY-fe,[i.mapH[0],ye])),L.value=!0;else if(O==="table"){const g=(se.bottom-ie.clientY)/se.height*100;u.value=Math.round(At(g,i.tableH))+"%",v.value=!0}else oe&&(f.value=Math.round(At(P+(ie.clientY-_),i.shellH)),k.value=!0);h()}function te(ie){z={clientX:ie.clientX,clientY:ie.clientY},S||(S=requestAnimationFrame(ee))}function ce(ie){window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",ce),S&&(cancelAnimationFrame(S),S=0),ee();try{Ae&&Ae.releasePointerCapture&&Ae.releasePointerCapture(ie.pointerId)}catch{}b(),ne()}window.addEventListener("pointermove",te),window.addEventListener("pointerup",ce),window.addEventListener("pointercancel",ce)}const X=O=>B("facet",O),pe=O=>B("rail",O),I=O=>B("table",O),J=O=>B("shell",O),W={facet:16,rail:16,table:24,mapH:24,shellH:24};function G(O,V,D){if(!x()){if(O==="facet")l.value=D?V<0?i.facetW[0]:i.facetW[1]:Math.round(At(l.value+V*W.facet,i.facetW)),v.value=!0;else if(O==="rail")c.value=D?V<0?i.railW[1]:i.railW[0]:Math.round(At(c.value-V*W.rail,i.railW)),v.value=!0;else if(O==="table"&&C()){const se=Math.max(i.mapH[0],f.value-(ep+tp));d.value=D?V<0?i.mapH[0]:se:Math.round(At(d.value+V*W.mapH,[i.mapH[0],se])),L.value=!0}else if(O==="table"){const se=D?V<0?i.tableH[0]:i.tableH[1]:At(is(u.value,is(r.tableH,34))-V*W.table/4,i.tableH);u.value=Math.round(se)+"%",v.value=!0}else O==="shell"&&C()&&(f.value=D?V<0?i.shellH[0]:i.shellH[1]:Math.round(At(f.value+V*W.shellH,i.shellH)),k.value=!0);h(),b()}}function ae(O,V){const D=V.key;let se=0;if(O==="table"||O==="shell"?D==="ArrowUp"?se=-1:D==="ArrowDown"&&(se=1):D==="ArrowLeft"?se=-1:D==="ArrowRight"&&(se=1),se){V.preventDefault(),G(O,se);return}(D==="Home"||D==="End")&&(V.preventDefault(),G(O,D==="Home"?-1:1,!0))}let F=null;return vt(()=>{A()&&h(),o&&typeof o.on=="function"&&(F=o.on("resetLayout",w))}),Dt(()=>{try{F&&F()}catch{}try{ne()}catch{}}),{facetW:l,railW:c,tableH:u,mapH:d,shellH:f,customized:v,resizing:M,startFacetResize:X,startRailResize:pe,startTableResize:I,startShellResize:J,startResize:B,reset:w,applyVars:h,stepResize:G,onResizeKeydown:ae}}const Ov=".search-box{position:relative;display:flex;align-items:center;margin:0 auto;width:100%;color:var(--dx-muted, #6d766e)}.search-box .search-icon{position:absolute;left:12px;pointer-events:none}.search-box input{width:100%;padding:10px 12px 10px 38px;font-size:.95rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:10px;outline:none;box-sizing:border-box}.search-box input:focus{border-color:var(--dx-accent, #92b195);box-shadow:0 0 0 2px var(--dx-accent-weak, rgba(146, 177, 149, .18))}",Fv=["value","placeholder","aria-label"],qr=Sn({__name:"SearchBar",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"Search…"},ariaLabel:{type:String,default:"Search"},maxWidth:{type:String,default:""}},emits:["update:modelValue","search"],setup(e,{emit:t}){const o=e,n=t,a=re(()=>o.maxWidth?{maxWidth:o.maxWidth}:{});function s(r){const i=r.target.value??"";n("update:modelValue",i),n("search",{value:i})}return(r,i)=>(H(),Z("div",{class:"search-box",style:lt(a.value)},[i[0]||(i[0]=T("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[T("circle",{cx:"11",cy:"11",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),T("line",{x1:"16.5",y1:"16.5",x2:"21",y2:"21",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)),T("input",{type:"search",value:e.modelValue,placeholder:e.placeholder,"aria-label":e.ariaLabel,onInput:s},null,40,Fv)],4))}},[["styles",[Ov]]]),Iv=["title","aria-label","disabled"],Hr={__name:"MapControlButton",props:{isDark:{type:Boolean,default:!1},title:{type:String,default:""},active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:["click"],setup(e){return Ot(` -======= -`,jy=Gn({name:"StackLayout",props:{sections:{type:Array,default:()=>[]},title:{type:String,default:""},maxSectionHeight:{type:String,default:""},minSectionHeight:{type:String,default:""}},setup(){Ot(Gy,"stack-layout")},data(){return{_hosts:{},_mounted:{}}},mounted(){for(const e of this.sections||[])e.element&&this.mountSection(e)},methods:{registerHost(e,t){t&&(this._hosts[e]=t)},sectionStyle(e){const t={},o=e.maxHeight||this.maxSectionHeight,n=e.minHeight||this.minSectionHeight,a=!!(o&&n&&o===n);return o&&(t.maxHeight=o,a||(t.overflow="auto")),n&&(t.minHeight=n),Object.keys(t).length?t:null},hasDefiniteHeight(e){const t=e.maxHeight||this.maxSectionHeight,o=e.minHeight||this.minSectionHeight;return!!(t&&o&&t===o)},mountSection(e){if(this._mounted[e.key])return;this._mounted[e.key]=!0;const t=this._hosts[e.key];t&&Dy(e.src).then(()=>Uy(e.element)).then(()=>{if(!customElements.get(e.element))return;const o=document.createElement(e.element),n=e.attrs||{};for(const a in n){const s=n[a];try{o[a]=s}catch{}try{o.setAttribute(a,s==null?"":String(s))}catch{}}t.innerHTML="",t.appendChild(o)}).catch(o=>{const n=o&&o.message||String(o);console.error('[StackLayout] section "'+e.key+'" failed to mount <'+e.element+">"+(e.src?" from "+e.src:"")+": "+n);try{t.innerHTML="";const a=document.createElement("div");a.setAttribute("role","status"),a.style.cssText="box-sizing:border-box;max-width:100%;padding:16px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:#6d766e;background:#fff;border:1px solid #d1d4cd;border-radius:8px;margin:12px 0;overflow-wrap:anywhere;word-break:break-word",a.textContent="Could not load <"+e.element+">"+(e.src?" from "+e.src:"")+" — "+n,t.appendChild(a)}catch{}})}}}),zy={class:"stl"},By={key:0,class:"stl-top"},Vy={class:"stl-brand"},qy={key:0,class:"stl-title"},Hy={class:"stl-meta"},Wy={class:"stl-stack"},Ky={key:0,class:"stl-sec-head"},Yy={class:"stl-sec-title"},Xy={key:0,class:"stl-sec-sub"},Zy={key:2,class:"stl-slot"},Jy={class:"stl-tail"};function Qy(e,t,o,n,a,s){return W(),X("div",zy,[e.$slots.brand||e.$slots.meta||e.title?(W(),X("header",By,[T("span",Vy,[Ko(e.$slots,"brand")]),e.title?(W(),X("b",qy,ue(e.title),1)):Me("",!0),T("span",Hy,[Ko(e.$slots,"meta")])])):Me("",!0),T("div",Wy,[(W(!0),X(Ce,null,tt(e.sections,r=>(W(),X("section",{key:r.key,class:qe(["stl-sec",{"stl-sec-fill":e.hasDefiniteHeight(r)}]),style:lt(e.sectionStyle(r))},[r.title?(W(),X("div",Ky,[T("b",Yy,ue(r.title),1),r.sub?(W(),X("span",Xy,ue(r.sub),1)):Me("",!0)])):Me("",!0),r.element?(W(),X("div",{key:1,class:"stl-host",ref_for:!0,ref:i=>e.registerHost(r.key,i)},null,512)):(W(),X("div",Zy,[Ko(e.$slots,"section-"+r.key)]))],6))),128)),T("div",Jy,[Ko(e.$slots,"default")])])])}const ev=Sn(jy,[["render",Qy],["styles",[Oy]]]);function ss(e,t){if(!t.includes("."))return e==null?void 0:e[t];const[o,...n]=t.split(".");let a=e==null?void 0:e[o];for(const s of n)a=a==null?void 0:a[s];return a}function tv(e,t){const o=e.toLowerCase(),n=t.toLowerCase(),a=[];let s=0,r=o.indexOf(n,s);for(;r!==-1;)a.push([r,r+n.length-1]),s=r+n.length,r=o.indexOf(n,s);return a}function Yu(e,t,o){const n=e.toLowerCase(),a=t.toLowerCase(),s=a.length;if(!s||!n.length)return null;const r=Math.min(2,Math.floor(o*s));if(r<=0)return null;let i=new Array(n.length+1).fill(0),l=new Array(n.length+1);for(let f=1;f<=s;f++){l[0]=f;for(let v=1;v<=n.length;v++){const L=i[v-1]+(a[f-1]===n[v-1]?0:1);l[v]=Math.min(L,i[v]+1,l[v-1]+1)}[i,l]=[l,i]}let c=1/0,u=-1;for(let f=1;f<=n.length;f++)i[f]r?null:[[Math.max(0,u-s),u-1]]}function ov(e,t){const o=String(e??""),n=String(t??"").trim();return n?o?o.toLowerCase().includes(n.toLowerCase()):!1:!0}function Xu(e,t,{threshold:o=.4}={}){const n=String(e??"").trim().toLowerCase();if(!n)return[];const a=Math.min(2,Math.floor(o*n.length)),s=[];for(const i of t){if(!i)continue;const l=String(i).toLowerCase();if(Math.abs(l.length-n.length)>a)continue;const c=nv(l,n,a);c<=a&&s.push({value:i,distance:c})}if(!s.length)return[];const r=Math.min(...s.map(i=>i.distance));return s.filter(i=>i.distance===r).map(i=>i.value)}function nv(e,t,o){if(e===t)return 0;let n=Array.from({length:t.length+1},(s,r)=>r);const a=new Array(t.length+1);for(let s=1;s<=e.length;s++){a[0]=s;let r=s;for(let i=1;i<=t.length;i++)a[i]=Math.min(n[i-1]+(e[s-1]===t[i-1]?0:1),n[i]+1,a[i-1]+1),a[i]o)return o+1;for(let i=0;i<=t.length;i++)n[i]=a[i]}return n[t.length]}function av(e,t,{threshold:o=.4,minMatchCharLength:n=3}={}){const a=String(e??""),s=String(t??"").trim();return s?a?a.toLowerCase().includes(s.toLowerCase())?!0:o===0||s.length({item:c,matches:[]}));if(o.length!t[n[a]].includes(r))):s}}return t}function iv(){const e=Bo({}),t=new Set,o=pe(0),n=pe(""),a=new Map;function s(h,m){return a.has(h)||a.set(h,new Set),a.get(h).add(m),()=>{var p;return(p=a.get(h))==null?void 0:p.delete(m)}}function r(h,m){var p;(p=a.get(h))==null||p.forEach(b=>{try{b(m)}catch{}})}let i={};function l(h){i=rv(h)}function c(h,m){if(m==null){delete e[h];for(const p of i[h]||[])delete e[p]}else e[h]=m;r("filter",e)}function u(){Object.keys(e).forEach(h=>delete e[h]),r("filter",e)}function d(h){n.value=h==null?"":String(h),r("search",n.value)}function f(){o.value++,r("select",t)}function v(h){t.has(h)?t.delete(h):t.add(h),f()}function L(){t.size&&(t.clear(),f())}function k(h,{additive:m=!0}={}){let p=!1;m||t.size&&(t.clear(),p=!0);for(const b of h)t.has(b)||(t.add(b),p=!0);return p&&f(),p}function x(h){let m=!1;for(const p of h)t.delete(p)&&(m=!0);return m&&f(),m}function C(h){const m=h instanceof Set?h:new Set(h);if(m.size===t.size){let p=!0;for(const b of m)if(!t.has(b)){p=!1;break}if(p)return!1}t.clear();for(const p of m)t.add(p);return f(),!0}return{filterSet:e,selectionSet:t,selectionVersion:o,searchTerm:n,on:s,emit:r,setFilter:c,clearFilters:u,setSearch:d,configureHierarchy:l,toggleSelect:v,clearSelection:L,selectMany:k,deselectMany:x,setSelection:C}}const jr={};function zr(){return typeof window<"u"&&window.MAP_APP_API_URL||typeof{url:tn&&tn.tagName.toUpperCase()==="SCRIPT"&&tn.src||new URL("dashboard-plus-grid.js",document.baseURI).href}<"u"&&(jr==null?void 0:jr.VITE_API_BASE_URL)||""}const Yt={_meta:{_comment:"Single source of truth for data-source connections across all doxa-maps bundles.",_comment_token:"Mapbox access token is fetched at runtime from window.MAP_TOKEN_URL (same modular pattern as window.MAP_APP_API_URL). Not hardcoded to any host — set mapboxTokenUrl below or override window.MAP_TOKEN_URL on the host page.",mapboxTokenUrl:"window.MAP_TOKEN_URL"},activeSource:"pray-tools",sources:{"pray-tools":{id:"pray-tools",name:"Prayer.Tools API",type:"rest-api",description:"pray.doxa.life live API — people-group prayer, engagement, and adoption data. Base URL read from window.MAP_APP_API_URL or VITE_API_BASE_URL at runtime.",endpoints:{bulk:"/api/people-groups/list",detail:"/api/people-groups/detail/{slug}",statistics:"/api/people-groups/statistics"},queryParams:{lang:"en"},defaultFields:["slug","name","latitude","longitude","wagf_region","wagf_block","wagf_member","rop1","imb_reg_of_people_2","imb_reg_of_people_25","imb_reg_of_people_3","country_code","religion","population","has_photo","image_url","people_praying","people_committed","adopted_by_churches","engagement_status","imb_gsec","primary_language","imb_language_family","imb_language_class","imb_language_speakers"],pollFields:["slug","people_praying"],pollInterval:3e5,fallbackSourceId:null,fieldMappings:{uniqueId:"slug",slug:"slug",name:"name",latitude:"latitude",longitude:"longitude",wagfRegion:"wagf_region",doxaRegion:"wagf_region",wagfBlock:"wagf_block",wagfMember:"wagf_member",affinityBlock:"rop1",countryIso:"country_code",religion:"religion",religionCode:"religion",population:"population",hasPhoto:"has_photo",imageUrl:"image_url",photoUrl:"image_url",peoplePraying:"people_praying",peopleCommitted:"people_committed",engagementStatus:"engagement_status",adoptionStatus:"adopted_by_churches",language:"primary_language",cluster:"imb_reg_of_people_2",peopleGroup:"imb_reg_of_people_25",peopleGroupCountry:"imb_reg_of_people_3",languageFamily:"imb_language_family",languageClass:"imb_language_class",languageSpeakers:"imb_language_speakers"},imageConfig:{useField:"imageUrl",fallbackField:null,fallbackUrlTemplate:null,placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg",useSvgPlaceholder:!0}},"doxa-csv":{id:"doxa-csv",name:"DOXA People Groups CSV",type:"csv",path:"assets/data/Joshua-project-ids-Doxa-1439.csv",description:"People groups dataset from DOXA / Joshua Project",fieldMappings:{uniqueId:"ROP3",peopleGroupId:"ROP3",countryCode:"ROG",peopleId3:"PeopleID3",name:"Name",displayName:"NmDisp",alternateName:"NmAlt",description:"PeopleDesc",locationDescription:"LocationDe",country:"Ctry",countryIso:"ISOalpha3",region:"Regn",subRegion:"RegnSub",wagfRegion:"WAGF Region",doxaRegion:"WAGF Region",wagfBlock:"WAGF BLOCK",affinityBloc:"Affbloc",affinityBlock:"ROP1",affinityCode:"AffCd",affinityName:"Aff",peopleCluster:"PplClstr",ethneName:"Ethne",latitude:"Latitude",longitude:"Longitude",population:"Pop",populationClass:"PopCls",status:"Status",engagementStatus:"EngStat",evangelicalLevel:"EvngLvl",gsec:"GSEC",gsecBrief:"GSECbrf",gsecLong:"GSEClng",spiScore:"SPI",spiDescription:"SPIdesc",language:"Lang",languageCode:"ROL",languageFamily:"LangFamily",religion:"Rlgn",religionCode:"ROR",religionDescription:"RORdesc",religionBase:"RlgnBs",religionDiv:"RlgnDiv",bible:"Bible",jesusFilm:"Jesus",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories",resourcesTotal:"ResTot",bibleLevel:"LvlBible",yearPublished:"YrPub",photoCredit:"PicCrdt",photoUrl:"PicURL",hasPhoto:"Photo",isIndigenous:"Indigenous"},imageConfig:{useField:"photoUrl",fallbackField:"peopleId3",fallbackUrlTemplate:"https://joshuaproject.net/assets/media/profiles/photos/p{peopleId3}.jpg",placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg"}}},systemFields:{uniqueId:{description:"Unique identifier per row (slug for API, ROP3+ROG for CSV)",required:!0},peopleGroupId:{description:"People group ID — same group can appear in multiple countries",required:!0},name:{description:"People group display name",required:!0},latitude:{description:"Latitude coordinate for map pin",required:!0},longitude:{description:"Longitude coordinate for map pin",required:!0},engagementStatus:{description:"Boolean — true if engaged_status = 'engaged'",required:!1},adoptionStatus:{description:"Boolean — true if adopted_by_churches > 0",required:!1},peoplePraying:{description:"Number of people currently praying for this group — from pray-tools API",required:!1},peopleCommitted:{description:"Raw count of committed workers for this group — source of engagementStatus",required:!1},languageFamily:{description:"Language family name",required:!1},religion:{description:"Primary religion",required:!1},population:{description:"Population count",required:!1},doxaRegion:{description:"WAGF/DOXA region name",required:!1},photoUrl:{description:"URL to people group photo",required:!1},description:{description:"People group description text",required:!1}}};function lv(e={}){const t=pe(!1),o=pe(null),n=On(new Map),a=On([]),s=pe(null),r=pe(0),i=e.source||Yt.activeSource;async function l(){var c,u,d,f;t.value=!0,o.value=null;try{const v=((c=Yt==null?void 0:Yt.sources)==null?void 0:c[i])||{},L=zr(),k=((u=v.endpoints)==null?void 0:u.bulk)||"/api/people-groups/list",x=(v.defaultFields||[]).join(","),C=((d=v.queryParams)==null?void 0:d.lang)||"en",h=`${L}${k}?${x?`fields=${x}&`:""}lang=${C}&_=${Date.now()}`,m=await fetch(h,{cache:"no-store"});if(!m.ok)throw new Error(`list HTTP ${m.status}`);const p=await m.json(),b=Array.isArray(p)?p:p.posts||p.data||p.results||[],A=new Map;for(const M of b){const U=M&&(M.slug||M.id);U&&A.set(U,M)}n.value=A,a.value=b,r.value=A.size;const w=((f=v.endpoints)==null?void 0:f.statistics)||"/api/people-groups/statistics";try{const M=await fetch(`${L}${w}?_=${Date.now()}`,{cache:"no-store"});M.ok&&(M.headers.get("content-type")||"").includes("json")&&(s.value=await M.json())}catch{}r.value===0&&(o.value="No records loaded from the live API.")}catch(v){o.value=v&&v.message?v.message:String(v)}finally{t.value=!1}}return{loading:t,error:o,rowStore:n,rows:a,stats:s,total:r,load:l,sourceId:i}}const rs=["slug","name","imb_alternate_name","doxa_wagf_uid","imb_uid","imb_peid","imb_pgid","joshua_project_id","imb_affinity_code","latitude","longitude","country_code","region","wagf_region","wagf_block","wagf_member","imb_subregion","location_description","rop1","imb_reg_of_people_2","imb_reg_of_people_25","imb_reg_of_people_3","primary_language","imb_language_family","imb_language_class","imb_language_speakers","work_in_local_language","imb_is_indigenous","religion","imb_reg_of_religion_3","imb_reg_of_religion_4","population","imb_population_class","believers_count","evangelical_pct","imb_evangelical_level","imb_congregation_existing","people_praying","people_committed","committed_duration","adopted_by_churches","adopted_by_count","adopted_by_names","engagement_status","status","reason_engaged","reason_unlisted","global_start_date","workers_long_term","imb_church_planting","disciple_and_church_multiplication","imb_bible_available","imb_bible_translation_level","imb_bible_year_published","imb_bible_stories_available","imb_audio_scripture_available","imb_gospel_recordings_available","imb_jesus_film_available","imb_radio_broadcast_available","imb_total_resources_available","imb_gsec","imb_lostness_priority_index","imb_strategic_priority_index","has_photo","image_url","picture_credit","imb_people_description"];function Br({rowStore:e,rows:t,selectionSet:o,filterSet:n,FACET_ACC:a,dataOpts:s={},labelFor:r=null}){let i=null,l=null;function c(){return l||(l=(async()=>{var Q,H,G;const b=s.source||Yt.activeSource,A=((Q=Yt==null?void 0:Yt.sources)==null?void 0:Q[b])||{},w=Array.isArray(A.exportFields)&&A.exportFields.length?A.exportFields:rs,M=((H=A.endpoints)==null?void 0:H.bulk)||"/api/people-groups/list",U=((G=A.queryParams)==null?void 0:G.lang)||"en",ne=`${zr()}${M}?fields=${w.join(",")}&lang=${U}`,B=await fetch(ne,{cache:"no-store"});if(!B.ok)throw new Error(`export list HTTP ${B.status}`);const Y=await B.json(),ge=Array.isArray(Y)?Y:Y.posts||Y.data||Y.results||[],I=new Map;for(const ie of ge){const F=ie&&(ie.slug||ie.id);F&&I.set(F,ie)}return i=I,I})().catch(b=>{throw l=null,b}),l)}function u(b){if(!i)return b;const A=i.get(b&&(b.slug||b.id));return A?{...b,...A}:b}function d(){if(o&&o.size)return[...o].map(A=>e.value.get(A)).filter(Boolean);const b=Object.keys(n);return b.length?(t.value||[]).filter(A=>b.every(w=>{const M=a[w];return M?M(A)===n[w]:!0})):t.value||[]}function f(){return o&&o.size?`selection (${o.size})`:Object.keys(n).length?"filter result":"all"}function v(b){return b==null?b:Array.isArray(b)?b.map(A=>v(A)).filter(A=>A!==""&&A!==null&&A!==void 0).join(" | "):typeof b=="object"?b.label??b.value??b.text??b.name??b.link??JSON.stringify(b):b}function L(b){const A={};for(const w of Object.keys(b))A[w]=v(b[w]);return A}function k(b){let A=b==null?"":String(b);return/^[=+\-@]/.test(A)&&(A="'"+A),/[",\n\r]/.test(A)&&(A='"'+A.replace(/"/g,'""')+'"'),A}function x(){const b=d().map(u).map(L),A=b.reduce((B,Y)=>(Object.keys(Y).forEach(ge=>B.add(ge)),B),new Set),w=[...rs.filter(B=>A.has(B)),...[...A].filter(B=>!rs.includes(B))],M=Object.entries(n).map(([B,Y])=>`${B}=${r?r(B,Y):Y}`).join(" | ")||"none",U=`# Research Dashboard export — scope: ${f()}; filters: ${M}; rows: ${b.length}`;return[w.map(k).join(","),...b.map(B=>w.map(Y=>k(B[Y])).join(",")),U].join(`\r -`)}const C={rows:0,clipboard:!1,downloaded:!1,at:0,fields:0,wide:!1};function h(){const b=x(),A=d().length,w=(b.split(`\r -`)[0]||"").split(",").length;try{typeof window<"u"&&(window.__rdashLastCsv=b)}catch{}let M=!1,U=!1;try{typeof navigator<"u"&&navigator.clipboard&&navigator.clipboard.writeText&&(navigator.clipboard.writeText(b).catch(()=>{}),M=!0)}catch{}try{const ne=new Blob([b],{type:"text/csv;charset=utf-8"}),B=URL.createObjectURL(ne),Y=document.createElement("a");Y.href=B,Y.download="research-dashboard.csv",Y.style.display="none",document.body.appendChild(Y),Y.click(),U=!0,setTimeout(()=>{try{URL.revokeObjectURL(B),Y.remove()}catch{}},200)}catch{}Object.assign(C,{rows:A,clipboard:M,downloaded:U,fields:w,wide:!!i,at:typeof performance<"u"?performance.now():0});try{window.__rdashExportStatus={rows:A,clipboard:M,downloaded:U,fields:w,wide:!!i}}catch{}return{csv:b,rows:A,clipboard:M,downloaded:U,fields:w,wide:!!i}}async function m(){try{await c()}catch{}return h()}function p(){try{return c()}catch{return null}}return{exportCsv:h,exportCsvAsync:m,buildCsv:x,pickRows:d,scopeLabel:f,lastExport:C,prefetchExportFields:p,EXPORT_FIELDS:rs}}const cv="#6b7280";function uv(){const e=as(Lo.AFFINITY_BLOCK);return e&&e.propertyKey==="affinityBlock"&&e.palette?e.palette:{}}function pv(e,t){const o=uv();return e&&o[e]?o[e]:cv}function dv(e){return(e==null?void 0:e.properties)||e||{}}function Vr(e){return e&&typeof e=="object"&&"label"in e?e.label||e.value||"":e}function gv(e){var t;return String(e.affinityBlock||Vr((t=e._raw)==null?void 0:t.rop1)||"").trim()}function fv(e){var t;return String(e.affinityBlockLabel||((t=e._raw)!=null&&t.rop1&&typeof e._raw.rop1=="object"?e._raw.rop1.label:"")||"").trim()}function hv(e){var t;return String(e.cluster||Vr((t=e._raw)==null?void 0:t.imb_reg_of_people_2)||"").trim()}function mv(e){var t;return String(e.clusterLabel||((t=e._raw)!=null&&t.imb_reg_of_people_2&&typeof e._raw.imb_reg_of_people_2=="object"?e._raw.imb_reg_of_people_2.label:"")||"").trim()}function $v(e){var t;return String(e.peopleGroup||Vr((t=e._raw)==null?void 0:t.imb_reg_of_people_25)||"").trim()}function bv(e){var t;return String(e.peopleGroupLabel||((t=e._raw)!=null&&t.imb_reg_of_people_25&&typeof e._raw.imb_reg_of_people_25=="object"?e._raw.imb_reg_of_people_25.label:"")||e.name||"").trim()}function _v(e){var t;return String(e.uniqueId||e.slug||((t=e._raw)==null?void 0:t.slug)||"").trim()}function yv(e){var t;return String(e.name||e.displayName||((t=e._raw)==null?void 0:t.name)||"").trim()}function vv(e){var o;const t=Number(e.population??e.populationNum??((o=e._raw)==null?void 0:o.population)??0);return Number.isFinite(t)?t:0}function kv(e){return String(e.countryName||e.country||e.countryIsoLabel||e.countryIso||"").trim()}function wv(e){const t=re(()=>{const s=e&&e.value||[],r=new Map;for(const i of s){const l=dv(i),c=gv(l),u=fv(l)||c||"— Unknown —",d=hv(l),f=mv(l)||d||"— Unknown —",v=$v(l),L=bv(l)||v||"— Unknown —",k=_v(l),x=yv(l)||k,C=vv(l),h=kv(l);if(!k)continue;let m=r.get(c||"__unknown__");m||(m={code:c,label:u,count:0,pop:0,memberIds:[],clusters:new Map},r.set(c||"__unknown__",m)),m.count+=1,m.pop+=C,m.memberIds.push(k);let p=m.clusters.get(d||"__unknown__");p||(p={code:d,label:f,count:0,pop:0,memberIds:[],peopleGroups:new Map},m.clusters.set(d||"__unknown__",p)),p.count+=1,p.pop+=C,p.memberIds.push(k);let b=p.peopleGroups.get(v||"__unknown__");b||(b={code:v,label:L,count:0,pop:0,memberIds:[],instances:[]},p.peopleGroups.set(v||"__unknown__",b)),b.count+=1,b.pop+=C,b.memberIds.push(k),b.instances.push({id:k,name:x,country:h,pop:C})}return r}),o=s=>s&&s.length?["in",["get","uniqueId"],["literal",s]]:["==",["get","uniqueId"],"__none__"],n=re(()=>{const s=t.value,r=[];for(const i of s.values()){const l=pv(i.code,i.label),c={id:`bloc:${i.code||i.label}`,label:i.label,color:l,count:i.count,pop:i.pop,filter:o(i.memberIds),children:[]};for(const u of i.clusters.values()){const d={id:`cluster:${i.code}__${u.code||u.label}`,label:`${u.label} (Cluster)`,color:l,count:u.count,pop:u.pop,filter:o(u.memberIds),children:[]};for(const f of u.peopleGroups.values()){const v={id:`pg:${i.code}__${u.code}__${f.code||f.label}`,label:`${f.label} (PG)`,color:l,count:f.count,pop:f.pop,filter:o(f.memberIds),children:[]};f.instances.sort((L,k)=>k.pop-L.pop||L.country.localeCompare(k.country));for(const L of f.instances)v.children.push({id:`pgic:${L.id}`,label:`${L.country?`${L.name}, ${L.country}`:L.name} (PGIC)`,color:l,count:1,pop:L.pop,filter:["==",["get","uniqueId"],L.id],children:[]});d.children.push(v)}d.children.sort((f,v)=>v.count-f.count||v.pop-f.pop),c.children.push(d)}c.children.sort((u,d)=>d.count-u.count||d.pop-u.pop),r.push(c)}return r.sort((i,l)=>l.count-i.count||l.pop-i.pop),r});function a(s){if(typeof window>"u"||typeof window.CustomEvent!="function")return;if(!s){window.dispatchEvent(new CustomEvent("legend:highlight",{detail:{kind:null}}));return}const r=String(s.id||""),i={kind:null,label:s.label,filterExpr:s.filter};r.startsWith("bloc:")?i.kind="bloc":r.startsWith("cluster:")?i.kind="cluster":r.startsWith("pg:")?i.kind="people-group":r.startsWith("pgic:")&&(i.kind="people-group-in-country"),window.dispatchEvent(new CustomEvent("legend:highlight",{detail:i}))}return{aggregated:t,affinityTree:n,highlight:a}}function ra(e,t,o){const n=re(()=>{const l=t&&o&&t.sources&&t.sources[o];return l&&l.features||[]}),{aggregated:a}=wv(n),s=re(()=>{const l=(e&&e.facetRail||[]).find(c=>c.tree==="affinity");return l&&l.drill||[]}),r=re(()=>{const[l,c,u]=s.value,d=new Map,f=new Map,v=new Map;for(const k of a.value.values()){k.code&&d.set(k.code,k.label);for(const x of k.clusters.values()){x.code&&f.set(x.code,x.label);for(const C of x.peopleGroups.values())C.code&&v.set(C.code,C.label)}}const L={};return l&&(L[l]=d),c&&(L[c]=f),u&&(L[u]=v),L});function i(l,c){const u=r.value[l];return u&&u.get(c)||c}return{normalizedFeatures:n,affinityAgg:a,affinityLabelMaps:r,treeFacetKeys:s,labelFor:i}}class Zu{constructor(t={}){this.sourcesConfig=null,this.activeSource=null,this.rawData=[],this.normalizedData=[],this.dataByUniqueId=new Map,this.baseUrl=typeof window<"u"&&window.MAP_APP_BASE_URL||"./",this.locale=t.locale||null,this.cache=new Map,this.cacheEnabled=!0,this.cacheTTL=5*60*1e3}async init(){return this.sourcesConfig=Yt,this.sourcesConfig}getActiveSourceId(){var t;return((t=this.sourcesConfig)==null?void 0:t.activeSource)||"doxa-csv"}getSourceConfig(t){var o,n;return(n=(o=this.sourcesConfig)==null?void 0:o.sources)==null?void 0:n[t]}async setActiveSource(t){const o=this.getSourceConfig(t);if(!o)throw new Error(`Source not found: ${t}`);if(this.activeSource=o,this.cacheEnabled&&this.cache.has(t)){const n=this.cache.get(t);return this.normalizedData=n.normalizedData,this.dataByUniqueId=n.dataByUniqueId,this.normalizedData}return o.type==="csv"?await this.loadCSVData(o):o.type==="api"?await this.loadAPIData(o):o.type==="rest-api"&&await this.loadRestApiData(o),this.cacheEnabled&&this.cache.set(t,{normalizedData:this.normalizedData,dataByUniqueId:this.dataByUniqueId,timestamp:Date.now()}),this.normalizedData}clearCache(t=null){t?this.cache.delete(t):this.cache.clear()}isCached(t){return this.cache.has(t)}async loadActiveSource(){return this.sourcesConfig||await this.init(),this.setActiveSource(this.getActiveSourceId())}parseCSV(t){const o=[],n=[];let a="",s=!1,r=[],i=!0;for(let l=0;l0){if(r.push(a.trim()),a="",i)n.push(...r),i=!1;else if(r.length>1){const d={};n.forEach((f,v)=>{d[f]=r[v]||""}),o.push(d)}r=[]}}else a+=c}if((a||r.length>0)&&(r.push(a.trim()),!i&&r.length>1)){const l={};n.forEach((c,u)=>{l[c]=r[u]||""}),o.push(l)}return{headers:n,data:o}}async loadCSVData(t){try{const n=await(await fetch(this.baseUrl+t.path)).text(),{headers:a,data:s}=this.parseCSV(n);return this.rawData=s,this.validateFieldMappings(t.fieldMappings,a,t.name),this.normalizeData(t),this.normalizedData}catch(o){throw console.error("Failed to load CSV data:",o),o}}validateFieldMappings(t,o,n){const a=new Set(o.map(r=>r.trim())),s=[];for(const[r,i]of Object.entries(t||{}))if(Array.isArray(i))for(const l of i)a.has(l)||s.push({systemField:r,sourceField:l,isComposite:!0});else i&&!a.has(i)&&s.push({systemField:r,sourceField:i,isComposite:!1});s.length>0&&console.warn(`[DataSourceManager] ${n}: missing CSV columns:`,s)}async loadAPIData(t){try{const n=await(await fetch(t.url||t.endpoint)).json();return this.rawData=Array.isArray(n)?n:n.posts||n.data||n.peopleGroups||n.results||[],this.normalizeData(t),this.normalizedData}catch(o){throw console.error("Failed to load API data:",o),o}}async loadRestApiData(t){var l,c;const o=zr(),n=((l=t.endpoints)==null?void 0:l.bulk)||"/api/people-groups/list",a=((c=t.defaultFields)==null?void 0:c.join(","))||"",s=[];a&&s.push(`fields=${a}`);const r={...t.queryParams||{}};this.locale&&(r.lang=this.locale);for(const[u,d]of Object.entries(r))s.push(`${u}=${encodeURIComponent(d)}`);const i=`${o}${n}?${s.join("&")}`;try{const u=await fetch(i);if(!u.ok)throw new Error(`HTTP ${u.status}: ${u.statusText}`);const d=u.headers.get("content-type")||"";if(!d.includes("application/json"))throw new Error(`API returned "${d}" instead of JSON. Server at ${o} may be down or misconfigured.`);const f=await u.json();return this.rawData=Array.isArray(f)?f:f.posts||f.data||f.results||[],this.normalizeData(t),this.normalizedData}catch(u){throw console.error(`[rest-api] Failed to load from ${t.id}:`,u),u}}normalizeData(t){const o=t.fieldMappings||{};this.normalizedData=[],this.dataByUniqueId=new Map;for(const n of this.rawData){const a={};for(const[l,c]of Object.entries(o))if(Array.isArray(c)){const u=c.map(d=>this.getFieldValue(n,d));a[l]=u.join("_")}else a[l]=this.getFieldValue(n,c);if(a.latitude=parseFloat(a.latitude)||0,a.longitude=parseFloat(a.longitude)||0,a.latitude===0&&a.longitude===0)continue;a.populationNum=this.parsePopulation(a.population),a.imageUrl=this.getImageUrl(a,t.imageConfig);const s=a.engagementStatus;s!=null&&(typeof s=="object"&&"value"in s?(a.engagementStatusLabel=s.label||s.value,a.engagementStatus=s.value==="engaged"):a.engagementStatus=s===!0||s===1||s==="1"||s==="true"||typeof s=="number"&&s>0||typeof s=="string"&&parseInt(s,10)>0);const r=a.adoptionStatus;r!=null&&(a.adoptionStatus=r===!0||r===1||r==="1"||r==="true"||typeof r=="object"&&!!(r!=null&&r.value)||typeof r=="number"&&r>0||typeof r=="string"&&parseInt(r,10)>0);const i=["doxaRegion","wagfRegion","wagfBlock","wagfMember","affinityBlock","cluster","peopleGroup","countryIso","religion","religionCode"];for(const l of i){const c=a[l];c!=null&&typeof c=="object"&&"value"in c?(a[l+"Label"]=c.label||c.value,a[l]=c.value):c!=null&&typeof c=="string"&&c!==""&&(a[l+"Label"]||(a[l+"Label"]=c))}a.countryName=a.countryIsoLabel||a.country||a.countryIso||"",a.religionName=a.religionLabel||a.religion||"",a._raw=n,this.normalizedData.push(a),this.dataByUniqueId.set(a.uniqueId,a)}this.rawData=null}getFieldValue(t,o){if(!o)return"";if(t[o]!==void 0)return t[o];const n=o.trim();if(t[n]!==void 0)return t[n];for(const a of Object.keys(t))if(a.trim()===n||a.includes(n)||n.includes(a.trim()))return t[a];return""}parsePopulation(t){if(!t)return 0;const o=String(t).replace(/,/g,"").trim(),n=parseInt(o,10);return isNaN(n)?0:n}getImageUrl(t,o){if(!o)return"";const n=o.placeholderUrl||"",a=t[o.useField];return a&&String(a).trim()&&!String(a).includes("NoImageAvailable")?a:n}getData(){return this.normalizedData}getByUniqueId(t){return this.dataByUniqueId.get(t)}getByCoordinates(t,o,n=1e-4){return this.normalizedData.find(a=>Math.abs(a.latitude-t)o.peopleGroupId===t)}getLanguageFamilies(){const t=new Set;return this.normalizedData.forEach(o=>{o.languageFamily&&t.add(o.languageFamily)}),Array.from(t).sort()}getDataByLanguageFamily(){const t={};return this.normalizedData.forEach(o=>{const n=o.languageFamily||"Unknown";t[n]||(t[n]=[]),t[n].push(o)}),t}getDataByRegion(){const t={};return this.normalizedData.forEach(o=>{const n=o.doxaRegion||"Unknown";t[n]||(t[n]=[]),t[n].push(o)}),t}getStats(){return{totalRecords:this.normalizedData.length,withPeopleId3:this.normalizedData.filter(t=>t.peopleId3).length,withPhotos:this.normalizedData.filter(t=>t.imageUrl&&!String(t.imageUrl).includes("NoImageAvailable")).length,languageFamilies:this.getLanguageFamilies().length,countries:new Set(this.normalizedData.map(t=>t.country)).size,regions:Object.keys(this.getDataByRegion()).length}}}new Zu;const Ju=(e,t)=>Object.fromEntries(Object.entries(e||{}).map(([o,n])=>[o,t(n,o)])),Qu=e=>e==null?"—":Number(e).toLocaleString("en-US");function ia(e){const t=Ju(e.facets,a=>a.get),o=Object.fromEntries((e.columns||[]).map(a=>[a.key,a.get])),n=Array.isArray(e.searchKeys)?e.searchKeys:null;return n?n.map(a=>t[a]||o[a]).filter(a=>typeof a=="function"):(e.columns||[]).filter(a=>a.type!=="num"&&typeof a.get=="function").map(a=>a.get)}function la(e,t){const o=(a,s)=>{var i;const r=(((i=e==null?void 0:e.searchTerm)==null?void 0:i.value)||"").trim();if(!r)return!0;for(const l of t){const c=l(a);if(c!=null&&s(String(c),r,{threshold:.4,minMatchCharLength:3}))return!0}return!1},n=a=>o(a,av);return n.exact=a=>o(a,ov),n.active=()=>{var a;return!!(((a=e==null?void 0:e.searchTerm)==null?void 0:a.value)||"").trim()},n.term=()=>{var a;return(((a=e==null?void 0:e.searchTerm)==null?void 0:a.value)||"").trim()},n.accessors=t,n}function ca(e,t){if(!t.active())return e;const o=e.filter(t.exact);if(o.length)return o;const n=t.term(),a=new Set;for(const r of t.accessors)for(const i of e){const l=r(i);l!=null&&l!==""&&a.add(String(l))}const s=new Set(Xu(n,[...a],{threshold:.4}));if(s.size){const r=e.filter(i=>t.accessors.some(l=>{const c=l(i);return c!=null&&s.has(String(c))}));if(r.length)return r}return e.filter(t)}function xv(e,t,o,n,a){return(e||[]).map(s=>{var l,c;let r,i;if(s.kind==="count")r=t.length,s.showDelta&&(i=Math.max(0,o.length-t.length));else if(s.kind==="sum")r=t.reduce((u,d)=>u+(Number(d[s.field])||0),0);else if(s.kind==="pct")r=t.length?Math.round(t.filter(s.test).length/t.length*100)+"%":"—";else if(s.kind==="distinct"){const u=s.via?(c=(l=a==null?void 0:a.facets)==null?void 0:l[s.field])==null?void 0:c[s.via]:n[s.field],d=new Set;t.forEach(f=>{const v=u?u(f):f[s.field];v&&d.add(v)}),r=d.size}return{id:s.id,label:s.label,kind:s.kind,value:r,delta:i}})}function Sv(e){const t=pe(null),o=pe(!1),n=pe(!1),a=pe(!1),s=pe("map"),r=[{k:"map",get l(){return Se("dashboard.map")||"Map"}},{k:"facets",get l(){return Se("dashboard.filters")||"Filters"}},{k:"table",get l(){return Se("dashboard.table")||"Table"}},{k:"charts",get l(){return Se("dashboard.charts")||"Charts"}}];let i=null;const l=pe(!1),c=pe(!1),u=pe(!1);vt(()=>{t.value&&(i=new ResizeObserver(()=>{const x=t.value.clientWidth;o.value=x<760,n.value=x>=760&&x<1180,a.value=x>=760&&x<980}),i.observe(t.value)),e&&e.on("toggleTable",x=>{l.value=!!x}),e&&e.on("toggleFacet",x=>{c.value=!!x}),e&&e.on("toggleRail",x=>{u.value=!!x})}),Dt(()=>i&&i.disconnect());function d(x){const C=x.target.closest("[data-view]");C&&(s.value=C.getAttribute("data-view"))}const f=re(()=>!o.value||s.value==="facets"),v=re(()=>!o.value||s.value==="map"),L=re(()=>!o.value||s.value==="table"),k=re(()=>!o.value||s.value==="charts");return{shell:t,isNarrow:o,slimRail:n,slimFacet:a,mobileView:s,SEG:r,tableCollapsed:l,facetCollapsed:c,railCollapsed:u,setView:d,showFacets:f,showMap:v,showTable:L,showCharts:k}}const Lv=e=>String(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40),Av=e=>String(e).replace(/[%;:*+]/g,t=>"%"+t.charCodeAt(0).toString(16).toUpperCase()).replace(/ /g,"+"),Pv=e=>{try{return decodeURIComponent(String(e).replace(/\+/g,"%20"))}catch{return String(e).replace(/\+/g," ")}};function Ev(e,t){function o(){try{const n=Object.entries(e.filterSet).map(([a,s])=>{const r=typeof t=="function"?t(a,s):null,i=r&&String(r)!==String(s)?Lv(r):"";return a+":"+Av(s)+(i?"*"+i:"")});typeof location<"u"&&history.replaceState(null,"","#f="+n.join(";"))}catch{}}rt(()=>({...e.filterSet}),o,{deep:!0}),vt(()=>{try{const n=typeof location<"u"&&/[#&]f=([^&]+)/.exec(location.hash);if(!n)return;const a=n[1];if(a.startsWith("{")||a.startsWith("%7B")||a.startsWith("%7b")){const s=JSON.parse(decodeURIComponent(a));Object.entries(s).forEach(([r,i])=>e.setFilter(r,i));return}for(const s of a.split(";")){const r=s.indexOf(":");if(r<1)continue;const i=s.slice(0,r),l=Pv(s.slice(r+1).split("*")[0]);i&&l&&e.setFilter(i,l)}}catch{}})}function Cv(e){var k;const t=iv();t.configureHierarchy(e);const o=lv(e.data),n=Ju(e.facets,x=>x.get),a=la(t,ia(e)),s=re(()=>{var p;const x=o.rows.value||[],C=Object.keys(t.filterSet),h=!!(((p=t.searchTerm)==null?void 0:p.value)||"").trim();if(!C.length&&!h)return x;const m=C.length?x.filter(b=>C.every(A=>{const w=n[A];return w?w(b)===t.filterSet[A]:!0})):x;return ca(m,a)}),r=re(()=>xv(e.kpis,s.value,o.rows.value||[],n,e)),i=Sv(t),l=o.sourceId||Yt.activeSource,c=((k=Yt.sources)==null?void 0:k[l])||{},u=new Zu,d=re(()=>{const x=o.rows.value||[];return x.length?(u.rawData=x.slice(),u.normalizeData(c),u.normalizedData):[]}),f={sources:{[l]:{get features(){return d.value}}}},{labelFor:v}=ra(e,f,l);Ev(t,v);const L=Br({rowStore:o.rowStore,rows:o.rows,selectionSet:t.selectionSet,filterSet:t.filterSet,FACET_ACC:n,dataOpts:e.data,labelFor:v});return no("selectionBus",t),no("dashboardData",o),no("dashboardConfig",e),no("dataStore",f),no("searchSourceId",l),vt(()=>o.load()),{bus:t,data:o,FACET_ACC:n,filteredRows:s,kpis:r,exporter:L,responsive:i}}const Nv={facetW:296,railW:296,tableH:"34%",mapH:340,shellH:562},Tv={facetW:[160,420],railW:[200,520],tableH:[12,70],mapH:[220,1400],shellH:[400,2600]},ep=32,tp=120,At=(e,[t,o])=>Math.min(o,Math.max(t,e)),is=(e,t)=>{const o=parseFloat(String(e));return Number.isFinite(o)?o:t};function Rv(e={}){const{shellRef:t,bus:o=null,isNarrow:n=!1,pageScroll:a=!1,storageKey:s="rd-dashboard-layout-v6"}=e,r={...Nv,...e.defaults||{}},i={...Tv,...e.clamps||{}},l=pe(r.facetW),c=pe(r.railW),u=pe(r.tableH),d=pe(r.mapH),f=pe(r.shellH),v=pe(!1),L=pe(!1),k=pe(!1),x=()=>!!he(n),C=()=>!!he(a);function h(){const O=t&&t.value;if(!O)return f.value;const V=parseFloat(getComputedStyle(O).getPropertyValue("--rd-shell-h"));if(Number.isFinite(V)&&V>0)return Math.round(V);const D=O.querySelector('[data-region="map"]'),ae=O.querySelector('[data-region="table"]');if(!D||!ae)return f.value;const me=D.getBoundingClientRect().height+ae.getBoundingClientRect().height;return me>0?Math.round(me):f.value}function m(){const O=t&&t.value;O&&(v.value&&(O.style.setProperty("--facet-w",l.value+"px"),O.style.setProperty("--rail-w",c.value+"px"),O.style.setProperty("--table-h",u.value)),L.value&&O.style.setProperty("--rd-map-h",d.value+"px"),k.value&&O.style.setProperty("--rd-shell-h",f.value+"px"))}function p(){const O=t&&t.value;O&&(O.style.removeProperty("--facet-w"),O.style.removeProperty("--rail-w"),O.style.removeProperty("--table-h"),O.style.removeProperty("--rd-map-h"),O.style.removeProperty("--rd-shell-h"))}function b(){try{localStorage.setItem(s,JSON.stringify({facetW:l.value,railW:c.value,tableH:u.value,mapH:d.value,shellH:f.value}))}catch{}}function A(){try{const O=localStorage.getItem(s);if(!O)return!1;const V=JSON.parse(O);return Number.isFinite(V.facetW)&&(l.value=At(V.facetW,i.facetW)),Number.isFinite(V.railW)&&(c.value=At(V.railW,i.railW)),V.tableH!=null&&(u.value=At(is(V.tableH,is(r.tableH,34)),i.tableH)+"%"),v.value=!0,Number.isFinite(V.shellH)&&(f.value=At(V.shellH,i.shellH),k.value=!0),Number.isFinite(V.mapH)&&(d.value=At(V.mapH,i.mapH),L.value=!0),!0}catch{return!1}}function w(){try{localStorage.removeItem(s)}catch{}l.value=r.facetW,c.value=r.railW,u.value=r.tableH,d.value=r.mapH,f.value=r.shellH,v.value=!1,L.value=!1,k.value=!1,p()}const M=pe(!1);function U(){if(M.value)return;M.value=!0;const O=t&&t.value;if(O&&O.setAttribute("data-rd-resizing","1"),o&&typeof o.emit=="function")try{o.emit("layoutResizing",!0)}catch{}}function ne(){if(!M.value)return;M.value=!1;const O=t&&t.value;if(O&&O.removeAttribute("data-rd-resizing"),o&&typeof o.emit=="function")try{o.emit("layoutResizing",!1)}catch{}}function B(O,V){if(x())return;const D=t&&t.value;if(!D)return;V.preventDefault();const ae=D.getBoundingClientRect(),me=V.clientX,we=l.value,Le=c.value,Ae=V.currentTarget,ve=O==="table"&&C(),oe=O==="shell"&&C();let fe=0,ye=i.mapH[1];if(ve){const le=D.querySelector('[data-region="map"]'),g=le?le.getBoundingClientRect():null;fe=g?g.top:V.clientY-d.value,ye=Math.max(i.mapH[0],f.value-(ep+tp))}const _=V.clientY,P=oe?h():f.value;try{Ae&&Ae.setPointerCapture&&Ae.setPointerCapture(V.pointerId)}catch{}U();let S=0,j=null;function ee(){if(S=0,!j)return;const le=j;if(j=null,O==="facet")l.value=Math.round(At(we+(le.clientX-me),i.facetW)),v.value=!0;else if(O==="rail")c.value=Math.round(At(Le-(le.clientX-me),i.railW)),v.value=!0;else if(ve)d.value=Math.round(At(le.clientY-fe,[i.mapH[0],ye])),L.value=!0;else if(O==="table"){const g=(ae.bottom-le.clientY)/ae.height*100;u.value=Math.round(At(g,i.tableH))+"%",v.value=!0}else oe&&(f.value=Math.round(At(P+(le.clientY-_),i.shellH)),k.value=!0);m()}function te(le){j={clientX:le.clientX,clientY:le.clientY},S||(S=requestAnimationFrame(ee))}function ce(le){window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",ce),S&&(cancelAnimationFrame(S),S=0),ee();try{Ae&&Ae.releasePointerCapture&&Ae.releasePointerCapture(le.pointerId)}catch{}b(),ne()}window.addEventListener("pointermove",te),window.addEventListener("pointerup",ce),window.addEventListener("pointercancel",ce)}const Y=O=>B("facet",O),ge=O=>B("rail",O),I=O=>B("table",O),Q=O=>B("shell",O),H={facet:16,rail:16,table:24,mapH:24,shellH:24};function G(O,V,D){if(!x()){if(O==="facet")l.value=D?V<0?i.facetW[0]:i.facetW[1]:Math.round(At(l.value+V*H.facet,i.facetW)),v.value=!0;else if(O==="rail")c.value=D?V<0?i.railW[1]:i.railW[0]:Math.round(At(c.value-V*H.rail,i.railW)),v.value=!0;else if(O==="table"&&C()){const ae=Math.max(i.mapH[0],f.value-(ep+tp));d.value=D?V<0?i.mapH[0]:ae:Math.round(At(d.value+V*H.mapH,[i.mapH[0],ae])),L.value=!0}else if(O==="table"){const ae=D?V<0?i.tableH[0]:i.tableH[1]:At(is(u.value,is(r.tableH,34))-V*H.table/4,i.tableH);u.value=Math.round(ae)+"%",v.value=!0}else O==="shell"&&C()&&(f.value=D?V<0?i.shellH[0]:i.shellH[1]:Math.round(At(f.value+V*H.shellH,i.shellH)),k.value=!0);m(),b()}}function ie(O,V){const D=V.key;let ae=0;if(O==="table"||O==="shell"?D==="ArrowUp"?ae=-1:D==="ArrowDown"&&(ae=1):D==="ArrowLeft"?ae=-1:D==="ArrowRight"&&(ae=1),ae){V.preventDefault(),G(O,ae);return}(D==="Home"||D==="End")&&(V.preventDefault(),G(O,D==="Home"?-1:1,!0))}let F=null;return vt(()=>{A()&&m(),o&&typeof o.on=="function"&&(F=o.on("resetLayout",w))}),Dt(()=>{try{F&&F()}catch{}try{ne()}catch{}}),{facetW:l,railW:c,tableH:u,mapH:d,shellH:f,customized:v,resizing:M,startFacetResize:Y,startRailResize:ge,startTableResize:I,startShellResize:Q,startResize:B,reset:w,applyVars:m,stepResize:G,onResizeKeydown:ie}}const Mv=".search-box{position:relative;display:flex;align-items:center;margin:0 auto;width:100%;color:var(--dx-muted, #6d766e)}.search-box .search-icon{position:absolute;left:12px;pointer-events:none}.search-box input{width:100%;padding:10px 12px 10px 38px;font-size:.95rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:10px;outline:none;box-sizing:border-box}.search-box input:focus{border-color:var(--dx-accent, #92b195);box-shadow:0 0 0 2px var(--dx-accent-weak, rgba(146, 177, 149, .18))}",Ov=["value","placeholder","aria-label"],qr=Sn({__name:"SearchBar",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"Search…"},ariaLabel:{type:String,default:"Search"},maxWidth:{type:String,default:""}},emits:["update:modelValue","search"],setup(e,{emit:t}){const o=e,n=t,a=re(()=>o.maxWidth?{maxWidth:o.maxWidth}:{});function s(r){const i=r.target.value??"";n("update:modelValue",i),n("search",{value:i})}return(r,i)=>(W(),X("div",{class:"search-box",style:lt(a.value)},[i[0]||(i[0]=T("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[T("circle",{cx:"11",cy:"11",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),T("line",{x1:"16.5",y1:"16.5",x2:"21",y2:"21",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)),T("input",{type:"search",value:e.modelValue,placeholder:e.placeholder,"aria-label":e.ariaLabel,onInput:s},null,40,Ov)],4))}},[["styles",[Mv]]]),Fv=["title","aria-label","disabled"],Hr={__name:"MapControlButton",props:{isDark:{type:Boolean,default:!1},title:{type:String,default:""},active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:["click"],setup(e){return Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .mcb{ width:var(--map-btn-size,40px);height:var(--map-btn-size,40px); background:#fff; @@ -147,11 +97,7 @@ .mcb.dark:hover:not(:disabled){background:#4e594f;box-shadow:0 2px 8px rgba(0,0,0,0.5);} .mcb.dark.active{background:#4e594f;color:#92b195;} @media(max-width:767px){.mcb{width:36px;height:36px;}} -<<<<<<< HEAD `,"map-control-button"),(t,o)=>(H(),Z("button",{class:He(["mcb",{dark:e.isDark,active:e.active}]),title:e.title,"aria-label":e.title||void 0,disabled:e.disabled,onClick:o[0]||(o[0]=n=>t.$emit("click"))},[Ko(t.$slots,"default")],10,Iv))}},Dv=["aria-label"],Uv={class:"mcm-header"},Gv={class:"mcm-title"},jv={class:"mcm-body"},zv=".dsm-map-area, .rm-map-area, .dm-map-area, [data-map-area]",Wr="doxa-map-menu-open",Bv={__name:"MapControlMenu",props:{open:{type:Boolean,default:!1},title:{type:String,default:""},width:{type:Number,default:340},isDark:{type:Boolean,default:!1},maxHeight:{type:Number,default:null},height:{type:Number,default:null},matchToolbar:{type:Boolean,default:!1}},emits:["close"],setup(e,{emit:t}){Ot(` -======= -`,"map-control-button"),(t,o)=>(W(),X("button",{class:qe(["mcb",{dark:e.isDark,active:e.active}]),title:e.title,"aria-label":e.title||void 0,disabled:e.disabled,onClick:o[0]||(o[0]=n=>t.$emit("click"))},[Ko(t.$slots,"default")],10,Fv))}},Iv=["aria-label"],Dv={class:"mcm-header"},Uv={class:"mcm-title"},Gv={class:"mcm-body"},jv=".dsm-map-area, .rm-map-area, .dm-map-area, [data-map-area]",Wr="doxa-map-menu-open",zv={__name:"MapControlMenu",props:{open:{type:Boolean,default:!1},title:{type:String,default:""},width:{type:Number,default:340},isDark:{type:Boolean,default:!1},maxHeight:{type:Number,default:null},height:{type:Number,default:null},matchToolbar:{type:Boolean,default:!1}},emits:["close"],setup(e,{emit:t}){Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .mcm{position:absolute;z-index:var(--z-menu,3000);display:flex;flex-direction:column;box-sizing:border-box; background:#161b22;border:1px solid #30363d;border-radius:12px;box-shadow:0 6px 24px rgba(0,0,0,0.45); color:#e6edf3;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;font-size:13px; @@ -167,11 +113,7 @@ .mcm.light .mcm-close{background:rgba(208,215,222,0.4);border-color:#d0d7de;color:#57606a;} .mcm.light .mcm-close:hover{color:#3b463d;background:rgba(59,70,61,0.12);border-color:#3b463d;} .mcm-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;} -<<<<<<< HEAD `,"map-control-menu");const o=e,n=t,a=Fe("mapToolbar",null),s=de(null),r=de(null),i=de({});function l(){var U;const v=(U=a==null?void 0:a.el)==null?void 0:U.value,L=s.value;if(!v||!L){i.value={};return}const k=L.getBoundingClientRect(),x=v.getBoundingClientRect(),C=(x.left+x.right)/2>(k.left+k.right)/2,m=8,h=12,p=C?k.right-x.left+m:x.right-k.left+m,b=Math.max(200,Math.min(o.width,k.width-p-h)),A=Math.max(0,x.top-k.top);let M=L.getAttribute&&L.getAttribute("data-map-area")==="share-fallback"?Math.max(120,(window.innerHeight||900)-x.top-h):Math.max(120,k.height-A-h);o.matchToolbar&&(M=Math.max(120,Math.min(M,x.height))),o.maxHeight&&(M=Math.min(M,o.maxHeight)),i.value={top:`${Math.round(A)}px`,[C?"right":"left"]:`${Math.round(p)}px`,width:`${Math.round(b)}px`,maxHeight:`${Math.round(M)}px`,...o.height?{height:`${Math.round(Math.min(o.height,M))}px`}:{}}}function c(v){o.open&&v.detail!==r.value&&n("close")}rt(()=>o.open,async v=>{var L;if(v){await In(),l();try{(L=s.value)==null||L.dispatchEvent(new CustomEvent(Wr,{detail:r.value}))}catch{}}});function u(){o.open&&l()}function d(v){v.key==="Escape"&&o.open&&n("close")}function f(v){var k;if(!o.open)return;const L=v.composedPath?v.composedPath():[v.target];r.value&&L.includes(r.value)||(k=a==null?void 0:a.el)!=null&&k.value&&L.includes(a.el.value)||L.some(x=>{var C,m,h,p;return((m=(C=x==null?void 0:x.classList)==null?void 0:C.contains)==null?void 0:m.call(C,"mapboxgl-canvas"))||((p=(h=x==null?void 0:x.classList)==null?void 0:h.contains)==null?void 0:p.call(h,"maplibregl-canvas"))})&&n("close")}return vt(()=>{var v,L,k;s.value=((L=(v=a==null?void 0:a.el)==null?void 0:v.value)==null?void 0:L.closest(zv))||null,(k=s.value)==null||k.addEventListener(Wr,c),window.addEventListener("resize",u),document.addEventListener("click",f,!0),document.addEventListener("keydown",d)}),Dt(()=>{var v;(v=s.value)==null||v.removeEventListener(Wr,c),window.removeEventListener("resize",u),document.removeEventListener("click",f,!0),document.removeEventListener("keydown",d)}),(v,L)=>(H(),To(md,{to:s.value,disabled:!s.value},[e.open?(H(),Z("div",{key:0,ref_key:"el",ref:r,class:He(["mcm",{light:!e.isDark}]),style:lt(i.value),role:"dialog","aria-label":e.title},[T("div",Uv,[T("span",Gv,ue(e.title),1),T("button",{class:"mcm-close",type:"button","aria-label":"Close",onClick:L[0]||(L[0]=k=>n("close"))},[...L[1]||(L[1]=[T("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[T("line",{x1:"2",y1:"2",x2:"12",y2:"12"}),T("line",{x1:"12",y1:"2",x2:"2",y2:"12"})],-1)])])]),T("div",jv,[Ko(v.$slots,"default")])],14,Dv)):Me("",!0)],8,["to","disabled"]))}},Vv={class:"share-steps"},qv={class:"share-tabs"},Hv={key:0,class:"share-body"},Wv={class:"share-url-box"},Kv={class:"share-url-text"},Yv={key:0,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Xv={key:1,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},Zv={key:1,class:"share-body"},Jv={class:"share-size-pills"},Qv=["onClick"],e0={class:"share-code-box"},t0={key:0,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o0={key:1,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},n0={__name:"ShareButton",props:{isDark:{type:Boolean,default:!1},embedPath:{type:String,default:""}},setup(e){Ot(` -======= -`,"map-control-menu");const o=e,n=t,a=Ie("mapToolbar",null),s=pe(null),r=pe(null),i=pe({});function l(){var U;const v=(U=a==null?void 0:a.el)==null?void 0:U.value,L=s.value;if(!v||!L){i.value={};return}const k=L.getBoundingClientRect(),x=v.getBoundingClientRect(),C=(x.left+x.right)/2>(k.left+k.right)/2,h=8,m=12,p=C?k.right-x.left+h:x.right-k.left+h,b=Math.max(200,Math.min(o.width,k.width-p-m)),A=Math.max(0,x.top-k.top);let M=L.getAttribute&&L.getAttribute("data-map-area")==="share-fallback"?Math.max(120,(window.innerHeight||900)-x.top-m):Math.max(120,k.height-A-m);o.matchToolbar&&(M=Math.max(120,Math.min(M,x.height))),o.maxHeight&&(M=Math.min(M,o.maxHeight)),i.value={top:`${Math.round(A)}px`,[C?"right":"left"]:`${Math.round(p)}px`,width:`${Math.round(b)}px`,maxHeight:`${Math.round(M)}px`,...o.height?{height:`${Math.round(Math.min(o.height,M))}px`}:{}}}function c(v){o.open&&v.detail!==r.value&&n("close")}rt(()=>o.open,async v=>{var L;if(v){await In(),l();try{(L=s.value)==null||L.dispatchEvent(new CustomEvent(Wr,{detail:r.value}))}catch{}}});function u(){o.open&&l()}function d(v){v.key==="Escape"&&o.open&&n("close")}function f(v){var k;if(!o.open)return;const L=v.composedPath?v.composedPath():[v.target];r.value&&L.includes(r.value)||(k=a==null?void 0:a.el)!=null&&k.value&&L.includes(a.el.value)||L.some(x=>{var C,h,m,p;return((h=(C=x==null?void 0:x.classList)==null?void 0:C.contains)==null?void 0:h.call(C,"mapboxgl-canvas"))||((p=(m=x==null?void 0:x.classList)==null?void 0:m.contains)==null?void 0:p.call(m,"maplibregl-canvas"))})&&n("close")}return vt(()=>{var v,L,k;s.value=((L=(v=a==null?void 0:a.el)==null?void 0:v.value)==null?void 0:L.closest(jv))||null,(k=s.value)==null||k.addEventListener(Wr,c),window.addEventListener("resize",u),document.addEventListener("click",f,!0),document.addEventListener("keydown",d)}),Dt(()=>{var v;(v=s.value)==null||v.removeEventListener(Wr,c),window.removeEventListener("resize",u),document.removeEventListener("click",f,!0),document.removeEventListener("keydown",d)}),(v,L)=>(W(),To(hd,{to:s.value,disabled:!s.value},[e.open?(W(),X("div",{key:0,ref_key:"el",ref:r,class:qe(["mcm",{light:!e.isDark}]),style:lt(i.value),role:"dialog","aria-label":e.title},[T("div",Dv,[T("span",Uv,ue(e.title),1),T("button",{class:"mcm-close",type:"button","aria-label":"Close",onClick:L[0]||(L[0]=k=>n("close"))},[...L[1]||(L[1]=[T("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[T("line",{x1:"2",y1:"2",x2:"12",y2:"12"}),T("line",{x1:"12",y1:"2",x2:"2",y2:"12"})],-1)])])]),T("div",Gv,[Ko(v.$slots,"default")])],14,Iv)):Me("",!0)],8,["to","disabled"]))}},Bv={class:"share-steps"},Vv={class:"share-tabs"},qv={key:0,class:"share-body"},Hv={class:"share-url-box"},Wv={class:"share-url-text"},Kv={key:0,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Yv={key:1,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},Xv={key:1,class:"share-body"},Zv={class:"share-size-pills"},Jv=["onClick"],Qv={class:"share-code-box"},e0={key:0,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},t0={key:1,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},o0={__name:"ShareButton",props:{isDark:{type:Boolean,default:!1},embedPath:{type:String,default:""}},setup(e){Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .share-wrap{position:relative;display:inline-block;border-radius:50%;} .share-wrap::before{content:'';position:absolute;inset:-2px;border-radius:50%;padding:2px;pointer-events:none; background:conic-gradient(#ff6b6b,#ffd166,#6bd67b,#4dabf7,#9775fa,#f783ac,#ff6b6b); @@ -423,11 +365,7 @@ border-color:rgba(46,164,79,0.30); color:#2ea44f; } -<<<<<<< HEAD `,"share-button");const{t,tm:o,rt:n}=Jo(),a=e,s=de(null),r=de(!1),i=de(null),l=de(null),c=de("link"),u=de(!1),d=de(!1),f=de("medium"),v={small:{label:"Small",height:400},medium:{label:"Medium",height:600},large:{label:"Large",height:800}},L=Fe("profileConfig",null),k=re(()=>Ty({embedPath:a.embedPath,profileConfig:he(L)||null})),x=re(()=>{const ne=v[f.value].height;return''});function C(){r.value=!r.value,r.value&&(c.value="link",u.value=!1,d.value=!1)}function m(){r.value=!1}async function h(ne){try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(ne),!0}catch{}try{const B=document.createElement("textarea");B.value=ne,B.setAttribute("readonly",""),B.style.cssText="position:fixed;top:-1000px;opacity:0",document.body.appendChild(B),B.select();const X=document.execCommand("copy");return document.body.removeChild(B),X}catch{return!1}}async function p(){await h(k.value)&&(u.value=!0,setTimeout(()=>{u.value=!1},2e3))}async function b(){await h(x.value)&&(d.value=!0,setTimeout(()=>{d.value=!1},2e3))}const A=Fe("mapToolbar",null),w=de(null);no("mapToolbar",A||{el:w});const M=!A;function U(ne){if(s.value=ne||null,!M||!ne){ne||(w.value=null);return}const B=ne.offsetParent||ne.parentElement;B&&!B.closest(".dsm-map-area, .rm-map-area, .dm-map-area, [data-map-area]")&&B.setAttribute("data-map-area","share-fallback"),w.value=ne}return(ne,B)=>(H(),Z("div",{ref:U,class:"share-wrap","data-share-root":""},[Ge(Hr,{ref_key:"btnEl",ref:l,"is-dark":e.isDark,active:r.value,title:he(t)("buttons.share"),onClick:C},{default:Co(()=>[...B[2]||(B[2]=[T("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[T("path",{d:"M4 12v7a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7"}),T("polyline",{points:"16 6 12 2 8 6"}),T("line",{x1:"12",y1:"2",x2:"12",y2:"15"})],-1)])]),_:1},8,["is-dark","active","title"]),Ge(Bv,{open:r.value,title:he(t)("buttons.share"),"is-dark":e.isDark,onClose:m},{default:Co(()=>[T("div",{ref_key:"popoverEl",ref:i,class:He(["share-pop",{light:!e.isDark}])},[T("ul",Vv,[(H(!0),Z(Ce,null,tt(he(o)("buttons.shareSteps"),(X,pe)=>(H(),Z("li",{key:pe},ue(he(n)(X)),1))),128))]),T("div",qv,[T("button",{class:He(["share-tab",{active:c.value==="link"}]),onClick:B[0]||(B[0]=X=>c.value="link")},"Embed link",2),T("button",{class:He(["share-tab",{active:c.value==="embed"}]),onClick:B[1]||(B[1]=X=>c.value="embed")},"Add to Your Website",2)]),c.value==="link"?(H(),Z("div",Hv,[T("div",Wv,[T("div",Kv,ue(k.value),1)]),T("button",{class:He(["share-primary-btn",{copied:u.value}]),onClick:p},[u.value?(H(),Z("svg",Xv,[...B[4]||(B[4]=[T("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):(H(),Z("svg",Yv,[...B[3]||(B[3]=[T("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),T("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"},null,-1)])])),ut(" "+ue(u.value?"Copied!":"Copy Link"),1)],2)])):Me("",!0),c.value==="embed"?(H(),Z("div",Zv,[B[7]||(B[7]=T("div",{class:"share-embed-desc"}," Paste this code into your website builder (WordPress, Squarespace, Wix, or any site that accepts HTML widgets). ",-1)),T("div",Jv,[(H(),Z(Ce,null,tt(v,(X,pe)=>T("button",{key:pe,class:He(["share-size-pill",{active:f.value===pe}]),onClick:I=>f.value=pe},ue(X.label),11,Qv)),64))]),T("div",e0,ue(x.value),1),T("button",{class:He(["share-secondary-btn",{copied:d.value}]),onClick:b},[d.value?(H(),Z("svg",o0,[...B[6]||(B[6]=[T("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):(H(),Z("svg",t0,[...B[5]||(B[5]=[T("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),T("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"},null,-1)])])),ut(" "+ue(d.value?"Copied!":"Copy Code"),1)],2)])):Me("",!0)],2)]),_:1},8,["open","title","is-dark"])],512))}},Ao="#c4c8c0",st=e=>e==null?"":typeof e=="object"?e.label??e.value??"":e,a0=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_");function ls(e,t){const o=as(e);return o&&o.propertyKey===t?o:null}function s0(e,t){const o=String(e||"").trim();if(!o)return"U";const n=Object.keys(t),a=n.find(i=>t[i]===o);if(a)return a;let s=null,r=0;for(const i of n){const l=t[i];l&&o.toLowerCase().startsWith(l.toLowerCase())&&l.length>r&&(s=i,r=l.length)}return s||(/^[A-Z]{1,3}$/.test(o)?Er(o):"U")}function Kr(e,t,o){const n=new Map;for(const s of e){const r=t(s);r==null||r===""||n.set(r,(n.get(r)||0)+1)}let a=[...n.entries()].map(([s,r])=>({key:s,value:r})).sort((s,r)=>r.value-s.value);if(o&&a.length>o){const s=a.slice(0,o),r=a.slice(o).reduce((i,l)=>i+l.value,0);r>0&&s.push({key:"Other",value:r,other:!0}),a=s}return a}function r0(e,t,o){const n=new Map;for(const s of e||[]){const r=t&&t(s),i=o&&o(s);if(!r||!i)continue;n.has(r)||n.set(r,new Map);const l=n.get(r);l.set(i,(l.get(i)||0)+1)}const a=new Map;for(const[s,r]of n){let i=null,l=0,c=!1;for(const[u,d]of r)d>l?(i=u,l=d,c=!1):d===l&&(c=!0);a.set(s,i&&!c?np("wagf_region",i):Ao)}return a}function i0(e,t=132,o=.58,n="",a=null){const s=t/2,r=t/2,i=t/2-3,l=(t/2-3)*o,c=e.reduce((d,f)=>d+f.value,0)||1;let u=-Math.PI/2;return e.map((d,f)=>{const v=u,L=u+d.value/c*Math.PI*2;u=L;const k=L-v>Math.PI?1:0,x=(m,h)=>`${(s+h*Math.cos(m)).toFixed(2)},${(r+h*Math.sin(m)).toFixed(2)}`,C=`M${x(v,i)} A${i},${i} 0 ${k} 1 ${x(L,i)} L${x(L,l)} A${l},${l} 0 ${k} 0 ${x(v,l)} Z`;return{...d,path:C,pct:Math.round(d.value/c*100),color:op(n,d.key,a)}})}function l0(e,t="",o=null){const n=e.reduce((a,s)=>Math.max(a,s.value),0)||1;return e.map(a=>({...a,frac:a.value/n,color:op(t,a.key,o)}))}function op(e,t,o){if(o&&t!=="Other"){const n=o.get?o.get(t):o[t];if(n)return n}return np(e,t)}function np(e,t){if(t==null||t===""||t==="Other")return Ao;if(e==="religion"||e==="religion_family"){const o=ls(Lo.RELIGION,"religion"),n=o&&o.palette||Nt,a=o&&o.families||So;return n[s0(t,a)]||Ao}if(e==="wagf_region"){const o=ls(Lo.DOXA_REGION,"doxaRegion");if(!o)return Ao;const n=o.slugColors&&o.slugColors[a0(t)];return n||o.aliases&&o.aliases[t]||Ao}if(e==="affinity_bloc"){const o=ls(Lo.AFFINITY_BLOCK,"affinityBlock");return o&&o.palette&&o.palette[t]||Ao}if(e==="language_family"){const o=ls(Lo.LANGUAGE_FAMILY,"languageFamily");return o&&o.palette&&o.palette[t]||Ao}return Ao}const c0={class:"rd-left"},u0={class:"rd-brand"},p0={class:"rd-ttl"},d0={class:"rd-filter-search","data-filter-search":""},g0={key:0,class:"rd-search","data-search":""},f0=["data-slug"],h0={class:"nm"},m0={class:"sub"},$0={key:1,class:"rd-empty"},b0=["title","onKeydown"],_0="research-dashboard/research-dashboard/index.html",y0={__name:"DashboardTopBar",setup(e){const t=(p,b)=>Se("dashboard."+p)||b,o=Fe("dashboardData",null),n=Fe("selectionBus",null),a=Fe("dashboardConfig",{}),s=re(()=>a.showTopBarSearch===!0);function r(){n&&n.emit("resetLayout")}const i=re(()=>{var p;return((p=n==null?void 0:n.searchTerm)==null?void 0:p.value)||""}),l=re(()=>{var p;return((p=a.researchFilters)==null?void 0:p.searchPlaceholder)||"Search people groups, place, language, religion…"});function c(p){n==null||n.setSearch((p==null?void 0:p.value)??"")}const u=de(""),d=de(!1),f=de(0),v=re(()=>{var w;const p=u.value.trim().toLowerCase();if(p.length<2)return[];const b=((w=o==null?void 0:o.rows)==null?void 0:w.value)||[],A=[];for(const M of b)if((M.name||"").toLowerCase().includes(p)&&(A.push(M),A.length>=8))break;return A});function L(p){!p||!n||(p.slug&&(n.toggleSelect(p.slug),n.emit("focusRow",{slug:p.slug,name:p.name})),u.value="",d.value=!1,f.value=0)}function k(){d.value=!0,f.value=0}function x(p){if(!v.value.length){p.key==="Escape"&&(u.value="",d.value=!1);return}p.key==="ArrowDown"?(p.preventDefault(),f.value=(f.value+1)%v.value.length):p.key==="ArrowUp"?(p.preventDefault(),f.value=(f.value-1+v.value.length)%v.value.length):p.key==="Enter"?(p.preventDefault(),L(v.value[f.value])):p.key==="Escape"&&(u.value="",d.value=!1,f.value=0)}function C(p){var M;const b=p.target&&p.target.closest&&p.target.closest("[data-slug]");if(!b)return;const A=b.getAttribute("data-slug"),w=(((M=o==null?void 0:o.rows)==null?void 0:M.value)||[]).find(U=>U.slug===A);w&&L(w)}const m=de(null);function h(p){m.value&&!m.value.contains(p.target)&&(d.value=!1)}return vt(()=>{var p,b;try{(b=(p=m.value)==null?void 0:p.getRootNode())==null||b.addEventListener("click",h)}catch{}}),Dt(()=>{var p,b;try{(b=(p=m.value)==null?void 0:p.getRootNode())==null||b.removeEventListener("click",h)}catch{}}),Ot(` -======= -`,"share-button");const{t,tm:o,rt:n}=Jo(),a=e,s=pe(null),r=pe(!1),i=pe(null),l=pe(null),c=pe("link"),u=pe(!1),d=pe(!1),f=pe("medium"),v={small:{label:"Small",height:400},medium:{label:"Medium",height:600},large:{label:"Large",height:800}},L=Ie("profileConfig",null),k=re(()=>Ny({embedPath:a.embedPath,profileConfig:he(L)||null})),x=re(()=>{const ne=v[f.value].height;return''});function C(){r.value=!r.value,r.value&&(c.value="link",u.value=!1,d.value=!1)}function h(){r.value=!1}async function m(ne){try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(ne),!0}catch{}try{const B=document.createElement("textarea");B.value=ne,B.setAttribute("readonly",""),B.style.cssText="position:fixed;top:-1000px;opacity:0",document.body.appendChild(B),B.select();const Y=document.execCommand("copy");return document.body.removeChild(B),Y}catch{return!1}}async function p(){await m(k.value)&&(u.value=!0,setTimeout(()=>{u.value=!1},2e3))}async function b(){await m(x.value)&&(d.value=!0,setTimeout(()=>{d.value=!1},2e3))}const A=Ie("mapToolbar",null),w=pe(null);no("mapToolbar",A||{el:w});const M=!A;function U(ne){if(s.value=ne||null,!M||!ne){ne||(w.value=null);return}const B=ne.offsetParent||ne.parentElement;B&&!B.closest(".dsm-map-area, .rm-map-area, .dm-map-area, [data-map-area]")&&B.setAttribute("data-map-area","share-fallback"),w.value=ne}return(ne,B)=>(W(),X("div",{ref:U,class:"share-wrap","data-share-root":""},[je(Hr,{ref_key:"btnEl",ref:l,"is-dark":e.isDark,active:r.value,title:he(t)("buttons.share"),onClick:C},{default:Co(()=>[...B[2]||(B[2]=[T("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[T("path",{d:"M4 12v7a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7"}),T("polyline",{points:"16 6 12 2 8 6"}),T("line",{x1:"12",y1:"2",x2:"12",y2:"15"})],-1)])]),_:1},8,["is-dark","active","title"]),je(zv,{open:r.value,title:he(t)("buttons.share"),"is-dark":e.isDark,onClose:h},{default:Co(()=>[T("div",{ref_key:"popoverEl",ref:i,class:qe(["share-pop",{light:!e.isDark}])},[T("ul",Bv,[(W(!0),X(Ce,null,tt(he(o)("buttons.shareSteps"),(Y,ge)=>(W(),X("li",{key:ge},ue(he(n)(Y)),1))),128))]),T("div",Vv,[T("button",{class:qe(["share-tab",{active:c.value==="link"}]),onClick:B[0]||(B[0]=Y=>c.value="link")},"Embed link",2),T("button",{class:qe(["share-tab",{active:c.value==="embed"}]),onClick:B[1]||(B[1]=Y=>c.value="embed")},"Add to Your Website",2)]),c.value==="link"?(W(),X("div",qv,[T("div",Hv,[T("div",Wv,ue(k.value),1)]),T("button",{class:qe(["share-primary-btn",{copied:u.value}]),onClick:p},[u.value?(W(),X("svg",Yv,[...B[4]||(B[4]=[T("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):(W(),X("svg",Kv,[...B[3]||(B[3]=[T("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),T("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"},null,-1)])])),ut(" "+ue(u.value?"Copied!":"Copy Link"),1)],2)])):Me("",!0),c.value==="embed"?(W(),X("div",Xv,[B[7]||(B[7]=T("div",{class:"share-embed-desc"}," Paste this code into your website builder (WordPress, Squarespace, Wix, or any site that accepts HTML widgets). ",-1)),T("div",Zv,[(W(),X(Ce,null,tt(v,(Y,ge)=>T("button",{key:ge,class:qe(["share-size-pill",{active:f.value===ge}]),onClick:I=>f.value=ge},ue(Y.label),11,Jv)),64))]),T("div",Qv,ue(x.value),1),T("button",{class:qe(["share-secondary-btn",{copied:d.value}]),onClick:b},[d.value?(W(),X("svg",t0,[...B[6]||(B[6]=[T("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):(W(),X("svg",e0,[...B[5]||(B[5]=[T("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),T("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"},null,-1)])])),ut(" "+ue(d.value?"Copied!":"Copy Code"),1)],2)])):Me("",!0)],2)]),_:1},8,["open","title","is-dark"])],512))}},Ao="#c4c8c0",st=e=>e==null?"":typeof e=="object"?e.label??e.value??"":e,n0=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_");function ls(e,t){const o=as(e);return o&&o.propertyKey===t?o:null}function a0(e,t){const o=String(e||"").trim();if(!o)return"U";const n=Object.keys(t),a=n.find(i=>t[i]===o);if(a)return a;let s=null,r=0;for(const i of n){const l=t[i];l&&o.toLowerCase().startsWith(l.toLowerCase())&&l.length>r&&(s=i,r=l.length)}return s||(/^[A-Z]{1,3}$/.test(o)?Er(o):"U")}function Kr(e,t,o){const n=new Map;for(const s of e){const r=t(s);r==null||r===""||n.set(r,(n.get(r)||0)+1)}let a=[...n.entries()].map(([s,r])=>({key:s,value:r})).sort((s,r)=>r.value-s.value);if(o&&a.length>o){const s=a.slice(0,o),r=a.slice(o).reduce((i,l)=>i+l.value,0);r>0&&s.push({key:"Other",value:r,other:!0}),a=s}return a}function s0(e,t,o){const n=new Map;for(const s of e||[]){const r=t&&t(s),i=o&&o(s);if(!r||!i)continue;n.has(r)||n.set(r,new Map);const l=n.get(r);l.set(i,(l.get(i)||0)+1)}const a=new Map;for(const[s,r]of n){let i=null,l=0,c=!1;for(const[u,d]of r)d>l?(i=u,l=d,c=!1):d===l&&(c=!0);a.set(s,i&&!c?np("wagf_region",i):Ao)}return a}function r0(e,t=132,o=.58,n="",a=null){const s=t/2,r=t/2,i=t/2-3,l=(t/2-3)*o,c=e.reduce((d,f)=>d+f.value,0)||1;let u=-Math.PI/2;return e.map((d,f)=>{const v=u,L=u+d.value/c*Math.PI*2;u=L;const k=L-v>Math.PI?1:0,x=(h,m)=>`${(s+m*Math.cos(h)).toFixed(2)},${(r+m*Math.sin(h)).toFixed(2)}`,C=`M${x(v,i)} A${i},${i} 0 ${k} 1 ${x(L,i)} L${x(L,l)} A${l},${l} 0 ${k} 0 ${x(v,l)} Z`;return{...d,path:C,pct:Math.round(d.value/c*100),color:op(n,d.key,a)}})}function i0(e,t="",o=null){const n=e.reduce((a,s)=>Math.max(a,s.value),0)||1;return e.map(a=>({...a,frac:a.value/n,color:op(t,a.key,o)}))}function op(e,t,o){if(o&&t!=="Other"){const n=o.get?o.get(t):o[t];if(n)return n}return np(e,t)}function np(e,t){if(t==null||t===""||t==="Other")return Ao;if(e==="religion"||e==="religion_family"){const o=ls(Lo.RELIGION,"religion"),n=o&&o.palette||Nt,a=o&&o.families||So;return n[a0(t,a)]||Ao}if(e==="wagf_region"){const o=ls(Lo.DOXA_REGION,"doxaRegion");if(!o)return Ao;const n=o.slugColors&&o.slugColors[n0(t)];return n||o.aliases&&o.aliases[t]||Ao}if(e==="affinity_bloc"){const o=ls(Lo.AFFINITY_BLOCK,"affinityBlock");return o&&o.palette&&o.palette[t]||Ao}if(e==="language_family"){const o=ls(Lo.LANGUAGE_FAMILY,"languageFamily");return o&&o.palette&&o.palette[t]||Ao}return Ao}const l0={class:"rd-left"},c0={class:"rd-brand"},u0={class:"rd-ttl"},p0={class:"rd-filter-search","data-filter-search":""},d0={key:0,class:"rd-search","data-search":""},g0=["data-slug"],f0={class:"nm"},h0={class:"sub"},m0={key:1,class:"rd-empty"},$0=["title","onKeydown"],b0="research-dashboard/research-dashboard/index.html",_0={__name:"DashboardTopBar",setup(e){const t=(p,b)=>Se("dashboard."+p)||b,o=Ie("dashboardData",null),n=Ie("selectionBus",null),a=Ie("dashboardConfig",{}),s=re(()=>a.showTopBarSearch===!0);function r(){n&&n.emit("resetLayout")}const i=re(()=>{var p;return((p=n==null?void 0:n.searchTerm)==null?void 0:p.value)||""}),l=re(()=>{var p;return((p=a.researchFilters)==null?void 0:p.searchPlaceholder)||"Search people groups, place, language, religion…"});function c(p){n==null||n.setSearch((p==null?void 0:p.value)??"")}const u=pe(""),d=pe(!1),f=pe(0),v=re(()=>{var w;const p=u.value.trim().toLowerCase();if(p.length<2)return[];const b=((w=o==null?void 0:o.rows)==null?void 0:w.value)||[],A=[];for(const M of b)if((M.name||"").toLowerCase().includes(p)&&(A.push(M),A.length>=8))break;return A});function L(p){!p||!n||(p.slug&&(n.toggleSelect(p.slug),n.emit("focusRow",{slug:p.slug,name:p.name})),u.value="",d.value=!1,f.value=0)}function k(){d.value=!0,f.value=0}function x(p){if(!v.value.length){p.key==="Escape"&&(u.value="",d.value=!1);return}p.key==="ArrowDown"?(p.preventDefault(),f.value=(f.value+1)%v.value.length):p.key==="ArrowUp"?(p.preventDefault(),f.value=(f.value-1+v.value.length)%v.value.length):p.key==="Enter"?(p.preventDefault(),L(v.value[f.value])):p.key==="Escape"&&(u.value="",d.value=!1,f.value=0)}function C(p){var M;const b=p.target&&p.target.closest&&p.target.closest("[data-slug]");if(!b)return;const A=b.getAttribute("data-slug"),w=(((M=o==null?void 0:o.rows)==null?void 0:M.value)||[]).find(U=>U.slug===A);w&&L(w)}const h=pe(null);function m(p){h.value&&!h.value.contains(p.target)&&(d.value=!1)}return vt(()=>{var p,b;try{(b=(p=h.value)==null?void 0:p.getRootNode())==null||b.addEventListener("click",m)}catch{}}),Dt(()=>{var p,b;try{(b=(p=h.value)==null?void 0:p.getRootNode())==null||b.removeEventListener("click",m)}catch{}}),Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .rd-topbar{ position:relative; display:flex; align-items:center; gap:12px; height:100%; padding:0 var(--rd-edge,14px); --rd-search-w:min(360px,34%); background:var(--rd-header,#4e594f); color:var(--rd-header-ink,#f3f3f1); border-bottom:1px solid var(--rd-header-line,#3c453d); @@ -469,11 +407,7 @@ background:#ffffff1f; border:1px solid #ffffff3d; border-radius:var(--r-md,6px); padding:5px 11px; } .rd-topbar .rd-align:hover{ background:#ffffff33; border-color:var(--rd-accent,#e67e22); color:#fff; } .rd-shell.rd-narrow .rd-topbar .rd-align{ display:none; } -<<<<<<< HEAD `,"rd-topbar"),(p,b)=>(H(),Z("header",{ref_key:"rootEl",ref:m,class:"rd-topbar","data-region":"topbar"},[T("div",c0,[T("span",u0,[T("span",p0,[ut(ue(he(a).title||"Research Dashboard"),1),b[1]||(b[1]=T("span",{class:"dot"},".",-1))])])]),T("div",d0,[Ge(qr,{"model-value":i.value,placeholder:l.value,"aria-label":l.value,"max-width":"360px",onSearch:c},null,8,["model-value","placeholder","aria-label"])]),b[3]||(b[3]=T("span",{class:"rd-spacer"},null,-1)),s.value?(H(),Z("div",g0,[b[2]||(b[2]=T("span",{class:"ic"},"⌕",-1)),It(T("input",{type:"text","onUpdate:modelValue":b[0]||(b[0]=A=>u.value=A),placeholder:"Search people groups…","data-search-input":"","aria-label":"Search people groups",onInput:k,onFocus:k,onKeydown:x},null,544),[[Ug,u.value]]),d.value&&u.value.trim().length>=2?(H(),Z("div",{key:0,class:"rd-results","data-search-results":"",onClick:C},[v.value.length?(H(!0),Z(Ce,{key:0},tt(v.value,(A,w)=>(H(),Z("div",{key:A.slug,class:He(["rd-res",{on:w===f.value}]),"data-slug":A.slug},[T("span",h0,ue(A.name),1),T("span",m0,ue(he(st)(A.country_code))+" · "+ue(he(st)(A.religion)),1)],10,f0))),128)):(H(),Z("div",$0,"No people groups match “"+ue(u.value.trim())+"”.",1))])):Me("",!0)])):Me("",!0),T("span",{class:"rd-align",role:"button",tabindex:"0","data-align-btn":"",title:t("align_dashboard_tip","Reset the dashboard layout to its default alignment"),onClick:r,onKeydown:[qa(gn(r,["prevent"]),["enter"]),qa(gn(r,["prevent"]),["space"])]}," ⤢ "+ue(t("align_dashboard","Align Dashboard")),41,b0),Ge(n0,{"embed-path":_0})],512))}},jo="#c4c8c0";function v0(e,t){const o=as(e);return o&&o.propertyKey===t&&o.palette?o.palette:null}const k0=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_");function w0(){const e=re(()=>{const o=as(Lo.DOXA_REGION),n=o&&o.propertyKey==="doxaRegion";return{slug:n&&o.slugColors||null,alias:n&&o.aliases||null}});function t(o,n,a,s){if(a==null||a==="")return jo;if(o==="people"){const r=v0(Lo.AFFINITY_BLOCK,"affinityBlock");return r&&r[s||a]||jo}if(o==="place"){const{slug:r,alias:i}=e.value,l=s||a;if(r){const c=r[k0(l)];if(c)return c}if(i){const c=i[l];if(c)return c}return jo}return o==="language"?xo[s||a]||jo:o==="religion"&&Nt[s]||jo}return{colorFor:t,NEUTRAL:jo}}const x0={class:"rd-facets","data-region":"facets"},S0={class:"fr-head"},L0={class:"fr-title"},A0={class:"fr-scope","data-scope-count":""},P0=["data-facet-section"],E0=["onClick"],C0={class:"fr-rows"},N0=["data-facet","data-value","tabindex","role","aria-pressed","aria-label","title"],T0=["data-expand","data-expand-value","aria-expanded","aria-label"],R0={key:1,class:"fr-caret fr-caret-leaf","aria-hidden":"true"},M0={class:"fr-lbl"},O0={class:"fr-bar"},F0={class:"fr-cnt"},I0={key:3,class:"fr-donly","aria-hidden":"true"},D0={__name:"DashboardFacetRail",setup(e){const t=(F,O)=>Se("dashboard."+F)||O,o=Fe("dashboardData",null),n=Fe("selectionBus",null),a=Fe("dashboardConfig",{}),s=Fe("dataStore",null),r=Fe("searchSourceId",null),i=(n==null?void 0:n.filterSet)||{},l=Object.fromEntries(Object.entries(a.facets||{}).map(([F,O])=>[F,O.get])),c=new Set(Object.entries(a.facets||{}).filter(([,F])=>F&&F.dashboardOnly).map(([F])=>F)),u=la(n,ia(a));function d(F){var me,we;const O=((me=o==null?void 0:o.rows)==null?void 0:me.value)||[],V=Object.keys(i).filter(Le=>!F.includes(Le)),D=!!(((we=n==null?void 0:n.searchTerm)==null?void 0:we.value)||"").trim();if(!V.length&&!D)return O;const se=O.filter(Le=>V.every(Ae=>{const ke=l[Ae];return ke?ke(Le)===i[Ae]:!0}));return ca(se,u)}const f=new Set(["people","place","language","religion"]),v=Bo(Object.fromEntries((a.facetRail||[]).map(F=>[F.id,f.has(F.id)])));function L(F){v[F]=!v[F]}const k=Bo({}),x=(F,O)=>F+":"+O;function C(F,O){const V=x(F,O);k[V]=!m(F,O)}function m(F,O){const V=x(F,O);return V in k?k[V]:i[F]===O}function h(F,O,V){const D=F.reduce((se,me)=>Math.max(se,me.value),0)||1;return F.map(se=>({facet:O,value:se.key,label:se.key,count:se.value,frac:se.value/D,level:V,other:!!se.other,active:!se.other&&i[O]===se.key,dashboardOnly:c.has(O)}))}const p=new Map;function b(F,O,V){if(V)return p.set(F,O.map(oe=>({...oe,count:0,frac:0,active:!1,expanded:!1}))),O;const D=p.get(F);if(!D)return O;const se=oe=>oe.facet+":"+oe.value,me=new Set(O.map(se));if(!D.filter(oe=>!me.has(se(oe))).length)return O;const Le=new Map;let Ae="";for(const oe of D){const fe=se(oe);if(me.has(fe)){Ae=fe;continue}Le.has(Ae)||Le.set(Ae,[]),Le.get(Ae).push({...oe,zero:!0})}const ke=[];for(const oe of Le.get("")||[])ke.push(oe);for(let oe=0;oefe.level;)ke.push(O[++oe]);for(const _ of ye)ke.push(_)}}return ke}function A(F,O){return h(Kr(d([F]),l[F],O??24),F,0)}function w(F,O){const V=[],D=(se,me)=>{const we=F[se],Le=(O&&O[se])??(se===F.length-1?40:30);let Ae=d(F.slice(se));me.length&&(Ae=Ae.filter(oe=>me.every(([fe,ye])=>{const _=l[fe];return _?_(oe)===ye:!0})));const ke=h(Kr(Ae,l[we],Le),we,se);for(const oe of ke)oe.hasChildren=!oe.other&&se{var V;const F=new Map,O=a.facets&&a.facets.religion_family;if(!O||!O.famKey)return F;for(const D of((V=o==null?void 0:o.rows)==null?void 0:V.value)||[]){const se=O.get(D);se&&!F.has(se)&&F.set(se,O.famKey(D))}return F}),pe=re(()=>{var F;return!Object.keys(i).length&&!(((F=n==null?void 0:n.searchTerm)==null?void 0:F.value)||"").trim()}),I=re(()=>(a.facetRail||[]).map(F=>{let O=F.drill?w(F.drill,F.topN):A(F.facet,F.topN);if(O=b(F.id,O,pe.value),F.tree==="affinity"){const V=U.value;O=O.map(D=>D.other?D:{...D,label:V[D.facet]&&V[D.facet].get(D.value)||D.label})}return O=B(O,F.axis,X.value),{id:F.id,title:F.title,axis:F.axis,rows:M(O)}})),J=re(()=>{var V;const F=((V=o==null?void 0:o.rows)==null?void 0:V.value)||[],O=Object.keys(i);return O.length?F.filter(D=>O.every(se=>{const me=l[se];return me?me(D)===i[se]:!0})).length:F.length});function W(F){const O=F.target;if(!O||!O.closest)return;const V=O.closest("[data-expand]");if(V){const we=V.getAttribute("data-expand"),Le=V.getAttribute("data-expand-value");we&&Le!=null&&(F.stopPropagation(),C(we,Le));return}const D=O.closest("[data-facet]");if(!D||!n)return;const se=D.getAttribute("data-facet"),me=D.getAttribute("data-value");!se||!me||n.setFilter(se,i[se]===me?null:me)}function G(F){if(F.key!=="Enter"&&F.key!==" "&&F.key!=="Spacebar")return;const O=F.target&&F.target.closest?F.target.closest("[data-facet]"):null;if(!O||!n)return;F.preventDefault();const V=O.getAttribute("data-facet"),D=O.getAttribute("data-value");!V||!D||n.setFilter(V,i[V]===D?null:D)}const ae=de(null);return vt(()=>{n&&n.on("mapFocus",({value:F}={})=>{if(!F||!ae.value)return;const V=[...ae.value.querySelectorAll(".fr-row")].find(D=>D.textContent&&D.textContent.includes(F));V&&(ae.value.scrollTop=Math.max(0,V.offsetTop-8))})}),Ot(` -======= -`,"rd-topbar"),(p,b)=>(W(),X("header",{ref_key:"rootEl",ref:h,class:"rd-topbar","data-region":"topbar"},[T("div",l0,[T("span",c0,[T("span",u0,[ut(ue(he(a).title||"Research Dashboard"),1),b[1]||(b[1]=T("span",{class:"dot"},".",-1))])])]),T("div",p0,[je(qr,{"model-value":i.value,placeholder:l.value,"aria-label":l.value,"max-width":"360px",onSearch:c},null,8,["model-value","placeholder","aria-label"])]),b[3]||(b[3]=T("span",{class:"rd-spacer"},null,-1)),s.value?(W(),X("div",d0,[b[2]||(b[2]=T("span",{class:"ic"},"⌕",-1)),It(T("input",{type:"text","onUpdate:modelValue":b[0]||(b[0]=A=>u.value=A),placeholder:"Search people groups…","data-search-input":"","aria-label":"Search people groups",onInput:k,onFocus:k,onKeydown:x},null,544),[[Dg,u.value]]),d.value&&u.value.trim().length>=2?(W(),X("div",{key:0,class:"rd-results","data-search-results":"",onClick:C},[v.value.length?(W(!0),X(Ce,{key:0},tt(v.value,(A,w)=>(W(),X("div",{key:A.slug,class:qe(["rd-res",{on:w===f.value}]),"data-slug":A.slug},[T("span",f0,ue(A.name),1),T("span",h0,ue(he(st)(A.country_code))+" · "+ue(he(st)(A.religion)),1)],10,g0))),128)):(W(),X("div",m0,"No people groups match “"+ue(u.value.trim())+"”.",1))])):Me("",!0)])):Me("",!0),T("span",{class:"rd-align",role:"button",tabindex:"0","data-align-btn":"",title:t("align_dashboard_tip","Reset the dashboard layout to its default alignment"),onClick:r,onKeydown:[qa(gn(r,["prevent"]),["enter"]),qa(gn(r,["prevent"]),["space"])]}," ⤢ "+ue(t("align_dashboard","Align Dashboard")),41,$0),je(o0,{"embed-path":b0})],512))}},jo="#c4c8c0";function y0(e,t){const o=as(e);return o&&o.propertyKey===t&&o.palette?o.palette:null}const v0=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_");function k0(){const e=re(()=>{const o=as(Lo.DOXA_REGION),n=o&&o.propertyKey==="doxaRegion";return{slug:n&&o.slugColors||null,alias:n&&o.aliases||null}});function t(o,n,a,s){if(a==null||a==="")return jo;if(o==="people"){const r=y0(Lo.AFFINITY_BLOCK,"affinityBlock");return r&&r[s||a]||jo}if(o==="place"){const{slug:r,alias:i}=e.value,l=s||a;if(r){const c=r[v0(l)];if(c)return c}if(i){const c=i[l];if(c)return c}return jo}return o==="language"?xo[s||a]||jo:o==="religion"&&Nt[s]||jo}return{colorFor:t,NEUTRAL:jo}}const w0={class:"rd-facets","data-region":"facets"},x0={class:"fr-head"},S0={class:"fr-title"},L0={class:"fr-scope","data-scope-count":""},A0=["data-facet-section"],P0=["onClick"],E0={class:"fr-rows"},C0=["data-facet","data-value","tabindex","role","aria-pressed","aria-label","title"],N0=["data-expand","data-expand-value","aria-expanded","aria-label"],T0={key:1,class:"fr-caret fr-caret-leaf","aria-hidden":"true"},R0={class:"fr-lbl"},M0={class:"fr-bar"},O0={class:"fr-cnt"},F0={key:3,class:"fr-donly","aria-hidden":"true"},I0={__name:"DashboardFacetRail",setup(e){const t=(F,O)=>Se("dashboard."+F)||O,o=Ie("dashboardData",null),n=Ie("selectionBus",null),a=Ie("dashboardConfig",{}),s=Ie("dataStore",null),r=Ie("searchSourceId",null),i=(n==null?void 0:n.filterSet)||{},l=Object.fromEntries(Object.entries(a.facets||{}).map(([F,O])=>[F,O.get])),c=new Set(Object.entries(a.facets||{}).filter(([,F])=>F&&F.dashboardOnly).map(([F])=>F)),u=la(n,ia(a));function d(F){var me,we;const O=((me=o==null?void 0:o.rows)==null?void 0:me.value)||[],V=Object.keys(i).filter(Le=>!F.includes(Le)),D=!!(((we=n==null?void 0:n.searchTerm)==null?void 0:we.value)||"").trim();if(!V.length&&!D)return O;const ae=O.filter(Le=>V.every(Ae=>{const ve=l[Ae];return ve?ve(Le)===i[Ae]:!0}));return ca(ae,u)}const f=new Set(["people","place","language","religion"]),v=Bo(Object.fromEntries((a.facetRail||[]).map(F=>[F.id,f.has(F.id)])));function L(F){v[F]=!v[F]}const k=Bo({}),x=(F,O)=>F+":"+O;function C(F,O){const V=x(F,O);k[V]=!h(F,O)}function h(F,O){const V=x(F,O);return V in k?k[V]:i[F]===O}function m(F,O,V){const D=F.reduce((ae,me)=>Math.max(ae,me.value),0)||1;return F.map(ae=>({facet:O,value:ae.key,label:ae.key,count:ae.value,frac:ae.value/D,level:V,other:!!ae.other,active:!ae.other&&i[O]===ae.key,dashboardOnly:c.has(O)}))}const p=new Map;function b(F,O,V){if(V)return p.set(F,O.map(oe=>({...oe,count:0,frac:0,active:!1,expanded:!1}))),O;const D=p.get(F);if(!D)return O;const ae=oe=>oe.facet+":"+oe.value,me=new Set(O.map(ae));if(!D.filter(oe=>!me.has(ae(oe))).length)return O;const Le=new Map;let Ae="";for(const oe of D){const fe=ae(oe);if(me.has(fe)){Ae=fe;continue}Le.has(Ae)||Le.set(Ae,[]),Le.get(Ae).push({...oe,zero:!0})}const ve=[];for(const oe of Le.get("")||[])ve.push(oe);for(let oe=0;oefe.level;)ve.push(O[++oe]);for(const _ of ye)ve.push(_)}}return ve}function A(F,O){return m(Kr(d([F]),l[F],O??24),F,0)}function w(F,O){const V=[],D=(ae,me)=>{const we=F[ae],Le=(O&&O[ae])??(ae===F.length-1?40:30);let Ae=d(F.slice(ae));me.length&&(Ae=Ae.filter(oe=>me.every(([fe,ye])=>{const _=l[fe];return _?_(oe)===ye:!0})));const ve=m(Kr(Ae,l[we],Le),we,ae);for(const oe of ve)oe.hasChildren=!oe.other&&ae{var V;const F=new Map,O=a.facets&&a.facets.religion_family;if(!O||!O.famKey)return F;for(const D of((V=o==null?void 0:o.rows)==null?void 0:V.value)||[]){const ae=O.get(D);ae&&!F.has(ae)&&F.set(ae,O.famKey(D))}return F}),ge=re(()=>{var F;return!Object.keys(i).length&&!(((F=n==null?void 0:n.searchTerm)==null?void 0:F.value)||"").trim()}),I=re(()=>(a.facetRail||[]).map(F=>{let O=F.drill?w(F.drill,F.topN):A(F.facet,F.topN);if(O=b(F.id,O,ge.value),F.tree==="affinity"){const V=U.value;O=O.map(D=>D.other?D:{...D,label:V[D.facet]&&V[D.facet].get(D.value)||D.label})}return O=B(O,F.axis,Y.value),{id:F.id,title:F.title,axis:F.axis,rows:M(O)}})),Q=re(()=>{var V;const F=((V=o==null?void 0:o.rows)==null?void 0:V.value)||[],O=Object.keys(i);return O.length?F.filter(D=>O.every(ae=>{const me=l[ae];return me?me(D)===i[ae]:!0})).length:F.length});function H(F){const O=F.target;if(!O||!O.closest)return;const V=O.closest("[data-expand]");if(V){const we=V.getAttribute("data-expand"),Le=V.getAttribute("data-expand-value");we&&Le!=null&&(F.stopPropagation(),C(we,Le));return}const D=O.closest("[data-facet]");if(!D||!n)return;const ae=D.getAttribute("data-facet"),me=D.getAttribute("data-value");!ae||!me||n.setFilter(ae,i[ae]===me?null:me)}function G(F){if(F.key!=="Enter"&&F.key!==" "&&F.key!=="Spacebar")return;const O=F.target&&F.target.closest?F.target.closest("[data-facet]"):null;if(!O||!n)return;F.preventDefault();const V=O.getAttribute("data-facet"),D=O.getAttribute("data-value");!V||!D||n.setFilter(V,i[V]===D?null:D)}const ie=pe(null);return vt(()=>{n&&n.on("mapFocus",({value:F}={})=>{if(!F||!ie.value)return;const V=[...ie.value.querySelectorAll(".fr-row")].find(D=>D.textContent&&D.textContent.includes(F));V&&(ie.value.scrollTop=Math.max(0,V.offsetTop-8))})}),Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .rd-facets{ display:flex; flex-direction:column; height:100%; min-height:0; box-sizing:border-box; background:var(--rd-panel,#fff); } .rd-facets .fr-head{ flex:0 0 auto; padding:var(--s3,12px) var(--s3,12px) var(--s2,8px); border-bottom:1px solid var(--rd-line, #d1d4cd); } @@ -549,11 +483,7 @@ .fr-cnt{ flex:0 0 auto; font-variant-numeric:tabular-nums; color:var(--dx-muted, #6d766e); min-width:30px; text-align:right; font-size:11px; margin-left:8px; } .fr-row.dash-only .fr-donly{ flex:0 0 auto; margin-left:6px; font-size:10px; line-height:1; color:var(--dx-muted, #6d766e); opacity:.75; } -<<<<<<< HEAD `,"rd-facetrail"),(F,O)=>(H(),Z("aside",x0,[T("div",S0,[T("div",L0,ue(t("vertical_legend","Vertical Legend")),1),T("div",A0,[T("b",null,ue(J.value.toLocaleString("en-US")),1),ut(" "+ue(t("groups_in_scope","groups in scope")),1)])]),T("div",{class:"fr-body",ref_key:"railEl",ref:ae,onClick:W,onKeydown:G},[(H(!0),Z(Ce,null,tt(I.value,V=>(H(),Z("div",{key:V.id,class:"fr-sec","data-facet-section":V.id},[T("div",{class:He(["fr-sech",{closed:!v[V.id]}]),onClick:gn(D=>L(V.id),["stop"])},[T("span",null,ue(V.title),1),O[0]||(O[0]=T("span",{class:"chev"},"▾",-1))],10,E0),It(T("div",C0,[(H(!0),Z(Ce,null,tt(V.rows,D=>(H(),Z("div",{key:D.facet+":"+D.value,class:He(["fr-row",["l"+D.level,{on:D.active,other:D.other,zero:D.zero,inert:D.other||D.zero,"dash-only":D.dashboardOnly}]]),"data-facet":D.other||D.zero?null:D.facet,"data-value":D.other||D.zero?null:D.value,tabindex:D.other||D.zero?null:0,role:D.other||D.zero?null:"button","aria-pressed":D.other||D.zero?null:D.active?"true":"false","aria-label":D.other||D.zero?null:(D.active?t("remove_filter","Remove filter"):t("filter_by","Filter by"))+" "+D.label+", "+D.count.toLocaleString("en-US")+" "+t("groups","groups")+(D.dashboardOnly?". Updates the charts on this dashboard only; it does not filter the list below.":""),title:D.dashboardOnly?"Updates this dashboard only — the list below does not filter on "+D.label:null},[(H(!0),Z(Ce,null,tt(D.trunks,(se,me)=>(H(),Z("span",{key:"tr"+me,class:He(["fr-trunk","fr-trunk-"+se])},null,2))),128)),D.hasChildren?(H(),Z("button",{key:0,type:"button",class:He(["fr-caret-btn",{open:D.expanded}]),"data-expand":D.facet,"data-expand-value":D.value,"aria-expanded":D.expanded?"true":"false","aria-label":(D.expanded?t("collapse","Collapse"):t("expand","Expand"))+" "+D.label},[...O[1]||(O[1]=[T("span",{class:"fr-caret-gl","aria-hidden":"true"},"▸",-1)])],10,T0)):(H(),Z("span",R0)),D.swatch?(H(),Z("span",{key:2,class:"fr-sw",style:lt({background:D.swatch}),"aria-hidden":"true"},null,4)):Me("",!0),T("span",M0,ue(D.label),1),T("span",O0,[T("i",{style:lt({width:Math.max(4,D.frac*100)+"%"})},null,4)]),T("span",F0,ue(D.count.toLocaleString("en-US")),1),D.dashboardOnly?(H(),Z("span",I0,"◐")):Me("",!0)],10,N0))),128))],512),[[qt,v[V.id]]])],8,P0))),128))],544)]))}},U0=["data-sel-count","data-fullscreen"],G0=["data-collapsed"],j0=["title","aria-expanded"],z0={class:"ttl"},B0={class:"ct","data-table-count":""},V0={key:0,class:"rd-pill","data-sel-pill":"",role:"status"},q0=["aria-pressed"],H0=["aria-pressed"],W0={key:2,class:"rd-toast","data-export-toast":""},K0=["aria-pressed","title","aria-label"],Y0=["aria-busy","title","onKeydown"],X0={key:0,class:"rd-csv-n"},Z0=["data-sort-by","aria-rowcount"],J0=["title"],Q0=["checked","aria-label"],e1=["title","aria-sort","data-col","onClick"],t1={class:"ind"},o1=["data-slug","aria-selected","aria-rowindex"],n1={class:"rd-td chk",role:"gridcell"},a1=["checked","aria-label"],s1={class:"rd-foot",role:"row"},r1=90,i1=9.9,l1=12,ua=26,c1={__name:"DashboardDataTable",setup(e){const t=(Y,$e)=>Se(Y)||$e,o=Fe("dashboardData",null),n=Fe("selectionBus",null),a=Fe("dashboardConfig",{}),s=Y=>{if(typeof Y=="number")return Y;const $e=parseFloat(String(Y??"").replace(/[^0-9.\-]/g,""));return isNaN($e)?null:$e},r=Y=>Y==null?"":Number(Y).toLocaleString("en-US"),i=re(()=>a.columns||[]);function l(Y){const $e=Number(Y&&Y.minW);if(Number.isFinite($e)&&$e>0)return $e;const be=String(Y&&Y.label||"");return be?Math.ceil(be.length*i1)+l1:r1}function c(Y){const $e=Number(Y&&Y.w);return{flex:`${Number.isFinite($e)&&$e>0?$e:1} 1 0`,minWidth:l(Y)+"px"}}const u=re(()=>i.value.reduce((Y,$e)=>Y+l($e),30)),d=re(()=>({minWidth:u.value+"px"})),f=Object.fromEntries(Object.entries(a.facets||{}).map(([Y,$e])=>[Y,$e.get])),v=re(()=>{var Y;return((Y=o==null?void 0:o.rows)==null?void 0:Y.value)||[]}),L=(n==null?void 0:n.filterSet)||{},k=n==null?void 0:n.selectionSet;function x(Y,$e,be){const ze=f[$e];if(!ze)return!0;const Ve=ze(Y);return Array.isArray(be)?be.includes(Ve):Ve===be}const C=la(n,ia(a)),m=re(()=>{var ze;const Y=Object.keys(L),$e=!!(((ze=n==null?void 0:n.searchTerm)==null?void 0:ze.value)||"").trim();if(!Y.length&&!$e)return v.value;const be=v.value.filter(Ve=>Y.every(Tt=>x(Ve,Tt,L[Tt])));return ca(be,C)}),h=de([]);function p(Y,$e){const be=!!($e&&$e.shiftKey),ze=h.value.findIndex(Ve=>Ve.key===Y.key);if(ze<0)h.value=(be?[...h.value]:[]).concat({key:Y.key,dir:"asc"});else if(h.value[ze].dir==="asc"){const Ve=[...h.value];Ve[ze]={key:Y.key,dir:"desc"},h.value=Ve}else h.value=be?h.value.filter(Ve=>Ve.key!==Y.key):[]}function b(Y){const $e=h.value.find(be=>be.key===Y.key);return $e?$e.dir==="asc"?"ascending":"descending":"none"}const A=re(()=>{const Y=h.value;if(!Y.length)return m.value;const $e=Y.map(be=>({col:i.value.find(ze=>ze.key===be.key),dir:be.dir==="asc"?1:-1}));return m.value.slice().sort((be,ze)=>{for(const{col:Ve,dir:Tt}of $e){let Pt=Ve.get(be),Gt=Ve.get(ze);if((Pt==null||Pt==="")&&(Pt=Ve.type==="num"?-1/0:""),(Gt==null||Gt==="")&&(Gt=Ve.type==="num"?-1/0:""),PtGt)return 1*Tt}return 0})}),w=de(!1),M=de(!1);function U(){w.value=!w.value}function ne(){M.value=!M.value}const B=()=>n&&n.selectionVersion?n.selectionVersion.value:0,X=re(()=>{let Y=A.value;if(w.value&&(B(),Y=Y.filter($e=>k&&k.has($e.slug))),M.value){B();const $e=[],be=[];for(const ze of Y)(k&&k.has(ze.slug)?$e:be).push(ze);Y=$e.concat(be)}return Y}),pe=de(0),I=de(360),J=de(null);let W=null;const G=de(0);function ae(Y){pe.value=Y.target.scrollTop,G.value=Y.target.scrollLeft}const F=re(()=>Math.max(0,Math.floor(pe.value/ua)-6)),O=re(()=>Math.ceil(I.value/ua)+12),V=re(()=>X.value.slice(F.value,F.value+O.value)),D=re(()=>F.value*ua),se=re(()=>Math.max(0,(X.value.length-(F.value+V.value.length))*ua));vt(()=>{J.value&&(I.value=J.value.clientHeight||360,W=new ResizeObserver(()=>{I.value=J.value.clientHeight||I.value}),W.observe(J.value)),n&&n.on("toggleTable",Y=>{g.value=!!Y}),n&&n.on("focusRow",({slug:Y}={})=>{if(!Y||!J.value)return;const $e=X.value.findIndex(be=>be.slug===Y);$e>=0&&(J.value.scrollTop=Math.max(0,$e*ua-I.value/2))})}),vt(()=>{typeof document<"u"&&document.addEventListener("keydown",R)}),Dt(()=>{W&&W.disconnect(),clearTimeout(gt),typeof document<"u"&&document.removeEventListener("keydown",R)});const me=re(()=>(B(),k?k.size:0)),we=Y=>!!(k&&k.has(Y.slug)),Le=re(()=>B()),Ae=de(null),ke=de("select");let oe=new Set;function fe(Y,$e){Ae.value=Y,ke.value=$e,oe=new Set(k)}function ye(Y,$e){const be=X.value,ze=be.findIndex(co=>co.slug===Y),Ve=be.findIndex(co=>co.slug===$e);if(ze<0||Ve<0)return[];const[Tt,Pt]=ze<=Ve?[ze,Ve]:[Ve,ze],Gt=[];for(let co=Tt;co<=Pt;co++)Gt.push(be[co].slug);return Gt}function _(Y,$e){if(!n||!Y)return;const be=!!($e&&($e.ctrlKey||$e.metaKey));if(!!($e&&$e.shiftKey)&&Ae.value){const Ve=ye(Ae.value,Y);if(!Ve.length)return;if(be){const Tt=new Set(oe);if(ke.value==="deselect")for(const Pt of Ve)Tt.delete(Pt);else for(const Pt of Ve)Tt.add(Pt);n.setSelection(Tt)}else n.setSelection(Ve);return}if(be){const Ve=!k.has(Y);fe(Y,Ve?"select":"deselect"),n.toggleSelect(Y),oe=new Set(k);return}fe(Y,"select"),n.setSelection([Y]),oe=new Set(k)}function P(Y){const $e=Y.target;if(!$e||!$e.closest)return;const be=$e.closest(".rd-row");if(!be||!n)return;const ze=be.getAttribute("data-slug");if(ze){if($e.closest(".rd-td.chk")){if(Y.shiftKey||Y.ctrlKey||Y.metaKey){_(ze,Y);return}fe(ze,k.has(ze)?"deselect":"select"),n.toggleSelect(ze),oe=new Set(k);return}_(ze,Y)}}function S(Y){Y.shiftKey&&Y.target&&Y.target.closest&&Y.target.closest(".rd-row")&&Y.preventDefault()}const z=re(()=>{B();const Y=m.value;if(!Y.length)return!1;for(const $e of Y)if(!k.has($e.slug))return!1;return!0}),ee=re(()=>{if(B(),z.value)return!1;for(const Y of m.value)if(k.has(Y.slug))return!0;return!1});function te(){if(!n)return;const Y=m.value.map($e=>$e.slug);z.value?n.deselectMany(Y):n.selectMany(Y),Ae.value=null,oe=new Set(k)}const ce=de(null);function ie(Y){ce.value=Y||null}rt([ee,ce],()=>{ce.value&&(ce.value.indeterminate=ee.value)},{immediate:!0}),rt([h,()=>m.value.length,w,M],()=>{Ae.value=null}),rt(me,Y=>{Y||(w.value=!1)});const g=de(!1);function $(){g.value=!g.value,n&&n.emit("toggleTable",g.value)}const y=de(!1),E=de(null);function q(){const Y=E.value,$e=Y&&Y.getRootNode?Y.getRootNode():document,be=$e&&$e.fullscreenElement||document.fullscreenElement;y.value=!!(be&&Y&&(be===Y||be.contains&&be.contains(Y)))}typeof document<"u"&&document.addEventListener("fullscreenchange",q),Dt(()=>{typeof document<"u"&&document.removeEventListener("fullscreenchange",q)});function K(){const Y=E.value;if(Y&&Y.requestFullscreen){document.fullscreenElement?document.exitFullscreen().catch(()=>{}):Y.requestFullscreen().then(q).catch(()=>{y.value=!0}),!y.value&&g.value&&(g.value=!1,n&&n.emit("toggleTable",!1));return}y.value=!y.value,y.value&&g.value&&(g.value=!1,n&&n.emit("toggleTable",!1))}function R(Y){if(Y.key==="Escape"){if(document.fullscreenElement){document.exitFullscreen().catch(()=>{});return}y.value&&(y.value=!1)}}const j=re(()=>m.value.reduce((Y,$e)=>Y+(s($e.population)||0),0)),le=re(()=>m.value.length),{labelFor:ve}=ra(a,Fe("dataStore",null),Fe("searchSourceId",null)),Ue=o&&n?Br({rowStore:o.rowStore,rows:o.rows,selectionSet:n.selectionSet,filterSet:n.filterSet,FACET_ACC:f,dataOpts:a.data,labelFor:ve}):null,qe=de(""),je=de(!1);let gt=null;async function mt(){if(!(!Ue||je.value)){je.value=!0;try{const Y=await Ue.exportCsvAsync(),$e=Y.downloaded?"exported":Y.clipboard?"copied to clipboard":"ready";qe.value=`✓ ${r(Y.rows)} rows × ${Y.fields} fields ${$e}`}catch{qe.value="✕ Export failed"}finally{je.value=!1,clearTimeout(gt),gt=setTimeout(()=>{qe.value=""},3200)}}}function Qe(){Ue&&Ue.prefetchExportFields()}return Ot(` -======= -`,"rd-facetrail"),(F,O)=>(W(),X("aside",w0,[T("div",x0,[T("div",S0,ue(t("vertical_legend","Vertical Legend")),1),T("div",L0,[T("b",null,ue(Q.value.toLocaleString("en-US")),1),ut(" "+ue(t("groups_in_scope","groups in scope")),1)])]),T("div",{class:"fr-body",ref_key:"railEl",ref:ie,onClick:H,onKeydown:G},[(W(!0),X(Ce,null,tt(I.value,V=>(W(),X("div",{key:V.id,class:"fr-sec","data-facet-section":V.id},[T("div",{class:qe(["fr-sech",{closed:!v[V.id]}]),onClick:gn(D=>L(V.id),["stop"])},[T("span",null,ue(V.title),1),O[0]||(O[0]=T("span",{class:"chev"},"▾",-1))],10,P0),It(T("div",E0,[(W(!0),X(Ce,null,tt(V.rows,D=>(W(),X("div",{key:D.facet+":"+D.value,class:qe(["fr-row",["l"+D.level,{on:D.active,other:D.other,zero:D.zero,inert:D.other||D.zero,"dash-only":D.dashboardOnly}]]),"data-facet":D.other||D.zero?null:D.facet,"data-value":D.other||D.zero?null:D.value,tabindex:D.other||D.zero?null:0,role:D.other||D.zero?null:"button","aria-pressed":D.other||D.zero?null:D.active?"true":"false","aria-label":D.other||D.zero?null:(D.active?t("remove_filter","Remove filter"):t("filter_by","Filter by"))+" "+D.label+", "+D.count.toLocaleString("en-US")+" "+t("groups","groups")+(D.dashboardOnly?". Updates the charts on this dashboard only; it does not filter the list below.":""),title:D.dashboardOnly?"Updates this dashboard only — the list below does not filter on "+D.label:null},[(W(!0),X(Ce,null,tt(D.trunks,(ae,me)=>(W(),X("span",{key:"tr"+me,class:qe(["fr-trunk","fr-trunk-"+ae])},null,2))),128)),D.hasChildren?(W(),X("button",{key:0,type:"button",class:qe(["fr-caret-btn",{open:D.expanded}]),"data-expand":D.facet,"data-expand-value":D.value,"aria-expanded":D.expanded?"true":"false","aria-label":(D.expanded?t("collapse","Collapse"):t("expand","Expand"))+" "+D.label},[...O[1]||(O[1]=[T("span",{class:"fr-caret-gl","aria-hidden":"true"},"▸",-1)])],10,N0)):(W(),X("span",T0)),D.swatch?(W(),X("span",{key:2,class:"fr-sw",style:lt({background:D.swatch}),"aria-hidden":"true"},null,4)):Me("",!0),T("span",R0,ue(D.label),1),T("span",M0,[T("i",{style:lt({width:Math.max(4,D.frac*100)+"%"})},null,4)]),T("span",O0,ue(D.count.toLocaleString("en-US")),1),D.dashboardOnly?(W(),X("span",F0,"◐")):Me("",!0)],10,C0))),128))],512),[[qt,v[V.id]]])],8,A0))),128))],544)]))}},D0=["data-sel-count","data-fullscreen"],U0=["data-collapsed"],G0=["title","aria-expanded"],j0={class:"ttl"},z0={class:"ct","data-table-count":""},B0={key:0,class:"rd-pill","data-sel-pill":"",role:"status"},V0=["aria-pressed"],q0=["aria-pressed"],H0={key:2,class:"rd-toast","data-export-toast":""},W0=["aria-pressed","title","aria-label"],K0=["aria-busy","title","onKeydown"],Y0={key:0,class:"rd-csv-n"},X0=["data-sort-by","aria-rowcount"],Z0=["title"],J0=["checked","aria-label"],Q0=["title","aria-sort","data-col","onClick"],e1={class:"ind"},t1=["data-slug","aria-selected","aria-rowindex"],o1={class:"rd-td chk",role:"gridcell"},n1=["checked","aria-label"],a1={class:"rd-foot",role:"row"},s1=90,r1=9.9,i1=12,ua=26,l1={__name:"DashboardDataTable",setup(e){const t=(J,$e)=>Se(J)||$e,o=Ie("dashboardData",null),n=Ie("selectionBus",null),a=Ie("dashboardConfig",{}),s=J=>{if(typeof J=="number")return J;const $e=parseFloat(String(J??"").replace(/[^0-9.\-]/g,""));return isNaN($e)?null:$e},r=J=>J==null?"":Number(J).toLocaleString("en-US"),i=re(()=>a.columns||[]);function l(J){const $e=Number(J&&J.minW);if(Number.isFinite($e)&&$e>0)return $e;const be=String(J&&J.label||"");return be?Math.ceil(be.length*r1)+i1:s1}function c(J){const $e=Number(J&&J.w);return{flex:`${Number.isFinite($e)&&$e>0?$e:1} 1 0`,minWidth:l(J)+"px"}}const u=re(()=>i.value.reduce((J,$e)=>J+l($e),30)),d=re(()=>({minWidth:u.value+"px"})),f=Object.fromEntries(Object.entries(a.facets||{}).map(([J,$e])=>[J,$e.get])),v=re(()=>{var J;return((J=o==null?void 0:o.rows)==null?void 0:J.value)||[]}),L=(n==null?void 0:n.filterSet)||{},k=n==null?void 0:n.selectionSet;function x(J,$e,be){const Ge=f[$e];if(!Ge)return!0;const Be=Ge(J);return Array.isArray(be)?be.includes(Be):Be===be}const C=la(n,ia(a)),h=re(()=>{var Ge;const J=Object.keys(L),$e=!!(((Ge=n==null?void 0:n.searchTerm)==null?void 0:Ge.value)||"").trim();if(!J.length&&!$e)return v.value;const be=v.value.filter(Be=>J.every(Tt=>x(Be,Tt,L[Tt])));return ca(be,C)}),m=pe([]);function p(J,$e){const be=!!($e&&$e.shiftKey),Ge=m.value.findIndex(Be=>Be.key===J.key);if(Ge<0)m.value=(be?[...m.value]:[]).concat({key:J.key,dir:"asc"});else if(m.value[Ge].dir==="asc"){const Be=[...m.value];Be[Ge]={key:J.key,dir:"desc"},m.value=Be}else m.value=be?m.value.filter(Be=>Be.key!==J.key):[]}function b(J){const $e=m.value.find(be=>be.key===J.key);return $e?$e.dir==="asc"?"ascending":"descending":"none"}const A=re(()=>{const J=m.value;if(!J.length)return h.value;const $e=J.map(be=>({col:i.value.find(Ge=>Ge.key===be.key),dir:be.dir==="asc"?1:-1}));return h.value.slice().sort((be,Ge)=>{for(const{col:Be,dir:Tt}of $e){let Pt=Be.get(be),Gt=Be.get(Ge);if((Pt==null||Pt==="")&&(Pt=Be.type==="num"?-1/0:""),(Gt==null||Gt==="")&&(Gt=Be.type==="num"?-1/0:""),PtGt)return 1*Tt}return 0})}),w=pe(!1),M=pe(!1);function U(){w.value=!w.value}function ne(){M.value=!M.value}const B=()=>n&&n.selectionVersion?n.selectionVersion.value:0,Y=re(()=>{let J=A.value;if(w.value&&(B(),J=J.filter($e=>k&&k.has($e.slug))),M.value){B();const $e=[],be=[];for(const Ge of J)(k&&k.has(Ge.slug)?$e:be).push(Ge);J=$e.concat(be)}return J}),ge=pe(0),I=pe(360),Q=pe(null);let H=null;const G=pe(0);function ie(J){ge.value=J.target.scrollTop,G.value=J.target.scrollLeft}const F=re(()=>Math.max(0,Math.floor(ge.value/ua)-6)),O=re(()=>Math.ceil(I.value/ua)+12),V=re(()=>Y.value.slice(F.value,F.value+O.value)),D=re(()=>F.value*ua),ae=re(()=>Math.max(0,(Y.value.length-(F.value+V.value.length))*ua));vt(()=>{Q.value&&(I.value=Q.value.clientHeight||360,H=new ResizeObserver(()=>{I.value=Q.value.clientHeight||I.value}),H.observe(Q.value)),n&&n.on("toggleTable",J=>{g.value=!!J}),n&&n.on("focusRow",({slug:J}={})=>{if(!J||!Q.value)return;const $e=Y.value.findIndex(be=>be.slug===J);$e>=0&&(Q.value.scrollTop=Math.max(0,$e*ua-I.value/2))})}),vt(()=>{typeof document<"u"&&document.addEventListener("keydown",N)}),Dt(()=>{H&&H.disconnect(),clearTimeout(ht),typeof document<"u"&&document.removeEventListener("keydown",N)});const me=re(()=>(B(),k?k.size:0)),we=J=>!!(k&&k.has(J.slug)),Le=re(()=>B()),Ae=pe(null),ve=pe("select");let oe=new Set;function fe(J,$e){Ae.value=J,ve.value=$e,oe=new Set(k)}function ye(J,$e){const be=Y.value,Ge=be.findIndex(co=>co.slug===J),Be=be.findIndex(co=>co.slug===$e);if(Ge<0||Be<0)return[];const[Tt,Pt]=Ge<=Be?[Ge,Be]:[Be,Ge],Gt=[];for(let co=Tt;co<=Pt;co++)Gt.push(be[co].slug);return Gt}function _(J,$e){if(!n||!J)return;const be=!!($e&&($e.ctrlKey||$e.metaKey));if(!!($e&&$e.shiftKey)&&Ae.value){const Be=ye(Ae.value,J);if(!Be.length)return;if(be){const Tt=new Set(oe);if(ve.value==="deselect")for(const Pt of Be)Tt.delete(Pt);else for(const Pt of Be)Tt.add(Pt);n.setSelection(Tt)}else n.setSelection(Be);return}if(be){const Be=!k.has(J);fe(J,Be?"select":"deselect"),n.toggleSelect(J),oe=new Set(k);return}fe(J,"select"),n.setSelection([J]),oe=new Set(k)}function P(J){const $e=J.target;if(!$e||!$e.closest)return;const be=$e.closest(".rd-row");if(!be||!n)return;const Ge=be.getAttribute("data-slug");if(Ge){if($e.closest(".rd-td.chk")){if(J.shiftKey||J.ctrlKey||J.metaKey){_(Ge,J);return}fe(Ge,k.has(Ge)?"deselect":"select"),n.toggleSelect(Ge),oe=new Set(k);return}_(Ge,J)}}function S(J){J.shiftKey&&J.target&&J.target.closest&&J.target.closest(".rd-row")&&J.preventDefault()}const j=re(()=>{B();const J=h.value;if(!J.length)return!1;for(const $e of J)if(!k.has($e.slug))return!1;return!0}),ee=re(()=>{if(B(),j.value)return!1;for(const J of h.value)if(k.has(J.slug))return!0;return!1});function te(){if(!n)return;const J=h.value.map($e=>$e.slug);j.value?n.deselectMany(J):n.selectMany(J),Ae.value=null,oe=new Set(k)}const ce=pe(null);function le(J){ce.value=J||null}rt([ee,ce],()=>{ce.value&&(ce.value.indeterminate=ee.value)},{immediate:!0}),rt([m,()=>h.value.length,w,M],()=>{Ae.value=null}),rt(me,J=>{J||(w.value=!1)});const g=pe(!1);function $(){g.value=!g.value,n&&n.emit("toggleTable",g.value)}const y=pe(!1),E=pe(null);function q(){const J=E.value,$e=J&&J.getRootNode?J.getRootNode():document,be=$e&&$e.fullscreenElement||document.fullscreenElement;y.value=!!(be&&J&&(be===J||be.contains&&be.contains(J)))}typeof document<"u"&&document.addEventListener("fullscreenchange",q),Dt(()=>{typeof document<"u"&&document.removeEventListener("fullscreenchange",q)});function K(){const J=E.value;if(J&&J.requestFullscreen){document.fullscreenElement?document.exitFullscreen().catch(()=>{}):J.requestFullscreen().then(q).catch(()=>{y.value=!0}),!y.value&&g.value&&(g.value=!1,n&&n.emit("toggleTable",!1));return}y.value=!y.value,y.value&&g.value&&(g.value=!1,n&&n.emit("toggleTable",!1))}function N(J){if(J.key==="Escape"){if(document.fullscreenElement){document.exitFullscreen().catch(()=>{});return}y.value&&(y.value=!1)}}const z=re(()=>h.value.reduce((J,$e)=>J+(s($e.population)||0),0)),se=re(()=>h.value.length),{labelFor:ke}=ra(a,Ie("dataStore",null),Ie("searchSourceId",null)),Fe=o&&n?Br({rowStore:o.rowStore,rows:o.rows,selectionSet:n.selectionSet,filterSet:n.filterSet,FACET_ACC:f,dataOpts:a.data,labelFor:ke}):null,Ve=pe(""),He=pe(!1);let ht=null;async function mt(){if(!(!Fe||He.value)){He.value=!0;try{const J=await Fe.exportCsvAsync(),$e=J.downloaded?"exported":J.clipboard?"copied to clipboard":"ready";Ve.value=`✓ ${r(J.rows)} rows × ${J.fields} fields ${$e}`}catch{Ve.value="✕ Export failed"}finally{He.value=!1,clearTimeout(ht),ht=setTimeout(()=>{Ve.value=""},3200)}}}function Ye(){Fe&&Fe.prefetchExportFields()}return Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .rd-table-wrap{ display:flex; flex-direction:column; height:100%; min-height:0; background:#fff; font-size:12px; } .rd-table-bar{ position:relative; display:flex; align-items:center; gap:10px; padding:4px 10px; border-bottom:1px solid var(--dx-line, #d1d4cd); flex:0 0 auto; } .rd-table-bar .ttl{ font-weight:700; color:var(--rd-ink, #3b463d); } .rd-table-bar .ct{ color:var(--dx-muted, #6d766e); } @@ -618,11 +548,7 @@ .rd-table-bar .rd-fs:hover{ color:var(--dx-text,#3b463d); border-color:#b9bdb4; } .rd-table-bar .rd-fs.on{ color:#2b352c; background:var(--rd-primary,#92b195); border-color:#84a487; } .rd-table-bar .rd-fs:focus-visible{ outline:2px solid #6d8a70; outline-offset:2px; } -<<<<<<< HEAD `,"rd-datatable"),(Y,$e)=>(H(),Z("div",{ref_key:"wrapEl",ref:E,class:He(["rd-table-wrap",{"is-full":y.value}]),"data-sel-count":me.value,"data-fullscreen":y.value?"1":"0"},[T("div",{class:"rd-table-bar","data-collapsed":g.value?"1":"0"},[T("button",{class:"rd-dock",title:g.value?"Expand table":"Collapse table — grow the map","data-table-dock":"","aria-expanded":g.value?"false":"true",onClick:$},ue(g.value?"▴":"▾"),9,j0),T("span",z0,ue(t("legend.titleBar.peopleGroups","People Groups")),1),T("span",B0,ue(r(le.value))+" "+ue(le.value===1?"group":t("dashboard.groups","groups")),1),me.value?(H(),Z("span",V0,[T("span",null,ue(r(me.value))+" selected",1)])):Me("",!0),me.value?(H(),Z(Ce,{key:1},[T("button",{class:He(["rd-vtog",{on:w.value}]),"data-only-selected":"","aria-pressed":w.value?"true":"false",title:"Show only the selected people groups",onClick:U},"Only selected",10,q0),T("button",{class:He(["rd-vtog",{on:M.value}]),"data-selected-first":"","aria-pressed":M.value?"true":"false",title:"Float the selected people groups to the top, keeping your column sort",onClick:ne},"Selected first",10,H0)],64)):Me("",!0),$e[0]||($e[0]=T("span",{class:"rd-bar-sp"},null,-1)),qe.value?(H(),Z("span",W0,ue(qe.value),1)):Me("",!0),T("button",{class:He(["rd-fs",{on:y.value}]),"data-table-fullscreen":"","aria-pressed":y.value?"true":"false",title:y.value?"Exit full screen (Esc) — back to seven rows":"Open this table full screen","aria-label":y.value?"Exit full screen":"Open table full screen",onClick:K},ue(y.value?"⤡ Exit full screen":"⤢ Full screen"),11,K0),T("span",{class:He(["rd-csv",{busy:je.value}]),role:"button",tabindex:"0","data-csv-btn":"","aria-busy":je.value?"true":"false",title:me.value?`Export the ${me.value} selected people groups — all fields`:`Export these ${r(le.value)} people groups — all fields`,onClick:mt,onMouseenter:Qe,onFocus:Qe,onKeydown:[qa(gn(mt,["prevent"]),["enter"]),qa(gn(mt,["prevent"]),["space"])]},[ut(ue(je.value?"…":"↓")+" Export CSV",1),me.value?(H(),Z("span",X0,ue(me.value),1)):Me("",!0)],42,Y0)],8,G0),It(T("div",{ref_key:"scroller",ref:J,class:"rd-grid",role:"grid","aria-multiselectable":"true","data-sort-scope":"view-local","data-sort-by":h.value.map(be=>be.key+":"+be.dir).join(","),"aria-rowcount":X.value.length+1,onScroll:ae,onClick:P,onMousedown:S},[T("div",{class:"rd-thead",role:"row",style:lt(d.value)},[T("div",{class:"rd-th chk",style:{cursor:"pointer"},title:z.value?"Deselect all "+r(le.value):"Select all "+r(le.value),onClick:te},[T("input",{type:"checkbox",checked:z.value,ref:ie,"aria-label":z.value?"Deselect all rows":"Select all rows",tabindex:"-1",style:{"pointer-events":"none"}},null,8,Q0)],8,J0),(H(!0),Z(Ce,null,tt(i.value,be=>(H(),Z("div",{key:be.key,class:He(["rd-th",{num:be.type==="num"}]),style:lt(c(be)),title:`Sort this table by ${be.label} — shift-click to add a second column. Sorting orders the table only; the cards keep their own order.`,role:"columnheader","aria-sort":b(be),"data-col":be.key,onClick:ze=>p(be,ze)},[ut(ue(be.label),1),T("span",t1,ue(b(be)==="ascending"?"▲":b(be)==="descending"?"▼":""),1)],14,e1))),128))],4),T("div",{style:lt({height:D.value+"px"})},null,4),(H(!0),Z(Ce,null,tt(V.value,(be,ze)=>(H(),Z("div",{key:be.slug,class:He(["rd-row",{sel:Le.value>=0&&we(be)}]),role:"row","data-slug":be.slug,"aria-selected":we(be)?"true":"false",style:lt(d.value),"aria-rowindex":F.value+ze+2},[T("div",n1,[T("input",{type:"checkbox",class:"rd-rowchk",checked:we(be),"aria-label":"Select "+be.name,tabindex:"-1",style:{"pointer-events":"none"}},null,8,a1)]),(H(!0),Z(Ce,null,tt(i.value,Ve=>(H(),Z("div",{key:Ve.key,class:He(["rd-td",{num:Ve.type==="num"}]),style:lt(c(Ve)),role:"gridcell"},ue(Ve.type==="num"?r(Ve.get(be)):Ve.get(be)),7))),128))],14,o1))),128)),T("div",{style:lt({height:se.value+"px"})},null,4)],40,Z0),[[qt,!g.value]]),It(T("div",s1,[T("div",{class:"rd-foot-inner",style:lt([d.value,{transform:"translateX("+-G.value+"px)"}])},[$e[1]||($e[1]=T("div",{class:"rd-td chk"},null,-1)),(H(!0),Z(Ce,null,tt(i.value,(be,ze)=>(H(),Z("div",{key:"f-"+be.key,class:He(["rd-td",{num:be.type==="num"}]),style:lt(c(be))},[ze===0?(H(),Z(Ce,{key:0},[ut("Σ "+ue(r(le.value))+" groups",1)],64)):be.key==="population"?(H(),Z(Ce,{key:1},[ut(ue(r(j.value)),1)],64)):Me("",!0)],6))),128))],4)],512),[[qt,!g.value]])],10,U0))}},u1={class:"rd-tabs",role:"tablist","aria-label":"Rail views"},p1=["aria-selected","disabled","title","data-tab","onClick"],d1=["data-chart"],g1={class:"rd-ct"},f1={class:"rd-donutwrap"},h1=["aria-label"],m1=["d","fill","data-facet","data-key"],$1={class:"rd-legend"},b1=["data-facet","data-key","title"],_1={class:"rd-lt"},y1=["data-chart"],v1={class:"rd-ct"},k1={class:"rd-bars"},w1=["data-facet","data-key"],x1={class:"rd-bl"},S1={class:"rd-bt"},L1={class:"rd-bv"},A1={__name:"DashboardChartsRail",setup(e){const t=[{id:"charts",get label(){return Se("dashboard.charts")||"Charts"}},{id:"gospel",get label(){return Se("dashboard.gospel_resources")||"Gospel Resources"},disabled:!0,why:"Waiting on three decisions: the official lostness number, key-less vs a registered Joshua Project key, and the UI shape. See IDEA-GOSPEL-RESOURCES-INTEGRATION-STRATEGY."}],o=de("charts"),n=Fe("dashboardData",null),a=Fe("selectionBus",null),s=Fe("dashboardConfig",{}),r=(a==null?void 0:a.filterSet)||{},i=Object.fromEntries(Object.entries(s.facets||{}).map(([x,C])=>[x,C.get])),l=la(a,ia(s));function c(x){var b,A;const C=((b=n==null?void 0:n.rows)==null?void 0:b.value)||[],m=Object.keys(r).filter(w=>!x.includes(w)),h=!!(((A=a==null?void 0:a.searchTerm)==null?void 0:A.value)||"").trim();if(!m.length&&!h)return C;const p=C.filter(w=>m.every(M=>{const U=i[M];return U?U(w)===r[M]:!0}));return ca(p,l)}const u=re(()=>{var m,h,p,b,A;const x=(h=(m=s.facets)==null?void 0:m.country_code)==null?void 0:h.get,C=(b=(p=s.facets)==null?void 0:p.wagf_region)==null?void 0:b.get;return!x||!C?null:r0(((A=n==null?void 0:n.rows)==null?void 0:A.value)||[],x,C)}),d=re(()=>(s.charts||[]).map(x=>{var p,b;const C=((b=(p=s.facets)==null?void 0:p[x.facet])==null?void 0:b.get)||(A=>st(A[x.facet])),m=Kr(c([x.facet]),C,x.topN),h=x.facet==="country_code"?u.value:null;return{id:x.id,type:x.type,facet:x.facet,title:x.title,geometry:x.type==="bar"?l0(m,x.facet,h):i0(m,132,.58,x.facet,h)}})),f=(x,C)=>r[x]===C,v=x=>r[x]!=null;function L(x,C){!C||C==="Other"||!a||a.setFilter(x,r[x]===C?null:C)}function k(x){const C=x.target&&x.target.closest&&x.target.closest("[data-facet]");C&&L(C.getAttribute("data-facet"),C.getAttribute("data-key"))}return Ot(` -======= -`,"rd-datatable"),(J,$e)=>(W(),X("div",{ref_key:"wrapEl",ref:E,class:qe(["rd-table-wrap",{"is-full":y.value}]),"data-sel-count":me.value,"data-fullscreen":y.value?"1":"0"},[T("div",{class:"rd-table-bar","data-collapsed":g.value?"1":"0"},[T("button",{class:"rd-dock",title:g.value?"Expand table":"Collapse table — grow the map","data-table-dock":"","aria-expanded":g.value?"false":"true",onClick:$},ue(g.value?"▴":"▾"),9,G0),T("span",j0,ue(t("legend.titleBar.peopleGroups","People Groups")),1),T("span",z0,ue(r(se.value))+" "+ue(se.value===1?"group":t("dashboard.groups","groups")),1),me.value?(W(),X("span",B0,[T("span",null,ue(r(me.value))+" selected",1)])):Me("",!0),me.value?(W(),X(Ce,{key:1},[T("button",{class:qe(["rd-vtog",{on:w.value}]),"data-only-selected":"","aria-pressed":w.value?"true":"false",title:"Show only the selected people groups",onClick:U},"Only selected",10,V0),T("button",{class:qe(["rd-vtog",{on:M.value}]),"data-selected-first":"","aria-pressed":M.value?"true":"false",title:"Float the selected people groups to the top, keeping your column sort",onClick:ne},"Selected first",10,q0)],64)):Me("",!0),$e[0]||($e[0]=T("span",{class:"rd-bar-sp"},null,-1)),Ve.value?(W(),X("span",H0,ue(Ve.value),1)):Me("",!0),T("button",{class:qe(["rd-fs",{on:y.value}]),"data-table-fullscreen":"","aria-pressed":y.value?"true":"false",title:y.value?"Exit full screen (Esc) — back to seven rows":"Open this table full screen","aria-label":y.value?"Exit full screen":"Open table full screen",onClick:K},ue(y.value?"⤡ Exit full screen":"⤢ Full screen"),11,W0),T("span",{class:qe(["rd-csv",{busy:He.value}]),role:"button",tabindex:"0","data-csv-btn":"","aria-busy":He.value?"true":"false",title:me.value?`Export the ${me.value} selected people groups — all fields`:`Export these ${r(se.value)} people groups — all fields`,onClick:mt,onMouseenter:Ye,onFocus:Ye,onKeydown:[qa(gn(mt,["prevent"]),["enter"]),qa(gn(mt,["prevent"]),["space"])]},[ut(ue(He.value?"…":"↓")+" Export CSV",1),me.value?(W(),X("span",Y0,ue(me.value),1)):Me("",!0)],42,K0)],8,U0),It(T("div",{ref_key:"scroller",ref:Q,class:"rd-grid",role:"grid","aria-multiselectable":"true","data-sort-scope":"view-local","data-sort-by":m.value.map(be=>be.key+":"+be.dir).join(","),"aria-rowcount":Y.value.length+1,onScroll:ie,onClick:P,onMousedown:S},[T("div",{class:"rd-thead",role:"row",style:lt(d.value)},[T("div",{class:"rd-th chk",style:{cursor:"pointer"},title:j.value?"Deselect all "+r(se.value):"Select all "+r(se.value),onClick:te},[T("input",{type:"checkbox",checked:j.value,ref:le,"aria-label":j.value?"Deselect all rows":"Select all rows",tabindex:"-1",style:{"pointer-events":"none"}},null,8,J0)],8,Z0),(W(!0),X(Ce,null,tt(i.value,be=>(W(),X("div",{key:be.key,class:qe(["rd-th",{num:be.type==="num"}]),style:lt(c(be)),title:`Sort this table by ${be.label} — shift-click to add a second column. Sorting orders the table only; the cards keep their own order.`,role:"columnheader","aria-sort":b(be),"data-col":be.key,onClick:Ge=>p(be,Ge)},[ut(ue(be.label),1),T("span",e1,ue(b(be)==="ascending"?"▲":b(be)==="descending"?"▼":""),1)],14,Q0))),128))],4),T("div",{style:lt({height:D.value+"px"})},null,4),(W(!0),X(Ce,null,tt(V.value,(be,Ge)=>(W(),X("div",{key:be.slug,class:qe(["rd-row",{sel:Le.value>=0&&we(be)}]),role:"row","data-slug":be.slug,"aria-selected":we(be)?"true":"false",style:lt(d.value),"aria-rowindex":F.value+Ge+2},[T("div",o1,[T("input",{type:"checkbox",class:"rd-rowchk",checked:we(be),"aria-label":"Select "+be.name,tabindex:"-1",style:{"pointer-events":"none"}},null,8,n1)]),(W(!0),X(Ce,null,tt(i.value,Be=>(W(),X("div",{key:Be.key,class:qe(["rd-td",{num:Be.type==="num"}]),style:lt(c(Be)),role:"gridcell"},ue(Be.type==="num"?r(Be.get(be)):Be.get(be)),7))),128))],14,t1))),128)),T("div",{style:lt({height:ae.value+"px"})},null,4)],40,X0),[[qt,!g.value]]),It(T("div",a1,[T("div",{class:"rd-foot-inner",style:lt([d.value,{transform:"translateX("+-G.value+"px)"}])},[$e[1]||($e[1]=T("div",{class:"rd-td chk"},null,-1)),(W(!0),X(Ce,null,tt(i.value,(be,Ge)=>(W(),X("div",{key:"f-"+be.key,class:qe(["rd-td",{num:be.type==="num"}]),style:lt(c(be))},[Ge===0?(W(),X(Ce,{key:0},[ut("Σ "+ue(r(se.value))+" groups",1)],64)):be.key==="population"?(W(),X(Ce,{key:1},[ut(ue(r(z.value)),1)],64)):Me("",!0)],6))),128))],4)],512),[[qt,!g.value]])],10,D0))}},c1={class:"rd-tabs",role:"tablist","aria-label":"Rail views"},u1=["aria-selected","disabled","title","data-tab","onClick"],p1=["data-chart"],d1={class:"rd-ct"},g1={class:"rd-donutwrap"},f1=["aria-label"],h1=["d","fill","data-facet","data-key"],m1={class:"rd-legend"},$1=["data-facet","data-key","title"],b1={class:"rd-lt"},_1=["data-chart"],y1={class:"rd-ct"},v1={class:"rd-bars"},k1=["data-facet","data-key"],w1={class:"rd-bl"},x1={class:"rd-bt"},S1={class:"rd-bv"},L1={__name:"DashboardChartsRail",setup(e){const t=[{id:"charts",get label(){return Se("dashboard.charts")||"Charts"}},{id:"gospel",get label(){return Se("dashboard.gospel_resources")||"Gospel Resources"},disabled:!0,why:"Waiting on three decisions: the official lostness number, key-less vs a registered Joshua Project key, and the UI shape. See IDEA-GOSPEL-RESOURCES-INTEGRATION-STRATEGY."}],o=pe("charts"),n=Ie("dashboardData",null),a=Ie("selectionBus",null),s=Ie("dashboardConfig",{}),r=(a==null?void 0:a.filterSet)||{},i=Object.fromEntries(Object.entries(s.facets||{}).map(([x,C])=>[x,C.get])),l=la(a,ia(s));function c(x){var b,A;const C=((b=n==null?void 0:n.rows)==null?void 0:b.value)||[],h=Object.keys(r).filter(w=>!x.includes(w)),m=!!(((A=a==null?void 0:a.searchTerm)==null?void 0:A.value)||"").trim();if(!h.length&&!m)return C;const p=C.filter(w=>h.every(M=>{const U=i[M];return U?U(w)===r[M]:!0}));return ca(p,l)}const u=re(()=>{var h,m,p,b,A;const x=(m=(h=s.facets)==null?void 0:h.country_code)==null?void 0:m.get,C=(b=(p=s.facets)==null?void 0:p.wagf_region)==null?void 0:b.get;return!x||!C?null:s0(((A=n==null?void 0:n.rows)==null?void 0:A.value)||[],x,C)}),d=re(()=>(s.charts||[]).map(x=>{var p,b;const C=((b=(p=s.facets)==null?void 0:p[x.facet])==null?void 0:b.get)||(A=>st(A[x.facet])),h=Kr(c([x.facet]),C,x.topN),m=x.facet==="country_code"?u.value:null;return{id:x.id,type:x.type,facet:x.facet,title:x.title,geometry:x.type==="bar"?i0(h,x.facet,m):r0(h,132,.58,x.facet,m)}})),f=(x,C)=>r[x]===C,v=x=>r[x]!=null;function L(x,C){!C||C==="Other"||!a||a.setFilter(x,r[x]===C?null:C)}function k(x){const C=x.target&&x.target.closest&&x.target.closest("[data-facet]");C&&L(C.getAttribute("data-facet"),C.getAttribute("data-key"))}return Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .rd-charts{ display:flex; flex-direction:column; gap:var(--s2,8px); height:100%; min-height:0; padding:6px 2px 6px 6px; background:var(--rd-panel,#fff); overflow-y:auto; overflow-x:hidden; box-sizing:border-box; @@ -674,11 +600,7 @@ .rd-bt{ flex:1 1 auto; height:11px; background:var(--dx-surface, #f3f3f1); border-radius:3px; overflow:hidden; } .rd-bf{ display:block; height:100%; border-radius:3px; transition:width .35s cubic-bezier(.4,0,.2,1); } .rd-bv{ flex:0 0 auto; color:var(--rd-muted, #6d766e); font-variant-numeric:tabular-nums; min-width:30px; text-align:right; } -<<<<<<< HEAD `,"rd-charts"),(x,C)=>(H(),Z("aside",{class:"rd-charts","data-region":"charts-rail",onClick:k},[T("div",u1,[(H(),Z(Ce,null,tt(t,m=>T("button",{key:m.id,class:He(["rd-tab",{on:o.value===m.id,off:m.disabled}]),role:"tab",type:"button","aria-selected":o.value===m.id?"true":"false",disabled:m.disabled,title:m.disabled?m.why:m.label,"data-tab":m.id,onClick:gn(h=>!m.disabled&&(o.value=m.id),["stop"])},ue(m.label),11,p1)),64))]),(H(!0),Z(Ce,null,tt(d.value,m=>(H(),Z(Ce,{key:m.id},[m.type==="donut"?(H(),Z("div",{key:0,class:"rd-chart","data-chart":m.facet},[T("div",g1,ue(m.title),1),T("div",f1,[(H(),Z("svg",{class:He(["rd-donut",{"has-sel":v(m.facet)}]),viewBox:"0 0 132 132",role:"img","aria-label":m.title+" donut"},[(H(!0),Z(Ce,null,tt(m.geometry,h=>(H(),Z("path",{key:h.key,d:h.path,fill:h.color,class:He(["rd-slice",{on:f(m.facet,h.key)}]),"data-facet":m.facet,"data-key":h.key},[T("title",null,ue(h.key)+": "+ue(h.value)+" ("+ue(h.pct)+"%)",1)],10,m1))),128))],10,h1)),T("div",$1,[(H(!0),Z(Ce,null,tt(m.geometry,h=>(H(),Z("span",{key:h.key,class:He(["rd-li",{on:f(m.facet,h.key)}]),"data-facet":m.facet,"data-key":h.key,title:h.key+": "+h.value},[T("i",{style:lt({background:h.color})},null,4),T("span",_1,ue(h.key),1),T("b",null,ue(h.value),1)],10,b1))),128))])])],8,d1)):(H(),Z("div",{key:1,class:"rd-chart","data-chart":m.facet},[T("div",v1,ue(m.title),1),T("div",k1,[(H(!0),Z(Ce,null,tt(m.geometry,h=>(H(),Z("div",{key:h.key,class:He(["rd-bar",{on:f(m.facet,h.key)}]),"data-facet":m.facet,"data-key":h.key},[T("span",x1,ue(h.key),1),T("span",S1,[T("span",{class:"rd-bf",style:lt({width:h.frac*100+"%",background:h.color})},null,4)]),T("span",L1,ue(h.value),1)],10,w1))),128))])],8,y1))],64))),128))]))}},P1={class:"rd-detail","data-region":"detail-drawer"},E1={class:"rd-dh"},C1={key:0,class:"rd-empty","data-detail-empty":""},N1={class:"rd-top"},T1=["src","alt"],R1={key:1,class:"rd-ph","data-detail-thumb":""},M1={class:"rd-name","data-detail-name":""},O1={class:"rd-meta"},F1={class:"rd-actions"},I1=["href","title"],D1=["href","title"],U1={class:"rd-rows"},G1={class:"rd-row"},j1={class:"v"},z1={key:0,class:"fam"},B1={class:"rd-row"},V1={class:"v"},q1={class:"rd-row"},H1={class:"v"},W1={class:"rd-row"},K1={class:"v"},Y1={class:"rd-row"},X1={class:"v"},Z1={class:"rd-row"},J1={class:"v"},Q1={__name:"DashboardDetailDrawer",setup(e){const t=Fe("dashboardData",null),o=Fe("selectionBus",null),n=Fe("dashboardConfig",{}),a=Object.fromEntries(Object.entries(n.facets||{}).map(([p,b])=>[p,b.get])),{labelFor:s}=ra(n,Fe("dataStore",null),Fe("searchSourceId",null)),r=t&&o?Br({rowStore:t.rowStore,rows:t.rows,selectionSet:o.selectionSet,filterSet:o.filterSet,FACET_ACC:a,labelFor:s}):null,i=de(null),l=[];vt(()=>{o&&(l.push(o.on("focusRow",p=>{p&&p.slug&&(i.value=p.slug)})),l.push(o.on("select",p=>{const b=p?[...p]:[];b.length&&(i.value=b[b.length-1])})))}),Dt(()=>{l.forEach(p=>{try{p()}catch{}}),l.length=0});const c=re(()=>{const p=i.value;return!p||!t||!t.rowStore||!t.rowStore.value?null:t.rowStore.value.get(p)||null}),u=p=>p==null||p===""?"—":Number(p).toLocaleString("en-US"),d=re(()=>{const p=c.value;return p?n.detail&&typeof n.detail.photo=="function"?!!n.detail.photo(p):!!(p.has_photo&&p.image_url):!1}),f=re(()=>n.detail||{});function v(p,b,A){if(typeof p=="function")try{return p(b)||A}catch{return A}return typeof p=="string"&&p?p.replace("{slug}",encodeURIComponent(b.slug||"")):A}const L=re(()=>{const p=c.value;if(!p)return null;const b=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),A=encodeURIComponent(String(b||f.value.utmSource||n.utmSource||"agwm")),w=`https://pray.doxa.life/${encodeURIComponent(p.slug||"")}?source=doxalife&utm_source=${A}`;return v(f.value.prayUrl,p,w)}),k=re(()=>{var U;const p=c.value;if(!p)return null;const b=typeof window<"u"&&((U=window.location)==null?void 0:U.origin)||"https://doxa.life",A=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),w=encodeURIComponent(String(A||f.value.utmSource||n.utmSource||"agwm")),M=`${b}/research/${encodeURIComponent(p.slug||"")}/?utm_source=${w}`;return v(f.value.moreInfoUrl,p,M)}),x=re(()=>f.value.prayLabel||"Pray for this people group"),C=re(()=>f.value.moreInfoLabel||"More information");function m(){!r||!o||(!o.selectionSet.size&&i.value&&o.toggleSelect(i.value),r.exportCsv())}function h(){i.value=null,o&&typeof o.clearSelection=="function"&&o.clearSelection()}return Ot(` -======= -`,"rd-charts"),(x,C)=>(W(),X("aside",{class:"rd-charts","data-region":"charts-rail",onClick:k},[T("div",c1,[(W(),X(Ce,null,tt(t,h=>T("button",{key:h.id,class:qe(["rd-tab",{on:o.value===h.id,off:h.disabled}]),role:"tab",type:"button","aria-selected":o.value===h.id?"true":"false",disabled:h.disabled,title:h.disabled?h.why:h.label,"data-tab":h.id,onClick:gn(m=>!h.disabled&&(o.value=h.id),["stop"])},ue(h.label),11,u1)),64))]),(W(!0),X(Ce,null,tt(d.value,h=>(W(),X(Ce,{key:h.id},[h.type==="donut"?(W(),X("div",{key:0,class:"rd-chart","data-chart":h.facet},[T("div",d1,ue(h.title),1),T("div",g1,[(W(),X("svg",{class:qe(["rd-donut",{"has-sel":v(h.facet)}]),viewBox:"0 0 132 132",role:"img","aria-label":h.title+" donut"},[(W(!0),X(Ce,null,tt(h.geometry,m=>(W(),X("path",{key:m.key,d:m.path,fill:m.color,class:qe(["rd-slice",{on:f(h.facet,m.key)}]),"data-facet":h.facet,"data-key":m.key},[T("title",null,ue(m.key)+": "+ue(m.value)+" ("+ue(m.pct)+"%)",1)],10,h1))),128))],10,f1)),T("div",m1,[(W(!0),X(Ce,null,tt(h.geometry,m=>(W(),X("span",{key:m.key,class:qe(["rd-li",{on:f(h.facet,m.key)}]),"data-facet":h.facet,"data-key":m.key,title:m.key+": "+m.value},[T("i",{style:lt({background:m.color})},null,4),T("span",b1,ue(m.key),1),T("b",null,ue(m.value),1)],10,$1))),128))])])],8,p1)):(W(),X("div",{key:1,class:"rd-chart","data-chart":h.facet},[T("div",y1,ue(h.title),1),T("div",v1,[(W(!0),X(Ce,null,tt(h.geometry,m=>(W(),X("div",{key:m.key,class:qe(["rd-bar",{on:f(h.facet,m.key)}]),"data-facet":h.facet,"data-key":m.key},[T("span",w1,ue(m.key),1),T("span",x1,[T("span",{class:"rd-bf",style:lt({width:m.frac*100+"%",background:m.color})},null,4)]),T("span",S1,ue(m.value),1)],10,k1))),128))])],8,_1))],64))),128))]))}},A1={class:"rd-detail","data-region":"detail-drawer"},P1={class:"rd-dh"},E1={key:0,class:"rd-empty","data-detail-empty":""},C1={class:"rd-top"},N1=["src","alt"],T1={key:1,class:"rd-ph","data-detail-thumb":""},R1={class:"rd-name","data-detail-name":""},M1={class:"rd-meta"},O1={class:"rd-actions"},F1=["href","title"],I1=["href","title"],D1={class:"rd-rows"},U1={class:"rd-row"},G1={class:"v"},j1={key:0,class:"fam"},z1={class:"rd-row"},B1={class:"v"},V1={class:"rd-row"},q1={class:"v"},H1={class:"rd-row"},W1={class:"v"},K1={class:"rd-row"},Y1={class:"v"},X1={class:"rd-row"},Z1={class:"v"},J1={__name:"DashboardDetailDrawer",setup(e){const t=Ie("dashboardData",null),o=Ie("selectionBus",null),n=Ie("dashboardConfig",{}),a=Object.fromEntries(Object.entries(n.facets||{}).map(([p,b])=>[p,b.get])),{labelFor:s}=ra(n,Ie("dataStore",null),Ie("searchSourceId",null)),r=t&&o?Br({rowStore:t.rowStore,rows:t.rows,selectionSet:o.selectionSet,filterSet:o.filterSet,FACET_ACC:a,labelFor:s}):null,i=pe(null),l=[];vt(()=>{o&&(l.push(o.on("focusRow",p=>{p&&p.slug&&(i.value=p.slug)})),l.push(o.on("select",p=>{const b=p?[...p]:[];b.length&&(i.value=b[b.length-1])})))}),Dt(()=>{l.forEach(p=>{try{p()}catch{}}),l.length=0});const c=re(()=>{const p=i.value;return!p||!t||!t.rowStore||!t.rowStore.value?null:t.rowStore.value.get(p)||null}),u=p=>p==null||p===""?"—":Number(p).toLocaleString("en-US"),d=re(()=>{const p=c.value;return p?n.detail&&typeof n.detail.photo=="function"?!!n.detail.photo(p):!!(p.has_photo&&p.image_url):!1}),f=re(()=>n.detail||{});function v(p,b,A){if(typeof p=="function")try{return p(b)||A}catch{return A}return typeof p=="string"&&p?p.replace("{slug}",encodeURIComponent(b.slug||"")):A}const L=re(()=>{const p=c.value;if(!p)return null;const b=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),A=encodeURIComponent(String(b||f.value.utmSource||n.utmSource||"agwm")),w=`https://pray.doxa.life/${encodeURIComponent(p.slug||"")}?source=doxalife&utm_source=${A}`;return v(f.value.prayUrl,p,w)}),k=re(()=>{var U;const p=c.value;if(!p)return null;const b=typeof window<"u"&&((U=window.location)==null?void 0:U.origin)||"https://doxa.life",A=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),w=encodeURIComponent(String(A||f.value.utmSource||n.utmSource||"agwm")),M=`${b}/research/${encodeURIComponent(p.slug||"")}/?utm_source=${w}`;return v(f.value.moreInfoUrl,p,M)}),x=re(()=>f.value.prayLabel||"Pray for this people group"),C=re(()=>f.value.moreInfoLabel||"More information");function h(){!r||!o||(!o.selectionSet.size&&i.value&&o.toggleSelect(i.value),r.exportCsv())}function m(){i.value=null,o&&typeof o.clearSelection=="function"&&o.clearSelection()}return Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .rd-detail{ box-sizing:border-box; background:var(--rd-panel,#fff); border-left:1px solid var(--rd-line, #d1d4cd); border-bottom:1px solid var(--rd-line, #d1d4cd); padding:var(--s3,12px); font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; color:var(--rd-ink, #3b463d); flex:0 0 auto; } @@ -717,11 +639,7 @@ .rd-detail .rd-act-info{ flex:0 1 auto; background:var(--rd-bg, #f3f3f1); color:var(--rd-ink, #3b463d); border:1px solid var(--rd-line, #d1d4cd); } .rd-detail .rd-act-info:hover{ background:var(--rd-panel,#fff); border-color:var(--rd-muted, #6d766e); } -<<<<<<< HEAD `,"rd-detaildrawer"),(p,b)=>(H(),Z("section",P1,[T("div",E1,[b[0]||(b[0]=T("span",null,"Detail",-1)),c.value?(H(),Z("button",{key:0,class:"rd-detail-close",type:"button","aria-label":"Close detail","data-detail-close":"",onClick:h},"✕")):Me("",!0)]),c.value?(H(),Z(Ce,{key:1},[T("div",N1,[d.value?(H(),Z("img",{key:0,class:"rd-thumb",src:c.value.image_url,alt:c.value.name,"data-detail-thumb":""},null,8,T1)):(H(),Z("div",R1,"No photo")),T("div",null,[T("div",M1,ue(c.value.name||"—"),1),T("div",O1,ue(he(st)(c.value.country_code)||"—")+" · "+ue(he(st)(c.value.religion)||"—"),1)])]),T("div",F1,[L.value?(H(),Z("a",{key:0,class:"rd-act rd-act-pray",href:L.value,target:"_blank",rel:"noopener",title:x.value,"data-detail-pray":""},[b[1]||(b[1]=T("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true"},[T("path",{d:"M8 2L10 6L14 6.5L11 9.5L11.5 14L8 12L4.5 14L5 9.5L2 6.5L6 6L8 2Z",fill:"currentColor"})],-1)),T("span",null,ue(x.value),1)],8,I1)):Me("",!0),k.value?(H(),Z("a",{key:1,class:"rd-act rd-act-info",href:k.value,target:"_blank",rel:"noopener",title:C.value,"data-detail-moreinfo":""},[b[2]||(b[2]=T("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true"},[T("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor","stroke-width":"2",fill:"none"}),T("path",{d:"M8 6V8M8 10H8.01",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)),T("span",null,ue(C.value),1)],8,D1)):Me("",!0)]),T("div",U1,[T("div",G1,[b[3]||(b[3]=T("span",{class:"k"},"Language",-1)),T("span",j1,[ut(ue(he(st)(c.value.primary_language)||"—"),1),c.value.imb_language_family?(H(),Z("span",z1," ("+ue(c.value.imb_language_family)+")",1)):Me("",!0)])]),T("div",B1,[b[4]||(b[4]=T("span",{class:"k"},"Population",-1)),T("span",V1,ue(u(c.value.population)),1)]),T("div",q1,[b[5]||(b[5]=T("span",{class:"k"},"People praying",-1)),T("span",H1,ue(u(c.value.people_praying)),1)]),T("div",W1,[b[6]||(b[6]=T("span",{class:"k"},"People committed",-1)),T("span",K1,ue(u(c.value.people_committed)),1)]),T("div",Y1,[b[7]||(b[7]=T("span",{class:"k"},"Adopted by churches",-1)),T("span",X1,ue(u(c.value.adopted_by_churches)),1)]),T("div",Z1,[b[8]||(b[8]=T("span",{class:"k"},"Engagement",-1)),T("span",J1,ue(he(st)(c.value.engagement_status)||"—"),1)])]),T("button",{class:"rd-exp",type:"button","data-detail-export":"",onClick:m},"Export this selection ↓")],64)):(H(),Z("div",C1,"Select a people group to see detail"))]))}},ek="rgba(120, 128, 134, 0.28)",ap="36px",sp=()=>{};function tk(e,t={}){const{enabled:o=!0}=t;if(!o||!e)return sp;const n=Array.from(e.querySelectorAll(".map-scroll-edge"));if(!n.length)return sp;const a=m=>m.classList.contains("map-scroll-edge--left");for(const m of n)m.style.background=`linear-gradient(${a(m)?"to right":"to left"}, ${ek} ${ap}, transparent ${ap})`,m.style.opacity="0",m.style.transition="opacity 0.16s ease",m.style.userSelect="none",m.style.webkitUserSelect="none";const s=m=>{m.style.opacity="1"},r=m=>{m.style.opacity="0"},i=()=>n.find(m=>!a(m))||null,l=new Set;let c=!1,u=null;const d=()=>{for(const m of n)l.has(m)||r(m)},f=()=>{const m=i();m&&(s(m),u&&clearTimeout(u),u=setTimeout(d,250))},v=()=>f(),L=m=>{if(!(m.touches&&m.touches.length===1))return;const h=m.target;h&&h.classList&&h.classList.contains("map-scroll-edge")||f()},k=()=>{u&&clearTimeout(u),d()};e.addEventListener("wheel",v,{passive:!0}),e.addEventListener("touchmove",L,{passive:!0}),e.addEventListener("touchend",k,{passive:!0}),e.addEventListener("touchcancel",k,{passive:!0});const x=()=>{c||f()};typeof window<"u"&&window.addEventListener("scroll",x,{passive:!0});const C=[];for(const m of n){const h=()=>{l.add(m),s(m)},p=()=>{l.delete(m),r(m)},b=()=>{c=!0,s(m)},A=()=>{c=!1,r(m)};m.addEventListener("mouseenter",h),m.addEventListener("mouseleave",p),m.addEventListener("touchstart",b,{passive:!0}),m.addEventListener("touchend",A,{passive:!0}),C.push(()=>{m.removeEventListener("mouseenter",h),m.removeEventListener("mouseleave",p),m.removeEventListener("touchstart",b),m.removeEventListener("touchend",A)})}return function(){u&&(clearTimeout(u),u=null),e.removeEventListener("wheel",v),e.removeEventListener("touchmove",L),e.removeEventListener("touchend",k),e.removeEventListener("touchcancel",k),typeof window<"u"&&window.removeEventListener("scroll",x);for(const h of C)h();for(const h of n)r(h)}}const ok=Object.fromEntries([{id:"midnight-glow",label:"Midnight Glow",mood:"the prayer-map dark — pins glow like embers",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"night",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["doxa-simple-map","my-upg-100-list"]},{id:"daylight",label:"Daylight",mood:"the same Standard world, lights on",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"day",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["doxa-research-map","gospel-resources"]},{id:"dawn",label:"Dawn",mood:"soft warm horizon — hopeful, quiet",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"dawn",maplibre:"https://tiles.openfreemap.org/styles/positron",bestFor:["doxa-simple-map"]},{id:"dusk",label:"Dusk",mood:"blue hour — calm contrast for bright pins",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"dusk",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["my-upg-100-list"]},{id:"paper",label:"Paper",mood:"near-white minimal — data reads like print",mapbox:"mapbox://styles/mapbox/light-v11",maplibre:"https://tiles.openfreemap.org/styles/positron",bestFor:["research-dashboard","cities-internet"]},{id:"ink",label:"Ink",mood:"near-black minimal — maximum pin contrast",mapbox:"mapbox://styles/mapbox/dark-v11",maplibre:"https://tiles.openfreemap.org/styles/dark",bestFor:["my-upg-100-list","cities-internet"]},{id:"streetlife",label:"Street Life",mood:"full street detail — city-scale work",mapbox:"mapbox://styles/mapbox/streets-v12",maplibre:"https://tiles.openfreemap.org/styles/bright",bestFor:["cities-internet","key-cities"]},{id:"terrain",label:"Terrain",mood:"relief + parks — where people actually live",mapbox:"mapbox://styles/mapbox/outdoors-v12",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["doxa-research-map","country-posters"]},{id:"satellite",label:"Satellite",mood:"imagery — the real ground",mapbox:"mapbox://styles/mapbox/satellite-v9",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["country-posters"]},{id:"hybrid",label:"Hybrid",mood:"imagery + labels — orientation without losing ground truth",mapbox:"mapbox://styles/mapbox/satellite-streets-v12",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["key-cities"]},{id:"wayfinder-day",label:"Wayfinder Day",mood:"high-legibility navigation palette",mapbox:"mapbox://styles/mapbox/navigation-day-v1",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["gospel-resources"]},{id:"wayfinder-night",label:"Wayfinder Night",mood:"dark navigation — dashboards at night",mapbox:"mapbox://styles/mapbox/navigation-night-v1",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["research-dashboard"]},{id:"galaxy",label:"Galaxy",mood:"the day side of Earth floating in space — normal land, blue oceans, black void behind the sphere",mapbox:"mapbox://styles/mapbox/standard",maplibre:"https://tiles.versatiles.org/assets/styles/colorful/style.json",bestFor:["research-dashboard","my-upg-100-list"]}].map(e=>[e.id,e]));function nk(e,t="mapbox"){if(typeof e!="string"||!e)return{style:void 0,lightPreset:void 0,paint:void 0};const o=ok[e];return o?t==="maplibre"?{style:o.maplibre,lightPreset:void 0,paint:o.paint}:{style:o.mapbox,lightPreset:o.lightPreset,paint:o.paint}:/^(mapbox:\/\/|https?:\/\/)/.test(e)?{style:e,lightPreset:void 0,paint:void 0}:{style:void 0,lightPreset:void 0,paint:void 0}}function ak(e,t){if(!e||!Array.isArray(t))return[];const o=[];for(const n of t)if(!(!n||!n.layer||!n.prop))try{if(!e.getLayer(n.layer))continue;e.setPaintProperty(n.layer,n.prop,n.value),o.push(n.layer+"."+n.prop)}catch{}return o}const sk=["mapbox","maplibre"],rp="mapbox";function rk(e){return e&&typeof e=="object"&&"value"in e&&!("provider"in e)&&!("profile"in e)?e.value:e}function ip(e){const t=rk(e),o=t==null?void 0:t.provider,n=typeof location<"u"?new URLSearchParams(location.search).get("provider"):void 0,a=typeof window<"u"?window.MAP_PROVIDER:void 0,s=String(o||n||a||rp).toLowerCase().trim();return sk.includes(s)?s:rp}const ik=/\[\s*"get"\s*,\s*"name(?::latin|:nonlatin|:en|_en|_int)?"\s*\]|\{name(?::latin|:nonlatin|:en|_en|_int)?\}/,lp=new WeakMap;function lk(e){return typeof window<"u"&&!!window.maplibregl&&e instanceof window.maplibregl.Map}function cp(e,t){if(!e||!t)return 0;const o=String(t).split("-")[0].toLowerCase();try{if(!lk(e))return typeof e.setLanguage=="function"&&e.setLanguage(o),0;const n=e.getStyle&&e.getStyle();if(!n||!Array.isArray(n.layers))return 0;let a=lp.get(e);a||(a=new Map,lp.set(e,a));let s=0;for(const r of n.layers){if(r.type!=="symbol"||!r.layout||r.layout["text-field"]==null)continue;const i=r.layout["text-field"],l=JSON.stringify(i);if(l.startsWith('["coalesce",["get","name:')){if(!a.has(r.id))continue}else{if(!ik.test(l))continue;a.set(r.id,i)}const c=o==="en"?a.get(r.id):["coalesce",["get","name:"+o],["get","name:latin"],["get","name"]];e.setLayoutProperty(r.id,"text-field",c),s++}return s}catch{return 0}}const Ln={mapbox:{global:"mapboxgl",js:"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js",css:"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css"},maplibre:{global:"maplibregl",js:"https://cdn.jsdelivr.net/npm/maplibre-gl@5/dist/maplibre-gl.js",css:"https://cdn.jsdelivr.net/npm/maplibre-gl@5/dist/maplibre-gl.css"}};function up(e){if(typeof window>"u")return;const t=window,o=()=>{try{const n=e.getContainer().querySelector(".mapboxgl-ctrl-logo, .maplibregl-ctrl-logo");n&&(n.style.display="none")}catch{}};if(t.__doxaLogoOwner&&t.__doxaLogoOwner!==e){e.once("load",o),o();return}t.__doxaLogoOwner=e,e.once("remove",()=>{t.__doxaLogoOwner===e&&(t.__doxaLogoOwner=null)})}const ck=Ln.mapbox.css,uk="https://tiles.openfreemap.org/styles/liberty",pk="https://tiles.openfreemap.org/styles/fiord";function Yr(e){var o;const t=((o=Ln[e])==null?void 0:o.global)||Ln.mapbox.global;return typeof window<"u"?window[t]:void 0}async function dk(e){const t=Ln[e]||Ln.mapbox;if(Yr(e)||typeof document>"u")return;if(!document.querySelector(`link[href="${t.css}"]`)){const n=document.createElement("link");n.rel="stylesheet",n.href=t.css,document.head.appendChild(n)}const o=document.querySelector(`script[src="${t.js}"]`);if(o){if(Yr(e))return;await new Promise(n=>{o.addEventListener("load",n,{once:!0}),o.addEventListener("error",n,{once:!0})});return}await new Promise((n,a)=>{const s=document.createElement("script");s.src=t.js,s.async=!1,s.addEventListener("load",n,{once:!0}),s.addEventListener("error",()=>a(new Error(`[useMapInstance] Failed to load ${e} engine script`)),{once:!0}),document.head.appendChild(s)})}async function gk(e,t){if(!e)return;const o=e.getRootNode();if(!(o instanceof ShadowRoot))return;const n=r=>new Promise(i=>setTimeout(i,r)),a=o.querySelector(`link[href="${t}"]`);if(a){if(a.sheet)return;await Promise.race([new Promise(r=>{a.addEventListener("load",r,{once:!0}),a.addEventListener("error",r,{once:!0})}),n(2e3)]);return}const s=document.createElement("link");s.rel="stylesheet",s.href=t,await Promise.race([new Promise(r=>{s.addEventListener("load",r,{once:!0}),s.addEventListener("error",r,{once:!0}),o.prepend(s)}),n(2e3)])}function fk(e,t){return typeof e=="string"&&/^https?:\/\//.test(e)?e:t==="night"||t==="dusk"?pk:uk}const hk=85.0511,Xr=-2,mk=0,$k=-60;function pp(e){return(1-Math.log(Math.tan(Math.PI/4+e*Math.PI/180/2))/Math.PI)/2}function bk(e,t,o,n){if(!e||e<=0||!t||t<=0)return mk;const a=Math.log2(e/512),s=pp(n)-pp(hk),r=Math.log2(t/(512*s)),i=Math.max(a,r);return Math.max(Xr,Math.min(i,(o??18)-1))}function _k({containerRef:e,accessToken:t,style:o,config:n=void 0,provider:a=void 0,center:s=[20,10],zoom:r=2,bounds:i=void 0,fitBoundsOptions:l=void 0,minZoom:c=void 0,skipWorldFloor:u=!1,maxZoom:d=18,pitch:f=0,bearing:v=0,renderWorldCopies:L=!0,showEdgeBorders:k=!0,southCutoff:x=$k,maxBounds:C=void 0}){const m=On(null),h=de(!1);let p=null,b=null,A=null,w=null;try{w=Fe("profileConfig",null)}catch{}a=a||ip(w);const M=a==="maplibre";let U=null;try{U=Fe("lang",null)}catch{}const ne=()=>{const pe=U&&typeof U=="object"&&"value"in U?U.value:U;if(typeof pe=="string"&&pe)return pe;const I=w&&typeof w=="object"&&"value"in w?w.value:w;if(I&&(I.locale||I.lang))return String(I.locale||I.lang);try{const J=new URLSearchParams(location.search);return J.get("lang")||J.get("locale")||document.documentElement.lang||"en"}catch{return"en"}};async function B(){var Ae;const pe=nk(o,a),I=pe.style||o;if(!e.value){console.error("containerRef.value is null — call initializeMap() inside onMounted()");return}const J=()=>!e.value;if(await dk(a),J())return;const W=Yr(a);if(!W){console.error(`[useMapInstance] ${M?"maplibregl":"mapboxgl"} is not available. Add the ${M?"MapLibre":"Mapbox"} GL JS script to your page.`);return}if(Mu(W),!M){if(!t&&typeof window<"u"&&typeof window.MAP_TOKEN=="string"&&window.MAP_TOKEN&&(t=window.MAP_TOKEN),!t){console.error('No Mapbox access token provided. Pass "tk" in profile-config JSON or set window.MAP_TOKEN.');return}if(!t.startsWith("pk.")){console.error('Mapbox token looks invalid (expected "pk." prefix). Got:',t.slice(0,10)+"...");return}}if(await gk(e.value,M?Ln.maplibre.css:ck),J()||(await new Promise(ke=>requestAnimationFrame(ke)),J()))return;const G=e.value,ae=G.clientWidth,F=G.clientHeight;if(ae===0||F===0){console.error(`[useMapInstance] Container has ZERO dimensions (${ae}×${F}). Map will be invisible. Check that parent elements have CSS sizing.`);let ke=G.parentElement,oe=0;for(;ke&&oe<5;)ke=ke.parentElement,oe++}const O=t;M||(W.accessToken=O);const V=()=>typeof window<"u"&&window.innerWidth>=1024,D=(ke,oe)=>{if(u)return typeof c=="number"?c:Xr;if(!V())return Xr;const fe=bk(ke,oe,d,x);return typeof c=="number"?Math.max(c,fe):fe},se=D(G.clientWidth,G.clientHeight),me=pe.lightPreset||(()=>{var ke;try{const oe=typeof n=="function"?n():n;return(ke=oe==null?void 0:oe.basemap)==null?void 0:ke.lightPreset}catch{return}})();if(M){m.value=new W.Map({container:e.value,style:fk(I,me),center:s,zoom:r,minZoom:se,maxZoom:d,pitch:f,bearing:v,dragRotate:!1,renderWorldCopies:L,...i?{bounds:i,...l?{fitBoundsOptions:l}:{}}:{},...C?{maxBounds:C}:{},attributionControl:!0,logoPosition:typeof window<"u"&&window.matchMedia&&window.matchMedia("(max-width: 767px)").matches?"bottom-right":"bottom-left"}),up(m.value);try{e.value.__doxaMap=m.value}catch{}}else{const ke=typeof n=="function"?n():n;m.value=new W.Map({accessToken:O,container:e.value,style:I,...ke?{config:ke}:{},center:s,zoom:r,minZoom:se,maxZoom:d,pitch:f,bearing:v,dragRotate:!1,touchPitch:!1,renderWorldCopies:L,...i?{bounds:i,...l?{fitBoundsOptions:l}:{}}:{},...C?{maxBounds:C}:{},attributionControl:!0,logoPosition:typeof window<"u"&&window.matchMedia&&window.matchMedia("(max-width: 767px)").matches?"bottom-right":"bottom-left"}),up(m.value);try{e.value.__doxaMap=m.value}catch{}}try{let ke=!1;m.value.on("error",oe=>{var _,P;const fe=((_=oe==null?void 0:oe.error)==null?void 0:_.status)??(oe==null?void 0:oe.status),ye=String(((P=oe==null?void 0:oe.error)==null?void 0:P.url)||(oe==null?void 0:oe.sourceId)||"");fe!==401&&fe!==403||ke||(ke=!0,console.error(`[doxa-maps] Mapbox returned ${fe} for a TILE request while the style loaded fine. That is a URL RESTRICTION on the access token, not a bad token and not a bug in this map. Add this page's origin (${typeof location<"u"?location.origin:"this origin"}) to the token's URL restrictions in the Mapbox account. The map will keep its data layer and stay blank underneath until then.`+(ye?` First failing request: ${ye.slice(0,120)}`:"")))})}catch{}try{m.value.touchZoomRotate.disableRotation()}catch{}A=tk(((Ae=e.value)==null?void 0:Ae.parentElement)||null,{enabled:k});let we=se,Le=null;p=()=>{const ke=m.value;if(!ke)return;const oe=D(G.clientWidth,G.clientHeight);oe!==we&&(we=oe,ke.setMinZoom(oe)),ke.getZoom(){Le=null;const fe=m.value;if(!fe)return;const ye=D(G.clientWidth,G.clientHeight);if(fe.getZoom(){Le&&(clearTimeout(Le),Le=null)},m.value.on("resize",p),typeof window<"u"&&(window.addEventListener("resize",p),window.addEventListener("orientationchange",p)),m.value.on("style.load",()=>{if(m.value&&cp(m.value,ne()),pe.paint&&m.value){const ke=ak(m.value,pe.paint);console.info("[useMapInstance] style paint applied ("+a+"):",ke.join(", ")||"NONE MATCHED")}requestAnimationFrame(()=>{var ke;(ke=m.value)==null||ke.resize(),m.value&&m.value.setMinZoom(D(G.clientWidth,G.clientHeight)),h.value=!0})})}function X(){if(m.value){if(p&&(m.value.off("resize",p),typeof window<"u"&&(window.removeEventListener("resize",p),window.removeEventListener("orientationchange",p)),p=null),b){try{b()}catch{}b=null}A&&(A(),A=null),m.value.remove(),m.value=null,h.value=!1}}if(U&&typeof U=="object"&&"value"in U)try{rt(U,()=>{m.value&&h.value&&cp(m.value,ne())})}catch{}return{map:m,isMapReady:h,initializeMap:B,destroy:X}}const yk={Africa:{zoom:1.3,center:[16.6512,26.3538]},Asia:{zoom:.8,center:[98.2654,49.9282]},Europe:{zoom:1.4,center:[22.7826,70.1026]},"Latin America & Caribbean":{zoom:1.8,center:[-60.4619,10.1428]},"Middle East":{zoom:1.7,center:[22.9056,39.5752]},"No WAGF Region/Bloc":{zoom:.6,center:[-8.2363,44.2392]},"North America & Non-Spanish Caribbean":{zoom:2.1,center:[-68.1935,31.4282]},Oceania:{zoom:1.5,center:[161.6257,-.668]}};function vk(e){return yk[e]||null}const An={center:[20,10],zoom:1.8};function kk(e={}){const{getMap:t=()=>null,mapId:o="unknown",mapStore:n=null,regionsGeoData:a=null,defaultCenter:s=(An==null?void 0:An.center)||[20,10],defaultZoom:r=An==null?void 0:An.zoom}=e,i={speed:.5,essential:!0,curve:1.2};function l(I,J,W={x:150,y:0}){const G=t();if(!G)return I;try{const ae=G.getCanvas(),F=ae.width,O=ae.height,V=G.project(I),D=window.devicePixelRatio||1,se=(W.x||0)*D,me=(W.y||0)*D,we={x:V.x-se,y:V.y-me},Le=G.unproject(we);return[Le.lng,Le.lat]}catch{return I}}function c(I,J=[]){const W=t();if(!W)return;let G=null,ae=5;const F=J.filter(V=>V.languageFamily===I);if(F.length>0){let V=1/0,D=-1/0,se=1/0,me=-1/0;if(F.forEach(we=>{we.longitude&&we.latitude&&(V=Math.min(V,we.longitude),D=Math.max(D,we.longitude),se=Math.min(se,we.latitude),me=Math.max(me,we.latitude))}),V!==1/0){G=[(V+D)/2,(se+me)/2];const we=D-V,Le=me-se,Ae=Math.max(we,Le);Ae>50?ae=2:Ae>20?ae=3:Ae>10?ae=4:Ae>5?ae=5:ae=6}}if(!G)return;const O=l(G);W.flyTo({center:O,zoom:ae,...i})}function u(I){const J=t();if(!J)return;let W=null,G=4;const ae=vk(I);if(ae)W=ae.center,G=ae.zoom||4;else if(a!=null&&a.features){const O=a.features.find(V=>{var D,se;return((D=V.properties)==null?void 0:D.region)===I||((se=V.properties)==null?void 0:se.name)===I});O&&(W=d(O))}if(!W)return;const F=l(W);J.flyTo({center:F,zoom:G,...i})}function d(I){if(!I||!I.geometry)return null;const{type:J,coordinates:W}=I.geometry;let G=[];if(J==="Polygon"?G=W[0]||[]:J==="MultiPolygon"&&W.forEach(O=>{G=G.concat(O[0]||[])}),G.length===0)return null;let ae=0,F=0;return G.forEach(O=>{ae+=O[0],F+=O[1]}),[ae/G.length,F/G.length]}function f(I,J={}){const W=t();if(!W)return;const G={center:I,...i,...J};W.flyTo(G)}function v(I,J){const W=t();if(!W||(I==null?void 0:I.longitude)==null||(I==null?void 0:I.latitude)==null)return;const G=J??Math.min(W.getZoom()+2,8);f([I.longitude,I.latitude],{zoom:G})}function L(I,J={top:40,right:40,bottom:40,left:40},W={}){const G=t();if(!G||!I)return;const ae=W.maxZoom??4,F=W.duration??900;G.fitBounds(I,{padding:J,maxZoom:ae,duration:F,...i,...W})}function k(){const I=t();I&&I.flyTo({center:s,zoom:r,...i})}const x=80,C=800,m=5,h=5,p=110,b=1.2;function A(I){const J=I.filter(Number.isFinite).slice().sort((_,P)=>_-P),W=J.length;if(!W)return null;let G=-1,ae=0;for(let _=0;_G&&(G=S,ae=_)}const F=(ae+1)%W,O=new Array(W);for(let _=0;_0&&P((_+180)%360+360)%360-180,Le=we(se),Ae=24,ke=360/Ae,oe=new Array(Ae).fill(0);for(const _ of J){let P=Math.floor(((_+180)%360+360)%360/ke);P>=Ae&&(P=Ae-1),oe[P]++}let fe=0;for(let _=1;_oe[fe]&&(fe=_);return{center:we(-180+(fe+.5)*ke),minLng:Le,maxLng:Le+(me-se),span:me-se}}function w(I){try{const J=I.getContainer&&I.getContainer().clientWidth||0,W=J>0?Math.log2(J/512):b,G=typeof I.getMinZoom=="function"?I.getMinZoom():W;return Math.max(G,W)}catch{return b}}function M(I,J,W,G){I.easeTo({center:[J,(W+G)/2],zoom:w(I),duration:C,essential:!0})}function U(I,J,W){if(W>p)return!0;try{const G=typeof I.cameraForBounds=="function"?I.cameraForBounds(J,{padding:x,maxZoom:m}):null;return G==null?!0:typeof G.zoom=="number"&&G.zoom<=w(I)+.05}catch{return!1}}function ne(I,J){if(!Array.isArray(I))return I;switch(I[0]){case"get":return J==null?void 0:J[I[1]];case"literal":return I[1];case"has":return J!=null&&I[1]in J;case"!has":return J==null||!(I[1]in J);case"!":return!ne(I[1],J);case"coalesce":{for(let G=1;G2){const F=Number(ne(I[2],J));return Number.isFinite(F)?F:0}return NaN}case"to-string":{const G=ne(I[1],J);return G==null?"":String(G)}case"to-boolean":return!!ne(I[1],J);case"slice":{const G=ne(I[1],J),ae=ne(I[2],J),F=I.length>3?ne(I[3],J):void 0;return typeof G!="string"?"":F!=null?G.slice(ae,F):G.slice(ae)}default:return I}}function B(I,J){if(I===!0)return!0;if(I===!1)return!1;if(!Array.isArray(I))return!!I;const W=I[0];if(W==="all"){for(let G=1;G"||W===">="||W==="<"||W==="<="){const G=typeof I[1]=="string"?J==null?void 0:J[I[1]]:ne(I[1],J),ae=ne(I[2],J);switch(W){case"==":return G===ae||G==null&&ae==null;case"!=":return!(G===ae||G==null&&ae==null);case">":return G>ae;case">=":return G>=ae;case"<":return G{const z=(S==null?void 0:S.properties)||{};return z.region===_||z.name===_||z.id===_});if(P){const S=[];let z=1/0,ee=-1/0;const te=ie=>{for(const g of ie)Array.isArray(g[0])?te(g):Number.isFinite(g[0])&&Number.isFinite(g[1])&&(S.push(g[0]),g[1]ee&&(ee=g[1]))};(oe=P.geometry)!=null&&oe.coordinates&&te(P.geometry.coordinates);const ce=A(S);if(ce&&Number.isFinite(z)){const ie=[[ce.minLng,z],[ce.maxLng,ee]];U(W,ie,ce.span)?M(W,ce.center,z,ee):W.fitBounds(ie,{padding:x,maxZoom:m,duration:C,essential:!0});return}}}const G=J.sourceId??"language-families";if(!W.getSource(G))return;const ae=J.matchExpr??I.filter;if(!ae)return;const F=X(W,G);if(!F.length)return;const O=[];let V=1/0,D=-1/0,se=0,me=0,we=0;const Le=new Set;for(const ye of F){const _=ye==null?void 0:ye.properties;if(!B(ae,_))continue;const P=_==null?void 0:_.uniqueId;if(P!=null){if(Le.has(P))continue;Le.add(P)}const S=(fe=ye.geometry)==null?void 0:fe.coordinates;if(!Array.isArray(S)||S.length<2)continue;const z=S[0],ee=S[1];!Number.isFinite(z)||!Number.isFinite(ee)||(se===0&&(me=z,we=ee),O.push(z),eeD&&(D=ee),se++)}if(se===0)return;if(se===1){W.flyTo({center:[me,we],zoom:h,duration:C,essential:!0});return}const Ae=A(O)||{center:0,minLng:0,maxLng:0,span:0},ke=[[Ae.minLng,V],[Ae.maxLng,D]];if(U(W,ke,Ae.span)){M(W,Ae.center,V,D);return}try{W.fitBounds(ke,{padding:x,maxZoom:m,duration:C,essential:!0})}catch{}}return{getOffsetCenter:l,slowFlyToFamily:c,slowFlyToRegion:u,flyTo:f,flyToCoords:v,fitBounds:L,resetView:k,zoomToLegendRow:pe,calculateRegionCenterFromPolygon:d}}const wk=150,xk=1200,Sk=70,Lk=5.5,Ak=6,dp=.01,Pk=110,Ek=1.45;function Ck(){try{return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}}function Nk(e){if(!e)return null;const t=Number(e.longitude),o=Number(e.latitude);return!Number.isFinite(t)||!Number.isFinite(o)||t===0&&o===0||o<-90||o>90||t<-180||t>180?null:[t,o]}function Tk(e){let t=1/0,o=-1/0,n=1/0,a=-1/0;for(const i of e){io&&(o=i);const l=i<0?i+360:i;la&&(a=l)}if(!Number.isFinite(t))return null;const s=o-t,r=a-n;if(r180?n-360:n;return{minLng:i,maxLng:i+r,span:r}}return{minLng:t,maxLng:o,span:s}}function Rk(e,t){if(!e||!e.size||!t)return null;const o=[];let n=1/0,a=-1/0,s=null,r=0;for(const l of e){const c=Nk(t.get(l));c&&(r===0&&(s=c),o.push(c[0]),c[1]a&&(a=c[1]),r++)}if(r===0)return null;if(r===1)return{kind:"point",center:s};const i=Tk(o);return i?i.span!0}){if(!e||!e.selectionVersion)return()=>{};let s=null;function r(){if(s=null,!(t&&t())||!a())return;const c=Rk(e.selectionSet,o&&o());if(!c)return;const u=Ck()?0:xk;try{if(c.kind==="point"){n.flyTo(c.center,{zoom:Ak,duration:u,essential:!0});return}if(c.span>Pk){n.flyTo([(c.bounds[0][0]+c.bounds[1][0])/2,(c.bounds[0][1]+c.bounds[1][1])/2],{zoom:Ek,duration:u,essential:!0});return}n.fitBounds(c.bounds,Sk,{maxZoom:Lk,duration:u,essential:!0})}catch{}}const i=rt(()=>e.selectionVersion.value,()=>{s&&clearTimeout(s),s=setTimeout(r,wk)});return function(){s&&(clearTimeout(s),s=null);try{i()}catch{}}}const Ok={__name:"MapToolbar",props:{hasGeocoder:{type:Boolean,default:!0}},setup(e){const t=de(null);return no("mapToolbar",{el:t}),Ot(` -======= -`,"rd-detaildrawer"),(p,b)=>(W(),X("section",A1,[T("div",P1,[b[0]||(b[0]=T("span",null,"Detail",-1)),c.value?(W(),X("button",{key:0,class:"rd-detail-close",type:"button","aria-label":"Close detail","data-detail-close":"",onClick:m},"✕")):Me("",!0)]),c.value?(W(),X(Ce,{key:1},[T("div",C1,[d.value?(W(),X("img",{key:0,class:"rd-thumb",src:c.value.image_url,alt:c.value.name,"data-detail-thumb":""},null,8,N1)):(W(),X("div",T1,"No photo")),T("div",null,[T("div",R1,ue(c.value.name||"—"),1),T("div",M1,ue(he(st)(c.value.country_code)||"—")+" · "+ue(he(st)(c.value.religion)||"—"),1)])]),T("div",O1,[L.value?(W(),X("a",{key:0,class:"rd-act rd-act-pray",href:L.value,target:"_blank",rel:"noopener",title:x.value,"data-detail-pray":""},[b[1]||(b[1]=T("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true"},[T("path",{d:"M8 2L10 6L14 6.5L11 9.5L11.5 14L8 12L4.5 14L5 9.5L2 6.5L6 6L8 2Z",fill:"currentColor"})],-1)),T("span",null,ue(x.value),1)],8,F1)):Me("",!0),k.value?(W(),X("a",{key:1,class:"rd-act rd-act-info",href:k.value,target:"_blank",rel:"noopener",title:C.value,"data-detail-moreinfo":""},[b[2]||(b[2]=T("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true"},[T("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor","stroke-width":"2",fill:"none"}),T("path",{d:"M8 6V8M8 10H8.01",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)),T("span",null,ue(C.value),1)],8,I1)):Me("",!0)]),T("div",D1,[T("div",U1,[b[3]||(b[3]=T("span",{class:"k"},"Language",-1)),T("span",G1,[ut(ue(he(st)(c.value.primary_language)||"—"),1),c.value.imb_language_family?(W(),X("span",j1," ("+ue(c.value.imb_language_family)+")",1)):Me("",!0)])]),T("div",z1,[b[4]||(b[4]=T("span",{class:"k"},"Population",-1)),T("span",B1,ue(u(c.value.population)),1)]),T("div",V1,[b[5]||(b[5]=T("span",{class:"k"},"People praying",-1)),T("span",q1,ue(u(c.value.people_praying)),1)]),T("div",H1,[b[6]||(b[6]=T("span",{class:"k"},"People committed",-1)),T("span",W1,ue(u(c.value.people_committed)),1)]),T("div",K1,[b[7]||(b[7]=T("span",{class:"k"},"Adopted by churches",-1)),T("span",Y1,ue(u(c.value.adopted_by_churches)),1)]),T("div",X1,[b[8]||(b[8]=T("span",{class:"k"},"Engagement",-1)),T("span",Z1,ue(he(st)(c.value.engagement_status)||"—"),1)])]),T("button",{class:"rd-exp",type:"button","data-detail-export":"",onClick:h},"Export this selection ↓")],64)):(W(),X("div",E1,"Select a people group to see detail"))]))}},Q1="rgba(120, 128, 134, 0.28)",ap="36px",sp=()=>{};function ek(e,t={}){const{enabled:o=!0}=t;if(!o||!e)return sp;const n=Array.from(e.querySelectorAll(".map-scroll-edge"));if(!n.length)return sp;const a=h=>h.classList.contains("map-scroll-edge--left");for(const h of n)h.style.background=`linear-gradient(${a(h)?"to right":"to left"}, ${Q1} ${ap}, transparent ${ap})`,h.style.opacity="0",h.style.transition="opacity 0.16s ease",h.style.userSelect="none",h.style.webkitUserSelect="none";const s=h=>{h.style.opacity="1"},r=h=>{h.style.opacity="0"},i=()=>n.find(h=>!a(h))||null,l=new Set;let c=!1,u=null;const d=()=>{for(const h of n)l.has(h)||r(h)},f=()=>{const h=i();h&&(s(h),u&&clearTimeout(u),u=setTimeout(d,250))},v=()=>f(),L=h=>{if(!(h.touches&&h.touches.length===1))return;const m=h.target;m&&m.classList&&m.classList.contains("map-scroll-edge")||f()},k=()=>{u&&clearTimeout(u),d()};e.addEventListener("wheel",v,{passive:!0}),e.addEventListener("touchmove",L,{passive:!0}),e.addEventListener("touchend",k,{passive:!0}),e.addEventListener("touchcancel",k,{passive:!0});const x=()=>{c||f()};typeof window<"u"&&window.addEventListener("scroll",x,{passive:!0});const C=[];for(const h of n){const m=()=>{l.add(h),s(h)},p=()=>{l.delete(h),r(h)},b=()=>{c=!0,s(h)},A=()=>{c=!1,r(h)};h.addEventListener("mouseenter",m),h.addEventListener("mouseleave",p),h.addEventListener("touchstart",b,{passive:!0}),h.addEventListener("touchend",A,{passive:!0}),C.push(()=>{h.removeEventListener("mouseenter",m),h.removeEventListener("mouseleave",p),h.removeEventListener("touchstart",b),h.removeEventListener("touchend",A)})}return function(){u&&(clearTimeout(u),u=null),e.removeEventListener("wheel",v),e.removeEventListener("touchmove",L),e.removeEventListener("touchend",k),e.removeEventListener("touchcancel",k),typeof window<"u"&&window.removeEventListener("scroll",x);for(const m of C)m();for(const m of n)r(m)}}const tk=Object.fromEntries([{id:"midnight-glow",label:"Midnight Glow",mood:"the prayer-map dark — pins glow like embers",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"night",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["doxa-simple-map","my-upg-100-list"]},{id:"daylight",label:"Daylight",mood:"the same Standard world, lights on",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"day",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["doxa-research-map","gospel-resources"]},{id:"dawn",label:"Dawn",mood:"soft warm horizon — hopeful, quiet",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"dawn",maplibre:"https://tiles.openfreemap.org/styles/positron",bestFor:["doxa-simple-map"]},{id:"dusk",label:"Dusk",mood:"blue hour — calm contrast for bright pins",mapbox:"mapbox://styles/mapbox/standard",lightPreset:"dusk",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["my-upg-100-list"]},{id:"paper",label:"Paper",mood:"near-white minimal — data reads like print",mapbox:"mapbox://styles/mapbox/light-v11",maplibre:"https://tiles.openfreemap.org/styles/positron",bestFor:["research-dashboard","cities-internet"]},{id:"ink",label:"Ink",mood:"near-black minimal — maximum pin contrast",mapbox:"mapbox://styles/mapbox/dark-v11",maplibre:"https://tiles.openfreemap.org/styles/dark",bestFor:["my-upg-100-list","cities-internet"]},{id:"streetlife",label:"Street Life",mood:"full street detail — city-scale work",mapbox:"mapbox://styles/mapbox/streets-v12",maplibre:"https://tiles.openfreemap.org/styles/bright",bestFor:["cities-internet","key-cities"]},{id:"terrain",label:"Terrain",mood:"relief + parks — where people actually live",mapbox:"mapbox://styles/mapbox/outdoors-v12",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["doxa-research-map","country-posters"]},{id:"satellite",label:"Satellite",mood:"imagery — the real ground",mapbox:"mapbox://styles/mapbox/satellite-v9",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["country-posters"]},{id:"hybrid",label:"Hybrid",mood:"imagery + labels — orientation without losing ground truth",mapbox:"mapbox://styles/mapbox/satellite-streets-v12",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["key-cities"]},{id:"wayfinder-day",label:"Wayfinder Day",mood:"high-legibility navigation palette",mapbox:"mapbox://styles/mapbox/navigation-day-v1",maplibre:"https://tiles.openfreemap.org/styles/liberty",bestFor:["gospel-resources"]},{id:"wayfinder-night",label:"Wayfinder Night",mood:"dark navigation — dashboards at night",mapbox:"mapbox://styles/mapbox/navigation-night-v1",maplibre:"https://tiles.openfreemap.org/styles/fiord",bestFor:["research-dashboard"]},{id:"galaxy",label:"Galaxy",mood:"the day side of Earth floating in space — normal land, blue oceans, black void behind the sphere",mapbox:"mapbox://styles/mapbox/standard",maplibre:"https://tiles.versatiles.org/assets/styles/colorful/style.json",bestFor:["research-dashboard","my-upg-100-list"]}].map(e=>[e.id,e]));function ok(e,t="mapbox"){if(typeof e!="string"||!e)return{style:void 0,lightPreset:void 0,paint:void 0};const o=tk[e];return o?t==="maplibre"?{style:o.maplibre,lightPreset:void 0,paint:o.paint}:{style:o.mapbox,lightPreset:o.lightPreset,paint:o.paint}:/^(mapbox:\/\/|https?:\/\/)/.test(e)?{style:e,lightPreset:void 0,paint:void 0}:{style:void 0,lightPreset:void 0,paint:void 0}}function nk(e,t){if(!e||!Array.isArray(t))return[];const o=[];for(const n of t)if(!(!n||!n.layer||!n.prop))try{if(!e.getLayer(n.layer))continue;e.setPaintProperty(n.layer,n.prop,n.value),o.push(n.layer+"."+n.prop)}catch{}return o}const ak=["mapbox","maplibre"],rp="mapbox";function sk(e){return e&&typeof e=="object"&&"value"in e&&!("provider"in e)&&!("profile"in e)?e.value:e}function ip(e){const t=sk(e),o=t==null?void 0:t.provider,n=typeof location<"u"?new URLSearchParams(location.search).get("provider"):void 0,a=typeof window<"u"?window.MAP_PROVIDER:void 0,s=String(o||n||a||rp).toLowerCase().trim();return ak.includes(s)?s:rp}const rk=/\[\s*"get"\s*,\s*"name(?::latin|:nonlatin|:en|_en|_int)?"\s*\]|\{name(?::latin|:nonlatin|:en|_en|_int)?\}/,lp=new WeakMap;function ik(e){return typeof window<"u"&&!!window.maplibregl&&e instanceof window.maplibregl.Map}function cp(e,t){if(!e||!t)return 0;const o=String(t).split("-")[0].toLowerCase();try{if(!ik(e))return typeof e.setLanguage=="function"&&e.setLanguage(o),0;const n=e.getStyle&&e.getStyle();if(!n||!Array.isArray(n.layers))return 0;let a=lp.get(e);a||(a=new Map,lp.set(e,a));let s=0;for(const r of n.layers){if(r.type!=="symbol"||!r.layout||r.layout["text-field"]==null)continue;const i=r.layout["text-field"],l=JSON.stringify(i);if(l.startsWith('["coalesce",["get","name:')){if(!a.has(r.id))continue}else{if(!rk.test(l))continue;a.set(r.id,i)}const c=o==="en"?a.get(r.id):["coalesce",["get","name:"+o],["get","name:latin"],["get","name"]];e.setLayoutProperty(r.id,"text-field",c),s++}return s}catch{return 0}}const Ln={mapbox:{global:"mapboxgl",js:"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js",css:"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css"},maplibre:{global:"maplibregl",js:"https://cdn.jsdelivr.net/npm/maplibre-gl@5/dist/maplibre-gl.js",css:"https://cdn.jsdelivr.net/npm/maplibre-gl@5/dist/maplibre-gl.css"}};function up(e){if(typeof window>"u")return;const t=window,o=()=>{try{const n=e.getContainer().querySelector(".mapboxgl-ctrl-logo, .maplibregl-ctrl-logo");n&&(n.style.display="none")}catch{}};if(t.__doxaLogoOwner&&t.__doxaLogoOwner!==e){e.once("load",o),o();return}t.__doxaLogoOwner=e,e.once("remove",()=>{t.__doxaLogoOwner===e&&(t.__doxaLogoOwner=null)})}const lk=Ln.mapbox.css,ck="https://tiles.openfreemap.org/styles/liberty",uk="https://tiles.openfreemap.org/styles/fiord";function Yr(e){var o;const t=((o=Ln[e])==null?void 0:o.global)||Ln.mapbox.global;return typeof window<"u"?window[t]:void 0}async function pk(e){const t=Ln[e]||Ln.mapbox;if(Yr(e)||typeof document>"u")return;if(!document.querySelector(`link[href="${t.css}"]`)){const n=document.createElement("link");n.rel="stylesheet",n.href=t.css,document.head.appendChild(n)}const o=document.querySelector(`script[src="${t.js}"]`);if(o){if(Yr(e))return;await new Promise(n=>{o.addEventListener("load",n,{once:!0}),o.addEventListener("error",n,{once:!0})});return}await new Promise((n,a)=>{const s=document.createElement("script");s.src=t.js,s.async=!1,s.addEventListener("load",n,{once:!0}),s.addEventListener("error",()=>a(new Error(`[useMapInstance] Failed to load ${e} engine script`)),{once:!0}),document.head.appendChild(s)})}async function dk(e,t){if(!e)return;const o=e.getRootNode();if(!(o instanceof ShadowRoot))return;const n=r=>new Promise(i=>setTimeout(i,r)),a=o.querySelector(`link[href="${t}"]`);if(a){if(a.sheet)return;await Promise.race([new Promise(r=>{a.addEventListener("load",r,{once:!0}),a.addEventListener("error",r,{once:!0})}),n(2e3)]);return}const s=document.createElement("link");s.rel="stylesheet",s.href=t,await Promise.race([new Promise(r=>{s.addEventListener("load",r,{once:!0}),s.addEventListener("error",r,{once:!0}),o.prepend(s)}),n(2e3)])}function gk(e,t){return typeof e=="string"&&/^https?:\/\//.test(e)?e:t==="night"||t==="dusk"?uk:ck}const fk=85.0511,Xr=-2,hk=0,mk=-60;function pp(e){return(1-Math.log(Math.tan(Math.PI/4+e*Math.PI/180/2))/Math.PI)/2}function $k(e,t,o,n){if(!e||e<=0||!t||t<=0)return hk;const a=Math.log2(e/512),s=pp(n)-pp(fk),r=Math.log2(t/(512*s)),i=Math.max(a,r);return Math.max(Xr,Math.min(i,(o??18)-1))}function bk({containerRef:e,accessToken:t,style:o,config:n=void 0,provider:a=void 0,center:s=[20,10],zoom:r=2,bounds:i=void 0,fitBoundsOptions:l=void 0,minZoom:c=void 0,skipWorldFloor:u=!1,maxZoom:d=18,pitch:f=0,bearing:v=0,renderWorldCopies:L=!0,showEdgeBorders:k=!0,southCutoff:x=mk,maxBounds:C=void 0}){const h=On(null),m=pe(!1);let p=null,b=null,A=null,w=null;try{w=Ie("profileConfig",null)}catch{}a=a||ip(w);const M=a==="maplibre";let U=null;try{U=Ie("lang",null)}catch{}const ne=()=>{const ge=U&&typeof U=="object"&&"value"in U?U.value:U;if(typeof ge=="string"&&ge)return ge;const I=w&&typeof w=="object"&&"value"in w?w.value:w;if(I&&(I.locale||I.lang))return String(I.locale||I.lang);try{const Q=new URLSearchParams(location.search);return Q.get("lang")||Q.get("locale")||document.documentElement.lang||"en"}catch{return"en"}};async function B(){var Ae;const ge=ok(o,a),I=ge.style||o;if(!e.value){console.error("containerRef.value is null — call initializeMap() inside onMounted()");return}const Q=()=>!e.value;if(await pk(a),Q())return;const H=Yr(a);if(!H){console.error(`[useMapInstance] ${M?"maplibregl":"mapboxgl"} is not available. Add the ${M?"MapLibre":"Mapbox"} GL JS script to your page.`);return}if(Mu(H),!M){if(!t&&typeof window<"u"&&typeof window.MAP_TOKEN=="string"&&window.MAP_TOKEN&&(t=window.MAP_TOKEN),!t){console.error('No Mapbox access token provided. Pass "tk" in profile-config JSON or set window.MAP_TOKEN.');return}if(!t.startsWith("pk.")){console.error('Mapbox token looks invalid (expected "pk." prefix). Got:',t.slice(0,10)+"...");return}}if(await dk(e.value,M?Ln.maplibre.css:lk),Q()||(await new Promise(ve=>requestAnimationFrame(ve)),Q()))return;const G=e.value,ie=G.clientWidth,F=G.clientHeight;if(ie===0||F===0){console.error(`[useMapInstance] Container has ZERO dimensions (${ie}×${F}). Map will be invisible. Check that parent elements have CSS sizing.`);let ve=G.parentElement,oe=0;for(;ve&&oe<5;)ve=ve.parentElement,oe++}const O=t;M||(H.accessToken=O);const V=()=>typeof window<"u"&&window.innerWidth>=1024,D=(ve,oe)=>{if(u)return typeof c=="number"?c:Xr;if(!V())return Xr;const fe=$k(ve,oe,d,x);return typeof c=="number"?Math.max(c,fe):fe},ae=D(G.clientWidth,G.clientHeight),me=ge.lightPreset||(()=>{var ve;try{const oe=typeof n=="function"?n():n;return(ve=oe==null?void 0:oe.basemap)==null?void 0:ve.lightPreset}catch{return}})();if(M){h.value=new H.Map({container:e.value,style:gk(I,me),center:s,zoom:r,minZoom:ae,maxZoom:d,pitch:f,bearing:v,dragRotate:!1,renderWorldCopies:L,...i?{bounds:i,...l?{fitBoundsOptions:l}:{}}:{},...C?{maxBounds:C}:{},attributionControl:!0,logoPosition:typeof window<"u"&&window.matchMedia&&window.matchMedia("(max-width: 767px)").matches?"bottom-right":"bottom-left"}),up(h.value);try{e.value.__doxaMap=h.value}catch{}}else{const ve=typeof n=="function"?n():n;h.value=new H.Map({accessToken:O,container:e.value,style:I,...ve?{config:ve}:{},center:s,zoom:r,minZoom:ae,maxZoom:d,pitch:f,bearing:v,dragRotate:!1,touchPitch:!1,renderWorldCopies:L,...i?{bounds:i,...l?{fitBoundsOptions:l}:{}}:{},...C?{maxBounds:C}:{},attributionControl:!0,logoPosition:typeof window<"u"&&window.matchMedia&&window.matchMedia("(max-width: 767px)").matches?"bottom-right":"bottom-left"}),up(h.value);try{e.value.__doxaMap=h.value}catch{}}try{let ve=!1;h.value.on("error",oe=>{var _,P;const fe=((_=oe==null?void 0:oe.error)==null?void 0:_.status)??(oe==null?void 0:oe.status),ye=String(((P=oe==null?void 0:oe.error)==null?void 0:P.url)||(oe==null?void 0:oe.sourceId)||"");fe!==401&&fe!==403||ve||(ve=!0,console.error(`[doxa-maps] Mapbox returned ${fe} for a TILE request while the style loaded fine. That is a URL RESTRICTION on the access token, not a bad token and not a bug in this map. Add this page's origin (${typeof location<"u"?location.origin:"this origin"}) to the token's URL restrictions in the Mapbox account. The map will keep its data layer and stay blank underneath until then.`+(ye?` First failing request: ${ye.slice(0,120)}`:"")))})}catch{}try{h.value.touchZoomRotate.disableRotation()}catch{}A=ek(((Ae=e.value)==null?void 0:Ae.parentElement)||null,{enabled:k});let we=ae,Le=null;p=()=>{const ve=h.value;if(!ve)return;const oe=D(G.clientWidth,G.clientHeight);oe!==we&&(we=oe,ve.setMinZoom(oe)),ve.getZoom(){Le=null;const fe=h.value;if(!fe)return;const ye=D(G.clientWidth,G.clientHeight);if(fe.getZoom(){Le&&(clearTimeout(Le),Le=null)},h.value.on("resize",p),typeof window<"u"&&(window.addEventListener("resize",p),window.addEventListener("orientationchange",p)),h.value.on("style.load",()=>{if(h.value&&cp(h.value,ne()),ge.paint&&h.value){const ve=nk(h.value,ge.paint);console.info("[useMapInstance] style paint applied ("+a+"):",ve.join(", ")||"NONE MATCHED")}requestAnimationFrame(()=>{var ve;(ve=h.value)==null||ve.resize(),h.value&&h.value.setMinZoom(D(G.clientWidth,G.clientHeight)),m.value=!0})})}function Y(){if(h.value){if(p&&(h.value.off("resize",p),typeof window<"u"&&(window.removeEventListener("resize",p),window.removeEventListener("orientationchange",p)),p=null),b){try{b()}catch{}b=null}A&&(A(),A=null),h.value.remove(),h.value=null,m.value=!1}}if(U&&typeof U=="object"&&"value"in U)try{rt(U,()=>{h.value&&m.value&&cp(h.value,ne())})}catch{}return{map:h,isMapReady:m,initializeMap:B,destroy:Y}}const _k={Africa:{zoom:1.3,center:[16.6512,26.3538]},Asia:{zoom:.8,center:[98.2654,49.9282]},Europe:{zoom:1.4,center:[22.7826,70.1026]},"Latin America & Caribbean":{zoom:1.8,center:[-60.4619,10.1428]},"Middle East":{zoom:1.7,center:[22.9056,39.5752]},"No WAGF Region/Bloc":{zoom:.6,center:[-8.2363,44.2392]},"North America & Non-Spanish Caribbean":{zoom:2.1,center:[-68.1935,31.4282]},Oceania:{zoom:1.5,center:[161.6257,-.668]}};function yk(e){return _k[e]||null}const An={center:[20,10],zoom:1.8};function vk(e={}){const{getMap:t=()=>null,mapId:o="unknown",mapStore:n=null,regionsGeoData:a=null,defaultCenter:s=(An==null?void 0:An.center)||[20,10],defaultZoom:r=An==null?void 0:An.zoom}=e,i={speed:.5,essential:!0,curve:1.2};function l(I,Q,H={x:150,y:0}){const G=t();if(!G)return I;try{const ie=G.getCanvas(),F=ie.width,O=ie.height,V=G.project(I),D=window.devicePixelRatio||1,ae=(H.x||0)*D,me=(H.y||0)*D,we={x:V.x-ae,y:V.y-me},Le=G.unproject(we);return[Le.lng,Le.lat]}catch{return I}}function c(I,Q=[]){const H=t();if(!H)return;let G=null,ie=5;const F=Q.filter(V=>V.languageFamily===I);if(F.length>0){let V=1/0,D=-1/0,ae=1/0,me=-1/0;if(F.forEach(we=>{we.longitude&&we.latitude&&(V=Math.min(V,we.longitude),D=Math.max(D,we.longitude),ae=Math.min(ae,we.latitude),me=Math.max(me,we.latitude))}),V!==1/0){G=[(V+D)/2,(ae+me)/2];const we=D-V,Le=me-ae,Ae=Math.max(we,Le);Ae>50?ie=2:Ae>20?ie=3:Ae>10?ie=4:Ae>5?ie=5:ie=6}}if(!G)return;const O=l(G);H.flyTo({center:O,zoom:ie,...i})}function u(I){const Q=t();if(!Q)return;let H=null,G=4;const ie=yk(I);if(ie)H=ie.center,G=ie.zoom||4;else if(a!=null&&a.features){const O=a.features.find(V=>{var D,ae;return((D=V.properties)==null?void 0:D.region)===I||((ae=V.properties)==null?void 0:ae.name)===I});O&&(H=d(O))}if(!H)return;const F=l(H);Q.flyTo({center:F,zoom:G,...i})}function d(I){if(!I||!I.geometry)return null;const{type:Q,coordinates:H}=I.geometry;let G=[];if(Q==="Polygon"?G=H[0]||[]:Q==="MultiPolygon"&&H.forEach(O=>{G=G.concat(O[0]||[])}),G.length===0)return null;let ie=0,F=0;return G.forEach(O=>{ie+=O[0],F+=O[1]}),[ie/G.length,F/G.length]}function f(I,Q={}){const H=t();if(!H)return;const G={center:I,...i,...Q};H.flyTo(G)}function v(I,Q){const H=t();if(!H||(I==null?void 0:I.longitude)==null||(I==null?void 0:I.latitude)==null)return;const G=Q??Math.min(H.getZoom()+2,8);f([I.longitude,I.latitude],{zoom:G})}function L(I,Q={top:40,right:40,bottom:40,left:40},H={}){const G=t();if(!G||!I)return;const ie=H.maxZoom??4,F=H.duration??900;G.fitBounds(I,{padding:Q,maxZoom:ie,duration:F,...i,...H})}function k(){const I=t();I&&I.flyTo({center:s,zoom:r,...i})}const x=80,C=800,h=5,m=5,p=110,b=1.2;function A(I){const Q=I.filter(Number.isFinite).slice().sort((_,P)=>_-P),H=Q.length;if(!H)return null;let G=-1,ie=0;for(let _=0;_G&&(G=S,ie=_)}const F=(ie+1)%H,O=new Array(H);for(let _=0;_0&&P((_+180)%360+360)%360-180,Le=we(ae),Ae=24,ve=360/Ae,oe=new Array(Ae).fill(0);for(const _ of Q){let P=Math.floor(((_+180)%360+360)%360/ve);P>=Ae&&(P=Ae-1),oe[P]++}let fe=0;for(let _=1;_oe[fe]&&(fe=_);return{center:we(-180+(fe+.5)*ve),minLng:Le,maxLng:Le+(me-ae),span:me-ae}}function w(I){try{const Q=I.getContainer&&I.getContainer().clientWidth||0,H=Q>0?Math.log2(Q/512):b,G=typeof I.getMinZoom=="function"?I.getMinZoom():H;return Math.max(G,H)}catch{return b}}function M(I,Q,H,G){I.easeTo({center:[Q,(H+G)/2],zoom:w(I),duration:C,essential:!0})}function U(I,Q,H){if(H>p)return!0;try{const G=typeof I.cameraForBounds=="function"?I.cameraForBounds(Q,{padding:x,maxZoom:h}):null;return G==null?!0:typeof G.zoom=="number"&&G.zoom<=w(I)+.05}catch{return!1}}function ne(I,Q){if(!Array.isArray(I))return I;switch(I[0]){case"get":return Q==null?void 0:Q[I[1]];case"literal":return I[1];case"has":return Q!=null&&I[1]in Q;case"!has":return Q==null||!(I[1]in Q);case"!":return!ne(I[1],Q);case"coalesce":{for(let G=1;G2){const F=Number(ne(I[2],Q));return Number.isFinite(F)?F:0}return NaN}case"to-string":{const G=ne(I[1],Q);return G==null?"":String(G)}case"to-boolean":return!!ne(I[1],Q);case"slice":{const G=ne(I[1],Q),ie=ne(I[2],Q),F=I.length>3?ne(I[3],Q):void 0;return typeof G!="string"?"":F!=null?G.slice(ie,F):G.slice(ie)}default:return I}}function B(I,Q){if(I===!0)return!0;if(I===!1)return!1;if(!Array.isArray(I))return!!I;const H=I[0];if(H==="all"){for(let G=1;G"||H===">="||H==="<"||H==="<="){const G=typeof I[1]=="string"?Q==null?void 0:Q[I[1]]:ne(I[1],Q),ie=ne(I[2],Q);switch(H){case"==":return G===ie||G==null&&ie==null;case"!=":return!(G===ie||G==null&&ie==null);case">":return G>ie;case">=":return G>=ie;case"<":return G{const j=(S==null?void 0:S.properties)||{};return j.region===_||j.name===_||j.id===_});if(P){const S=[];let j=1/0,ee=-1/0;const te=le=>{for(const g of le)Array.isArray(g[0])?te(g):Number.isFinite(g[0])&&Number.isFinite(g[1])&&(S.push(g[0]),g[1]ee&&(ee=g[1]))};(oe=P.geometry)!=null&&oe.coordinates&&te(P.geometry.coordinates);const ce=A(S);if(ce&&Number.isFinite(j)){const le=[[ce.minLng,j],[ce.maxLng,ee]];U(H,le,ce.span)?M(H,ce.center,j,ee):H.fitBounds(le,{padding:x,maxZoom:h,duration:C,essential:!0});return}}}const G=Q.sourceId??"language-families";if(!H.getSource(G))return;const ie=Q.matchExpr??I.filter;if(!ie)return;const F=Y(H,G);if(!F.length)return;const O=[];let V=1/0,D=-1/0,ae=0,me=0,we=0;const Le=new Set;for(const ye of F){const _=ye==null?void 0:ye.properties;if(!B(ie,_))continue;const P=_==null?void 0:_.uniqueId;if(P!=null){if(Le.has(P))continue;Le.add(P)}const S=(fe=ye.geometry)==null?void 0:fe.coordinates;if(!Array.isArray(S)||S.length<2)continue;const j=S[0],ee=S[1];!Number.isFinite(j)||!Number.isFinite(ee)||(ae===0&&(me=j,we=ee),O.push(j),eeD&&(D=ee),ae++)}if(ae===0)return;if(ae===1){H.flyTo({center:[me,we],zoom:m,duration:C,essential:!0});return}const Ae=A(O)||{center:0,minLng:0,maxLng:0,span:0},ve=[[Ae.minLng,V],[Ae.maxLng,D]];if(U(H,ve,Ae.span)){M(H,Ae.center,V,D);return}try{H.fitBounds(ve,{padding:x,maxZoom:h,duration:C,essential:!0})}catch{}}return{getOffsetCenter:l,slowFlyToFamily:c,slowFlyToRegion:u,flyTo:f,flyToCoords:v,fitBounds:L,resetView:k,zoomToLegendRow:ge,calculateRegionCenterFromPolygon:d}}const kk=150,wk=1200,xk=70,Sk=5.5,Lk=6,dp=.01,Ak=110,Pk=1.45;function Ek(){try{return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}}function Ck(e){if(!e)return null;const t=Number(e.longitude),o=Number(e.latitude);return!Number.isFinite(t)||!Number.isFinite(o)||t===0&&o===0||o<-90||o>90||t<-180||t>180?null:[t,o]}function Nk(e){let t=1/0,o=-1/0,n=1/0,a=-1/0;for(const i of e){io&&(o=i);const l=i<0?i+360:i;la&&(a=l)}if(!Number.isFinite(t))return null;const s=o-t,r=a-n;if(r180?n-360:n;return{minLng:i,maxLng:i+r,span:r}}return{minLng:t,maxLng:o,span:s}}function Tk(e,t){if(!e||!e.size||!t)return null;const o=[];let n=1/0,a=-1/0,s=null,r=0;for(const l of e){const c=Ck(t.get(l));c&&(r===0&&(s=c),o.push(c[0]),c[1]a&&(a=c[1]),r++)}if(r===0)return null;if(r===1)return{kind:"point",center:s};const i=Nk(o);return i?i.span!0}){if(!e||!e.selectionVersion)return()=>{};let s=null;function r(){if(s=null,!(t&&t())||!a())return;const c=Tk(e.selectionSet,o&&o());if(!c)return;const u=Ek()?0:wk;try{if(c.kind==="point"){n.flyTo(c.center,{zoom:Lk,duration:u,essential:!0});return}if(c.span>Ak){n.flyTo([(c.bounds[0][0]+c.bounds[1][0])/2,(c.bounds[0][1]+c.bounds[1][1])/2],{zoom:Pk,duration:u,essential:!0});return}n.fitBounds(c.bounds,xk,{maxZoom:Sk,duration:u,essential:!0})}catch{}}const i=rt(()=>e.selectionVersion.value,()=>{s&&clearTimeout(s),s=setTimeout(r,kk)});return function(){s&&(clearTimeout(s),s=null);try{i()}catch{}}}const Mk={__name:"MapToolbar",props:{hasGeocoder:{type:Boolean,default:!0}},setup(e){const t=pe(null);return no("mapToolbar",{el:t}),Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .map-toolbar { position: absolute; top: 6px; @@ -738,11 +656,7 @@ .map-toolbar { top: 72px; gap: 6px; } .map-toolbar.map-toolbar--no-geocoder { top: 6px; gap: 6px; } } -<<<<<<< HEAD `,"map-toolbar"),(o,n)=>(H(),Z("div",{ref_key:"toolbarEl",ref:t,class:He(["map-toolbar",{"map-toolbar--no-geocoder":!e.hasGeocoder}])},[Ko(o.$slots,"default")],2))}},Fk={__name:"ZoomInButton",props:{map:{type:Object,default:null},isDark:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){const{t}=Jo(),o=e;function n(){var a;o.disabled||(a=o.map)==null||a.zoomIn()}return(a,s)=>(H(),To(Hr,{"is-dark":e.isDark,disabled:e.disabled,title:he(t)("buttons.zoomIn"),onClick:n},{default:Co(()=>[...s[0]||(s[0]=[T("span",{style:{"font-size":"20px","line-height":"1","font-weight":"600"}},"+",-1)])]),_:1},8,["is-dark","disabled","title"]))}},Ik={__name:"ZoomOutButton",props:{map:{type:Object,default:null},isDark:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){const{t}=Jo(),o=e;function n(){var a;o.disabled||(a=o.map)==null||a.zoomOut()}return(a,s)=>(H(),To(Hr,{"is-dark":e.isDark,disabled:e.disabled,title:he(t)("buttons.zoomOut"),onClick:n},{default:Co(()=>[...s[0]||(s[0]=[T("span",{style:{"font-size":"22px","line-height":"1","font-weight":"600"}},"−",-1)])]),_:1},8,["is-dark","disabled","title"]))}},Dk=["data-projection"],Uk={class:"rd-legend-map","data-map-legend":"","aria-label":"UPG count legend"},Gk={class:"lg-h"},gp=2,jk="#f2f3f0",fp=.78,zk="prayer_level",Bk=.1,Vk=12,qk={__name:"DashboardMapPanel",setup(e){var Tt,Pt,Gt,co,$p,bp,_p,yp,vp;const t=(N,Q)=>Se(N)||Q,o=Fe("dashboardData",null),n=Fe("selectionBus",null),a=Fe("mapboxToken",de("")),s=Fe("dashboardConfig",{}),r=Fe("profileConfig",de(null)),i=(n==null?void 0:n.filterSet)||{},l=Object.fromEntries(Object.entries(s.facets||{}).map(([N,Q])=>[N,Q.get])),c=la(n,ia(s)),u=re(()=>{var Ee,Ie;const N=((Ee=o==null?void 0:o.rows)==null?void 0:Ee.value)||[],Q=Object.keys(i),ge=!!(((Ie=n==null?void 0:n.searchTerm)==null?void 0:Ie.value)||"").trim();if(!Q.length&&!ge)return N;const xe=N.filter(De=>Q.every(Pe=>{const pt=l[Pe];return pt?pt(De)===i[Pe]:!0}));return ca(xe,c)}),d=((Tt=s.map)==null?void 0:Tt.geoFacet)||"country_code",f=((Gt=(Pt=s.facets)==null?void 0:Pt[d])==null?void 0:Gt.geoIso)||(N=>{const Q=N[d];return Q&&Q.value?Q.value:null}),v=l[d]||(N=>st(N[d])),L=re(()=>{var Q;const N=new Map;for(const ge of((Q=o==null?void 0:o.rows)==null?void 0:Q.value)||[]){const xe=f(ge);xe&&N.set(xe,v(ge)||xe)}return N}),k=re(()=>{const N=new Map;for(const Q of u.value){const ge=f(Q);ge&&N.set(ge,(N.get(ge)||0)+1)}return N}),x=de(null),C=re(()=>{var ge,xe;const N=(ge=r==null?void 0:r.value)==null?void 0:ge.provider;return N==="maplibre"||N==="mapbox"?N:ip(null)==="maplibre"||(((xe=s.map)==null?void 0:xe.provider)||s.provider)==="maplibre"?"maplibre":"mapbox"}),m=re(()=>C.value==="maplibre"),{map:h,isMapReady:p,initializeMap:b,destroy:A}=_k({containerRef:x,accessToken:he(a)||a&&a.value||"",center:[28,18],zoom:1.1,minZoom:.5,skipWorldFloor:!0,provider:C.value,...(co=s.map)!=null&&co.mapStyle||s.mapStyle?{style:(($p=s.map)==null?void 0:$p.mapStyle)||s.mapStyle}:{}}),w=kk({getMap:()=>h.value,mapId:"rdash-map",defaultCenter:[28,18],defaultZoom:1.45});let M=null;M=Mk({bus:n,mapFly:w,getMap:()=>h.value,getRowStore:()=>{var N;return(N=o==null?void 0:o.rowStore)==null?void 0:N.value},isEnabled:()=>p.value});let U=!1,ne=null,B=null,X=null,pe=0,I=!1;function J(){I||pe||(pe=requestAnimationFrame(()=>{pe=0;const N=h.value;if(N&&typeof N.resize=="function")try{N.resize()}catch{}}))}function W(N){const Q=!!N;if(Q!==I){if(I=Q,I){pe&&(cancelAnimationFrame(pe),pe=0);return}J(),setTimeout(J,180)}}const G=(()=>{var Q;const N={"heartbeat-red":["#f4cec4","#ecaea1","#e08678","#ce544b","#b10010"],greyscale:["#c9c9c9","#a9a9a9","#6f6f6f","#3a3a3a","#060606"]};return N[(Q=s.map)==null?void 0:Q.colorRamp]||N["heartbeat-red"]})(),ae={heartbeatThreshold:150,binThresholds:[5,20,60],quantile:.1};function F(N,Q){return Number.isFinite(Q)?Q-1<=N?`${N}`:`${N}–${Q-1}`:`${N}+ · heartbeat zone`}function O(N){const ge=ae.binThresholds.map(xe=>xe/ae.heartbeatThreshold).map(xe=>Math.max(gp,Math.round(xe*N)));return V(ge,N)}function V(N,Q){const ge=[];for(const xe of N){const Ee=Math.max(xe,ge.length?ge[ge.length-1]+1:gp);EeDe>0).sort((De,Pe)=>De-Pe);if(ge.length<8)return null;const xe=De=>ge[Math.min(ge.length-1,Math.max(0,Math.floor(De*ge.length)))],Ee=xe(1-Q)+1,Ie=[.25,.5,.75].map(De=>xe(De));return{threshold:Ee,edges:V(Ie,Ee)}}function se(N){var De;if(Array.isArray((De=s.map)==null?void 0:De.bins)&&s.map.bins.length)return s.map.bins;const Q=s.map||{};let ge=Number(Q.heartbeatThreshold)>0?Number(Q.heartbeatThreshold):ae.heartbeatThreshold,xe=null;if(Q.heartbeatMode==="quantile"){const Pe=D(N||[],Number(Q.heartbeatQuantile)>0?Number(Q.heartbeatQuantile):ae.quantile);Pe&&(ge=Pe.threshold,xe=Pe.edges)}xe||(xe=Array.isArray(Q.binThresholds)&&Q.binThresholds.length?[...new Set(Q.binThresholds.map(Number).filter(Pe=>Number.isFinite(Pe)&&Pe>0&&PePe-pt):Number(Q.heartbeatThreshold)>0?O(ge):ae.binThresholds);const Ee=[...xe,ge,1/0].slice(0,G.length);for(;Ee.length{const Xt={upTo:Pe,c:G[pt],l:F(Ie,Pe)};return Ie=Pe,Xt})}const me=re(()=>se([...k.value.values()])),we=((bp=s.map)==null?void 0:bp.noDataColor)||"#f3f3f1";function Le(N){if(!N)return we;const Q=me.value;for(const ge of Q)if(N{const De=parseInt(ge.slice(Ie*2,Ie*2+2),16),Pe=parseInt(xe.slice(Ie*2,Ie*2+2),16);return Math.round(fp*De+(1-fp)*Pe)};return"#"+[0,1,2].map(Ie=>Ee(Ie).toString(16).padStart(2,"0")).join("")}const ke=re(()=>me.value.map(N=>({c:Ae(N.c),l:N.l}))),oe=((_p=s.map)==null?void 0:_p.selectedColor)||"#1a237e";function fe(){const N=k.value,Q=[],ge=[];N.forEach((De,Pe)=>{Q.push(Pe,Le(De)),ge.push(Pe)});const xe=Q.length?["match",["get","iso_3166_1_alpha_3"],...Q,we]:we,Ie=Object.keys(i).length>0&&ge.length?["match",["get","iso_3166_1_alpha_3"],...ge.flatMap(De=>[De,.92]),.12]:.78;return{fillColor:xe,fillOpacity:Ie}}function ye(){return Object.prototype.hasOwnProperty.call(i,zk)}const _=((yp=s.map)==null?void 0:yp.pinColor)||"#ef6c00",P=((vp=s.map)==null?void 0:vp.pinStrokeColor)||"#ffffff";function S(){return ye()?ns({colorSource:"properties"}):_}function z(){const N=h.value;if(!N||!N.getLayer("rd-choropleth"))return;const{fillColor:Q,fillOpacity:ge}=fe();N.setPaintProperty("rd-choropleth","fill-color",Q),N.setPaintProperty("rd-choropleth","fill-opacity",ge);const xe=N.getSource("rd-bubbles");xe&&xe.setData(te()),N.getLayer("rd-bubble-layer")&&N.setPaintProperty("rd-bubble-layer","circle-color",S())}function ee(N){const Q=N==null?void 0:N.people_praying,ge=Q&&typeof Q=="object"?Q.value:Q;return Number(ge)||0}function te(){return{type:"FeatureCollection",features:u.value.filter(N=>Number(N.latitude)&&Number(N.longitude)).map(N=>({type:"Feature",geometry:{type:"Point",coordinates:[Number(N.longitude),Number(N.latitude)]},properties:{pop:Number(N.population)||0,slug:N.slug||"",name:N.name||"",peoplePraying:ee(N)}}))}}function ce(){var ge;const N=n==null?void 0:n.selectionSet,Q=((ge=o==null?void 0:o.rows)==null?void 0:ge.value)||[];return!N||!N.size?{type:"FeatureCollection",features:[]}:{type:"FeatureCollection",features:Q.filter(xe=>N.has(xe.slug)&&Number(xe.latitude)&&Number(xe.longitude)).map(xe=>({type:"Feature",geometry:{type:"Point",coordinates:[Number(xe.longitude),Number(xe.latitude)]},properties:{slug:xe.slug||"",name:xe.name||""}}))}}function ie(){const N=h.value;if(!N)return;const Q=N.getSource("rd-bubble-selected");Q&&Q.setData(ce())}function g(){var xe;const N=h.value;if(!N||U)return;U=!0,N.getSource("rd-countries")||(m.value?(N.addSource("rd-countries",{type:"geojson",data:{type:"FeatureCollection",features:[]}}),fetch(`${Hu(r.value)}/boundaries/world-adm0.geojson`).then(Ee=>Ee.json()).then(Ee=>{for(const De of Ee.features||[])De.properties&&De.properties.iso3&&(De.properties.iso_3166_1_alpha_3=De.properties.iso3);const Ie=h.value&&h.value.getSource("rd-countries");Ie&&Ie.setData(Ee)}).catch(Ee=>console.warn("[rdash] country boundaries failed to load",Ee))):N.addSource("rd-countries",{type:"vector",url:"mapbox://mapbox.country-boundaries-v1"}));const{fillColor:Q,fillOpacity:ge}=fe();N.addLayer({id:"rd-choropleth",type:"fill",source:"rd-countries",...m.value?{}:{"source-layer":"country_boundaries"},paint:{"fill-color":Q,"fill-opacity":ge,"fill-outline-color":((xe=s.map)==null?void 0:xe.outlineColor)||"#6d766e"}}),N.addSource("rd-bubbles",{type:"geojson",data:te()}),N.addLayer({id:"rd-bubble-layer",type:"circle",source:"rd-bubbles",paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,2.2,6,5.5],"circle-color":S(),"circle-opacity":1,"circle-stroke-color":P,"circle-stroke-width":["interpolate",["linear"],["zoom"],1,1.2,6,2],"circle-stroke-opacity":1}}),N.addSource("rd-bubble-selected",{type:"geojson",data:ce()}),N.addLayer({id:"rd-bubble-selected",type:"circle",source:"rd-bubble-selected",paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,5,6,11],"circle-color":oe,"circle-opacity":.18,"circle-stroke-width":3,"circle-stroke-color":oe,"circle-stroke-opacity":.95}}),N.on("click","rd-choropleth",$),N.on("click","rd-bubble-layer",y),N.on("mouseenter","rd-choropleth",()=>{N.getCanvas().style.cursor="pointer"}),N.on("mouseleave","rd-choropleth",()=>{N.getCanvas().style.cursor=""}),N.on("mouseenter","rd-bubble-layer",()=>{N.getCanvas().style.cursor="pointer"}),N.on("mouseleave","rd-bubble-layer",()=>{N.getCanvas().style.cursor=""});try{window.__rdashMap=N,window.__rdashClickAt=(Ee,Ie)=>{const De=N.project([Ee,Ie]),Pe=N.queryRenderedFeatures(De,{layers:["rd-choropleth"]});return Pe&&Pe[0]?($({features:Pe}),Pe[0].properties&&Pe[0].properties.iso_3166_1_alpha_3):null},window.__rdashPinAt=(Ee,Ie)=>{const De=N.project([Ee,Ie]),Pe=N.queryRenderedFeatures([[De.x-7,De.y-7],[De.x+7,De.y+7]],{layers:["rd-bubble-layer"]});return Pe&&Pe[0]?(y({features:[Pe[0]]}),Pe[0].properties&&Pe[0].properties.slug):null}}catch{}gt();try{typeof N.setFog=="function"&&N.setFog({color:"rgb(186, 210, 235)","high-color":"rgb(36, 92, 223)","horizon-blend":.02,"space-color":"#000000","star-intensity":.6})}catch{}n&&n.on("select",ie),ie(),n&&n.on("focusRow",({slug:Ee}={})=>{var Pe;if(!Ee)return;const Ie=(((Pe=o==null?void 0:o.rows)==null?void 0:Pe.value)||[]).find(pt=>pt.slug===Ee),De=h.value;if(De&&Ie&&Number(Ie.latitude)&&Number(Ie.longitude))try{De.flyTo({center:[Number(Ie.longitude),Number(Ie.latitude)],zoom:5.5,duration:1200})}catch{}})}function $(N){const Q=h.value;if(Q&&N.point){const Ie=Q.queryRenderedFeatures([[N.point.x-5,N.point.y-5],[N.point.x+5,N.point.y+5]],{layers:["rd-bubble-layer"]});if(Ie&&Ie.length)return}const ge=N.features&&N.features[0];if(!ge||!n)return;const xe=ge.properties&&ge.properties.iso_3166_1_alpha_3,Ee=L.value.get(xe);Ee&&(n.setFilter(d,i[d]===Ee?null:Ee),n.emit("mapFocus",{facet:d,value:Ee}))}function y(N){const Q=N.features&&N.features[0];if(!Q||!n)return;const ge=Q.properties&&Q.properties.slug;ge&&(n.toggleSelect(ge),n.emit("focusRow",{slug:ge,name:Q.properties&&Q.properties.name}))}function E(N){var ge;let Q=N&&N.parentNode;for(;Q;){if(Q.nodeType===1){const xe=getComputedStyle(Q);if(/auto|scroll/.test(xe.overflowY)&&Q.scrollHeight>Q.clientHeight+4)return Q}if(Q=Q.parentElement||((ge=Q.parentNode)==null?void 0:ge.host)||(Q.parentNode!==Q?Q.parentNode:null),Q&&Q.nodeType===9)break}return null}function q(N){if(!(!N||!N.scrollZoom))try{N.scrollZoom.enable()}catch{}}vt(async()=>{await b();const N=h.value;if(!N)return;N.isStyleLoaded()?g():N.on("load",g),q(N);const Q=()=>q(N);let ge=null;try{ge=new ResizeObserver(Q);const xe=N.getContainer&&N.getContainer()||null;xe&&ge.observe(xe);const Ee=xe?E(xe):null;Ee&&ge.observe(Ee),document.body&&ge.observe(document.body)}catch{}window.addEventListener("resize",Q),Dt(()=>{try{ge&&ge.disconnect()}catch{}window.removeEventListener("resize",Q)}),N.on("zoom",j),N.on("zoomend",j),N.on("resize",j),j(),N.on("idle",()=>{!U&&N.isStyleLoaded()&&g()}),typeof ResizeObserver<"u"&&x.value&&(ne=new ResizeObserver(J),ne.observe(x.value)),qe(),N.on("idle",qe),N.on("resize",qe),n&&typeof n.on=="function"&&(B=n.on("toggleTable",()=>{J(),setTimeout(J,280)}),X=n.on("layoutResizing",W))}),Dt(()=>{try{M&&M()}catch{}M=null;try{B&&B()}catch{}B=null;try{X&&X()}catch{}if(X=null,ne){try{ne.disconnect()}catch{}ne=null}if(ve){try{ve.disconnect()}catch{}ve=null}Ue=null,pe&&(cancelAnimationFrame(pe),pe=0);try{const N=h.value;N&&(N.off("zoom",j),N.off("zoomend",j),N.off("resize",j),N.off("idle",qe),N.off("resize",qe))}catch{}try{A&&A()}catch{}}),rt([u,p],z);const K=de(!0),R=de(!0);function j(){const N=h.value;if(!N)return;const Q=N.getZoom();K.value=QN.getMinZoom()+.01}const le=de(null);let ve=null,Ue=null;function qe(){var xe;const N=le.value;if(!N)return;let Q=0;try{const Ee=(xe=N.getRootNode)==null?void 0:xe.call(N),Ie=Ee&&Ee.querySelector?Ee.querySelector(".mapboxgl-ctrl-bottom-right .mapboxgl-ctrl-attrib"):null;if(Ie){const De=Ie.getBoundingClientRect(),Pe=N.getBoundingClientRect();if(Q=Math.max(De.height||0,Pe.bottom-De.top),Ue!==Ie&&typeof ResizeObserver<"u"){if(ve)try{ve.disconnect()}catch{}Ue=Ie,ve=new ResizeObserver(qe),ve.observe(Ie)}}}catch{}const ge=Math.min(Math.max(Math.ceil(Q)||20,20),72);N.style.setProperty("--rd-attrib-clear",ge+"px")}const je=de("globe");function gt(){const N=h.value;if(!(!N||typeof N.setProjection!="function")){try{N.setProjection({type:je.value});return}catch{}try{N.setProjection(je.value)}catch{}}}function mt(){je.value=je.value==="globe"?"mercator":"globe",gt()}function Qe(N){const Q=Number(N.longitude),ge=Number(N.latitude);return!Number.isFinite(Q)||!Number.isFinite(ge)||Q===0&&ge===0||ge<-90||ge>90||Q<-180||Q>180?null:[Q,ge]}function Y(N,Q){if(!N.length)return NaN;const ge=Math.min(N.length-1,Math.max(0,Math.round(Q*(N.length-1))));return N[ge]}function $e(N){const Q=N.slice().sort((Pe,pt)=>Pe-pt),ge=Q.length;if(ge<2)return Q;let xe=-1,Ee=0;for(let Pe=0;Pexe&&(xe=Xt,Ee=Pe)}const Ie=(Ee+1)%ge,De=new Array(ge);for(let Pe=0;Pe0&&pten[1]).sort((en,us)=>en-us),xe=$e(Q.map(en=>en[0])),Ee=Q.length>=Vk?Bk:0,Ie=Y(ge,Ee),De=Y(ge,1-Ee),Pe=Y(xe,Ee),pt=Y(xe,1-Ee),Xt=[Y(xe,.5),Y(ge,.5)];return!(pt>Pe)||!(De>Ie)?{bounds:[[Xt[0],Xt[1]],[Xt[0],Xt[1]]],center:Xt}:{bounds:[[Pe,Ie],[pt,De]],center:Xt}}function ze(){const N=h.value;if(!N)return;if(!Object.keys(i).length){try{N.flyTo({center:[28,18],zoom:1.45,duration:1e3})}catch{}return}const Q=be(u.value);if(Q)try{N.fitBounds(Q.bounds,{padding:70,duration:1200,maxZoom:5.5}),N.setCenter(Q.center)}catch{}}let Ve=null;return rt(()=>JSON.stringify(i),()=>{clearTimeout(Ve),Ve=setTimeout(ze,260)}),Ot(` -======= -`,"map-toolbar"),(o,n)=>(W(),X("div",{ref_key:"toolbarEl",ref:t,class:qe(["map-toolbar",{"map-toolbar--no-geocoder":!e.hasGeocoder}])},[Ko(o.$slots,"default")],2))}},Ok={__name:"ZoomInButton",props:{map:{type:Object,default:null},isDark:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){const{t}=Jo(),o=e;function n(){var a;o.disabled||(a=o.map)==null||a.zoomIn()}return(a,s)=>(W(),To(Hr,{"is-dark":e.isDark,disabled:e.disabled,title:he(t)("buttons.zoomIn"),onClick:n},{default:Co(()=>[...s[0]||(s[0]=[T("span",{style:{"font-size":"20px","line-height":"1","font-weight":"600"}},"+",-1)])]),_:1},8,["is-dark","disabled","title"]))}},Fk={__name:"ZoomOutButton",props:{map:{type:Object,default:null},isDark:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){const{t}=Jo(),o=e;function n(){var a;o.disabled||(a=o.map)==null||a.zoomOut()}return(a,s)=>(W(),To(Hr,{"is-dark":e.isDark,disabled:e.disabled,title:he(t)("buttons.zoomOut"),onClick:n},{default:Co(()=>[...s[0]||(s[0]=[T("span",{style:{"font-size":"22px","line-height":"1","font-weight":"600"}},"−",-1)])]),_:1},8,["is-dark","disabled","title"]))}},Ik=["data-projection"],Dk={class:"rd-legend-map","data-map-legend":"","aria-label":"UPG count legend"},gp=2,Uk="#f2f3f0",fp=.78,Gk="prayer_level",jk=.1,zk=12,Bk={__name:"DashboardMapPanel",setup(e){var Be,Tt,Pt,Gt,co,$p,bp,_p,yp;const t=Ie("dashboardData",null),o=Ie("selectionBus",null),n=Ie("mapboxToken",pe("")),a=Ie("dashboardConfig",{}),s=Ie("profileConfig",pe(null)),r=(o==null?void 0:o.filterSet)||{},i=Object.fromEntries(Object.entries(a.facets||{}).map(([R,Z])=>[R,Z.get])),l=la(o,ia(a)),c=re(()=>{var Ee,De;const R=((Ee=t==null?void 0:t.rows)==null?void 0:Ee.value)||[],Z=Object.keys(r),de=!!(((De=o==null?void 0:o.searchTerm)==null?void 0:De.value)||"").trim();if(!Z.length&&!de)return R;const xe=R.filter(Ue=>Z.every(Pe=>{const pt=i[Pe];return pt?pt(Ue)===r[Pe]:!0}));return ca(xe,l)}),u=((Be=a.map)==null?void 0:Be.geoFacet)||"country_code",d=((Pt=(Tt=a.facets)==null?void 0:Tt[u])==null?void 0:Pt.geoIso)||(R=>{const Z=R[u];return Z&&Z.value?Z.value:null}),f=i[u]||(R=>st(R[u])),v=re(()=>{var Z;const R=new Map;for(const de of((Z=t==null?void 0:t.rows)==null?void 0:Z.value)||[]){const xe=d(de);xe&&R.set(xe,f(de)||xe)}return R}),L=re(()=>{const R=new Map;for(const Z of c.value){const de=d(Z);de&&R.set(de,(R.get(de)||0)+1)}return R}),k=pe(null),x=re(()=>{var de,xe;const R=(de=s==null?void 0:s.value)==null?void 0:de.provider;return R==="maplibre"||R==="mapbox"?R:ip(null)==="maplibre"||(((xe=a.map)==null?void 0:xe.provider)||a.provider)==="maplibre"?"maplibre":"mapbox"}),C=re(()=>x.value==="maplibre"),{map:h,isMapReady:m,initializeMap:p,destroy:b}=bk({containerRef:k,accessToken:he(n)||n&&n.value||"",center:[28,18],zoom:1.1,minZoom:.5,skipWorldFloor:!0,provider:x.value,...(Gt=a.map)!=null&&Gt.mapStyle||a.mapStyle?{style:((co=a.map)==null?void 0:co.mapStyle)||a.mapStyle}:{}}),A=vk({getMap:()=>h.value,mapId:"rdash-map",defaultCenter:[28,18],defaultZoom:1.45});let w=null;w=Rk({bus:o,mapFly:A,getMap:()=>h.value,getRowStore:()=>{var R;return(R=t==null?void 0:t.rowStore)==null?void 0:R.value},isEnabled:()=>m.value});let M=!1,U=null,ne=null,B=null,Y=0,ge=!1;function I(){ge||Y||(Y=requestAnimationFrame(()=>{Y=0;const R=h.value;if(R&&typeof R.resize=="function")try{R.resize()}catch{}}))}function Q(R){const Z=!!R;if(Z!==ge){if(ge=Z,ge){Y&&(cancelAnimationFrame(Y),Y=0);return}I(),setTimeout(I,180)}}const H=(()=>{var Z;const R={"heartbeat-red":["#f4cec4","#ecaea1","#e08678","#ce544b","#b10010"],greyscale:["#c9c9c9","#a9a9a9","#6f6f6f","#3a3a3a","#060606"]};return R[(Z=a.map)==null?void 0:Z.colorRamp]||R["heartbeat-red"]})(),G={heartbeatThreshold:150,binThresholds:[5,20,60],quantile:.1};function ie(R,Z){return Number.isFinite(Z)?Z-1<=R?`${R}`:`${R}–${Z-1}`:`${R}+ · heartbeat zone`}function F(R){const de=G.binThresholds.map(xe=>xe/G.heartbeatThreshold).map(xe=>Math.max(gp,Math.round(xe*R)));return O(de,R)}function O(R,Z){const de=[];for(const xe of R){const Ee=Math.max(xe,de.length?de[de.length-1]+1:gp);EeUe>0).sort((Ue,Pe)=>Ue-Pe);if(de.length<8)return null;const xe=Ue=>de[Math.min(de.length-1,Math.max(0,Math.floor(Ue*de.length)))],Ee=xe(1-Z)+1,De=[.25,.5,.75].map(Ue=>xe(Ue));return{threshold:Ee,edges:O(De,Ee)}}function D(R){var Ue;if(Array.isArray((Ue=a.map)==null?void 0:Ue.bins)&&a.map.bins.length)return a.map.bins;const Z=a.map||{};let de=Number(Z.heartbeatThreshold)>0?Number(Z.heartbeatThreshold):G.heartbeatThreshold,xe=null;if(Z.heartbeatMode==="quantile"){const Pe=V(R||[],Number(Z.heartbeatQuantile)>0?Number(Z.heartbeatQuantile):G.quantile);Pe&&(de=Pe.threshold,xe=Pe.edges)}xe||(xe=Array.isArray(Z.binThresholds)&&Z.binThresholds.length?[...new Set(Z.binThresholds.map(Number).filter(Pe=>Number.isFinite(Pe)&&Pe>0&&PePe-pt):Number(Z.heartbeatThreshold)>0?F(de):G.binThresholds);const Ee=[...xe,de,1/0].slice(0,H.length);for(;Ee.length{const Xt={upTo:Pe,c:H[pt],l:ie(De,Pe)};return De=Pe,Xt})}const ae=re(()=>D([...L.value.values()])),me=(($p=a.map)==null?void 0:$p.noDataColor)||"#f3f3f1";function we(R){if(!R)return me;const Z=ae.value;for(const de of Z)if(R{const Ue=parseInt(de.slice(De*2,De*2+2),16),Pe=parseInt(xe.slice(De*2,De*2+2),16);return Math.round(fp*Ue+(1-fp)*Pe)};return"#"+[0,1,2].map(De=>Ee(De).toString(16).padStart(2,"0")).join("")}const Ae=re(()=>ae.value.map(R=>({c:Le(R.c),l:R.l}))),ve=((bp=a.map)==null?void 0:bp.selectedColor)||"#1a237e";function oe(){const R=L.value,Z=[],de=[];R.forEach((Ue,Pe)=>{Z.push(Pe,we(Ue)),de.push(Pe)});const xe=Z.length?["match",["get","iso_3166_1_alpha_3"],...Z,me]:me,De=Object.keys(r).length>0&&de.length?["match",["get","iso_3166_1_alpha_3"],...de.flatMap(Ue=>[Ue,.92]),.12]:.78;return{fillColor:xe,fillOpacity:De}}function fe(){return Object.prototype.hasOwnProperty.call(r,Gk)}const ye=((_p=a.map)==null?void 0:_p.pinColor)||"#ef6c00",_=((yp=a.map)==null?void 0:yp.pinStrokeColor)||"#ffffff";function P(){return fe()?ns({colorSource:"properties"}):ye}function S(){const R=h.value;if(!R||!R.getLayer("rd-choropleth"))return;const{fillColor:Z,fillOpacity:de}=oe();R.setPaintProperty("rd-choropleth","fill-color",Z),R.setPaintProperty("rd-choropleth","fill-opacity",de);const xe=R.getSource("rd-bubbles");xe&&xe.setData(ee()),R.getLayer("rd-bubble-layer")&&R.setPaintProperty("rd-bubble-layer","circle-color",P())}function j(R){const Z=R==null?void 0:R.people_praying,de=Z&&typeof Z=="object"?Z.value:Z;return Number(de)||0}function ee(){return{type:"FeatureCollection",features:c.value.filter(R=>Number(R.latitude)&&Number(R.longitude)).map(R=>({type:"Feature",geometry:{type:"Point",coordinates:[Number(R.longitude),Number(R.latitude)]},properties:{pop:Number(R.population)||0,slug:R.slug||"",name:R.name||"",peoplePraying:j(R)}}))}}function te(){var de;const R=o==null?void 0:o.selectionSet,Z=((de=t==null?void 0:t.rows)==null?void 0:de.value)||[];return!R||!R.size?{type:"FeatureCollection",features:[]}:{type:"FeatureCollection",features:Z.filter(xe=>R.has(xe.slug)&&Number(xe.latitude)&&Number(xe.longitude)).map(xe=>({type:"Feature",geometry:{type:"Point",coordinates:[Number(xe.longitude),Number(xe.latitude)]},properties:{slug:xe.slug||"",name:xe.name||""}}))}}function ce(){const R=h.value;if(!R)return;const Z=R.getSource("rd-bubble-selected");Z&&Z.setData(te())}function le(){var xe;const R=h.value;if(!R||M)return;M=!0,R.getSource("rd-countries")||(C.value?(R.addSource("rd-countries",{type:"geojson",data:{type:"FeatureCollection",features:[]}}),fetch(`${Hu(s.value)}/boundaries/world-adm0.geojson`).then(Ee=>Ee.json()).then(Ee=>{for(const Ue of Ee.features||[])Ue.properties&&Ue.properties.iso3&&(Ue.properties.iso_3166_1_alpha_3=Ue.properties.iso3);const De=h.value&&h.value.getSource("rd-countries");De&&De.setData(Ee)}).catch(Ee=>console.warn("[rdash] country boundaries failed to load",Ee))):R.addSource("rd-countries",{type:"vector",url:"mapbox://mapbox.country-boundaries-v1"}));const{fillColor:Z,fillOpacity:de}=oe();R.addLayer({id:"rd-choropleth",type:"fill",source:"rd-countries",...C.value?{}:{"source-layer":"country_boundaries"},paint:{"fill-color":Z,"fill-opacity":de,"fill-outline-color":((xe=a.map)==null?void 0:xe.outlineColor)||"#6d766e"}}),R.addSource("rd-bubbles",{type:"geojson",data:ee()}),R.addLayer({id:"rd-bubble-layer",type:"circle",source:"rd-bubbles",paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,2.2,6,5.5],"circle-color":P(),"circle-opacity":1,"circle-stroke-color":_,"circle-stroke-width":["interpolate",["linear"],["zoom"],1,1.2,6,2],"circle-stroke-opacity":1}}),R.addSource("rd-bubble-selected",{type:"geojson",data:te()}),R.addLayer({id:"rd-bubble-selected",type:"circle",source:"rd-bubble-selected",paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,5,6,11],"circle-color":ve,"circle-opacity":.18,"circle-stroke-width":3,"circle-stroke-color":ve,"circle-stroke-opacity":.95}}),R.on("click","rd-choropleth",g),R.on("click","rd-bubble-layer",$),R.on("mouseenter","rd-choropleth",()=>{R.getCanvas().style.cursor="pointer"}),R.on("mouseleave","rd-choropleth",()=>{R.getCanvas().style.cursor=""}),R.on("mouseenter","rd-bubble-layer",()=>{R.getCanvas().style.cursor="pointer"}),R.on("mouseleave","rd-bubble-layer",()=>{R.getCanvas().style.cursor=""});try{window.__rdashMap=R,window.__rdashClickAt=(Ee,De)=>{const Ue=R.project([Ee,De]),Pe=R.queryRenderedFeatures(Ue,{layers:["rd-choropleth"]});return Pe&&Pe[0]?(g({features:Pe}),Pe[0].properties&&Pe[0].properties.iso_3166_1_alpha_3):null},window.__rdashPinAt=(Ee,De)=>{const Ue=R.project([Ee,De]),Pe=R.queryRenderedFeatures([[Ue.x-7,Ue.y-7],[Ue.x+7,Ue.y+7]],{layers:["rd-bubble-layer"]});return Pe&&Pe[0]?($({features:[Pe[0]]}),Pe[0].properties&&Pe[0].properties.slug):null}}catch{}He();try{typeof R.setFog=="function"&&R.setFog({color:"rgb(186, 210, 235)","high-color":"rgb(36, 92, 223)","horizon-blend":.02,"space-color":"#000000","star-intensity":.6})}catch{}o&&o.on("select",ce),ce(),o&&o.on("focusRow",({slug:Ee}={})=>{var Pe;if(!Ee)return;const De=(((Pe=t==null?void 0:t.rows)==null?void 0:Pe.value)||[]).find(pt=>pt.slug===Ee),Ue=h.value;if(Ue&&De&&Number(De.latitude)&&Number(De.longitude))try{Ue.flyTo({center:[Number(De.longitude),Number(De.latitude)],zoom:5.5,duration:1200})}catch{}})}function g(R){const Z=h.value;if(Z&&R.point){const De=Z.queryRenderedFeatures([[R.point.x-5,R.point.y-5],[R.point.x+5,R.point.y+5]],{layers:["rd-bubble-layer"]});if(De&&De.length)return}const de=R.features&&R.features[0];if(!de||!o)return;const xe=de.properties&&de.properties.iso_3166_1_alpha_3,Ee=v.value.get(xe);Ee&&(o.setFilter(u,r[u]===Ee?null:Ee),o.emit("mapFocus",{facet:u,value:Ee}))}function $(R){const Z=R.features&&R.features[0];if(!Z||!o)return;const de=Z.properties&&Z.properties.slug;de&&(o.toggleSelect(de),o.emit("focusRow",{slug:de,name:Z.properties&&Z.properties.name}))}function y(R){var de;let Z=R&&R.parentNode;for(;Z;){if(Z.nodeType===1){const xe=getComputedStyle(Z);if(/auto|scroll/.test(xe.overflowY)&&Z.scrollHeight>Z.clientHeight+4)return Z}if(Z=Z.parentElement||((de=Z.parentNode)==null?void 0:de.host)||(Z.parentNode!==Z?Z.parentNode:null),Z&&Z.nodeType===9)break}return null}function E(R){if(!(!R||!R.scrollZoom))try{R.scrollZoom.enable()}catch{}}vt(async()=>{await p();const R=h.value;if(!R)return;R.isStyleLoaded()?le():R.on("load",le),E(R);const Z=()=>E(R);let de=null;try{de=new ResizeObserver(Z);const xe=R.getContainer&&R.getContainer()||null;xe&&de.observe(xe);const Ee=xe?y(xe):null;Ee&&de.observe(Ee),document.body&&de.observe(document.body)}catch{}window.addEventListener("resize",Z),Dt(()=>{try{de&&de.disconnect()}catch{}window.removeEventListener("resize",Z)}),R.on("zoom",N),R.on("zoomend",N),R.on("resize",N),N(),R.on("idle",()=>{!M&&R.isStyleLoaded()&&le()}),typeof ResizeObserver<"u"&&k.value&&(U=new ResizeObserver(I),U.observe(k.value)),Fe(),R.on("idle",Fe),R.on("resize",Fe),o&&typeof o.on=="function"&&(ne=o.on("toggleTable",()=>{I(),setTimeout(I,280)}),B=o.on("layoutResizing",Q))}),Dt(()=>{try{w&&w()}catch{}w=null;try{ne&&ne()}catch{}ne=null;try{B&&B()}catch{}if(B=null,U){try{U.disconnect()}catch{}U=null}if(se){try{se.disconnect()}catch{}se=null}ke=null,Y&&(cancelAnimationFrame(Y),Y=0);try{const R=h.value;R&&(R.off("zoom",N),R.off("zoomend",N),R.off("resize",N),R.off("idle",Fe),R.off("resize",Fe))}catch{}try{b&&b()}catch{}}),rt([c,m],S);const q=pe(!0),K=pe(!0);function N(){const R=h.value;if(!R)return;const Z=R.getZoom();q.value=ZR.getMinZoom()+.01}const z=pe(null);let se=null,ke=null;function Fe(){var xe;const R=z.value;if(!R)return;let Z=0;try{const Ee=(xe=R.getRootNode)==null?void 0:xe.call(R),De=Ee&&Ee.querySelector?Ee.querySelector(".mapboxgl-ctrl-bottom-right .mapboxgl-ctrl-attrib"):null;if(De){const Ue=De.getBoundingClientRect(),Pe=R.getBoundingClientRect();if(Z=Math.max(Ue.height||0,Pe.bottom-Ue.top),ke!==De&&typeof ResizeObserver<"u"){if(se)try{se.disconnect()}catch{}ke=De,se=new ResizeObserver(Fe),se.observe(De)}}}catch{}const de=Math.min(Math.max(Math.ceil(Z)||20,20),72);R.style.setProperty("--rd-attrib-clear",de+"px")}const Ve=pe("globe");function He(){const R=h.value;if(!(!R||typeof R.setProjection!="function")){try{R.setProjection({type:Ve.value});return}catch{}try{R.setProjection(Ve.value)}catch{}}}function ht(){Ve.value=Ve.value==="globe"?"mercator":"globe",He()}function mt(R){const Z=Number(R.longitude),de=Number(R.latitude);return!Number.isFinite(Z)||!Number.isFinite(de)||Z===0&&de===0||de<-90||de>90||Z<-180||Z>180?null:[Z,de]}function Ye(R,Z){if(!R.length)return NaN;const de=Math.min(R.length-1,Math.max(0,Math.round(Z*(R.length-1))));return R[de]}function J(R){const Z=R.slice().sort((Pe,pt)=>Pe-pt),de=Z.length;if(de<2)return Z;let xe=-1,Ee=0;for(let Pe=0;Pexe&&(xe=Xt,Ee=Pe)}const De=(Ee+1)%de,Ue=new Array(de);for(let Pe=0;Pe0&&pten[1]).sort((en,us)=>en-us),xe=J(Z.map(en=>en[0])),Ee=Z.length>=zk?jk:0,De=Ye(de,Ee),Ue=Ye(de,1-Ee),Pe=Ye(xe,Ee),pt=Ye(xe,1-Ee),Xt=[Ye(xe,.5),Ye(de,.5)];return!(pt>Pe)||!(Ue>De)?{bounds:[[Xt[0],Xt[1]],[Xt[0],Xt[1]]],center:Xt}:{bounds:[[Pe,De],[pt,Ue]],center:Xt}}function be(){const R=h.value;if(!R)return;if(!Object.keys(r).length){try{R.flyTo({center:[28,18],zoom:1.45,duration:1e3})}catch{}return}const Z=$e(c.value);if(Z)try{R.fitBounds(Z.bounds,{padding:70,duration:1200,maxZoom:5.5}),R.setCenter(Z.center)}catch{}}let Ge=null;return rt(()=>JSON.stringify(r),()=>{clearTimeout(Ge),Ge=setTimeout(be,260)}),Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc .rd-mapwrap{ position:relative; width:100%; height:100%; min-height:0; background:var(--dx-line, #d1d4cd); } .rd-mapwrap[data-projection="globe"]{ background:#000; } .rd-mapwrap .rd-mapc{ position:absolute; inset:0; } @@ -774,19 +688,11 @@ z-index:2; touch-action:pan-y; pointer-events:auto; background:transparent; } .map-scroll-edge--left{ left:0; } .map-scroll-edge--right{ right:0; } -<<<<<<< HEAD `,"rd-mappanel"),(N,Q)=>(H(),Z("div",{ref_key:"mapWrap",ref:le,class:"rd-mapwrap","data-sub":"map","data-projection":je.value},[T("div",{ref_key:"mapContainer",ref:x,class:"rd-mapc","data-map-canvas":""},null,512),Q[0]||(Q[0]=T("div",{class:"map-scroll-edge map-scroll-edge--left"},null,-1)),Q[1]||(Q[1]=T("div",{class:"map-scroll-edge map-scroll-edge--right"},null,-1)),Ge(Ok,{class:"rd-zoomtools","has-geocoder":!1,"data-map-zoom-controls":""},{default:Co(()=>[Ge(Fk,{map:he(h),disabled:!K.value},null,8,["map","disabled"]),Ge(Ik,{map:he(h),disabled:!R.value},null,8,["map","disabled"])]),_:1}),T("span",{class:"rd-proj",role:"button",tabindex:"0","data-proj-toggle":"",onClick:mt},ue(je.value==="globe"?"🌐 Globe":"▭ Flat"),1),T("div",Uk,[T("div",Gk,ue(t("legend.columns.upgs","UUPGs"))+" / "+ue(t("dashboard.country","Country")),1),(H(!0),Z(Ce,null,tt(ke.value,ge=>(H(),Z("div",{key:ge.l,class:"lg-row"},[T("span",{class:"lg-sw",style:lt({background:ge.c})},null,4),T("span",null,ue(ge.l),1)]))),128))])],8,Dk))}},Hk=".filter-dropdown{position:relative;flex:0 0 auto;width:var(--dx-filter-w, 128px);min-width:var(--dx-filter-w, 128px);max-width:var(--dx-filter-w, 128px)}@media (max-width: 576px){.filter-dropdown{width:var(--dx-filter-w-sm, 108px);min-width:var(--dx-filter-w-sm, 108px);max-width:var(--dx-filter-w-sm, 108px)}}.filter-dropdown__trigger{width:100%;padding:var(--dx-filter-pad-y, 4px) var(--dx-filter-pad-x, 8px);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:.875rem;color:var(--dx-text, #3b463d);text-align:start;background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;transition:border-color .15s ease}.filter-dropdown__trigger:hover{border-color:var(--dx-accent, #92b195)}.filter-dropdown__trigger[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--dx-accent, #92b195)}.filter-dropdown__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-dropdown__chevron{flex-shrink:0;transition:transform .2s ease}.filter-dropdown.is-open .filter-dropdown__chevron{transform:rotate(180deg)}.filter-dropdown__menu{position:fixed;z-index:2147483000;background-color:var(--dx-elevated, #fff);color:var(--dx-text, #3b463d);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;box-shadow:0 4px 12px #0000001f;overflow:hidden;display:flex;flex-direction:column;min-width:160px}.filter-dropdown__search{border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);border-radius:0;padding:6px 12px;width:100%;font-size:.875rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);outline:none;box-sizing:border-box}.filter-dropdown__search::placeholder{color:var(--dx-muted, #6d766e)}.filter-dropdown__clear{display:block;width:100%;background:none;border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);padding:6px 12px;font-size:.875rem;color:var(--dx-text, #3b463d);cursor:pointer;text-align:start;text-decoration:underline;text-decoration-color:var(--dx-accent, #92b195);text-underline-offset:3px}.filter-dropdown__clear:hover{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__options{flex:1 1 auto;min-height:0;max-height:250px;overflow-y:auto}.filter-dropdown__search,.filter-dropdown__clear{flex:0 0 auto}.filter-dropdown__option{padding:5px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:.875rem;transition:background-color .1s ease}.filter-dropdown__option[data-selected]{font-weight:700;color:var(--dx-text, #3b463d);box-shadow:inset 3px 0 0 var(--dx-accent, #92b195)}.filter-dropdown__option:hover,.filter-dropdown__option[data-highlighted]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__count{color:var(--dx-muted, #6d766e);font-size:.75rem;margin-inline-start:6px}.filter-dropdown__no-options{padding:12px;font-size:.875rem;color:var(--dx-muted, #6d766e);text-align:center}",Wk=["data-active","aria-expanded"],Kk={class:"filter-dropdown__label"},Yk=["value","placeholder"],Xk={class:"filter-dropdown__options"},Zk={key:0,class:"filter-dropdown__no-options"},Jk=["data-highlighted","data-selected","aria-selected","onClick","onMouseenter"],Qk={class:"filter-dropdown__count"},pa=Sn({__name:"FilterDropdown",props:{label:{type:String,required:!0},name:{type:String,required:!0},options:{type:Array,default:()=>[]},value:{type:String,default:""},placeholder:{type:String,default:"Type to search..."}},emits:["filter-change","filter-clear"],setup(e,{emit:t}){const o=e,n={"buttons.clearSelection":"Clear selection","buttons.noOptions":"No options found"};let a=B=>n[B]||B;try{a=Jo().t}catch{}const s=t,r=de(!1),i=de(""),l=de(-1),c=de(null),u=de(null),d=de(null),f=de({});function v(B){const X=B.ownerDocument,pe=X.createElement("div");pe.style.cssText="position:fixed;top:0;left:0;width:0;height:0;pointer-events:none;opacity:0",(B.parentElement||B.getRootNode().body||X.body).appendChild(pe);const J=pe.getBoundingClientRect();return pe.remove(),{x:J.left,y:J.top}}function L(){const B=d.value;if(!B)return;const X=B.getBoundingClientRect(),pe=window.innerWidth,I=window.innerHeight,J=320,W=4,G=8,F=Math.round(Math.min(Math.max(X.width,240),pe-G*2)),O=X.right>G&&X.leftpe-G?V=Math.round(Math.max(X.right-F,G)):V=Math.round(Math.max(X.left,G)):V=Math.round(Math.min(Math.max(X.left,G),pe-F-G));const D=I-X.bottom,se=D<180&&X.top>D,me=v(B),we=Math.round(V-me.x);f.value=se?{top:"auto",bottom:`${Math.round(I-X.top+W+me.y)}px`,left:`${we}px`,width:`${F}px`,maxHeight:`${Math.round(Math.min(J,X.top-W-G))}px`}:{top:`${Math.round(X.bottom+W-me.y)}px`,bottom:"auto",left:`${we}px`,width:`${F}px`,maxHeight:`${Math.round(Math.min(J,D-W-G))}px`}}function k(){r.value&&L()}const x=re(()=>{if(!i.value)return o.options;const B=i.value.toLowerCase();return o.options.filter(X=>X.label.toLowerCase().includes(B))}),C=re(()=>o.options.find(B=>B.value===o.value));function m(B){var pe;const X=((pe=B.composedPath)==null?void 0:pe.call(B))??[];c.value&&!X.includes(c.value)&&b()}function h(){r.value?b():p()}function p(){r.value=!0,i.value="",l.value=-1,L(),document.addEventListener("click",m),window.addEventListener("scroll",k,!0),window.addEventListener("resize",k),In(()=>{var B;L(),(B=u.value)==null||B.focus()})}function b(){r.value=!1,i.value="",l.value=-1,document.removeEventListener("click",m),window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k)}function A(B){i.value=B.target.value,l.value=-1}function w(B){const X=x.value;switch(B.key){case"ArrowDown":B.preventDefault(),l.value=Math.min(l.value+1,X.length-1),M();break;case"ArrowUp":B.preventDefault(),l.value=Math.max(l.value-1,0),M();break;case"Enter":{B.preventDefault();const pe=X[l.value];pe&&U(pe);break}case"Escape":B.preventDefault(),b();break}}function M(){In(()=>{var X;const B=(X=c.value)==null?void 0:X.querySelector(".filter-dropdown__option[data-highlighted]");B==null||B.scrollIntoView({block:"nearest"})})}function U(B){s("filter-change",{name:o.name,value:B.value,label:B.label,type:B.type}),b()}function ne(){s("filter-clear",{name:o.name}),b()}return Dt(()=>{document.removeEventListener("click",m),window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k)}),(B,X)=>(H(),Z("div",{ref_key:"rootRef",ref:c,class:He(["filter-dropdown",{"is-open":r.value}])},[T("button",{ref_key:"triggerRef",ref:d,class:"filter-dropdown__trigger input","data-active":e.value?"":void 0,type:"button","aria-haspopup":"listbox","aria-expanded":r.value,onClick:h},[T("span",Kk,[C.value?(H(),Z(Ce,{key:0},[ut(ue(e.label)+": ",1),T("strong",null,ue(C.value.label),1)],64)):(H(),Z(Ce,{key:1},[ut(ue(e.label),1)],64))]),X[0]||(X[0]=T("svg",{class:"filter-dropdown__chevron",width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[T("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,Wk),r.value?(H(),Z("div",{key:0,class:"filter-dropdown__menu",role:"listbox",style:lt(f.value)},[T("input",{ref_key:"searchInputRef",ref:u,class:"filter-dropdown__search",type:"text",value:i.value,placeholder:e.placeholder,onInput:A,onKeydown:w},null,40,Yk),e.value?(H(),Z("button",{key:0,class:"filter-dropdown__clear",type:"button",onClick:ne},ue(he(a)("buttons.clearSelection")),1)):Me("",!0),T("div",Xk,[x.value.length===0?(H(),Z("div",Zk,ue(he(a)("buttons.noOptions")),1)):(H(!0),Z(Ce,{key:1},tt(x.value,(pe,I)=>(H(),Z("div",{key:pe.value,class:"filter-dropdown__option",role:"option","data-highlighted":I===l.value?"":void 0,"data-selected":pe.value===e.value?"":void 0,"aria-selected":pe.value===e.value,onClick:J=>U(pe),onMouseenter:J=>l.value=I},[T("span",null,ue(pe.label),1),T("span",Qk,ue(pe.count),1)],40,Jk))),128))])],4)):Me("",!0)],2))}},[["styles",[Hk]]]),ew=".sfh{--brand: var(--dx-accent, #92b195);--ink: var(--dx-text, #3b463d);--mut: var(--dx-muted, #6d766e);--line: var(--dx-line, #d1d4cd);--card: var(--dx-elevated, #fff);display:flex;flex-direction:column;gap:var(--dx-sfh-gap, 4px);width:100%;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;color:var(--ink)}.sfh__search-row{display:flex;align-items:center;gap:12px;justify-content:center}.sfh__search-row>:first-child{flex:0 1 auto}.sfh__toggle{flex:0 0 auto;background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--ink);display:inline-flex;align-items:center;gap:4px;white-space:nowrap;padding:4px 2px;text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:4px}.sfh__toggle-chev{transition:transform .2s ease}.sfh__toggle[aria-expanded=true] .sfh__toggle-chev{transform:rotate(180deg)}.sfh__filters-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--dx-filter-gap, 10px);justify-content:flex-start;overflow-x:clip;padding-bottom:2px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.sfh__dd{flex:0 0 auto}.sfh__filters-row::-webkit-scrollbar{height:8px}.sfh__filters-row::-webkit-scrollbar-thumb{background:var(--dx-scroll-thumb, #c4c8c0);border-radius:8px}.sfh__filters-row::-webkit-scrollbar-track{background:transparent}.sfh__pill{flex:0 0 auto;padding:6px 12px;cursor:pointer;font-size:.875rem;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px;white-space:nowrap;transition:border-color .15s ease,background .15s ease}.sfh__pill:hover{border-color:var(--brand)}.sfh__pill[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--brand);color:var(--ink)}.sfh__chips{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;justify-content:center;min-height:var(--dx-sel-row-h, 16px)}.sfh__chip-strip{flex:0 1 auto;min-width:0;display:flex;flex-wrap:nowrap;gap:6px;align-items:center;justify-content:center;justify-content:safe center;overflow-x:auto;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.sfh__chip-strip::-webkit-scrollbar{height:6px}.sfh__chip-strip::-webkit-scrollbar-thumb{background:var(--dx-scroll-thumb, #c4c8c0);border-radius:8px}.sfh__chip-strip::-webkit-scrollbar-track{background:transparent}.sfh__sel-label{flex:0 0 auto;font-size:.6875rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--mut, #6d766e);opacity:.75}.sfh__sel-world{flex:0 0 auto;font-size:.75rem;color:var(--mut, #6d766e)}.sfh__chip{flex:0 0 auto;display:inline-flex;gap:4px;align-items:center;background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));color:var(--ink);border:1px solid var(--line);border-radius:100px;padding:0 8px;font-size:.75rem;line-height:1;white-space:nowrap;height:var(--dx-sel-row-h, 16px);box-sizing:border-box}.sfh__chip-x{background:none;border:none;cursor:pointer;font-size:1.05em;line-height:1;color:inherit;padding:0;display:inline-flex;align-items:center}.sfh__chip-x:hover{opacity:.7}.sfh__clear{flex:0 0 auto;white-space:nowrap;background:none;border:none;cursor:pointer;font-size:.75rem;line-height:1;color:var(--mut, #6d766e);text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:3px;padding:0 4px;margin-inline-start:2px}.sfh__clear:hover{color:var(--ink)}",tw={class:"sfh"},ow={key:0,class:"sfh__search-row"},nw=["aria-expanded"],aw=["aria-label"],sw=["data-active","onClick"],rw={class:"sfh__chip-strip"},iw={class:"sfh__sel-label"},lw=["aria-label","onClick"],cw={key:1,class:"sfh__sel-world"},uw=Sn({__name:"SearchFilterHeader",props:{search:{type:String,default:""},filters:{type:Array,default:()=>[]},toggles:{type:Array,default:()=>[]},activeChips:{type:Array,default:null},searchPlaceholder:{type:String,default:"Search…"},searchMaxWidth:{type:String,default:"520px"},showSearch:{type:[Boolean,String],default:!0},showFilters:{type:[Boolean,String],default:!0},startExpanded:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!0},labels:{type:Object,default:()=>({})}},emits:["update:search","search","filter-change","filter-clear","toggle","remove-filter","clear-all"],setup(e,{emit:t}){const o=e,n=t,a=m=>!(m===!1||m==="false"||m==="0"||m===0),s=re(()=>a(o.showSearch)),r=re(()=>a(o.showFilters)),i=re(()=>({show_filters:Se("grid.show_filters")||"Show Filters",hide_filters:Se("grid.hide_filters")||"Hide Filters",clear_all:Se("grid.clear_all")||"Clear All",type_to_search:Se("grid.type_to_search")||"Type to search...",filters:Se("dashboard.filters")||"Filters",selected:Se("dashboard.selected")||"Selected",world:Se("dashboard.world")||"World",remove:Se("dashboard.remove_filter")||"Remove",...o.labels})),l=de(o.startExpanded||!o.collapsible);function c(){l.value=!l.value}const u=re(()=>!o.collapsible||!s.value||l.value),d=re(()=>{if(Array.isArray(o.activeChips))return o.activeChips;const m=[];for(const h of o.filters){if(!h.value)continue;const p=(h.options||[]).find(b=>b.value===h.value);m.push({name:h.name,label:p?p.label:h.value})}for(const h of o.toggles)h.active&&m.push({name:h.name,label:h.label});return m});function f(m){const h=(m==null?void 0:m.value)??"";n("update:search",h),n("search",{value:h})}function v(m){n("filter-change",m)}function L(m){n("filter-clear",m)}function k(m){n("toggle",{name:m.name,active:!m.active})}function x(m){n("remove-filter",{name:m})}function C(){n("clear-all")}return(m,h)=>(H(),Z("div",tw,[s.value?(H(),Z("div",ow,[Ge(qr,{"model-value":e.search,placeholder:e.searchPlaceholder,"aria-label":e.searchPlaceholder,"max-width":e.searchMaxWidth,onSearch:f},null,8,["model-value","placeholder","aria-label","max-width"]),r.value&&e.collapsible?(H(),Z("button",{key:0,class:"sfh__toggle",type:"button","aria-expanded":u.value,onClick:c},[ut(ue(u.value?i.value.hide_filters:i.value.show_filters)+" ",1),h[0]||(h[0]=T("svg",{class:"sfh__toggle-chev",width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[T("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,nw)):Me("",!0)])):Me("",!0),r.value&&u.value?(H(),Z("div",{key:1,class:"sfh__filters-row",role:"group","aria-label":i.value.filters},[(H(!0),Z(Ce,null,tt(e.filters,p=>(H(),To(pa,{key:p.name,class:"sfh__dd",label:p.label,name:p.name,options:p.options||[],value:p.value||"",placeholder:p.placeholder||i.value.type_to_search,onFilterChange:v,onFilterClear:L},null,8,["label","name","options","value","placeholder"]))),128)),(H(!0),Z(Ce,null,tt(e.toggles,p=>(H(),Z("button",{key:p.name,class:"sfh__pill",type:"button","data-active":p.active?"":void 0,onClick:b=>k(p)},ue(p.label),9,sw))),128))],8,aw)):Me("",!0),r.value?(H(),Z("div",{key:2,class:He(["sfh__chips",{"is-empty":!d.value.length}])},[T("div",rw,[T("span",iw,ue(i.value.selected||"Selected"),1),d.value.length?(H(),Z(Ce,{key:0},[(H(!0),Z(Ce,null,tt(d.value,p=>(H(),Z("span",{key:p.name,class:"sfh__chip"},[ut(ue(p.label)+" ",1),T("button",{class:"sfh__chip-x",type:"button","aria-label":`${i.value.remove} ${p.label}`,onClick:b=>x(p.name)},"×",8,lw)]))),128)),T("button",{class:"sfh__clear",type:"button",onClick:C},ue(i.value.clear_all),1)],64)):(H(),Z("span",cw,ue(i.value.world||"World"),1))])],2)):Me("",!0)]))}},[["styles",[ew]]]),pw={class:"rd-research-filters","data-region":"filters","data-sub":"research-filters"},cs="prayer_level",dw={__name:"DashboardResearchFilters",setup(e){const t=Fe("selectionBus",null),o=Fe("dashboardData",null),n=Fe("dashboardConfig",{}),a=re(()=>{var w;return((w=o==null?void 0:o.rows)==null?void 0:w.value)||[]}),s=(t==null?void 0:t.filterSet)||{},r={get label(){return Se("dashboard.prayer")||"Prayer"},get:w=>{const M=w==null?void 0:w.people_praying,U=M&&typeof M=="object"?M.value:M;return na[yn({peoplePraying:U??null})]}},i=re(()=>({[cs]:r,...n.facets||{}})),l=re(()=>Object.fromEntries(Object.entries(i.value).map(([w,M])=>[w,M.get]))),c=re(()=>n.researchFilters||{}),u=re(()=>{const w=c.value.dropdowns||["wagf_region","wagf_block","country_code","people_group","religion"];return[cs,...w.filter(M=>M!==cs)]}),d=re(()=>c.value.searchPlaceholder||"Search people groups, place, language, religion…");function f(w,M){const U=Object.keys(w);return U.length?M.filter(ne=>U.every(B=>{const X=l.value[B];return X?X(ne)===w[B]:!0})):M}function v(w){var pe;const M=l.value[w];if(!M)return[];const U=(pe=i.value[w])==null?void 0:pe.optionLabel,ne={};for(const[I,J]of Object.entries(s))I!==w&&(ne[I]=J);const B=f(ne,a.value),X=new Map;for(const I of B){const J=M(I);if(J==null||J==="")continue;const W=X.get(J);W?W.count+=1:X.set(J,{label:U&&U(I)||J,count:1})}return Array.from(X.entries()).map(([I,{label:J,count:W}])=>({value:I,label:J,count:W})).sort((I,J)=>String(I.label).localeCompare(String(J.label)))}const L=re(()=>u.value.map(w=>{var M;return{name:w,label:((M=i.value[w])==null?void 0:M.label)||w,options:v(w),value:s[w]||""}})),{labelFor:k}=ra(n,Fe("dataStore",null),Fe("searchSourceId",null)),x=re(()=>{var U;const w=Object.keys(s).map(ne=>{var X;const B=s[ne];return{name:ne,label:`${((X=i.value[ne])==null?void 0:X.label)||ne}: ${ne===cs?B:k(ne,B)}`}}),M=(((U=t==null?void 0:t.searchTerm)==null?void 0:U.value)||"").trim();return M&&w.push({name:"__search__",label:`Search: ${M}`}),w}),C=re(()=>{var w;return((w=t==null?void 0:t.searchTerm)==null?void 0:w.value)||""});function m(w){t==null||t.setSearch((w==null?void 0:w.value)??"")}function h(w){t==null||t.setFilter(w.name,w.value)}function p(w){t==null||t.setFilter(w.name,null)}function b(w){if(w.name==="__search__"){t==null||t.setSearch("");return}t==null||t.setFilter(w.name,null)}function A(){t==null||t.clearFilters(),t==null||t.setSearch("")}return Ot(` .rd-research-filters{ position:relative; z-index:55; height:100%; box-sizing:border-box; padding:3px var(--rd-edge,14px); background:var(--rd-panel,#fff); border-bottom:1px solid var(--rd-line, #d1d4cd); overflow:visible; } `,"rd-research-filters"),(w,M)=>(H(),Z("div",pw,[Ge(uw,{search:C.value,filters:L.value,"active-chips":x.value,"search-placeholder":d.value,"show-search":!1,"start-expanded":"",onSearch:m,onFilterChange:h,onFilterClear:p,onRemoveFilter:b,onClearAll:A},null,8,["search","filters","active-chips","search-placeholder"])]))}},hp={aar:"Afro-Asiatic",abf:"Austronesian",abl:"Austronesian",abv:"Afro-Asiatic",acm:"Afro-Asiatic",acq:"Afro-Asiatic",acw:"Afro-Asiatic",acx:"Afro-Asiatic",adh:"Nilo-Saharan",adi:"Sino-Tibetan",adw:"Tupian",adx:"Sino-Tibetan",aen:"Sign Language",afb:"Afro-Asiatic",afg:"Sign Language",afr:"Indo-European",aft:"Nilo-Saharan",agx:"Nakh-Daghestanian",ahk:"Sino-Tibetan",aib:"Turkic",aih:"Kra-Dai",aio:"Kra-Dai",ajp:"Afro-Asiatic",aju:"Afro-Asiatic",aks:"Niger-Congo",akv:"Nakh-Daghestanian",alk:"Austro-Asiatic",alo:"Austronesian",alw:"Afro-Asiatic",amc:"Panoan",amh:"Afro-Asiatic",amr:"Harákmbut",amv:"Austronesian",ani:"Nakh-Daghestanian",anp:"Indo-European",anq:"Andamanese",aoc:"Cariban",apc:"Afro-Asiatic",apd:"Afro-Asiatic",arb:"Afro-Asiatic",arq:"Afro-Asiatic",arr:"Tupian",ars:"Afro-Asiatic",arv:"Afro-Asiatic",ary:"Afro-Asiatic",ase:"Sign Language",asl:"Austronesian",asm:"Indo-European",asn:"Tupian",asp:"Sign Language",atr:"Cariban",avd:"Indo-European",avl:"Afro-Asiatic",avv:"Tupian",awe:"Tupian",awt:"Tupian",ayh:"Afro-Asiatic",ayl:"Afro-Asiatic",ayn:"Afro-Asiatic",azb:"Turkic",bao:"Tucanoan",bbh:"Austro-Asiatic",bcc:"Indo-European",bcz:"Niger-Congo",bdg:"Austronesian",bdi:"Nilo-Saharan",bdj:"Niger-Congo",bdm:"Afro-Asiatic",bdo:"Nilo-Saharan",bee:"Sino-Tibetan",bej:"Afro-Asiatic",bem:"Niger-Congo",ben:"Indo-European",bfi:"Sign Language",bfu:"Sino-Tibetan",bfw:"Austro-Asiatic",bfy:"Indo-European",bgc:"Indo-European",bgg:"Sino-Tibetan",bgk:"Austro-Asiatic",bgl:"Austro-Asiatic",bgn:"Indo-European",bgp:"Indo-European",bgq:"Indo-European",bho:"Indo-European",bhu:"Indo-European",bid:"Afro-Asiatic",bjj:"Indo-European",bkk:"Indo-European",blf:"Austronesian",blm:"Nilo-Saharan",blo:"Niger-Congo",bls:"Austronesian",blt:"Kra-Dai",bly:"Niger-Congo",bma:"Niger-Congo",bmr:"Witotoan",bna:"Austronesian",bns:"Indo-European",bor:"Bororoan",bos:"Indo-European",bph:"Nakh-Daghestanian",bqg:"Niger-Congo",bqj:"Niger-Congo",bqk:"Niger-Congo",bqn:"Sign Language",bqx:"Niger-Congo",bra:"Indo-European",brb:"Austro-Asiatic",bro:"Sino-Tibetan",brx:"Sino-Tibetan",bsb:"Austronesian",bsg:"Indo-European",bsk:"Language isolate",bsy:"Austronesian",btd:"Austronesian",btf:"Afro-Asiatic",btv:"Indo-European",btx:"Austronesian",btz:"Austronesian",bub:"Niger-Congo",buh:"Hmong-Mien",bva:"Afro-Asiatic",bvf:"Afro-Asiatic",bvi:"Niger-Congo",bvo:"Niger-Congo",bwi:"Maipurean",bwn:"Hmong-Mien",bwx:"Hmong-Mien",bxr:"Mongolic",bxu:"Mongolic",bxw:"Niger-Congo",byn:"Afro-Asiatic",byo:"Sino-Tibetan",bze:"Niger-Congo",bzx:"Niger-Congo",cat:"Indo-European",cbb:"Maipurean",cbc:"Tucanoan",cbi:"Barbacoan",cbn:"Austro-Asiatic",cby:"Unclassified",cdh:"Indo-European",cdn:"Sino-Tibetan",cdz:"Austro-Asiatic",ceg:"Zamucoan",cgk:"Sino-Tibetan",che:"Nakh-Daghestanian",cib:"Niger-Congo",cji:"Nakh-Daghestanian",ckh:"Sino-Tibetan",ckq:"Afro-Asiatic",clk:"Sino-Tibetan",cmn:"Sino-Tibetan",cnq:"Niger-Congo",cnu:"Afro-Asiatic",coa:"Creole",cog:"Austro-Asiatic",cpu:"Maipurean",cqd:"Hmong-Mien",csf:"Sign Language",csx:"Sign language",cub:"Tucanoan",cui:"Guajiboan",cuu:"Kra-Dai",daa:"Afro-Asiatic",daj:"Nilo-Saharan",dar:"Nakh-Daghestanian",dau:"Nilo-Saharan",dba:"Language isolate",dbb:"Afro-Asiatic",dbp:"Afro-Asiatic",dbr:"Afro-Asiatic",ddn:"Nilo-Saharan",deg:"Niger-Congo",dek:"Niger-Congo",des:"Tucanoan",dgo:"Indo-European",dgs:"Niger-Congo",dhd:"Indo-European",dhi:"Sino-Tibetan",dhm:"Niger-Congo",dil:"Nilo-Saharan",diu:"Niger-Congo",div:"Indo-European",djc:"Nilo-Saharan",dkg:"Niger-Congo",dln:"Sino-Tibetan",dml:"Indo-European",dms:"Austronesian",dnu:"Austro-Asiatic",doc:"Kra-Dai",dok:"Austronesian",dox:"Afro-Asiatic",dru:"Austronesian",dse:"Sign Language",dsh:"Afro-Asiatic",dsl:"Sign Language",dsq:"Nilo-Saharan",dta:"Mongolic",dtp:"Austronesian",dyu:"Niger-Congo",dzg:"Nilo-Saharan",dzl:"Sino-Tibetan",eng:"Indo-European",enn:"Niger-Congo",epi:"Niger-Congo",ers:"Sino-Tibetan",esl:"Sign Language",evn:"Tungusic",fin:"Uralic",fni:"Niger-Congo",fod:"Niger-Congo",fra:"Indo-European",fsl:"Sign Language",fub:"Niger-Congo",fuc:"Niger-Congo",fuf:"Niger-Congo",fuj:"Niger-Congo",fvr:"Nilo-Saharan",fwe:"Niger-Congo",gax:"Afro-Asiatic",gaz:"Afro-Asiatic",gbk:"Indo-European",gbm:"Indo-European",gbn:"Nilo-Saharan",gdq:"Afro-Asiatic",gea:"Afro-Asiatic",ges:"Austronesian",gex:"Afro-Asiatic",ghl:"Nilo-Saharan",giq:"Kra-Dai",giw:"Kra-Dai",gju:"Indo-European",glc:"Niger-Congo",goe:"Sino-Tibetan",gow:"Afro-Asiatic",gqu:"Kra-Dai",grr:"Afro-Asiatic",gsg:"Sign Language",gss:"Sign Language",guj:"Indo-European",gus:"Sign Language",gvp:"Jean",gwb:"Niger-Congo",gwc:"Indo-European",gwd:"Afro-Asiatic",gwf:"Indo-European",gya:"Niger-Congo",gyo:"Sino-Tibetan",gzn:"Austronesian",hae:"Afro-Asiatic",hal:"Austro-Asiatic",hau:"Afro-Asiatic",hca:"Creole",hea:"Hmong-Mien",heb:"Afro-Asiatic",her:"Niger-Congo",hik:"Austronesian",hin:"Indo-European",hks:"Sign Language",hlb:"Indo-European",hld:"Austro-Asiatic",hmb:"Nilo-Saharan",hmh:"Hmong-Mien",hml:"Hmong-Mien",hmm:"Hmong-Mien",hne:"Indo-European",hni:"Sino-Tibetan",hnu:"Austro-Asiatic",hoh:"Afro-Asiatic",hoj:"Indo-European",hoz:"Afro-Asiatic",hsn:"Sino-Tibetan",hss:"Afro-Asiatic",htu:"Austronesian",hug:"Harákmbut",huo:"Austro-Asiatic",iba:"Austronesian",ibr:"Niger-Congo",icl:"Sign Language",iii:"Sino-Tibetan",ind:"Austronesian",irr:"Austro-Asiatic",ise:"Sign Language",isk:"Indo-European",isr:"Sign Language",ium:"Hmong-Mien",jbn:"Afro-Asiatic",jeu:"Afro-Asiatic",jia:"Afro-Asiatic",jii:"Afro-Asiatic",jio:"Kra-Dai",jit:"Niger-Congo",jiu:"Sino-Tibetan",jle:"Niger-Congo",jls:"Sign Language",jmi:"Afro-Asiatic",jnl:"Sino-Tibetan",jos:"Sign Language",jpn:"Japonic",jup:"Puinavean",kaf:"Sino-Tibetan",kan:"Dravidian",kas:"Indo-European",kay:"Tupian",kaz:"Turkic",kbg:"Sino-Tibetan",kbo:"Nilo-Saharan",kbp:"Niger-Congo",kby:"Nilo-Saharan",kcf:"Niger-Congo",kcn:"Creole",kcp:"Nilo-Saharan",kcu:"Niger-Congo",kcy:"Nilo-Saharan",kcz:"Niger-Congo",kdh:"Niger-Congo",kdn:"Niger-Congo",kdt:"Austro-Asiatic",kdu:"Nilo-Saharan",kec:"Nilo-Saharan",kfa:"Dravidian",kfd:"Dravidian",kfe:"Dravidian",kfg:"Dravidian",kfm:"Indo-European",kfr:"Indo-European",kfs:"Indo-European",kfy:"Indo-European",kgn:"Indo-European",khb:"Kra-Dai",khf:"Austro-Asiatic",khv:"Nakh-Daghestanian",kia:"Niger-Congo",kib:"Niger-Congo",kie:"Nilo-Saharan",kil:"Afro-Asiatic",kir:"Turkic",kjc:"Austronesian",kjg:"Austro-Asiatic",kjk:"Austronesian",kke:"Niger-Congo",kkh:"Kra-Dai",kkn:"Austro-Asiatic",kko:"Nilo-Saharan",kks:"Afro-Asiatic",klf:"Nilo-Saharan",kmc:"Kra-Dai",kmq:"Nilo-Saharan",kmr:"Indo-European",kmz:"Turkic",knc:"Nilo-Saharan",knf:"Niger-Congo",knk:"Niger-Congo",knm:"Maipurean",knn:"Indo-European",kns:"Austro-Asiatic",knz:"Niger-Congo",kou:"Niger-Congo",kpa:"Afro-Asiatic",kpc:"Maipurean",kpj:"Karajá",kpt:"Nakh-Daghestanian",kqg:"Niger-Congo",kqm:"Niger-Congo",krn:"Niger-Congo",krs:"Nilo-Saharan",kth:"Nilo-Saharan",kuf:"Austro-Asiatic",kui:"Cariban",kuj:"Niger-Congo",kva:"Nakh-Daghestanian",kvf:"Afro-Asiatic",kvh:"Austronesian",kvp:"Austronesian",kwn:"Niger-Congo",kwv:"Nilo-Saharan",kxd:"Austronesian",kxh:"Afro-Asiatic",kxj:"Nilo-Saharan",kyi:"Austronesian",kyp:"Kra-Dai",kyw:"Indo-European",kzq:"Sino-Tibetan",lae:"Sino-Tibetan",lan:"Niger-Congo",lao:"Kra-Dai",laq:"Kra-Dai",lbj:"Sino-Tibetan",lbn:"Austro-Asiatic",lbo:"Austro-Asiatic",lbs:"Sign Language",lbt:"Kra-Dai",lcd:"Austronesian",lcq:"Austronesian",lgn:"Nilo-Saharan",lgs:"Sign Language",lha:"Kra-Dai",lhn:"Austronesian",lhp:"Sino-Tibetan",lic:"Kra-Dai",liq:"Afro-Asiatic",liu:"Nilo-Saharan",lkc:"Sino-Tibetan",lkh:"Sino-Tibetan",lki:"Indo-European",lkr:"Nilo-Saharan",lma:"Niger-Congo",loh:"Nilo-Saharan",lop:"Niger-Congo",lsd:"Afro-Asiatic",lso:"Sign Language",lss:"Indo-European",lsy:"Sign Language",luk:"Sino-Tibetan",lul:"Nilo-Saharan",mag:"Indo-European",mai:"Indo-European",mal:"Dravidian",mar:"Indo-European",mbd:"Austronesian",mbn:"Guajiboan",mcd:"Panoan",mdl:"Sign Language",mdy:"Afro-Asiatic",mei:"Nilo-Saharan",men:"Niger-Congo",mes:"Afro-Asiatic",mew:"Afro-Asiatic",mey:"Afro-Asiatic",mgb:"Nilo-Saharan",mgd:"Nilo-Saharan",mge:"Nilo-Saharan",mgh:"Niger-Congo",mhr:"Uralic",mhu:"Sino-Tibetan",mhw:"Niger-Congo",mjp:"Dravidian",mkg:"Kra-Dai",mmh:"Maipurean",mml:"Austro-Asiatic",mmy:"Afro-Asiatic",mne:"Nilo-Saharan",mni:"Sino-Tibetan",mnj:"Indo-European",mnk:"Niger-Congo",mnq:"Austro-Asiatic",mns:"Uralic",mot:"Chibchan",mou:"Afro-Asiatic",moy:"Afro-Asiatic",moz:"Afro-Asiatic",mpe:"Nilo-Saharan",mpz:"Sino-Tibetan",mqi:"Austronesian",mqn:"Austronesian",mra:"Austro-Asiatic",mrj:"Uralic",msc:"Niger-Congo",msv:"Afro-Asiatic",msw:"Niger-Congo",mtr:"Indo-European",mub:"Afro-Asiatic",mup:"Indo-European",muq:"Hmong-Mien",muv:"Dravidian",mvf:"Mongolic",mvu:"Nilo-Saharan",mvy:"Indo-European",mwn:"Niger-Congo",mxj:"Sino-Tibetan",myp:"Muran",myy:"Tucanoan",mzb:"Afro-Asiatic",mzy:"Sign Language",naq:"Khoe-Kwadi",nbt:"Sino-Tibetan",nbw:"Niger-Congo",ndg:"Niger-Congo",ndp:"Nilo-Saharan",ndt:"Niger-Congo",neb:"Niger-Congo",neh:"Sino-Tibetan",nev:"Austro-Asiatic",ngt:"Austro-Asiatic",njl:"Nilo-Saharan",nkd:"Sino-Tibetan",nld:"Indo-European",nmd:"Niger-Congo",nmi:"Afro-Asiatic",nml:"Niger-Congo",nmy:"Sino-Tibetan",nnj:"Nilo-Saharan",nod:"Kra-Dai",noe:"Indo-European",nos:"Sino-Tibetan",npb:"Sino-Tibetan",npi:"Indo-European",nrb:"Nilo-Saharan",nru:"Sino-Tibetan",nsl:"Sign Language",nuo:"Austro-Asiatic",nus:"Nilo-Saharan",nwm:"Nilo-Saharan",nxq:"Sino-Tibetan",nye:"Niger-Congo",nyn:"Niger-Congo",nyr:"Niger-Congo",nyw:"Kra-Dai",nzs:"Sign Language",okn:"Japonic",ole:"Sino-Tibetan",oog:"Austro-Asiatic",oon:"Andamanese",opa:"Niger-Congo",ort:"Indo-European",ory:"Indo-European",ost:"Niger-Congo",oyb:"Austro-Asiatic",oym:"Tupian",pac:"Austro-Asiatic",pah:"Tupian",pbp:"Niger-Congo",peh:"Mongolic",pes:"Indo-European",pga:"Creole",pgg:"Indo-European",pgz:"Sign language",pha:"Hmong-Mien",phh:"Sino-Tibetan",phj:"Sino-Tibetan",phk:"Kra-Dai",phl:"Indo-European",pho:"Sino-Tibetan",phq:"Sino-Tibetan",phr:"Indo-European",pht:"Kra-Dai",pil:"Niger-Congo",pir:"Tucanoan",pkb:"Niger-Congo",pks:"Sign Language",pkt:"Austro-Asiatic",pll:"Austro-Asiatic",pnq:"Niger-Congo",pnx:"Austro-Asiatic",por:"Indo-European",prc:"Indo-European",prs:"Indo-European",prt:"Austro-Asiatic",psc:"Sign Language",pse:"Austronesian",pto:"Tupian",pum:"Sino-Tibetan",puo:"Austro-Asiatic",qae:"Sign Language",qao:"Sign Language",qbh:"Sign Language",qbj:"Sign Language",qbn:"Sign Language",qbt:"Sign Language",qcd:"Sign Language",qcm:"Sign Language",qcy:"Sign Language",qer:"Sign Language",qfa:"Sign Language",qfj:"Sign Language",qga:"Sign Language",qge:"Sign Language",qgm:"Sign Language",qiq:"Sign Language",qki:"Sign Language",qkm:"Sign Language",qkp:"Sign Language",qkw:"Sign Language",qmv:"Sign Language",qnh:"Sign Language",qns:"Sign Language",qom:"Sign Language",qqa:"Sign Language",qry:"Sign Language",qsm:"Sign Language",qso:"Sign Language",qsr:"Sign Language",qsz:"Sign Language",qtp:"Sign Language",qvz:"Quechuan",ras:"Niger-Congo",rbb:"Austro-Asiatic",ren:"Austro-Asiatic",rji:"Sino-Tibetan",rmt:"Indo-European",rmy:"Indo-European",rob:"Austronesian",rsl:"Sign Language",rui:"Niger-Congo",rus:"Indo-European",rwm:"Niger-Congo",rwr:"Indo-European",rys:"Japonic",saa:"Afro-Asiatic",sbf:"Unclassified",sbj:"Nilo-Saharan",sbs:"Niger-Congo",scb:"Austro-Asiatic",sck:"Indo-European",scl:"Indo-European",sdb:"Indo-European",sdg:"Indo-European",sdl:"Sign Language",sdp:"Sino-Tibetan",seq:"Niger-Congo",sgh:"Indo-European",sgy:"Indo-European",she:"Afro-Asiatic",shm:"Indo-European",shn:"Kra-Dai",sho:"Niger-Congo",shp:"Panoan",shu:"Afro-Asiatic",shv:"Afro-Asiatic",shz:"Niger-Congo",siy:"Indo-European",siz:"Afro-Asiatic",sjg:"Nilo-Saharan",sjo:"Tungusic",skq:"Niger-Congo",sle:"Dravidian",slt:"Sino-Tibetan",sml:"Austronesian",smy:"Indo-European",snd:"Indo-European",snn:"Tucanoan",soj:"Indo-European",sok:"Afro-Asiatic",soy:"Niger-Congo",spa:"Indo-European",spu:"Austro-Asiatic",sqk:"Sign Language",sqq:"Austro-Asiatic",sqs:"Sign Language",sqt:"Afro-Asiatic",srh:"Indo-European",sri:"Tucanoan",srp:"Indo-European",ssh:"Afro-Asiatic",ssn:"Afro-Asiatic",sss:"Austro-Asiatic",ssy:"Afro-Asiatic",std:"Andamanese",sts:"Indo-European",suq:"Nilo-Saharan",suv:"Sino-Tibetan",suy:"Jean",suz:"Sino-Tibetan",swh:"Niger-Congo",swi:"Kra-Dai",swl:"Sign Language",swv:"Indo-European",swx:"Arauan",sxg:"Sino-Tibetan",sze:"Afro-Asiatic",szn:"Austronesian",szs:"Sign Language",tag:"Niger-Congo",tam:"Dravidian",taz:"Niger-Congo",tbm:"Niger-Congo",tbn:"Chibchan",tbr:"Nilo-Saharan",tct:"Kra-Dai",tcy:"Dravidian",tda:"Mixed language",tdb:"Indo-European",tdd:"Kra-Dai",tdf:"Austro-Asiatic",tdj:"Austronesian",tel:"Dravidian",teq:"Nilo-Saharan",tgf:"Sino-Tibetan",tgk:"Indo-European",tgr:"Austro-Asiatic",thk:"Niger-Congo",thm:"Austro-Asiatic",thu:"Nilo-Saharan",thv:"Afro-Asiatic",tig:"Afro-Asiatic",tin:"Nakh-Daghestanian",tiz:"Kra-Dai",tkn:"Japonic",tlq:"Austro-Asiatic",tly:"Indo-European",tma:"Nilo-Saharan",tnb:"Chibchan",toi:"Niger-Congo",toq:"Nilo-Saharan",tou:"Austro-Asiatic",tqq:"Afro-Asiatic",tri:"Cariban",trj:"Afro-Asiatic",tsb:"Afro-Asiatic",tsc:"Niger-Congo",tsj:"Sino-Tibetan",tsk:"Sino-Tibetan",tsl:"Kra-Dai",tsm:"Sign Language",ttg:"Austronesian",tth:"Austro-Asiatic",ttl:"Niger-Congo",tts:"Kra-Dai",tue:"Tucanoan",tum:"Niger-Congo",tuo:"Tucanoan",tur:"Turkic",twm:"Sino-Tibetan",txi:"Cariban",txm:"Austronesian",tyh:"Austro-Asiatic",tyj:"Kra-Dai",tyr:"Kra-Dai",tyv:"Turkic",tyy:"Niger-Congo",tzm:"Afro-Asiatic",uan:"Kra-Dai",udj:"Austronesian",une:"Niger-Congo",unk:"Maipurean",urd:"Indo-European",urp:"Tupian",urz:"Tupian",ush:"Indo-European",usi:"Sino-Tibetan",uuu:"Austro-Asiatic",uzn:"Turkic",vai:"Niger-Congo",vgr:"Indo-European",vie:"Austro-Asiatic",vkj:"Unclassified",vkn:"Niger-Congo",vkz:"Niger-Congo",vmk:"Niger-Congo",vut:"Niger-Congo",wau:"Maipurean",waw:"Cariban",wbj:"Afro-Asiatic",wbl:"Indo-European",wbr:"Indo-European",wlc:"Niger-Congo",wll:"Nilo-Saharan",wmd:"Nambikwara",wmg:"Sino-Tibetan",wne:"Indo-European",wni:"Niger-Congo",wol:"Niger-Congo",wrn:"Niger-Congo",wti:"Nilo-Saharan",wuh:"Mixed language",wwa:"Niger-Congo",xal:"Mongolic",xan:"Afro-Asiatic",xdq:"Nakh-Daghestanian",xhv:"Austro-Asiatic",xka:"Indo-European",xkz:"Sino-Tibetan",xma:"Niger-Congo",xmj:"Afro-Asiatic",xmo:"Tupian",xms:"Sign Language",xnr:"Indo-European",xns:"Sino-Tibetan",xom:"Nilo-Saharan",xor:"Panoan",xsm:"Niger-Congo",xsr:"Sino-Tibetan",xwg:"Nilo-Saharan",yaa:"Panoan",yad:"Yaguan",yao:"Niger-Congo",yax:"Niger-Congo",ybh:"Sino-Tibetan",ycl:"Sino-Tibetan",ydd:"Indo-European",ydg:"Indo-European",yea:"Dravidian",yhd:"Afro-Asiatic",yig:"Sino-Tibetan",yix:"Sino-Tibetan",ymm:"Afro-Asiatic",ymx:"Sino-Tibetan",yne:"Sino-Tibetan",yno:"Kra-Dai",yom:"Niger-Congo",yox:"Japonic",yoy:"Kra-Dai",yrn:"Kra-Dai",ysl:"Sign Language",ysm:"Sign language",ysn:"Sino-Tibetan",yue:"Sino-Tibetan",yul:"Nilo-Saharan",yup:"Cariban",ywn:"Panoan",ywt:"Sino-Tibetan",zag:"Nilo-Saharan",zgn:"Kra-Dai",zhd:"Kra-Dai",ziw:"Niger-Congo",zkr:"Sino-Tibetan",zlm:"Austronesian",zna:"Niger-Congo",zne:"Niger-Congo",zng:"Austro-Asiatic",zqe:"Kra-Dai",zum:"Indo-European",zyg:"Kra-Dai"},mp=e=>{if(typeof e=="number")return e;const t=parseFloat(String(e??"").replace(/[^0-9.\-]/g,""));return isNaN(t)?null:t},Zr=e=>e&&typeof e=="object"?e.value??e.label??"":e??"",Jr={id:"doxa-research-dashboard",get title(){return Se("dashboard.dashboard_title")||"Big Picture Research Dashboard"},element:"doxa-research-dashboard",data:{source:"pray-tools",primaryKey:"slug"},facets:{prayer_level:{get label(){return Se("dashboard.prayer")||"Prayer"},get:e=>{const t=e==null?void 0:e.people_praying,o=t&&typeof t=="object"?t.value:t;return na[yn({peoplePraying:o??null})]}},religion:{get label(){return Se("dashboard.religion")||"Religion"},get:e=>st(e.religion)},religion_family:{get label(){return Se("dashboard.religion_family")||"Religion Family"},get:e=>{const t=e.religion&&typeof e.religion=="object"?e.religion.value:e.religion,o=String(t||"").charAt(0).toUpperCase();return o&&So[o]?So[o]:""},famKey:e=>{const t=e.religion&&typeof e.religion=="object"?e.religion.value:e.religion,o=String(t||"").charAt(0).toUpperCase();return So[o]?o:""}},wagf_region:{get label(){return Se("dashboard.region")||"Region"},get:e=>st(e.wagf_region)},wagf_block:{get label(){return Se("dashboard.bloc")||"Bloc"},get:e=>st(e.wagf_block)},country_code:{get label(){return Se("dashboard.country")||"Country"},get:e=>st(e.country_code),geoIso:e=>e.country_code&&e.country_code.value},engagement_status:{get label(){return Se("dashboard.status")||"Status"},get:e=>st(e.engagement_status)},gospel_access:{get label(){return Se("dashboard.gospel_access")||"Gospel Access"},get:e=>st(e.imb_gsec)},language_family:{get label(){return Se("dashboard.language_family")||"Language Family"},get:e=>{const t=st(e.imb_language_family);if(t)return _n(t);const o=e.primary_language&&typeof e.primary_language=="object"?e.primary_language.value:null,n=o&&hp[o];return n?_n(n):""}},primary_language:{get label(){return Se("dashboard.language")||"Language"},get:e=>st(e.primary_language)},affinity_bloc:{get label(){return Se("dashboard.people")||"People"},get:e=>Zr(e.rop1),optionLabel:e=>st(e.rop1)},cluster:{get label(){return Se("dashboard.cluster")||"Cluster"},get:e=>Zr(e.imb_reg_of_people_2)},people_group:{get label(){return Se("dashboard.people_group")||"People Group"},get:e=>Zr(e.imb_reg_of_people_25)},rop1_name:{get label(){return Se("dashboard.people_name")||"People (name)"},get:e=>st(e.rop1)}},facetRail:[{id:"people",get title(){return Se("dashboard.people")||"People"},axis:"people",drill:["affinity_bloc","cluster","people_group"],tree:"affinity",topN:[30,40,60]},{id:"place",get title(){return Se("dashboard.place")||"Place"},axis:"place",drill:["wagf_region","wagf_block","country_code"]},{id:"language",get title(){return Se("dashboard.language")||"Language"},axis:"language",drill:["language_family","primary_language"]},{id:"religion",get title(){return Se("dashboard.religion")||"Religion"},axis:"religion",drill:["religion_family","religion"],topN:[12,24]},{id:"gospel-access",get title(){return Se("dashboard.gospel_access")||"Gospel Access"},axis:null,facet:"gospel_access",topN:8}],kpis:[{id:"total",get label(){return Se("dashboard.upgs_in_scope")||"UPGs in scope"},kind:"count",showDelta:!0},{id:"pop",get label(){return Se("dashboard.sum_population")||"Σ population"},kind:"sum",field:"population"},{id:"unreached",get label(){return Se("dashboard.unreached")||"unreached"},kind:"pct",test:e=>!/engaged/i.test(st(e.engagement_status))||/unengaged/i.test(st(e.engagement_status))},{id:"countries",get label(){return Se("dashboard.countries_touched")||"countries touched"},kind:"distinct",field:"country_code",via:"geoIso"},{id:"praying",get label(){return Se("dashboard.sum_praying")||"Σ praying"},kind:"sum",field:"people_praying"},{id:"adopted",get label(){return Se("dashboard.adopted")||"adopted"},kind:"pct",test:e=>Number(e.adopted_by_churches)>0}],columns:[{key:"name",get label(){return Se("dashboard.people_group")||"People Group"},get:e=>e.name||"",type:"str",w:1.34},{key:"country",get label(){return Se("dashboard.country")||"Country"},get:e=>st(e.country_code),type:"str",w:1.04},{key:"region",get label(){return Se("dashboard.region")||"Region"},get:e=>st(e.wagf_region),type:"str",w:1.04},{key:"language",get label(){return Se("dashboard.language")||"Language"},get:e=>st(e.primary_language),type:"str",w:1.04},{key:"religion",get label(){return Se("dashboard.religion")||"Religion"},get:e=>st(e.religion),type:"str",w:1.04},{key:"population",get label(){return Se("dashboard.population")||"Population"},get:e=>mp(e.population),type:"num",w:.86},{key:"people_praying",get label(){return Se("dashboard.praying")||"Praying"},get:e=>mp(e.people_praying),type:"num",w:.66},{key:"engagement",get label(){return Se("dashboard.engagement")||"Engagement"},get:e=>st(e.engagement_status),type:"str",w:.97}],map:{provider:"mapbox",mapStyle:"galaxy",heartbeatThreshold:150,binThresholds:[5,20,60],heartbeatMode:"fixed",heartbeatQuantile:.1,colorRamp:"greyscale"},charts:[{id:"religion",type:"donut",facet:"religion_family",get title(){return Se("dashboard.religion")||"Religion"},topN:8},{id:"region",type:"donut",facet:"wagf_region",get title(){return Se("dashboard.region")||"Region"},topN:9},{id:"country",type:"bar",facet:"country_code",title:"Top countries",topN:12}],detail:{photo:e=>e.has_photo&&e.image_url,fields:["religion","primary_language","people_praying","adopted_by_churches","engagement_status"]},researchFilters:{dropdowns:["prayer_level","affinity_bloc","wagf_region","wagf_block","country_code","primary_language","religion"],get searchPlaceholder(){return Se("dashboard.search_placeholder")||"Search people groups, place, language, religion…"}},searchKeys:["name","rop1_name","wagf_region","wagf_block","country_code","primary_language","religion","engagement_status"],search:[{id:"people",get label(){return Se("dashboard.search_people")||"Search people"},context:"people-groups",kinds:["affinity-bloc","cluster","people-group"]},{id:"place",get label(){return Se("dashboard.search_place")||"Search place"},context:"regions",kinds:["region","country"]},{id:"language",get label(){return Se("dashboard.search_language")||"Search language"},context:"language",kinds:["language-family","language","dialect"]},{id:"religion",get label(){return Se("dashboard.search_religion")||"Search religion"},context:"religion",kinds:["religion"]}]},gw=["data-row-count","data-loading","data-error","data-narrow"],fw={class:"rd-stats","data-region":"stats","data-sub":"stat-strip"},hw=["data-kpi"],mw={class:"l"},$w={key:0,class:"d","data-kpi-delta":""},bw={class:"rd-cell-map","data-region":"map"},_w=["title"],yw=["title"],vw={class:"rd-cell-table","data-region":"table"},kw={class:"rd-rail","data-region":"rail"},ww=["aria-valuenow"],xw=["aria-valuenow"],Sw=["title","aria-label","aria-valuenow","aria-valuemin","aria-valuemax"],Lw=["aria-valuenow"],Aw=["data-view"],Pw={__name:"research-dashboard",emits:["dashboard-filter"],setup(e,{emit:t}){const o=Fe("profileConfig",de(null)),n=re(()=>{const oe=he(o);if(!oe||typeof oe!="object")return Jr;const fe={...Jr,...oe};return oe.map&&typeof oe.map=="object"&&(fe.map={...Jr.map,...oe.map}),fe}),a=re(()=>{var oe;return((oe=he(o))==null?void 0:oe.layout)==="page-scroll"}),{bus:s,data:r,kpis:i,exporter:l,responsive:c}=Nv(n.value),u=t;rt(()=>{var oe;return{filters:{...s.filterSet},q:((oe=s.searchTerm)==null?void 0:oe.value)||""}},({filters:oe,q:fe})=>u("dashboard-filter",{filterSet:oe,searchTerm:fe}),{deep:!0});const d=r.total,f=r.loading,v=r.error,{shell:L,isNarrow:k,slimRail:x,slimFacet:C,mobileView:m,SEG:h,tableCollapsed:p,facetCollapsed:b,railCollapsed:A,setView:w,showFacets:M,showMap:U,showTable:ne,showCharts:B}=c,{startFacetResize:X,startRailResize:pe,startTableResize:I,startShellResize:J,onResizeKeydown:W,facetW:G,railW:ae,tableH:F,mapH:O,shellH:V}=Mv({shellRef:L,bus:s,isNarrow:k,pageScroll:a,storageKey:"rd-dashboard-layout"});function D(oe){return oe.kind==="pct"?oe.value:oe.kind==="distinct"?oe.value||"—":Qu(oe.value)}const se=re(()=>{var oe;return(oe=s.selectionVersion)==null||oe.value,s.selectionSet?s.selectionSet.size:0});function me(){l.exportCsvAsync()}function we(){s.clearSelection()}function Le(){s.emit("toggleFacet",!b.value)}function Ae(){s.emit("toggleRail",!A.value)}function ke(oe){const fe=oe.target&&oe.target.closest&&oe.target.closest("[data-bar-export],[data-bar-clear]");fe&&(fe.hasAttribute("data-bar-export")?me():we())}return Ot(` -======= -`,"rd-mappanel"),(R,Z)=>(W(),X("div",{ref_key:"mapWrap",ref:z,class:"rd-mapwrap","data-sub":"map","data-projection":Ve.value},[T("div",{ref_key:"mapContainer",ref:k,class:"rd-mapc","data-map-canvas":""},null,512),Z[1]||(Z[1]=T("div",{class:"map-scroll-edge map-scroll-edge--left"},null,-1)),Z[2]||(Z[2]=T("div",{class:"map-scroll-edge map-scroll-edge--right"},null,-1)),je(Mk,{class:"rd-zoomtools","has-geocoder":!1,"data-map-zoom-controls":""},{default:Co(()=>[je(Ok,{map:he(h),disabled:!q.value},null,8,["map","disabled"]),je(Fk,{map:he(h),disabled:!K.value},null,8,["map","disabled"])]),_:1}),T("span",{class:"rd-proj",role:"button",tabindex:"0","data-proj-toggle":"",onClick:ht},ue(Ve.value==="globe"?"🌐 Globe":"▭ Flat"),1),T("div",Dk,[Z[0]||(Z[0]=T("div",{class:"lg-h"},"UPGs / country",-1)),(W(!0),X(Ce,null,tt(Ae.value,de=>(W(),X("div",{key:de.l,class:"lg-row"},[T("span",{class:"lg-sw",style:lt({background:de.c})},null,4),T("span",null,ue(de.l),1)]))),128))])],8,Ik))}},Vk=".filter-dropdown{position:relative;flex:0 0 auto;width:var(--dx-filter-w, 128px);min-width:var(--dx-filter-w, 128px);max-width:var(--dx-filter-w, 128px)}@media (max-width: 576px){.filter-dropdown{width:var(--dx-filter-w-sm, 108px);min-width:var(--dx-filter-w-sm, 108px);max-width:var(--dx-filter-w-sm, 108px)}}.filter-dropdown__trigger{width:100%;padding:var(--dx-filter-pad-y, 4px) var(--dx-filter-pad-x, 8px);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:.875rem;color:var(--dx-text, #3b463d);text-align:start;background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;transition:border-color .15s ease}.filter-dropdown__trigger:hover{border-color:var(--dx-accent, #92b195)}.filter-dropdown__trigger[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--dx-accent, #92b195)}.filter-dropdown__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-dropdown__chevron{flex-shrink:0;transition:transform .2s ease}.filter-dropdown.is-open .filter-dropdown__chevron{transform:rotate(180deg)}.filter-dropdown__menu{position:fixed;z-index:2147483000;background-color:var(--dx-elevated, #fff);color:var(--dx-text, #3b463d);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;box-shadow:0 4px 12px #0000001f;overflow:hidden;display:flex;flex-direction:column;min-width:160px}.filter-dropdown__search{border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);border-radius:0;padding:6px 12px;width:100%;font-size:.875rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);outline:none;box-sizing:border-box}.filter-dropdown__search::placeholder{color:var(--dx-muted, #6d766e)}.filter-dropdown__clear{display:block;width:100%;background:none;border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);padding:6px 12px;font-size:.875rem;color:var(--dx-text, #3b463d);cursor:pointer;text-align:start;text-decoration:underline;text-decoration-color:var(--dx-accent, #92b195);text-underline-offset:3px}.filter-dropdown__clear:hover{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__options{flex:1 1 auto;min-height:0;max-height:250px;overflow-y:auto}.filter-dropdown__search,.filter-dropdown__clear{flex:0 0 auto}.filter-dropdown__option{padding:5px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:.875rem;transition:background-color .1s ease}.filter-dropdown__option[data-selected]{font-weight:700;color:var(--dx-text, #3b463d);box-shadow:inset 3px 0 0 var(--dx-accent, #92b195)}.filter-dropdown__option:hover,.filter-dropdown__option[data-highlighted]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__count{color:var(--dx-muted, #6d766e);font-size:.75rem;margin-inline-start:6px}.filter-dropdown__no-options{padding:12px;font-size:.875rem;color:var(--dx-muted, #6d766e);text-align:center}",qk=["data-active","aria-expanded"],Hk={class:"filter-dropdown__label"},Wk=["value","placeholder"],Kk={class:"filter-dropdown__options"},Yk={key:0,class:"filter-dropdown__no-options"},Xk=["data-highlighted","data-selected","aria-selected","onClick","onMouseenter"],Zk={class:"filter-dropdown__count"},pa=Sn({__name:"FilterDropdown",props:{label:{type:String,required:!0},name:{type:String,required:!0},options:{type:Array,default:()=>[]},value:{type:String,default:""},placeholder:{type:String,default:"Type to search..."}},emits:["filter-change","filter-clear"],setup(e,{emit:t}){const o=e,n={"buttons.clearSelection":"Clear selection","buttons.noOptions":"No options found"};let a=B=>n[B]||B;try{a=Jo().t}catch{}const s=t,r=pe(!1),i=pe(""),l=pe(-1),c=pe(null),u=pe(null),d=pe(null),f=pe({});function v(B){const Y=B.ownerDocument,ge=Y.createElement("div");ge.style.cssText="position:fixed;top:0;left:0;width:0;height:0;pointer-events:none;opacity:0",(B.parentElement||B.getRootNode().body||Y.body).appendChild(ge);const Q=ge.getBoundingClientRect();return ge.remove(),{x:Q.left,y:Q.top}}function L(){const B=d.value;if(!B)return;const Y=B.getBoundingClientRect(),ge=window.innerWidth,I=window.innerHeight,Q=320,H=4,G=8,F=Math.round(Math.min(Math.max(Y.width,240),ge-G*2)),O=Y.right>G&&Y.leftge-G?V=Math.round(Math.max(Y.right-F,G)):V=Math.round(Math.max(Y.left,G)):V=Math.round(Math.min(Math.max(Y.left,G),ge-F-G));const D=I-Y.bottom,ae=D<180&&Y.top>D,me=v(B),we=Math.round(V-me.x);f.value=ae?{top:"auto",bottom:`${Math.round(I-Y.top+H+me.y)}px`,left:`${we}px`,width:`${F}px`,maxHeight:`${Math.round(Math.min(Q,Y.top-H-G))}px`}:{top:`${Math.round(Y.bottom+H-me.y)}px`,bottom:"auto",left:`${we}px`,width:`${F}px`,maxHeight:`${Math.round(Math.min(Q,D-H-G))}px`}}function k(){r.value&&L()}const x=re(()=>{if(!i.value)return o.options;const B=i.value.toLowerCase();return o.options.filter(Y=>Y.label.toLowerCase().includes(B))}),C=re(()=>o.options.find(B=>B.value===o.value));function h(B){var ge;const Y=((ge=B.composedPath)==null?void 0:ge.call(B))??[];c.value&&!Y.includes(c.value)&&b()}function m(){r.value?b():p()}function p(){r.value=!0,i.value="",l.value=-1,L(),document.addEventListener("click",h),window.addEventListener("scroll",k,!0),window.addEventListener("resize",k),In(()=>{var B;L(),(B=u.value)==null||B.focus()})}function b(){r.value=!1,i.value="",l.value=-1,document.removeEventListener("click",h),window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k)}function A(B){i.value=B.target.value,l.value=-1}function w(B){const Y=x.value;switch(B.key){case"ArrowDown":B.preventDefault(),l.value=Math.min(l.value+1,Y.length-1),M();break;case"ArrowUp":B.preventDefault(),l.value=Math.max(l.value-1,0),M();break;case"Enter":{B.preventDefault();const ge=Y[l.value];ge&&U(ge);break}case"Escape":B.preventDefault(),b();break}}function M(){In(()=>{var Y;const B=(Y=c.value)==null?void 0:Y.querySelector(".filter-dropdown__option[data-highlighted]");B==null||B.scrollIntoView({block:"nearest"})})}function U(B){s("filter-change",{name:o.name,value:B.value,label:B.label,type:B.type}),b()}function ne(){s("filter-clear",{name:o.name}),b()}return Dt(()=>{document.removeEventListener("click",h),window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k)}),(B,Y)=>(W(),X("div",{ref_key:"rootRef",ref:c,class:qe(["filter-dropdown",{"is-open":r.value}])},[T("button",{ref_key:"triggerRef",ref:d,class:"filter-dropdown__trigger input","data-active":e.value?"":void 0,type:"button","aria-haspopup":"listbox","aria-expanded":r.value,onClick:m},[T("span",Hk,[C.value?(W(),X(Ce,{key:0},[ut(ue(e.label)+": ",1),T("strong",null,ue(C.value.label),1)],64)):(W(),X(Ce,{key:1},[ut(ue(e.label),1)],64))]),Y[0]||(Y[0]=T("svg",{class:"filter-dropdown__chevron",width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[T("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,qk),r.value?(W(),X("div",{key:0,class:"filter-dropdown__menu",role:"listbox",style:lt(f.value)},[T("input",{ref_key:"searchInputRef",ref:u,class:"filter-dropdown__search",type:"text",value:i.value,placeholder:e.placeholder,onInput:A,onKeydown:w},null,40,Wk),e.value?(W(),X("button",{key:0,class:"filter-dropdown__clear",type:"button",onClick:ne},ue(he(a)("buttons.clearSelection")),1)):Me("",!0),T("div",Kk,[x.value.length===0?(W(),X("div",Yk,ue(he(a)("buttons.noOptions")),1)):(W(!0),X(Ce,{key:1},tt(x.value,(ge,I)=>(W(),X("div",{key:ge.value,class:"filter-dropdown__option",role:"option","data-highlighted":I===l.value?"":void 0,"data-selected":ge.value===e.value?"":void 0,"aria-selected":ge.value===e.value,onClick:Q=>U(ge),onMouseenter:Q=>l.value=I},[T("span",null,ue(ge.label),1),T("span",Zk,ue(ge.count),1)],40,Xk))),128))])],4)):Me("",!0)],2))}},[["styles",[Vk]]]),Jk=".sfh{--brand: var(--dx-accent, #92b195);--ink: var(--dx-text, #3b463d);--mut: var(--dx-muted, #6d766e);--line: var(--dx-line, #d1d4cd);--card: var(--dx-elevated, #fff);display:flex;flex-direction:column;gap:var(--dx-sfh-gap, 4px);width:100%;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;color:var(--ink)}.sfh__search-row{display:flex;align-items:center;gap:12px;justify-content:center}.sfh__search-row>:first-child{flex:0 1 auto}.sfh__toggle{flex:0 0 auto;background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--ink);display:inline-flex;align-items:center;gap:4px;white-space:nowrap;padding:4px 2px;text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:4px}.sfh__toggle-chev{transition:transform .2s ease}.sfh__toggle[aria-expanded=true] .sfh__toggle-chev{transform:rotate(180deg)}.sfh__filters-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--dx-filter-gap, 10px);justify-content:flex-start;overflow-x:clip;padding-bottom:2px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.sfh__dd{flex:0 0 auto}.sfh__filters-row::-webkit-scrollbar{height:8px}.sfh__filters-row::-webkit-scrollbar-thumb{background:var(--dx-scroll-thumb, #c4c8c0);border-radius:8px}.sfh__filters-row::-webkit-scrollbar-track{background:transparent}.sfh__pill{flex:0 0 auto;padding:6px 12px;cursor:pointer;font-size:.875rem;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px;white-space:nowrap;transition:border-color .15s ease,background .15s ease}.sfh__pill:hover{border-color:var(--brand)}.sfh__pill[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--brand);color:var(--ink)}.sfh__chips{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;justify-content:center;min-height:var(--dx-sel-row-h, 16px)}.sfh__chip-strip{flex:0 1 auto;min-width:0;display:flex;flex-wrap:nowrap;gap:6px;align-items:center;justify-content:center;justify-content:safe center;overflow-x:auto;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.sfh__chip-strip::-webkit-scrollbar{height:6px}.sfh__chip-strip::-webkit-scrollbar-thumb{background:var(--dx-scroll-thumb, #c4c8c0);border-radius:8px}.sfh__chip-strip::-webkit-scrollbar-track{background:transparent}.sfh__sel-label{flex:0 0 auto;font-size:.6875rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--mut, #6d766e);opacity:.75}.sfh__sel-world{flex:0 0 auto;font-size:.75rem;color:var(--mut, #6d766e)}.sfh__chip{flex:0 0 auto;display:inline-flex;gap:4px;align-items:center;background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));color:var(--ink);border:1px solid var(--line);border-radius:100px;padding:0 8px;font-size:.75rem;line-height:1;white-space:nowrap;height:var(--dx-sel-row-h, 16px);box-sizing:border-box}.sfh__chip-x{background:none;border:none;cursor:pointer;font-size:1.05em;line-height:1;color:inherit;padding:0;display:inline-flex;align-items:center}.sfh__chip-x:hover{opacity:.7}.sfh__clear{flex:0 0 auto;white-space:nowrap;background:none;border:none;cursor:pointer;font-size:.75rem;line-height:1;color:var(--mut, #6d766e);text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:3px;padding:0 4px;margin-inline-start:2px}.sfh__clear:hover{color:var(--ink)}",Qk={class:"sfh"},ew={key:0,class:"sfh__search-row"},tw=["aria-expanded"],ow=["aria-label"],nw=["data-active","onClick"],aw={class:"sfh__chip-strip"},sw={class:"sfh__sel-label"},rw=["aria-label","onClick"],iw={key:1,class:"sfh__sel-world"},lw=Sn({__name:"SearchFilterHeader",props:{search:{type:String,default:""},filters:{type:Array,default:()=>[]},toggles:{type:Array,default:()=>[]},activeChips:{type:Array,default:null},searchPlaceholder:{type:String,default:"Search…"},searchMaxWidth:{type:String,default:"520px"},showSearch:{type:[Boolean,String],default:!0},showFilters:{type:[Boolean,String],default:!0},startExpanded:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!0},labels:{type:Object,default:()=>({})}},emits:["update:search","search","filter-change","filter-clear","toggle","remove-filter","clear-all"],setup(e,{emit:t}){const o=e,n=t,a=h=>!(h===!1||h==="false"||h==="0"||h===0),s=re(()=>a(o.showSearch)),r=re(()=>a(o.showFilters)),i=re(()=>({show_filters:Se("grid.show_filters")||"Show Filters",hide_filters:Se("grid.hide_filters")||"Hide Filters",clear_all:Se("grid.clear_all")||"Clear All",type_to_search:Se("grid.type_to_search")||"Type to search...",filters:Se("dashboard.filters")||"Filters",selected:Se("dashboard.selected")||"Selected",world:Se("dashboard.world")||"World",remove:Se("dashboard.remove_filter")||"Remove",...o.labels})),l=pe(o.startExpanded||!o.collapsible);function c(){l.value=!l.value}const u=re(()=>!o.collapsible||!s.value||l.value),d=re(()=>{if(Array.isArray(o.activeChips))return o.activeChips;const h=[];for(const m of o.filters){if(!m.value)continue;const p=(m.options||[]).find(b=>b.value===m.value);h.push({name:m.name,label:p?p.label:m.value})}for(const m of o.toggles)m.active&&h.push({name:m.name,label:m.label});return h});function f(h){const m=(h==null?void 0:h.value)??"";n("update:search",m),n("search",{value:m})}function v(h){n("filter-change",h)}function L(h){n("filter-clear",h)}function k(h){n("toggle",{name:h.name,active:!h.active})}function x(h){n("remove-filter",{name:h})}function C(){n("clear-all")}return(h,m)=>(W(),X("div",Qk,[s.value?(W(),X("div",ew,[je(qr,{"model-value":e.search,placeholder:e.searchPlaceholder,"aria-label":e.searchPlaceholder,"max-width":e.searchMaxWidth,onSearch:f},null,8,["model-value","placeholder","aria-label","max-width"]),r.value&&e.collapsible?(W(),X("button",{key:0,class:"sfh__toggle",type:"button","aria-expanded":u.value,onClick:c},[ut(ue(u.value?i.value.hide_filters:i.value.show_filters)+" ",1),m[0]||(m[0]=T("svg",{class:"sfh__toggle-chev",width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[T("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,tw)):Me("",!0)])):Me("",!0),r.value&&u.value?(W(),X("div",{key:1,class:"sfh__filters-row",role:"group","aria-label":i.value.filters},[(W(!0),X(Ce,null,tt(e.filters,p=>(W(),To(pa,{key:p.name,class:"sfh__dd",label:p.label,name:p.name,options:p.options||[],value:p.value||"",placeholder:p.placeholder||i.value.type_to_search,onFilterChange:v,onFilterClear:L},null,8,["label","name","options","value","placeholder"]))),128)),(W(!0),X(Ce,null,tt(e.toggles,p=>(W(),X("button",{key:p.name,class:"sfh__pill",type:"button","data-active":p.active?"":void 0,onClick:b=>k(p)},ue(p.label),9,nw))),128))],8,ow)):Me("",!0),r.value?(W(),X("div",{key:2,class:qe(["sfh__chips",{"is-empty":!d.value.length}])},[T("div",aw,[T("span",sw,ue(i.value.selected||"Selected"),1),d.value.length?(W(),X(Ce,{key:0},[(W(!0),X(Ce,null,tt(d.value,p=>(W(),X("span",{key:p.name,class:"sfh__chip"},[ut(ue(p.label)+" ",1),T("button",{class:"sfh__chip-x",type:"button","aria-label":`${i.value.remove} ${p.label}`,onClick:b=>x(p.name)},"×",8,rw)]))),128)),T("button",{class:"sfh__clear",type:"button",onClick:C},ue(i.value.clear_all),1)],64)):(W(),X("span",iw,ue(i.value.world||"World"),1))])],2)):Me("",!0)]))}},[["styles",[Jk]]]),cw={class:"rd-research-filters","data-region":"filters","data-sub":"research-filters"},cs="prayer_level",uw={__name:"DashboardResearchFilters",setup(e){const t=Ie("selectionBus",null),o=Ie("dashboardData",null),n=Ie("dashboardConfig",{}),a=re(()=>{var w;return((w=o==null?void 0:o.rows)==null?void 0:w.value)||[]}),s=(t==null?void 0:t.filterSet)||{},r={get label(){return Se("dashboard.prayer")||"Prayer"},get:w=>{const M=w==null?void 0:w.people_praying,U=M&&typeof M=="object"?M.value:M;return na[yn({peoplePraying:U??null})]}},i=re(()=>({[cs]:r,...n.facets||{}})),l=re(()=>Object.fromEntries(Object.entries(i.value).map(([w,M])=>[w,M.get]))),c=re(()=>n.researchFilters||{}),u=re(()=>{const w=c.value.dropdowns||["wagf_region","wagf_block","country_code","people_group","religion"];return[cs,...w.filter(M=>M!==cs)]}),d=re(()=>c.value.searchPlaceholder||"Search people groups, place, language, religion…");function f(w,M){const U=Object.keys(w);return U.length?M.filter(ne=>U.every(B=>{const Y=l.value[B];return Y?Y(ne)===w[B]:!0})):M}function v(w){var ge;const M=l.value[w];if(!M)return[];const U=(ge=i.value[w])==null?void 0:ge.optionLabel,ne={};for(const[I,Q]of Object.entries(s))I!==w&&(ne[I]=Q);const B=f(ne,a.value),Y=new Map;for(const I of B){const Q=M(I);if(Q==null||Q==="")continue;const H=Y.get(Q);H?H.count+=1:Y.set(Q,{label:U&&U(I)||Q,count:1})}return Array.from(Y.entries()).map(([I,{label:Q,count:H}])=>({value:I,label:Q,count:H})).sort((I,Q)=>String(I.label).localeCompare(String(Q.label)))}const L=re(()=>u.value.map(w=>{var M;return{name:w,label:((M=i.value[w])==null?void 0:M.label)||w,options:v(w),value:s[w]||""}})),{labelFor:k}=ra(n,Ie("dataStore",null),Ie("searchSourceId",null)),x=re(()=>{var U;const w=Object.keys(s).map(ne=>{var Y;const B=s[ne];return{name:ne,label:`${((Y=i.value[ne])==null?void 0:Y.label)||ne}: ${ne===cs?B:k(ne,B)}`}}),M=(((U=t==null?void 0:t.searchTerm)==null?void 0:U.value)||"").trim();return M&&w.push({name:"__search__",label:`Search: ${M}`}),w}),C=re(()=>{var w;return((w=t==null?void 0:t.searchTerm)==null?void 0:w.value)||""});function h(w){t==null||t.setSearch((w==null?void 0:w.value)??"")}function m(w){t==null||t.setFilter(w.name,w.value)}function p(w){t==null||t.setFilter(w.name,null)}function b(w){if(w.name==="__search__"){t==null||t.setSearch("");return}t==null||t.setFilter(w.name,null)}function A(){t==null||t.clearFilters(),t==null||t.setSearch("")}return Ot(` - .rd-research-filters{ position:relative; z-index:55; height:100%; box-sizing:border-box; - padding:3px var(--rd-edge,14px); background:var(--rd-panel,#fff); border-bottom:1px solid var(--rd-line, #d1d4cd); - overflow:visible; } -`,"rd-research-filters"),(w,M)=>(W(),X("div",cw,[je(lw,{search:C.value,filters:L.value,"active-chips":x.value,"search-placeholder":d.value,"show-search":!1,"start-expanded":"",onSearch:h,onFilterChange:m,onFilterClear:p,onRemoveFilter:b,onClearAll:A},null,8,["search","filters","active-chips","search-placeholder"])]))}},hp={aar:"Afro-Asiatic",abf:"Austronesian",abl:"Austronesian",abv:"Afro-Asiatic",acm:"Afro-Asiatic",acq:"Afro-Asiatic",acw:"Afro-Asiatic",acx:"Afro-Asiatic",adh:"Nilo-Saharan",adi:"Sino-Tibetan",adw:"Tupian",adx:"Sino-Tibetan",aen:"Sign Language",afb:"Afro-Asiatic",afg:"Sign Language",afr:"Indo-European",aft:"Nilo-Saharan",agx:"Nakh-Daghestanian",ahk:"Sino-Tibetan",aib:"Turkic",aih:"Kra-Dai",aio:"Kra-Dai",ajp:"Afro-Asiatic",aju:"Afro-Asiatic",aks:"Niger-Congo",akv:"Nakh-Daghestanian",alk:"Austro-Asiatic",alo:"Austronesian",alw:"Afro-Asiatic",amc:"Panoan",amh:"Afro-Asiatic",amr:"Harákmbut",amv:"Austronesian",ani:"Nakh-Daghestanian",anp:"Indo-European",anq:"Andamanese",aoc:"Cariban",apc:"Afro-Asiatic",apd:"Afro-Asiatic",arb:"Afro-Asiatic",arq:"Afro-Asiatic",arr:"Tupian",ars:"Afro-Asiatic",arv:"Afro-Asiatic",ary:"Afro-Asiatic",ase:"Sign Language",asl:"Austronesian",asm:"Indo-European",asn:"Tupian",asp:"Sign Language",atr:"Cariban",avd:"Indo-European",avl:"Afro-Asiatic",avv:"Tupian",awe:"Tupian",awt:"Tupian",ayh:"Afro-Asiatic",ayl:"Afro-Asiatic",ayn:"Afro-Asiatic",azb:"Turkic",bao:"Tucanoan",bbh:"Austro-Asiatic",bcc:"Indo-European",bcz:"Niger-Congo",bdg:"Austronesian",bdi:"Nilo-Saharan",bdj:"Niger-Congo",bdm:"Afro-Asiatic",bdo:"Nilo-Saharan",bee:"Sino-Tibetan",bej:"Afro-Asiatic",bem:"Niger-Congo",ben:"Indo-European",bfi:"Sign Language",bfu:"Sino-Tibetan",bfw:"Austro-Asiatic",bfy:"Indo-European",bgc:"Indo-European",bgg:"Sino-Tibetan",bgk:"Austro-Asiatic",bgl:"Austro-Asiatic",bgn:"Indo-European",bgp:"Indo-European",bgq:"Indo-European",bho:"Indo-European",bhu:"Indo-European",bid:"Afro-Asiatic",bjj:"Indo-European",bkk:"Indo-European",blf:"Austronesian",blm:"Nilo-Saharan",blo:"Niger-Congo",bls:"Austronesian",blt:"Kra-Dai",bly:"Niger-Congo",bma:"Niger-Congo",bmr:"Witotoan",bna:"Austronesian",bns:"Indo-European",bor:"Bororoan",bos:"Indo-European",bph:"Nakh-Daghestanian",bqg:"Niger-Congo",bqj:"Niger-Congo",bqk:"Niger-Congo",bqn:"Sign Language",bqx:"Niger-Congo",bra:"Indo-European",brb:"Austro-Asiatic",bro:"Sino-Tibetan",brx:"Sino-Tibetan",bsb:"Austronesian",bsg:"Indo-European",bsk:"Language isolate",bsy:"Austronesian",btd:"Austronesian",btf:"Afro-Asiatic",btv:"Indo-European",btx:"Austronesian",btz:"Austronesian",bub:"Niger-Congo",buh:"Hmong-Mien",bva:"Afro-Asiatic",bvf:"Afro-Asiatic",bvi:"Niger-Congo",bvo:"Niger-Congo",bwi:"Maipurean",bwn:"Hmong-Mien",bwx:"Hmong-Mien",bxr:"Mongolic",bxu:"Mongolic",bxw:"Niger-Congo",byn:"Afro-Asiatic",byo:"Sino-Tibetan",bze:"Niger-Congo",bzx:"Niger-Congo",cat:"Indo-European",cbb:"Maipurean",cbc:"Tucanoan",cbi:"Barbacoan",cbn:"Austro-Asiatic",cby:"Unclassified",cdh:"Indo-European",cdn:"Sino-Tibetan",cdz:"Austro-Asiatic",ceg:"Zamucoan",cgk:"Sino-Tibetan",che:"Nakh-Daghestanian",cib:"Niger-Congo",cji:"Nakh-Daghestanian",ckh:"Sino-Tibetan",ckq:"Afro-Asiatic",clk:"Sino-Tibetan",cmn:"Sino-Tibetan",cnq:"Niger-Congo",cnu:"Afro-Asiatic",coa:"Creole",cog:"Austro-Asiatic",cpu:"Maipurean",cqd:"Hmong-Mien",csf:"Sign Language",csx:"Sign language",cub:"Tucanoan",cui:"Guajiboan",cuu:"Kra-Dai",daa:"Afro-Asiatic",daj:"Nilo-Saharan",dar:"Nakh-Daghestanian",dau:"Nilo-Saharan",dba:"Language isolate",dbb:"Afro-Asiatic",dbp:"Afro-Asiatic",dbr:"Afro-Asiatic",ddn:"Nilo-Saharan",deg:"Niger-Congo",dek:"Niger-Congo",des:"Tucanoan",dgo:"Indo-European",dgs:"Niger-Congo",dhd:"Indo-European",dhi:"Sino-Tibetan",dhm:"Niger-Congo",dil:"Nilo-Saharan",diu:"Niger-Congo",div:"Indo-European",djc:"Nilo-Saharan",dkg:"Niger-Congo",dln:"Sino-Tibetan",dml:"Indo-European",dms:"Austronesian",dnu:"Austro-Asiatic",doc:"Kra-Dai",dok:"Austronesian",dox:"Afro-Asiatic",dru:"Austronesian",dse:"Sign Language",dsh:"Afro-Asiatic",dsl:"Sign Language",dsq:"Nilo-Saharan",dta:"Mongolic",dtp:"Austronesian",dyu:"Niger-Congo",dzg:"Nilo-Saharan",dzl:"Sino-Tibetan",eng:"Indo-European",enn:"Niger-Congo",epi:"Niger-Congo",ers:"Sino-Tibetan",esl:"Sign Language",evn:"Tungusic",fin:"Uralic",fni:"Niger-Congo",fod:"Niger-Congo",fra:"Indo-European",fsl:"Sign Language",fub:"Niger-Congo",fuc:"Niger-Congo",fuf:"Niger-Congo",fuj:"Niger-Congo",fvr:"Nilo-Saharan",fwe:"Niger-Congo",gax:"Afro-Asiatic",gaz:"Afro-Asiatic",gbk:"Indo-European",gbm:"Indo-European",gbn:"Nilo-Saharan",gdq:"Afro-Asiatic",gea:"Afro-Asiatic",ges:"Austronesian",gex:"Afro-Asiatic",ghl:"Nilo-Saharan",giq:"Kra-Dai",giw:"Kra-Dai",gju:"Indo-European",glc:"Niger-Congo",goe:"Sino-Tibetan",gow:"Afro-Asiatic",gqu:"Kra-Dai",grr:"Afro-Asiatic",gsg:"Sign Language",gss:"Sign Language",guj:"Indo-European",gus:"Sign Language",gvp:"Jean",gwb:"Niger-Congo",gwc:"Indo-European",gwd:"Afro-Asiatic",gwf:"Indo-European",gya:"Niger-Congo",gyo:"Sino-Tibetan",gzn:"Austronesian",hae:"Afro-Asiatic",hal:"Austro-Asiatic",hau:"Afro-Asiatic",hca:"Creole",hea:"Hmong-Mien",heb:"Afro-Asiatic",her:"Niger-Congo",hik:"Austronesian",hin:"Indo-European",hks:"Sign Language",hlb:"Indo-European",hld:"Austro-Asiatic",hmb:"Nilo-Saharan",hmh:"Hmong-Mien",hml:"Hmong-Mien",hmm:"Hmong-Mien",hne:"Indo-European",hni:"Sino-Tibetan",hnu:"Austro-Asiatic",hoh:"Afro-Asiatic",hoj:"Indo-European",hoz:"Afro-Asiatic",hsn:"Sino-Tibetan",hss:"Afro-Asiatic",htu:"Austronesian",hug:"Harákmbut",huo:"Austro-Asiatic",iba:"Austronesian",ibr:"Niger-Congo",icl:"Sign Language",iii:"Sino-Tibetan",ind:"Austronesian",irr:"Austro-Asiatic",ise:"Sign Language",isk:"Indo-European",isr:"Sign Language",ium:"Hmong-Mien",jbn:"Afro-Asiatic",jeu:"Afro-Asiatic",jia:"Afro-Asiatic",jii:"Afro-Asiatic",jio:"Kra-Dai",jit:"Niger-Congo",jiu:"Sino-Tibetan",jle:"Niger-Congo",jls:"Sign Language",jmi:"Afro-Asiatic",jnl:"Sino-Tibetan",jos:"Sign Language",jpn:"Japonic",jup:"Puinavean",kaf:"Sino-Tibetan",kan:"Dravidian",kas:"Indo-European",kay:"Tupian",kaz:"Turkic",kbg:"Sino-Tibetan",kbo:"Nilo-Saharan",kbp:"Niger-Congo",kby:"Nilo-Saharan",kcf:"Niger-Congo",kcn:"Creole",kcp:"Nilo-Saharan",kcu:"Niger-Congo",kcy:"Nilo-Saharan",kcz:"Niger-Congo",kdh:"Niger-Congo",kdn:"Niger-Congo",kdt:"Austro-Asiatic",kdu:"Nilo-Saharan",kec:"Nilo-Saharan",kfa:"Dravidian",kfd:"Dravidian",kfe:"Dravidian",kfg:"Dravidian",kfm:"Indo-European",kfr:"Indo-European",kfs:"Indo-European",kfy:"Indo-European",kgn:"Indo-European",khb:"Kra-Dai",khf:"Austro-Asiatic",khv:"Nakh-Daghestanian",kia:"Niger-Congo",kib:"Niger-Congo",kie:"Nilo-Saharan",kil:"Afro-Asiatic",kir:"Turkic",kjc:"Austronesian",kjg:"Austro-Asiatic",kjk:"Austronesian",kke:"Niger-Congo",kkh:"Kra-Dai",kkn:"Austro-Asiatic",kko:"Nilo-Saharan",kks:"Afro-Asiatic",klf:"Nilo-Saharan",kmc:"Kra-Dai",kmq:"Nilo-Saharan",kmr:"Indo-European",kmz:"Turkic",knc:"Nilo-Saharan",knf:"Niger-Congo",knk:"Niger-Congo",knm:"Maipurean",knn:"Indo-European",kns:"Austro-Asiatic",knz:"Niger-Congo",kou:"Niger-Congo",kpa:"Afro-Asiatic",kpc:"Maipurean",kpj:"Karajá",kpt:"Nakh-Daghestanian",kqg:"Niger-Congo",kqm:"Niger-Congo",krn:"Niger-Congo",krs:"Nilo-Saharan",kth:"Nilo-Saharan",kuf:"Austro-Asiatic",kui:"Cariban",kuj:"Niger-Congo",kva:"Nakh-Daghestanian",kvf:"Afro-Asiatic",kvh:"Austronesian",kvp:"Austronesian",kwn:"Niger-Congo",kwv:"Nilo-Saharan",kxd:"Austronesian",kxh:"Afro-Asiatic",kxj:"Nilo-Saharan",kyi:"Austronesian",kyp:"Kra-Dai",kyw:"Indo-European",kzq:"Sino-Tibetan",lae:"Sino-Tibetan",lan:"Niger-Congo",lao:"Kra-Dai",laq:"Kra-Dai",lbj:"Sino-Tibetan",lbn:"Austro-Asiatic",lbo:"Austro-Asiatic",lbs:"Sign Language",lbt:"Kra-Dai",lcd:"Austronesian",lcq:"Austronesian",lgn:"Nilo-Saharan",lgs:"Sign Language",lha:"Kra-Dai",lhn:"Austronesian",lhp:"Sino-Tibetan",lic:"Kra-Dai",liq:"Afro-Asiatic",liu:"Nilo-Saharan",lkc:"Sino-Tibetan",lkh:"Sino-Tibetan",lki:"Indo-European",lkr:"Nilo-Saharan",lma:"Niger-Congo",loh:"Nilo-Saharan",lop:"Niger-Congo",lsd:"Afro-Asiatic",lso:"Sign Language",lss:"Indo-European",lsy:"Sign Language",luk:"Sino-Tibetan",lul:"Nilo-Saharan",mag:"Indo-European",mai:"Indo-European",mal:"Dravidian",mar:"Indo-European",mbd:"Austronesian",mbn:"Guajiboan",mcd:"Panoan",mdl:"Sign Language",mdy:"Afro-Asiatic",mei:"Nilo-Saharan",men:"Niger-Congo",mes:"Afro-Asiatic",mew:"Afro-Asiatic",mey:"Afro-Asiatic",mgb:"Nilo-Saharan",mgd:"Nilo-Saharan",mge:"Nilo-Saharan",mgh:"Niger-Congo",mhr:"Uralic",mhu:"Sino-Tibetan",mhw:"Niger-Congo",mjp:"Dravidian",mkg:"Kra-Dai",mmh:"Maipurean",mml:"Austro-Asiatic",mmy:"Afro-Asiatic",mne:"Nilo-Saharan",mni:"Sino-Tibetan",mnj:"Indo-European",mnk:"Niger-Congo",mnq:"Austro-Asiatic",mns:"Uralic",mot:"Chibchan",mou:"Afro-Asiatic",moy:"Afro-Asiatic",moz:"Afro-Asiatic",mpe:"Nilo-Saharan",mpz:"Sino-Tibetan",mqi:"Austronesian",mqn:"Austronesian",mra:"Austro-Asiatic",mrj:"Uralic",msc:"Niger-Congo",msv:"Afro-Asiatic",msw:"Niger-Congo",mtr:"Indo-European",mub:"Afro-Asiatic",mup:"Indo-European",muq:"Hmong-Mien",muv:"Dravidian",mvf:"Mongolic",mvu:"Nilo-Saharan",mvy:"Indo-European",mwn:"Niger-Congo",mxj:"Sino-Tibetan",myp:"Muran",myy:"Tucanoan",mzb:"Afro-Asiatic",mzy:"Sign Language",naq:"Khoe-Kwadi",nbt:"Sino-Tibetan",nbw:"Niger-Congo",ndg:"Niger-Congo",ndp:"Nilo-Saharan",ndt:"Niger-Congo",neb:"Niger-Congo",neh:"Sino-Tibetan",nev:"Austro-Asiatic",ngt:"Austro-Asiatic",njl:"Nilo-Saharan",nkd:"Sino-Tibetan",nld:"Indo-European",nmd:"Niger-Congo",nmi:"Afro-Asiatic",nml:"Niger-Congo",nmy:"Sino-Tibetan",nnj:"Nilo-Saharan",nod:"Kra-Dai",noe:"Indo-European",nos:"Sino-Tibetan",npb:"Sino-Tibetan",npi:"Indo-European",nrb:"Nilo-Saharan",nru:"Sino-Tibetan",nsl:"Sign Language",nuo:"Austro-Asiatic",nus:"Nilo-Saharan",nwm:"Nilo-Saharan",nxq:"Sino-Tibetan",nye:"Niger-Congo",nyn:"Niger-Congo",nyr:"Niger-Congo",nyw:"Kra-Dai",nzs:"Sign Language",okn:"Japonic",ole:"Sino-Tibetan",oog:"Austro-Asiatic",oon:"Andamanese",opa:"Niger-Congo",ort:"Indo-European",ory:"Indo-European",ost:"Niger-Congo",oyb:"Austro-Asiatic",oym:"Tupian",pac:"Austro-Asiatic",pah:"Tupian",pbp:"Niger-Congo",peh:"Mongolic",pes:"Indo-European",pga:"Creole",pgg:"Indo-European",pgz:"Sign language",pha:"Hmong-Mien",phh:"Sino-Tibetan",phj:"Sino-Tibetan",phk:"Kra-Dai",phl:"Indo-European",pho:"Sino-Tibetan",phq:"Sino-Tibetan",phr:"Indo-European",pht:"Kra-Dai",pil:"Niger-Congo",pir:"Tucanoan",pkb:"Niger-Congo",pks:"Sign Language",pkt:"Austro-Asiatic",pll:"Austro-Asiatic",pnq:"Niger-Congo",pnx:"Austro-Asiatic",por:"Indo-European",prc:"Indo-European",prs:"Indo-European",prt:"Austro-Asiatic",psc:"Sign Language",pse:"Austronesian",pto:"Tupian",pum:"Sino-Tibetan",puo:"Austro-Asiatic",qae:"Sign Language",qao:"Sign Language",qbh:"Sign Language",qbj:"Sign Language",qbn:"Sign Language",qbt:"Sign Language",qcd:"Sign Language",qcm:"Sign Language",qcy:"Sign Language",qer:"Sign Language",qfa:"Sign Language",qfj:"Sign Language",qga:"Sign Language",qge:"Sign Language",qgm:"Sign Language",qiq:"Sign Language",qki:"Sign Language",qkm:"Sign Language",qkp:"Sign Language",qkw:"Sign Language",qmv:"Sign Language",qnh:"Sign Language",qns:"Sign Language",qom:"Sign Language",qqa:"Sign Language",qry:"Sign Language",qsm:"Sign Language",qso:"Sign Language",qsr:"Sign Language",qsz:"Sign Language",qtp:"Sign Language",qvz:"Quechuan",ras:"Niger-Congo",rbb:"Austro-Asiatic",ren:"Austro-Asiatic",rji:"Sino-Tibetan",rmt:"Indo-European",rmy:"Indo-European",rob:"Austronesian",rsl:"Sign Language",rui:"Niger-Congo",rus:"Indo-European",rwm:"Niger-Congo",rwr:"Indo-European",rys:"Japonic",saa:"Afro-Asiatic",sbf:"Unclassified",sbj:"Nilo-Saharan",sbs:"Niger-Congo",scb:"Austro-Asiatic",sck:"Indo-European",scl:"Indo-European",sdb:"Indo-European",sdg:"Indo-European",sdl:"Sign Language",sdp:"Sino-Tibetan",seq:"Niger-Congo",sgh:"Indo-European",sgy:"Indo-European",she:"Afro-Asiatic",shm:"Indo-European",shn:"Kra-Dai",sho:"Niger-Congo",shp:"Panoan",shu:"Afro-Asiatic",shv:"Afro-Asiatic",shz:"Niger-Congo",siy:"Indo-European",siz:"Afro-Asiatic",sjg:"Nilo-Saharan",sjo:"Tungusic",skq:"Niger-Congo",sle:"Dravidian",slt:"Sino-Tibetan",sml:"Austronesian",smy:"Indo-European",snd:"Indo-European",snn:"Tucanoan",soj:"Indo-European",sok:"Afro-Asiatic",soy:"Niger-Congo",spa:"Indo-European",spu:"Austro-Asiatic",sqk:"Sign Language",sqq:"Austro-Asiatic",sqs:"Sign Language",sqt:"Afro-Asiatic",srh:"Indo-European",sri:"Tucanoan",srp:"Indo-European",ssh:"Afro-Asiatic",ssn:"Afro-Asiatic",sss:"Austro-Asiatic",ssy:"Afro-Asiatic",std:"Andamanese",sts:"Indo-European",suq:"Nilo-Saharan",suv:"Sino-Tibetan",suy:"Jean",suz:"Sino-Tibetan",swh:"Niger-Congo",swi:"Kra-Dai",swl:"Sign Language",swv:"Indo-European",swx:"Arauan",sxg:"Sino-Tibetan",sze:"Afro-Asiatic",szn:"Austronesian",szs:"Sign Language",tag:"Niger-Congo",tam:"Dravidian",taz:"Niger-Congo",tbm:"Niger-Congo",tbn:"Chibchan",tbr:"Nilo-Saharan",tct:"Kra-Dai",tcy:"Dravidian",tda:"Mixed language",tdb:"Indo-European",tdd:"Kra-Dai",tdf:"Austro-Asiatic",tdj:"Austronesian",tel:"Dravidian",teq:"Nilo-Saharan",tgf:"Sino-Tibetan",tgk:"Indo-European",tgr:"Austro-Asiatic",thk:"Niger-Congo",thm:"Austro-Asiatic",thu:"Nilo-Saharan",thv:"Afro-Asiatic",tig:"Afro-Asiatic",tin:"Nakh-Daghestanian",tiz:"Kra-Dai",tkn:"Japonic",tlq:"Austro-Asiatic",tly:"Indo-European",tma:"Nilo-Saharan",tnb:"Chibchan",toi:"Niger-Congo",toq:"Nilo-Saharan",tou:"Austro-Asiatic",tqq:"Afro-Asiatic",tri:"Cariban",trj:"Afro-Asiatic",tsb:"Afro-Asiatic",tsc:"Niger-Congo",tsj:"Sino-Tibetan",tsk:"Sino-Tibetan",tsl:"Kra-Dai",tsm:"Sign Language",ttg:"Austronesian",tth:"Austro-Asiatic",ttl:"Niger-Congo",tts:"Kra-Dai",tue:"Tucanoan",tum:"Niger-Congo",tuo:"Tucanoan",tur:"Turkic",twm:"Sino-Tibetan",txi:"Cariban",txm:"Austronesian",tyh:"Austro-Asiatic",tyj:"Kra-Dai",tyr:"Kra-Dai",tyv:"Turkic",tyy:"Niger-Congo",tzm:"Afro-Asiatic",uan:"Kra-Dai",udj:"Austronesian",une:"Niger-Congo",unk:"Maipurean",urd:"Indo-European",urp:"Tupian",urz:"Tupian",ush:"Indo-European",usi:"Sino-Tibetan",uuu:"Austro-Asiatic",uzn:"Turkic",vai:"Niger-Congo",vgr:"Indo-European",vie:"Austro-Asiatic",vkj:"Unclassified",vkn:"Niger-Congo",vkz:"Niger-Congo",vmk:"Niger-Congo",vut:"Niger-Congo",wau:"Maipurean",waw:"Cariban",wbj:"Afro-Asiatic",wbl:"Indo-European",wbr:"Indo-European",wlc:"Niger-Congo",wll:"Nilo-Saharan",wmd:"Nambikwara",wmg:"Sino-Tibetan",wne:"Indo-European",wni:"Niger-Congo",wol:"Niger-Congo",wrn:"Niger-Congo",wti:"Nilo-Saharan",wuh:"Mixed language",wwa:"Niger-Congo",xal:"Mongolic",xan:"Afro-Asiatic",xdq:"Nakh-Daghestanian",xhv:"Austro-Asiatic",xka:"Indo-European",xkz:"Sino-Tibetan",xma:"Niger-Congo",xmj:"Afro-Asiatic",xmo:"Tupian",xms:"Sign Language",xnr:"Indo-European",xns:"Sino-Tibetan",xom:"Nilo-Saharan",xor:"Panoan",xsm:"Niger-Congo",xsr:"Sino-Tibetan",xwg:"Nilo-Saharan",yaa:"Panoan",yad:"Yaguan",yao:"Niger-Congo",yax:"Niger-Congo",ybh:"Sino-Tibetan",ycl:"Sino-Tibetan",ydd:"Indo-European",ydg:"Indo-European",yea:"Dravidian",yhd:"Afro-Asiatic",yig:"Sino-Tibetan",yix:"Sino-Tibetan",ymm:"Afro-Asiatic",ymx:"Sino-Tibetan",yne:"Sino-Tibetan",yno:"Kra-Dai",yom:"Niger-Congo",yox:"Japonic",yoy:"Kra-Dai",yrn:"Kra-Dai",ysl:"Sign Language",ysm:"Sign language",ysn:"Sino-Tibetan",yue:"Sino-Tibetan",yul:"Nilo-Saharan",yup:"Cariban",ywn:"Panoan",ywt:"Sino-Tibetan",zag:"Nilo-Saharan",zgn:"Kra-Dai",zhd:"Kra-Dai",ziw:"Niger-Congo",zkr:"Sino-Tibetan",zlm:"Austronesian",zna:"Niger-Congo",zne:"Niger-Congo",zng:"Austro-Asiatic",zqe:"Kra-Dai",zum:"Indo-European",zyg:"Kra-Dai"},mp=e=>{if(typeof e=="number")return e;const t=parseFloat(String(e??"").replace(/[^0-9.\-]/g,""));return isNaN(t)?null:t},Zr=e=>e&&typeof e=="object"?e.value??e.label??"":e??"",Jr={id:"doxa-research-dashboard",get title(){return Se("dashboard.dashboard_title")||"Big Picture Research Dashboard"},element:"doxa-research-dashboard",data:{source:"pray-tools",primaryKey:"slug"},facets:{prayer_level:{get label(){return Se("dashboard.prayer")||"Prayer"},get:e=>{const t=e==null?void 0:e.people_praying,o=t&&typeof t=="object"?t.value:t;return na[yn({peoplePraying:o??null})]}},religion:{get label(){return Se("dashboard.religion")||"Religion"},get:e=>st(e.religion)},religion_family:{get label(){return Se("dashboard.religion_family")||"Religion Family"},get:e=>{const t=e.religion&&typeof e.religion=="object"?e.religion.value:e.religion,o=String(t||"").charAt(0).toUpperCase();return o&&So[o]?So[o]:""},famKey:e=>{const t=e.religion&&typeof e.religion=="object"?e.religion.value:e.religion,o=String(t||"").charAt(0).toUpperCase();return So[o]?o:""}},wagf_region:{get label(){return Se("dashboard.region")||"Region"},get:e=>st(e.wagf_region)},wagf_block:{get label(){return Se("dashboard.bloc")||"Bloc"},get:e=>st(e.wagf_block)},country_code:{get label(){return Se("dashboard.country")||"Country"},get:e=>st(e.country_code),geoIso:e=>e.country_code&&e.country_code.value},engagement_status:{get label(){return Se("dashboard.status")||"Status"},get:e=>st(e.engagement_status)},gospel_access:{get label(){return Se("dashboard.gospel_access")||"Gospel Access"},get:e=>st(e.imb_gsec)},language_family:{get label(){return Se("dashboard.language_family")||"Language Family"},get:e=>{const t=st(e.imb_language_family);if(t)return _n(t);const o=e.primary_language&&typeof e.primary_language=="object"?e.primary_language.value:null,n=o&&hp[o];return n?_n(n):""}},primary_language:{get label(){return Se("dashboard.language")||"Language"},get:e=>st(e.primary_language)},affinity_bloc:{get label(){return Se("dashboard.people")||"People"},get:e=>Zr(e.rop1),optionLabel:e=>st(e.rop1)},cluster:{get label(){return Se("dashboard.cluster")||"Cluster"},get:e=>Zr(e.imb_reg_of_people_2)},people_group:{get label(){return Se("dashboard.people_group")||"People Group"},get:e=>Zr(e.imb_reg_of_people_25)},rop1_name:{get label(){return Se("dashboard.people_name")||"People (name)"},get:e=>st(e.rop1)}},facetRail:[{id:"people",get title(){return Se("dashboard.people")||"People"},axis:"people",drill:["affinity_bloc","cluster","people_group"],tree:"affinity",topN:[30,40,60]},{id:"place",get title(){return Se("dashboard.place")||"Place"},axis:"place",drill:["wagf_region","wagf_block","country_code"]},{id:"language",get title(){return Se("dashboard.language")||"Language"},axis:"language",drill:["language_family","primary_language"]},{id:"religion",get title(){return Se("dashboard.religion")||"Religion"},axis:"religion",drill:["religion_family","religion"],topN:[12,24]},{id:"gospel-access",get title(){return Se("dashboard.gospel_access")||"Gospel Access"},axis:null,facet:"gospel_access",topN:8}],kpis:[{id:"total",get label(){return Se("dashboard.upgs_in_scope")||"UPGs in scope"},kind:"count",showDelta:!0},{id:"pop",get label(){return Se("dashboard.sum_population")||"Σ population"},kind:"sum",field:"population"},{id:"unreached",get label(){return Se("dashboard.unreached")||"unreached"},kind:"pct",test:e=>!/engaged/i.test(st(e.engagement_status))||/unengaged/i.test(st(e.engagement_status))},{id:"countries",get label(){return Se("dashboard.countries_touched")||"countries touched"},kind:"distinct",field:"country_code",via:"geoIso"},{id:"praying",get label(){return Se("dashboard.sum_praying")||"Σ praying"},kind:"sum",field:"people_praying"},{id:"adopted",get label(){return Se("dashboard.adopted")||"adopted"},kind:"pct",test:e=>Number(e.adopted_by_churches)>0}],columns:[{key:"name",get label(){return Se("dashboard.people_group")||"People Group"},get:e=>e.name||"",type:"str",w:1.34},{key:"country",get label(){return Se("dashboard.country")||"Country"},get:e=>st(e.country_code),type:"str",w:1.04},{key:"region",get label(){return Se("dashboard.region")||"Region"},get:e=>st(e.wagf_region),type:"str",w:1.04},{key:"language",get label(){return Se("dashboard.language")||"Language"},get:e=>st(e.primary_language),type:"str",w:1.04},{key:"religion",get label(){return Se("dashboard.religion")||"Religion"},get:e=>st(e.religion),type:"str",w:1.04},{key:"population",get label(){return Se("dashboard.population")||"Population"},get:e=>mp(e.population),type:"num",w:.86},{key:"people_praying",get label(){return Se("dashboard.praying")||"Praying"},get:e=>mp(e.people_praying),type:"num",w:.66},{key:"engagement",get label(){return Se("dashboard.engagement")||"Engagement"},get:e=>st(e.engagement_status),type:"str",w:.97}],map:{provider:"mapbox",mapStyle:"galaxy",heartbeatThreshold:150,binThresholds:[5,20,60],heartbeatMode:"fixed",heartbeatQuantile:.1,colorRamp:"greyscale"},charts:[{id:"religion",type:"donut",facet:"religion_family",get title(){return Se("dashboard.religion")||"Religion"},topN:8},{id:"region",type:"donut",facet:"wagf_region",get title(){return Se("dashboard.region")||"Region"},topN:9},{id:"country",type:"bar",facet:"country_code",title:"Top countries",topN:12}],detail:{photo:e=>e.has_photo&&e.image_url,fields:["religion","primary_language","people_praying","adopted_by_churches","engagement_status"]},researchFilters:{dropdowns:["prayer_level","affinity_bloc","wagf_region","wagf_block","country_code","primary_language","religion"],get searchPlaceholder(){return Se("dashboard.search_placeholder")||"Search people groups, place, language, religion…"}},searchKeys:["name","rop1_name","wagf_region","wagf_block","country_code","primary_language","religion","engagement_status"],search:[{id:"people",get label(){return Se("dashboard.search_people")||"Search people"},context:"people-groups",kinds:["affinity-bloc","cluster","people-group"]},{id:"place",get label(){return Se("dashboard.search_place")||"Search place"},context:"regions",kinds:["region","country"]},{id:"language",get label(){return Se("dashboard.search_language")||"Search language"},context:"language",kinds:["language-family","language","dialect"]},{id:"religion",get label(){return Se("dashboard.search_religion")||"Search religion"},context:"religion",kinds:["religion"]}]},pw=["data-row-count","data-loading","data-error","data-narrow"],dw={class:"rd-stats","data-region":"stats","data-sub":"stat-strip"},gw=["data-kpi"],fw={class:"l"},hw={key:0,class:"d","data-kpi-delta":""},mw={class:"rd-cell-map","data-region":"map"},$w=["title"],bw=["title"],_w={class:"rd-cell-table","data-region":"table"},yw={class:"rd-rail","data-region":"rail"},vw=["aria-valuenow"],kw=["aria-valuenow"],ww=["title","aria-label","aria-valuenow","aria-valuemin","aria-valuemax"],xw=["aria-valuenow"],Sw=["data-view"],Lw={__name:"research-dashboard",emits:["dashboard-filter"],setup(e,{emit:t}){const o=Ie("profileConfig",pe(null)),n=re(()=>{const oe=he(o);if(!oe||typeof oe!="object")return Jr;const fe={...Jr,...oe};return oe.map&&typeof oe.map=="object"&&(fe.map={...Jr.map,...oe.map}),fe}),a=re(()=>{var oe;return((oe=he(o))==null?void 0:oe.layout)==="page-scroll"}),{bus:s,data:r,kpis:i,exporter:l,responsive:c}=Cv(n.value),u=t;rt(()=>{var oe;return{filters:{...s.filterSet},q:((oe=s.searchTerm)==null?void 0:oe.value)||""}},({filters:oe,q:fe})=>u("dashboard-filter",{filterSet:oe,searchTerm:fe}),{deep:!0});const d=r.total,f=r.loading,v=r.error,{shell:L,isNarrow:k,slimRail:x,slimFacet:C,mobileView:h,SEG:m,tableCollapsed:p,facetCollapsed:b,railCollapsed:A,setView:w,showFacets:M,showMap:U,showTable:ne,showCharts:B}=c,{startFacetResize:Y,startRailResize:ge,startTableResize:I,startShellResize:Q,onResizeKeydown:H,facetW:G,railW:ie,tableH:F,mapH:O,shellH:V}=Rv({shellRef:L,bus:s,isNarrow:k,pageScroll:a,storageKey:"rd-dashboard-layout"});function D(oe){return oe.kind==="pct"?oe.value:oe.kind==="distinct"?oe.value||"—":Qu(oe.value)}const ae=re(()=>{var oe;return(oe=s.selectionVersion)==null||oe.value,s.selectionSet?s.selectionSet.size:0});function me(){l.exportCsvAsync()}function we(){s.clearSelection()}function Le(){s.emit("toggleFacet",!b.value)}function Ae(){s.emit("toggleRail",!A.value)}function ve(oe){const fe=oe.target&&oe.target.closest&&oe.target.closest("[data-bar-export],[data-bar-clear]");fe&&(fe.hasAttribute("data-bar-export")?me():we())}return Ot(` ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc :host{ display:block; width:100%; height:100%; min-height:560px; box-sizing:border-box; --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --dx-surface:#f3f3f1; --dx-elevated:#ffffff; --dx-text:#3b463d; --dx-muted:#6d766e; @@ -894,8 +800,4 @@ .rd-shell ::-webkit-scrollbar-thumb{ background:var(--dx-scroll-thumb, #c4c8c0); border-radius:8px; } .rd-shell ::-webkit-scrollbar-thumb:hover{ background:#9aa197; } .rd-shell ::-webkit-scrollbar-corner{ background:transparent; } -<<<<<<< HEAD `,"rd-shell-layout"),vt(()=>{const oe=L.value&&L.value.getRootNode&&L.value.getRootNode().host;if(!oe)return;const fe=ye=>oe.setAttribute("data-page-scroll",ye?"true":"false");fe(he(a)),rt(()=>he(a),fe)}),(oe,fe)=>(H(),Z("div",{ref_key:"shell",ref:L,class:He(["rd-shell",{"rd-narrow":he(k),"rd-slim-rail":he(x),"rd-slim-facet":he(C),"rd-table-collapsed":he(p),"rd-facet-collapsed":he(b),"rd-rail-collapsed":he(A),"rd-page-scroll":a.value}]),"data-row-count":he(d),"data-loading":he(f)?"1":"0","data-error":he(v)||"","data-narrow":he(k)?"1":"0"},[Ge(he(y0)),Ge(he(dw)),T("div",fw,[(H(!0),Z(Ce,null,tt(he(i),ye=>(H(),Z("div",{class:"kpi",key:ye.id},[T("span",{class:"n","data-kpi":ye.id},ue(ye.kind==="count"&&he(f)?"…":D(ye)),9,hw),T("span",mw,ue(ye.label),1),ye.delta?(H(),Z("span",$w,"↓"+ue(he(Qu)(ye.delta)),1)):Me("",!0)]))),128))]),It(Ge(he(D0),null,null,512),[[qt,he(M)]]),It(T("div",bw,[Ge(he(qk)),he(k)?Me("",!0):(H(),Z("button",{key:0,class:"rd-edge-caret rd-edge-facet",type:"button","data-toggle-facet":"",title:he(b)?"Show filters":"Hide filters — grow the map",onClick:Le},ue(he(b)?"▸":"◂"),9,_w)),he(k)?Me("",!0):(H(),Z("button",{key:1,class:"rd-edge-caret rd-edge-rail",type:"button","data-toggle-rail":"",title:he(A)?"Show charts":"Hide charts — grow the map",onClick:Ae},ue(he(A)?"◂":"▸"),9,yw))],512),[[qt,he(U)]]),It(T("div",vw,[Ge(he(c1))],512),[[qt,he(ne)]]),It(T("aside",kw,[Ge(he(Q1)),Ge(he(A1))],512),[[qt,he(B)]]),It(T("div",{class:"rd-rz rd-rz-facet","data-resize":"facet",role:"separator","aria-orientation":"vertical",tabindex:"0",title:"Drag or use arrow keys to resize the filters rail","aria-label":"Resize filters rail","aria-valuenow":he(G),"aria-valuemin":"160","aria-valuemax":"420",onPointerdown:fe[0]||(fe[0]=(...ye)=>he(X)&&he(X)(...ye)),onKeydown:fe[1]||(fe[1]=ye=>he(W)("facet",ye))},null,40,ww),[[qt,!he(k)&&!he(b)]]),It(T("div",{class:"rd-rz rd-rz-rail","data-resize":"rail",role:"separator","aria-orientation":"vertical",tabindex:"0",title:"Drag or use arrow keys to resize the charts rail","aria-label":"Resize charts rail","aria-valuenow":he(ae),"aria-valuemin":"200","aria-valuemax":"520",onPointerdown:fe[2]||(fe[2]=(...ye)=>he(pe)&&he(pe)(...ye)),onKeydown:fe[3]||(fe[3]=ye=>he(W)("rail",ye))},null,40,xw),[[qt,!he(k)&&!he(A)]]),It(T("div",{class:"rd-rz rd-rz-table","data-resize":"table",role:"separator","aria-orientation":"horizontal",tabindex:"0",title:a.value?"Drag or use arrow keys to resize the map/table split":"Drag or use arrow keys to resize the table","aria-label":a.value?"Resize map/table split":"Resize table height","aria-valuenow":a.value?he(O):parseFloat(he(F))||34,"aria-valuemin":a.value?220:12,"aria-valuemax":a.value?1400:70,onPointerdown:fe[4]||(fe[4]=(...ye)=>he(I)&&he(I)(...ye)),onKeydown:fe[5]||(fe[5]=ye=>he(W)("table",ye))},null,40,Sw),[[qt,!he(k)&&!he(p)]]),It(T("div",{class:"rd-rz rd-rz-shell","data-resize":"shell",role:"separator","aria-orientation":"horizontal",tabindex:"0",title:"Drag or use arrow keys to resize the dashboard's height","aria-label":"Resize dashboard height","aria-valuenow":he(V),"aria-valuemin":"400","aria-valuemax":"2600",onPointerdown:fe[6]||(fe[6]=(...ye)=>he(J)&&he(J)(...ye)),onKeydown:fe[7]||(fe[7]=ye=>he(W)("shell",ye))},null,40,Lw),[[qt,!he(k)&&a.value]]),T("div",{class:"rd-seg","data-segmented":"",onClick:fe[8]||(fe[8]=(...ye)=>he(w)&&he(w)(...ye))},[(H(!0),Z(Ce,null,tt(he(h),ye=>(H(),Z("button",{key:ye.k,class:He({on:he(m)===ye.k}),"data-view-btn":"","data-view":ye.k},ue(ye.l),11,Aw))),128))]),se.value?(H(),Z("div",{key:0,class:"rd-exportbar","data-export-bar":"",onClick:ke},[T("b",null,ue(se.value)+" selected",1),fe[9]||(fe[9]=T("span",{class:"sp"},null,-1)),fe[10]||(fe[10]=T("button",{class:"x-clr","data-bar-clear":""},"Clear",-1)),fe[11]||(fe[11]=T("button",{class:"x-go","data-bar-export":""},"Export CSV ↓",-1))])):Me("",!0)],10,gw))}};function Ew(e,t){return String(t||e||"").trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}const Cw=":host{display:block;width:100%;--dx-surface: #f3f3f1;--dx-elevated: #ffffff;--dx-text: #3b463d;--dx-muted: #6d766e;--dx-line: #d1d4cd;--dx-accent: #92b195;--dx-accent-weak: rgba(146, 177, 149, .18);--dx-accent-soft: rgba(146, 177, 149, .1);--dx-accent-strong: #657967}.pgg-root{--brand: var(--dx-accent, #92b195);--ink: var(--dx-text, #3b463d);--mut: var(--dx-muted, #6d766e);--line: var(--dx-line, #d1d4cd);--card: var(--dx-elevated, #fff);--bg: var(--dx-surface, #f3f3f1);width:100%;box-sizing:border-box;color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;padding:16px}.filters{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;padding-block:18px 8px;min-height:190px}.pgg-search{display:flex;justify-content:center}.pgg-search--repel{gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between;width:100%;max-width:600px;margin-inline:auto}.pgg-search--repel>:first-child{flex:1 1 320px;min-width:0}.pgg-exact{flex:none}.filters__toggle{background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--dx-text, #3b463d);padding:7px 12px;display:inline-flex;align-items:center;gap:7px;margin-inline:auto;transition:background-color .15s ease,border-color .15s ease}.filters__toggle:hover{background:var(--dx-accent-weak, rgba(146,177,149,.18));border-color:var(--dx-accent, #92b195)}.filters__toggle:focus-visible{outline:2px solid var(--dx-accent, #92b195);outline-offset:2px}.filters__toggle-icon{color:var(--dx-accent, #92b195);flex:none}.filters__toggle-count{background:var(--dx-accent, #92b195);color:#fff;border-radius:999px;min-width:18px;padding:0 5px;font-size:.75rem;line-height:18px;text-align:center}.filters__toggle[aria-expanded=true] svg{transform:rotate(180deg)}.filters__panel{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:flex-start}.filter-toggle{padding:6px 12px;cursor:pointer;font-size:.875rem;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px;transition:border-color .15s ease,background .15s ease}.filter-toggle:hover{border-color:var(--brand)}.filter-toggle[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--brand);color:var(--ink)}.filters__active{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center}.filter-chip{display:inline-flex;gap:6px;align-items:center;background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));color:var(--ink);border:1px solid var(--line);border-radius:100px;padding:4px 12px;font-size:.85rem}.filter-chip__remove{background:none;border:none;cursor:pointer;font-size:1.1em;line-height:1;color:inherit;padding:0;display:inline-flex;align-items:center}.filter-chip__remove:hover{opacity:.7}.filters__clear-all{background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--ink);text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:4px}.repel{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.font-size-sm{font-size:.875rem;color:var(--mut)}.grid.uupgs-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.card.uupg__card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px #0000000a}.uupg__image{width:100%;aspect-ratio:1 / 1;object-fit:cover;background:var(--line)}.uupg__header{padding:12px 14px 6px}.uupg__name{font-size:1rem;font-weight:700;line-height:1.2;margin:0 0 4px}.uupg__country{font-size:.85rem;color:var(--mut);margin:0}.uupg__country-link{color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:1px;text-underline-offset:2px}.uupg__country-link:hover{text-decoration-thickness:2px}.uupg__match{font-size:.8rem;color:var(--mut);margin:4px 0 0}.uupg__content{padding:0 14px;font-size:.85rem;color:var(--mut)}.uupg__more-button{margin:12px 14px 14px;padding:8px 12px;text-align:center;font-size:.85rem;font-weight:700;color:var(--dx-elevated, #fff);background:var(--dx-accent-strong, #657967);border-radius:8px;text-decoration:none}.uupg__more-button:hover{background:var(--dx-text, #3b463d)}.search-highlight{background:#fde68a;border-radius:2px;padding:0 1px}.loading,.pgg-empty{grid-column:1 / -1;padding:28px;text-align:center;color:var(--mut);font-size:.9rem}.pgg-failed{font-weight:600;border-top:1px solid var(--bd, #d1d4cd)}.pgg-loadmore{display:block;margin:20px auto 0;padding:8px 18px;font-size:.9rem;cursor:pointer;color:var(--ink);background:var(--card);border:1px solid var(--brand);border-radius:8px}.pgg-loadmore:hover{background:var(--dx-accent-soft, rgba(146, 177, 149, .1))}",Nw={class:"pgg-root"},Tw={key:0,class:"pgg-search pgg-search--repel"},Rw=["data-active"],Mw=["aria-expanded"],Ow={key:0,class:"filters__toggle-count"},Fw={key:2,class:"filters__panel"},Iw={key:3,class:"filters__active"},Dw=["onClick"],Uw={class:"pgg-body"},Gw={key:0,class:"repel"},jw={class:"font-size-sm"},zw={key:1},Bw={id:"results",class:"grid uupgs-list"},Vw=["src","alt"],qw={class:"uupg__header"},Hw=["innerHTML"],Ww={key:0,class:"uupg__country"},Kw=["href"],Yw=["innerHTML"],Xw=["innerHTML"],Zw=["innerHTML"],Jw={key:1,class:"uupg__content"},Qw=["href"],ex={key:0,class:"loading"},tx={key:1,class:"pgg-empty pgg-failed",role:"status"},ox={key:2,class:"pgg-empty"},nx=Sn(Object.assign({inheritAttrs:!1},{__name:"people-groups-grid",props:{profileConfig:{type:String,default:""},prayBaseUrl:{type:String,default:""},languageCode:{type:String,default:""},researchUrl:{type:String,default:""},selectUrl:{type:String,default:""},t:{type:Object,default:()=>({})},showSearch:{type:[Boolean,String],default:!0},showFilters:{type:[Boolean,String],default:!0},showTotal:{type:[Boolean,String],default:!0},query:{type:String,default:""},wagfRegion:{type:String,default:""},wagfBlock:{type:String,default:""},rop1:{type:String,default:""},religion:{type:String,default:""},countryCode:{type:String,default:""},primaryLanguage:{type:String,default:""},cluster:{type:String,default:""},peopleGroup:{type:String,default:""},engagementStatus:{type:String,default:""},gospelAccess:{type:String,default:""},religionFamily:{type:String,default:""},languageFamily:{type:String,default:""},perPage:{type:Number,default:24},morePerPage:{type:Number,default:0}},emits:["groups-filtered"],setup(e,{emit:t}){const o=e,n=t,a=re(()=>{if(!o.profileConfig)return{};try{return JSON.parse(o.profileConfig)||{}}catch{return{}}}),s=re(()=>!d.value&&!f.value?null:{backgroundImage:`url(${Hu(a.value)}/images/worldmap.svg)`,backgroundSize:"60%",backgroundPosition:"top center",backgroundRepeat:"no-repeat"}),r=re(()=>o.prayBaseUrl||a.value.prayBaseUrl||"https://pray.doxa.life"),i=re(()=>o.languageCode||a.value.languageCode||""),l=re(()=>o.researchUrl||a.value.researchUrl||(typeof window<"u"&&window.DOXA_SITE_URL||"https://doxa.life").replace(/\/+$/,"")+"/research/"),c=re(()=>{const y={...a.value.t||{},...o.t||{}},E=a.value.locale||a.value.lang||void 0;return new Proxy(y,{get(q,K){if(K in q)return q[K];if(typeof K=="string")return Se("grid."+K,E)}})}),u=y=>!(y===!1||y==="false"||y==="0"||y===0),d=re(()=>u(o.showSearch)),f=re(()=>u(o.showFilters)),v=re(()=>u(o.showTotal)),L=de([]),k=de([]),x=de(0),C=de(1),m=de(!0),h=de(!1),p=de(!0),b=de({}),A=de(""),w=de({}),M=re(()=>d.value?A.value:o.query||""),U=re(()=>{const y={},E=q=>q;return o.wagfRegion&&(y.wagf_region={value:o.wagfRegion,label:E(o.wagfRegion)}),o.wagfBlock&&(y.wagf_block={value:o.wagfBlock,label:E(o.wagfBlock)}),o.rop1&&(y.rop1={value:o.rop1,label:E(o.rop1)}),o.religion&&(y.religion={value:o.religion,label:E(o.religion)}),o.countryCode&&(y.country_code={value:o.countryCode,label:E(o.countryCode)}),o.primaryLanguage&&(y.primary_language={value:o.primaryLanguage,label:E(o.primaryLanguage)}),o.engagementStatus&&(y.engagement_status={value:o.engagementStatus,label:E(o.engagementStatus)}),o.cluster&&(y.imb_reg_of_people_2={value:o.cluster,label:E(o.cluster)}),o.peopleGroup&&(y.imb_reg_of_people_25={value:o.peopleGroup,label:E(o.peopleGroup)}),o.gospelAccess&&(y.imb_gsec={value:o.gospelAccess,label:E(o.gospelAccess)}),o.religionFamily&&(y.__religion_family={value:o.religionFamily,label:E(o.religionFamily)}),o.languageFamily&&(y.__language_family={value:o.languageFamily,label:E(o.languageFamily)}),y}),ne=re(()=>f.value?w.value:U.value);rt(()=>o.wagfRegion,y=>{if(!f.value)return;const E=w.value.wagf_region;if(y){if(E&&E.value===y)return;const q=(b.value&&b.value.wagf_region||[]).find(K=>K.value===y);w.value={...w.value,wagf_region:{value:y,label:q&&q.label||y}}}else if(E){const q={...w.value};delete q.wagf_region,w.value=q}}),rt(()=>o.religionFamily,y=>{if(!f.value)return;const E=w.value.__religion_family;if(y){if(E&&me(E.value)===me(y))return;w.value={...w.value,__religion_family:{value:y,label:y}}}else if(E){const q={...w.value};delete q.__religion_family,w.value=q}}),rt(()=>o.primaryLanguage,y=>{if(!f.value)return;const E=w.value.primary_language;if(y){if(E&&me(E.value)===me(y))return;w.value={...w.value,primary_language:{value:y,label:y}}}else if(E){const q={...w.value};delete q.primary_language,w.value=q}});const B=re(()=>Object.values(ne.value||{}).filter(y=>y&&y.value!==""&&y.value!=null).length),X=re(()=>Object.keys(ne.value).length),pe=re(()=>B.value>0||!!(M.value||"").trim());function I(y){return y.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function J(y,E=500){let q;return(...K)=>{clearTimeout(q),q=setTimeout(()=>y(...K),E)}}const W=J(()=>{m.value=!0,C.value=1,_()},500);function G(y){A.value=(y==null?void 0:y.value)??"",W()}function ae(){p.value=!p.value}function F(y){w.value={...w.value,[y.name]:{value:y.value,label:y.label}},C.value=1,_()}function O(y){V(y.name)}function V(y){const E={...w.value};delete E[y],w.value=E,C.value=1,_()}function D(){w.value={},C.value=1,_()}function se(){if(w.value.exact)return V("exact");w.value={...w.value,exact:{value:"yes",label:c.value.exact_filter||"Exact"}},C.value=1,_()}const me=y=>String(y??"").toLowerCase().replace(/[\s_&-]+/g,""),we={__religion_family:y=>{const E=y.religion&&typeof y.religion=="object"?y.religion.value:y.religion,q=String(E||"").charAt(0).toUpperCase(),K=q&&So[q]?So[q]:"";return K?{value:K,label:K}:null},__language_family:y=>{const E=y.imb_language_family,q=E&&typeof E=="object"?E.label||E.value:E;let K="";if(q)K=_n(q);else{const R=y.primary_language&&typeof y.primary_language=="object"?y.primary_language.value:null,j=R&&hp[R];K=j?_n(j):""}return K?{value:K,label:K}:null}},Le=(y,E)=>we[E]?we[E](y):y[E];function Ae(y,E){if(!y)return!1;const q=me(E==null?void 0:E.value);return q?me(y.value)===q||me(y.label)===q:!1}function ke(y){let E=y;for(const[q,K]of Object.entries(ne.value))q==="exact"?E=E:E=E.filter(R=>Ae(Le(R,q),K));return E}function oe(){const y=E=>{const q=new Map;for(const K of L.value){const R=K[E];if(!(R!=null&&R.value))continue;const j=q.get(R.value);j?j.count++:q.set(R.value,{label:R.label,count:1})}return Array.from(q.entries()).map(([K,{label:R,count:j}])=>({value:K,label:R,count:j})).sort((K,R)=>K.label.localeCompare(R.label))};b.value={wagf_region:y("wagf_region"),wagf_block:y("wagf_block"),rop1:y("rop1"),religion:y("religion")}}function fe(){const y=Object.keys(b.value),E={};for(const q of y){const K={};for(const[le,ve]of Object.entries(ne.value))le!==q&&(K[le]=ve);const R=ye(K,L.value),j=new Map;for(const le of R){const ve=le[q];ve!=null&&ve.value&&j.set(ve.value,(j.get(ve.value)??0)+1)}E[q]=(b.value[q]??[]).map(le=>({...le,count:j.get(le.value)??0}))}b.value=E}function ye(y,E){let q=E;for(const[K,R]of Object.entries(y))K!=="exact"&&(q=q.filter(j=>Ae(Le(j,K),R)));return q}function _(){L.value=L.value.map(j=>(j.matches=[],j.country_label="",j.rop1_label="",j));const E=Object.keys(ne.value).length>0?ke(L.value):L.value,q=M.value;if(!q){k.value=E,x.value=k.value.length,m.value=!1,fe(),z();return}const R=new rv(E,{includeMatches:!0,ignoreLocation:!0,minMatchCharLength:3,threshold:ne.value.exact?0:.4,keys:["name","imb_alternate_name","country_code.label","rop1.label","religion.label","wagf_region.label","wagf_block.label"]}).search(q);k.value=R.map(j=>{var ve;const le={...j.item};if(!j.matches)return le;le.matches=[];for(const Ue of j.matches){const qe=Ue.key;if(!qe)continue;let je="";if(String(qe).includes(".")){const[gt,mt]=String(qe).split(".");je=(ve=le[gt])==null?void 0:ve[mt]}else je=le[String(qe)];if(je&&typeof je=="string"){let gt=0,mt="";if(Ue.indices.forEach((Qe,Y)=>{const $e=Qe[0],be=Qe[1],ze=Ue.indices.length-1===Y;mt+=I(je.slice(gt,$e))+`${I(je.slice($e,be+1))}`+(ze?I(je.slice(be+1)):""),gt=be+1}),String(qe).includes("imb_alternate_name"))le.matches.push({key:c.value.alternate_name??"Also known as",label:mt});else if(String(qe).includes(".")){const[Qe]=String(qe).split("."),Y={religion:c.value.religion,country_code:c.value.country,rop1:c.value.rop1,wagf_region:c.value.wagf_region,wagf_block:c.value.wagf_block};Qe==="rop1"?le.rop1_label=mt:Qe==="country_code"?le.country_label=mt:Qe==="wagf_region"||le.matches.push({key:Y[Qe]??Qe,label:mt})}else le[String(qe)]=mt}}return le}),x.value=k.value.length,m.value=!1,fe(),z()}const P=Ro();function S(){var E,q;const y=((E=P==null?void 0:P.vnode)==null?void 0:E.el)||((q=P==null?void 0:P.proxy)==null?void 0:q.$el);try{const K=y&&y.getRootNode&&y.getRootNode();if(K&&K.host)return K.host}catch{}return y}function z(){const y={query:M.value,activeFilters:ne.value,total:x.value,slugs:k.value.map(q=>q.slug)};n("groups-filtered",y);const E=S();E&&typeof E.dispatchEvent=="function"&&E.dispatchEvent(new CustomEvent("groups-filtered",{detail:y,bubbles:!0,composed:!0}))}function ee(){return o.morePerPage>0?x.value>o.perPage+(C.value-1)*o.morePerPage&&!m.value&&k.value.length>0:x.value>C.value*o.perPage&&!m.value&&k.value.length>0}function te(){C.value=C.value+1}const ce=re(()=>o.morePerPage>0?k.value.slice(0,o.perPage+(C.value-1)*o.morePerPage):k.value.slice(0,C.value*o.perPage)),ie=re(()=>ee());async function g(){const y=`${r.value}/api/people-groups/list?fields=name,slug,wagf_region,wagf_block,country_code,rop1,religion,has_photo,image_url,adopted_by_churches,imb_alternate_name,engagement_status,people_committed,primary_language,imb_reg_of_people_2,imb_reg_of_people_25,imb_gsec,imb_language_family&lang=${i.value}`;m.value=!0,h.value=!1;try{const E=await fetch(y);if(!E.ok)throw new Error(`HTTP ${E.status}`);const q=await E.json();x.value=q.total,L.value=Array.isArray(q.posts)?q.posts:[],oe(),_()}catch(E){console.error("[people-groups-grid] fetch error:",E),h.value=!0,L.value=[],m.value=!1}}rt(()=>[o.query,U.value,d.value,f.value],()=>{C.value=1,_()});function $(y){const E=new Set;for(const q of L.value||[]){const K=Le(q,y),R=K&&typeof K=="object"?K.label:K;typeof R=="string"&&R&&E.add(R)}return[...E].sort()}return vt(()=>{const y=S();y&&(y.__vocabulary=$),typeof window<"u"&&(window.__peopleGroupsGridVocabulary=$),g()}),(y,E)=>{var q,K,R,j;return H(),Z("div",Nw,[d.value||f.value?(H(),Z("div",{key:0,id:"filters",class:"filters",style:lt(s.value)},[d.value?(H(),Z("div",Tw,[Ge(qr,{"model-value":A.value,placeholder:c.value.search||"Search people groups…","aria-label":c.value.search||"Search people groups","max-width":"480px",onSearch:G},null,8,["model-value","placeholder","aria-label"]),f.value?(H(),Z("button",{key:0,class:"filter-toggle pgg-exact",type:"button","data-active":ne.value.exact?"":void 0,onClick:se},ue(c.value.exact_filter||"Exact"),9,Rw)):Me("",!0)])):Me("",!0),f.value?(H(),Z("button",{key:1,class:"filters__toggle",type:"button","aria-expanded":p.value,onClick:ae},[E[0]||(E[0]=T("svg",{class:"filters__toggle-icon",width:"13",height:"13",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[T("path",{d:"M1.5 2.5h9M3 6h6M4.5 9.5h3",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})],-1)),ut(" "+ue(p.value?c.value.hide_filters||"Hide Filters":c.value.show_filters||"Show Filters")+" ",1),B.value?(H(),Z("span",Ow,ue(B.value),1)):Me("",!0),E[1]||(E[1]=T("svg",{width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[T("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,Mw)):Me("",!0),f.value&&p.value?(H(),Z("div",Fw,[Ge(pa,{label:c.value.wagf_region||"Region",name:"wagf_region",options:b.value.wagf_region||[],value:((q=ne.value.wagf_region)==null?void 0:q.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"]),Ge(pa,{label:c.value.wagf_block||"Bloc",name:"wagf_block",options:b.value.wagf_block||[],value:((K=ne.value.wagf_block)==null?void 0:K.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"]),Ge(pa,{label:c.value.rop1||"People Group",name:"rop1",options:b.value.rop1||[],value:((R=ne.value.rop1)==null?void 0:R.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"]),Ge(pa,{label:c.value.religion||"Religion",name:"religion",options:b.value.religion||[],value:((j=ne.value.religion)==null?void 0:j.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"])])):Me("",!0),f.value&&X.value>0?(H(),Z("div",Iw,[(H(!0),Z(Ce,null,tt(ne.value,(le,ve)=>(H(),Z("span",{key:ve,class:"filter-chip"},[ut(ue(le.label)+" ",1),T("button",{class:"filter-chip__remove",type:"button",onClick:Ue=>V(String(ve))},"×",8,Dw)]))),128)),T("button",{class:"filters__clear-all",type:"button",onClick:D},ue(c.value.clear_all||"Clear All"),1)])):Me("",!0)],4)):Me("",!0),T("div",Uw,[v.value||pe.value?(H(),Z("div",Gw,[T("div",jw,[m.value?(H(),Z("span",zw," ")):(H(),Z(Ce,{key:0},[ut(ue(pe.value&&!v.value?(c.value.showing||"Showing")+" "+x.value.toLocaleString("en-US"):(c.value.total||"Total")+": "+x.value.toLocaleString("en-US")),1)],64))])])):Me("",!0),T("div",Bw,[(H(!0),Z(Ce,null,tt(ce.value,le=>(H(),Z("div",{key:le.slug,class:"card uupg__card"},[le.image_url?(H(),Z("img",{key:0,class:"uupg__image",src:le.image_url,alt:le.name},null,8,Vw)):Me("",!0),T("div",qw,[T("h3",{class:"uupg__name",innerHTML:le.name},null,8,Hw),le.country_code?(H(),Z("p",Ww,[T("a",{class:"uupg__country-link",href:`${l.value}../countries/${he(Ew)(le.country_code.value,le.country_code.label)}`},[T("span",{innerHTML:le.country_label?le.country_label:le.country_code.label},null,8,Yw)],8,Kw),le.rop1?(H(),Z(Ce,{key:0},[E[2]||(E[2]=ut(" (",-1)),T("span",{innerHTML:le.rop1_label?le.rop1_label:le.rop1.label},null,8,Xw),E[3]||(E[3]=ut(")",-1))],64)):Me("",!0)])):Me("",!0),le.matches?(H(!0),Z(Ce,{key:1},tt(le.matches,(ve,Ue)=>(H(),Z("p",{key:Ue,class:"uupg__match"},[T("strong",null,ue(ve.key),1),E[4]||(E[4]=ut(": ",-1)),T("span",{innerHTML:ve.label},null,8,Zw)]))),128)):Me("",!0)]),le.location_description?(H(),Z("p",Jw,ue(le.location_description),1)):Me("",!0),T("a",{class:"uupg__more-button",href:`${l.value}${le.slug}`},ue(c.value.full_profile||"Full Profile"),9,Qw)]))),128)),m.value?(H(),Z("div",ex,ue(c.value.loading||"Loading…"),1)):h.value?(H(),Z("div",tx,ue(c.value.load_failed||"People-group data could not be loaded. This is a connection problem, not your filter."),1)):ce.value.length?Me("",!0):(H(),Z("div",ox,ue(c.value.no_results||"No people groups match this filter."),1))]),ie.value?(H(),Z("button",{key:1,class:"pgg-loadmore",type:"button",onClick:te},ue(c.value.load_more||"Load More"),1)):Me("",!0)])])}}}),[["styles",[Cw]]]),ax=":host{display:block;width:100%}",sx="dashboard-plus-grid/dashboard-plus-grid/index.html",rx=Sn(Object.assign({inheritAttrs:!1},{__name:"dashboard-plus-grid",props:{profileConfig:{type:[String,Object],default:null}},setup(e){const t={wagf_region:"wagfRegion",wagf_block:"wagfBlock",affinity_bloc:"rop1",religion:"religion",country_code:"countryCode",primary_language:"primaryLanguage",engagement_status:"engagementStatus",cluster:"cluster",people_group:"peopleGroup",gospel_access:"gospelAccess",religion_family:"religionFamily",language_family:"languageFamily"},o=Bo({query:"",wagfRegion:"",wagfBlock:"",rop1:"",religion:"",countryCode:"",primaryLanguage:"",engagementStatus:"",cluster:"",peopleGroup:"",gospelAccess:"",religionFamily:"",languageFamily:""});function n({filterSet:L={},searchTerm:k=""}={}){o.query=k||"";for(const x of Object.values(t))o[x]="";for(const[x,C]of Object.entries(L)){const m=t[x];m&&(o[m]=C==null?"":String(C))}}const a=e,s=re(()=>{const L=a.profileConfig;if(!L)return{};if(typeof L=="object")return L;try{return JSON.parse(L)}catch{return{}}}),r=re(()=>{var k;const L=(k=s.value)==null?void 0:k.tk;return typeof L=="string"&&L?L:""});r.value&&Ku(r.value);const i=re(()=>{var k;const L=(k=s.value)==null?void 0:k.provider;return L==="maplibre"||L==="mapbox"?L:""}),l=re(()=>{var k,x;const L=String(((k=s.value)==null?void 0:k.lang)||((x=s.value)==null?void 0:x.locale)||"").split("-")[0].toLowerCase();return ts.includes(L)?L:""});ji(()=>{l.value&&pu(l.value)});const c=My(),u=re(()=>r.value||c.value||"");no("mapboxToken",u);const d=qu(null);no("profileConfig",re(()=>({profile:"research-dashboard",layout:"page-scroll",shareUrl:(d?d.replace(/\/+$/,"")+"/":"")+sx,...r.value?{tk:r.value}:{},...i.value?{provider:i.value}:{},...l.value?{lang:l.value}:{}})));const f=Fe("appI18n",null);ji(()=>{l.value&&f&&(f.global.locale.value=l.value)});const v=[{key:"dashboard"},{key:"grid"}];return(L,k)=>(H(),To(tv,{sections:v},{"section-dashboard":Co(()=>[Ge(Pw,{onDashboardFilter:n})]),"section-grid":Co(()=>[Ge(nx,{query:o.query,"wagf-region":o.wagfRegion,"wagf-block":o.wagfBlock,rop1:o.rop1,religion:o.religion,"country-code":o.countryCode,"primary-language":o.primaryLanguage,"engagement-status":o.engagementStatus,cluster:o.cluster,"people-group":o.peopleGroup,"gospel-access":o.gospelAccess,"religion-family":o.religionFamily,"language-family":o.languageFamily,"show-search":!1,"show-filters":!1,"show-total":!1},null,8,["query","wagf-region","wagf-block","rop1","religion","country-code","primary-language","engagement-status","cluster","people-group","gospel-access","religion-family","language-family"])]),_:1}))}}),[["styles",[ax]]]);$y({"./affinity-block.js":{default:Ly},"./doxa-region.js":{default:Cy}}),Mu();const ix=Fg(rx,{configureApp(e){e.use(Kg());const t=Z_();e.use(t),e.provide("appI18n",t)}});typeof customElements<"u"&&(customElements.get("dashboard-plus-grid")||customElements.define("dashboard-plus-grid",ix))})(); -======= -`,"rd-shell-layout"),vt(()=>{const oe=L.value&&L.value.getRootNode&&L.value.getRootNode().host;if(!oe)return;const fe=ye=>oe.setAttribute("data-page-scroll",ye?"true":"false");fe(he(a)),rt(()=>he(a),fe)}),(oe,fe)=>(W(),X("div",{ref_key:"shell",ref:L,class:qe(["rd-shell",{"rd-narrow":he(k),"rd-slim-rail":he(x),"rd-slim-facet":he(C),"rd-table-collapsed":he(p),"rd-facet-collapsed":he(b),"rd-rail-collapsed":he(A),"rd-page-scroll":a.value}]),"data-row-count":he(d),"data-loading":he(f)?"1":"0","data-error":he(v)||"","data-narrow":he(k)?"1":"0"},[je(he(_0)),je(he(uw)),T("div",dw,[(W(!0),X(Ce,null,tt(he(i),ye=>(W(),X("div",{class:"kpi",key:ye.id},[T("span",{class:"n","data-kpi":ye.id},ue(ye.kind==="count"&&he(f)?"…":D(ye)),9,gw),T("span",fw,ue(ye.label),1),ye.delta?(W(),X("span",hw,"↓"+ue(he(Qu)(ye.delta)),1)):Me("",!0)]))),128))]),It(je(he(I0),null,null,512),[[qt,he(M)]]),It(T("div",mw,[je(he(Bk)),he(k)?Me("",!0):(W(),X("button",{key:0,class:"rd-edge-caret rd-edge-facet",type:"button","data-toggle-facet":"",title:he(b)?"Show filters":"Hide filters — grow the map",onClick:Le},ue(he(b)?"▸":"◂"),9,$w)),he(k)?Me("",!0):(W(),X("button",{key:1,class:"rd-edge-caret rd-edge-rail",type:"button","data-toggle-rail":"",title:he(A)?"Show charts":"Hide charts — grow the map",onClick:Ae},ue(he(A)?"◂":"▸"),9,bw))],512),[[qt,he(U)]]),It(T("div",_w,[je(he(l1))],512),[[qt,he(ne)]]),It(T("aside",yw,[je(he(J1)),je(he(L1))],512),[[qt,he(B)]]),It(T("div",{class:"rd-rz rd-rz-facet","data-resize":"facet",role:"separator","aria-orientation":"vertical",tabindex:"0",title:"Drag or use arrow keys to resize the filters rail","aria-label":"Resize filters rail","aria-valuenow":he(G),"aria-valuemin":"160","aria-valuemax":"420",onPointerdown:fe[0]||(fe[0]=(...ye)=>he(Y)&&he(Y)(...ye)),onKeydown:fe[1]||(fe[1]=ye=>he(H)("facet",ye))},null,40,vw),[[qt,!he(k)&&!he(b)]]),It(T("div",{class:"rd-rz rd-rz-rail","data-resize":"rail",role:"separator","aria-orientation":"vertical",tabindex:"0",title:"Drag or use arrow keys to resize the charts rail","aria-label":"Resize charts rail","aria-valuenow":he(ie),"aria-valuemin":"200","aria-valuemax":"520",onPointerdown:fe[2]||(fe[2]=(...ye)=>he(ge)&&he(ge)(...ye)),onKeydown:fe[3]||(fe[3]=ye=>he(H)("rail",ye))},null,40,kw),[[qt,!he(k)&&!he(A)]]),It(T("div",{class:"rd-rz rd-rz-table","data-resize":"table",role:"separator","aria-orientation":"horizontal",tabindex:"0",title:a.value?"Drag or use arrow keys to resize the map/table split":"Drag or use arrow keys to resize the table","aria-label":a.value?"Resize map/table split":"Resize table height","aria-valuenow":a.value?he(O):parseFloat(he(F))||34,"aria-valuemin":a.value?220:12,"aria-valuemax":a.value?1400:70,onPointerdown:fe[4]||(fe[4]=(...ye)=>he(I)&&he(I)(...ye)),onKeydown:fe[5]||(fe[5]=ye=>he(H)("table",ye))},null,40,ww),[[qt,!he(k)&&!he(p)]]),It(T("div",{class:"rd-rz rd-rz-shell","data-resize":"shell",role:"separator","aria-orientation":"horizontal",tabindex:"0",title:"Drag or use arrow keys to resize the dashboard's height","aria-label":"Resize dashboard height","aria-valuenow":he(V),"aria-valuemin":"400","aria-valuemax":"2600",onPointerdown:fe[6]||(fe[6]=(...ye)=>he(Q)&&he(Q)(...ye)),onKeydown:fe[7]||(fe[7]=ye=>he(H)("shell",ye))},null,40,xw),[[qt,!he(k)&&a.value]]),T("div",{class:"rd-seg","data-segmented":"",onClick:fe[8]||(fe[8]=(...ye)=>he(w)&&he(w)(...ye))},[(W(!0),X(Ce,null,tt(he(m),ye=>(W(),X("button",{key:ye.k,class:qe({on:he(h)===ye.k}),"data-view-btn":"","data-view":ye.k},ue(ye.l),11,Sw))),128))]),ae.value?(W(),X("div",{key:0,class:"rd-exportbar","data-export-bar":"",onClick:ve},[T("b",null,ue(ae.value)+" selected",1),fe[9]||(fe[9]=T("span",{class:"sp"},null,-1)),fe[10]||(fe[10]=T("button",{class:"x-clr","data-bar-clear":""},"Clear",-1)),fe[11]||(fe[11]=T("button",{class:"x-go","data-bar-export":""},"Export CSV ↓",-1))])):Me("",!0)],10,pw))}};function Aw(e,t){return String(t||e||"").trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}const Pw=":host{display:block;width:100%;--dx-surface: #f3f3f1;--dx-elevated: #ffffff;--dx-text: #3b463d;--dx-muted: #6d766e;--dx-line: #d1d4cd;--dx-accent: #92b195;--dx-accent-weak: rgba(146, 177, 149, .18);--dx-accent-soft: rgba(146, 177, 149, .1);--dx-accent-strong: #657967}.pgg-root{--brand: var(--dx-accent, #92b195);--ink: var(--dx-text, #3b463d);--mut: var(--dx-muted, #6d766e);--line: var(--dx-line, #d1d4cd);--card: var(--dx-elevated, #fff);--bg: var(--dx-surface, #f3f3f1);width:100%;box-sizing:border-box;color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;padding:16px}.filters{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;padding-block:18px 8px;min-height:190px}.pgg-search{display:flex;justify-content:center}.pgg-search--repel{gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between;width:100%;max-width:600px;margin-inline:auto}.pgg-search--repel>:first-child{flex:1 1 320px;min-width:0}.pgg-exact{flex:none}.filters__toggle{background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--dx-text, #3b463d);padding:7px 12px;display:inline-flex;align-items:center;gap:7px;margin-inline:auto;transition:background-color .15s ease,border-color .15s ease}.filters__toggle:hover{background:var(--dx-accent-weak, rgba(146,177,149,.18));border-color:var(--dx-accent, #92b195)}.filters__toggle:focus-visible{outline:2px solid var(--dx-accent, #92b195);outline-offset:2px}.filters__toggle-icon{color:var(--dx-accent, #92b195);flex:none}.filters__toggle-count{background:var(--dx-accent, #92b195);color:#fff;border-radius:999px;min-width:18px;padding:0 5px;font-size:.75rem;line-height:18px;text-align:center}.filters__toggle[aria-expanded=true] svg{transform:rotate(180deg)}.filters__panel{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:flex-start}.filter-toggle{padding:6px 12px;cursor:pointer;font-size:.875rem;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px;transition:border-color .15s ease,background .15s ease}.filter-toggle:hover{border-color:var(--brand)}.filter-toggle[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--brand);color:var(--ink)}.filters__active{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center}.filter-chip{display:inline-flex;gap:6px;align-items:center;background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));color:var(--ink);border:1px solid var(--line);border-radius:100px;padding:4px 12px;font-size:.85rem}.filter-chip__remove{background:none;border:none;cursor:pointer;font-size:1.1em;line-height:1;color:inherit;padding:0;display:inline-flex;align-items:center}.filter-chip__remove:hover{opacity:.7}.filters__clear-all{background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--ink);text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:4px}.repel{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.font-size-sm{font-size:.875rem;color:var(--mut)}.grid.uupgs-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.card.uupg__card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px #0000000a}.uupg__image{width:100%;aspect-ratio:1 / 1;object-fit:cover;background:var(--line)}.uupg__header{padding:12px 14px 6px}.uupg__name{font-size:1rem;font-weight:700;line-height:1.2;margin:0 0 4px}.uupg__country{font-size:.85rem;color:var(--mut);margin:0}.uupg__country-link{color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:1px;text-underline-offset:2px}.uupg__country-link:hover{text-decoration-thickness:2px}.uupg__match{font-size:.8rem;color:var(--mut);margin:4px 0 0}.uupg__content{padding:0 14px;font-size:.85rem;color:var(--mut)}.uupg__more-button{margin:12px 14px 14px;padding:8px 12px;text-align:center;font-size:.85rem;font-weight:700;color:var(--dx-elevated, #fff);background:var(--dx-accent-strong, #657967);border-radius:8px;text-decoration:none}.uupg__more-button:hover{background:var(--dx-text, #3b463d)}.search-highlight{background:#fde68a;border-radius:2px;padding:0 1px}.loading,.pgg-empty{grid-column:1 / -1;padding:28px;text-align:center;color:var(--mut);font-size:.9rem}.pgg-failed{font-weight:600;border-top:1px solid var(--bd, #d1d4cd)}.pgg-loadmore{display:block;margin:20px auto 0;padding:8px 18px;font-size:.9rem;cursor:pointer;color:var(--ink);background:var(--card);border:1px solid var(--brand);border-radius:8px}.pgg-loadmore:hover{background:var(--dx-accent-soft, rgba(146, 177, 149, .1))}",Ew={class:"pgg-root"},Cw={key:0,class:"pgg-search pgg-search--repel"},Nw=["data-active"],Tw=["aria-expanded"],Rw={key:0,class:"filters__toggle-count"},Mw={key:2,class:"filters__panel"},Ow={key:3,class:"filters__active"},Fw=["onClick"],Iw={class:"pgg-body"},Dw={key:0,class:"repel"},Uw={class:"font-size-sm"},Gw={key:1},jw={id:"results",class:"grid uupgs-list"},zw=["src","alt"],Bw={class:"uupg__header"},Vw=["innerHTML"],qw={key:0,class:"uupg__country"},Hw=["href"],Ww=["innerHTML"],Kw=["innerHTML"],Yw=["innerHTML"],Xw={key:1,class:"uupg__content"},Zw=["href"],Jw={key:0,class:"loading"},Qw={key:1,class:"pgg-empty pgg-failed",role:"status"},ex={key:2,class:"pgg-empty"},tx=Sn(Object.assign({inheritAttrs:!1},{__name:"people-groups-grid",props:{profileConfig:{type:String,default:""},prayBaseUrl:{type:String,default:""},languageCode:{type:String,default:""},researchUrl:{type:String,default:""},selectUrl:{type:String,default:""},t:{type:Object,default:()=>({})},showSearch:{type:[Boolean,String],default:!0},showFilters:{type:[Boolean,String],default:!0},showTotal:{type:[Boolean,String],default:!0},query:{type:String,default:""},wagfRegion:{type:String,default:""},wagfBlock:{type:String,default:""},rop1:{type:String,default:""},religion:{type:String,default:""},countryCode:{type:String,default:""},primaryLanguage:{type:String,default:""},cluster:{type:String,default:""},peopleGroup:{type:String,default:""},engagementStatus:{type:String,default:""},gospelAccess:{type:String,default:""},religionFamily:{type:String,default:""},languageFamily:{type:String,default:""},perPage:{type:Number,default:24},morePerPage:{type:Number,default:0}},emits:["groups-filtered"],setup(e,{emit:t}){const o=e,n=t,a=re(()=>{if(!o.profileConfig)return{};try{return JSON.parse(o.profileConfig)||{}}catch{return{}}}),s=re(()=>!d.value&&!f.value?null:{backgroundImage:`url(${Hu(a.value)}/images/worldmap.svg)`,backgroundSize:"60%",backgroundPosition:"top center",backgroundRepeat:"no-repeat"}),r=re(()=>o.prayBaseUrl||a.value.prayBaseUrl||"https://pray.doxa.life"),i=re(()=>o.languageCode||a.value.languageCode||""),l=re(()=>o.researchUrl||a.value.researchUrl||(typeof window<"u"&&window.DOXA_SITE_URL||"https://doxa.life").replace(/\/+$/,"")+"/research/"),c=re(()=>{const y={...a.value.t||{},...o.t||{}},E=a.value.locale||a.value.lang||void 0;return new Proxy(y,{get(q,K){if(K in q)return q[K];if(typeof K=="string")return Se("grid."+K,E)}})}),u=y=>!(y===!1||y==="false"||y==="0"||y===0),d=re(()=>u(o.showSearch)),f=re(()=>u(o.showFilters)),v=re(()=>u(o.showTotal)),L=pe([]),k=pe([]),x=pe(0),C=pe(1),h=pe(!0),m=pe(!1),p=pe(!0),b=pe({}),A=pe(""),w=pe({}),M=re(()=>d.value?A.value:o.query||""),U=re(()=>{const y={},E=q=>q;return o.wagfRegion&&(y.wagf_region={value:o.wagfRegion,label:E(o.wagfRegion)}),o.wagfBlock&&(y.wagf_block={value:o.wagfBlock,label:E(o.wagfBlock)}),o.rop1&&(y.rop1={value:o.rop1,label:E(o.rop1)}),o.religion&&(y.religion={value:o.religion,label:E(o.religion)}),o.countryCode&&(y.country_code={value:o.countryCode,label:E(o.countryCode)}),o.primaryLanguage&&(y.primary_language={value:o.primaryLanguage,label:E(o.primaryLanguage)}),o.engagementStatus&&(y.engagement_status={value:o.engagementStatus,label:E(o.engagementStatus)}),o.cluster&&(y.imb_reg_of_people_2={value:o.cluster,label:E(o.cluster)}),o.peopleGroup&&(y.imb_reg_of_people_25={value:o.peopleGroup,label:E(o.peopleGroup)}),o.gospelAccess&&(y.imb_gsec={value:o.gospelAccess,label:E(o.gospelAccess)}),o.religionFamily&&(y.__religion_family={value:o.religionFamily,label:E(o.religionFamily)}),o.languageFamily&&(y.__language_family={value:o.languageFamily,label:E(o.languageFamily)}),y}),ne=re(()=>f.value?w.value:U.value);rt(()=>o.wagfRegion,y=>{if(!f.value)return;const E=w.value.wagf_region;if(y){if(E&&E.value===y)return;const q=(b.value&&b.value.wagf_region||[]).find(K=>K.value===y);w.value={...w.value,wagf_region:{value:y,label:q&&q.label||y}}}else if(E){const q={...w.value};delete q.wagf_region,w.value=q}}),rt(()=>o.religionFamily,y=>{if(!f.value)return;const E=w.value.__religion_family;if(y){if(E&&me(E.value)===me(y))return;w.value={...w.value,__religion_family:{value:y,label:y}}}else if(E){const q={...w.value};delete q.__religion_family,w.value=q}}),rt(()=>o.primaryLanguage,y=>{if(!f.value)return;const E=w.value.primary_language;if(y){if(E&&me(E.value)===me(y))return;w.value={...w.value,primary_language:{value:y,label:y}}}else if(E){const q={...w.value};delete q.primary_language,w.value=q}});const B=re(()=>Object.values(ne.value||{}).filter(y=>y&&y.value!==""&&y.value!=null).length),Y=re(()=>Object.keys(ne.value).length),ge=re(()=>B.value>0||!!(M.value||"").trim());function I(y){return y.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function Q(y,E=500){let q;return(...K)=>{clearTimeout(q),q=setTimeout(()=>y(...K),E)}}const H=Q(()=>{h.value=!0,C.value=1,_()},500);function G(y){A.value=(y==null?void 0:y.value)??"",H()}function ie(){p.value=!p.value}function F(y){w.value={...w.value,[y.name]:{value:y.value,label:y.label}},C.value=1,_()}function O(y){V(y.name)}function V(y){const E={...w.value};delete E[y],w.value=E,C.value=1,_()}function D(){w.value={},C.value=1,_()}function ae(){if(w.value.exact)return V("exact");w.value={...w.value,exact:{value:"yes",label:c.value.exact_filter||"Exact"}},C.value=1,_()}const me=y=>String(y??"").toLowerCase().replace(/[\s_&-]+/g,""),we={__religion_family:y=>{const E=y.religion&&typeof y.religion=="object"?y.religion.value:y.religion,q=String(E||"").charAt(0).toUpperCase(),K=q&&So[q]?So[q]:"";return K?{value:K,label:K}:null},__language_family:y=>{const E=y.imb_language_family,q=E&&typeof E=="object"?E.label||E.value:E;let K="";if(q)K=_n(q);else{const N=y.primary_language&&typeof y.primary_language=="object"?y.primary_language.value:null,z=N&&hp[N];K=z?_n(z):""}return K?{value:K,label:K}:null}},Le=(y,E)=>we[E]?we[E](y):y[E];function Ae(y,E){if(!y)return!1;const q=me(E==null?void 0:E.value);return q?me(y.value)===q||me(y.label)===q:!1}function ve(y){let E=y;for(const[q,K]of Object.entries(ne.value))q==="exact"?E=E:E=E.filter(N=>Ae(Le(N,q),K));return E}function oe(){const y=E=>{const q=new Map;for(const K of L.value){const N=K[E];if(!(N!=null&&N.value))continue;const z=q.get(N.value);z?z.count++:q.set(N.value,{label:N.label,count:1})}return Array.from(q.entries()).map(([K,{label:N,count:z}])=>({value:K,label:N,count:z})).sort((K,N)=>K.label.localeCompare(N.label))};b.value={wagf_region:y("wagf_region"),wagf_block:y("wagf_block"),rop1:y("rop1"),religion:y("religion")}}function fe(){const y=Object.keys(b.value),E={};for(const q of y){const K={};for(const[se,ke]of Object.entries(ne.value))se!==q&&(K[se]=ke);const N=ye(K,L.value),z=new Map;for(const se of N){const ke=se[q];ke!=null&&ke.value&&z.set(ke.value,(z.get(ke.value)??0)+1)}E[q]=(b.value[q]??[]).map(se=>({...se,count:z.get(se.value)??0}))}b.value=E}function ye(y,E){let q=E;for(const[K,N]of Object.entries(y))K!=="exact"&&(q=q.filter(z=>Ae(Le(z,K),N)));return q}function _(){L.value=L.value.map(z=>(z.matches=[],z.country_label="",z.rop1_label="",z));const E=Object.keys(ne.value).length>0?ve(L.value):L.value,q=M.value;if(!q){k.value=E,x.value=k.value.length,h.value=!1,fe(),j();return}const N=new sv(E,{includeMatches:!0,ignoreLocation:!0,minMatchCharLength:3,threshold:ne.value.exact?0:.4,keys:["name","imb_alternate_name","country_code.label","rop1.label","religion.label","wagf_region.label","wagf_block.label"]}).search(q);k.value=N.map(z=>{var ke;const se={...z.item};if(!z.matches)return se;se.matches=[];for(const Fe of z.matches){const Ve=Fe.key;if(!Ve)continue;let He="";if(String(Ve).includes(".")){const[ht,mt]=String(Ve).split(".");He=(ke=se[ht])==null?void 0:ke[mt]}else He=se[String(Ve)];if(He&&typeof He=="string"){let ht=0,mt="";if(Fe.indices.forEach((Ye,J)=>{const $e=Ye[0],be=Ye[1],Ge=Fe.indices.length-1===J;mt+=I(He.slice(ht,$e))+`${I(He.slice($e,be+1))}`+(Ge?I(He.slice(be+1)):""),ht=be+1}),String(Ve).includes("imb_alternate_name"))se.matches.push({key:c.value.alternate_name??"Also known as",label:mt});else if(String(Ve).includes(".")){const[Ye]=String(Ve).split("."),J={religion:c.value.religion,country_code:c.value.country,rop1:c.value.rop1,wagf_region:c.value.wagf_region,wagf_block:c.value.wagf_block};Ye==="rop1"?se.rop1_label=mt:Ye==="country_code"?se.country_label=mt:Ye==="wagf_region"||se.matches.push({key:J[Ye]??Ye,label:mt})}else se[String(Ve)]=mt}}return se}),x.value=k.value.length,h.value=!1,fe(),j()}const P=Ro();function S(){var E,q;const y=((E=P==null?void 0:P.vnode)==null?void 0:E.el)||((q=P==null?void 0:P.proxy)==null?void 0:q.$el);try{const K=y&&y.getRootNode&&y.getRootNode();if(K&&K.host)return K.host}catch{}return y}function j(){const y={query:M.value,activeFilters:ne.value,total:x.value,slugs:k.value.map(q=>q.slug)};n("groups-filtered",y);const E=S();E&&typeof E.dispatchEvent=="function"&&E.dispatchEvent(new CustomEvent("groups-filtered",{detail:y,bubbles:!0,composed:!0}))}function ee(){return o.morePerPage>0?x.value>o.perPage+(C.value-1)*o.morePerPage&&!h.value&&k.value.length>0:x.value>C.value*o.perPage&&!h.value&&k.value.length>0}function te(){C.value=C.value+1}const ce=re(()=>o.morePerPage>0?k.value.slice(0,o.perPage+(C.value-1)*o.morePerPage):k.value.slice(0,C.value*o.perPage)),le=re(()=>ee());async function g(){const y=`${r.value}/api/people-groups/list?fields=name,slug,wagf_region,wagf_block,country_code,rop1,religion,has_photo,image_url,adopted_by_churches,imb_alternate_name,engagement_status,people_committed,primary_language,imb_reg_of_people_2,imb_reg_of_people_25,imb_gsec,imb_language_family&lang=${i.value}`;h.value=!0,m.value=!1;try{const E=await fetch(y);if(!E.ok)throw new Error(`HTTP ${E.status}`);const q=await E.json();x.value=q.total,L.value=Array.isArray(q.posts)?q.posts:[],oe(),_()}catch(E){console.error("[people-groups-grid] fetch error:",E),m.value=!0,L.value=[],h.value=!1}}rt(()=>[o.query,U.value,d.value,f.value],()=>{C.value=1,_()});function $(y){const E=new Set;for(const q of L.value||[]){const K=Le(q,y),N=K&&typeof K=="object"?K.label:K;typeof N=="string"&&N&&E.add(N)}return[...E].sort()}return vt(()=>{const y=S();y&&(y.__vocabulary=$),typeof window<"u"&&(window.__peopleGroupsGridVocabulary=$),g()}),(y,E)=>{var q,K,N,z;return W(),X("div",Ew,[d.value||f.value?(W(),X("div",{key:0,id:"filters",class:"filters",style:lt(s.value)},[d.value?(W(),X("div",Cw,[je(qr,{"model-value":A.value,placeholder:c.value.search||"Search people groups…","aria-label":c.value.search||"Search people groups","max-width":"480px",onSearch:G},null,8,["model-value","placeholder","aria-label"]),f.value?(W(),X("button",{key:0,class:"filter-toggle pgg-exact",type:"button","data-active":ne.value.exact?"":void 0,onClick:ae},ue(c.value.exact_filter||"Exact"),9,Nw)):Me("",!0)])):Me("",!0),f.value?(W(),X("button",{key:1,class:"filters__toggle",type:"button","aria-expanded":p.value,onClick:ie},[E[0]||(E[0]=T("svg",{class:"filters__toggle-icon",width:"13",height:"13",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[T("path",{d:"M1.5 2.5h9M3 6h6M4.5 9.5h3",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})],-1)),ut(" "+ue(p.value?c.value.hide_filters||"Hide Filters":c.value.show_filters||"Show Filters")+" ",1),B.value?(W(),X("span",Rw,ue(B.value),1)):Me("",!0),E[1]||(E[1]=T("svg",{width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[T("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,Tw)):Me("",!0),f.value&&p.value?(W(),X("div",Mw,[je(pa,{label:c.value.wagf_region||"Region",name:"wagf_region",options:b.value.wagf_region||[],value:((q=ne.value.wagf_region)==null?void 0:q.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"]),je(pa,{label:c.value.wagf_block||"Bloc",name:"wagf_block",options:b.value.wagf_block||[],value:((K=ne.value.wagf_block)==null?void 0:K.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"]),je(pa,{label:c.value.rop1||"People Group",name:"rop1",options:b.value.rop1||[],value:((N=ne.value.rop1)==null?void 0:N.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"]),je(pa,{label:c.value.religion||"Religion",name:"religion",options:b.value.religion||[],value:((z=ne.value.religion)==null?void 0:z.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:F,onFilterClear:O},null,8,["label","options","value","placeholder"])])):Me("",!0),f.value&&Y.value>0?(W(),X("div",Ow,[(W(!0),X(Ce,null,tt(ne.value,(se,ke)=>(W(),X("span",{key:ke,class:"filter-chip"},[ut(ue(se.label)+" ",1),T("button",{class:"filter-chip__remove",type:"button",onClick:Fe=>V(String(ke))},"×",8,Fw)]))),128)),T("button",{class:"filters__clear-all",type:"button",onClick:D},ue(c.value.clear_all||"Clear All"),1)])):Me("",!0)],4)):Me("",!0),T("div",Iw,[v.value||ge.value?(W(),X("div",Dw,[T("div",Uw,[h.value?(W(),X("span",Gw," ")):(W(),X(Ce,{key:0},[ut(ue(ge.value&&!v.value?(c.value.showing||"Showing")+" "+x.value.toLocaleString("en-US"):(c.value.total||"Total")+": "+x.value.toLocaleString("en-US")),1)],64))])])):Me("",!0),T("div",jw,[(W(!0),X(Ce,null,tt(ce.value,se=>(W(),X("div",{key:se.slug,class:"card uupg__card"},[se.image_url?(W(),X("img",{key:0,class:"uupg__image",src:se.image_url,alt:se.name},null,8,zw)):Me("",!0),T("div",Bw,[T("h3",{class:"uupg__name",innerHTML:se.name},null,8,Vw),se.country_code?(W(),X("p",qw,[T("a",{class:"uupg__country-link",href:`${l.value}../countries/${he(Aw)(se.country_code.value,se.country_code.label)}`},[T("span",{innerHTML:se.country_label?se.country_label:se.country_code.label},null,8,Ww)],8,Hw),se.rop1?(W(),X(Ce,{key:0},[E[2]||(E[2]=ut(" (",-1)),T("span",{innerHTML:se.rop1_label?se.rop1_label:se.rop1.label},null,8,Kw),E[3]||(E[3]=ut(")",-1))],64)):Me("",!0)])):Me("",!0),se.matches?(W(!0),X(Ce,{key:1},tt(se.matches,(ke,Fe)=>(W(),X("p",{key:Fe,class:"uupg__match"},[T("strong",null,ue(ke.key),1),E[4]||(E[4]=ut(": ",-1)),T("span",{innerHTML:ke.label},null,8,Yw)]))),128)):Me("",!0)]),se.location_description?(W(),X("p",Xw,ue(se.location_description),1)):Me("",!0),T("a",{class:"uupg__more-button",href:`${l.value}${se.slug}`},ue(c.value.full_profile||"Full Profile"),9,Zw)]))),128)),h.value?(W(),X("div",Jw,ue(c.value.loading||"Loading…"),1)):m.value?(W(),X("div",Qw,ue(c.value.load_failed||"People-group data could not be loaded. This is a connection problem, not your filter."),1)):ce.value.length?Me("",!0):(W(),X("div",ex,ue(c.value.no_results||"No people groups match this filter."),1))]),le.value?(W(),X("button",{key:1,class:"pgg-loadmore",type:"button",onClick:te},ue(c.value.load_more||"Load More"),1)):Me("",!0)])])}}}),[["styles",[Pw]]]),ox=":host{display:block;width:100%}",nx="dashboard-plus-grid/dashboard-plus-grid/index.html",ax=Sn(Object.assign({inheritAttrs:!1},{__name:"dashboard-plus-grid",props:{profileConfig:{type:[String,Object],default:null}},setup(e){const t={wagf_region:"wagfRegion",wagf_block:"wagfBlock",affinity_bloc:"rop1",religion:"religion",country_code:"countryCode",primary_language:"primaryLanguage",engagement_status:"engagementStatus",cluster:"cluster",people_group:"peopleGroup",gospel_access:"gospelAccess",religion_family:"religionFamily",language_family:"languageFamily"},o=Bo({query:"",wagfRegion:"",wagfBlock:"",rop1:"",religion:"",countryCode:"",primaryLanguage:"",engagementStatus:"",cluster:"",peopleGroup:"",gospelAccess:"",religionFamily:"",languageFamily:""});function n({filterSet:L={},searchTerm:k=""}={}){o.query=k||"";for(const x of Object.values(t))o[x]="";for(const[x,C]of Object.entries(L)){const h=t[x];h&&(o[h]=C==null?"":String(C))}}const a=e,s=re(()=>{const L=a.profileConfig;if(!L)return{};if(typeof L=="object")return L;try{return JSON.parse(L)}catch{return{}}}),r=re(()=>{var k;const L=(k=s.value)==null?void 0:k.tk;return typeof L=="string"&&L?L:""});r.value&&Ku(r.value);const i=re(()=>{var k;const L=(k=s.value)==null?void 0:k.provider;return L==="maplibre"||L==="mapbox"?L:""}),l=re(()=>{var k,x;const L=String(((k=s.value)==null?void 0:k.lang)||((x=s.value)==null?void 0:x.locale)||"").split("-")[0].toLowerCase();return ts.includes(L)?L:""});ji(()=>{l.value&&pu(l.value)});const c=Ry(),u=re(()=>r.value||c.value||"");no("mapboxToken",u);const d=qu(null);no("profileConfig",re(()=>({profile:"research-dashboard",layout:"page-scroll",shareUrl:(d?d.replace(/\/+$/,"")+"/":"")+nx,...r.value?{tk:r.value}:{},...i.value?{provider:i.value}:{},...l.value?{lang:l.value}:{}})));const f=Ie("appI18n",null);ji(()=>{l.value&&f&&(f.global.locale.value=l.value)});const v=[{key:"dashboard"},{key:"grid"}];return(L,k)=>(W(),To(ev,{sections:v},{"section-dashboard":Co(()=>[je(Lw,{onDashboardFilter:n})]),"section-grid":Co(()=>[je(tx,{query:o.query,"wagf-region":o.wagfRegion,"wagf-block":o.wagfBlock,rop1:o.rop1,religion:o.religion,"country-code":o.countryCode,"primary-language":o.primaryLanguage,"engagement-status":o.engagementStatus,cluster:o.cluster,"people-group":o.peopleGroup,"gospel-access":o.gospelAccess,"religion-family":o.religionFamily,"language-family":o.languageFamily,"show-search":!1,"show-filters":!1,"show-total":!1},null,8,["query","wagf-region","wagf-block","rop1","religion","country-code","primary-language","engagement-status","cluster","people-group","gospel-access","religion-family","language-family"])]),_:1}))}}),[["styles",[ox]]]);my({"./affinity-block.js":{default:Sy},"./doxa-region.js":{default:Ey}}),Mu();const sx=Og(ax,{configureApp(e){e.use(Wg());const t=X_();e.use(t),e.provide("appI18n",t)}});typeof customElements<"u"&&(customElements.get("dashboard-plus-grid")||customElements.define("dashboard-plus-grid",sx))})(); ->>>>>>> 7c96759d4ec141113131b96339670bf0713dcddc diff --git a/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid/default/index.html b/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid/default/index.html index 5b3bf5c17..9a35bf076 100644 --- a/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid/default/index.html +++ b/public/dx-maps/dashboard-plus-grid/dashboard-plus-grid/default/index.html @@ -40,7 +40,7 @@ - + - + \n\n" + "script": "\n\n\n\n" }, "instances": [ { @@ -782,7 +782,7 @@ "bundle": "plugin-studio", "scriptUrl": "./plugin-studio/plugin-studio.js", "output": "dx-maps/plugin-studio/plugin-studio.js", - "integrity": "sha384-diiEvybWLwF+XuXh9aAkhzgJCZN9bPezKiAd6ANxLVjR1kHXSg4T+XFI7XHrX0Zb", + "integrity": "sha384-lYyH0iKEqJ0Ps32Bbzbe3XVdfJZbYAZ6SaeP7DURDmt6yVbxMY1bYrJNUdLDcf4d", "elements": [ "plugin-studio" ], @@ -810,7 +810,7 @@ "scriptUrl": "./plugin-studio/plugin-studio.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { diff --git a/public/dx-maps/index.html b/public/dx-maps/index.html index 979d49c5b..936e7eade 100644 --- a/public/dx-maps/index.html +++ b/public/dx-maps/index.html @@ -14,6 +14,6 @@ - + diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index ec1e32458..83fca22c9 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -215,7 +215,7 @@ "bundle": "dashboard-plus-grid", "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js", - "integrity": "sha384-rRF96zozigk0kwJ6SwT1E2hyz91Mdu82TdfNYZP2pMIl86JsFV1byXVeuInovv9Y", + "integrity": "sha384-Mx03ys3XIk0Ud2XgCBsjIUXS3K39uYVoTzyL0aLM4v6fK5Z96qM/1RvPRYLFX+dm", "elements": [ "dashboard-plus-grid" ], @@ -235,7 +235,7 @@ "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" }, "instances": [ { @@ -782,7 +782,7 @@ "bundle": "plugin-studio", "scriptUrl": "./plugin-studio/plugin-studio.js", "output": "dx-maps/plugin-studio/plugin-studio.js", - "integrity": "sha384-diiEvybWLwF+XuXh9aAkhzgJCZN9bPezKiAd6ANxLVjR1kHXSg4T+XFI7XHrX0Zb", + "integrity": "sha384-lYyH0iKEqJ0Ps32Bbzbe3XVdfJZbYAZ6SaeP7DURDmt6yVbxMY1bYrJNUdLDcf4d", "elements": [ "plugin-studio" ], @@ -810,7 +810,7 @@ "scriptUrl": "./plugin-studio/plugin-studio.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { diff --git a/public/dx-maps/plugin-studio/plugin-studio.js b/public/dx-maps/plugin-studio/plugin-studio.js index ade14aacf..e28674622 100644 --- a/public/dx-maps/plugin-studio/plugin-studio.js +++ b/public/dx-maps/plugin-studio/plugin-studio.js @@ -274,12 +274,19 @@ .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; } } -`,Aa=go({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){Tn(Ca,"vertical-tabs-layout")},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(n=>n.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},Na(t.src).then(()=>Ma(t.element)).then(()=>{o.innerHTML="";const n=document.createElement(t.element),s=t.attrs||{};for(const l in s){const i=s[l],r=i!=null&&typeof i=="object"?JSON.stringify(i):String(i);try{n[l]=i}catch{}try{n.setAttribute(l,r)}catch{}}n.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(n),this.hostState={...this.hostState,[e]:"ready"}}).catch(n=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:n&&n.message||String(n)}}))},iconSvg(e){return e?Ai(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(s=>s.key===e),n=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!n}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let n=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")n=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")n=(o-1+t.length)%t.length;else if(e.key==="Home")n=0;else if(e.key==="End")n=t.length-1;else return;e.preventDefault();const s=t[n];this.pick(s),this.$nextTick(()=>{const l=this._tabEls[s];l&&l.focus&&l.focus()})}}}),Oa={key:0,class:"vtl-top"},Pa=["aria-expanded","aria-label"],Ra={class:"vtl-brand"},Ia={class:"vtl-title"},Ua={class:"vtl-meta"},Da=["aria-expanded","aria-label"],Ha={class:"vtl-body"},Fa=["aria-label","aria-hidden","role","aria-orientation"],ja=["aria-expanded","aria-label"],Va=["innerHTML"],Ba={class:"vtl-collapse-tx"},za=["aria-expanded","onClick"],Ka={key:0,class:"vtl-cap"},Wa={class:"vtl-tl"},qa={key:1,class:"vtl-td"},Ya=["innerHTML"],Ga={key:1,class:"vtl-tier"},Ja={key:0,class:"vtl-cap"},Xa={class:"vtl-tl"},Za={key:1,class:"vtl-td"},Qa={class:"vtl-rows"},ec=["aria-selected","tabindex","onClick"],tc=["innerHTML"],oc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},nc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},sc={class:"vtl-tab-text"},ic={class:"vtl-tab-label"},lc={key:0,class:"vtl-tab-badge"},rc={key:0,class:"vtl-tab-sub"},ac=["innerHTML"],cc=["aria-selected","tabindex","onClick"],pc=["innerHTML"],dc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},uc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},fc={class:"vtl-tab-text"},hc={class:"vtl-tab-label"},gc={key:0,class:"vtl-tab-sub"},bc={class:"vtl-main"},mc={class:"vtl-content"},vc=["hidden"],xc={key:0,class:"vtl-host-hint"},kc={key:1,class:"vtl-host-hint err"};function yc(e,t,o,n,s,l){return L(),E("div",{class:he(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(L(),E("header",Oa,[x("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=i=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,Pa),x("span",Ra,[Mt(e.$slots,"brand")]),x("b",Ia,T(e.title),1),x("span",Ua,[Mt(e.$slots,"meta")])])):J("",!0),e.narrow&&!e.header&&!e.navOpen?(L(),E("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=i=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Da)):J("",!0),x("div",Ha,[x("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[x("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...i)=>e.toggleRail&&e.toggleRail(...i))},[x("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Va),x("span",Ba,T(e.label("collapse")),1)],8,ja),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),E(Y,{key:1},Te(e.groups,i=>(L(),E("div",{class:"vtl-grp",key:i.key},[i.folder?(L(),E("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(i)),onClick:r=>e.toggleFolder(i.key)},[i.badge?(L(),E("span",Ka,T(i.badge),1)):J("",!0),x("span",Wa,T(i.label),1),i.count!=null?(L(),E("span",qa,T(i.count),1)):J("",!0),x("span",{class:he(["vtl-chev",{open:!e.isFolderClosed(i)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Ya)],8,za)):(L(),E("div",Ga,[i.badge?(L(),E("span",Ja,T(i.badge),1)):J("",!0),x("span",Xa,T(i.label),1),i.count!=null?(L(),E("span",Za,T(i.count),1)):J("",!0)])),ft(x("div",Qa,[(L(!0),E(Y,null,Te(i.rows,r=>(L(),E("button",{key:r.key,type:"button",role:"tab",class:he(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:a=>e.registerTab(r.key,a),onClick:a=>e.pick(r.key),onKeydown:t[3]||(t[3]=a=>e.onKey(a))},[r.icon?(L(),E("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,tc)):r.emoji?(L(),E("span",oc,T(r.emoji),1)):(L(),E("span",nc,T(e.initial(r.label)),1)),x("span",sc,[x("span",ic,[Je(T(r.label),1),r.badge?(L(),E("span",lc,T(r.badge),1)):J("",!0)]),r.sub?(L(),E("span",rc,[x("span",{innerHTML:r.sub},null,8,ac)])):J("",!0)])],42,ec))),128))],512),[[$n,!i.folder||!e.isFolderClosed(i)]])]))),128)):(L(!0),E(Y,{key:2},Te(e.items,i=>(L(),E("button",{key:i.key,type:"button",role:"tab",class:he(["vtl-tab",{active:i.key===e.active}]),"aria-selected":String(i.key===e.active),tabindex:i.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(i.key,r),onClick:r=>e.pick(i.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[i.icon?(L(),E("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(i.icon)},null,8,pc)):i.emoji?(L(),E("span",dc,T(i.emoji),1)):(L(),E("span",uc,T(e.initial(i.label)),1)),x("span",fc,[x("span",hc,T(i.label),1),i.sub?(L(),E("span",gc,T(i.sub),1)):J("",!0)])],42,cc))),128))],8,Fa),x("main",bc,[e.header?Mt(e.$slots,"toolbar",{},void 0,void 0,0):J("",!0),x("div",mc,[(L(!0),E(Y,null,Te(e.mountedElementRows,i=>ft((L(),E("section",{key:i.key,class:"vtl-host",hidden:i.key!==e.active},[x("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(i.key,r)},null,512),e.hostState[i.key]==="loading"?(L(),E("div",xc,"Loading "+T(i.label)+"…",1)):e.hostState[i.key]==="error"?(L(),E("div",kc,[Je(" Could not load "+T(i.label)+".",1),t[5]||(t[5]=x("br",null,null,-1)),x("small",null,T(e.hostError[i.key]),1)])):J("",!0)],8,vc)),[[$n,i.key===e.active]])),128)),Mt(e.$slots,"default")])])])],2)}const $c=Nn(Aa,[["render",yc],["styles",[Ta]]]),wc='.st{display:flex;flex-direction:column;margin:0 -12px}.st-bar{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:6px;padding:8px 12px;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}',Sc='.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; }',_c='',Lc={filterPlaceholder:"Filter plugins",collapseAll:"Collapse all",noMatch:"No plugin matches “{query}”.",treeLabel:"Plugins by capability",openSection:"Open {cap}, {label}",part:"part"},Ec='',Tc=go({name:"StudioTree",props:{sections:{type:Array,default:()=>[]},active:{type:String,default:""},collapsed:{type:Boolean,default:!1},pick:{type:Function,default:null},expand:{type:Function,default:null},strings:{type:Object,default:()=>({})}},emits:["select"],setup(){Tn(Sc,"studio-tree")},data(){const e=this.readState();return{query:"",focusId:"",secClosed:e.sec||{},nodeOpen:e.node||{},chev:Ec,collapseAllSvg:_c}},computed:{byId(){const e=new Map;for(const t of this.sections)for(const o of t.nodes)e.set(o.id,o);return e},q(){return this.query.trim().toLowerCase()},kept(){if(!this.q)return null;const e=new Set;for(const t of this.sections)for(const o of t.nodes){if(!(o.label.toLowerCase().includes(this.q)||String(o.desc||"").toLowerCase().includes(this.q)))continue;e.add(o.id);let s=o.parent;for(;s;)e.add(s),s=this.byId.get(s)&&this.byId.get(s).parent}return e},visible(){const e=[];for(const t of this.sections){const o=this.kept?t.nodes.filter(n=>this.kept.has(n.id)):t.nodes;if(!(this.kept&&!o.length)&&(e.push({id:"sec:"+t.id,section:!0,sectionId:t.id,level:1,depth:0,expandable:!0,cap:t.cap,label:t.label,title:t.title||"",count:t.nodes.filter(n=>n.depth===0).length}),!(!this.kept&&this.secClosed[t.id])))for(const n of o)!this.kept&&!this.ancestorsOpen(n)||e.push({...n,sectionId:t.id,level:n.depth+2,expandable:!!n.kids,alias:n.depth>0})}return e},activeSectionId(){for(const e of this.sections)if(e.nodes.some(t=>t.depth===0&&t.target===this.active))return e.id;return""}},watch:{active:{handler(){this.reveal()},immediate:!0},sections(){this.reveal()},query(e){e&&this.visible.length&&(this.focusId=this.visible[0].id)}},methods:{svg(e){return e?Ai(e):""},str(e,t){let o=this.strings[e]||Lc[e]||e;if(t)for(const n in t)o=o.split("{"+n+"}").join(String(t[n]));return o},storageKey(){return"dx-studio-tree:"+(typeof location<"u"&&location.pathname||"")},readState(){try{return JSON.parse(window.localStorage.getItem(this.storageKey())||"{}")||{}}catch{return{}}},saveState(){try{window.localStorage.setItem(this.storageKey(),JSON.stringify({sec:this.secClosed,node:this.nodeOpen}))}catch{}},ancestorsOpen(e){let t=e.parent;for(;t;){if(!this.nodeOpen[t])return!1;t=this.byId.get(t)&&this.byId.get(t).parent}return!0},isOpen(e){return this.kept?!0:e.section?!this.secClosed[e.sectionId]:!!this.nodeOpen[e.id]},setOpen(e,t){e.section?this.secClosed={...this.secClosed,[e.sectionId]:!t}:this.nodeOpen={...this.nodeOpen,[e.id]:t},this.saveState()},toggle(e){e.expandable&&this.setOpen(e,!this.isOpen(e))},collapseAll(){this.nodeOpen={},this.saveState();const e=this.visible.find(t=>!t.section&&t.target===this.active&&t.depth===0);e&&(this.focusId=e.id)},rowClass(e){return{"st-row":!0,"st-sec":!!e.section,active:!e.section&&e.target===this.active,alias:!!e.alias}},setRow(e,t){this._rows||(this._rows={}),t?this._rows[e]=t:delete this._rows[e]},activate(e){if(e.section){this.toggle(e);return}e.expandable&&!this.isOpen(e)&&this.setOpen(e,!0),e.target&&(this.pick?this.pick(e.target):this.$emit("select",e.target))},onRowClick(e){this.focusId=e.id,this.activate(e)},focusRow(e){e&&(this.focusId=e,this.$nextTick(()=>{const t=this._rows&&this._rows[e];t&&(t.focus({preventScroll:!0}),t.scrollIntoView({block:"nearest"}))}))},onTreeKey(e){const t=this.visible;if(!t.length)return;const o=Math.max(0,t.findIndex(l=>l.id===this.focusId)),n=t[o],s=l=>l.section?"":l.parent||"sec:"+l.sectionId;switch(e.key){case"ArrowDown":this.focusRow((t[o+1]||n).id);break;case"ArrowUp":this.focusRow((t[o-1]||n).id);break;case"Home":this.focusRow(t[0].id);break;case"End":this.focusRow(t[t.length-1].id);break;case"ArrowRight":if(!n.expandable)break;this.isOpen(n)?t[o+1]&&t[o+1].level>n.level&&this.focusRow(t[o+1].id):this.setOpen(n,!0);break;case"ArrowLeft":n.expandable&&this.isOpen(n)&&!this.kept?this.setOpen(n,!1):this.focusRow(s(n));break;case"Enter":case" ":this.activate(n);break;default:if(e.key.length===1&&/\S/.test(e.key)&&!e.ctrlKey&&!e.metaKey&&!e.altKey){const l=e.key.toLowerCase(),r=t.slice(o+1).concat(t.slice(0,o+1)).find(a=>String(a.label).toLowerCase().startsWith(l));r&&this.focusRow(r.id);break}return}e.preventDefault()},onFindKey(e){e.key==="Escape"?(this.query="",e.preventDefault()):e.key==="ArrowDown"&&this.visible.length&&(this.focusRow(this.visible[0].id),e.preventDefault())},reveal(){if(!this.active||!this.sections.length)return;let e=null;for(const t of this.sections)if(e=t.nodes.find(o=>o.depth===0&&o.target===this.active),e){this.secClosed[t.id]&&(this.secClosed={...this.secClosed,[t.id]:!1},this.saveState());break}e&&((!this.focusId||!this.byId.has(this.focusId)||this.byId.get(this.focusId).target!==this.active)&&(this.focusId=e.id),this.$nextTick(()=>{const t=this._rows&&this._rows[e.id];t&&t.scrollIntoView&&t.scrollIntoView({block:"nearest"})}))},openSectionFromActivity(e){this.secClosed[e]&&(this.secClosed={...this.secClosed,[e]:!1},this.saveState()),this.expand&&this.expand(),this.$nextTick(()=>this.focusRow("sec:"+e))}}}),Nc={key:0,class:"st-activity"},Mc=["aria-label","onClick"],Cc=["innerHTML"],Ac={class:"st-act-n","aria-hidden":"true"},Oc={key:1,class:"st"},Pc={class:"st-bar"},Rc={class:"st-find"},Ic=["innerHTML"],Uc=["placeholder","aria-label"],Dc=["aria-label","title"],Hc=["innerHTML"],Fc=["aria-label"],jc=["aria-level","aria-expanded","aria-selected","tabindex","title","onClick","onFocus"],Vc=["innerHTML"],Bc={class:"st-cap"},zc={class:"st-sec-label"},Kc={class:"st-count"},Wc=["innerHTML","onClick"],qc={key:1,class:"st-twisty-sp","aria-hidden":"true"},Yc=["innerHTML"],Gc={class:"st-label"},Jc={key:2,class:"st-part"},Xc={class:"st-desc"},Zc={key:3,class:"st-count"},Qc={key:0,class:"st-empty"};function ep(e,t,o,n,s,l){return e.collapsed?(L(),E("div",Nc,[(L(!0),E(Y,null,Te(e.sections,i=>(L(),E("button",{key:i.id,type:"button",class:he(["st-act",{active:i.id===e.activeSectionId}]),"aria-label":e.str("openSection",{cap:"CAP "+i.cap,label:i.label}),onClick:r=>e.openSectionFromActivity(i.id)},[x("span",{class:"st-act-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,Cc),x("span",Ac,T(i.cap),1)],10,Mc))),128))])):(L(),E("div",Oc,[x("div",Pc,[x("label",Rc,[x("span",{class:"st-find-ic","aria-hidden":"true",innerHTML:e.svg("search")},null,8,Ic),ft(x("input",{ref:"find",type:"search",class:"st-find-in","onUpdate:modelValue":t[0]||(t[0]=i=>e.query=i),placeholder:e.str("filterPlaceholder"),"aria-label":e.str("filterPlaceholder"),onKeydown:t[1]||(t[1]=(...i)=>e.onFindKey&&e.onFindKey(...i))},null,40,Uc),[[En,e.query]])]),x("button",{type:"button",class:"st-tool","aria-label":e.str("collapseAll"),title:e.str("collapseAll"),onClick:t[2]||(t[2]=(...i)=>e.collapseAll&&e.collapseAll(...i))},[x("span",{"aria-hidden":"true",innerHTML:e.collapseAllSvg},null,8,Hc)],8,Dc)]),x("div",{class:"st-tree",role:"tree","aria-label":e.str("treeLabel"),onKeydown:t[3]||(t[3]=(...i)=>e.onTreeKey&&e.onTreeKey(...i))},[(L(!0),E(Y,null,Te(e.visible,i=>(L(),E("div",{key:i.id,ref_for:!0,ref:r=>e.setRow(i.id,r),role:"treeitem","aria-level":i.level,"aria-expanded":i.expandable?String(e.isOpen(i)):null,"aria-selected":i.section?null:String(i.target===e.active),tabindex:i.id===e.focusId?0:-1,class:he(e.rowClass(i)),style:kt({"--st-depth":i.depth}),title:i.title||null,onClick:r=>e.onRowClick(i),onFocus:r=>e.focusId=i.id},[i.section?(L(),E(Y,{key:0},[x("span",{class:"st-twisty","aria-hidden":"true",innerHTML:e.chev},null,8,Vc),x("span",Bc,"CAP "+T(i.cap),1),x("span",zc,T(i.label),1),x("span",Kc,T(i.count),1)],64)):(L(),E(Y,{key:1},[(L(!0),E(Y,null,Te(i.depth,r=>(L(),E("span",{key:r,class:"st-guide",style:kt({"--st-g":r-1}),"aria-hidden":"true"},null,4))),128)),i.expandable?(L(),E("span",{key:0,class:"st-twisty","aria-hidden":"true",innerHTML:e.chev,onClick:Ei(r=>e.toggle(i),["stop"])},null,8,Wc)):(L(),E("span",qc)),x("span",{class:"st-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,Yc),x("span",Gc,T(i.label),1),i.part?(L(),E("span",Jc,T(e.str("part")),1)):J("",!0),x("span",Xc,T(i.desc),1),i.expandable?(L(),E("span",Zc,T(i.kids),1)):J("",!0)],64))],46,jc))),128)),e.query&&!e.visible.length?(L(),E("p",Qc,T(e.str("noMatch",{query:e.query})),1)):J("",!0)],40,Fc)]))}const tp=Nn(Tc,[["render",ep],["styles",[wc]]]),Mn=[{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}],op=Mn.filter(e=>!e.hideFromSwitcher);function np(e){return Mn.find(t=>t.code===e)}function Cn(e){const t=String(e||"").split("-")[0].toLowerCase();return Mn.some(o=>o.code===t)?t:"en"}const Oi="doxa-maps:locale";function sp(){try{const e=localStorage.getItem(Oi);if(e)return Cn(e)}catch{}return Cn(navigator==null?void 0:navigator.language)}function ip(e){try{localStorage.setItem(Oi,e)}catch{}}const lp=":host{display:block;position:relative;height:var(--plugin-studio-height, 85vh);min-height:480px}:host([hidden]){display:none}.ps-logo{display:inline-flex;align-items:center}.ps-logo svg{display:block}.ps-count{color:#6d766e}.ps-token{position:relative;display:inline-flex}.ps-token-dot{width:8px;height:8px;border-radius:50%;background:#b8bdb4}.ps-token-dot.is-yours,.ps-token-dot.is-url{background:#92b195}.ps-token-dot.is-built{background:#c9b36a}.ps-token-dot.is-none{background:#d27a6a}.ps-token-panel{position:absolute;top:100%;inset-inline-end:0;margin-top:4px;z-index:30;width:min(340px,90vw);display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000040;color:#3b463d;font-size:12px}.ps-token-label{display:flex;flex-direction:column;gap:4px}.ps-token-input{font:inherit;font-size:12px;padding:6px 8px;border:1px solid #d1d4cd;border-radius:7px;background:#f8f8f6;color:#3b463d;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ps-token-row{display:flex;gap:8px}.ps-token-apply,.ps-token-clear{font:inherit;font-size:12px;padding:5px 12px;border-radius:7px;border:1px solid #d1d4cd;background:#d1d4cd;color:#3b463d;cursor:pointer}.ps-token-apply{background:#92b195;border-color:#92b195;color:#fff}.ps-token-apply:disabled{opacity:.6;cursor:progress}.ps-token-status{margin:0}.ps-token-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-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}",Mo="plugin-studio:mapbox-token",Co="plugin-studio:mapbox-token-url",Pi="plugin-studio:map-provider";function jt(e){try{return typeof window<"u"&&window.localStorage.getItem(e)||""}catch{return""}}function Vt(e,t){try{t?window.localStorage.setItem(e,t):window.localStorage.removeItem(e)}catch{}}const rp=` +`,Aa=go({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){Tn(Ca,"vertical-tabs-layout")},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(n=>n.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},Na(t.src).then(()=>Ma(t.element)).then(()=>{o.innerHTML="";const n=document.createElement(t.element),s=t.attrs||{};for(const l in s){const i=s[l],r=i!=null&&typeof i=="object"?JSON.stringify(i):String(i);try{n[l]=i}catch{}try{n.setAttribute(l,r)}catch{}}n.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(n),this.hostState={...this.hostState,[e]:"ready"}}).catch(n=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:n&&n.message||String(n)}}))},iconSvg(e){return e?Ai(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(s=>s.key===e),n=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!n}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let n=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")n=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")n=(o-1+t.length)%t.length;else if(e.key==="Home")n=0;else if(e.key==="End")n=t.length-1;else return;e.preventDefault();const s=t[n];this.pick(s),this.$nextTick(()=>{const l=this._tabEls[s];l&&l.focus&&l.focus()})}}}),Oa={key:0,class:"vtl-top"},Pa=["aria-expanded","aria-label"],Ra={class:"vtl-brand"},Ia={class:"vtl-title"},Ua={class:"vtl-meta"},Da=["aria-expanded","aria-label"],Ha={class:"vtl-body"},Fa=["aria-label","aria-hidden","role","aria-orientation"],ja=["aria-expanded","aria-label"],Va=["innerHTML"],Ba={class:"vtl-collapse-tx"},za=["aria-expanded","onClick"],Ka={key:0,class:"vtl-cap"},Wa={class:"vtl-tl"},qa={key:1,class:"vtl-td"},Ya=["innerHTML"],Ga={key:1,class:"vtl-tier"},Ja={key:0,class:"vtl-cap"},Xa={class:"vtl-tl"},Za={key:1,class:"vtl-td"},Qa={class:"vtl-rows"},ec=["aria-selected","tabindex","onClick"],tc=["innerHTML"],oc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},nc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},sc={class:"vtl-tab-text"},ic={class:"vtl-tab-label"},lc={key:0,class:"vtl-tab-badge"},rc={key:0,class:"vtl-tab-sub"},ac=["innerHTML"],cc=["aria-selected","tabindex","onClick"],pc=["innerHTML"],dc={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},uc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},fc={class:"vtl-tab-text"},hc={class:"vtl-tab-label"},gc={key:0,class:"vtl-tab-sub"},bc={class:"vtl-main"},mc={class:"vtl-content"},vc=["hidden"],xc={key:0,class:"vtl-host-hint"},kc={key:1,class:"vtl-host-hint err"};function yc(e,t,o,n,s,l){return L(),E("div",{class:he(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(L(),E("header",Oa,[x("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=i=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,Pa),x("span",Ra,[Mt(e.$slots,"brand")]),x("b",Ia,T(e.title),1),x("span",Ua,[Mt(e.$slots,"meta")])])):J("",!0),e.narrow&&!e.header&&!e.navOpen?(L(),E("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=i=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Da)):J("",!0),x("div",Ha,[x("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[x("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...i)=>e.toggleRail&&e.toggleRail(...i))},[x("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Va),x("span",Ba,T(e.label("collapse")),1)],8,ja),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),E(Y,{key:1},Te(e.groups,i=>(L(),E("div",{class:"vtl-grp",key:i.key},[i.folder?(L(),E("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(i)),onClick:r=>e.toggleFolder(i.key)},[i.badge?(L(),E("span",Ka,T(i.badge),1)):J("",!0),x("span",Wa,T(i.label),1),i.count!=null?(L(),E("span",qa,T(i.count),1)):J("",!0),x("span",{class:he(["vtl-chev",{open:!e.isFolderClosed(i)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Ya)],8,za)):(L(),E("div",Ga,[i.badge?(L(),E("span",Ja,T(i.badge),1)):J("",!0),x("span",Xa,T(i.label),1),i.count!=null?(L(),E("span",Za,T(i.count),1)):J("",!0)])),ft(x("div",Qa,[(L(!0),E(Y,null,Te(i.rows,r=>(L(),E("button",{key:r.key,type:"button",role:"tab",class:he(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:a=>e.registerTab(r.key,a),onClick:a=>e.pick(r.key),onKeydown:t[3]||(t[3]=a=>e.onKey(a))},[r.icon?(L(),E("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,tc)):r.emoji?(L(),E("span",oc,T(r.emoji),1)):(L(),E("span",nc,T(e.initial(r.label)),1)),x("span",sc,[x("span",ic,[Je(T(r.label),1),r.badge?(L(),E("span",lc,T(r.badge),1)):J("",!0)]),r.sub?(L(),E("span",rc,[x("span",{innerHTML:r.sub},null,8,ac)])):J("",!0)])],42,ec))),128))],512),[[$n,!i.folder||!e.isFolderClosed(i)]])]))),128)):(L(!0),E(Y,{key:2},Te(e.items,i=>(L(),E("button",{key:i.key,type:"button",role:"tab",class:he(["vtl-tab",{active:i.key===e.active}]),"aria-selected":String(i.key===e.active),tabindex:i.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(i.key,r),onClick:r=>e.pick(i.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[i.icon?(L(),E("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(i.icon)},null,8,pc)):i.emoji?(L(),E("span",dc,T(i.emoji),1)):(L(),E("span",uc,T(e.initial(i.label)),1)),x("span",fc,[x("span",hc,T(i.label),1),i.sub?(L(),E("span",gc,T(i.sub),1)):J("",!0)])],42,cc))),128))],8,Fa),x("main",bc,[e.header?Mt(e.$slots,"toolbar",{},void 0,void 0,0):J("",!0),x("div",mc,[(L(!0),E(Y,null,Te(e.mountedElementRows,i=>ft((L(),E("section",{key:i.key,class:"vtl-host",hidden:i.key!==e.active},[x("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(i.key,r)},null,512),e.hostState[i.key]==="loading"?(L(),E("div",xc,"Loading "+T(i.label)+"…",1)):e.hostState[i.key]==="error"?(L(),E("div",kc,[Je(" Could not load "+T(i.label)+".",1),t[5]||(t[5]=x("br",null,null,-1)),x("small",null,T(e.hostError[i.key]),1)])):J("",!0)],8,vc)),[[$n,i.key===e.active]])),128)),Mt(e.$slots,"default")])])])],2)}const $c=Nn(Aa,[["render",yc],["styles",[Ta]]]),wc='.st{display:flex;flex-direction:column;margin:0 -12px}.st-bar{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:6px;padding:8px 12px;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}',Sc='.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; }',_c='',Lc={filterPlaceholder:"Filter plugins",collapseAll:"Collapse all",noMatch:"No plugin matches “{query}”.",treeLabel:"Plugins by capability",openSection:"Open {cap}, {label}",part:"part"},Ec='',Tc=go({name:"StudioTree",props:{sections:{type:Array,default:()=>[]},active:{type:String,default:""},collapsed:{type:Boolean,default:!1},pick:{type:Function,default:null},expand:{type:Function,default:null},strings:{type:Object,default:()=>({})}},emits:["select"],setup(){Tn(Sc,"studio-tree")},data(){const e=this.readState();return{query:"",focusId:"",secClosed:e.sec||{},nodeOpen:e.node||{},chev:Ec,collapseAllSvg:_c}},computed:{byId(){const e=new Map;for(const t of this.sections)for(const o of t.nodes)e.set(o.id,o);return e},q(){return this.query.trim().toLowerCase()},kept(){if(!this.q)return null;const e=new Set;for(const t of this.sections)for(const o of t.nodes){if(!(o.label.toLowerCase().includes(this.q)||String(o.desc||"").toLowerCase().includes(this.q)))continue;e.add(o.id);let s=o.parent;for(;s;)e.add(s),s=this.byId.get(s)&&this.byId.get(s).parent}return e},visible(){const e=[];for(const t of this.sections){const o=this.kept?t.nodes.filter(n=>this.kept.has(n.id)):t.nodes;if(!(this.kept&&!o.length)&&(e.push({id:"sec:"+t.id,section:!0,sectionId:t.id,level:1,depth:0,expandable:!0,cap:t.cap,label:t.label,title:t.title||"",count:t.nodes.filter(n=>n.depth===0).length}),!(!this.kept&&this.secClosed[t.id])))for(const n of o)!this.kept&&!this.ancestorsOpen(n)||e.push({...n,sectionId:t.id,level:n.depth+2,expandable:!!n.kids,alias:n.depth>0})}return e},activeSectionId(){for(const e of this.sections)if(e.nodes.some(t=>t.depth===0&&t.target===this.active))return e.id;return""}},watch:{active:{handler(){this.reveal()},immediate:!0},sections(){this.reveal()},query(e){e&&this.visible.length&&(this.focusId=this.visible[0].id)}},methods:{svg(e){return e?Ai(e):""},str(e,t){let o=this.strings[e]||Lc[e]||e;if(t)for(const n in t)o=o.split("{"+n+"}").join(String(t[n]));return o},storageKey(){return"dx-studio-tree:"+(typeof location<"u"&&location.pathname||"")},readState(){try{return JSON.parse(window.localStorage.getItem(this.storageKey())||"{}")||{}}catch{return{}}},saveState(){try{window.localStorage.setItem(this.storageKey(),JSON.stringify({sec:this.secClosed,node:this.nodeOpen}))}catch{}},ancestorsOpen(e){let t=e.parent;for(;t;){if(!this.nodeOpen[t])return!1;t=this.byId.get(t)&&this.byId.get(t).parent}return!0},isOpen(e){return this.kept?!0:e.section?!this.secClosed[e.sectionId]:!!this.nodeOpen[e.id]},setOpen(e,t){e.section?this.secClosed={...this.secClosed,[e.sectionId]:!t}:this.nodeOpen={...this.nodeOpen,[e.id]:t},this.saveState()},toggle(e){e.expandable&&this.setOpen(e,!this.isOpen(e))},collapseAll(){this.nodeOpen={},this.saveState();const e=this.visible.find(t=>!t.section&&t.target===this.active&&t.depth===0);e&&(this.focusId=e.id)},rowClass(e){return{"st-row":!0,"st-sec":!!e.section,active:!e.section&&e.target===this.active,alias:!!e.alias}},setRow(e,t){this._rows||(this._rows={}),t?this._rows[e]=t:delete this._rows[e]},activate(e){if(e.section){this.toggle(e);return}e.expandable&&!this.isOpen(e)&&this.setOpen(e,!0),e.target&&(this.pick?this.pick(e.target):this.$emit("select",e.target))},onRowClick(e){this.focusId=e.id,this.activate(e)},focusRow(e){e&&(this.focusId=e,this.$nextTick(()=>{const t=this._rows&&this._rows[e];t&&(t.focus({preventScroll:!0}),t.scrollIntoView({block:"nearest"}))}))},onTreeKey(e){const t=this.visible;if(!t.length)return;const o=Math.max(0,t.findIndex(l=>l.id===this.focusId)),n=t[o],s=l=>l.section?"":l.parent||"sec:"+l.sectionId;switch(e.key){case"ArrowDown":this.focusRow((t[o+1]||n).id);break;case"ArrowUp":this.focusRow((t[o-1]||n).id);break;case"Home":this.focusRow(t[0].id);break;case"End":this.focusRow(t[t.length-1].id);break;case"ArrowRight":if(!n.expandable)break;this.isOpen(n)?t[o+1]&&t[o+1].level>n.level&&this.focusRow(t[o+1].id):this.setOpen(n,!0);break;case"ArrowLeft":n.expandable&&this.isOpen(n)&&!this.kept?this.setOpen(n,!1):this.focusRow(s(n));break;case"Enter":case" ":this.activate(n);break;default:if(e.key.length===1&&/\S/.test(e.key)&&!e.ctrlKey&&!e.metaKey&&!e.altKey){const l=e.key.toLowerCase(),r=t.slice(o+1).concat(t.slice(0,o+1)).find(a=>String(a.label).toLowerCase().startsWith(l));r&&this.focusRow(r.id);break}return}e.preventDefault()},onFindKey(e){e.key==="Escape"?(this.query="",e.preventDefault()):e.key==="ArrowDown"&&this.visible.length&&(this.focusRow(this.visible[0].id),e.preventDefault())},reveal(){if(!this.active||!this.sections.length)return;let e=null;for(const t of this.sections)if(e=t.nodes.find(o=>o.depth===0&&o.target===this.active),e){this.secClosed[t.id]&&(this.secClosed={...this.secClosed,[t.id]:!1},this.saveState());break}e&&((!this.focusId||!this.byId.has(this.focusId)||this.byId.get(this.focusId).target!==this.active)&&(this.focusId=e.id),this.$nextTick(()=>{const t=this._rows&&this._rows[e.id];t&&t.scrollIntoView&&t.scrollIntoView({block:"nearest"})}))},openSectionFromActivity(e){this.secClosed[e]&&(this.secClosed={...this.secClosed,[e]:!1},this.saveState()),this.expand&&this.expand(),this.$nextTick(()=>this.focusRow("sec:"+e))}}}),Nc={key:0,class:"st-activity"},Mc=["aria-label","onClick"],Cc=["innerHTML"],Ac={class:"st-act-n","aria-hidden":"true"},Oc={key:1,class:"st"},Pc={class:"st-bar"},Rc={class:"st-find"},Ic=["innerHTML"],Uc=["placeholder","aria-label"],Dc=["aria-label","title"],Hc=["innerHTML"],Fc=["aria-label"],jc=["aria-level","aria-expanded","aria-selected","tabindex","title","onClick","onFocus"],Vc=["innerHTML"],Bc={class:"st-cap"},zc={class:"st-sec-label"},Kc={class:"st-count"},Wc=["innerHTML","onClick"],qc={key:1,class:"st-twisty-sp","aria-hidden":"true"},Yc=["innerHTML"],Gc={class:"st-label"},Jc={key:2,class:"st-part"},Xc={class:"st-desc"},Zc={key:3,class:"st-count"},Qc={key:0,class:"st-empty"};function ep(e,t,o,n,s,l){return e.collapsed?(L(),E("div",Nc,[(L(!0),E(Y,null,Te(e.sections,i=>(L(),E("button",{key:i.id,type:"button",class:he(["st-act",{active:i.id===e.activeSectionId}]),"aria-label":e.str("openSection",{cap:"CAP "+i.cap,label:i.label}),onClick:r=>e.openSectionFromActivity(i.id)},[x("span",{class:"st-act-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,Cc),x("span",Ac,T(i.cap),1)],10,Mc))),128))])):(L(),E("div",Oc,[x("div",Pc,[x("label",Rc,[x("span",{class:"st-find-ic","aria-hidden":"true",innerHTML:e.svg("search")},null,8,Ic),ft(x("input",{ref:"find",type:"search",class:"st-find-in","onUpdate:modelValue":t[0]||(t[0]=i=>e.query=i),placeholder:e.str("filterPlaceholder"),"aria-label":e.str("filterPlaceholder"),onKeydown:t[1]||(t[1]=(...i)=>e.onFindKey&&e.onFindKey(...i))},null,40,Uc),[[En,e.query]])]),x("button",{type:"button",class:"st-tool","aria-label":e.str("collapseAll"),title:e.str("collapseAll"),onClick:t[2]||(t[2]=(...i)=>e.collapseAll&&e.collapseAll(...i))},[x("span",{"aria-hidden":"true",innerHTML:e.collapseAllSvg},null,8,Hc)],8,Dc)]),x("div",{class:"st-tree",role:"tree","aria-label":e.str("treeLabel"),onKeydown:t[3]||(t[3]=(...i)=>e.onTreeKey&&e.onTreeKey(...i))},[(L(!0),E(Y,null,Te(e.visible,i=>(L(),E("div",{key:i.id,ref_for:!0,ref:r=>e.setRow(i.id,r),role:"treeitem","aria-level":i.level,"aria-expanded":i.expandable?String(e.isOpen(i)):null,"aria-selected":i.section?null:String(i.target===e.active),tabindex:i.id===e.focusId?0:-1,class:he(e.rowClass(i)),style:kt({"--st-depth":i.depth}),title:i.title||null,onClick:r=>e.onRowClick(i),onFocus:r=>e.focusId=i.id},[i.section?(L(),E(Y,{key:0},[x("span",{class:"st-twisty","aria-hidden":"true",innerHTML:e.chev},null,8,Vc),x("span",Bc,"CAP "+T(i.cap),1),x("span",zc,T(i.label),1),x("span",Kc,T(i.count),1)],64)):(L(),E(Y,{key:1},[(L(!0),E(Y,null,Te(i.depth,r=>(L(),E("span",{key:r,class:"st-guide",style:kt({"--st-g":r-1}),"aria-hidden":"true"},null,4))),128)),i.expandable?(L(),E("span",{key:0,class:"st-twisty","aria-hidden":"true",innerHTML:e.chev,onClick:Ei(r=>e.toggle(i),["stop"])},null,8,Wc)):(L(),E("span",qc)),x("span",{class:"st-ic","aria-hidden":"true",innerHTML:e.svg(i.icon)},null,8,Yc),x("span",Gc,T(i.label),1),i.part?(L(),E("span",Jc,T(e.str("part")),1)):J("",!0),x("span",Xc,T(i.desc),1),i.expandable?(L(),E("span",Zc,T(i.kids),1)):J("",!0)],64))],46,jc))),128)),e.query&&!e.visible.length?(L(),E("p",Qc,T(e.str("noMatch",{query:e.query})),1)):J("",!0)],40,Fc)]))}const tp=Nn(Tc,[["render",ep],["styles",[wc]]]),Mn=[{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}],op=Mn.filter(e=>!e.hideFromSwitcher);function np(e){return Mn.find(t=>t.code===e)}function Cn(e){const t=String(e||"").split("-")[0].toLowerCase();return Mn.some(o=>o.code===t)?t:"en"}const Oi="doxa-maps:locale";function sp(){try{const e=localStorage.getItem(Oi);if(e)return Cn(e)}catch{}return Cn(navigator==null?void 0:navigator.language)}function ip(e){try{localStorage.setItem(Oi,e)}catch{}}const lp=":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-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-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}",Mo="plugin-studio:mapbox-token",Co="plugin-studio:mapbox-token-url",Pi="plugin-studio:map-provider";function jt(e){try{return typeof window<"u"&&window.localStorage.getItem(e)||""}catch{return""}}function Vt(e,t){try{t?window.localStorage.setItem(e,t):window.localStorage.removeItem(e)}catch{}}const rp=` :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-token-dot { width:8px; height:8px; border-radius:50%; background:#b8bdb4; } .ps-token-dot.is-yours, .ps-token-dot.is-url { background:#92b195; } diff --git a/public/dx-maps/plugin-studio/plugin-studio/index.html b/public/dx-maps/plugin-studio/plugin-studio/index.html index 0f8bd5b28..5854900f6 100644 --- a/public/dx-maps/plugin-studio/plugin-studio/index.html +++ b/public/dx-maps/plugin-studio/plugin-studio/index.html @@ -26,7 +26,7 @@ - + - +