From 2d764b740d9cf47305c54d5b8b30e97ca593b8ff Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Tue, 29 Sep 2026 22:48:21 +0000 Subject: [PATCH] Big Picture's info button sits above its filter bar, so it can be clicked At top 46px the button lay in the empty end of Big Picture's filter area, but that bar is a positioned layer (z-index 55) painted over the button (z-index 20): nothing opened on click (rega, 1440, en and ar). The filter area wraps with width, so no spot below it is free at every width (at 1024 the stats row moves under a fixed offset). pos.raise lifts the BUTTON to z-index 60; the one-time pointer stays under the bar, so no filter is covered even visually. Measured on the built tree: no interactive element or text under the button, the button topmost at its centre, and a click opens the popup, at 1440, 1024 and 800, en and ar. --- plugin-designs/doxa-maps-spa/doxa-maps-spa.vue | 7 ++++++- plugin-designs/doxa-maps-spa/src/tabInfo.js | 5 ++++- public/dx-maps/doxa-maps-spa/doxa-maps-spa.js | 4 ++-- public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html | 2 +- public/dx-maps/doxa-maps-spa/doxa-maps-spa/index.html | 2 +- public/dx-maps/doxa-maps-spa/manifest.json | 4 ++-- public/dx-maps/manifest.json | 4 ++-- 7 files changed, 18 insertions(+), 10 deletions(-) diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 79746f554..bd676c404 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -138,7 +138,7 @@
-
{{ tr('loading', { label: tabLabel(t) }) }}
@@ -1659,6 +1659,11 @@ export default defineComponent({ documents this opt-out for exactly this case, and .vtl-host and plugin-studio's .ps-pane both set it. This pane was ported from .vtl-host and took two of its three lines. */ .dms-pane { position: absolute; inset: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; --profile-min-h: 0; } +/* A tab whose free corner lies over a positioned bar of the map's own (Big Picture's filter bar, z-index 55) + raises the info BUTTON above that bar (src/tabInfo.js pos.raise). Only the button: the one-time pointer + stays under the bar, so it covers no filter even visually. Measured: nothing interactive under the button, + the button topmost at its centre, and a click opens the popup, at 1440, 1024 and 800, en and ar. */ +.mi.dms-info-raise .mi-btn { z-index: 60; } .dms-slot { position: relative; min-height: 100%; } .dms-hint { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; diff --git a/plugin-designs/doxa-maps-spa/src/tabInfo.js b/plugin-designs/doxa-maps-spa/src/tabInfo.js index 912d2fb8b..80e311951 100644 --- a/plugin-designs/doxa-maps-spa/src/tabInfo.js +++ b/plugin-designs/doxa-maps-spa/src/tabInfo.js @@ -67,7 +67,10 @@ export const TAB_INFO = { }, 'dashboard-plus-grid': { storageKey: 'dashboard-plus-grid', - pos: { top: '46px' }, + // top 46px is the empty END of Big Picture's filter area at every width (1 row at 1440, 2 at 1024, + // 3 at 800), but that bar is a positioned layer (z-index 55) painted above the button, which left it + // unclickable (rega, 1440). raise lifts the BUTTON over the bar; the pointer stays under it. + pos: { top: '46px', raise: true }, leadKey: 'mapInfo.tab.dashboard-plus-grid.lead', takeawayKey: 'mapInfo.tab.dashboard-plus-grid.takeaway', // Big Picture's export is a spreadsheet, so its example is a real excerpt of one (sr): the six diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js index 90afeb69e..bc68465c7 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js @@ -164,7 +164,7 @@ @media (prefers-reduced-motion: reduce) { .vtl-nav, .vtl-collapse-ic, .vtl-tab, .vtl-tier, .vtl-fab, .vtl-scrim { transition: none !important; animation: none !important; } } -`,hh=lo({name:"VerticalTabsLayout",components:{BackToTopButton:oi},props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){return dl(fh,"vertical-tabs-layout"),{T:ph}},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{},hostEls:{}}},computed:{fabShown(){return this.narrow&&!this.header&&!this.navOpen},activeHostEl(){return this.hostEls[this.active]||null},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.$nextTick(()=>this.watchContextLoss(e)),this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},deepCanvases(e,t=[]){if(!e)return t;for(const o of e.querySelectorAll("*"))o.tagName==="CANVAS"&&t.push(o),o.shadowRoot&&this.deepCanvases(o.shadowRoot,t);return t},watchContextLoss(e){const t=this._hostSlots[e];if(t)for(const o of this.deepCanvases(t))o.__vtlLossBound||(o.__vtlLossBound=!0,o.addEventListener("webglcontextlost",()=>{this.hostState={...this.hostState,[e]:"lost"}},{once:!0}))},reloadHostElement(e){const t=this._hostSlots[e];t&&(t.innerHTML=""),this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"loading"},this.$nextTick(()=>this.mountHostElement(e))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(a=>a.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},uh(t.src).then(()=>dh(t.element)).then(()=>{rh(t.element,t.src),o.innerHTML="";const a=document.createElement(t.element),n=t.attrs||{};for(const s in n){const r=n[s],i=r!=null&&typeof r=="object"?JSON.stringify(r):String(r);try{a[s]=r}catch{}try{a.setAttribute(s,i)}catch{}}a.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(a);for(const s of[0,250,1500])setTimeout(()=>this.watchContextLoss(e),s);this.hostState={...this.hostState,[e]:"ready"}}).catch(a=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:a&&a.message||String(a)}}))},iconSvg(e){return e?nh(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(n=>n.key===e),a=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!a}},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 a=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")a=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")a=(o-1+t.length)%t.length;else if(e.key==="Home")a=0;else if(e.key==="End")a=t.length-1;else return;e.preventDefault();const n=t[a];this.pick(n),this.$nextTick(()=>{const s=this._tabEls[n];s&&s.focus&&s.focus()})}}}),gh={key:0,class:"vtl-top"},mh=["aria-expanded","aria-label"],bh={class:"vtl-brand"},$h={class:"vtl-title"},_h={class:"vtl-meta"},vh=["aria-expanded","aria-label"],yh={class:"vtl-body"},wh=["aria-label","aria-hidden","role","aria-orientation"],kh=["aria-expanded","aria-label"],xh=["innerHTML"],Th={class:"vtl-collapse-tx"},Lh=["aria-expanded","onClick"],Sh={key:0,class:"vtl-cap"},Oh={class:"vtl-tl"},Ph={key:1,class:"vtl-td"},Eh=["innerHTML"],Mh={key:1,class:"vtl-tier"},Ah={key:0,class:"vtl-cap"},Ch={class:"vtl-tl"},Ih={key:1,class:"vtl-td"},Nh={class:"vtl-rows"},Fh=["aria-selected","tabindex","onClick"],Dh=["innerHTML"],Rh={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Wh={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},zh={class:"vtl-tab-text"},Uh={class:"vtl-tab-label"},Hh={key:0,class:"vtl-tab-badge"},jh={key:0,class:"vtl-tab-sub"},Vh=["innerHTML"],Bh=["aria-selected","tabindex","onClick"],Kh=["innerHTML"],qh={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Gh={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Xh={class:"vtl-tab-text"},Yh={class:"vtl-tab-label"},Jh={key:0,class:"vtl-tab-sub"},Zh={class:"vtl-main"},Qh={class:"vtl-content"},eg=["hidden"],tg={key:0,class:"vtl-host-hint"},og={key:1,class:"vtl-host-hint"},ag=["onClick"],ng={key:2,class:"vtl-host-hint err"};function sg(e,t,o,a,n,s){const r=ka("BackToTopButton");return F(),H("div",{class:et(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}]),style:wo(e.fabShown?{"--map-fab-clearance":"calc(56px + env(safe-area-inset-bottom))","--map-fab-beside":"calc(64px + env(safe-area-inset-left))"}:null)},[e.header?(F(),H("header",gh,[M("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,mh),M("span",bh,[Io(e.$slots,"brand")]),M("b",$h,q(e.title),1),M("span",_h,[Io(e.$slots,"meta")])])):de("",!0),e.fabShown?(F(),H("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,vh)):de("",!0),e.narrow?(F(),uo(r,{key:2,target:e.activeHostEl,labels:{backToTop:e.T("actions.backToTop","Back to top")}},null,8,["target","labels"])):de("",!0),M("div",yh,[M("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"},[M("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))},[M("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,xh),M("span",Th,q(e.label("collapse")),1)],8,kh),e.$slots.rail?Io(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(F(!0),H(ne,{key:1},Ke(e.groups,i=>(F(),H("div",{class:"vtl-grp",key:i.key},[i.folder?(F(),H("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(i)),onClick:l=>e.toggleFolder(i.key)},[i.badge?(F(),H("span",Sh,q(i.badge),1)):de("",!0),M("span",Oh,q(i.label),1),i.count!=null?(F(),H("span",Ph,q(i.count),1)):de("",!0),M("span",{class:et(["vtl-chev",{open:!e.isFolderClosed(i)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Eh)],8,Lh)):(F(),H("div",Mh,[i.badge?(F(),H("span",Ah,q(i.badge),1)):de("",!0),M("span",Ch,q(i.label),1),i.count!=null?(F(),H("span",Ih,q(i.count),1)):de("",!0)])),_a(M("div",Nh,[(F(!0),H(ne,null,Ke(i.rows,l=>(F(),H("button",{key:l.key,type:"button",role:"tab",class:et(["vtl-tab",{active:l.key===e.active}]),"aria-selected":String(l.key===e.active),tabindex:l.key===e.active?0:-1,ref_for:!0,ref:c=>e.registerTab(l.key,c),onClick:c=>e.pick(l.key),onKeydown:t[3]||(t[3]=c=>e.onKey(c))},[l.icon?(F(),H("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(l.icon)},null,8,Dh)):l.emoji?(F(),H("span",Rh,q(l.emoji),1)):(F(),H("span",Wh,q(e.initial(l.label)),1)),M("span",zh,[M("span",Uh,[Dt(q(l.label),1),l.badge?(F(),H("span",Hh,q(l.badge),1)):de("",!0)]),l.sub?(F(),H("span",jh,[M("span",{innerHTML:l.sub},null,8,Vh)])):de("",!0)])],42,Fh))),128))],512),[[Aa,!i.folder||!e.isFolderClosed(i)]])]))),128)):(F(!0),H(ne,{key:2},Ke(e.items,i=>(F(),H("button",{key:i.key,type:"button",role:"tab",class:et(["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:l=>e.registerTab(i.key,l),onClick:l=>e.pick(i.key),onKeydown:t[4]||(t[4]=l=>e.onKey(l))},[i.icon?(F(),H("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(i.icon)},null,8,Kh)):i.emoji?(F(),H("span",qh,q(i.emoji),1)):(F(),H("span",Gh,q(e.initial(i.label)),1)),M("span",Xh,[M("span",Yh,q(i.label),1),i.sub?(F(),H("span",Jh,q(i.sub),1)):de("",!0)])],42,Bh))),128))],8,wh),M("main",Zh,[e.header?Io(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),M("div",Qh,[(F(!0),H(ne,null,Ke(e.mountedElementRows,i=>_a((F(),H("section",{key:i.key,class:"vtl-host",hidden:i.key!==e.active,ref_for:!0,ref:l=>{l?e.hostEls[i.key]=l:delete e.hostEls[i.key]}},[M("div",{class:"vtl-host-slot",ref_for:!0,ref:l=>e.setHostSlot(i.key,l)},null,512),e.hostState[i.key]==="loading"?(F(),H("div",tg,q(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",i.label)),1)):e.hostState[i.key]==="lost"?(F(),H("div",og,[Dt(q(e.T("messages.mapContextLost","This map was unloaded to free graphics memory."))+" ",1),M("button",{type:"button",class:"vtl-host-reload",onClick:l=>e.reloadHostElement(i.key)},q(e.T("buttons.reloadMap","Reload Map")),9,ag)])):e.hostState[i.key]==="error"?(F(),H("div",ng,[Dt(q(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",i.label)),1),t[5]||(t[5]=M("br",null,null,-1)),M("small",null,q(e.hostError[i.key]),1)])):de("",!0)],8,eg)),[[Aa,i.key===e.active]])),128)),Io(e.$slots,"default")])])])],6)}const rg=Nn(hh,[["render",sg],["styles",[ch]]]),as=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}],ig=as.filter(e=>!e.hideFromSwitcher);function lg(e){return as.find(t=>t.code===e)}function $l(e){const t=String(e||"").split("-")[0].toLowerCase();return as.some(o=>o.code===t)?t:"en"}const _l="doxa-maps:locale";function cg(){try{const e=localStorage.getItem(_l);if(e)return $l(e)}catch{}return $l(navigator==null?void 0:navigator.language)}function pg(e){try{localStorage.setItem(_l,e)}catch{}}const Qo={en:{backToTop:"Back to top","sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",close:"Close",help:"About this map",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",mobileNotBuilt:"not built for mobile",dismiss:"Dismiss",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse","tab.prayer-walk-planner":"Prayer Walk Planner","tab.upg-neighbor":"UPG Neighbor","tab.key-cities":"Key Cities","tab.all-people-groups":"All People Groups","tab.pplr-data-maps":"PPLR Data Maps","tab.wall-of-people-groups":"Wall of People Groups","tab.country-posters":"Country Posters","tab.doxa-vision-card":"Doxa Vision Card"},es:{backToTop:"Volver arriba","sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",close:"Cerrar",help:"Acerca de este mapa",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",mobileNotBuilt:"no diseñado para móvil",dismiss:"Cerrar",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer","tab.prayer-walk-planner":"Caminatas de oración","tab.upg-neighbor":"Vecino UPG","tab.key-cities":"Ciudades clave","tab.all-people-groups":"Todos los pueblos","tab.pplr-data-maps":"Mapas de datos PPLR","tab.wall-of-people-groups":"Muro de los pueblos","tab.country-posters":"Carteles por país","tab.doxa-vision-card":"Tarjeta de visión Doxa"},fr:{backToTop:"Retour en haut","sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",close:"Fermer",help:"À propos de cette carte",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",mobileNotBuilt:"pas conçu pour mobile",dismiss:"Fermer",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier","tab.prayer-walk-planner":"Marches de prière","tab.upg-neighbor":"Voisin UPG","tab.key-cities":"Villes clés","tab.all-people-groups":"Tous les peuples","tab.pplr-data-maps":"Cartes de données PPLR","tab.wall-of-people-groups":"Mur des peuples","tab.country-posters":"Affiches par pays","tab.doxa-vision-card":"Carte de vision Doxa"},de:{backToTop:"Nach oben","sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",close:"Schließen",help:"Über diese Karte",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",mobileNotBuilt:"nicht für Mobilgeräte",dismiss:"Schließen",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen","tab.prayer-walk-planner":"Gebetsspaziergänge","tab.upg-neighbor":"UPG-Nachbar","tab.key-cities":"Schlüsselstädte","tab.all-people-groups":"Alle Volksgruppen","tab.pplr-data-maps":"PPLR-Datenkarten","tab.wall-of-people-groups":"Wand der Volksgruppen","tab.country-posters":"Länderposter","tab.doxa-vision-card":"Doxa-Visionskarte"},pt:{backToTop:"Voltar ao topo","sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",close:"Fechar",help:"Sobre este mapa",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",mobileNotBuilt:"não feito para celular",dismiss:"Fechar",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher","tab.prayer-walk-planner":"Caminhadas de oração","tab.upg-neighbor":"Vizinho UPG","tab.key-cities":"Cidades-chave","tab.all-people-groups":"Todos os povos","tab.pplr-data-maps":"Mapas de dados PPLR","tab.wall-of-people-groups":"Mural dos povos","tab.country-posters":"Cartazes por país","tab.doxa-vision-card":"Cartão de visão Doxa"},it:{backToTop:"Torna su","sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",close:"Chiudi",help:"Informazioni su questa mappa",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",mobileNotBuilt:"non pensato per mobile",dismiss:"Chiudi",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi","tab.prayer-walk-planner":"Passeggiate di preghiera","tab.upg-neighbor":"Vicino UPG","tab.key-cities":"Città chiave","tab.all-people-groups":"Tutti i popoli","tab.pplr-data-maps":"Mappe dati PPLR","tab.wall-of-people-groups":"Muro dei popoli","tab.country-posters":"Poster per paese","tab.doxa-vision-card":"Scheda visione Doxa"},ro:{backToTop:"Sus","sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",close:"Închide",help:"Despre această hartă",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",mobileNotBuilt:"nu e făcut pentru mobil",dismiss:"Închide",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge","tab.prayer-walk-planner":"Plimbări de rugăciune","tab.upg-neighbor":"Vecin UPG","tab.key-cities":"Orașe-cheie","tab.all-people-groups":"Toate popoarele","tab.pplr-data-maps":"Hărți de date PPLR","tab.wall-of-people-groups":"Zidul popoarelor","tab.country-posters":"Afișe pe țări","tab.doxa-vision-card":"Card de viziune Doxa"},ru:{backToTop:"Наверх","sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",close:"Закрыть",help:"Об этой карте",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",mobileNotBuilt:"не для телефона",dismiss:"Закрыть",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть","tab.prayer-walk-planner":"Молитвенные прогулки","tab.upg-neighbor":"Сосед UPG","tab.key-cities":"Ключевые города","tab.all-people-groups":"Все народы","tab.pplr-data-maps":"Карты данных PPLR","tab.wall-of-people-groups":"Стена народов","tab.country-posters":"Плакаты по странам","tab.doxa-vision-card":"Карточка видения Doxa"},ar:{backToTop:"إلى الأعلى","sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",close:"إغلاق",help:"عن هذه الخريطة",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",mobileNotBuilt:"غير مُعدّ للهاتف",dismiss:"إغلاق",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي","tab.prayer-walk-planner":"جولات الصلاة","tab.upg-neighbor":"جار UPG","tab.key-cities":"المدن الرئيسية","tab.all-people-groups":"جميع الشعوب","tab.pplr-data-maps":"خرائط بيانات PPLR","tab.wall-of-people-groups":"جدار الشعوب","tab.country-posters":"ملصقات الدول","tab.doxa-vision-card":"بطاقة رؤية Doxa"},hi:{backToTop:"ऊपर जाएँ","sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",close:"बंद करें",help:"इस नक्शे के बारे में",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",mobileNotBuilt:"मोबाइल के लिए नहीं बना",dismiss:"बंद करें",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें","tab.prayer-walk-planner":"प्रार्थना पदयात्रा","tab.upg-neighbor":"UPG पड़ोसी","tab.key-cities":"प्रमुख शहर","tab.all-people-groups":"सभी जनसमूह","tab.pplr-data-maps":"PPLR डेटा मानचित्र","tab.wall-of-people-groups":"जनसमूहों की दीवार","tab.country-posters":"देश पोस्टर","tab.doxa-vision-card":"Doxa दर्शन कार्ड"},zh:{backToTop:"回到顶部","sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",close:"关闭",help:"关于此地图",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",mobileNotBuilt:"未针对手机设计",dismiss:"关闭",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠","tab.prayer-walk-planner":"祷告行走","tab.upg-neighbor":"UPG 邻居","tab.key-cities":"重点城市","tab.all-people-groups":"所有民族","tab.pplr-data-maps":"PPLR 数据地图","tab.wall-of-people-groups":"民族之墙","tab.country-posters":"国家海报","tab.doxa-vision-card":"Doxa 异象卡"}},ns=Object.keys(Qo);function ug(e){return Object.prototype.hasOwnProperty.call(Qo.en,e)}function Va(e,t,o){let n=(Qo[e]||Qo.en)[t]??Qo.en[t]??t;if(o)for(const s in o)n=n.split("{"+s+"}").join(String(o[s]));return n}const vl={en:{"prayer-walk-planner":{what:"Plan a prayer walk: draw the areas your teams will cover and print each one as a one-page map.",how:"Draw a zone, name it, select the zones you need and press Print. Each zone prints on its own page with coordinates, one map per team."},"gospel-internet":{what:"See which of the ~2,000 people groups already have gospel resources in their language, and where the internet can carry those resources to them.",how:"Explore the language tree, the bounded and centered sets and the map. Pick a list on the side to narrow every view."},"country-posters":{what:"Printable prayer posters, one per country, showing its people groups.",how:"Pick a country from the poster list or on the map, then print it straight from your browser."},"all-people-groups":{what:"Every people group on earth on one map, colored by how reached it is, with the DOXA prayer set highlighted.",how:"Click a category in the legend to show only those groups. Click a dot for its details and prayer link."},"doxa-vision-card":{what:"The remaining task in one card: all people groups, then the unreached, then the frontier, then the DOXA prayer set.",how:"Read it from top to bottom. Every number is computed from the people-group data, not typed in."},"pplr-data-maps":{what:"People-group research data on maps: language families, people clusters, religions and data-source coverage.",how:"Choose a view from the tabs, then use the legend to highlight a family, cluster or religion on the map."},"wall-of-people-groups":{what:"Every DOXA people group on one wall, to bless them. In Bless mode the wall is the printable poster (5 × 8 ft by default), each group with a blessing verse; in Social mode it is a shared prayer wall.",how:"Bless: look around the poster exactly as it will print, pick a size and press Print HD poster. Social: pray for a group, read or leave comments, and share its prayer page."}},es:{"prayer-walk-planner":{what:"Planifique una caminata de oración: dibuje las zonas que recorrerán sus equipos e imprima cada una como un mapa de una página.",how:"Dibuje una zona, póngale nombre, seleccione las zonas que necesita y pulse Imprimir. Cada zona se imprime en su propia página con coordenadas: un mapa por equipo."},"gospel-internet":{what:"Vea cuáles de los ~2000 grupos de pueblos ya tienen recursos del evangelio en su idioma, y dónde internet puede llevárselos.",how:"Explore el árbol de idiomas, los conjuntos delimitado y centrado y el mapa. Elija una lista al lado para acotar cada vista."},"country-posters":{what:"Carteles de oración para imprimir, uno por país, con sus grupos de pueblos.",how:"Elija un país en la lista de carteles o en el mapa, e imprímalo directamente desde el navegador."},"all-people-groups":{what:"Todos los grupos de pueblos del mundo en un mapa, coloreados según lo alcanzados que están, con el conjunto de oración de DOXA resaltado.",how:"Haga clic en una categoría de la leyenda para ver solo esos grupos. Haga clic en un punto para ver sus datos y el enlace de oración."},"doxa-vision-card":{what:"La tarea pendiente en una tarjeta: todos los grupos de pueblos, luego los no alcanzados, luego la frontera y luego el conjunto de oración de DOXA.",how:"Léala de arriba abajo. Cada cifra se calcula a partir de los datos, no se escribe a mano."},"pplr-data-maps":{what:"Datos de investigación sobre grupos de pueblos en mapas: familias lingüísticas, agrupaciones de pueblos, religiones y cobertura de fuentes.",how:"Elija una vista en las pestañas y use la leyenda para resaltar una familia, agrupación o religión en el mapa."},"wall-of-people-groups":{what:"Todos los grupos de pueblos de DOXA en un muro, para bendecirlos. En el modo Bendecir el muro es el póster para imprimir (5 × 8 pies por defecto), cada grupo con un versículo de bendición; en el modo Social es un muro de oración compartido.",how:"Bendecir: recorra el póster tal como se imprimirá, elija un tamaño y pulse Imprimir póster HD. Social: ore por un grupo, lea o deje comentarios y comparta su página de oración."}},fr:{"prayer-walk-planner":{what:"Préparez une marche de prière : dessinez les zones que vos équipes parcourront et imprimez chacune sur une carte d’une page.",how:"Dessinez une zone, nommez-la, sélectionnez les zones voulues et cliquez sur Imprimer. Chaque zone s’imprime sur sa propre page avec ses coordonnées : une carte par équipe."},"gospel-internet":{what:"Voyez lesquels des ~2 000 groupes de peuples ont déjà des ressources de l’Évangile dans leur langue, et où internet peut les leur apporter.",how:"Explorez l’arbre des langues, les ensembles délimité et centré et la carte. Choisissez une liste sur le côté pour affiner chaque vue."},"country-posters":{what:"Des affiches de prière à imprimer, une par pays, avec ses groupes de peuples.",how:"Choisissez un pays dans la liste des affiches ou sur la carte, puis imprimez-le directement depuis le navigateur."},"all-people-groups":{what:"Tous les groupes de peuples du monde sur une carte, colorés selon leur degré d’atteinte, avec l’ensemble de prière DOXA mis en valeur.",how:"Cliquez sur une catégorie de la légende pour n’afficher que ces groupes. Cliquez sur un point pour ses détails et son lien de prière."},"doxa-vision-card":{what:"La tâche restante en une carte : tous les groupes de peuples, puis les non atteints, puis la frontière, puis l’ensemble de prière DOXA.",how:"Lisez-la de haut en bas. Chaque chiffre est calculé à partir des données, pas saisi à la main."},"pplr-data-maps":{what:"Des données de recherche sur les groupes de peuples, en cartes : familles de langues, grappes de peuples, religions et couverture des sources.",how:"Choisissez une vue dans les onglets, puis utilisez la légende pour mettre en valeur une famille, une grappe ou une religion."},"wall-of-people-groups":{what:"Tous les groupes de peuples DOXA sur un seul mur, pour les bénir. En mode Bénir, le mur est l’affiche à imprimer (5 × 8 pieds par défaut), chaque groupe avec un verset de bénédiction ; en mode Social, c’est un mur de prière partagé.",how:"Bénir : parcourez l’affiche telle qu’elle s’imprimera, choisissez une taille et appuyez sur Imprimer l’affiche HD. Social : priez pour un groupe, lisez ou laissez des commentaires et partagez sa page de prière."}},de:{"prayer-walk-planner":{what:"Einen Gebetsspaziergang planen: die Gebiete Ihrer Teams zeichnen und jedes als einseitige Karte drucken.",how:"Zeichnen Sie ein Gebiet, benennen Sie es, wählen Sie die nötigen Gebiete und drücken Sie auf Drucken. Jedes Gebiet wird mit Koordinaten auf einer eigenen Seite gedruckt: eine Karte pro Team."},"gospel-internet":{what:"Sehen, welche der ~2.000 Volksgruppen schon Evangeliumsressourcen in ihrer Sprache haben und wo das Internet sie zu ihnen bringen kann.",how:"Erkunden Sie den Sprachbaum, die begrenzte und die zentrierte Menge und die Karte. Wählen Sie seitlich eine Liste, um jede Ansicht einzugrenzen."},"country-posters":{what:"Druckbare Gebetsplakate, eines pro Land, mit seinen Volksgruppen.",how:"Wählen Sie ein Land in der Plakatliste oder auf der Karte und drucken Sie es direkt aus dem Browser."},"all-people-groups":{what:"Alle Volksgruppen der Welt auf einer Karte, nach Erreichtheit eingefärbt, mit dem DOXA-Gebetsset hervorgehoben.",how:"Klicken Sie auf eine Kategorie der Legende, um nur diese Gruppen zu zeigen. Klicken Sie auf einen Punkt für Details und den Gebetslink."},"doxa-vision-card":{what:"Die verbleibende Aufgabe auf einer Karte: alle Volksgruppen, dann die unerreichten, dann die Frontier-Gruppen, dann das DOXA-Gebetsset.",how:"Lesen Sie sie von oben nach unten. Jede Zahl wird aus den Daten berechnet, nicht eingetippt."},"pplr-data-maps":{what:"Forschungsdaten zu Volksgruppen auf Karten: Sprachfamilien, Volkscluster, Religionen und Quellenabdeckung.",how:"Wählen Sie oben eine Ansicht und heben Sie mit der Legende eine Familie, einen Cluster oder eine Religion hervor."},"wall-of-people-groups":{what:"Jede DOXA-Volksgruppe auf einer Wand, um sie zu segnen. Im Modus Segnen ist die Wand das druckbare Poster (standardmäßig 5 × 8 Fuß), jede Gruppe mit einem Segensvers; im Modus Sozial ist sie eine gemeinsame Gebetswand.",how:"Segnen: Sehen Sie sich das Poster genau so an, wie es gedruckt wird, wählen Sie eine Größe und drücken Sie HD-Poster drucken. Sozial: Beten Sie für eine Gruppe, lesen oder schreiben Sie Kommentare und teilen Sie ihre Gebetsseite."}},pt:{"prayer-walk-planner":{what:"Planeje uma caminhada de oração: desenhe as áreas que suas equipes vão cobrir e imprima cada uma como um mapa de uma página.",how:"Desenhe uma zona, dê um nome, selecione as zonas necessárias e clique em Imprimir. Cada zona sai em sua própria página com coordenadas: um mapa por equipe."},"gospel-internet":{what:"Veja quais dos ~2.000 grupos de povos já têm recursos do evangelho no seu idioma, e onde a internet pode levá-los até eles.",how:"Explore a árvore de idiomas, os conjuntos delimitado e centrado e o mapa. Escolha uma lista ao lado para filtrar cada vista."},"country-posters":{what:"Cartazes de oração para imprimir, um por país, com seus grupos de povos.",how:"Escolha um país na lista de cartazes ou no mapa e imprima direto do navegador."},"all-people-groups":{what:"Todos os grupos de povos do mundo num mapa, coloridos pelo grau de alcance, com o conjunto de oração da DOXA em destaque.",how:"Clique numa categoria da legenda para ver só esses grupos. Clique num ponto para ver detalhes e o link de oração."},"doxa-vision-card":{what:"A tarefa restante num cartão: todos os grupos de povos, depois os não alcançados, depois a fronteira, depois o conjunto de oração da DOXA.",how:"Leia de cima para baixo. Cada número é calculado a partir dos dados, não digitado."},"pplr-data-maps":{what:"Dados de pesquisa sobre grupos de povos em mapas: famílias linguísticas, agrupamentos de povos, religiões e cobertura das fontes.",how:"Escolha uma vista nas abas e use a legenda para destacar uma família, agrupamento ou religião no mapa."},"wall-of-people-groups":{what:"Todos os grupos de povos da DOXA num só mural, para abençoá-los. No modo Abençoar, o mural é o cartaz para imprimir (5 × 8 pés por padrão), cada grupo com um versículo de bênção; no modo Social, é um mural de oração partilhado.",how:"Abençoar: percorra o cartaz tal como será impresso, escolha um tamanho e prima Imprimir cartaz HD. Social: ore por um grupo, leia ou deixe comentários e partilhe a sua página de oração."}},it:{"prayer-walk-planner":{what:"Pianifica una camminata di preghiera: disegna le zone che le tue squadre percorreranno e stampa ognuna come mappa di una pagina.",how:"Disegna una zona, dalle un nome, seleziona le zone che servono e premi Stampa. Ogni zona si stampa su una pagina con le coordinate: una mappa per squadra."},"gospel-internet":{what:"Scopri quali dei ~2.000 gruppi etnici hanno già risorse del vangelo nella loro lingua, e dove internet può portargliele.",how:"Esplora l’albero delle lingue, gli insiemi delimitato e centrato e la mappa. Scegli un elenco a lato per restringere ogni vista."},"country-posters":{what:"Poster di preghiera da stampare, uno per paese, con i suoi gruppi etnici.",how:"Scegli un paese dall’elenco dei poster o sulla mappa e stampalo direttamente dal browser."},"all-people-groups":{what:"Tutti i gruppi etnici del mondo su una mappa, colorati secondo quanto sono raggiunti, con l’insieme di preghiera DOXA evidenziato.",how:"Clicca una categoria della legenda per mostrare solo quei gruppi. Clicca un punto per dettagli e link di preghiera."},"doxa-vision-card":{what:"Il compito rimanente in una scheda: tutti i gruppi etnici, poi i non raggiunti, poi la frontiera, poi l’insieme di preghiera DOXA.",how:"Leggila dall’alto in basso. Ogni numero è calcolato dai dati, non digitato."},"pplr-data-maps":{what:"Dati di ricerca sui gruppi etnici su mappa: famiglie linguistiche, cluster di popoli, religioni e copertura delle fonti.",how:"Scegli una vista dalle schede, poi usa la legenda per evidenziare una famiglia, un cluster o una religione."},"wall-of-people-groups":{what:"Tutti i gruppi etnici DOXA su un solo muro, per benedirli. In modalità Benedire il muro è il poster da stampare (5 × 8 piedi di default), ogni gruppo con un versetto di benedizione; in modalità Social è un muro di preghiera condiviso.",how:"Benedire: esplora il poster esattamente come verrà stampato, scegli una dimensione e premi Stampa poster HD. Social: prega per un gruppo, leggi o lascia commenti e condividi la sua pagina di preghiera."}},ro:{"prayer-walk-planner":{what:"Planificați o plimbare de rugăciune: desenați zonele pe care le vor parcurge echipele și tipăriți fiecare ca hartă de o pagină.",how:"Desenați o zonă, dați-i un nume, selectați zonele necesare și apăsați Tipărire. Fiecare zonă se tipărește pe o pagină, cu coordonate: câte o hartă pentru fiecare echipă."},"gospel-internet":{what:"Vedeți care dintre cele ~2.000 de grupuri de popoare au deja resurse ale Evangheliei în limba lor și unde le poate duce internetul.",how:"Explorați arborele limbilor, mulțimile delimitată și centrată și harta. Alegeți o listă din lateral pentru a restrânge fiecare vedere."},"country-posters":{what:"Afișe de rugăciune de tipărit, câte unul pentru fiecare țară, cu grupurile ei de popoare.",how:"Alegeți o țară din lista de afișe sau de pe hartă și tipăriți-o direct din browser."},"all-people-groups":{what:"Toate grupurile de popoare ale lumii pe o hartă, colorate după cât sunt de atinse, cu setul de rugăciune DOXA evidențiat.",how:"Faceți clic pe o categorie din legendă pentru a afișa doar acele grupuri. Faceți clic pe un punct pentru detalii și linkul de rugăciune."},"doxa-vision-card":{what:"Sarcina rămasă într-un card: toate grupurile de popoare, apoi cele neatinse, apoi cele de frontieră, apoi setul de rugăciune DOXA.",how:"Citiți-l de sus în jos. Fiecare număr este calculat din date, nu tastat."},"pplr-data-maps":{what:"Date de cercetare despre grupurile de popoare pe hărți: familii de limbi, grupuri de popoare, religii și acoperirea surselor.",how:"Alegeți o vedere din file, apoi folosiți legenda pentru a evidenția o familie, un grup sau o religie."},"wall-of-people-groups":{what:"Toate grupurile de popoare DOXA pe un singur perete, ca să le binecuvântăm. În modul Binecuvântare, peretele este afișul de tipărit (5 × 8 picioare implicit), fiecare grup cu un verset de binecuvântare; în modul Social este un perete de rugăciune comun.",how:"Binecuvântare: explorați afișul exact cum se va tipări, alegeți o dimensiune și apăsați Tipărește afișul HD. Social: rugați-vă pentru un grup, citiți sau lăsați comentarii și distribuiți pagina lui de rugăciune."}},ru:{"prayer-walk-planner":{what:"Спланируйте молитвенную прогулку: нарисуйте районы для ваших команд и распечатайте каждый как карту на одну страницу.",how:"Нарисуйте зону, назовите её, выберите нужные зоны и нажмите «Печать». Каждая зона печатается на отдельной странице с координатами — по карте на команду."},"gospel-internet":{what:"Узнайте, у каких из ~2000 народов уже есть евангельские материалы на их языке и где интернет может донести их до них.",how:"Исследуйте языковое дерево, ограниченное и центрированное множества и карту. Выберите список сбоку, чтобы сузить любой вид."},"country-posters":{what:"Молитвенные плакаты для печати, по одному на страну, с её народами.",how:"Выберите страну в списке плакатов или на карте и распечатайте прямо из браузера."},"all-people-groups":{what:"Все народы мира на одной карте, окрашенные по степени достигнутости, с выделенным молитвенным набором DOXA.",how:"Нажмите категорию в легенде, чтобы показать только эти группы. Нажмите точку, чтобы увидеть сведения и ссылку для молитвы."},"doxa-vision-card":{what:"Оставшаяся задача на одной карточке: все народы, затем недостигнутые, затем пограничные, затем молитвенный набор DOXA.",how:"Читайте сверху вниз. Каждое число вычислено из данных, а не введено вручную."},"pplr-data-maps":{what:"Исследовательские данные о народах на картах: языковые семьи, кластеры народов, религии и охват источников.",how:"Выберите вид во вкладках, затем выделите семью, кластер или религию с помощью легенды."},"wall-of-people-groups":{what:"Все народы DOXA на одной стене, чтобы благословлять их. В режиме «Благословение» стена — это плакат для печати (по умолчанию 5 × 8 футов), у каждого народа — стих благословения; в режиме «Соцсеть» это общая молитвенная стена.",how:"«Благословение»: просмотрите плакат точно таким, каким он будет напечатан, выберите размер и нажмите «Печать плаката HD». «Соцсеть»: молитесь о народе, читайте и оставляйте комментарии, делитесь его молитвенной страницей."}},ar:{"prayer-walk-planner":{what:"خطِّط لجولة صلاة: ارسم المناطق التي ستغطيها فرقك واطبع كل منطقة خريطةً من صفحة واحدة.",how:"ارسم منطقة وسمِّها، واختر المناطق التي تحتاجها ثم اضغط «طباعة». تُطبع كل منطقة في صفحة مستقلة مع إحداثياتها: خريطة لكل فريق."},"gospel-internet":{what:"اعرف أيَّ الشعوب الألفين تقريبًا لديها بالفعل موارد للإنجيل بلغتها، وأين يمكن للإنترنت أن يوصلها إليها.",how:"استكشف شجرة اللغات والمجموعتين المحدودة والمتمركزة والخريطة. اختر قائمة من الجانب لتضييق كل عرض."},"country-posters":{what:"ملصقات صلاة للطباعة، ملصق لكل بلد، تُظهر شعوبه.",how:"اختر بلدًا من قائمة الملصقات أو على الخريطة، ثم اطبعه مباشرة من المتصفح."},"all-people-groups":{what:"كل شعوب العالم على خريطة واحدة، ملوَّنة بحسب درجة وصول الإنجيل إليها، مع إبراز مجموعة صلاة DOXA.",how:"انقر فئة في مفتاح الخريطة لعرض تلك الشعوب فقط. انقر نقطة لترى تفاصيلها ورابط الصلاة."},"doxa-vision-card":{what:"المهمة المتبقية في بطاقة واحدة: كل الشعوب، ثم غير المُبشَّرة، ثم الحدودية، ثم مجموعة صلاة DOXA.",how:"اقرأها من الأعلى إلى الأسفل. كل رقم محسوب من البيانات، وليس مكتوبًا يدويًا."},"pplr-data-maps":{what:"بيانات بحثية عن الشعوب على خرائط: العائلات اللغوية والعناقيد الشعبية والأديان وتغطية المصادر.",how:"اختر عرضًا من التبويبات، ثم استخدم مفتاح الخريطة لإبراز عائلة أو عنقود أو دين."},"wall-of-people-groups":{what:"كل شعوب DOXA على جدار واحد لنباركها. في وضع «بركة» يكون الجدار هو الملصق الجاهز للطباعة (5 × 8 أقدام افتراضيًا)، ولكل شعب آية بركة؛ وفي وضع «تفاعلي» يكون جدار صلاة مشتركًا.",how:"«بركة»: تجوّل في الملصق كما سيُطبع تمامًا، واختر المقاس ثم اضغط «طباعة ملصق عالي الدقة». «تفاعلي»: صلِّ لأجل شعب، واقرأ التعليقات أو اكتب تعليقًا، وشارك صفحة الصلاة الخاصة به."}},hi:{"prayer-walk-planner":{what:"प्रार्थना-यात्रा की योजना बनाएँ: अपनी टीमों के क्षेत्र बनाएँ और हर क्षेत्र को एक पन्ने के नक्शे के रूप में छापें।",how:"एक क्षेत्र बनाएँ, उसे नाम दें, ज़रूरी क्षेत्र चुनें और प्रिंट दबाएँ। हर क्षेत्र निर्देशांकों के साथ अपने पन्ने पर छपता है: हर टीम के लिए एक नक्शा।"},"gospel-internet":{what:"देखें कि लगभग 2,000 जन-समूहों में से किनके पास उनकी भाषा में सुसमाचार के संसाधन पहले से हैं, और इंटरनेट उन्हें कहाँ तक पहुँचा सकता है।",how:"भाषा-वृक्ष, सीमित और केंद्रित समुच्चय और नक्शा देखें। हर दृश्य को सीमित करने के लिए बगल में एक सूची चुनें।"},"country-posters":{what:"छापने योग्य प्रार्थना-पोस्टर, हर देश के लिए एक, उसके जन-समूहों के साथ।",how:"पोस्टर सूची में या नक्शे पर कोई देश चुनें, फिर सीधे ब्राउज़र से छापें।"},"all-people-groups":{what:"दुनिया के सभी जन-समूह एक नक्शे पर, इस आधार पर रंगे हुए कि वे कितने पहुँचे हुए हैं, DOXA प्रार्थना-समूह उभारा हुआ।",how:"केवल वे समूह देखने के लिए लीजेंड में एक श्रेणी पर क्लिक करें। विवरण और प्रार्थना-लिंक के लिए किसी बिंदु पर क्लिक करें।"},"doxa-vision-card":{what:"बचा हुआ काम एक कार्ड में: सभी जन-समूह, फिर अपहुँचे, फिर सीमांत, फिर DOXA प्रार्थना-समूह।",how:"इसे ऊपर से नीचे पढ़ें। हर संख्या आँकड़ों से गणना की गई है, हाथ से नहीं लिखी गई।"},"pplr-data-maps":{what:"जन-समूहों पर शोध-आँकड़े नक्शों पर: भाषा-परिवार, जन-क्लस्टर, धर्म और स्रोतों की पहुँच।",how:"टैब से कोई दृश्य चुनें, फिर लीजेंड से किसी परिवार, क्लस्टर या धर्म को नक्शे पर उभारें।"},"wall-of-people-groups":{what:"हर DOXA जन-समूह एक ही दीवार पर, उन्हें आशीष देने के लिए। आशीष मोड में दीवार छापने योग्य पोस्टर है (डिफ़ॉल्ट 5 × 8 फ़ुट), हर समूह के साथ आशीष का एक पद; सामाजिक मोड में यह एक साझा प्रार्थना दीवार है।",how:"आशीष: पोस्टर को ठीक वैसा ही देखें जैसा वह छपेगा, आकार चुनें और HD पोस्टर छापें दबाएँ। सामाजिक: किसी समूह के लिए प्रार्थना करें, टिप्पणियाँ पढ़ें या लिखें, और उसका प्रार्थना पेज साझा करें।"}},zh:{"prayer-walk-planner":{what:"规划祷告行走:画出各小组要走的区域,把每个区域打印成一页地图。",how:"画一个区域并命名,选择需要的区域后点“打印”。每个区域连同坐标单独打印一页:每个小组一张地图。"},"gospel-internet":{what:"看看约 2,000 个族群中,哪些已经有母语的福音资源,以及互联网能把这些资源带到哪里。",how:"浏览语言树、有界集与中心集以及地图。在侧边选择一个名单,可缩小每个视图的范围。"},"country-posters":{what:"可打印的祷告海报,每个国家一张,列出其中的族群。",how:"在海报列表或地图上选择一个国家,然后直接从浏览器打印。"},"all-people-groups":{what:"世界上所有族群都在一张地图上,按福音进展着色,并突出显示 DOXA 祷告名单。",how:"点击图例中的类别,只显示这些族群。点击一个点,查看详情和祷告链接。"},"doxa-vision-card":{what:"一张卡片看清剩下的使命:所有族群,然后是未得之民,再是前沿族群,最后是 DOXA 祷告名单。",how:"从上往下读。每个数字都由数据计算得出,而不是手工填写。"},"pplr-data-maps":{what:"族群研究数据地图:语系、民族集群、宗教和数据来源覆盖情况。",how:"在标签页中选择一个视图,然后用图例在地图上突出显示某个语系、集群或宗教。"},"wall-of-people-groups":{what:"所有 DOXA 族群都在一面墙上,为要祝福他们。在“祝福”模式下,这面墙就是可打印的海报(默认 5 × 8 英尺),每个族群配一节祝福经文;在“社交”模式下,它是一面共同的祷告墙。",how:"祝福:按打印时的样子浏览海报,选择尺寸,然后点击“打印高清海报”。社交:为某个族群祷告,阅读或留下评论,并分享它的祷告页面。"}}};function yl(e,t){var a;const o=String(t||"en").toLowerCase().split(/[-_]/)[0];return((a=vl[o])==null?void 0:a[e])||vl.en[e]||null}const wl="previews/examples/middle-east-core",kl=Array.from({length:12},(e,t)=>`${wl}/packet-p${String(t+1).padStart(2,"0")}.webp`),dg=Array.from({length:70},(e,t)=>`${wl}/card-${String(t+1).padStart(2,"0")}.webp`),fg={"upg-100":{storageKey:"upg-100",pos:{side:"56px",narrow:{placement:"top-left",side:"12px"}},leadKey:"mapInfo.tab.upg-100.lead",takeawayKey:"mapInfo.tab.upg-100.takeaway",examples:[{kind:"image",src:"previews/middle-east-core.webp",full:"posters/middle-east-core.html"},{kind:"pages",pages:kl},{kind:"deck",cards:dg}]},"regions-dashboard":{storageKey:"regions-dashboard",pos:{side:"56px",narrow:{placement:"top-left",side:"8px"}},leadKey:"mapInfo.tab.regions-dashboard.lead",takeawayKey:"mapInfo.tab.regions-dashboard.takeaway",noteKey:"mapInfo.tab.regions-dashboard.note",examples:[]},"dashboard-plus-grid":{storageKey:"dashboard-plus-grid",pos:{top:"46px"},leadKey:"mapInfo.tab.dashboard-plus-grid.lead",takeawayKey:"mapInfo.tab.dashboard-plus-grid.takeaway",examples:[{kind:"table",columns:[{key:"mapInfo.col.peopleGroup"},{key:"mapInfo.col.country"},{key:"mapInfo.col.region"},{key:"mapInfo.col.population"}],rows:[["Hararghe Oromo","Ethiopia","Africa",6355e3],["Gaaliin","Sudan","Middle East",452e4],["White Moor","Morocco","Middle East",312e4],["Baloch, Western","Iran","Middle East",3035e3],["Baloch, Eastern","Pakistan","Asia",298e4],["Bhuiyar","India","Asia",2925e3]],total:2107}]},"research-map-plus-grid":{storageKey:"research-map-plus-grid",pos:{top:"56px",side:"56px"},leadKey:"mapInfo.tab.research-map-plus-grid.lead",takeawayKey:"mapInfo.tab.research-map-plus-grid.takeaway",examples:[{kind:"pages",pages:kl,titleKey:"mapInfo.tab.research-map-plus-grid.examplePacket"}]},"prayer-map":{storageKey:"prayer-map",pos:{side:"56px"},leadKey:"mapInfo.tab.prayer-map.lead",takeawayKey:"mapInfo.tab.prayer-map.takeaway",examples:[]},"cities-internet":{storageKey:"cities-internet",pos:{side:"56px",narrow:{side:"4px"}},leadKey:"mapInfo.tab.cities-internet.lead",takeawayKey:"mapInfo.tab.cities-internet.takeaway",examples:[]},"gospel-resources":{storageKey:"gospel-resources",pos:{side:"56px",narrow:{side:"4px"}},leadKey:"mapInfo.tab.gospel-resources.lead",takeawayKey:"mapInfo.tab.gospel-resources.takeaway",examples:[]}};function xl(e,t){return t?String(e).replace(/\{(\w+)\}/g,(o,a)=>t[a]!=null?String(t[a]):o):String(e)}function Tl(e,t,o=os()){const a=String(e).split(/\s*\|\s*/);if(a.length<2||typeof t!="number")return String(e);const n=String(o||"en").split("-")[0].toLowerCase();if(n!=="en")return a[ul(t,a.length,n)];const s=Math.abs(t),r=a.length===2?s?s>1?1:0:1:s?Math.min(s,2):0;return a[Math.min(r,a.length-1)]}function ss(e,t){const o=String(t);return e&&!o.startsWith(`${e}.`)?`${e}.${o}`:o}function hg(e,t={}){const o=typeof t.fallback=="function"?(a,n,s)=>xl(Tl(t.fallback(ss(e,a),n)??a,s),n):(a,n,s)=>xl(Tl($o(ss(e,a))??a,s),n);try{const a=ja();return(n,s,r)=>{const i=ss(e,n),l=typeof r=="number"?a.t(i,s||{},r):a.t(i,s||{});return l===i?o(n,s,r):l}}catch{return o}}const gg=["dir","lang"],mg=["aria-label","title","aria-expanded"],bg={viewBox:"0 0 16 16",focusable:"false"},$g={key:0,d:"M14 8H3M7 3.5 2.5 8 7 12.5",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},_g={key:1,d:"M2 8h11M9 3.5 13.5 8 9 12.5",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},vg=["aria-labelledby"],yg={class:"mi-head"},wg=["id"],kg=["aria-label"],xg={class:"mi-body"},Tg={key:0,class:"mi-lead"},Lg={key:1,class:"mi-takeaway"},Sg=["src","alt","onError"],Og={key:0,class:"mi-center"},Pg=["href"],Eg=["aria-label","onClick"],Mg=["src","alt","onError"],Ag={key:0,class:"mi-center"},Cg=["onClick"],Ig={class:"mi-center"},Ng=["onClick"],Fg={class:"mi-pages"},Dg=["aria-label","onClick"],Rg=["src","alt"],Wg={class:"mi-center"},zg=["onClick"],Ug=["aria-label","onClick"],Hg=["src","onError"],jg={class:"mi-center"},Vg=["onClick"],Bg={class:"mi-center"},Kg=["onClick"],qg={class:"mi-grid"},Gg=["src","alt"],Xg={class:"mi-center"},Yg=["onClick"],Jg={class:"mi-table-wrap"},Zg={class:"mi-table"},Qg={key:0,class:"mi-more"},em={key:2,class:"mi-note"},tm={class:"mi-foot"},om=["checked"],Ba="dxmaps.mapInfo.seen.",rs="dxmaps.mapInfo.pointer",is="dxmaps:mapinfo-pointer-off",am={__name:"MapInfo",props:{storageKey:{type:String,required:!0},leadKey:{type:String,default:""},lead:{type:String,default:""},takeawayKey:{type:String,default:""},takeaway:{type:String,default:""},noteKey:{type:String,default:""},note:{type:String,default:""},examples:{type:Array,default:()=>[]},assetsBase:{type:String,default:""},placement:{type:String,default:"top-right",validator:e=>["top-right","top-left"].includes(e)},locale:{type:String,default:""}},setup(e){const t=e,o=De(0);function a(){return o.value,String(t.locale||os()||"en").split("-")[0].toLowerCase()}const n=hg("",{fallback:I=>$o(I,a())}),s=(I,X)=>I?n(I):X,r=I=>{try{return new Intl.NumberFormat(a()).format(I)}catch{return String(I)}},i=()=>a()==="ar";function l(I){try{return window.localStorage.getItem(I)}catch{return null}}function c(I,X){try{window.localStorage.setItem(I,X)}catch{}}const d=De(!1),g=De(!1);function $(){g.value=l(rs)==="off",d.value=!g.value&&l(Ba+t.storageKey)!=="1"}function T(){$()}function R(I){(!I||I.key===rs||I.key===Ba+t.storageKey)&&$()}Co(()=>{$(),window.addEventListener(is,T),window.addEventListener("storage",R)}),_n(()=>{window.removeEventListener(is,T),window.removeEventListener("storage",R)});function P(I){g.value=I,c(rs,I?"off":"on"),d.value=!I&&l(Ba+t.storageKey)!=="1";try{window.dispatchEvent(new CustomEvent(is))}catch{}}const D=De(!1),W=De(null),V=De(null),y=Oo({}),b=Oo({});async function E(){var I;o.value++,D.value=!0,await ba(),(I=V.value)==null||I.focus()}async function L(){var I;D.value=!1,c(Ba+t.storageKey,"1"),d.value=!1,await ba(),(I=W.value)==null||I.focus()}const C=De(null);function B(I){const X=C.value;if(!X)return;const Y=[...X.querySelectorAll('button, a[href], input, [tabindex]:not([tabindex="-1"])')].filter(Oe=>!Oe.disabled&&Oe.offsetParent!==null);if(!Y.length)return;const ce=X.getRootNode().activeElement,te=Y[0],ae=Y[Y.length-1];I.shiftKey&&(ce===te||!X.contains(ce))?(I.preventDefault(),ae.focus()):!I.shiftKey&&(ce===ae||!X.contains(ce))&&(I.preventDefault(),te.focus())}function j(I){I.key==="Escape"?(I.stopPropagation(),L()):I.key==="Tab"&&B(I)}function se(I){y[I]=!y[I]}function ye(I){const X=I&&I.target;X&&(X.style.display="none")}function Q(I){const X=String(I||"");return!X||/^(?:[a-z]+:|\/)/i.test(X)||!t.assetsBase?X:t.assetsBase.replace(/\/+$/,"")+"/"+X.replace(/^\.?\//,"")}const we={image:"mapInfo.poster",pages:"mapInfo.packet",deck:"mapInfo.cards",table:"mapInfo.spreadsheet"};function Ue(I){return n(I.titleKey||we[I.kind]||"mapInfo.example")}const $t=I=>(I.cards||[]).slice(0,5),he=I=>I&&typeof I=="object"?I.key?n(I.key):String(I.label||""):String(I??"");return dl(` +`,hh=lo({name:"VerticalTabsLayout",components:{BackToTopButton:oi},props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){return dl(fh,"vertical-tabs-layout"),{T:ph}},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{},hostEls:{}}},computed:{fabShown(){return this.narrow&&!this.header&&!this.navOpen},activeHostEl(){return this.hostEls[this.active]||null},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.$nextTick(()=>this.watchContextLoss(e)),this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},deepCanvases(e,t=[]){if(!e)return t;for(const o of e.querySelectorAll("*"))o.tagName==="CANVAS"&&t.push(o),o.shadowRoot&&this.deepCanvases(o.shadowRoot,t);return t},watchContextLoss(e){const t=this._hostSlots[e];if(t)for(const o of this.deepCanvases(t))o.__vtlLossBound||(o.__vtlLossBound=!0,o.addEventListener("webglcontextlost",()=>{this.hostState={...this.hostState,[e]:"lost"}},{once:!0}))},reloadHostElement(e){const t=this._hostSlots[e];t&&(t.innerHTML=""),this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"loading"},this.$nextTick(()=>this.mountHostElement(e))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(a=>a.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},uh(t.src).then(()=>dh(t.element)).then(()=>{rh(t.element,t.src),o.innerHTML="";const a=document.createElement(t.element),n=t.attrs||{};for(const s in n){const r=n[s],i=r!=null&&typeof r=="object"?JSON.stringify(r):String(r);try{a[s]=r}catch{}try{a.setAttribute(s,i)}catch{}}a.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(a);for(const s of[0,250,1500])setTimeout(()=>this.watchContextLoss(e),s);this.hostState={...this.hostState,[e]:"ready"}}).catch(a=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:a&&a.message||String(a)}}))},iconSvg(e){return e?nh(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(n=>n.key===e),a=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!a}},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 a=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")a=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")a=(o-1+t.length)%t.length;else if(e.key==="Home")a=0;else if(e.key==="End")a=t.length-1;else return;e.preventDefault();const n=t[a];this.pick(n),this.$nextTick(()=>{const s=this._tabEls[n];s&&s.focus&&s.focus()})}}}),gh={key:0,class:"vtl-top"},mh=["aria-expanded","aria-label"],bh={class:"vtl-brand"},$h={class:"vtl-title"},_h={class:"vtl-meta"},vh=["aria-expanded","aria-label"],yh={class:"vtl-body"},wh=["aria-label","aria-hidden","role","aria-orientation"],kh=["aria-expanded","aria-label"],xh=["innerHTML"],Th={class:"vtl-collapse-tx"},Lh=["aria-expanded","onClick"],Sh={key:0,class:"vtl-cap"},Oh={class:"vtl-tl"},Ph={key:1,class:"vtl-td"},Eh=["innerHTML"],Mh={key:1,class:"vtl-tier"},Ah={key:0,class:"vtl-cap"},Ch={class:"vtl-tl"},Ih={key:1,class:"vtl-td"},Nh={class:"vtl-rows"},Fh=["aria-selected","tabindex","onClick"],Dh=["innerHTML"],Rh={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Wh={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},zh={class:"vtl-tab-text"},Uh={class:"vtl-tab-label"},Hh={key:0,class:"vtl-tab-badge"},jh={key:0,class:"vtl-tab-sub"},Vh=["innerHTML"],Bh=["aria-selected","tabindex","onClick"],Kh=["innerHTML"],qh={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Gh={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Xh={class:"vtl-tab-text"},Yh={class:"vtl-tab-label"},Jh={key:0,class:"vtl-tab-sub"},Zh={class:"vtl-main"},Qh={class:"vtl-content"},eg=["hidden"],tg={key:0,class:"vtl-host-hint"},og={key:1,class:"vtl-host-hint"},ag=["onClick"],ng={key:2,class:"vtl-host-hint err"};function sg(e,t,o,a,n,s){const r=ka("BackToTopButton");return F(),H("div",{class:et(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}]),style:wo(e.fabShown?{"--map-fab-clearance":"calc(56px + env(safe-area-inset-bottom))","--map-fab-beside":"calc(64px + env(safe-area-inset-left))"}:null)},[e.header?(F(),H("header",gh,[M("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,mh),M("span",bh,[Io(e.$slots,"brand")]),M("b",$h,q(e.title),1),M("span",_h,[Io(e.$slots,"meta")])])):de("",!0),e.fabShown?(F(),H("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,vh)):de("",!0),e.narrow?(F(),uo(r,{key:2,target:e.activeHostEl,labels:{backToTop:e.T("actions.backToTop","Back to top")}},null,8,["target","labels"])):de("",!0),M("div",yh,[M("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"},[M("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))},[M("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,xh),M("span",Th,q(e.label("collapse")),1)],8,kh),e.$slots.rail?Io(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(F(!0),H(ne,{key:1},Ke(e.groups,i=>(F(),H("div",{class:"vtl-grp",key:i.key},[i.folder?(F(),H("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(i)),onClick:l=>e.toggleFolder(i.key)},[i.badge?(F(),H("span",Sh,q(i.badge),1)):de("",!0),M("span",Oh,q(i.label),1),i.count!=null?(F(),H("span",Ph,q(i.count),1)):de("",!0),M("span",{class:et(["vtl-chev",{open:!e.isFolderClosed(i)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Eh)],8,Lh)):(F(),H("div",Mh,[i.badge?(F(),H("span",Ah,q(i.badge),1)):de("",!0),M("span",Ch,q(i.label),1),i.count!=null?(F(),H("span",Ih,q(i.count),1)):de("",!0)])),_a(M("div",Nh,[(F(!0),H(ne,null,Ke(i.rows,l=>(F(),H("button",{key:l.key,type:"button",role:"tab",class:et(["vtl-tab",{active:l.key===e.active}]),"aria-selected":String(l.key===e.active),tabindex:l.key===e.active?0:-1,ref_for:!0,ref:c=>e.registerTab(l.key,c),onClick:c=>e.pick(l.key),onKeydown:t[3]||(t[3]=c=>e.onKey(c))},[l.icon?(F(),H("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(l.icon)},null,8,Dh)):l.emoji?(F(),H("span",Rh,q(l.emoji),1)):(F(),H("span",Wh,q(e.initial(l.label)),1)),M("span",zh,[M("span",Uh,[Dt(q(l.label),1),l.badge?(F(),H("span",Hh,q(l.badge),1)):de("",!0)]),l.sub?(F(),H("span",jh,[M("span",{innerHTML:l.sub},null,8,Vh)])):de("",!0)])],42,Fh))),128))],512),[[Aa,!i.folder||!e.isFolderClosed(i)]])]))),128)):(F(!0),H(ne,{key:2},Ke(e.items,i=>(F(),H("button",{key:i.key,type:"button",role:"tab",class:et(["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:l=>e.registerTab(i.key,l),onClick:l=>e.pick(i.key),onKeydown:t[4]||(t[4]=l=>e.onKey(l))},[i.icon?(F(),H("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(i.icon)},null,8,Kh)):i.emoji?(F(),H("span",qh,q(i.emoji),1)):(F(),H("span",Gh,q(e.initial(i.label)),1)),M("span",Xh,[M("span",Yh,q(i.label),1),i.sub?(F(),H("span",Jh,q(i.sub),1)):de("",!0)])],42,Bh))),128))],8,wh),M("main",Zh,[e.header?Io(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),M("div",Qh,[(F(!0),H(ne,null,Ke(e.mountedElementRows,i=>_a((F(),H("section",{key:i.key,class:"vtl-host",hidden:i.key!==e.active,ref_for:!0,ref:l=>{l?e.hostEls[i.key]=l:delete e.hostEls[i.key]}},[M("div",{class:"vtl-host-slot",ref_for:!0,ref:l=>e.setHostSlot(i.key,l)},null,512),e.hostState[i.key]==="loading"?(F(),H("div",tg,q(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",i.label)),1)):e.hostState[i.key]==="lost"?(F(),H("div",og,[Dt(q(e.T("messages.mapContextLost","This map was unloaded to free graphics memory."))+" ",1),M("button",{type:"button",class:"vtl-host-reload",onClick:l=>e.reloadHostElement(i.key)},q(e.T("buttons.reloadMap","Reload Map")),9,ag)])):e.hostState[i.key]==="error"?(F(),H("div",ng,[Dt(q(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",i.label)),1),t[5]||(t[5]=M("br",null,null,-1)),M("small",null,q(e.hostError[i.key]),1)])):de("",!0)],8,eg)),[[Aa,i.key===e.active]])),128)),Io(e.$slots,"default")])])])],6)}const rg=Nn(hh,[["render",sg],["styles",[ch]]]),as=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}],ig=as.filter(e=>!e.hideFromSwitcher);function lg(e){return as.find(t=>t.code===e)}function $l(e){const t=String(e||"").split("-")[0].toLowerCase();return as.some(o=>o.code===t)?t:"en"}const _l="doxa-maps:locale";function cg(){try{const e=localStorage.getItem(_l);if(e)return $l(e)}catch{}return $l(navigator==null?void 0:navigator.language)}function pg(e){try{localStorage.setItem(_l,e)}catch{}}const Qo={en:{backToTop:"Back to top","sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",close:"Close",help:"About this map",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",mobileNotBuilt:"not built for mobile",dismiss:"Dismiss",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse","tab.prayer-walk-planner":"Prayer Walk Planner","tab.upg-neighbor":"UPG Neighbor","tab.key-cities":"Key Cities","tab.all-people-groups":"All People Groups","tab.pplr-data-maps":"PPLR Data Maps","tab.wall-of-people-groups":"Wall of People Groups","tab.country-posters":"Country Posters","tab.doxa-vision-card":"Doxa Vision Card"},es:{backToTop:"Volver arriba","sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",close:"Cerrar",help:"Acerca de este mapa",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",mobileNotBuilt:"no diseñado para móvil",dismiss:"Cerrar",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer","tab.prayer-walk-planner":"Caminatas de oración","tab.upg-neighbor":"Vecino UPG","tab.key-cities":"Ciudades clave","tab.all-people-groups":"Todos los pueblos","tab.pplr-data-maps":"Mapas de datos PPLR","tab.wall-of-people-groups":"Muro de los pueblos","tab.country-posters":"Carteles por país","tab.doxa-vision-card":"Tarjeta de visión Doxa"},fr:{backToTop:"Retour en haut","sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",close:"Fermer",help:"À propos de cette carte",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",mobileNotBuilt:"pas conçu pour mobile",dismiss:"Fermer",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier","tab.prayer-walk-planner":"Marches de prière","tab.upg-neighbor":"Voisin UPG","tab.key-cities":"Villes clés","tab.all-people-groups":"Tous les peuples","tab.pplr-data-maps":"Cartes de données PPLR","tab.wall-of-people-groups":"Mur des peuples","tab.country-posters":"Affiches par pays","tab.doxa-vision-card":"Carte de vision Doxa"},de:{backToTop:"Nach oben","sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",close:"Schließen",help:"Über diese Karte",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",mobileNotBuilt:"nicht für Mobilgeräte",dismiss:"Schließen",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen","tab.prayer-walk-planner":"Gebetsspaziergänge","tab.upg-neighbor":"UPG-Nachbar","tab.key-cities":"Schlüsselstädte","tab.all-people-groups":"Alle Volksgruppen","tab.pplr-data-maps":"PPLR-Datenkarten","tab.wall-of-people-groups":"Wand der Volksgruppen","tab.country-posters":"Länderposter","tab.doxa-vision-card":"Doxa-Visionskarte"},pt:{backToTop:"Voltar ao topo","sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",close:"Fechar",help:"Sobre este mapa",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",mobileNotBuilt:"não feito para celular",dismiss:"Fechar",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher","tab.prayer-walk-planner":"Caminhadas de oração","tab.upg-neighbor":"Vizinho UPG","tab.key-cities":"Cidades-chave","tab.all-people-groups":"Todos os povos","tab.pplr-data-maps":"Mapas de dados PPLR","tab.wall-of-people-groups":"Mural dos povos","tab.country-posters":"Cartazes por país","tab.doxa-vision-card":"Cartão de visão Doxa"},it:{backToTop:"Torna su","sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",close:"Chiudi",help:"Informazioni su questa mappa",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",mobileNotBuilt:"non pensato per mobile",dismiss:"Chiudi",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi","tab.prayer-walk-planner":"Passeggiate di preghiera","tab.upg-neighbor":"Vicino UPG","tab.key-cities":"Città chiave","tab.all-people-groups":"Tutti i popoli","tab.pplr-data-maps":"Mappe dati PPLR","tab.wall-of-people-groups":"Muro dei popoli","tab.country-posters":"Poster per paese","tab.doxa-vision-card":"Scheda visione Doxa"},ro:{backToTop:"Sus","sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",close:"Închide",help:"Despre această hartă",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",mobileNotBuilt:"nu e făcut pentru mobil",dismiss:"Închide",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge","tab.prayer-walk-planner":"Plimbări de rugăciune","tab.upg-neighbor":"Vecin UPG","tab.key-cities":"Orașe-cheie","tab.all-people-groups":"Toate popoarele","tab.pplr-data-maps":"Hărți de date PPLR","tab.wall-of-people-groups":"Zidul popoarelor","tab.country-posters":"Afișe pe țări","tab.doxa-vision-card":"Card de viziune Doxa"},ru:{backToTop:"Наверх","sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",close:"Закрыть",help:"Об этой карте",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",mobileNotBuilt:"не для телефона",dismiss:"Закрыть",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть","tab.prayer-walk-planner":"Молитвенные прогулки","tab.upg-neighbor":"Сосед UPG","tab.key-cities":"Ключевые города","tab.all-people-groups":"Все народы","tab.pplr-data-maps":"Карты данных PPLR","tab.wall-of-people-groups":"Стена народов","tab.country-posters":"Плакаты по странам","tab.doxa-vision-card":"Карточка видения Doxa"},ar:{backToTop:"إلى الأعلى","sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",close:"إغلاق",help:"عن هذه الخريطة",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",mobileNotBuilt:"غير مُعدّ للهاتف",dismiss:"إغلاق",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي","tab.prayer-walk-planner":"جولات الصلاة","tab.upg-neighbor":"جار UPG","tab.key-cities":"المدن الرئيسية","tab.all-people-groups":"جميع الشعوب","tab.pplr-data-maps":"خرائط بيانات PPLR","tab.wall-of-people-groups":"جدار الشعوب","tab.country-posters":"ملصقات الدول","tab.doxa-vision-card":"بطاقة رؤية Doxa"},hi:{backToTop:"ऊपर जाएँ","sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",close:"बंद करें",help:"इस नक्शे के बारे में",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",mobileNotBuilt:"मोबाइल के लिए नहीं बना",dismiss:"बंद करें",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें","tab.prayer-walk-planner":"प्रार्थना पदयात्रा","tab.upg-neighbor":"UPG पड़ोसी","tab.key-cities":"प्रमुख शहर","tab.all-people-groups":"सभी जनसमूह","tab.pplr-data-maps":"PPLR डेटा मानचित्र","tab.wall-of-people-groups":"जनसमूहों की दीवार","tab.country-posters":"देश पोस्टर","tab.doxa-vision-card":"Doxa दर्शन कार्ड"},zh:{backToTop:"回到顶部","sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",close:"关闭",help:"关于此地图",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",mobileNotBuilt:"未针对手机设计",dismiss:"关闭",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠","tab.prayer-walk-planner":"祷告行走","tab.upg-neighbor":"UPG 邻居","tab.key-cities":"重点城市","tab.all-people-groups":"所有民族","tab.pplr-data-maps":"PPLR 数据地图","tab.wall-of-people-groups":"民族之墙","tab.country-posters":"国家海报","tab.doxa-vision-card":"Doxa 异象卡"}},ns=Object.keys(Qo);function ug(e){return Object.prototype.hasOwnProperty.call(Qo.en,e)}function Va(e,t,o){let n=(Qo[e]||Qo.en)[t]??Qo.en[t]??t;if(o)for(const s in o)n=n.split("{"+s+"}").join(String(o[s]));return n}const vl={en:{"prayer-walk-planner":{what:"Plan a prayer walk: draw the areas your teams will cover and print each one as a one-page map.",how:"Draw a zone, name it, select the zones you need and press Print. Each zone prints on its own page with coordinates, one map per team."},"gospel-internet":{what:"See which of the ~2,000 people groups already have gospel resources in their language, and where the internet can carry those resources to them.",how:"Explore the language tree, the bounded and centered sets and the map. Pick a list on the side to narrow every view."},"country-posters":{what:"Printable prayer posters, one per country, showing its people groups.",how:"Pick a country from the poster list or on the map, then print it straight from your browser."},"all-people-groups":{what:"Every people group on earth on one map, colored by how reached it is, with the DOXA prayer set highlighted.",how:"Click a category in the legend to show only those groups. Click a dot for its details and prayer link."},"doxa-vision-card":{what:"The remaining task in one card: all people groups, then the unreached, then the frontier, then the DOXA prayer set.",how:"Read it from top to bottom. Every number is computed from the people-group data, not typed in."},"pplr-data-maps":{what:"People-group research data on maps: language families, people clusters, religions and data-source coverage.",how:"Choose a view from the tabs, then use the legend to highlight a family, cluster or religion on the map."},"wall-of-people-groups":{what:"Every DOXA people group on one wall, to bless them. In Bless mode the wall is the printable poster (5 × 8 ft by default), each group with a blessing verse; in Social mode it is a shared prayer wall.",how:"Bless: look around the poster exactly as it will print, pick a size and press Print HD poster. Social: pray for a group, read or leave comments, and share its prayer page."}},es:{"prayer-walk-planner":{what:"Planifique una caminata de oración: dibuje las zonas que recorrerán sus equipos e imprima cada una como un mapa de una página.",how:"Dibuje una zona, póngale nombre, seleccione las zonas que necesita y pulse Imprimir. Cada zona se imprime en su propia página con coordenadas: un mapa por equipo."},"gospel-internet":{what:"Vea cuáles de los ~2000 grupos de pueblos ya tienen recursos del evangelio en su idioma, y dónde internet puede llevárselos.",how:"Explore el árbol de idiomas, los conjuntos delimitado y centrado y el mapa. Elija una lista al lado para acotar cada vista."},"country-posters":{what:"Carteles de oración para imprimir, uno por país, con sus grupos de pueblos.",how:"Elija un país en la lista de carteles o en el mapa, e imprímalo directamente desde el navegador."},"all-people-groups":{what:"Todos los grupos de pueblos del mundo en un mapa, coloreados según lo alcanzados que están, con el conjunto de oración de DOXA resaltado.",how:"Haga clic en una categoría de la leyenda para ver solo esos grupos. Haga clic en un punto para ver sus datos y el enlace de oración."},"doxa-vision-card":{what:"La tarea pendiente en una tarjeta: todos los grupos de pueblos, luego los no alcanzados, luego la frontera y luego el conjunto de oración de DOXA.",how:"Léala de arriba abajo. Cada cifra se calcula a partir de los datos, no se escribe a mano."},"pplr-data-maps":{what:"Datos de investigación sobre grupos de pueblos en mapas: familias lingüísticas, agrupaciones de pueblos, religiones y cobertura de fuentes.",how:"Elija una vista en las pestañas y use la leyenda para resaltar una familia, agrupación o religión en el mapa."},"wall-of-people-groups":{what:"Todos los grupos de pueblos de DOXA en un muro, para bendecirlos. En el modo Bendecir el muro es el póster para imprimir (5 × 8 pies por defecto), cada grupo con un versículo de bendición; en el modo Social es un muro de oración compartido.",how:"Bendecir: recorra el póster tal como se imprimirá, elija un tamaño y pulse Imprimir póster HD. Social: ore por un grupo, lea o deje comentarios y comparta su página de oración."}},fr:{"prayer-walk-planner":{what:"Préparez une marche de prière : dessinez les zones que vos équipes parcourront et imprimez chacune sur une carte d’une page.",how:"Dessinez une zone, nommez-la, sélectionnez les zones voulues et cliquez sur Imprimer. Chaque zone s’imprime sur sa propre page avec ses coordonnées : une carte par équipe."},"gospel-internet":{what:"Voyez lesquels des ~2 000 groupes de peuples ont déjà des ressources de l’Évangile dans leur langue, et où internet peut les leur apporter.",how:"Explorez l’arbre des langues, les ensembles délimité et centré et la carte. Choisissez une liste sur le côté pour affiner chaque vue."},"country-posters":{what:"Des affiches de prière à imprimer, une par pays, avec ses groupes de peuples.",how:"Choisissez un pays dans la liste des affiches ou sur la carte, puis imprimez-le directement depuis le navigateur."},"all-people-groups":{what:"Tous les groupes de peuples du monde sur une carte, colorés selon leur degré d’atteinte, avec l’ensemble de prière DOXA mis en valeur.",how:"Cliquez sur une catégorie de la légende pour n’afficher que ces groupes. Cliquez sur un point pour ses détails et son lien de prière."},"doxa-vision-card":{what:"La tâche restante en une carte : tous les groupes de peuples, puis les non atteints, puis la frontière, puis l’ensemble de prière DOXA.",how:"Lisez-la de haut en bas. Chaque chiffre est calculé à partir des données, pas saisi à la main."},"pplr-data-maps":{what:"Des données de recherche sur les groupes de peuples, en cartes : familles de langues, grappes de peuples, religions et couverture des sources.",how:"Choisissez une vue dans les onglets, puis utilisez la légende pour mettre en valeur une famille, une grappe ou une religion."},"wall-of-people-groups":{what:"Tous les groupes de peuples DOXA sur un seul mur, pour les bénir. En mode Bénir, le mur est l’affiche à imprimer (5 × 8 pieds par défaut), chaque groupe avec un verset de bénédiction ; en mode Social, c’est un mur de prière partagé.",how:"Bénir : parcourez l’affiche telle qu’elle s’imprimera, choisissez une taille et appuyez sur Imprimer l’affiche HD. Social : priez pour un groupe, lisez ou laissez des commentaires et partagez sa page de prière."}},de:{"prayer-walk-planner":{what:"Einen Gebetsspaziergang planen: die Gebiete Ihrer Teams zeichnen und jedes als einseitige Karte drucken.",how:"Zeichnen Sie ein Gebiet, benennen Sie es, wählen Sie die nötigen Gebiete und drücken Sie auf Drucken. Jedes Gebiet wird mit Koordinaten auf einer eigenen Seite gedruckt: eine Karte pro Team."},"gospel-internet":{what:"Sehen, welche der ~2.000 Volksgruppen schon Evangeliumsressourcen in ihrer Sprache haben und wo das Internet sie zu ihnen bringen kann.",how:"Erkunden Sie den Sprachbaum, die begrenzte und die zentrierte Menge und die Karte. Wählen Sie seitlich eine Liste, um jede Ansicht einzugrenzen."},"country-posters":{what:"Druckbare Gebetsplakate, eines pro Land, mit seinen Volksgruppen.",how:"Wählen Sie ein Land in der Plakatliste oder auf der Karte und drucken Sie es direkt aus dem Browser."},"all-people-groups":{what:"Alle Volksgruppen der Welt auf einer Karte, nach Erreichtheit eingefärbt, mit dem DOXA-Gebetsset hervorgehoben.",how:"Klicken Sie auf eine Kategorie der Legende, um nur diese Gruppen zu zeigen. Klicken Sie auf einen Punkt für Details und den Gebetslink."},"doxa-vision-card":{what:"Die verbleibende Aufgabe auf einer Karte: alle Volksgruppen, dann die unerreichten, dann die Frontier-Gruppen, dann das DOXA-Gebetsset.",how:"Lesen Sie sie von oben nach unten. Jede Zahl wird aus den Daten berechnet, nicht eingetippt."},"pplr-data-maps":{what:"Forschungsdaten zu Volksgruppen auf Karten: Sprachfamilien, Volkscluster, Religionen und Quellenabdeckung.",how:"Wählen Sie oben eine Ansicht und heben Sie mit der Legende eine Familie, einen Cluster oder eine Religion hervor."},"wall-of-people-groups":{what:"Jede DOXA-Volksgruppe auf einer Wand, um sie zu segnen. Im Modus Segnen ist die Wand das druckbare Poster (standardmäßig 5 × 8 Fuß), jede Gruppe mit einem Segensvers; im Modus Sozial ist sie eine gemeinsame Gebetswand.",how:"Segnen: Sehen Sie sich das Poster genau so an, wie es gedruckt wird, wählen Sie eine Größe und drücken Sie HD-Poster drucken. Sozial: Beten Sie für eine Gruppe, lesen oder schreiben Sie Kommentare und teilen Sie ihre Gebetsseite."}},pt:{"prayer-walk-planner":{what:"Planeje uma caminhada de oração: desenhe as áreas que suas equipes vão cobrir e imprima cada uma como um mapa de uma página.",how:"Desenhe uma zona, dê um nome, selecione as zonas necessárias e clique em Imprimir. Cada zona sai em sua própria página com coordenadas: um mapa por equipe."},"gospel-internet":{what:"Veja quais dos ~2.000 grupos de povos já têm recursos do evangelho no seu idioma, e onde a internet pode levá-los até eles.",how:"Explore a árvore de idiomas, os conjuntos delimitado e centrado e o mapa. Escolha uma lista ao lado para filtrar cada vista."},"country-posters":{what:"Cartazes de oração para imprimir, um por país, com seus grupos de povos.",how:"Escolha um país na lista de cartazes ou no mapa e imprima direto do navegador."},"all-people-groups":{what:"Todos os grupos de povos do mundo num mapa, coloridos pelo grau de alcance, com o conjunto de oração da DOXA em destaque.",how:"Clique numa categoria da legenda para ver só esses grupos. Clique num ponto para ver detalhes e o link de oração."},"doxa-vision-card":{what:"A tarefa restante num cartão: todos os grupos de povos, depois os não alcançados, depois a fronteira, depois o conjunto de oração da DOXA.",how:"Leia de cima para baixo. Cada número é calculado a partir dos dados, não digitado."},"pplr-data-maps":{what:"Dados de pesquisa sobre grupos de povos em mapas: famílias linguísticas, agrupamentos de povos, religiões e cobertura das fontes.",how:"Escolha uma vista nas abas e use a legenda para destacar uma família, agrupamento ou religião no mapa."},"wall-of-people-groups":{what:"Todos os grupos de povos da DOXA num só mural, para abençoá-los. No modo Abençoar, o mural é o cartaz para imprimir (5 × 8 pés por padrão), cada grupo com um versículo de bênção; no modo Social, é um mural de oração partilhado.",how:"Abençoar: percorra o cartaz tal como será impresso, escolha um tamanho e prima Imprimir cartaz HD. Social: ore por um grupo, leia ou deixe comentários e partilhe a sua página de oração."}},it:{"prayer-walk-planner":{what:"Pianifica una camminata di preghiera: disegna le zone che le tue squadre percorreranno e stampa ognuna come mappa di una pagina.",how:"Disegna una zona, dalle un nome, seleziona le zone che servono e premi Stampa. Ogni zona si stampa su una pagina con le coordinate: una mappa per squadra."},"gospel-internet":{what:"Scopri quali dei ~2.000 gruppi etnici hanno già risorse del vangelo nella loro lingua, e dove internet può portargliele.",how:"Esplora l’albero delle lingue, gli insiemi delimitato e centrato e la mappa. Scegli un elenco a lato per restringere ogni vista."},"country-posters":{what:"Poster di preghiera da stampare, uno per paese, con i suoi gruppi etnici.",how:"Scegli un paese dall’elenco dei poster o sulla mappa e stampalo direttamente dal browser."},"all-people-groups":{what:"Tutti i gruppi etnici del mondo su una mappa, colorati secondo quanto sono raggiunti, con l’insieme di preghiera DOXA evidenziato.",how:"Clicca una categoria della legenda per mostrare solo quei gruppi. Clicca un punto per dettagli e link di preghiera."},"doxa-vision-card":{what:"Il compito rimanente in una scheda: tutti i gruppi etnici, poi i non raggiunti, poi la frontiera, poi l’insieme di preghiera DOXA.",how:"Leggila dall’alto in basso. Ogni numero è calcolato dai dati, non digitato."},"pplr-data-maps":{what:"Dati di ricerca sui gruppi etnici su mappa: famiglie linguistiche, cluster di popoli, religioni e copertura delle fonti.",how:"Scegli una vista dalle schede, poi usa la legenda per evidenziare una famiglia, un cluster o una religione."},"wall-of-people-groups":{what:"Tutti i gruppi etnici DOXA su un solo muro, per benedirli. In modalità Benedire il muro è il poster da stampare (5 × 8 piedi di default), ogni gruppo con un versetto di benedizione; in modalità Social è un muro di preghiera condiviso.",how:"Benedire: esplora il poster esattamente come verrà stampato, scegli una dimensione e premi Stampa poster HD. Social: prega per un gruppo, leggi o lascia commenti e condividi la sua pagina di preghiera."}},ro:{"prayer-walk-planner":{what:"Planificați o plimbare de rugăciune: desenați zonele pe care le vor parcurge echipele și tipăriți fiecare ca hartă de o pagină.",how:"Desenați o zonă, dați-i un nume, selectați zonele necesare și apăsați Tipărire. Fiecare zonă se tipărește pe o pagină, cu coordonate: câte o hartă pentru fiecare echipă."},"gospel-internet":{what:"Vedeți care dintre cele ~2.000 de grupuri de popoare au deja resurse ale Evangheliei în limba lor și unde le poate duce internetul.",how:"Explorați arborele limbilor, mulțimile delimitată și centrată și harta. Alegeți o listă din lateral pentru a restrânge fiecare vedere."},"country-posters":{what:"Afișe de rugăciune de tipărit, câte unul pentru fiecare țară, cu grupurile ei de popoare.",how:"Alegeți o țară din lista de afișe sau de pe hartă și tipăriți-o direct din browser."},"all-people-groups":{what:"Toate grupurile de popoare ale lumii pe o hartă, colorate după cât sunt de atinse, cu setul de rugăciune DOXA evidențiat.",how:"Faceți clic pe o categorie din legendă pentru a afișa doar acele grupuri. Faceți clic pe un punct pentru detalii și linkul de rugăciune."},"doxa-vision-card":{what:"Sarcina rămasă într-un card: toate grupurile de popoare, apoi cele neatinse, apoi cele de frontieră, apoi setul de rugăciune DOXA.",how:"Citiți-l de sus în jos. Fiecare număr este calculat din date, nu tastat."},"pplr-data-maps":{what:"Date de cercetare despre grupurile de popoare pe hărți: familii de limbi, grupuri de popoare, religii și acoperirea surselor.",how:"Alegeți o vedere din file, apoi folosiți legenda pentru a evidenția o familie, un grup sau o religie."},"wall-of-people-groups":{what:"Toate grupurile de popoare DOXA pe un singur perete, ca să le binecuvântăm. În modul Binecuvântare, peretele este afișul de tipărit (5 × 8 picioare implicit), fiecare grup cu un verset de binecuvântare; în modul Social este un perete de rugăciune comun.",how:"Binecuvântare: explorați afișul exact cum se va tipări, alegeți o dimensiune și apăsați Tipărește afișul HD. Social: rugați-vă pentru un grup, citiți sau lăsați comentarii și distribuiți pagina lui de rugăciune."}},ru:{"prayer-walk-planner":{what:"Спланируйте молитвенную прогулку: нарисуйте районы для ваших команд и распечатайте каждый как карту на одну страницу.",how:"Нарисуйте зону, назовите её, выберите нужные зоны и нажмите «Печать». Каждая зона печатается на отдельной странице с координатами — по карте на команду."},"gospel-internet":{what:"Узнайте, у каких из ~2000 народов уже есть евангельские материалы на их языке и где интернет может донести их до них.",how:"Исследуйте языковое дерево, ограниченное и центрированное множества и карту. Выберите список сбоку, чтобы сузить любой вид."},"country-posters":{what:"Молитвенные плакаты для печати, по одному на страну, с её народами.",how:"Выберите страну в списке плакатов или на карте и распечатайте прямо из браузера."},"all-people-groups":{what:"Все народы мира на одной карте, окрашенные по степени достигнутости, с выделенным молитвенным набором DOXA.",how:"Нажмите категорию в легенде, чтобы показать только эти группы. Нажмите точку, чтобы увидеть сведения и ссылку для молитвы."},"doxa-vision-card":{what:"Оставшаяся задача на одной карточке: все народы, затем недостигнутые, затем пограничные, затем молитвенный набор DOXA.",how:"Читайте сверху вниз. Каждое число вычислено из данных, а не введено вручную."},"pplr-data-maps":{what:"Исследовательские данные о народах на картах: языковые семьи, кластеры народов, религии и охват источников.",how:"Выберите вид во вкладках, затем выделите семью, кластер или религию с помощью легенды."},"wall-of-people-groups":{what:"Все народы DOXA на одной стене, чтобы благословлять их. В режиме «Благословение» стена — это плакат для печати (по умолчанию 5 × 8 футов), у каждого народа — стих благословения; в режиме «Соцсеть» это общая молитвенная стена.",how:"«Благословение»: просмотрите плакат точно таким, каким он будет напечатан, выберите размер и нажмите «Печать плаката HD». «Соцсеть»: молитесь о народе, читайте и оставляйте комментарии, делитесь его молитвенной страницей."}},ar:{"prayer-walk-planner":{what:"خطِّط لجولة صلاة: ارسم المناطق التي ستغطيها فرقك واطبع كل منطقة خريطةً من صفحة واحدة.",how:"ارسم منطقة وسمِّها، واختر المناطق التي تحتاجها ثم اضغط «طباعة». تُطبع كل منطقة في صفحة مستقلة مع إحداثياتها: خريطة لكل فريق."},"gospel-internet":{what:"اعرف أيَّ الشعوب الألفين تقريبًا لديها بالفعل موارد للإنجيل بلغتها، وأين يمكن للإنترنت أن يوصلها إليها.",how:"استكشف شجرة اللغات والمجموعتين المحدودة والمتمركزة والخريطة. اختر قائمة من الجانب لتضييق كل عرض."},"country-posters":{what:"ملصقات صلاة للطباعة، ملصق لكل بلد، تُظهر شعوبه.",how:"اختر بلدًا من قائمة الملصقات أو على الخريطة، ثم اطبعه مباشرة من المتصفح."},"all-people-groups":{what:"كل شعوب العالم على خريطة واحدة، ملوَّنة بحسب درجة وصول الإنجيل إليها، مع إبراز مجموعة صلاة DOXA.",how:"انقر فئة في مفتاح الخريطة لعرض تلك الشعوب فقط. انقر نقطة لترى تفاصيلها ورابط الصلاة."},"doxa-vision-card":{what:"المهمة المتبقية في بطاقة واحدة: كل الشعوب، ثم غير المُبشَّرة، ثم الحدودية، ثم مجموعة صلاة DOXA.",how:"اقرأها من الأعلى إلى الأسفل. كل رقم محسوب من البيانات، وليس مكتوبًا يدويًا."},"pplr-data-maps":{what:"بيانات بحثية عن الشعوب على خرائط: العائلات اللغوية والعناقيد الشعبية والأديان وتغطية المصادر.",how:"اختر عرضًا من التبويبات، ثم استخدم مفتاح الخريطة لإبراز عائلة أو عنقود أو دين."},"wall-of-people-groups":{what:"كل شعوب DOXA على جدار واحد لنباركها. في وضع «بركة» يكون الجدار هو الملصق الجاهز للطباعة (5 × 8 أقدام افتراضيًا)، ولكل شعب آية بركة؛ وفي وضع «تفاعلي» يكون جدار صلاة مشتركًا.",how:"«بركة»: تجوّل في الملصق كما سيُطبع تمامًا، واختر المقاس ثم اضغط «طباعة ملصق عالي الدقة». «تفاعلي»: صلِّ لأجل شعب، واقرأ التعليقات أو اكتب تعليقًا، وشارك صفحة الصلاة الخاصة به."}},hi:{"prayer-walk-planner":{what:"प्रार्थना-यात्रा की योजना बनाएँ: अपनी टीमों के क्षेत्र बनाएँ और हर क्षेत्र को एक पन्ने के नक्शे के रूप में छापें।",how:"एक क्षेत्र बनाएँ, उसे नाम दें, ज़रूरी क्षेत्र चुनें और प्रिंट दबाएँ। हर क्षेत्र निर्देशांकों के साथ अपने पन्ने पर छपता है: हर टीम के लिए एक नक्शा।"},"gospel-internet":{what:"देखें कि लगभग 2,000 जन-समूहों में से किनके पास उनकी भाषा में सुसमाचार के संसाधन पहले से हैं, और इंटरनेट उन्हें कहाँ तक पहुँचा सकता है।",how:"भाषा-वृक्ष, सीमित और केंद्रित समुच्चय और नक्शा देखें। हर दृश्य को सीमित करने के लिए बगल में एक सूची चुनें।"},"country-posters":{what:"छापने योग्य प्रार्थना-पोस्टर, हर देश के लिए एक, उसके जन-समूहों के साथ।",how:"पोस्टर सूची में या नक्शे पर कोई देश चुनें, फिर सीधे ब्राउज़र से छापें।"},"all-people-groups":{what:"दुनिया के सभी जन-समूह एक नक्शे पर, इस आधार पर रंगे हुए कि वे कितने पहुँचे हुए हैं, DOXA प्रार्थना-समूह उभारा हुआ।",how:"केवल वे समूह देखने के लिए लीजेंड में एक श्रेणी पर क्लिक करें। विवरण और प्रार्थना-लिंक के लिए किसी बिंदु पर क्लिक करें।"},"doxa-vision-card":{what:"बचा हुआ काम एक कार्ड में: सभी जन-समूह, फिर अपहुँचे, फिर सीमांत, फिर DOXA प्रार्थना-समूह।",how:"इसे ऊपर से नीचे पढ़ें। हर संख्या आँकड़ों से गणना की गई है, हाथ से नहीं लिखी गई।"},"pplr-data-maps":{what:"जन-समूहों पर शोध-आँकड़े नक्शों पर: भाषा-परिवार, जन-क्लस्टर, धर्म और स्रोतों की पहुँच।",how:"टैब से कोई दृश्य चुनें, फिर लीजेंड से किसी परिवार, क्लस्टर या धर्म को नक्शे पर उभारें।"},"wall-of-people-groups":{what:"हर DOXA जन-समूह एक ही दीवार पर, उन्हें आशीष देने के लिए। आशीष मोड में दीवार छापने योग्य पोस्टर है (डिफ़ॉल्ट 5 × 8 फ़ुट), हर समूह के साथ आशीष का एक पद; सामाजिक मोड में यह एक साझा प्रार्थना दीवार है।",how:"आशीष: पोस्टर को ठीक वैसा ही देखें जैसा वह छपेगा, आकार चुनें और HD पोस्टर छापें दबाएँ। सामाजिक: किसी समूह के लिए प्रार्थना करें, टिप्पणियाँ पढ़ें या लिखें, और उसका प्रार्थना पेज साझा करें।"}},zh:{"prayer-walk-planner":{what:"规划祷告行走:画出各小组要走的区域,把每个区域打印成一页地图。",how:"画一个区域并命名,选择需要的区域后点“打印”。每个区域连同坐标单独打印一页:每个小组一张地图。"},"gospel-internet":{what:"看看约 2,000 个族群中,哪些已经有母语的福音资源,以及互联网能把这些资源带到哪里。",how:"浏览语言树、有界集与中心集以及地图。在侧边选择一个名单,可缩小每个视图的范围。"},"country-posters":{what:"可打印的祷告海报,每个国家一张,列出其中的族群。",how:"在海报列表或地图上选择一个国家,然后直接从浏览器打印。"},"all-people-groups":{what:"世界上所有族群都在一张地图上,按福音进展着色,并突出显示 DOXA 祷告名单。",how:"点击图例中的类别,只显示这些族群。点击一个点,查看详情和祷告链接。"},"doxa-vision-card":{what:"一张卡片看清剩下的使命:所有族群,然后是未得之民,再是前沿族群,最后是 DOXA 祷告名单。",how:"从上往下读。每个数字都由数据计算得出,而不是手工填写。"},"pplr-data-maps":{what:"族群研究数据地图:语系、民族集群、宗教和数据来源覆盖情况。",how:"在标签页中选择一个视图,然后用图例在地图上突出显示某个语系、集群或宗教。"},"wall-of-people-groups":{what:"所有 DOXA 族群都在一面墙上,为要祝福他们。在“祝福”模式下,这面墙就是可打印的海报(默认 5 × 8 英尺),每个族群配一节祝福经文;在“社交”模式下,它是一面共同的祷告墙。",how:"祝福:按打印时的样子浏览海报,选择尺寸,然后点击“打印高清海报”。社交:为某个族群祷告,阅读或留下评论,并分享它的祷告页面。"}}};function yl(e,t){var a;const o=String(t||"en").toLowerCase().split(/[-_]/)[0];return((a=vl[o])==null?void 0:a[e])||vl.en[e]||null}const wl="previews/examples/middle-east-core",kl=Array.from({length:12},(e,t)=>`${wl}/packet-p${String(t+1).padStart(2,"0")}.webp`),dg=Array.from({length:70},(e,t)=>`${wl}/card-${String(t+1).padStart(2,"0")}.webp`),fg={"upg-100":{storageKey:"upg-100",pos:{side:"56px",narrow:{placement:"top-left",side:"12px"}},leadKey:"mapInfo.tab.upg-100.lead",takeawayKey:"mapInfo.tab.upg-100.takeaway",examples:[{kind:"image",src:"previews/middle-east-core.webp",full:"posters/middle-east-core.html"},{kind:"pages",pages:kl},{kind:"deck",cards:dg}]},"regions-dashboard":{storageKey:"regions-dashboard",pos:{side:"56px",narrow:{placement:"top-left",side:"8px"}},leadKey:"mapInfo.tab.regions-dashboard.lead",takeawayKey:"mapInfo.tab.regions-dashboard.takeaway",noteKey:"mapInfo.tab.regions-dashboard.note",examples:[]},"dashboard-plus-grid":{storageKey:"dashboard-plus-grid",pos:{top:"46px",raise:!0},leadKey:"mapInfo.tab.dashboard-plus-grid.lead",takeawayKey:"mapInfo.tab.dashboard-plus-grid.takeaway",examples:[{kind:"table",columns:[{key:"mapInfo.col.peopleGroup"},{key:"mapInfo.col.country"},{key:"mapInfo.col.region"},{key:"mapInfo.col.population"}],rows:[["Hararghe Oromo","Ethiopia","Africa",6355e3],["Gaaliin","Sudan","Middle East",452e4],["White Moor","Morocco","Middle East",312e4],["Baloch, Western","Iran","Middle East",3035e3],["Baloch, Eastern","Pakistan","Asia",298e4],["Bhuiyar","India","Asia",2925e3]],total:2107}]},"research-map-plus-grid":{storageKey:"research-map-plus-grid",pos:{top:"56px",side:"56px"},leadKey:"mapInfo.tab.research-map-plus-grid.lead",takeawayKey:"mapInfo.tab.research-map-plus-grid.takeaway",examples:[{kind:"pages",pages:kl,titleKey:"mapInfo.tab.research-map-plus-grid.examplePacket"}]},"prayer-map":{storageKey:"prayer-map",pos:{side:"56px"},leadKey:"mapInfo.tab.prayer-map.lead",takeawayKey:"mapInfo.tab.prayer-map.takeaway",examples:[]},"cities-internet":{storageKey:"cities-internet",pos:{side:"56px",narrow:{side:"4px"}},leadKey:"mapInfo.tab.cities-internet.lead",takeawayKey:"mapInfo.tab.cities-internet.takeaway",examples:[]},"gospel-resources":{storageKey:"gospel-resources",pos:{side:"56px",narrow:{side:"4px"}},leadKey:"mapInfo.tab.gospel-resources.lead",takeawayKey:"mapInfo.tab.gospel-resources.takeaway",examples:[]}};function xl(e,t){return t?String(e).replace(/\{(\w+)\}/g,(o,a)=>t[a]!=null?String(t[a]):o):String(e)}function Tl(e,t,o=os()){const a=String(e).split(/\s*\|\s*/);if(a.length<2||typeof t!="number")return String(e);const n=String(o||"en").split("-")[0].toLowerCase();if(n!=="en")return a[ul(t,a.length,n)];const s=Math.abs(t),r=a.length===2?s?s>1?1:0:1:s?Math.min(s,2):0;return a[Math.min(r,a.length-1)]}function ss(e,t){const o=String(t);return e&&!o.startsWith(`${e}.`)?`${e}.${o}`:o}function hg(e,t={}){const o=typeof t.fallback=="function"?(a,n,s)=>xl(Tl(t.fallback(ss(e,a),n)??a,s),n):(a,n,s)=>xl(Tl($o(ss(e,a))??a,s),n);try{const a=ja();return(n,s,r)=>{const i=ss(e,n),l=typeof r=="number"?a.t(i,s||{},r):a.t(i,s||{});return l===i?o(n,s,r):l}}catch{return o}}const gg=["dir","lang"],mg=["aria-label","title","aria-expanded"],bg={viewBox:"0 0 16 16",focusable:"false"},$g={key:0,d:"M14 8H3M7 3.5 2.5 8 7 12.5",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},_g={key:1,d:"M2 8h11M9 3.5 13.5 8 9 12.5",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},vg=["aria-labelledby"],yg={class:"mi-head"},wg=["id"],kg=["aria-label"],xg={class:"mi-body"},Tg={key:0,class:"mi-lead"},Lg={key:1,class:"mi-takeaway"},Sg=["src","alt","onError"],Og={key:0,class:"mi-center"},Pg=["href"],Eg=["aria-label","onClick"],Mg=["src","alt","onError"],Ag={key:0,class:"mi-center"},Cg=["onClick"],Ig={class:"mi-center"},Ng=["onClick"],Fg={class:"mi-pages"},Dg=["aria-label","onClick"],Rg=["src","alt"],Wg={class:"mi-center"},zg=["onClick"],Ug=["aria-label","onClick"],Hg=["src","onError"],jg={class:"mi-center"},Vg=["onClick"],Bg={class:"mi-center"},Kg=["onClick"],qg={class:"mi-grid"},Gg=["src","alt"],Xg={class:"mi-center"},Yg=["onClick"],Jg={class:"mi-table-wrap"},Zg={class:"mi-table"},Qg={key:0,class:"mi-more"},em={key:2,class:"mi-note"},tm={class:"mi-foot"},om=["checked"],Ba="dxmaps.mapInfo.seen.",rs="dxmaps.mapInfo.pointer",is="dxmaps:mapinfo-pointer-off",am={__name:"MapInfo",props:{storageKey:{type:String,required:!0},leadKey:{type:String,default:""},lead:{type:String,default:""},takeawayKey:{type:String,default:""},takeaway:{type:String,default:""},noteKey:{type:String,default:""},note:{type:String,default:""},examples:{type:Array,default:()=>[]},assetsBase:{type:String,default:""},placement:{type:String,default:"top-right",validator:e=>["top-right","top-left"].includes(e)},locale:{type:String,default:""}},setup(e){const t=e,o=De(0);function a(){return o.value,String(t.locale||os()||"en").split("-")[0].toLowerCase()}const n=hg("",{fallback:I=>$o(I,a())}),s=(I,X)=>I?n(I):X,r=I=>{try{return new Intl.NumberFormat(a()).format(I)}catch{return String(I)}},i=()=>a()==="ar";function l(I){try{return window.localStorage.getItem(I)}catch{return null}}function c(I,X){try{window.localStorage.setItem(I,X)}catch{}}const d=De(!1),g=De(!1);function $(){g.value=l(rs)==="off",d.value=!g.value&&l(Ba+t.storageKey)!=="1"}function T(){$()}function R(I){(!I||I.key===rs||I.key===Ba+t.storageKey)&&$()}Co(()=>{$(),window.addEventListener(is,T),window.addEventListener("storage",R)}),_n(()=>{window.removeEventListener(is,T),window.removeEventListener("storage",R)});function P(I){g.value=I,c(rs,I?"off":"on"),d.value=!I&&l(Ba+t.storageKey)!=="1";try{window.dispatchEvent(new CustomEvent(is))}catch{}}const D=De(!1),W=De(null),V=De(null),y=Oo({}),b=Oo({});async function E(){var I;o.value++,D.value=!0,await ba(),(I=V.value)==null||I.focus()}async function L(){var I;D.value=!1,c(Ba+t.storageKey,"1"),d.value=!1,await ba(),(I=W.value)==null||I.focus()}const C=De(null);function B(I){const X=C.value;if(!X)return;const Y=[...X.querySelectorAll('button, a[href], input, [tabindex]:not([tabindex="-1"])')].filter(Oe=>!Oe.disabled&&Oe.offsetParent!==null);if(!Y.length)return;const ce=X.getRootNode().activeElement,te=Y[0],ae=Y[Y.length-1];I.shiftKey&&(ce===te||!X.contains(ce))?(I.preventDefault(),ae.focus()):!I.shiftKey&&(ce===ae||!X.contains(ce))&&(I.preventDefault(),te.focus())}function j(I){I.key==="Escape"?(I.stopPropagation(),L()):I.key==="Tab"&&B(I)}function se(I){y[I]=!y[I]}function ye(I){const X=I&&I.target;X&&(X.style.display="none")}function Q(I){const X=String(I||"");return!X||/^(?:[a-z]+:|\/)/i.test(X)||!t.assetsBase?X:t.assetsBase.replace(/\/+$/,"")+"/"+X.replace(/^\.?\//,"")}const we={image:"mapInfo.poster",pages:"mapInfo.packet",deck:"mapInfo.cards",table:"mapInfo.spreadsheet"};function Ue(I){return n(I.titleKey||we[I.kind]||"mapInfo.example")}const $t=I=>(I.cards||[]).slice(0,5),he=I=>I&&typeof I=="object"?I.key?n(I.key):String(I.label||""):String(I??"");return dl(` .mi-btn{ position:absolute; z-index:20; top:var(--map-info-top, 12px); width:40px; height:40px; border-radius:50%; border:1px solid rgba(0,0,0,.18); background:#fff; color:#1f2a44; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; padding:0; @@ -244,4 +244,4 @@ @media (prefers-reduced-motion: reduce){ .mi-pointer{ animation:none; } } -`,"map-info"),(I,X)=>(F(),H("div",{class:"mi",dir:i()?"rtl":"ltr",lang:a()},[M("button",{ref_key:"btnEl",ref:W,type:"button",class:et(["mi-btn",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-label":xe(n)("mapInfo.open"),title:xe(n)("mapInfo.open"),"aria-haspopup":"dialog","aria-expanded":String(D.value),onClick:E},[...X[1]||(X[1]=[M("svg",{viewBox:"0 0 24 24","aria-hidden":"true",focusable:"false"},[M("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"2"}),M("rect",{x:"11",y:"10",width:"2",height:"7",rx:"1",fill:"currentColor"}),M("circle",{cx:"12",cy:"7",r:"1.3",fill:"currentColor"})],-1)])],10,mg),d.value&&!D.value?(F(),H("div",{key:0,class:et(["mi-pointer",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-hidden":"true"},[M("span",null,q(xe(n)("mapInfo.pointer")),1),(F(),H("svg",bg,[e.placement==="top-left"?(F(),H("path",$g)):(F(),H("path",_g))]))],2)):de("",!0),D.value?(F(),H("div",{key:1,class:"mi-scrim",onClick:Ia(L,["self"]),onKeydown:j},[M("div",{ref_key:"dialogEl",ref:C,class:"mi-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"mi-title-"+e.storageKey},[M("div",yg,[M("h2",{id:"mi-title-"+e.storageKey,class:"mi-title"},q(xe(n)("mapInfo.title")),9,wg),M("button",{ref_key:"closeEl",ref:V,type:"button",class:"mi-close","aria-label":xe(n)("mapInfo.close"),onClick:L},"×",8,kg)]),M("div",xg,[e.leadKey||e.lead?(F(),H("p",Tg,q(s(e.leadKey,e.lead)),1)):de("",!0),e.takeawayKey||e.takeaway?(F(),H("p",Lg,[M("b",null,q(xe(n)("mapInfo.takeaway")),1),Dt(" "+q(s(e.takeawayKey,e.takeaway)),1)])):de("",!0),(F(!0),H(ne,null,Ke(e.examples,(Y,ce)=>_a((F(),H("section",{key:ce,class:"mi-ex"},[M("h3",null,q(Ue(Y)),1),Y.kind==="image"?(F(),H(ne,{key:0},[M("img",{class:"mi-img mi-poster",src:Q(Y.src),alt:Y.alt||Ue(Y),decoding:"async",onError:te=>b[ce]=!0},null,40,Sg),Y.full?(F(),H("div",Og,[M("a",{class:"mi-full",href:Q(Y.full),target:"_blank",rel:"noopener"},q(xe(n)("mapInfo.openFull")),9,Pg)])):de("",!0)],64)):Y.kind==="pages"&&(Y.pages||[]).length?(F(),H(ne,{key:1},[y[ce]?(F(),H(ne,{key:1},[M("div",Ig,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapsePages")),9,Ng)]),M("div",Fg,[(F(!0),H(ne,null,Ke(Y.pages,(te,ae)=>(F(),H("button",{key:ae,type:"button",class:"mi-hit mi-open mi-page","aria-label":xe(n)("mapInfo.collapsePages"),onClick:Oe=>se(ce)},[M("img",{class:"mi-img",src:Q(te),alt:Ue(Y)+" "+r(ae+1),loading:"lazy",decoding:"async",onError:ye},null,40,Rg)],8,Dg))),128))]),M("div",Wg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapsePages")),9,zg)])],64)):(F(),H(ne,{key:0},[M("button",{type:"button",class:et(["mi-hit mi-page",{"mi-stack":Y.pages.length>1}]),"aria-label":xe(n)("mapInfo.expandPages",{n:r(Y.pages.length)}),"aria-expanded":"false",onClick:te=>se(ce)},[M("img",{class:"mi-img",src:Q(Y.pages[0]),alt:Ue(Y),decoding:"async",onError:te=>b[ce]=!0},null,40,Mg)],10,Eg),Y.pages.length>1?(F(),H("div",Ag,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:te=>se(ce)},q(xe(n)("mapInfo.expandPages",{n:r(Y.pages.length)})),9,Cg)])):de("",!0)],64))],64)):Y.kind==="deck"&&(Y.cards||[]).length?(F(),H(ne,{key:2},[y[ce]?(F(),H(ne,{key:1},[M("div",Bg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapseDeck")),9,Kg)]),M("div",qg,[(F(!0),H(ne,null,Ke(Y.cards,(te,ae)=>(F(),H("img",{key:ae,class:"mi-img",src:Q(te),alt:Ue(Y)+" "+r(ae+1),loading:"lazy",decoding:"async",onError:ye},null,40,Gg))),128))]),M("div",Xg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapseDeck")),9,Yg)])],64)):(F(),H(ne,{key:0},[M("button",{type:"button",class:"mi-hit mi-deck","aria-label":xe(n)("mapInfo.expandDeck",{n:r(Y.cards.length)}),"aria-expanded":"false",onClick:te=>se(ce)},[(F(!0),H(ne,null,Ke($t(Y),(te,ae)=>(F(),H("img",{key:ae,class:"mi-card",src:Q(te),alt:"",decoding:"async",onError:Oe=>ae===0?b[ce]=!0:ye(Oe),style:wo({insetInlineStart:ae*36+"px",transform:"rotate("+(ae-2)*4+"deg)",zIndex:10-ae})},null,44,Hg))),128))],8,Ug),M("div",jg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:te=>se(ce)},q(xe(n)("mapInfo.expandDeck",{n:r(Y.cards.length)})),9,Vg)])],64))],64)):Y.kind==="table"&&(Y.columns||[]).length?(F(),H(ne,{key:3},[M("div",Jg,[M("table",Zg,[M("thead",null,[M("tr",null,[(F(!0),H(ne,null,Ke(Y.columns,(te,ae)=>(F(),H("th",{key:ae,scope:"col"},q(he(te)),1))),128))])]),M("tbody",null,[(F(!0),H(ne,null,Ke(Y.rows||[],(te,ae)=>(F(),H("tr",{key:ae},[(F(!0),H(ne,null,Ke(te,(Oe,_t)=>(F(),H("td",{key:_t},q(typeof Oe=="number"?r(Oe):Oe),1))),128))]))),128))])])]),Y.total&&Y.total>(Y.rows||[]).length?(F(),H("p",Qg,q(xe(n)("mapInfo.moreRows",{n:r(Y.total-(Y.rows||[]).length)})),1)):de("",!0)],64)):de("",!0)])),[[Aa,!b[ce]]])),128)),e.noteKey||e.note?(F(),H("p",em,q(s(e.noteKey,e.note)),1)):de("",!0)]),M("div",tm,[M("label",null,[M("input",{type:"checkbox",checked:g.value,onChange:X[0]||(X[0]=Y=>P(Y.target.checked))},null,40,om),M("span",null,q(xe(n)("mapInfo.pointerOff")),1)])])],8,vg)],32)):de("",!0)],8,gg))}},nm=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h: 0}.dms-slot{position:relative;min-height:100%}.dms-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}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-help-close:focus-visible{outline:2px solid #3f8f5a;outline-offset:2px}.dms-help-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#00000059;padding:16px}.dms-help{max-width:420px;width:100%;color:#3b463d;background:#fff;border-radius:12px;padding:18px 20px 14px;box-shadow:0 12px 32px #0003;font-size:14px;line-height:1.5}.dms-help-title{margin:0 0 8px;font-size:16px}.dms-help-what,.dms-help-how{margin:0 0 10px}.dms-help-close{float:right;font:inherit;padding:6px 14px;border-radius:8px;border:1px solid #d1d4cd;background:#f3f3f1;cursor:pointer}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-mobile-notice{position:sticky;top:0;z-index:30;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;font-size:13px;line-height:1.4;color:#3b463d;background:#fff8e6;border-bottom:1px solid #f0d58c}.dms-mobile-notice span{flex:1}.dms-mobile-notice-x{flex:none;min-width:32px;min-height:32px;border:0;border-radius:6px;background:transparent;color:inherit;font-size:18px;line-height:1;cursor:pointer}.dms-mobile-notice-x:focus-visible{outline:2px solid #3b463d;outline-offset:1px}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;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}.dms-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}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function Ll(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(ns.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(ns.includes(e))return e}catch{}return""}const ls=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"prayer-map",icon:"embed"},{id:"upg-100",icon:"list"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}];function sm(e){const t={},o=e&&Array.isArray(e.bundles)?e.bundles:[];for(const a of o)for(const n of Array.isArray(a&&a.profiles)?a.profiles:[])n&&(n.mobile==="desktop-only"||n.mobile==="larger-screens")&&(t[a.bundle+"/"+n.profile]=n.mobile);return t}const rm=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Sl={"prayer-walk-planner":1,"gospel-internet":2,"upg-neighbor":3,"key-cities":4,"all-people-groups":5,"country-posters":6,"doxa-vision-card":7},cs=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];lm(ls);const Ka=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid","gospel-internet-board"]),qa=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function im(){const e=Object.fromEntries(cs.map(o=>[o.id,o])),t=new Set;for(const o of ls)if(o.key!=="experimental")for(const a of o.tabs||[]){const n=e[a.id];n&&n.bundle&&t.add(n.bundle)}return t}function Ol(e,t){const o=[];for(const a of e)!a||t.has(a.key)||(t.add(a.key),o.push(a));return o}function lm(e){const t=new Map,o=[];for(const a of e)if(a.key!=="experimental")for(const n of a.tabs||[]){if(!n||!n.id)continue;const s=t.get(n.id);if(s===void 0){t.set(n.id,a.key);continue}(s!==a.key||o.indexOf(n.id)===-1)&&o.push(n.id+" ("+s+" + "+a.key+")")}return o.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+o.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),o}function cm(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function pm(e){const t=im(),o=e&&Array.isArray(e.bundles)?e.bundles:[],a=[];for(const n of o){const s=n&&n.bundle;if(!s||t.has(s)||rm.has(s)||n.stage==="production")continue;const r=Array.isArray(n.profiles)?n.profiles:[];if(!r.length||r.every(d=>d.widget||Array.isArray(d.targets)&&!d.targets.includes("web")))continue;const i=r.find(d=>d.isMap)||r.find(d=>d.profile===s)||r[0],l=i.element||Array.isArray(n.elements)&&n.elements[0]||s,c=n.scriptUrl||i.scriptUrl||"";c&&a.push({id:s,label:i.title||cm(s),sub:(i.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:l,bundle:s,profile:i.profile||s,scriptUrl:c,heavy:Ka.has(l)||Ka.has(s),scroll:qa.has(l)||qa.has(s),discovered:!0})}return a.sort((n,s)=>{const r=Sl[n.id]||999,i=Sl[s.id]||999;return r!==i?r-i:n.label.localeCompare(s.label)}),a}function um(e,t){const o=e&&Array.isArray(e.bundles)?e.bundles:[],a=Object.fromEntries(o.map(s=>[s.bundle,s])),n={};for(const s of t){const r=a[s.bundle];if(!r)continue;const i=Array.isArray(r.profiles)?r.profiles:[],l=i.find(T=>T.profile===s.profile)||i[0],c=l&&l.element||Array.isArray(r.elements)&&r.elements[0]||s.bundle,d=r.scriptUrl||l&&l.scriptUrl||"";if(!d)continue;const g=l&&Array.isArray(l.instances)?l.instances:[],$=!!(s.instance&&g.some(T=>(T&&(T.id||T.instance))===s.instance));n[s.id]={tag:c,scriptUrl:d,profile:l&&l.profile||s.profile,instance:$?s.instance:"",heavy:Ka.has(c)||Ka.has(s.bundle),scroll:qa.has(c)||qa.has(s.bundle)}}return n}const dm=lo({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:rg,BackToTopButton:oi,MapInfo:am},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"Deep Research"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:ro("dmsTreeBase","")}},data(){return{paneEls:{},activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,helpOpen:!1,mobileNoticeDismissed:{},mobileFlags:null,manifestError:"",manifestBase:"",runtime:{},locale:cg(),hostLang:Ll(),localeOpen:!1,switcherLangs:ig,tabs:cs.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{largerScreenText(){return $o("messages.largerScreenNotice",this.uiLocale)||"This experimental map is built for larger screens. It opens here, but parts of it may not fit or work well on a phone."},activePaneEl(){return this.paneEls[this.activeIndex]||null},activeHelp(){const e=this.tabs[this.activeIndex];return e&&e.discovered?yl(e.id,this.uiLocale):null},cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},showInfo(){const e=this.cfg.info;return!(e===!1||e==="false"||e==="off")},headingText(){return String(this.cfg.heading||this.heading||"").trim()||"Deep Research"},showExperimental(){const e=this.cfg.experimental;return!(e===!1||e==="false"||e==="hidden"||e==="off")},navGroups(){const e=Object.fromEntries(this.tabs.map(o=>[o.id,o])),t=new Set;return ls.map(o=>{let a=Ol((o.tabs||[]).filter(n=>e[n.id]).map(n=>{const s=e[n.id],r=this.isDesktopOnly(s.id),i=r||this.mobileFlagOf(s.id)==="desktop-only";return{key:s.id,label:this.tabLabel(s),sub:this.tabSub(s),icon:n.icon,badge:i?this.tr("desktopOnly"):n.badge,disabled:r}}),t);return o.key==="experimental"&&!this.showExperimental?{key:o.key,rows:[]}:(o.key==="experimental"&&(a=a.concat(Ol(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.narrow&&this.mobileFlagOf(n.id)==="larger-screens"?this.tr("mobileNotBuilt"):this.tr("lab")})),t))),{key:o.key,label:o.i18n?this.tr(o.i18n):o.label,icon:o.icon,folder:!!o.folder,open:o.open,rows:a})}).filter(o=>o.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return lg(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return ns.includes(this.effectiveLocale)?this.effectiveLocale:"en"},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest(),this._onHostedHelp=e=>this.onHostedHelp(e),this.$el.addEventListener("doxa:help",this._onHostedHelp)},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),this._onHostedHelp&&(this.$el.removeEventListener("doxa:help",this._onHostedHelp),this._onHostedHelp=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{activeIndex(){this.helpOpen=!1},effectiveLocale(){const e=(a,n)=>{try{const s=this._slots&&this._slots[a];s&&(s.innerHTML="")}catch{}n.mounted=!1,n.state="idle",n.error=""};this.tabs.forEach((a,n)=>{a.mounted&&n!==this.activeIndex&&e(n,a)});const t=this.activeIndex,o=this.tabs[t];!o||!o.mounted||(e(t,o),this.mountElement(t))},tab(e){e&&this.onSelect(e)}},methods:{openHelp(){this.helpOpen=!0,this.$nextTick(()=>this.$refs.helpClose&&this.$refs.helpClose.focus())},closeHelp(){this.helpOpen=!1;const e=this._helpReturn;this._helpReturn=null,this.$nextTick(()=>e&&e.focus&&e.focus())},infoProps(e){const{pos:t,...o}=this.infoFor(e)||{};return o},infoPos(e){const t=(this.infoFor(e)||{}).pos||{},{narrow:o,...a}=t;return this.narrow&&o?{...a,...o}:a},infoStyle(e){const t=this.infoPos(e),o={};return t.top&&(o["--map-info-top"]=t.top),t.side&&(o["--map-info-side"]=t.side),o},infoFor(e){const t=this.showInfo&&e&&fg[e.id];return t&&(!t.leadKey||$o(t.leadKey,"en"))?t:null},tabHasHelp(e){return!!(e&&e.discovered&&yl(e.id,this.uiLocale))},onHostedHelp(e){if(!this.activeHelp)return;e.stopPropagation();const t=e.composedPath?e.composedPath():[];this._helpReturn=t.find(o=>o&&o.tagName==="BUTTON")||null,this.openHelp()},setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return Va(this.uiLocale,e,t)},t(e,t){return Va(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||ug("tab."+e.id)?Va(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):Va(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=Ll()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isDesktopOnly(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},mobileFlagOf(e){const t=this.tabs.find(o=>o.id===e);return t&&this.mobileFlags&&this.mobileFlags[t.bundle+"/"+t.profile]||null},isDesktopOnly(e){return this.narrow&&this.mobileFlagOf(e)==="desktop-only"},showsMobileNotice(e){return this.narrow&&this.mobileFlagOf(e)==="larger-screens"&&!this.mobileNoticeDismissed[e]},dismissMobileNotice(e){this.mobileNoticeDismissed={...this.mobileNoticeDismissed,[e]:!0}},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const o of t.rows){const a=this.tabs.findIndex(n=>n.id===o.key);if(!(a<0)&&(e<0&&(e=a),!o.disabled))return a}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=c=>{try{return new URL(c,location.href).href.replace(/[^/]*$/,"")}catch{return""}},o={url:e,root:t(e)},a={url:this.resolve("doxa-maps-spa/manifest.json"),root:o.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const s=n?[a,o]:[o,a],r="/public/dx-maps/manifest.json";s.some(c=>c.url===r)||s.push({url:r,root:t(r)});const i=[],l=c=>{if(c>=s.length){this.manifestError="manifest.json not found (tried "+i.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const{url:d,root:g}=s[c];return i.push(d),fetch(d,{credentials:"same-origin"}).then($=>{if(!$||!$.ok)throw new Error(d+" → HTTP "+($?$.status:"?"));return $.json()}).then($=>{if(!$)throw new Error(d+" → empty");this.manifestError="",this.manifestBase=g||"",this.applyManifest($)}).catch(()=>l(c+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.mobileFlags=sm(e),this.applyPageGlobals();const t=um(e,cs),o=this.activeKey,a=[];for(const l of this.tabs){if(l.discovered){a.push(l);continue}const c=t[l.id];c&&(Object.assign(l,c,{resolved:!0}),a.push(l))}const n=new Set(a.map(l=>l.id));if(this.showExperimental)for(const l of pm(e))n.has(l.id)||a.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=a;const s=this.requestedTab(),r=s?this.tabs.findIndex(l=>l.id===s):-1,i=this.tabs.findIndex(l=>l.id===o);r>=0&&!this.isDesktopOnly(s)&&!this._honouredTab?this.select(r):this.select(i>=0&&!this.isDesktopOnly(o)?i:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(o=>o.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isDesktopOnly(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,pg(e)},onSelect(e){if(this.isDesktopOnly(e)){const o=this.tabs.find(a=>a.id===e);this.disabledNotice=($o("messages.desktopOnlyNotice",this.uiLocale)||"{label} only supports desktop — open this page on a desktop to use it.").replace("{label}",o?this.tabLabel(o):e),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(o=>o.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+o:this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const a=this.tabs[t];a&&a.heavy&&a.mounted&&this.releaseTab(t,a)}const o=this.tabs[e];o&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:o.id,label:o.label})),o.scriptUrl&&(this.narrow&&this.mobileFlags===null||this.isDesktopOnly(o.id)||o.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const o=this._slots&&this._slots[e];o&&(o.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const o=this.tk||this.cfg.tk||this.runtime.token;return o&&(t.tk=o),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const o=this.resolve(t.scriptUrl);bl(o).then(()=>ih(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const a=this._slots&&this._slots[e];if(!a){t.state="error",t.error="no slot";return}a.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;min-height:0;",a.appendChild(n),t.state="ready"}catch(a){t.state="error",t.error="mount failed: "+(a&&a.message||String(a))}}).catch(a=>{t.state="error",t.error=a&&a.message||String(a)})}}}),fm={class:"dms-locale"},hm=["aria-expanded"],gm={class:"dms-flag"},mm={class:"dms-locale-name"},bm={key:0,class:"dms-locale-menu",role:"listbox"},$m=["aria-selected"],_m=["onClick"],vm={class:"dms-flag"},ym={class:"dms-locale-name"},wm={class:"dms-locale-en"},km=["hidden","data-doxa-help"],xm={key:0,class:"dms-mobile-notice",role:"status"},Tm=["aria-label","onClick"],Lm={key:2,class:"dms-hint"},Sm={key:3,class:"dms-hint err"},Om={key:4,class:"dms-hint err"},Pm={key:0,class:"dms-notice",role:"status"},Em={id:"dms-help-title",class:"dms-help-title"},Mm={class:"dms-help-what"},Am={class:"dms-help-how"};function Cm(e,t,o,a,n,s){const r=ka("MapInfo"),i=ka("BackToTopButton"),l=ka("VerticalTabsLayout");return F(),uo(l,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,title:e.headingText,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},zc({brand:Mo(()=>[t[5]||(t[5]=M("span",{class:"dms-logo","aria-hidden":"true"},[M("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[M("circle",{cx:"12",cy:"12",r:"9"}),M("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),M("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Mo(()=>[Dt(q(e.t("meta",{n:e.tabs.length})),1)]),default:Mo(()=>[(F(!0),H(ne,null,Ke(e.tabs,(c,d)=>_a((F(),H("section",{key:c.id,class:"dms-pane",ref_for:!0,ref:g=>{g?e.paneEls[d]=g:delete e.paneEls[d]},hidden:d!==e.activeIndex,"data-doxa-help":e.tabHasHelp(c)?"":null,"data-doxa-gallery":""},[!c.heavy||d===e.activeIndex?(F(),H(ne,{key:0},[e.showsMobileNotice(c.id)?(F(),H("div",xm,[M("span",null,q(e.largerScreenText),1),M("button",{type:"button",class:"dms-mobile-notice-x","aria-label":e.tr("dismiss"),onClick:g=>e.dismissMobileNotice(c.id)},"×",8,Tm)])):de("",!0),M("div",{class:"dms-slot",ref_for:!0,ref:g=>e.setSlot(d,g)},null,512),e.infoFor(c)?(F(),uo(r,Cr({key:"info-"+c.id},{ref_for:!0},e.infoProps(c),{style:e.infoStyle(c),placement:e.infoPos(c).placement||"top-right","assets-base":e.assetsBase,locale:e.effectiveLocale}),null,16,["style","placement","assets-base","locale"])):de("",!0),c.state==="loading"?(F(),H("div",Lm,q(e.tr("loading",{label:e.tabLabel(c)})),1)):c.state==="error"?(F(),H("div",Sm,[Dt(q(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[7]||(t[7]=M("br",null,null,-1)),M("small",null,q(c.error),1)])):c.state==="idle"&&!c.scriptUrl&&e.manifestError?(F(),H("div",Om,[Dt(q(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[8]||(t[8]=M("br",null,null,-1)),M("small",null,q(e.manifestError),1),t[9]||(t[9]=M("br",null,null,-1)),M("small",null,q(e.tr("manifestHint")),1)])):de("",!0)],64)):de("",!0)],8,km)),[[Aa,d===e.activeIndex]])),128)),e.disabledNotice?(F(),H("div",Pm,q(e.disabledNotice),1)):de("",!0),e.helpOpen&&e.activeHelp?(F(),H("div",{key:1,class:"dms-help-scrim",onClick:t[3]||(t[3]=Ia((...c)=>e.closeHelp&&e.closeHelp(...c),["self"])),onKeydown:t[4]||(t[4]=Zr(Ia((...c)=>e.closeHelp&&e.closeHelp(...c),["stop","prevent"]),["esc"]))},[M("div",{class:"dms-help",role:"dialog","aria-modal":"true","aria-labelledby":"dms-help-title",onKeydown:t[2]||(t[2]=Zr(Ia(c=>e.$refs.helpClose&&e.$refs.helpClose.focus(),["prevent"]),["tab"]))},[M("h2",Em,q(e.tabLabel(e.tabs[e.activeIndex])),1),M("p",Mm,[M("strong",null,q(e.activeHelp.what),1)]),M("p",Am,q(e.activeHelp.how),1),M("button",{ref:"helpClose",type:"button",class:"dms-help-close",onClick:t[1]||(t[1]=(...c)=>e.closeHelp&&e.closeHelp(...c))},q(e.tr("close")),513)],32)],32)):de("",!0),Ae(i,{target:e.activePaneEl,labels:{backToTop:e.tr("backToTop")}},null,8,["target","labels"])]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Mo(()=>[M("div",fm,[M("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=c=>e.localeOpen=!e.localeOpen)},[M("span",gm,q(e.activeLang.flag),1),M("span",mm,q(e.activeLang.nativeName),1),t[6]||(t[6]=M("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,hm),e.localeOpen?(F(),H("ul",bm,[(F(!0),H(ne,null,Ke(e.switcherLangs,c=>(F(),H("li",{key:c.code,role:"option","aria-selected":String(c.code===e.locale)},[M("button",{type:"button",class:et(["dms-locale-opt",{active:c.code===e.locale}]),onClick:d=>e.setLocale(c.code)},[M("span",vm,q(c.flag),1),M("span",ym,q(c.nativeName),1),M("span",wm,q(c.name),1)],10,_m)],8,$m))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","title","nav-label","header","groups","active","onUpdate:active"])}const Im=Nn(dm,[["render",Cm],["styles",[nm]]]),Nm=lh(),Fm=Gp(Im,{configureApp(e){e.provide("dmsTreeBase",Nm)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Fm)})(); +`,"map-info"),(I,X)=>(F(),H("div",{class:"mi",dir:i()?"rtl":"ltr",lang:a()},[M("button",{ref_key:"btnEl",ref:W,type:"button",class:et(["mi-btn",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-label":xe(n)("mapInfo.open"),title:xe(n)("mapInfo.open"),"aria-haspopup":"dialog","aria-expanded":String(D.value),onClick:E},[...X[1]||(X[1]=[M("svg",{viewBox:"0 0 24 24","aria-hidden":"true",focusable:"false"},[M("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"2"}),M("rect",{x:"11",y:"10",width:"2",height:"7",rx:"1",fill:"currentColor"}),M("circle",{cx:"12",cy:"7",r:"1.3",fill:"currentColor"})],-1)])],10,mg),d.value&&!D.value?(F(),H("div",{key:0,class:et(["mi-pointer",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-hidden":"true"},[M("span",null,q(xe(n)("mapInfo.pointer")),1),(F(),H("svg",bg,[e.placement==="top-left"?(F(),H("path",$g)):(F(),H("path",_g))]))],2)):de("",!0),D.value?(F(),H("div",{key:1,class:"mi-scrim",onClick:Ia(L,["self"]),onKeydown:j},[M("div",{ref_key:"dialogEl",ref:C,class:"mi-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"mi-title-"+e.storageKey},[M("div",yg,[M("h2",{id:"mi-title-"+e.storageKey,class:"mi-title"},q(xe(n)("mapInfo.title")),9,wg),M("button",{ref_key:"closeEl",ref:V,type:"button",class:"mi-close","aria-label":xe(n)("mapInfo.close"),onClick:L},"×",8,kg)]),M("div",xg,[e.leadKey||e.lead?(F(),H("p",Tg,q(s(e.leadKey,e.lead)),1)):de("",!0),e.takeawayKey||e.takeaway?(F(),H("p",Lg,[M("b",null,q(xe(n)("mapInfo.takeaway")),1),Dt(" "+q(s(e.takeawayKey,e.takeaway)),1)])):de("",!0),(F(!0),H(ne,null,Ke(e.examples,(Y,ce)=>_a((F(),H("section",{key:ce,class:"mi-ex"},[M("h3",null,q(Ue(Y)),1),Y.kind==="image"?(F(),H(ne,{key:0},[M("img",{class:"mi-img mi-poster",src:Q(Y.src),alt:Y.alt||Ue(Y),decoding:"async",onError:te=>b[ce]=!0},null,40,Sg),Y.full?(F(),H("div",Og,[M("a",{class:"mi-full",href:Q(Y.full),target:"_blank",rel:"noopener"},q(xe(n)("mapInfo.openFull")),9,Pg)])):de("",!0)],64)):Y.kind==="pages"&&(Y.pages||[]).length?(F(),H(ne,{key:1},[y[ce]?(F(),H(ne,{key:1},[M("div",Ig,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapsePages")),9,Ng)]),M("div",Fg,[(F(!0),H(ne,null,Ke(Y.pages,(te,ae)=>(F(),H("button",{key:ae,type:"button",class:"mi-hit mi-open mi-page","aria-label":xe(n)("mapInfo.collapsePages"),onClick:Oe=>se(ce)},[M("img",{class:"mi-img",src:Q(te),alt:Ue(Y)+" "+r(ae+1),loading:"lazy",decoding:"async",onError:ye},null,40,Rg)],8,Dg))),128))]),M("div",Wg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapsePages")),9,zg)])],64)):(F(),H(ne,{key:0},[M("button",{type:"button",class:et(["mi-hit mi-page",{"mi-stack":Y.pages.length>1}]),"aria-label":xe(n)("mapInfo.expandPages",{n:r(Y.pages.length)}),"aria-expanded":"false",onClick:te=>se(ce)},[M("img",{class:"mi-img",src:Q(Y.pages[0]),alt:Ue(Y),decoding:"async",onError:te=>b[ce]=!0},null,40,Mg)],10,Eg),Y.pages.length>1?(F(),H("div",Ag,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:te=>se(ce)},q(xe(n)("mapInfo.expandPages",{n:r(Y.pages.length)})),9,Cg)])):de("",!0)],64))],64)):Y.kind==="deck"&&(Y.cards||[]).length?(F(),H(ne,{key:2},[y[ce]?(F(),H(ne,{key:1},[M("div",Bg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapseDeck")),9,Kg)]),M("div",qg,[(F(!0),H(ne,null,Ke(Y.cards,(te,ae)=>(F(),H("img",{key:ae,class:"mi-img",src:Q(te),alt:Ue(Y)+" "+r(ae+1),loading:"lazy",decoding:"async",onError:ye},null,40,Gg))),128))]),M("div",Xg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:te=>se(ce)},q(xe(n)("mapInfo.collapseDeck")),9,Yg)])],64)):(F(),H(ne,{key:0},[M("button",{type:"button",class:"mi-hit mi-deck","aria-label":xe(n)("mapInfo.expandDeck",{n:r(Y.cards.length)}),"aria-expanded":"false",onClick:te=>se(ce)},[(F(!0),H(ne,null,Ke($t(Y),(te,ae)=>(F(),H("img",{key:ae,class:"mi-card",src:Q(te),alt:"",decoding:"async",onError:Oe=>ae===0?b[ce]=!0:ye(Oe),style:wo({insetInlineStart:ae*36+"px",transform:"rotate("+(ae-2)*4+"deg)",zIndex:10-ae})},null,44,Hg))),128))],8,Ug),M("div",jg,[M("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:te=>se(ce)},q(xe(n)("mapInfo.expandDeck",{n:r(Y.cards.length)})),9,Vg)])],64))],64)):Y.kind==="table"&&(Y.columns||[]).length?(F(),H(ne,{key:3},[M("div",Jg,[M("table",Zg,[M("thead",null,[M("tr",null,[(F(!0),H(ne,null,Ke(Y.columns,(te,ae)=>(F(),H("th",{key:ae,scope:"col"},q(he(te)),1))),128))])]),M("tbody",null,[(F(!0),H(ne,null,Ke(Y.rows||[],(te,ae)=>(F(),H("tr",{key:ae},[(F(!0),H(ne,null,Ke(te,(Oe,_t)=>(F(),H("td",{key:_t},q(typeof Oe=="number"?r(Oe):Oe),1))),128))]))),128))])])]),Y.total&&Y.total>(Y.rows||[]).length?(F(),H("p",Qg,q(xe(n)("mapInfo.moreRows",{n:r(Y.total-(Y.rows||[]).length)})),1)):de("",!0)],64)):de("",!0)])),[[Aa,!b[ce]]])),128)),e.noteKey||e.note?(F(),H("p",em,q(s(e.noteKey,e.note)),1)):de("",!0)]),M("div",tm,[M("label",null,[M("input",{type:"checkbox",checked:g.value,onChange:X[0]||(X[0]=Y=>P(Y.target.checked))},null,40,om),M("span",null,q(xe(n)("mapInfo.pointerOff")),1)])])],8,vg)],32)):de("",!0)],8,gg))}},nm=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h: 0}.mi.dms-info-raise .mi-btn{z-index:60}.dms-slot{position:relative;min-height:100%}.dms-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}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-help-close:focus-visible{outline:2px solid #3f8f5a;outline-offset:2px}.dms-help-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#00000059;padding:16px}.dms-help{max-width:420px;width:100%;color:#3b463d;background:#fff;border-radius:12px;padding:18px 20px 14px;box-shadow:0 12px 32px #0003;font-size:14px;line-height:1.5}.dms-help-title{margin:0 0 8px;font-size:16px}.dms-help-what,.dms-help-how{margin:0 0 10px}.dms-help-close{float:right;font:inherit;padding:6px 14px;border-radius:8px;border:1px solid #d1d4cd;background:#f3f3f1;cursor:pointer}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-mobile-notice{position:sticky;top:0;z-index:30;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;font-size:13px;line-height:1.4;color:#3b463d;background:#fff8e6;border-bottom:1px solid #f0d58c}.dms-mobile-notice span{flex:1}.dms-mobile-notice-x{flex:none;min-width:32px;min-height:32px;border:0;border-radius:6px;background:transparent;color:inherit;font-size:18px;line-height:1;cursor:pointer}.dms-mobile-notice-x:focus-visible{outline:2px solid #3b463d;outline-offset:1px}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;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}.dms-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}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function Ll(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(ns.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(ns.includes(e))return e}catch{}return""}const ls=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"prayer-map",icon:"embed"},{id:"upg-100",icon:"list"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}];function sm(e){const t={},o=e&&Array.isArray(e.bundles)?e.bundles:[];for(const a of o)for(const n of Array.isArray(a&&a.profiles)?a.profiles:[])n&&(n.mobile==="desktop-only"||n.mobile==="larger-screens")&&(t[a.bundle+"/"+n.profile]=n.mobile);return t}const rm=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Sl={"prayer-walk-planner":1,"gospel-internet":2,"upg-neighbor":3,"key-cities":4,"all-people-groups":5,"country-posters":6,"doxa-vision-card":7},cs=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];lm(ls);const Ka=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid","gospel-internet-board"]),qa=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function im(){const e=Object.fromEntries(cs.map(o=>[o.id,o])),t=new Set;for(const o of ls)if(o.key!=="experimental")for(const a of o.tabs||[]){const n=e[a.id];n&&n.bundle&&t.add(n.bundle)}return t}function Ol(e,t){const o=[];for(const a of e)!a||t.has(a.key)||(t.add(a.key),o.push(a));return o}function lm(e){const t=new Map,o=[];for(const a of e)if(a.key!=="experimental")for(const n of a.tabs||[]){if(!n||!n.id)continue;const s=t.get(n.id);if(s===void 0){t.set(n.id,a.key);continue}(s!==a.key||o.indexOf(n.id)===-1)&&o.push(n.id+" ("+s+" + "+a.key+")")}return o.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+o.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),o}function cm(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function pm(e){const t=im(),o=e&&Array.isArray(e.bundles)?e.bundles:[],a=[];for(const n of o){const s=n&&n.bundle;if(!s||t.has(s)||rm.has(s)||n.stage==="production")continue;const r=Array.isArray(n.profiles)?n.profiles:[];if(!r.length||r.every(d=>d.widget||Array.isArray(d.targets)&&!d.targets.includes("web")))continue;const i=r.find(d=>d.isMap)||r.find(d=>d.profile===s)||r[0],l=i.element||Array.isArray(n.elements)&&n.elements[0]||s,c=n.scriptUrl||i.scriptUrl||"";c&&a.push({id:s,label:i.title||cm(s),sub:(i.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:l,bundle:s,profile:i.profile||s,scriptUrl:c,heavy:Ka.has(l)||Ka.has(s),scroll:qa.has(l)||qa.has(s),discovered:!0})}return a.sort((n,s)=>{const r=Sl[n.id]||999,i=Sl[s.id]||999;return r!==i?r-i:n.label.localeCompare(s.label)}),a}function um(e,t){const o=e&&Array.isArray(e.bundles)?e.bundles:[],a=Object.fromEntries(o.map(s=>[s.bundle,s])),n={};for(const s of t){const r=a[s.bundle];if(!r)continue;const i=Array.isArray(r.profiles)?r.profiles:[],l=i.find(T=>T.profile===s.profile)||i[0],c=l&&l.element||Array.isArray(r.elements)&&r.elements[0]||s.bundle,d=r.scriptUrl||l&&l.scriptUrl||"";if(!d)continue;const g=l&&Array.isArray(l.instances)?l.instances:[],$=!!(s.instance&&g.some(T=>(T&&(T.id||T.instance))===s.instance));n[s.id]={tag:c,scriptUrl:d,profile:l&&l.profile||s.profile,instance:$?s.instance:"",heavy:Ka.has(c)||Ka.has(s.bundle),scroll:qa.has(c)||qa.has(s.bundle)}}return n}const dm=lo({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:rg,BackToTopButton:oi,MapInfo:am},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"Deep Research"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:ro("dmsTreeBase","")}},data(){return{paneEls:{},activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,helpOpen:!1,mobileNoticeDismissed:{},mobileFlags:null,manifestError:"",manifestBase:"",runtime:{},locale:cg(),hostLang:Ll(),localeOpen:!1,switcherLangs:ig,tabs:cs.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{largerScreenText(){return $o("messages.largerScreenNotice",this.uiLocale)||"This experimental map is built for larger screens. It opens here, but parts of it may not fit or work well on a phone."},activePaneEl(){return this.paneEls[this.activeIndex]||null},activeHelp(){const e=this.tabs[this.activeIndex];return e&&e.discovered?yl(e.id,this.uiLocale):null},cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},showInfo(){const e=this.cfg.info;return!(e===!1||e==="false"||e==="off")},headingText(){return String(this.cfg.heading||this.heading||"").trim()||"Deep Research"},showExperimental(){const e=this.cfg.experimental;return!(e===!1||e==="false"||e==="hidden"||e==="off")},navGroups(){const e=Object.fromEntries(this.tabs.map(o=>[o.id,o])),t=new Set;return ls.map(o=>{let a=Ol((o.tabs||[]).filter(n=>e[n.id]).map(n=>{const s=e[n.id],r=this.isDesktopOnly(s.id),i=r||this.mobileFlagOf(s.id)==="desktop-only";return{key:s.id,label:this.tabLabel(s),sub:this.tabSub(s),icon:n.icon,badge:i?this.tr("desktopOnly"):n.badge,disabled:r}}),t);return o.key==="experimental"&&!this.showExperimental?{key:o.key,rows:[]}:(o.key==="experimental"&&(a=a.concat(Ol(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.narrow&&this.mobileFlagOf(n.id)==="larger-screens"?this.tr("mobileNotBuilt"):this.tr("lab")})),t))),{key:o.key,label:o.i18n?this.tr(o.i18n):o.label,icon:o.icon,folder:!!o.folder,open:o.open,rows:a})}).filter(o=>o.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return lg(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return ns.includes(this.effectiveLocale)?this.effectiveLocale:"en"},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest(),this._onHostedHelp=e=>this.onHostedHelp(e),this.$el.addEventListener("doxa:help",this._onHostedHelp)},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),this._onHostedHelp&&(this.$el.removeEventListener("doxa:help",this._onHostedHelp),this._onHostedHelp=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{activeIndex(){this.helpOpen=!1},effectiveLocale(){const e=(a,n)=>{try{const s=this._slots&&this._slots[a];s&&(s.innerHTML="")}catch{}n.mounted=!1,n.state="idle",n.error=""};this.tabs.forEach((a,n)=>{a.mounted&&n!==this.activeIndex&&e(n,a)});const t=this.activeIndex,o=this.tabs[t];!o||!o.mounted||(e(t,o),this.mountElement(t))},tab(e){e&&this.onSelect(e)}},methods:{openHelp(){this.helpOpen=!0,this.$nextTick(()=>this.$refs.helpClose&&this.$refs.helpClose.focus())},closeHelp(){this.helpOpen=!1;const e=this._helpReturn;this._helpReturn=null,this.$nextTick(()=>e&&e.focus&&e.focus())},infoProps(e){const{pos:t,...o}=this.infoFor(e)||{};return o},infoPos(e){const t=(this.infoFor(e)||{}).pos||{},{narrow:o,...a}=t;return this.narrow&&o?{...a,...o}:a},infoStyle(e){const t=this.infoPos(e),o={};return t.top&&(o["--map-info-top"]=t.top),t.side&&(o["--map-info-side"]=t.side),o},infoFor(e){const t=this.showInfo&&e&&fg[e.id];return t&&(!t.leadKey||$o(t.leadKey,"en"))?t:null},tabHasHelp(e){return!!(e&&e.discovered&&yl(e.id,this.uiLocale))},onHostedHelp(e){if(!this.activeHelp)return;e.stopPropagation();const t=e.composedPath?e.composedPath():[];this._helpReturn=t.find(o=>o&&o.tagName==="BUTTON")||null,this.openHelp()},setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return Va(this.uiLocale,e,t)},t(e,t){return Va(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||ug("tab."+e.id)?Va(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):Va(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=Ll()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isDesktopOnly(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},mobileFlagOf(e){const t=this.tabs.find(o=>o.id===e);return t&&this.mobileFlags&&this.mobileFlags[t.bundle+"/"+t.profile]||null},isDesktopOnly(e){return this.narrow&&this.mobileFlagOf(e)==="desktop-only"},showsMobileNotice(e){return this.narrow&&this.mobileFlagOf(e)==="larger-screens"&&!this.mobileNoticeDismissed[e]},dismissMobileNotice(e){this.mobileNoticeDismissed={...this.mobileNoticeDismissed,[e]:!0}},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const o of t.rows){const a=this.tabs.findIndex(n=>n.id===o.key);if(!(a<0)&&(e<0&&(e=a),!o.disabled))return a}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=c=>{try{return new URL(c,location.href).href.replace(/[^/]*$/,"")}catch{return""}},o={url:e,root:t(e)},a={url:this.resolve("doxa-maps-spa/manifest.json"),root:o.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const s=n?[a,o]:[o,a],r="/public/dx-maps/manifest.json";s.some(c=>c.url===r)||s.push({url:r,root:t(r)});const i=[],l=c=>{if(c>=s.length){this.manifestError="manifest.json not found (tried "+i.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const{url:d,root:g}=s[c];return i.push(d),fetch(d,{credentials:"same-origin"}).then($=>{if(!$||!$.ok)throw new Error(d+" → HTTP "+($?$.status:"?"));return $.json()}).then($=>{if(!$)throw new Error(d+" → empty");this.manifestError="",this.manifestBase=g||"",this.applyManifest($)}).catch(()=>l(c+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.mobileFlags=sm(e),this.applyPageGlobals();const t=um(e,cs),o=this.activeKey,a=[];for(const l of this.tabs){if(l.discovered){a.push(l);continue}const c=t[l.id];c&&(Object.assign(l,c,{resolved:!0}),a.push(l))}const n=new Set(a.map(l=>l.id));if(this.showExperimental)for(const l of pm(e))n.has(l.id)||a.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=a;const s=this.requestedTab(),r=s?this.tabs.findIndex(l=>l.id===s):-1,i=this.tabs.findIndex(l=>l.id===o);r>=0&&!this.isDesktopOnly(s)&&!this._honouredTab?this.select(r):this.select(i>=0&&!this.isDesktopOnly(o)?i:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(o=>o.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isDesktopOnly(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,pg(e)},onSelect(e){if(this.isDesktopOnly(e)){const o=this.tabs.find(a=>a.id===e);this.disabledNotice=($o("messages.desktopOnlyNotice",this.uiLocale)||"{label} only supports desktop — open this page on a desktop to use it.").replace("{label}",o?this.tabLabel(o):e),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(o=>o.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+o:this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const a=this.tabs[t];a&&a.heavy&&a.mounted&&this.releaseTab(t,a)}const o=this.tabs[e];o&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:o.id,label:o.label})),o.scriptUrl&&(this.narrow&&this.mobileFlags===null||this.isDesktopOnly(o.id)||o.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const o=this._slots&&this._slots[e];o&&(o.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const o=this.tk||this.cfg.tk||this.runtime.token;return o&&(t.tk=o),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const o=this.resolve(t.scriptUrl);bl(o).then(()=>ih(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const a=this._slots&&this._slots[e];if(!a){t.state="error",t.error="no slot";return}a.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;min-height:0;",a.appendChild(n),t.state="ready"}catch(a){t.state="error",t.error="mount failed: "+(a&&a.message||String(a))}}).catch(a=>{t.state="error",t.error=a&&a.message||String(a)})}}}),fm={class:"dms-locale"},hm=["aria-expanded"],gm={class:"dms-flag"},mm={class:"dms-locale-name"},bm={key:0,class:"dms-locale-menu",role:"listbox"},$m=["aria-selected"],_m=["onClick"],vm={class:"dms-flag"},ym={class:"dms-locale-name"},wm={class:"dms-locale-en"},km=["hidden","data-doxa-help"],xm={key:0,class:"dms-mobile-notice",role:"status"},Tm=["aria-label","onClick"],Lm={key:2,class:"dms-hint"},Sm={key:3,class:"dms-hint err"},Om={key:4,class:"dms-hint err"},Pm={key:0,class:"dms-notice",role:"status"},Em={id:"dms-help-title",class:"dms-help-title"},Mm={class:"dms-help-what"},Am={class:"dms-help-how"};function Cm(e,t,o,a,n,s){const r=ka("MapInfo"),i=ka("BackToTopButton"),l=ka("VerticalTabsLayout");return F(),uo(l,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,title:e.headingText,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},zc({brand:Mo(()=>[t[5]||(t[5]=M("span",{class:"dms-logo","aria-hidden":"true"},[M("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[M("circle",{cx:"12",cy:"12",r:"9"}),M("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),M("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Mo(()=>[Dt(q(e.t("meta",{n:e.tabs.length})),1)]),default:Mo(()=>[(F(!0),H(ne,null,Ke(e.tabs,(c,d)=>_a((F(),H("section",{key:c.id,class:"dms-pane",ref_for:!0,ref:g=>{g?e.paneEls[d]=g:delete e.paneEls[d]},hidden:d!==e.activeIndex,"data-doxa-help":e.tabHasHelp(c)?"":null,"data-doxa-gallery":""},[!c.heavy||d===e.activeIndex?(F(),H(ne,{key:0},[e.showsMobileNotice(c.id)?(F(),H("div",xm,[M("span",null,q(e.largerScreenText),1),M("button",{type:"button",class:"dms-mobile-notice-x","aria-label":e.tr("dismiss"),onClick:g=>e.dismissMobileNotice(c.id)},"×",8,Tm)])):de("",!0),M("div",{class:"dms-slot",ref_for:!0,ref:g=>e.setSlot(d,g)},null,512),e.infoFor(c)?(F(),uo(r,Cr({key:"info-"+c.id},{ref_for:!0},e.infoProps(c),{style:e.infoStyle(c),placement:e.infoPos(c).placement||"top-right",class:{"dms-info-raise":e.infoPos(c).raise},"assets-base":e.assetsBase,locale:e.effectiveLocale}),null,16,["style","placement","class","assets-base","locale"])):de("",!0),c.state==="loading"?(F(),H("div",Lm,q(e.tr("loading",{label:e.tabLabel(c)})),1)):c.state==="error"?(F(),H("div",Sm,[Dt(q(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[7]||(t[7]=M("br",null,null,-1)),M("small",null,q(c.error),1)])):c.state==="idle"&&!c.scriptUrl&&e.manifestError?(F(),H("div",Om,[Dt(q(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[8]||(t[8]=M("br",null,null,-1)),M("small",null,q(e.manifestError),1),t[9]||(t[9]=M("br",null,null,-1)),M("small",null,q(e.tr("manifestHint")),1)])):de("",!0)],64)):de("",!0)],8,km)),[[Aa,d===e.activeIndex]])),128)),e.disabledNotice?(F(),H("div",Pm,q(e.disabledNotice),1)):de("",!0),e.helpOpen&&e.activeHelp?(F(),H("div",{key:1,class:"dms-help-scrim",onClick:t[3]||(t[3]=Ia((...c)=>e.closeHelp&&e.closeHelp(...c),["self"])),onKeydown:t[4]||(t[4]=Zr(Ia((...c)=>e.closeHelp&&e.closeHelp(...c),["stop","prevent"]),["esc"]))},[M("div",{class:"dms-help",role:"dialog","aria-modal":"true","aria-labelledby":"dms-help-title",onKeydown:t[2]||(t[2]=Zr(Ia(c=>e.$refs.helpClose&&e.$refs.helpClose.focus(),["prevent"]),["tab"]))},[M("h2",Em,q(e.tabLabel(e.tabs[e.activeIndex])),1),M("p",Mm,[M("strong",null,q(e.activeHelp.what),1)]),M("p",Am,q(e.activeHelp.how),1),M("button",{ref:"helpClose",type:"button",class:"dms-help-close",onClick:t[1]||(t[1]=(...c)=>e.closeHelp&&e.closeHelp(...c))},q(e.tr("close")),513)],32)],32)):de("",!0),Ae(i,{target:e.activePaneEl,labels:{backToTop:e.tr("backToTop")}},null,8,["target","labels"])]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Mo(()=>[M("div",fm,[M("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=c=>e.localeOpen=!e.localeOpen)},[M("span",gm,q(e.activeLang.flag),1),M("span",mm,q(e.activeLang.nativeName),1),t[6]||(t[6]=M("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,hm),e.localeOpen?(F(),H("ul",bm,[(F(!0),H(ne,null,Ke(e.switcherLangs,c=>(F(),H("li",{key:c.code,role:"option","aria-selected":String(c.code===e.locale)},[M("button",{type:"button",class:et(["dms-locale-opt",{active:c.code===e.locale}]),onClick:d=>e.setLocale(c.code)},[M("span",vm,q(c.flag),1),M("span",ym,q(c.nativeName),1),M("span",wm,q(c.name),1)],10,_m)],8,$m))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","title","nav-label","header","groups","active","onUpdate:active"])}const Im=Nn(dm,[["render",Cm],["styles",[nm]]]),Nm=lh(),Fm=Gp(Im,{configureApp(e){e.provide("dmsTreeBase",Nm)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Fm)})(); diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html index 123e2b0fd..73edac276 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html @@ -61,7 +61,7 @@ - + - + \n\n\n" + "script": "\n\n\n" }, "instances": [ { diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index a7fc76f47..fd3647843 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -361,7 +361,7 @@ "bundle": "doxa-maps-spa", "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js", - "integrity": "sha384-P4t0Vulb6moRHjKPcF6MVbKLSWkO69O8OnKFd11DOlLVAowfoF8VPHQovdP8y4Uf", + "integrity": "sha384-VzG6VGsiVxe7r1bZGUG6O/vSmGb4JgiJ4Fc7MgLEe7dczC0M5AbsGT8IO2NdBhJz", "elements": [ "doxa-maps-spa" ], @@ -389,7 +389,7 @@ "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" }, "instances": [ {