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": [ {