From 15b8cb47561b614a811fcebf54fe3eb8f574d404 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 06:55:58 +0000 Subject: [PATCH] Rebuild the consumers main left stale (build owner, README rule 5) check:composite-freshness found stale on main: doxa-research-map. Rebuilt, tree + SRI regenerated; the landing precondition (fresh, one folder, SRI) passed in main-capture scan. --- public/README.md | 2 +- public/dx-maps/doxa-maps-spa/manifest.json | 42 ++----------------- .../doxa-research-map/doxa-research-map.js | 2 +- .../doxa-research-map/research-map/index.html | 2 +- .../research-map/maplibre/index.html | 2 +- public/dx-maps/manifest.json | 42 ++----------------- 6 files changed, 12 insertions(+), 80 deletions(-) diff --git a/public/README.md b/public/README.md index 1aa42e601..144f3177f 100644 --- a/public/README.md +++ b/public/README.md @@ -2,7 +2,7 @@ This folder is GENERATED by `bun run build`; do not edit it by hand. It holds exactly one thing: -- **`dx-maps/`** — the output folder: 25 plugin bundles and 37 pages, self-contained. +- **`dx-maps/`** — the output folder: 24 plugin bundles and 36 pages, self-contained. Copy this one folder to any web host (or open it from disk) and it works. - `dx-maps/index.html` — the front page: the Plugin Studio, every plugin in one place. - `dx-maps//.js` — a plugin's bundle (a custom element; load it with a `\n\n" + "script": "\n\n\n\n" }, "instances": [ { @@ -1206,40 +1206,6 @@ } ] }, - { - "bundle": "rudder-voice", - "scriptUrl": "./rudder-voice/rudder-voice.js", - "output": "dx-maps/rudder-voice/rudder-voice.js", - "integrity": "sha384-a4oi+6HstA7vCZFrrX2qSEKq56mkDBJAkg485g8BRPeZb6C6QtJ+zxmjeBDg1/XT", - "elements": [ - "rudder-voice" - ], - "stage": "experimental", - "profiles": [ - { - "profile": "rudder-voice", - "stage": "experimental", - "label": "Rudder — voice to text (desktop)", - "targets": [ - "desktop" - ], - "widget": { - "corner": "bottom-right" - }, - "file": "rudder-voice.vue", - "description": "A DESKTOP-target plugin (rudder-voice.meta.json \"targets\": [\"desktop\"]). The speech", - "element": "rudder-voice", - "type": "single", - "isMap": false, - "iframeUrl": "./rudder-voice/rudder-voice/index.html", - "scriptUrl": "./rudder-voice/rudder-voice.js", - "embed": { - "iframe": "", - "script": "\n\n" - } - } - ] - }, { "bundle": "stack-demo", "scriptUrl": "./stack-demo/stack-demo.js", diff --git a/public/dx-maps/doxa-research-map/doxa-research-map.js b/public/dx-maps/doxa-research-map/doxa-research-map.js index 4b0891f19..ef7bd46bd 100644 --- a/public/dx-maps/doxa-research-map/doxa-research-map.js +++ b/public/dx-maps/doxa-research-map/doxa-research-map.js @@ -1417,7 +1417,7 @@ .map-scroll-edge { position:absolute;top:0;bottom:0;width:calc(var(--map-btn-size,32px) + 6px);z-index:2;touch-action:pan-y;pointer-events:auto;background:transparent; } .map-scroll-edge--left { left:0; } .map-scroll-edge--right { right:0; } -`,"research-map");const i=Ee("profileConfig"),l=Ee("mapboxToken"),c=Kp(i),u=ae(()=>{var x;return((x=i==null?void 0:i.value)==null?void 0:x.search)===!1?!1:c==="mapbox"}),b=ae(()=>u.value?null:ph((S==null?void 0:S.value)??S)?"56px":"14px"),m=ae(()=>{var x;return((x=i==null?void 0:i.value)==null?void 0:x.legendTools)!==!1}),L=lk(c),k=Ee("dataSource");Ee("colorSet");const _=Ee("instanceId",null),g=(()=>{var F;const x=(F=i==null?void 0:i.value)==null?void 0:F.locale;return x&&ns.includes(x)?x:null})(),{locale:$,t:d,te:h}=kt();g&&($.value=g);function y(x){const F="tabs."+((x==null?void 0:x.i18nKey)||(x==null?void 0:x.id));return x&&h(F)?d(F):(x==null?void 0:x.label)??""}const p=Ee("mapStore"),w=Ee("dataStore"),f=Ee("uiStore"),R=jw(f),v={doxaRegions:!0,adoption:!1,share:!0,hamburgerMenu:!1,geocoderPersistAcrossTabs:!1},X=[{id:"prayer",label:"Prayer",colorStrategy:"prayerProgress",legend:"prayer",popup:"pray",feature:null},{id:"adoption",label:"Adoption",colorStrategy:"adoption",legend:"adoption",popup:"adopt",feature:"adoption"},{id:"engagement",label:"Engagement",colorStrategy:"engagement",legend:"engagement",popup:"pray",feature:null,sepAfter:!0},{id:"affinity-blocks",label:"People Groups (Affinity)",colorStrategy:"affinityBlock",legend:"affinity-block",popup:"pray",feature:null},{id:"doxa-regions",label:"Regions",colorStrategy:"doxaRegion",legend:"doxa-regions",popup:"pray",feature:"doxaRegions",i18nKey:"regions"},{id:"language-families",label:"Languages",colorStrategy:"languageFamily",legend:"language-family",popup:"pray",feature:null},{id:"religion",label:"Religions",colorStrategy:"religion",legend:"religion",popup:"pray",feature:null}].filter(x=>!x.feature||v[x.feature]),ee=ae(()=>X),C=ae(()=>!0),H=ve(null),T=ae(()=>ee.value.find(x=>x.id===H.value)??ee.value[0]);R.setLook(R.lookFor((gf=T.value)==null?void 0:gf.colorStrategy)),Me(()=>{var x;return(x=T.value)==null?void 0:x.colorStrategy},x=>R.setLook(R.lookFor(x),V.value));const S=ae(()=>{var x;return((x=T.value)==null?void 0:x.legend)??"default"}),G=ae(()=>{var x;return((x=T.value)==null?void 0:x.popup)??"pray"}),I=ae(()=>{var x,F,K,ue;return((x=T.value)==null?void 0:x.id)==="language-families"?"Search language family, language, dialect/variety":((F=T.value)==null?void 0:F.id)==="affinity-blocks"?"Search affinity bloc, cluster, people group":((K=T.value)==null?void 0:K.id)==="doxa-regions"?"Search region, country, people group":((ue=T.value)==null?void 0:ue.id)==="religion"?"Search religion, people group":""}),j={"affinity-blocks":"people-groups",prayer:"people-groups",adoption:"people-groups",engagement:"people-groups","language-families":"language","doxa-regions":"regions",religion:"religion"},q=ae(()=>{var x;return j[(x=T.value)==null?void 0:x.id]||""}),te=(_==null?void 0:_.value)||_||"research-map-"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,8);Pt("mapId",te);const z=ve(null),be=ve(null),$e=ve(null),Ae=new Map;Me(()=>H==null?void 0:H.value,async(x,F)=>{var ke,we,Ne;if(F!==void 0&&x!==F){F&&Ae.set(F,f.legendState);const Be=Ae.get(x)||(f.isMobile?"collapsed":"open");Be==="fullyOpen"?(ke=f.fullyOpenLegend)==null||ke.call(f):Be==="open"?(we=f.openLegend)==null||we.call(f):(Ne=f.collapseLegend)==null||Ne.call(f)}await Ot();const K=be.value,ue=K==null?void 0:K.querySelector(".rm-tab.active");if(K&&ue&&K.scrollWidth>K.clientWidth+1){const Be=K.getBoundingClientRect(),We=ue.getBoundingClientRect(),Je=K.scrollLeft+(We.left-Be.left)-(Be.width-We.width)/2,vt=K.scrollWidth-K.clientWidth,Ue=Math.max(0,Math.min(vt,Je));typeof K.scrollTo=="function"?K.scrollTo({left:Ue,behavior:"smooth"}):K.scrollLeft=Ue}});const ge=ve(null),ce=ve(!1),B=ve(null),{map:V,initializeMap:se,destroy:_e}=Sk({containerRef:ge,accessToken:l.value,provider:c,style:((hf=i==null?void 0:i.value)==null?void 0:hf.style)??R.bootStyle(),config:R.bootConfig,center:((ff=i==null?void 0:i.value)==null?void 0:ff.center)??ko.center??[20,10],zoom:((mf=i==null?void 0:i.value)==null?void 0:mf.zoom)??ko.zoom??1.8,pitch:((bf=i==null?void 0:i.value)==null?void 0:bf.pitch)??ko.pitch??0,bearing:((_f=i==null?void 0:i.value)==null?void 0:_f.bearing)??ko.bearing??0,minZoom:(($f=i==null?void 0:i.value)==null?void 0:$f.minZoom)??ko.minZoom??.5,maxZoom:NC}),E=new nh({sourcesConfig:Mn,locale:g,profileConfig:i}),N=Ax({mapId:te,dataSourceId:k.value,dataSourceManager:E,dataStore:w,markRaw:x=>x});async function M(x){const F=String(x||"").trim().toUpperCase();if(F.length!==3)return;await fs();const K=V.value;if(!K||!K.getLayer("regions-fill"))return;K.setLayoutProperty("regions-fill","visibility","visible"),K.setLayoutProperty("regions-border","visibility","visible");const ue=["literal",[F]];K.setPaintProperty("regions-fill","fill-opacity",["case",["in",["get","iso_3166_1_alpha_3"],ue],.3,.02]),K.setPaintProperty("regions-border","line-color",["case",["in",["get","iso_3166_1_alpha_3"],ue],"#111827","rgba(60,60,80,0.15)"]),K.setPaintProperty("regions-border","line-width",["case",["in",["get","iso_3166_1_alpha_3"],ue],2.5,.3]),K.getLayer("language-family-pins")&&K.moveLayer("language-family-pins")}function J(){var F;pe.clearCountry();const x=V.value;!x||!x.getLayer("regions-fill")||(x.setPaintProperty("regions-fill","fill-opacity",.2),x.setPaintProperty("regions-fill","fill-outline-color",null),x.setPaintProperty("regions-border","line-color","rgba(60,60,80,0.35)"),x.setPaintProperty("regions-border","line-width",.6),((F=T.value)==null?void 0:F.id)!=="doxa-regions"&&(x.setLayoutProperty("regions-fill","visibility","none"),x.setLayoutProperty("regions-border","visibility","none")))}const oe=lx({getMap:()=>V.value,mapId:te,getLanguageFamilyColor:x=>{var K,ue;const F=zo((K=T.value)==null?void 0:K.colorStrategy);return((ue=F==null?void 0:F.colors)==null?void 0:ue[x])??(F==null?void 0:F.fallback)??"#7c8cf8"},getNormalizedPeopleGroups:()=>N.normalizedPeopleGroups.value||[]});Hg({getMap:()=>V.value,mapId:te,getLanguageFamilyColor:()=>"#7c8cf8",getNormalizedPeopleGroups:()=>N.normalizedPeopleGroups.value||[]});const D=dx({getMap:()=>V.value,mapId:te,mapStore:p,defaultCenter:((yf=i==null?void 0:i.value)==null?void 0:yf.center)??[20,10],defaultZoom:((vf=i==null?void 0:i.value)==null?void 0:vf.zoom)??1.8}),ie=gx({getMap:()=>V.value,getActivePinColor:x=>{var K,ue;const F=zo(((K=T.value)==null?void 0:K.colorStrategy)??"languageFamily");return((ue=F==null?void 0:F.getColor)==null?void 0:ue.call(F,x))??"#1a1a1a"}});let ne=null,P=null;function A(){return ne?Promise.resolve(ne):(P||(P=Nt(()=>Promise.resolve().then(()=>iT),void 0).then(x=>(ne=x.useMapClustering({getMap:()=>V.value,mapId:te,mapStore:p,getPeopleGroups:()=>N.normalizedPeopleGroups.value||[],getClusterColor:()=>{var F,K;return((K=zo((F=T.value)==null?void 0:F.colorStrategy))==null?void 0:K.fallback)??"#7c8cf8"}}),ne))),P)}const W={setData(x){var F;(F=ne==null?void 0:ne.setData)==null||F.call(ne,x)},applyFilters(x){var F;(F=ne==null?void 0:ne.applyFilters)==null||F.call(ne,x)},refreshColors(){var x;(x=ne==null?void 0:ne.refreshColors)==null||x.call(ne)},cleanup(){var x;(x=ne==null?void 0:ne.cleanup)==null||x.call(ne)},async setEnabled(x){var F,K;(K=(F=await A()).setEnabled)==null||K.call(F,x)},async setMode(x){var F,K;(K=(F=await A()).setMode)==null||K.call(F,x)},_pendingSelectionFilter:null,setSelectionFilter(x){this._pendingSelectionFilter=x||null,ne!=null&&ne.setSelectionFilter&&ne.setSelectionFilter(x)},flushSelectionFilter(){ne!=null&&ne.setSelectionFilter&&ne.setSelectionFilter(this._pendingSelectionFilter)}},Z=ds({});Pt("legendRows",Z.rows),Pt("normalizedPeopleGroups",N.normalizedPeopleGroups);const pe=$x(()=>V.value),re=cL(te);uL(re);const{onPeopleGroupResult:Q,onAggregateResult:de,onClear:Pe,clearGeocoderProgrammatic:Re}=Px({map:V,geocoderRef:$e,clustering:W,mapStore:p,uiStore:f,mapLayers:oe,pplrInstance:re,onSemanticTreeSelect:ka,switchTab:ms,activeTabId:H,clearAllHighlights:Hr,clearCountryHighlight:J,mapId:te,legendRouters:{country:KT,region:VT,religion:WT}});re.activeTab.value=1;function Ke(x){return x==="affinity-block"?0:x==="language-family"?1:0}Me(S,x=>{re.activeTab.value=Ke(x)});const lt={get value(){return N.normalizedPeopleGroups.value||[]}},{langTree:et}=Jl(lt),Rt=[{id:"family",label:"Lang Family",info:"A language family is a group of languages descended from a common ancestor (e.g. Indo-European, Afro-Asiatic)."},{id:"language",label:"Language",info:"A language is a system of communication used by a people (e.g. Arabic, Bengali, Hindi)."},{id:"dialect",label:"Dialect/Variety",info:"A dialect/variety is a regional or social form of a language (e.g. Arabic, Sudanese; Pakistan Sign Language)."}],{affinityTree:Kt}=bh(lt),Te=[{id:"bloc",label:"Affinity Block",info:"Affinity Block (field: rop1) — broadest grouping by cultural/linguistic/geographic kinship. 16 blocks total. Examples: Malay Peoples, South Asian Peoples, Deaf, Arab World."},{id:"cluster",label:"Cluster",info:'Cluster (field: imb_reg_of_people_2, ROP 2) — finer-grained grouping inside a bloc. 194 clusters total. Suffix "(Cluster)" appears on each row to distinguish from PG/PGIC. Example: Borneo-Kalimantan within Malay Peoples.'},{id:"group",label:"People Group",info:'People Group (field: imb_reg_of_people_25, ROP 2.5) — abstract ethnolinguistic identity, country-agnostic. Suffix "(PG)" on each row. 1,736 PGs total; 131 of them have rows in multiple countries (e.g. Deaf in 123 countries). Example: Abai Sungai (PG) is one ROP25 code regardless of where its people live.'},{id:"pgic",label:"PG in Country",info:'PGIC = People Group In Country (field: imb_reg_of_people_3 + country_code) — one row per (people group, country) pair. Suffix "(PGIC)" on each row. 2,106 rows total. Example: "Abai Sungai, Malaysia (PGIC)" is the Abai Sungai PG specifically as it exists in Malaysia.'}],{regionsTree:Qe}=_h(lt),ro=[{id:"region",label:"WAGF Region",info:'WAGF macro-region (e.g. "Asia", "Africa"). Color-coded on the map.'},{id:"block",label:"WAGF Bloc",info:'WAGF bloc — the organizational sub-grouping within each region (e.g. "South East Asia", "West Africa").'},{id:"country",label:"Country",info:"Individual countries, listed by unreached-population size within their bloc."}],Y=ds(zs(()=>S.value),Dr),he=Y.progress;Pt("legendProgress",he);function Le(x){const F=[];for(const K of x){F.push({id:K.key,label:K.label,color:K.color,count:K.count??0,pop:K.population??0,filter:K.filterKey?["==",["get","_flat_filter"],K.filterKey]:null,children:[]});for(const ue of K.children||[])F.push({id:ue.key,label:ue.label,color:ue.color,count:ue.count??0,pop:ue.population??0,filter:ue.filterKey?["==",["get","_flat_filter"],ue.filterKey]:null,children:[]})}return F}const Ce=ae(()=>["prayer","engagement","adoption","religion"].includes(S.value)),ze=ae(()=>Ce.value?Le(Y.items.value):S.value==="affinity-block"?Kt.value:S.value==="doxa-regions"?Qe.value:et.value),_t=ae(()=>Ce.value?null:S.value==="affinity-block"?Te:S.value==="doxa-regions"?ro:Rt),Ge=ae(()=>Ce.value),It=ae(()=>S.value==="religion"?d("legend.colLabel.religion"):S.value==="prayer"?d("legend.colLabel.prayer"):S.value==="engagement"?d("legend.colLabel.engagement"):S.value==="adoption"?d("legend.colLabel.adoption"):Ce.value?d("legend.colLabel.status"):""),jt=ae(()=>f.legendState!=="collapsed");function go(x){x?f.openLegend():f.collapseLegend()}const Bn=ae(()=>Ce.value?d("legend.titleBar.legend"):S.value==="affinity-block"?d("legend.titleBar.peopleGroups"):S.value==="doxa-regions"?d("legend.titleBar.wagfRegions"):d("legend.titleBar.languages"));function jn(x,F){var K;for(const ue of x){if(F(ue))return ue;if((K=ue.children)!=null&&K.length){const ke=jn(ue.children,F);if(ke)return ke}}return null}Pt("onSemanticTreeSelect",x=>ka(x)),Pt("getActivePinColor",x=>{var K,ue;const F=zo(((K=T.value)==null?void 0:K.colorStrategy)??"languageFamily");return((ue=F==null?void 0:F.getColor)==null?void 0:ue.call(F,x))??"#1a1a1a"});function OT(x,F){if(!x||!F)return null;const K=x.id;if(F==="prayer"){const ue=["to-number",["get","peoplePraying"]];if(K==="noPrayer")return["==",ue,0];if(K==="fullPrayer")return[">=",ue,Do];if(K==="hasPrayer")return["all",[">",ue,0],["<",ue,Do]]}else if(F==="engagement"){if(K==="hasEngagement")return["==",["get","engagementStatus"],!0];if(K==="notEngaged")return["==",["get","engagementStatus"],!1]}else if(F==="adoption"){if(K==="hasAdoption")return["==",["get","adoptionStatus"],!0];if(K==="notAdopted")return["==",["get","adoptionStatus"],!1]}else if(F==="religion")return["==",["slice",["coalesce",["get","religion"],""],0,1],K];return null}const DT=["case",["has","iso_3166_1_alpha_3"],.7,.7],zT=["case",["has","iso_3166_1_alpha_3"],"rgba(60,60,80,0.35)","rgba(60,60,80,0.35)"],GT=["case",["has","iso_3166_1_alpha_3"],.6,.6];function jr(x,F){if(!x||!x.getLayer("regions-fill"))return;const K=Array.isArray(F)?F.filter(Boolean):[],ue=["literal",K],ke=K.length?["case",["in",["get","iso_3166_1_alpha_3"],ue],.85,.15]:DT,we=K.length?["case",["in",["get","iso_3166_1_alpha_3"],ue],"#111827","rgba(60,60,80,0.15)"]:zT,Ne=K.length?["case",["in",["get","iso_3166_1_alpha_3"],ue],2.5,.3]:GT,Be=(We,Je,vt)=>{x.getLayer(We)&&JSON.stringify(x.getPaintProperty(We,Je))!==JSON.stringify(vt)&&x.setPaintProperty(We,Je,vt)};try{Be("regions-fill","fill-opacity",ke),Be("regions-border","line-color",we),Be("regions-border","line-width",Ne)}catch{}}function ka(x){var ue,ke,we,Ne,Be,We,Je,vt;const F=V.value;if(x){const Ue=Ce.value?OT(x,S.value):null,qe=((ue=T.value)==null?void 0:ue.id)==="doxa-regions",st=Ue?{matchExpr:Ue}:{};qe&&(st.regionPolygonSource="regions"),(ke=D.zoomToLegendRow)==null||ke.call(D,x,Object.keys(st).length?st:void 0)}if(!x){if(Ce.value){const Ue=S.value;Ue==="prayer"?f.setPrayerFilter(null):Ue==="engagement"?f.setEngagementFilter(null):Ue==="adoption"?f.setAdoptionFilter(null):Ue==="religion"&&f.setReligionFilter(null)}if(F&&F.getLayer("language-family-pins")){try{F.setFilter("language-family-pins",null)}catch{}t(F,null),sn(F,null),oe.syncGlowFilter(null)}F&&F.getLayer("regions-fill")&&(F.setPaintProperty("regions-fill","fill-opacity",.7),F.setPaintProperty("regions-border","line-color","rgba(60,60,80,0.35)"),F.setPaintProperty("regions-border","line-width",.6)),p.selectedFamily&&p.selectFamily(null),p.selectedLanguage&&p.selectLanguage(null),p.selectedDialect&&((we=p.selectDialect)==null||we.call(p,null)),p.selectedRegion&&((Ne=p.selectRegion)==null||Ne.call(p,null)),Re();return}if(Ce.value){const Ue=S.value;Ue==="prayer"?f.setPrayerFilter(x.id):Ue==="engagement"?f.setEngagementFilter(x.id):Ue==="adoption"?f.setAdoptionFilter(x.id):Ue==="religion"&&f.setReligionFilter(x.id);return}if(F&&F.getLayer("language-family-pins")&&x.filter){try{F.setFilter("language-family-pins",x.filter)}catch{}t(F,x.filter),sn(F,null),oe.syncGlowFilter(x.filter)}const K=String(x.id||"");if(K.startsWith("fam:"))(Be=p.selectFamily)==null||Be.call(p,x.label);else if(K.startsWith("lang:"))(We=p.selectLanguage)==null||We.call(p,x.label);else if(K.startsWith("dial:"))(Je=p.selectDialect)==null||Je.call(p,{key:K.slice(5),originalLabels:x.originalLabels||[]});else if(K.startsWith("bloc:")||K.startsWith("cluster:")||K.startsWith("pg:")||K.startsWith("pgic:")){if(F&&F.getLayer("language-family-pins")&&x.filter){try{F.setFilter("language-family-pins",null)}catch{}t(F,x.filter),sn(F,x.filter),oe.syncGlowFilter(x.filter)}}else if(K.startsWith("region:")||K.startsWith("block:")||K.startsWith("country:")){if(F&&F.getLayer("language-family-pins")&&x.filter){try{F.setFilter("language-family-pins",x.filter)}catch{}t(F,x.filter),sn(F,null)}K.startsWith("region:")&&((vt=p.selectRegion)==null||vt.call(p,K.slice(7))),jr(F,x.isoCodes||[])}}Me(()=>f.theme,x=>{re.theme.value=x==="dark"?"dark":"light"},{immediate:!0});function xn(x,F){var ue,ke;if(!F){const we=re.selection.value;we&&((ue=we.id)!=null&&ue.startsWith(x+":"))&&(re.selection.value=null);return}const K=re.selection.value;K&&((ke=K.id)!=null&&ke.startsWith(x+":"))&&K.label===F.label||(re.selection.value=F)}Me(()=>p.selectedFamily,x=>{if(!x)return xn("fam",null);const F=jn(et.value,K=>K.id.startsWith("fam:")&&K.label===x);F&&xn("fam",{...F,depth:0})}),Me(()=>p.selectedLanguage,x=>{if(!x)return xn("lang",null);const F=jn(et.value,K=>K.id.startsWith("lang:")&&K.label===x);F&&xn("lang",{...F,depth:1})}),Me(()=>p.selectedDialect,x=>{if(!(x!=null&&x.key))return xn("dial",null);const F=`dial:${x.key}`,K=jn(et.value,ue=>ue.id===F);K&&xn("dial",{...K,depth:2})}),Me(()=>p.selectedRegion,x=>{if(!x)return xn("region",null);const F=jn(Qe.value,K=>K.id===`region:${x}`);F&&xn("region",{...F,depth:0})});const xa=ve(!1);async function pc(){var x;if(!xa.value){xa.value=!0;try{const[{useMapPoster:F},{defaultPosterSpec:K},{printImageBlob:ue}]=await Promise.all([Nt(()=>Promise.resolve().then(()=>Dh),void 0),Nt(()=>Promise.resolve().then(()=>Th),void 0),Nt(()=>Promise.resolve().then(()=>wT),void 0)]),ke=F(()=>V.value),we=K({widthIn:8.5,heightIn:11,dpi:200,orientation:"portrait"}),Ne=y(T.value)||Bn.value||"Doxa Map";we.dir=["ar","fa","he","ur"].includes(String($.value||"").split("-")[0])?"rtl":"ltr",we.slots.title={...we.slots.title,text:Ne};const Be=(Y.items.value||[]).flatMap(qe=>[qe,...qe.children||[]]),We=(Be.length?Be:((x=Z==null?void 0:Z.rows)==null?void 0:x.value)||[]).map(qe=>({label:qe.label,color:qe.color}));we.slots.legend={...we.slots.legend,rows:We,title:Bn.value},we.slots.scaleBar=!1,we.slots.north=!1;const Je=ck(V.value)==="maplibre";we.slots.footer={...we.slots.footer,left:"pray.doxa.life",right:new Date().toISOString().slice(0,10),attribution:Je?"© OpenFreeMap © OpenMapTiles © OpenStreetMap":"© Mapbox © OpenStreetMap"};const vt=await ke.render(we,"png");ue(vt,{widthIn:we.widthIn??8.5,heightIn:we.heightIn??11,title:Ne,alt:Ne})||console.error("[research-map] poster print: the host blocked the print frame")}catch(F){console.error("[research-map] poster export failed:",F)}finally{xa.value=!1}}}const BT=ae(()=>String(d("controls.export_poster")||"Export poster…"));function jT(x){if(x==="poster")return pc();if(x==="packet")return UT()}let gc=!1;async function UT(){var x,F,K,ue,ke;if(!gc){gc=!0;try{const[{usePosterPrints:we},{defaultPosterSpec:Ne},{useMapPoster:Be},{selectedPinIds:We}]=await Promise.all([Nt(()=>Promise.resolve().then(()=>xT),void 0),Nt(()=>Promise.resolve().then(()=>Th),void 0),Nt(()=>Promise.resolve().then(()=>Dh),void 0),Nt(()=>Promise.resolve().then(()=>ux),void 0)]),Je=N.normalizedPeopleGroups.value||[],vt=[((F=(x=V.value)==null?void 0:x.getFilter)==null?void 0:F.call(x,"language-family-pins"))||null,Ur].filter(Boolean);let Ue=Je;if(vt.length){const ct=We(V.value,{expressions:vt}),rn=Je.filter(Kr=>ct.has(String(Kr.uniqueId??Kr.id??"")));rn.length?Ue=rn:console.warn(`[research-map] packet: ${ct.size} pin(s) selected but no rows matched; printing the full list`)}const qe=Ue.length;Ue.length>50&&(console.warn(`[research-map] packet truncated ${Ue.length} → 50 people groups`),Ue=Ue.slice(0,50));const st=Ue.map(ct=>({slug:String(ct.slug||ct.uniqueId||ct.id||""),name:ct.name,population:ct.population,religion:ct.religionName||ct.religionLabel||ct.religion||"",country_code:ct.countryName||ct.countryIsoLabel||ct.country||ct.countryIso||"",image_url:ct.imageUrl||ct.image_url||""})),Ze=Ne({widthIn:8.27,heightIn:11.69,dpi:150,orientation:"portrait"});Ze.slots.title={...Ze.slots.title,text:Bn.value||"Doxa Map"},Ze.slots.legend={...Ze.slots.legend,rows:((K=Z==null?void 0:Z.rows)==null?void 0:K.value)||[]};let At="";try{const ct=await Be(()=>V.value).render(Ze,"png");At=``}catch(ct){console.warn("[research-map] packet map page skipped:",(ct==null?void 0:ct.message)||ct)}const ho=Bn.value||y(T.value)||"Doxa Map",Hn={id:String(((ue=T.value)==null?void 0:ue.id)||"research-map"),label:qe>Ue.length?`${ho} — ${Ue.length} of ${qe}`:ho,zoneKey:String(((ke=T.value)==null?void 0:ke.id)||"research-map")};await we({records:()=>st,lang:()=>String($.value||"en").split("-")[0],label:()=>Hn.label}).printPacket(Hn,{mapSvg:At})}catch(we){console.error("[research-map] packet export failed:",we)}finally{gc=!1}}}const of=ve(!1),nf=ae(()=>p.selectedFeature),to=ae(()=>f.isDarkTheme),hc=ae(()=>Up.lightPreset==="night");function fc(){var K;const x=V.value;if(!x||!x.getLayer("language-family-pins"))return;const F=hc.value?"#ffffff":["case",[">",["to-number",["get","peoplePraying"],0],0],"#ffffff","#1f2937"];x.setPaintProperty("language-family-pins","circle-stroke-color",F),x.setPaintProperty("language-family-pins","circle-stroke-width",hc.value?sx((K=T.value)==null?void 0:K.colorStrategy):qg)}Me(hc,fc,{immediate:!1}),Me(()=>{var x;return(x=T.value)==null?void 0:x.id},fc),Me(()=>f.theme,()=>R.applyTheme(V.value));function HT(){R.swapTheme(V.value)}const af=ve(!1);let hs=null;async function fs(){if(!af.value)return hs||(hs=(async()=>{var x,F,K;try{const ue=await((x=N.loadRegionsData)==null?void 0:x.call(N));ue&&V.value&&((F=oe.addRegionsLayer)==null||F.call(oe,ue,"doxa-regions"),jr(V.value,[]),V.value.getLayer("regions-fill")&&((K=T.value)==null?void 0:K.id)!=="doxa-regions"&&(V.value.setLayoutProperty("regions-fill","visibility","none"),V.value.setLayoutProperty("regions-border","visibility","none")),V.value.getLayer("language-family-pins")&&V.value.moveLayer("language-family-pins")),af.value=!0,N.regionsData.value=null}catch(ue){console.warn("[research-map] regions layer failed:",ue)}finally{hs=null}})(),hs)}function ms(x){var ue,ke,we;if(x===H.value)return;H.value=x,(ue=f.setActiveTab)==null||ue.call(f,x),Re();const F=ee.value.find(Ne=>Ne.id===x);if(!F||!V.value)return;R.setLook(R.lookFor(F.colorStrategy),V.value),F.id==="doxa-regions"&&fs();const K=zo(F.colorStrategy);if(V.value.getLayer("language-family-pins")&&(K!=null&&K.buildColorExpression)){const Ne=F.id==="doxa-regions"?"#a30000":K.buildColorExpression();V.value.setPaintProperty("language-family-pins","circle-color",Ne),Hr(V.value),F.id==="prayer"?oe.startPrayerGlow():oe.stopPrayerGlow();const Be=F.id==="doxa-regions";V.value.getLayer("regions-fill")&&(V.value.setLayoutProperty("regions-fill","visibility",Be?"visible":"none"),V.value.setLayoutProperty("regions-border","visibility",Be?"visible":"none")),V.value.getLayer("language-family-pins")&&V.value.moveLayer("language-family-pins")}(ke=Z.refresh)==null||ke.call(Z),(we=W.refreshColors)==null||we.call(W)}function sf(x){var K,ue;const F=x==null?void 0:x.detail;!F||F.mapId!==te||(F.center&&Array.isArray(F.center)?(K=D.flyToCoords)==null||K.call(D,{longitude:F.center[0],latitude:F.center[1]},F.zoom??4):F.bounds&&((ue=D.fitBounds)==null||ue.call(D,F.bounds,60)))}function rf(x){var We,Je,vt;const F=x==null?void 0:x.detail;if(!F||(Ut(F),!((We=F.coords)!=null&&We.length)))return;const K=F.coords;if(K.length===1){(Je=D.flyToCoords)==null||Je.call(D,{longitude:K[0][0],latitude:K[0][1]},3);return}let ue=1/0,ke=-1/0,we=1/0,Ne=-1/0;for(const[Ue,qe]of K)Ueke&&(ke=Ue),qeNe&&(Ne=qe);const Be=F.kind==="region"?2.2:3;(vt=D.fitBounds)==null||vt.call(D,[[ue,we],[ke,Ne]],60,{maxZoom:Be})}let Ur=null;function qT(){const x=(p==null?void 0:p.showClusters)&&((p==null?void 0:p.clusteringMode)||"off")!=="off",F=Number(p==null?void 0:p.clusterPinOpacity);return x&&Number.isFinite(F)?Math.min(1,Math.max(0,F)):1}function sn(x,F){var ke;if(F!==void 0&&(Ur=F||null),!x||!((ke=x.getLayer)!=null&&ke.call(x,"language-family-pins")))return;const K=qT(),ue=Ur?["case",Ur,K,0]:["case",["has","uniqueId"],K,K];try{if(JSON.stringify(x.getPaintProperty("language-family-pins","circle-opacity"))===JSON.stringify(ue))return;x.setPaintProperty("language-family-pins","circle-opacity",ue),x.setPaintProperty("language-family-pins","circle-stroke-opacity",ue),x.getLayer("language-family-pins-shadow")&&x.setPaintProperty("language-family-pins-shadow","circle-opacity",ue)}catch{}}Me(()=>[p==null?void 0:p.clusterPinOpacity,p==null?void 0:p.clusteringMode,p==null?void 0:p.showClusters],()=>sn(V.value));const io={family:null,language:null,dialect:null,region:null,prayer:null,engagement:null,adoption:null};function Hr(x){sn(x,null),x.setFilter("language-family-pins",null),t(x,null),oe.syncGlowFilter(null),jr(x,[]),x.getLayer("regions-fill")&&x.setPaintProperty("regions-fill","fill-outline-color",null),io.family=io.language=io.dialect=io.region=null,io.prayer=io.engagement=io.adoption=null,f.prayerFilter&&f.setPrayerFilter(null),f.engagementFilter&&f.setEngagementFilter(null),f.adoptionFilter&&f.setAdoptionFilter(null),f.religionFilter&&f.setReligionFilter(null),W.setSelectionFilter(null),p.selectedFamily&&p.selectFamily(null),p.selectedLanguage&&p.selectLanguage(null),p.selectedDialect&&p.selectDialect(null);try{re&&re.selection&&re.selection.value&&(re.selection.value=null)}catch{}}let qr=null,Wr=0;function Ut(x){var Be,We,Je,vt,Ue;const F=V.value;if(!F||!F.getLayer("language-family-pins"))return;let K,ue,ke;if(x.kind==="family")ke="family",K="languageFamily",ue=x.familyKey;else if(x.kind==="language")ke="language",K="language",ue=x.languageKey;else if(x.kind==="region")ke="region",K="doxaRegion",ue=x.regionKey;else if(x.kind==="prayer")ke="prayer",K=x.property||"peoplePraying",ue=x.expectedValue;else if(x.kind==="engagement")ke="engagement",K=x.property||"engagementStatus",ue=x.expectedValue;else if(x.kind==="adoption")ke="adoption",K=x.property||"adoptionStatus",ue=x.expectedValue;else if(x.kind==="religion")ke="religion",K=x.property||"religion",ue=x.expectedValue;else if(x.kind==="dialect")ke="dialect",K="language",ue=x.dialectKey||"";else{Hr(F),Re();for(const qe of Object.keys(io))io[qe]=null;qr=null,Wr=0;return}const we=Date.now(),Ne=`${ke}|${ue}`;if(!(qr===Ne&&we-Wr<80)){if(qr=Ne,Wr=we,io[ke]===ue){Hr(F),Re(),qr=null,Wr=0;return}for(const qe of Object.keys(io))io[qe]=null;if(io[ke]=ue,ke==="family"?(Be=p.selectFamily)==null||Be.call(p,ue):ke==="region"?(We=p.selectRegion)==null||We.call(p,ue):ke==="language"?(Je=p.selectLanguage)==null||Je.call(p,ue):ke==="dialect"&&((vt=p.selectDialect)==null||vt.call(p,{key:ue,originalLabels:x.originalLabels||[]})),W.setSelectionFilter({property:K,value:ue}),ke==="region"){if(F.setFilter("language-family-pins",["==",["get","doxaRegion"],ue]),t(F,["==",["get","doxaRegion"],ue]),sn(F,null),F.getLayer("regions-fill")){const qe=((Ue=oe.regionIsoMap)==null?void 0:Ue.value)||{},st=ho=>String(ho).toLowerCase().replace(/[^a-z]/g,""),Ze=st(ue);let At=qe[ue]||[];if(!At.length){for(const[ho,Hn]of Object.entries(qe))if(st(ho)===Ze){At=Hn;break}}jr(F,At)}}else{F.setFilter("language-family-pins",null);let qe;if(ke==="prayer"){const st=["to-number",["get",K]];ue==="noPrayer"?qe=["==",st,0]:ue==="fullPrayer"?qe=[">=",st,Do]:ue==="hasPrayer"?qe=["all",[">",st,0],["<",st,Do]]:qe=["==",["get",K],ue]}else if(ke==="engagement")qe=["==",["get",K],ue==="hasEngagement"];else if(ke==="adoption")qe=["==",["get",K],ue==="hasAdoption"];else if(ke==="religion")qe=["==",["slice",["coalesce",["get",K],""],0,1],ue];else if(x.filterExpr)qe=x.filterExpr;else if(ke==="language")qe=["any",["==",["get",K],ue],["==",["slice",["get",K],0,ue.length+1],ue+","],["in"," "+ue,["get",K]]];else if(ke==="dialect"){const st=x.originalLabels||[];st.length===1?qe=["==",["get",K],st[0]]:st.length>1?qe=["in",["get",K],["literal",st]]:qe=["==",["get",K],ue]}else qe=["==",["get",K],ue];sn(F,qe),t(F,qe),oe.syncGlowFilter(qe),F.getLayer("regions-fill")&&(F.setPaintProperty("regions-fill","fill-opacity",.2),F.setPaintProperty("regions-border","line-color","rgba(60,60,80,0.35)"),F.setPaintProperty("regions-border","line-width",.6))}}}function WT(x,{map:F,filterLayerId:K}){const ue=x.label;try{F.setFilter(K,null)}catch{}const ke=Object.keys(wo).find(we=>wo[we]===ue);if(ke){const we={id:ke,label:ue,depth:0},Ne=()=>{try{F.setFilter(K,null)}catch{}ka(we),re&&re.selection&&(re.selection.value=we)};H.value!=="religion"&&ms("religion"),Ot(Ne)}}function VT(x,{map:F,filterLayerId:K}){const ue=x.label,ke=We=>String(We).toLowerCase().replace(/[^a-z0-9]/g,""),we=We=>String(We||"").replace(/\s*\((?:Region|Bloc)\)\s*$/i,""),Ne=ke(ue),Be=()=>{try{F.setFilter(K,null)}catch{}const We=jn(Qe.value,Je=>(Je.id.startsWith("region:")||Je.id.startsWith("block:"))&&ke(we(Je.label))===Ne);We&&(ka(We),re&&re.selection&&(re.selection.value=We))};H.value!=="doxa-regions"?(ms("doxa-regions"),Promise.resolve(fs()).finally(()=>Ot(Be))):Be()}function KT(x){var K,ue,ke,we;if(Array.isArray(x.bounds)&&x.bounds.length===4){const[Ne,Be,We,Je]=x.bounds;(K=D.fitBounds)==null||K.call(D,[[Ne,Be],[We,Je]],60)}else Array.isArray(x.center)&&x.center.length===2&&((ue=D.flyTo)==null||ue.call(D,x.center));const F=mx(x,N.normalizedPeopleGroups.value||[]);if(F&&M(F),F&&((ke=T.value)==null?void 0:ke.id)!=="doxa-regions"&&pe.showCountry(F),F&&((we=T.value)==null?void 0:we.id)==="doxa-regions"){const Ne=()=>{const Be=jn(Qe.value,We=>We.id.startsWith("country:")&&(We.isoCodes||[]).includes(F));Be&&(ka(Be),re&&re.selection&&(re.selection.value=Be))};Promise.resolve(fs()).finally(()=>Ot(Ne))}}Me(()=>p.filters,()=>{var x,F;(x=oe.applyFilters)==null||x.call(oe,p.filters),(F=W.applyFilters)==null||F.call(W,p.filters)},{deep:!0});let Vr=!1,lf="";Me(()=>{var x;return(x=i==null?void 0:i.value)==null?void 0:x.externalFilters},x=>{var F,K;if(!(!x||typeof x!="object"||!p)){Vr=!0;try{if("region"in x){const ue=x.region||null;(ue||p.selectedRegion)&&((F=p.selectRegion)==null||F.call(p,ue))}if("religion"in x){const ue=String(x.religion||"").trim(),ke=ue?Object.keys(wo).find(we=>String(wo[we]).toLowerCase()===ue.toLowerCase()):"";ue?ke&&(H.value!=="religion"&&ms("religion"),Ot(()=>f.setReligionFilter(ke))):f.religionFilter&&f.setReligionFilter(null)}if("fitSlugs"in x&&XT(x.fitSlugs),"language"in x){const ue=x.language||null;(ue||p.selectedLanguage)&&((K=p.selectLanguage)==null||K.call(p,ue))}}finally{Ot(()=>{Vr=!1})}}},{deep:!0,immediate:!0}),typeof window<"u"&&(window.__researchMapFilterState=()=>{var x,F;return{selectedRegion:(p==null?void 0:p.selectedRegion)||"",externalRegion:((F=(x=i==null?void 0:i.value)==null?void 0:x.externalFilters)==null?void 0:F.region)||"",religionFamily:wo[f==null?void 0:f.religionFilter]||"",selectedLanguage:(p==null?void 0:p.selectedLanguage)||""}},window.__researchMapPinOpacity=()=>{var x,F;try{return((F=(x=V.value)==null?void 0:x.getPaintProperty)==null?void 0:F.call(x,"language-family-pins","circle-opacity"))??null}catch{return null}},window.__researchMapClusterDraw=()=>{var K,ue;const x=V.value,F={};try{for(const ke of((ue=(K=x==null?void 0:x.getStyle)==null?void 0:K.call(x))==null?void 0:ue.layers)||[]){if(!/^(mapbox-clusters|cluster-lines)/.test(ke.id))continue;let we=0;try{we=x.queryRenderedFeatures({layers:[ke.id]}).length}catch{we=-1}F[ke.id]={visibility:ke.layout&&ke.layout.visibility||"visible",rendered:we}}}catch{}return F},window.__researchMapVocabulary=x=>{var ue;const F=((ue=N==null?void 0:N.normalizedPeopleGroups)==null?void 0:ue.value)||[],K=new Set;for(const ke of F){if(x==="religionFamily"){const Ne=wo[String((ke==null?void 0:ke.religion)||"").charAt(0)];Ne&&K.add(Ne);continue}const we=ke&&ke[x];typeof we=="string"&&we&&K.add(we)}return[...K].sort()});const mc=_o();function YT(){var x,F,K,ue;try{return((ue=(K=(F=(x=mc==null?void 0:mc.proxy)==null?void 0:x.$el)==null?void 0:F.getRootNode)==null?void 0:K.call(F))==null?void 0:ue.host)||null}catch{return null}}function cf(){var st;if(Vr||typeof window>"u")return;const x=YT();if(!x)return;const F=wo[f==null?void 0:f.religionFilter]||"",K=(p==null?void 0:p.selectedLanguage)||"",ue=(p==null?void 0:p.selectedDialect)||null,ke=Array.isArray(ue==null?void 0:ue.originalLabels)?ue.originalLabels.map(Ze=>String(Ze).trim()).filter(Boolean):[],we=((st=N==null?void 0:N.normalizedPeopleGroups)==null?void 0:st.value)||[],Ne=Ze=>{const At=Ze&&(Ze.language??Ze.primary_language);return String((At&&typeof At=="object"?At.label:At)||"").trim()},Be=(Ze,At)=>Ze===At||Ze.startsWith(At+",")||Ze.includes(" "+At),We=ke.length?we.filter(Ze=>ke.includes(Ne(Ze))):K?we.filter(Ze=>Be(Ne(Ze),K.trim())):[],Je=[...new Set(We.map(Ze=>{var At,ho;return String(((ho=(At=Ze==null?void 0:Ze._raw)==null?void 0:At.primary_language)==null?void 0:ho.value)||(Ze!=null&&Ze.language&&typeof Ze.language=="object"?Ze.language.value:"")||"").trim()}).filter(Boolean))],vt=Je.length===1?Je[0]:"",Ue={region:(p==null?void 0:p.selectedRegion)||"",religion:F,language:ke.length?ke.join(" · "):K,languageCode:vt,languageCodes:Je},qe=!Ue.region&&!Ue.religion&&!Ue.language&&!Ue.languageCode;if(qe&&uf){const Ze=typeof performance<"u"?performance.now():Date.now();if(_s||(_s=Ze),Ze-_sclearTimeout(bs)),Me(()=>{var x;return[p==null?void 0:p.selectedRegion,p==null?void 0:p.selectedLanguage,(x=p==null?void 0:p.selectedDialect)==null?void 0:x.key,f==null?void 0:f.religionFilter]},()=>JT()),Me(()=>p.selectedRegion,x=>{Ut(x?{kind:"region",regionKey:x}:{kind:null})}),Me(()=>p.selectedFamily,x=>{x?Ut({kind:"family",familyKey:x}):!p.selectedLanguage&&!p.selectedDialect&&Ut({kind:null})}),Me(()=>p.selectedLanguage,x=>{x?Ut({kind:"language",languageKey:x}):!p.selectedFamily&&!p.selectedDialect&&Ut({kind:null})}),Me(()=>p.selectedDialect,x=>{x!=null&&x.key?Ut({kind:"dialect",dialectKey:x.key,originalLabels:x.originalLabels||[]}):!p.selectedFamily&&!p.selectedLanguage&&Ut({kind:null})}),Me(()=>f.prayerFilter,x=>{Ut(x?{kind:"prayer",property:"peoplePraying",expectedValue:x}:{kind:null})}),Me(()=>f.engagementFilter,x=>{Ut(x?{kind:"engagement",property:"engagementStatus",expectedValue:x}:{kind:null})}),Me(()=>f.adoptionFilter,x=>{Ut(x?{kind:"adoption",property:"adoptionStatus",expectedValue:x}:{kind:null})}),Me(()=>f.religionFilter,x=>{Ut(x?{kind:"religion",property:"religion",expectedValue:x}:{kind:null})});function ZT(){try{return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}}function XT(x){var At,ho,Hn;const F=Array.isArray(x)?x.filter(xo=>typeof xo=="string"&&xo):[],K=F.length?`${F.length}:${F[0]}:${F[F.length-1]}`:"";if(K===lf||(lf=K,!F.length))return;const ue=new Set(F),ke=((At=N==null?void 0:N.normalizedPeopleGroups)==null?void 0:At.value)||[];let we=1/0,Ne=1/0,Be=-1/0,We=-1/0,Je=0;for(const xo of ke){if(!xo||!ue.has(xo.slug))continue;const ct=Number(xo.longitude??xo.lng),rn=Number(xo.latitude??xo.lat);!Number.isFinite(ct)||!Number.isFinite(rn)||(ctBe&&(Be=ct),rn>We&&(We=rn),Je++)}if(!Je)return;const vt=Be-we,Ue=We-Ne,qe={longitude:(we+Be)/2,latitude:(Ne+We)/2},st=vt>MC?{c:qe,z:IC}:Je===1||vtp.showClusters,async x=>{$s||(x&&(!p.clusteringMode||p.clusteringMode==="off")?p.clusteringMode="mst":!x&&p.clusteringMode!=="off"&&(p.clusteringMode="off"),await df())}),Me(()=>p.clusteringMode,async()=>{$s||await df()});async function QT(x){var F,K,ue,ke,we,Ne,Be;p.registerMap(te,V.value),uk(V.value,"mercator"),R.applyTheme(V.value),x!=null&&x.length&&(oe.addLanguageFamilyLayer(x,((F=T.value)==null?void 0:F.colorStrategy)??"languageFamily"),((K=T.value)==null?void 0:K.id)==="doxa-regions"&&((ue=V.value)!=null&&ue.getLayer("language-family-pins"))&&V.value.setPaintProperty("language-family-pins","circle-color","#4b5563"),sn(V.value),((ke=T.value)==null?void 0:ke.id)==="prayer"&&oe.startPrayerGlow(),(we=W.setData)==null||we.call(W,x),(Ne=Z.build)==null||Ne.call(Z,x),ie.initialize()),((Be=T.value)==null?void 0:Be.id)==="doxa-regions"&&(typeof window<"u"&&window.requestIdleCallback?Je=>window.requestIdleCallback(Je,{timeout:2e3}):Je=>setTimeout(Je,800))(()=>{fs()}),fc(),p.setMapReady(te),ce.value=!0}let ys=null,Un=null,Sa=null;function pf(x){const F=z.value;F&&(getComputedStyle(F).getPropertyValue("--map-radius").trim()||(F.style.setProperty("--map-radius","16px"),F.style.setProperty("--map-radius-sm","8px")),x>=700?(F.style.setProperty("--map-btn-size","40px"),F.style.setProperty("--map-toolbar-gap","8px"),F.style.setProperty("--map-font-md","13px"),F.style.setProperty("--map-font-sm","11px"),F.style.setProperty("--map-legend-width","380px")):x>=500?(F.style.setProperty("--map-btn-size","36px"),F.style.setProperty("--map-toolbar-gap","6px"),F.style.setProperty("--map-font-md","12px"),F.style.setProperty("--map-font-sm","10px"),F.style.setProperty("--map-legend-width","360px")):(F.style.setProperty("--map-btn-size","32px"),F.style.setProperty("--map-toolbar-gap","5px"),F.style.setProperty("--map-font-md","11px"),F.style.setProperty("--map-font-sm","10px"),F.style.setProperty("--map-legend-width","280px")))}return Eo(async()=>{var F,K,ue,ke;(F=f.init)==null||F.call(f),H.value=((K=ee.value[0])==null?void 0:K.id)??"doxa-regions",f.isMobile?(ue=f.collapseLegend)==null||ue.call(f):(ke=f.openLegend)==null||ke.call(f),z.value&&(pf(z.value.getBoundingClientRect().width),typeof ResizeObserver<"u"&&(ys=new ResizeObserver(we=>{for(const Ne of we)pf(Ne.contentRect.width)}),ys.observe(z.value))),window.addEventListener("doxa:legend-row-click",sf),window.addEventListener("legend:highlight",rf);const x=N.loadData().catch(we=>(console.error("[research-map] data load failed:",we),{normalizedPeopleGroups:[]}));try{await se()}catch(we){console.error("[research-map] Map failed to initialize —",we),B.value=String((we==null?void 0:we.message)||we);return}{const we=V.value?Xe(V.value):null;we&&we!==V.value&&(V.value=null,V.value=Yn(we))}if(!V.value){console.error("[research-map] Map failed to initialize — check token and container"),B.value="Map failed to initialize — check token and container";return}V.value.once("style.load",async()=>{try{const{normalizedPeopleGroups:we}=await x;await QT(we)}catch(we){console.error("[research-map] onMapReady failed:",we),B.value=String((we==null?void 0:we.message)||we)}}),n(V.value),Sa=()=>n(V.value);try{Un=new ResizeObserver(Sa);const we=V.value.getContainer&&V.value.getContainer()||null;we&&Un.observe(we);const Ne=we?o(we):null;Ne&&Un.observe(Ne),document.body&&Un.observe(document.body)}catch{}window.addEventListener("resize",Sa)}),co(()=>{var x,F;window.removeEventListener("doxa:legend-row-click",sf),window.removeEventListener("legend:highlight",rf),ys&&(ys.disconnect(),ys=null),Un&&(Un.disconnect(),Un=null),Sa&&(window.removeEventListener("resize",Sa),Sa=null),oe.stopPrayerGlow(),(x=W.cleanup)==null||x.call(W),(F=ie.cleanup)==null||F.call(ie),p.unregisterMap(te),_e()}),(x,F)=>(le(),fe("div",{ref_key:"rmRoot",ref:z,class:Fe(["rm-root",{"rm-dark":to.value,"dsm-dark":to.value}])},[C.value?(le(),fe("div",{key:0,ref_key:"tabBar",ref:be,class:"rm-tab-bar"},[(le(!0),fe(Ve,null,qt(ee.value,K=>(le(),fe(Ve,{key:K.id},[O("button",{class:Fe(["rm-tab",{active:H.value===K.id}]),onClick:ue=>ms(K.id)},ye(y(K)),11,SC),K.sepAfter?(le(),fe("div",AC)):xe("",!0)],64))),128))],512)):xe("",!0),O("div",PC,[!ce.value&&!B.value?(le(),fe("div",LC,ye(a("dashboard.map_loading","Research map loading…")),1)):xe("",!0),B.value?(le(),fe("div",CC,ye(a("allPeopleGroups.loadError","The map could not be loaded."))+" "+ye(B.value),1)):xe("",!0),O("div",{ref_key:"mapContainer",ref:ge,class:"rm-map-canvas"},null,512),F[4]||(F[4]=O("div",{class:"map-scroll-edge map-scroll-edge--left"},null,-1)),F[5]||(F[5]=O("div",{class:"map-scroll-edge map-scroll-edge--right"},null,-1)),me(c)!=="mapbox"?(le(),fe("div",{key:2,class:"rm-provider-badge","data-provider":me(c)},ye(me(L)),9,TC)):xe("",!0),ce.value&&me(V)&&u.value?(le(),tt(YA,{key:3,ref_key:"geocoderRef",ref:$e,"map-instance":me(V),"access-token":me(l),provider:me(c),"data-source-id":me(k),"is-dark":to.value,placeholder:I.value,"active-context":q.value,onPeopleGroupResult:me(Q),onAggregateResult:me(de),onClear:me(Pe)},null,8,["map-instance","access-token","provider","data-source-id","is-dark","placeholder","active-context","onPeopleGroupResult","onAggregateResult","onClear"])):xe("",!0),xe("",!0),ce.value&&me(V)?(le(),tt(wA,{key:5,"has-geocoder":u.value},{default:Qt(()=>[it(xA,{map:me(V),"is-dark":to.value},null,8,["map","is-dark"]),it(SA,{map:me(V),"is-dark":to.value},null,8,["map","is-dark"]),it(AA,{map:me(V),"is-dark":to.value},null,8,["map","is-dark"]),it(CA,{"map-container":ge.value,"is-dark":to.value},null,8,["map-container","is-dark"]),it(EA,{"is-dark":to.value,onToggle:HT},null,8,["is-dark"]),it(Dn,{"is-dark":to.value,active:xa.value,disabled:xa.value,title:BT.value,class:"export-poster-btn","aria-busy":xa.value?"true":"false",onClick:pc},{default:Qt(()=>[...F[3]||(F[3]=[O("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[O("path",{d:"M12 3v12M7 10l5 5 5-5M5 21h14"})],-1)])]),_:1},8,["is-dark","active","disabled","title","aria-busy"]),v.share?(le(),tt(bP,{key:0,"is-dark":to.value,"embed-path":"doxa-research-map/research-map/index.html"},null,8,["is-dark"])):xe("",!0)]),_:1},8,["has-geocoder"])):xe("",!0),ce.value&&m.value?(le(),tt(vA,{key:6,"legend-type":S.value,"is-dark":to.value},null,8,["legend-type","is-dark"])):xe("",!0),ce.value?(le(),tt(FP,{key:7,"is-open":of.value,onClose:F[1]||(F[1]=K=>of.value=!1),onOpenPoster:pc},{default:Qt(()=>[it(lL)]),_:1},8,["is-open"])):xe("",!0),O("div",{class:"rm-legend-desktop-slot",style:ft(b.value?{"--stl-top":b.value}:null)},[ce.value&&me(f).legendMode==="detail"&&me(f).selectedPeopleGroup?(le(),tt(lA,{key:0,"legend-type":S.value,"popup-action":G.value,"initially-collapsed":!1,"is-dark":to.value},null,8,["legend-type","popup-action","is-dark"])):xe("",!0),Hs(O("div",null,[ce.value?(le(),tt(mh,{key:0,nodes:ze.value,tabs:_t.value,title:Bn.value,hideTabs:Ge.value,columnLabel:It.value,progress:me(he),open:jt.value,"export-enabled":RC,onSelect:ka,onExport:jT,"onUpdate:open":go},null,8,["nodes","tabs","title","hideTabs","columnLabel","progress","open"])):xe("",!0)],512),[[td,!(me(f).legendMode==="detail"&&me(f).selectedPeopleGroup)]])],4),O("div",EC,[ce.value?(le(),tt(me(s),{key:0,"legend-type":S.value,"popup-action":G.value,"is-dark":to.value},null,8,["legend-type","popup-action","is-dark"])):xe("",!0)]),ce.value&&nf.value?(le(),tt(me(r),{key:8,feature:nf.value,action:G.value,dark:to.value,onClose:F[2]||(F[2]=K=>me(p).selectFeature(null))},null,8,["feature","action","dark"])):xe("",!0)])],2))}}},Symbol.toStringTag,{value:"Module"})),GC="",BC={class:"legend-sheet-root"},jC=["src","alt"],UC={key:0,class:"pull-tab-handle"},HC=["aria-label"],qC=["aria-label"],WC=["aria-label"],VC={class:"collapsed-detail-title"},KC={class:"legend-content"},YC=["aria-label"],JC=["aria-label"],kh=80,ZC=48,XC=44,QC=24,xh="--legend-sheet-h",Sh=Object.freeze(Object.defineProperty({__proto__:null,default:bn({__name:"LegendMobile",props:{legendType:{type:String,required:!0},nodes:{type:Array,default:null},tabs:{type:Array,default:null},defaultTab:{type:Number,default:0},columnLabel:{type:String,default:null},title:{type:String,default:null},columns:{type:Array,default:null},isDark:{type:Boolean,default:!1},popupAction:{type:String,default:"pray",validator:e=>["pray","adopt","none"].includes(e)},disableCollapse:{type:Boolean,default:!1}},setup(e){const{t}=kt();Et(` +`,"research-map");const i=Ee("profileConfig"),l=Ee("mapboxToken"),c=Kp(i),u=ae(()=>{var x;return((x=i==null?void 0:i.value)==null?void 0:x.search)===!1?!1:c==="mapbox"}),b=ae(()=>u.value?null:ph((S==null?void 0:S.value)??S)?"56px":"14px"),m=ae(()=>{var x;return((x=i==null?void 0:i.value)==null?void 0:x.legendTools)!==!1}),L=lk(c),k=Ee("dataSource");Ee("colorSet");const _=Ee("instanceId",null),g=(()=>{var F;const x=(F=i==null?void 0:i.value)==null?void 0:F.locale;return x&&ns.includes(x)?x:null})(),{locale:$,t:d,te:h}=kt();g&&($.value=g);function y(x){const F="tabs."+((x==null?void 0:x.i18nKey)||(x==null?void 0:x.id));return x&&h(F)?d(F):(x==null?void 0:x.label)??""}const p=Ee("mapStore"),w=Ee("dataStore"),f=Ee("uiStore"),R=jw(f),v={doxaRegions:!0,adoption:!1,share:!0,hamburgerMenu:!1,geocoderPersistAcrossTabs:!1},X=[{id:"prayer",label:"Prayer",colorStrategy:"prayerProgress",legend:"prayer",popup:"pray",feature:null},{id:"adoption",label:"Adoption",colorStrategy:"adoption",legend:"adoption",popup:"adopt",feature:"adoption"},{id:"engagement",label:"Engagement",colorStrategy:"engagement",legend:"engagement",popup:"pray",feature:null,sepAfter:!0},{id:"affinity-blocks",label:"People Groups (Affinity)",colorStrategy:"affinityBlock",legend:"affinity-block",popup:"pray",feature:null},{id:"doxa-regions",label:"Regions",colorStrategy:"doxaRegion",legend:"doxa-regions",popup:"pray",feature:"doxaRegions",i18nKey:"regions"},{id:"language-families",label:"Languages",colorStrategy:"languageFamily",legend:"language-family",popup:"pray",feature:null},{id:"religion",label:"Religions",colorStrategy:"religion",legend:"religion",popup:"pray",feature:null}].filter(x=>!x.feature||v[x.feature]),ee=ae(()=>X),C=ae(()=>!0),H=ve(null),T=ae(()=>ee.value.find(x=>x.id===H.value)??ee.value[0]);R.setLook(R.lookFor((gf=T.value)==null?void 0:gf.colorStrategy)),Me(()=>{var x;return(x=T.value)==null?void 0:x.colorStrategy},x=>R.setLook(R.lookFor(x),V.value));const S=ae(()=>{var x;return((x=T.value)==null?void 0:x.legend)??"default"}),G=ae(()=>{var x;return((x=T.value)==null?void 0:x.popup)??"pray"}),I=ae(()=>{var x,F,K,ue;return((x=T.value)==null?void 0:x.id)==="language-families"?"Search language family, language, dialect/variety":((F=T.value)==null?void 0:F.id)==="affinity-blocks"?"Search affinity bloc, cluster, people group":((K=T.value)==null?void 0:K.id)==="doxa-regions"?"Search region, country, people group":((ue=T.value)==null?void 0:ue.id)==="religion"?"Search religion, people group":""}),j={"affinity-blocks":"people-groups",prayer:"people-groups",adoption:"people-groups",engagement:"people-groups","language-families":"language","doxa-regions":"regions",religion:"religion"},q=ae(()=>{var x;return j[(x=T.value)==null?void 0:x.id]||""}),te=(_==null?void 0:_.value)||_||"research-map-"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,8);Pt("mapId",te);const z=ve(null),be=ve(null),$e=ve(null),Ae=new Map;Me(()=>H==null?void 0:H.value,async(x,F)=>{var ke,we,Ne;if(F!==void 0&&x!==F){F&&Ae.set(F,f.legendState);const Be=Ae.get(x)||(f.isMobile?"collapsed":"open");Be==="fullyOpen"?(ke=f.fullyOpenLegend)==null||ke.call(f):Be==="open"?(we=f.openLegend)==null||we.call(f):(Ne=f.collapseLegend)==null||Ne.call(f)}await Ot();const K=be.value,ue=K==null?void 0:K.querySelector(".rm-tab.active");if(K&&ue&&K.scrollWidth>K.clientWidth+1){const Be=K.getBoundingClientRect(),qe=ue.getBoundingClientRect(),Je=K.scrollLeft+(qe.left-Be.left)-(Be.width-qe.width)/2,vt=K.scrollWidth-K.clientWidth,Ue=Math.max(0,Math.min(vt,Je));typeof K.scrollTo=="function"?K.scrollTo({left:Ue,behavior:"smooth"}):K.scrollLeft=Ue}});const ge=ve(null),ce=ve(!1),B=ve(null),{map:V,initializeMap:se,destroy:_e}=Sk({containerRef:ge,accessToken:l.value,provider:c,style:((hf=i==null?void 0:i.value)==null?void 0:hf.style)??R.bootStyle(),config:R.bootConfig,center:((ff=i==null?void 0:i.value)==null?void 0:ff.center)??ko.center??[20,10],zoom:((mf=i==null?void 0:i.value)==null?void 0:mf.zoom)??ko.zoom??1.8,pitch:((bf=i==null?void 0:i.value)==null?void 0:bf.pitch)??ko.pitch??0,bearing:((_f=i==null?void 0:i.value)==null?void 0:_f.bearing)??ko.bearing??0,minZoom:(($f=i==null?void 0:i.value)==null?void 0:$f.minZoom)??ko.minZoom??.5,maxZoom:NC}),E=new nh({sourcesConfig:Mn,locale:g,profileConfig:i}),N=Ax({mapId:te,dataSourceId:k.value,dataSourceManager:E,dataStore:w,markRaw:x=>x});async function M(x){const F=String(x||"").trim().toUpperCase();if(F.length!==3)return;await fs();const K=V.value;if(!K||!K.getLayer("regions-fill"))return;K.setLayoutProperty("regions-fill","visibility","visible"),K.setLayoutProperty("regions-border","visibility","visible");const ue=["literal",[F]];K.setPaintProperty("regions-fill","fill-opacity",["case",["in",["get","iso_3166_1_alpha_3"],ue],.3,.02]),K.setPaintProperty("regions-border","line-color",["case",["in",["get","iso_3166_1_alpha_3"],ue],"#111827","rgba(60,60,80,0.15)"]),K.setPaintProperty("regions-border","line-width",["case",["in",["get","iso_3166_1_alpha_3"],ue],2.5,.3]),K.getLayer("language-family-pins")&&K.moveLayer("language-family-pins")}function J(){var F;pe.clearCountry();const x=V.value;!x||!x.getLayer("regions-fill")||(x.setPaintProperty("regions-fill","fill-opacity",.2),x.setPaintProperty("regions-fill","fill-outline-color",null),x.setPaintProperty("regions-border","line-color","rgba(60,60,80,0.35)"),x.setPaintProperty("regions-border","line-width",.6),((F=T.value)==null?void 0:F.id)!=="doxa-regions"&&(x.setLayoutProperty("regions-fill","visibility","none"),x.setLayoutProperty("regions-border","visibility","none")))}const oe=lx({getMap:()=>V.value,mapId:te,getLanguageFamilyColor:x=>{var K,ue;const F=zo((K=T.value)==null?void 0:K.colorStrategy);return((ue=F==null?void 0:F.colors)==null?void 0:ue[x])??(F==null?void 0:F.fallback)??"#7c8cf8"},getNormalizedPeopleGroups:()=>N.normalizedPeopleGroups.value||[]});Hg({getMap:()=>V.value,mapId:te,getLanguageFamilyColor:()=>"#7c8cf8",getNormalizedPeopleGroups:()=>N.normalizedPeopleGroups.value||[]});const D=dx({getMap:()=>V.value,mapId:te,mapStore:p,defaultCenter:((yf=i==null?void 0:i.value)==null?void 0:yf.center)??[20,10],defaultZoom:((vf=i==null?void 0:i.value)==null?void 0:vf.zoom)??1.8}),ie=gx({getMap:()=>V.value,getActivePinColor:x=>{var K,ue;const F=zo(((K=T.value)==null?void 0:K.colorStrategy)??"languageFamily");return((ue=F==null?void 0:F.getColor)==null?void 0:ue.call(F,x))??"#1a1a1a"}});let ne=null,P=null;function A(){return ne?Promise.resolve(ne):(P||(P=Nt(()=>Promise.resolve().then(()=>iT),void 0).then(x=>(ne=x.useMapClustering({getMap:()=>V.value,mapId:te,mapStore:p,getPeopleGroups:()=>N.normalizedPeopleGroups.value||[],getClusterColor:()=>{var F,K;return((K=zo((F=T.value)==null?void 0:F.colorStrategy))==null?void 0:K.fallback)??"#7c8cf8"}}),ne))),P)}const W={setData(x){var F;(F=ne==null?void 0:ne.setData)==null||F.call(ne,x)},applyFilters(x){var F;(F=ne==null?void 0:ne.applyFilters)==null||F.call(ne,x)},refreshColors(){var x;(x=ne==null?void 0:ne.refreshColors)==null||x.call(ne)},cleanup(){var x;(x=ne==null?void 0:ne.cleanup)==null||x.call(ne)},async setEnabled(x){var F,K;(K=(F=await A()).setEnabled)==null||K.call(F,x)},async setMode(x){var F,K;(K=(F=await A()).setMode)==null||K.call(F,x)},_pendingSelectionFilter:null,setSelectionFilter(x){this._pendingSelectionFilter=x||null,ne!=null&&ne.setSelectionFilter&&ne.setSelectionFilter(x)},flushSelectionFilter(){ne!=null&&ne.setSelectionFilter&&ne.setSelectionFilter(this._pendingSelectionFilter)}},Z=ds({});Pt("legendRows",Z.rows),Pt("normalizedPeopleGroups",N.normalizedPeopleGroups);const pe=$x(()=>V.value),re=cL(te);uL(re);const{onPeopleGroupResult:Q,onAggregateResult:de,onClear:Pe,clearGeocoderProgrammatic:Re}=Px({map:V,geocoderRef:$e,clustering:W,mapStore:p,uiStore:f,mapLayers:oe,pplrInstance:re,onSemanticTreeSelect:ka,switchTab:ms,activeTabId:H,clearAllHighlights:Hr,clearCountryHighlight:J,mapId:te,legendRouters:{country:KT,region:VT,religion:WT}});re.activeTab.value=1;function Ke(x){return x==="affinity-block"?0:x==="language-family"?1:0}Me(S,x=>{re.activeTab.value=Ke(x)});const lt={get value(){return N.normalizedPeopleGroups.value||[]}},{langTree:et}=Jl(lt),Rt=[{id:"family",label:"Lang Family",info:"A language family is a group of languages descended from a common ancestor (e.g. Indo-European, Afro-Asiatic)."},{id:"language",label:"Language",info:"A language is a system of communication used by a people (e.g. Arabic, Bengali, Hindi)."},{id:"dialect",label:"Dialect/Variety",info:"A dialect/variety is a regional or social form of a language (e.g. Arabic, Sudanese; Pakistan Sign Language)."}],{affinityTree:Kt}=bh(lt),Te=[{id:"bloc",label:"Affinity Block",info:"Affinity Block (field: rop1) — broadest grouping by cultural/linguistic/geographic kinship. 16 blocks total. Examples: Malay Peoples, South Asian Peoples, Deaf, Arab World."},{id:"cluster",label:"Cluster",info:'Cluster (field: imb_reg_of_people_2, ROP 2) — finer-grained grouping inside a bloc. 194 clusters total. Suffix "(Cluster)" appears on each row to distinguish from PG/PGIC. Example: Borneo-Kalimantan within Malay Peoples.'},{id:"group",label:"People Group",info:'People Group (field: imb_reg_of_people_25, ROP 2.5) — abstract ethnolinguistic identity, country-agnostic. Suffix "(PG)" on each row. 1,736 PGs total; 131 of them have rows in multiple countries (e.g. Deaf in 123 countries). Example: Abai Sungai (PG) is one ROP25 code regardless of where its people live.'},{id:"pgic",label:"PG in Country",info:'PGIC = People Group In Country (field: imb_reg_of_people_3 + country_code) — one row per (people group, country) pair. Suffix "(PGIC)" on each row. 2,106 rows total. Example: "Abai Sungai, Malaysia (PGIC)" is the Abai Sungai PG specifically as it exists in Malaysia.'}],{regionsTree:Qe}=_h(lt),ro=[{id:"region",label:"WAGF Region",info:'WAGF macro-region (e.g. "Asia", "Africa"). Color-coded on the map.'},{id:"block",label:"WAGF Bloc",info:'WAGF bloc — the organizational sub-grouping within each region (e.g. "South East Asia", "West Africa").'},{id:"country",label:"Country",info:"Individual countries, listed by unreached-population size within their bloc."}],Y=ds(zs(()=>S.value),Dr),he=Y.progress;Pt("legendProgress",he);function Le(x){const F=[];for(const K of x){F.push({id:K.key,label:K.label,color:K.color,count:K.count??0,pop:K.population??0,filter:K.filterKey?["==",["get","_flat_filter"],K.filterKey]:null,children:[]});for(const ue of K.children||[])F.push({id:ue.key,label:ue.label,color:ue.color,count:ue.count??0,pop:ue.population??0,filter:ue.filterKey?["==",["get","_flat_filter"],ue.filterKey]:null,children:[]})}return F}const Ce=ae(()=>["prayer","engagement","adoption","religion"].includes(S.value)),ze=ae(()=>Ce.value?Le(Y.items.value):S.value==="affinity-block"?Kt.value:S.value==="doxa-regions"?Qe.value:et.value),_t=ae(()=>Ce.value?null:S.value==="affinity-block"?Te:S.value==="doxa-regions"?ro:Rt),Ge=ae(()=>Ce.value),It=ae(()=>S.value==="religion"?d("legend.colLabel.religion"):S.value==="prayer"?d("legend.colLabel.prayer"):S.value==="engagement"?d("legend.colLabel.engagement"):S.value==="adoption"?d("legend.colLabel.adoption"):Ce.value?d("legend.colLabel.status"):""),jt=ae(()=>f.legendState!=="collapsed");function go(x){x?f.openLegend():f.collapseLegend()}const Bn=ae(()=>Ce.value?d("legend.titleBar.legend"):S.value==="affinity-block"?d("legend.titleBar.peopleGroups"):S.value==="doxa-regions"?d("legend.titleBar.wagfRegions"):d("legend.titleBar.languages"));function jn(x,F){var K;for(const ue of x){if(F(ue))return ue;if((K=ue.children)!=null&&K.length){const ke=jn(ue.children,F);if(ke)return ke}}return null}Pt("onSemanticTreeSelect",x=>ka(x)),Pt("getActivePinColor",x=>{var K,ue;const F=zo(((K=T.value)==null?void 0:K.colorStrategy)??"languageFamily");return((ue=F==null?void 0:F.getColor)==null?void 0:ue.call(F,x))??"#1a1a1a"});function OT(x,F){if(!x||!F)return null;const K=x.id;if(F==="prayer"){const ue=["to-number",["get","peoplePraying"]];if(K==="noPrayer")return["==",ue,0];if(K==="fullPrayer")return[">=",ue,Do];if(K==="hasPrayer")return["all",[">",ue,0],["<",ue,Do]]}else if(F==="engagement"){if(K==="hasEngagement")return["==",["get","engagementStatus"],!0];if(K==="notEngaged")return["==",["get","engagementStatus"],!1]}else if(F==="adoption"){if(K==="hasAdoption")return["==",["get","adoptionStatus"],!0];if(K==="notAdopted")return["==",["get","adoptionStatus"],!1]}else if(F==="religion")return["==",["slice",["coalesce",["get","religion"],""],0,1],K];return null}const DT=["case",["has","iso_3166_1_alpha_3"],.7,.7],zT=["case",["has","iso_3166_1_alpha_3"],"rgba(60,60,80,0.35)","rgba(60,60,80,0.35)"],GT=["case",["has","iso_3166_1_alpha_3"],.6,.6];function jr(x,F){if(!x||!x.getLayer("regions-fill"))return;const K=Array.isArray(F)?[...new Set(F.filter(Boolean).map(qe=>String(qe).toUpperCase()))].sort():[],ue=["literal",K],ke=K.length?["case",["in",["get","iso_3166_1_alpha_3"],ue],.85,.15]:DT,we=K.length?["case",["in",["get","iso_3166_1_alpha_3"],ue],"#111827","rgba(60,60,80,0.15)"]:zT,Ne=K.length?["case",["in",["get","iso_3166_1_alpha_3"],ue],2.5,.3]:GT,Be=(qe,Je,vt)=>{x.getLayer(qe)&&JSON.stringify(x.getPaintProperty(qe,Je))!==JSON.stringify(vt)&&x.setPaintProperty(qe,Je,vt)};try{Be("regions-fill","fill-opacity",ke),Be("regions-border","line-color",we),Be("regions-border","line-width",Ne)}catch{}}function ka(x){var ue,ke,we,Ne,Be,qe,Je,vt;const F=V.value;if(x){const Ue=Ce.value?OT(x,S.value):null,We=((ue=T.value)==null?void 0:ue.id)==="doxa-regions",st=Ue?{matchExpr:Ue}:{};We&&(st.regionPolygonSource="regions"),(ke=D.zoomToLegendRow)==null||ke.call(D,x,Object.keys(st).length?st:void 0)}if(!x){if(Ce.value){const Ue=S.value;Ue==="prayer"?f.setPrayerFilter(null):Ue==="engagement"?f.setEngagementFilter(null):Ue==="adoption"?f.setAdoptionFilter(null):Ue==="religion"&&f.setReligionFilter(null)}if(F&&F.getLayer("language-family-pins")){try{F.setFilter("language-family-pins",null)}catch{}t(F,null),sn(F,null),oe.syncGlowFilter(null)}F&&F.getLayer("regions-fill")&&(F.setPaintProperty("regions-fill","fill-opacity",.7),F.setPaintProperty("regions-border","line-color","rgba(60,60,80,0.35)"),F.setPaintProperty("regions-border","line-width",.6)),p.selectedFamily&&p.selectFamily(null),p.selectedLanguage&&p.selectLanguage(null),p.selectedDialect&&((we=p.selectDialect)==null||we.call(p,null)),p.selectedRegion&&((Ne=p.selectRegion)==null||Ne.call(p,null)),Re();return}if(Ce.value){const Ue=S.value;Ue==="prayer"?f.setPrayerFilter(x.id):Ue==="engagement"?f.setEngagementFilter(x.id):Ue==="adoption"?f.setAdoptionFilter(x.id):Ue==="religion"&&f.setReligionFilter(x.id);return}if(F&&F.getLayer("language-family-pins")&&x.filter){try{F.setFilter("language-family-pins",x.filter)}catch{}t(F,x.filter),sn(F,null),oe.syncGlowFilter(x.filter)}const K=String(x.id||"");if(K.startsWith("fam:"))(Be=p.selectFamily)==null||Be.call(p,x.label);else if(K.startsWith("lang:"))(qe=p.selectLanguage)==null||qe.call(p,x.label);else if(K.startsWith("dial:"))(Je=p.selectDialect)==null||Je.call(p,{key:K.slice(5),originalLabels:x.originalLabels||[]});else if(K.startsWith("bloc:")||K.startsWith("cluster:")||K.startsWith("pg:")||K.startsWith("pgic:")){if(F&&F.getLayer("language-family-pins")&&x.filter){try{F.setFilter("language-family-pins",null)}catch{}t(F,x.filter),sn(F,x.filter),oe.syncGlowFilter(x.filter)}}else if(K.startsWith("region:")||K.startsWith("block:")||K.startsWith("country:")){if(F&&F.getLayer("language-family-pins")&&x.filter){try{F.setFilter("language-family-pins",x.filter)}catch{}t(F,x.filter),sn(F,null)}K.startsWith("region:")&&((vt=p.selectRegion)==null||vt.call(p,K.slice(7))),K.startsWith("region:")||jr(F,x.isoCodes||[])}}Me(()=>f.theme,x=>{re.theme.value=x==="dark"?"dark":"light"},{immediate:!0});function xn(x,F){var ue,ke;if(!F){const we=re.selection.value;we&&((ue=we.id)!=null&&ue.startsWith(x+":"))&&(re.selection.value=null);return}const K=re.selection.value;K&&((ke=K.id)!=null&&ke.startsWith(x+":"))&&K.label===F.label||(re.selection.value=F)}Me(()=>p.selectedFamily,x=>{if(!x)return xn("fam",null);const F=jn(et.value,K=>K.id.startsWith("fam:")&&K.label===x);F&&xn("fam",{...F,depth:0})}),Me(()=>p.selectedLanguage,x=>{if(!x)return xn("lang",null);const F=jn(et.value,K=>K.id.startsWith("lang:")&&K.label===x);F&&xn("lang",{...F,depth:1})}),Me(()=>p.selectedDialect,x=>{if(!(x!=null&&x.key))return xn("dial",null);const F=`dial:${x.key}`,K=jn(et.value,ue=>ue.id===F);K&&xn("dial",{...K,depth:2})}),Me(()=>p.selectedRegion,x=>{if(!x)return xn("region",null);const F=jn(Qe.value,K=>K.id===`region:${x}`);F&&xn("region",{...F,depth:0})});const xa=ve(!1);async function pc(){var x;if(!xa.value){xa.value=!0;try{const[{useMapPoster:F},{defaultPosterSpec:K},{printImageBlob:ue}]=await Promise.all([Nt(()=>Promise.resolve().then(()=>Dh),void 0),Nt(()=>Promise.resolve().then(()=>Th),void 0),Nt(()=>Promise.resolve().then(()=>wT),void 0)]),ke=F(()=>V.value),we=K({widthIn:8.5,heightIn:11,dpi:200,orientation:"portrait"}),Ne=y(T.value)||Bn.value||"Doxa Map";we.dir=["ar","fa","he","ur"].includes(String($.value||"").split("-")[0])?"rtl":"ltr",we.slots.title={...we.slots.title,text:Ne};const Be=(Y.items.value||[]).flatMap(We=>[We,...We.children||[]]),qe=(Be.length?Be:((x=Z==null?void 0:Z.rows)==null?void 0:x.value)||[]).map(We=>({label:We.label,color:We.color}));we.slots.legend={...we.slots.legend,rows:qe,title:Bn.value},we.slots.scaleBar=!1,we.slots.north=!1;const Je=ck(V.value)==="maplibre";we.slots.footer={...we.slots.footer,left:"pray.doxa.life",right:new Date().toISOString().slice(0,10),attribution:Je?"© OpenFreeMap © OpenMapTiles © OpenStreetMap":"© Mapbox © OpenStreetMap"};const vt=await ke.render(we,"png");ue(vt,{widthIn:we.widthIn??8.5,heightIn:we.heightIn??11,title:Ne,alt:Ne})||console.error("[research-map] poster print: the host blocked the print frame")}catch(F){console.error("[research-map] poster export failed:",F)}finally{xa.value=!1}}}const BT=ae(()=>String(d("controls.export_poster")||"Export poster…"));function jT(x){if(x==="poster")return pc();if(x==="packet")return UT()}let gc=!1;async function UT(){var x,F,K,ue,ke;if(!gc){gc=!0;try{const[{usePosterPrints:we},{defaultPosterSpec:Ne},{useMapPoster:Be},{selectedPinIds:qe}]=await Promise.all([Nt(()=>Promise.resolve().then(()=>xT),void 0),Nt(()=>Promise.resolve().then(()=>Th),void 0),Nt(()=>Promise.resolve().then(()=>Dh),void 0),Nt(()=>Promise.resolve().then(()=>ux),void 0)]),Je=N.normalizedPeopleGroups.value||[],vt=[((F=(x=V.value)==null?void 0:x.getFilter)==null?void 0:F.call(x,"language-family-pins"))||null,Ur].filter(Boolean);let Ue=Je;if(vt.length){const ct=qe(V.value,{expressions:vt}),rn=Je.filter(Kr=>ct.has(String(Kr.uniqueId??Kr.id??"")));rn.length?Ue=rn:console.warn(`[research-map] packet: ${ct.size} pin(s) selected but no rows matched; printing the full list`)}const We=Ue.length;Ue.length>50&&(console.warn(`[research-map] packet truncated ${Ue.length} → 50 people groups`),Ue=Ue.slice(0,50));const st=Ue.map(ct=>({slug:String(ct.slug||ct.uniqueId||ct.id||""),name:ct.name,population:ct.population,religion:ct.religionName||ct.religionLabel||ct.religion||"",country_code:ct.countryName||ct.countryIsoLabel||ct.country||ct.countryIso||"",image_url:ct.imageUrl||ct.image_url||""})),Ze=Ne({widthIn:8.27,heightIn:11.69,dpi:150,orientation:"portrait"});Ze.slots.title={...Ze.slots.title,text:Bn.value||"Doxa Map"},Ze.slots.legend={...Ze.slots.legend,rows:((K=Z==null?void 0:Z.rows)==null?void 0:K.value)||[]};let At="";try{const ct=await Be(()=>V.value).render(Ze,"png");At=``}catch(ct){console.warn("[research-map] packet map page skipped:",(ct==null?void 0:ct.message)||ct)}const ho=Bn.value||y(T.value)||"Doxa Map",Hn={id:String(((ue=T.value)==null?void 0:ue.id)||"research-map"),label:We>Ue.length?`${ho} — ${Ue.length} of ${We}`:ho,zoneKey:String(((ke=T.value)==null?void 0:ke.id)||"research-map")};await we({records:()=>st,lang:()=>String($.value||"en").split("-")[0],label:()=>Hn.label}).printPacket(Hn,{mapSvg:At})}catch(we){console.error("[research-map] packet export failed:",we)}finally{gc=!1}}}const of=ve(!1),nf=ae(()=>p.selectedFeature),to=ae(()=>f.isDarkTheme),hc=ae(()=>Up.lightPreset==="night");function fc(){var K;const x=V.value;if(!x||!x.getLayer("language-family-pins"))return;const F=hc.value?"#ffffff":["case",[">",["to-number",["get","peoplePraying"],0],0],"#ffffff","#1f2937"];x.setPaintProperty("language-family-pins","circle-stroke-color",F),x.setPaintProperty("language-family-pins","circle-stroke-width",hc.value?sx((K=T.value)==null?void 0:K.colorStrategy):qg)}Me(hc,fc,{immediate:!1}),Me(()=>{var x;return(x=T.value)==null?void 0:x.id},fc),Me(()=>f.theme,()=>R.applyTheme(V.value));function HT(){R.swapTheme(V.value)}const af=ve(!1);let hs=null;async function fs(){if(!af.value)return hs||(hs=(async()=>{var x,F,K;try{const ue=await((x=N.loadRegionsData)==null?void 0:x.call(N));ue&&V.value&&((F=oe.addRegionsLayer)==null||F.call(oe,ue,"doxa-regions"),jr(V.value,[]),V.value.getLayer("regions-fill")&&((K=T.value)==null?void 0:K.id)!=="doxa-regions"&&(V.value.setLayoutProperty("regions-fill","visibility","none"),V.value.setLayoutProperty("regions-border","visibility","none")),V.value.getLayer("language-family-pins")&&V.value.moveLayer("language-family-pins")),af.value=!0,N.regionsData.value=null}catch(ue){console.warn("[research-map] regions layer failed:",ue)}finally{hs=null}})(),hs)}function ms(x){var ue,ke,we;if(x===H.value)return;H.value=x,(ue=f.setActiveTab)==null||ue.call(f,x),Re();const F=ee.value.find(Ne=>Ne.id===x);if(!F||!V.value)return;R.setLook(R.lookFor(F.colorStrategy),V.value),F.id==="doxa-regions"&&fs();const K=zo(F.colorStrategy);if(V.value.getLayer("language-family-pins")&&(K!=null&&K.buildColorExpression)){const Ne=F.id==="doxa-regions"?"#a30000":K.buildColorExpression();V.value.setPaintProperty("language-family-pins","circle-color",Ne),Hr(V.value),F.id==="prayer"?oe.startPrayerGlow():oe.stopPrayerGlow();const Be=F.id==="doxa-regions";V.value.getLayer("regions-fill")&&(V.value.setLayoutProperty("regions-fill","visibility",Be?"visible":"none"),V.value.setLayoutProperty("regions-border","visibility",Be?"visible":"none")),V.value.getLayer("language-family-pins")&&V.value.moveLayer("language-family-pins")}(ke=Z.refresh)==null||ke.call(Z),(we=W.refreshColors)==null||we.call(W)}function sf(x){var K,ue;const F=x==null?void 0:x.detail;!F||F.mapId!==te||(F.center&&Array.isArray(F.center)?(K=D.flyToCoords)==null||K.call(D,{longitude:F.center[0],latitude:F.center[1]},F.zoom??4):F.bounds&&((ue=D.fitBounds)==null||ue.call(D,F.bounds,60)))}function rf(x){var qe,Je,vt;const F=x==null?void 0:x.detail;if(!F||(Ut(F),!((qe=F.coords)!=null&&qe.length)))return;const K=F.coords;if(K.length===1){(Je=D.flyToCoords)==null||Je.call(D,{longitude:K[0][0],latitude:K[0][1]},3);return}let ue=1/0,ke=-1/0,we=1/0,Ne=-1/0;for(const[Ue,We]of K)Ueke&&(ke=Ue),WeNe&&(Ne=We);const Be=F.kind==="region"?2.2:3;(vt=D.fitBounds)==null||vt.call(D,[[ue,we],[ke,Ne]],60,{maxZoom:Be})}let Ur=null;function qT(){const x=(p==null?void 0:p.showClusters)&&((p==null?void 0:p.clusteringMode)||"off")!=="off",F=Number(p==null?void 0:p.clusterPinOpacity);return x&&Number.isFinite(F)?Math.min(1,Math.max(0,F)):1}function sn(x,F){var ke;if(F!==void 0&&(Ur=F||null),!x||!((ke=x.getLayer)!=null&&ke.call(x,"language-family-pins")))return;const K=qT(),ue=Ur?["case",Ur,K,0]:["case",["has","uniqueId"],K,K];try{if(JSON.stringify(x.getPaintProperty("language-family-pins","circle-opacity"))===JSON.stringify(ue))return;x.setPaintProperty("language-family-pins","circle-opacity",ue),x.setPaintProperty("language-family-pins","circle-stroke-opacity",ue),x.getLayer("language-family-pins-shadow")&&x.setPaintProperty("language-family-pins-shadow","circle-opacity",ue)}catch{}}Me(()=>[p==null?void 0:p.clusterPinOpacity,p==null?void 0:p.clusteringMode,p==null?void 0:p.showClusters],()=>sn(V.value));const io={family:null,language:null,dialect:null,region:null,prayer:null,engagement:null,adoption:null};function Hr(x){sn(x,null),x.setFilter("language-family-pins",null),t(x,null),oe.syncGlowFilter(null),jr(x,[]),x.getLayer("regions-fill")&&x.setPaintProperty("regions-fill","fill-outline-color",null),io.family=io.language=io.dialect=io.region=null,io.prayer=io.engagement=io.adoption=null,f.prayerFilter&&f.setPrayerFilter(null),f.engagementFilter&&f.setEngagementFilter(null),f.adoptionFilter&&f.setAdoptionFilter(null),f.religionFilter&&f.setReligionFilter(null),W.setSelectionFilter(null),p.selectedFamily&&p.selectFamily(null),p.selectedLanguage&&p.selectLanguage(null),p.selectedDialect&&p.selectDialect(null);try{re&&re.selection&&re.selection.value&&(re.selection.value=null)}catch{}}let qr=null,Wr=0;function Ut(x){var Be,qe,Je,vt,Ue;const F=V.value;if(!F||!F.getLayer("language-family-pins"))return;let K,ue,ke;if(x.kind==="family")ke="family",K="languageFamily",ue=x.familyKey;else if(x.kind==="language")ke="language",K="language",ue=x.languageKey;else if(x.kind==="region")ke="region",K="doxaRegion",ue=x.regionKey;else if(x.kind==="prayer")ke="prayer",K=x.property||"peoplePraying",ue=x.expectedValue;else if(x.kind==="engagement")ke="engagement",K=x.property||"engagementStatus",ue=x.expectedValue;else if(x.kind==="adoption")ke="adoption",K=x.property||"adoptionStatus",ue=x.expectedValue;else if(x.kind==="religion")ke="religion",K=x.property||"religion",ue=x.expectedValue;else if(x.kind==="dialect")ke="dialect",K="language",ue=x.dialectKey||"";else{Hr(F),Re();for(const We of Object.keys(io))io[We]=null;qr=null,Wr=0;return}const we=Date.now(),Ne=`${ke}|${ue}`;if(!(qr===Ne&&we-Wr<80)){if(qr=Ne,Wr=we,io[ke]===ue){Hr(F),Re(),qr=null,Wr=0;return}for(const We of Object.keys(io))io[We]=null;if(io[ke]=ue,ke==="family"?(Be=p.selectFamily)==null||Be.call(p,ue):ke==="region"?(qe=p.selectRegion)==null||qe.call(p,ue):ke==="language"?(Je=p.selectLanguage)==null||Je.call(p,ue):ke==="dialect"&&((vt=p.selectDialect)==null||vt.call(p,{key:ue,originalLabels:x.originalLabels||[]})),W.setSelectionFilter({property:K,value:ue}),ke==="region"){if(F.setFilter("language-family-pins",["==",["get","doxaRegion"],ue]),t(F,["==",["get","doxaRegion"],ue]),sn(F,null),F.getLayer("regions-fill")){const We=((Ue=oe.regionIsoMap)==null?void 0:Ue.value)||{},st=ho=>String(ho).toLowerCase().replace(/[^a-z]/g,""),Ze=st(ue);let At=We[ue]||[];if(!At.length){for(const[ho,Hn]of Object.entries(We))if(st(ho)===Ze){At=Hn;break}}jr(F,At)}}else{F.setFilter("language-family-pins",null);let We;if(ke==="prayer"){const st=["to-number",["get",K]];ue==="noPrayer"?We=["==",st,0]:ue==="fullPrayer"?We=[">=",st,Do]:ue==="hasPrayer"?We=["all",[">",st,0],["<",st,Do]]:We=["==",["get",K],ue]}else if(ke==="engagement")We=["==",["get",K],ue==="hasEngagement"];else if(ke==="adoption")We=["==",["get",K],ue==="hasAdoption"];else if(ke==="religion")We=["==",["slice",["coalesce",["get",K],""],0,1],ue];else if(x.filterExpr)We=x.filterExpr;else if(ke==="language")We=["any",["==",["get",K],ue],["==",["slice",["get",K],0,ue.length+1],ue+","],["in"," "+ue,["get",K]]];else if(ke==="dialect"){const st=x.originalLabels||[];st.length===1?We=["==",["get",K],st[0]]:st.length>1?We=["in",["get",K],["literal",st]]:We=["==",["get",K],ue]}else We=["==",["get",K],ue];sn(F,We),t(F,We),oe.syncGlowFilter(We),F.getLayer("regions-fill")&&(F.setPaintProperty("regions-fill","fill-opacity",.2),F.setPaintProperty("regions-border","line-color","rgba(60,60,80,0.35)"),F.setPaintProperty("regions-border","line-width",.6))}}}function WT(x,{map:F,filterLayerId:K}){const ue=x.label;try{F.setFilter(K,null)}catch{}const ke=Object.keys(wo).find(we=>wo[we]===ue);if(ke){const we={id:ke,label:ue,depth:0},Ne=()=>{try{F.setFilter(K,null)}catch{}ka(we),re&&re.selection&&(re.selection.value=we)};H.value!=="religion"&&ms("religion"),Ot(Ne)}}function VT(x,{map:F,filterLayerId:K}){const ue=x.label,ke=qe=>String(qe).toLowerCase().replace(/[^a-z0-9]/g,""),we=qe=>String(qe||"").replace(/\s*\((?:Region|Bloc)\)\s*$/i,""),Ne=ke(ue),Be=()=>{try{F.setFilter(K,null)}catch{}const qe=jn(Qe.value,Je=>(Je.id.startsWith("region:")||Je.id.startsWith("block:"))&&ke(we(Je.label))===Ne);qe&&(ka(qe),re&&re.selection&&(re.selection.value=qe))};H.value!=="doxa-regions"?(ms("doxa-regions"),Promise.resolve(fs()).finally(()=>Ot(Be))):Be()}function KT(x){var K,ue,ke,we;if(Array.isArray(x.bounds)&&x.bounds.length===4){const[Ne,Be,qe,Je]=x.bounds;(K=D.fitBounds)==null||K.call(D,[[Ne,Be],[qe,Je]],60)}else Array.isArray(x.center)&&x.center.length===2&&((ue=D.flyTo)==null||ue.call(D,x.center));const F=mx(x,N.normalizedPeopleGroups.value||[]);if(F&&M(F),F&&((ke=T.value)==null?void 0:ke.id)!=="doxa-regions"&&pe.showCountry(F),F&&((we=T.value)==null?void 0:we.id)==="doxa-regions"){const Ne=()=>{const Be=jn(Qe.value,qe=>qe.id.startsWith("country:")&&(qe.isoCodes||[]).includes(F));Be&&(ka(Be),re&&re.selection&&(re.selection.value=Be))};Promise.resolve(fs()).finally(()=>Ot(Ne))}}Me(()=>p.filters,()=>{var x,F;(x=oe.applyFilters)==null||x.call(oe,p.filters),(F=W.applyFilters)==null||F.call(W,p.filters)},{deep:!0});let Vr=!1,lf="";Me(()=>{var x;return(x=i==null?void 0:i.value)==null?void 0:x.externalFilters},x=>{var F,K;if(!(!x||typeof x!="object"||!p)){Vr=!0;try{if("region"in x){const ue=x.region||null;(ue||p.selectedRegion)&&((F=p.selectRegion)==null||F.call(p,ue))}if("religion"in x){const ue=String(x.religion||"").trim(),ke=ue?Object.keys(wo).find(we=>String(wo[we]).toLowerCase()===ue.toLowerCase()):"";ue?ke&&(H.value!=="religion"&&ms("religion"),Ot(()=>f.setReligionFilter(ke))):f.religionFilter&&f.setReligionFilter(null)}if("fitSlugs"in x&&XT(x.fitSlugs),"language"in x){const ue=x.language||null;(ue||p.selectedLanguage)&&((K=p.selectLanguage)==null||K.call(p,ue))}}finally{Ot(()=>{Vr=!1})}}},{deep:!0,immediate:!0}),typeof window<"u"&&(window.__researchMapFilterState=()=>{var x,F;return{selectedRegion:(p==null?void 0:p.selectedRegion)||"",externalRegion:((F=(x=i==null?void 0:i.value)==null?void 0:x.externalFilters)==null?void 0:F.region)||"",religionFamily:wo[f==null?void 0:f.religionFilter]||"",selectedLanguage:(p==null?void 0:p.selectedLanguage)||""}},window.__researchMapPinOpacity=()=>{var x,F;try{return((F=(x=V.value)==null?void 0:x.getPaintProperty)==null?void 0:F.call(x,"language-family-pins","circle-opacity"))??null}catch{return null}},window.__researchMapClusterDraw=()=>{var K,ue;const x=V.value,F={};try{for(const ke of((ue=(K=x==null?void 0:x.getStyle)==null?void 0:K.call(x))==null?void 0:ue.layers)||[]){if(!/^(mapbox-clusters|cluster-lines)/.test(ke.id))continue;let we=0;try{we=x.queryRenderedFeatures({layers:[ke.id]}).length}catch{we=-1}F[ke.id]={visibility:ke.layout&&ke.layout.visibility||"visible",rendered:we}}}catch{}return F},window.__researchMapVocabulary=x=>{var ue;const F=((ue=N==null?void 0:N.normalizedPeopleGroups)==null?void 0:ue.value)||[],K=new Set;for(const ke of F){if(x==="religionFamily"){const Ne=wo[String((ke==null?void 0:ke.religion)||"").charAt(0)];Ne&&K.add(Ne);continue}const we=ke&&ke[x];typeof we=="string"&&we&&K.add(we)}return[...K].sort()});const mc=_o();function YT(){var x,F,K,ue;try{return((ue=(K=(F=(x=mc==null?void 0:mc.proxy)==null?void 0:x.$el)==null?void 0:F.getRootNode)==null?void 0:K.call(F))==null?void 0:ue.host)||null}catch{return null}}function cf(){var st;if(Vr||typeof window>"u")return;const x=YT();if(!x)return;const F=wo[f==null?void 0:f.religionFilter]||"",K=(p==null?void 0:p.selectedLanguage)||"",ue=(p==null?void 0:p.selectedDialect)||null,ke=Array.isArray(ue==null?void 0:ue.originalLabels)?ue.originalLabels.map(Ze=>String(Ze).trim()).filter(Boolean):[],we=((st=N==null?void 0:N.normalizedPeopleGroups)==null?void 0:st.value)||[],Ne=Ze=>{const At=Ze&&(Ze.language??Ze.primary_language);return String((At&&typeof At=="object"?At.label:At)||"").trim()},Be=(Ze,At)=>Ze===At||Ze.startsWith(At+",")||Ze.includes(" "+At),qe=ke.length?we.filter(Ze=>ke.includes(Ne(Ze))):K?we.filter(Ze=>Be(Ne(Ze),K.trim())):[],Je=[...new Set(qe.map(Ze=>{var At,ho;return String(((ho=(At=Ze==null?void 0:Ze._raw)==null?void 0:At.primary_language)==null?void 0:ho.value)||(Ze!=null&&Ze.language&&typeof Ze.language=="object"?Ze.language.value:"")||"").trim()}).filter(Boolean))],vt=Je.length===1?Je[0]:"",Ue={region:(p==null?void 0:p.selectedRegion)||"",religion:F,language:ke.length?ke.join(" · "):K,languageCode:vt,languageCodes:Je},We=!Ue.region&&!Ue.religion&&!Ue.language&&!Ue.languageCode;if(We&&uf){const Ze=typeof performance<"u"?performance.now():Date.now();if(_s||(_s=Ze),Ze-_sclearTimeout(bs)),Me(()=>{var x;return[p==null?void 0:p.selectedRegion,p==null?void 0:p.selectedLanguage,(x=p==null?void 0:p.selectedDialect)==null?void 0:x.key,f==null?void 0:f.religionFilter]},()=>JT()),Me(()=>p.selectedRegion,x=>{Ut(x?{kind:"region",regionKey:x}:{kind:null})}),Me(()=>p.selectedFamily,x=>{x?Ut({kind:"family",familyKey:x}):!p.selectedLanguage&&!p.selectedDialect&&Ut({kind:null})}),Me(()=>p.selectedLanguage,x=>{x?Ut({kind:"language",languageKey:x}):!p.selectedFamily&&!p.selectedDialect&&Ut({kind:null})}),Me(()=>p.selectedDialect,x=>{x!=null&&x.key?Ut({kind:"dialect",dialectKey:x.key,originalLabels:x.originalLabels||[]}):!p.selectedFamily&&!p.selectedLanguage&&Ut({kind:null})}),Me(()=>f.prayerFilter,x=>{Ut(x?{kind:"prayer",property:"peoplePraying",expectedValue:x}:{kind:null})}),Me(()=>f.engagementFilter,x=>{Ut(x?{kind:"engagement",property:"engagementStatus",expectedValue:x}:{kind:null})}),Me(()=>f.adoptionFilter,x=>{Ut(x?{kind:"adoption",property:"adoptionStatus",expectedValue:x}:{kind:null})}),Me(()=>f.religionFilter,x=>{Ut(x?{kind:"religion",property:"religion",expectedValue:x}:{kind:null})});function ZT(){try{return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}}function XT(x){var At,ho,Hn;const F=Array.isArray(x)?x.filter(xo=>typeof xo=="string"&&xo):[],K=F.length?`${F.length}:${F[0]}:${F[F.length-1]}`:"";if(K===lf||(lf=K,!F.length))return;const ue=new Set(F),ke=((At=N==null?void 0:N.normalizedPeopleGroups)==null?void 0:At.value)||[];let we=1/0,Ne=1/0,Be=-1/0,qe=-1/0,Je=0;for(const xo of ke){if(!xo||!ue.has(xo.slug))continue;const ct=Number(xo.longitude??xo.lng),rn=Number(xo.latitude??xo.lat);!Number.isFinite(ct)||!Number.isFinite(rn)||(ctBe&&(Be=ct),rn>qe&&(qe=rn),Je++)}if(!Je)return;const vt=Be-we,Ue=qe-Ne,We={longitude:(we+Be)/2,latitude:(Ne+qe)/2},st=vt>MC?{c:We,z:IC}:Je===1||vtp.showClusters,async x=>{$s||(x&&(!p.clusteringMode||p.clusteringMode==="off")?p.clusteringMode="mst":!x&&p.clusteringMode!=="off"&&(p.clusteringMode="off"),await df())}),Me(()=>p.clusteringMode,async()=>{$s||await df()});async function QT(x){var F,K,ue,ke,we,Ne,Be;p.registerMap(te,V.value),uk(V.value,"mercator"),R.applyTheme(V.value),x!=null&&x.length&&(oe.addLanguageFamilyLayer(x,((F=T.value)==null?void 0:F.colorStrategy)??"languageFamily"),((K=T.value)==null?void 0:K.id)==="doxa-regions"&&((ue=V.value)!=null&&ue.getLayer("language-family-pins"))&&V.value.setPaintProperty("language-family-pins","circle-color","#4b5563"),sn(V.value),((ke=T.value)==null?void 0:ke.id)==="prayer"&&oe.startPrayerGlow(),(we=W.setData)==null||we.call(W,x),(Ne=Z.build)==null||Ne.call(Z,x),ie.initialize()),((Be=T.value)==null?void 0:Be.id)==="doxa-regions"&&(typeof window<"u"&&window.requestIdleCallback?Je=>window.requestIdleCallback(Je,{timeout:2e3}):Je=>setTimeout(Je,800))(()=>{fs()}),fc(),p.setMapReady(te),ce.value=!0}let ys=null,Un=null,Sa=null;function pf(x){const F=z.value;F&&(getComputedStyle(F).getPropertyValue("--map-radius").trim()||(F.style.setProperty("--map-radius","16px"),F.style.setProperty("--map-radius-sm","8px")),x>=700?(F.style.setProperty("--map-btn-size","40px"),F.style.setProperty("--map-toolbar-gap","8px"),F.style.setProperty("--map-font-md","13px"),F.style.setProperty("--map-font-sm","11px"),F.style.setProperty("--map-legend-width","380px")):x>=500?(F.style.setProperty("--map-btn-size","36px"),F.style.setProperty("--map-toolbar-gap","6px"),F.style.setProperty("--map-font-md","12px"),F.style.setProperty("--map-font-sm","10px"),F.style.setProperty("--map-legend-width","360px")):(F.style.setProperty("--map-btn-size","32px"),F.style.setProperty("--map-toolbar-gap","5px"),F.style.setProperty("--map-font-md","11px"),F.style.setProperty("--map-font-sm","10px"),F.style.setProperty("--map-legend-width","280px")))}return Eo(async()=>{var F,K,ue,ke;(F=f.init)==null||F.call(f),H.value=((K=ee.value[0])==null?void 0:K.id)??"doxa-regions",f.isMobile?(ue=f.collapseLegend)==null||ue.call(f):(ke=f.openLegend)==null||ke.call(f),z.value&&(pf(z.value.getBoundingClientRect().width),typeof ResizeObserver<"u"&&(ys=new ResizeObserver(we=>{for(const Ne of we)pf(Ne.contentRect.width)}),ys.observe(z.value))),window.addEventListener("doxa:legend-row-click",sf),window.addEventListener("legend:highlight",rf);const x=N.loadData().catch(we=>(console.error("[research-map] data load failed:",we),{normalizedPeopleGroups:[]}));try{await se()}catch(we){console.error("[research-map] Map failed to initialize —",we),B.value=String((we==null?void 0:we.message)||we);return}{const we=V.value?Xe(V.value):null;we&&we!==V.value&&(V.value=null,V.value=Yn(we))}if(!V.value){console.error("[research-map] Map failed to initialize — check token and container"),B.value="Map failed to initialize — check token and container";return}V.value.once("style.load",async()=>{try{const{normalizedPeopleGroups:we}=await x;await QT(we)}catch(we){console.error("[research-map] onMapReady failed:",we),B.value=String((we==null?void 0:we.message)||we)}}),n(V.value),Sa=()=>n(V.value);try{Un=new ResizeObserver(Sa);const we=V.value.getContainer&&V.value.getContainer()||null;we&&Un.observe(we);const Ne=we?o(we):null;Ne&&Un.observe(Ne),document.body&&Un.observe(document.body)}catch{}window.addEventListener("resize",Sa)}),co(()=>{var x,F;window.removeEventListener("doxa:legend-row-click",sf),window.removeEventListener("legend:highlight",rf),ys&&(ys.disconnect(),ys=null),Un&&(Un.disconnect(),Un=null),Sa&&(window.removeEventListener("resize",Sa),Sa=null),oe.stopPrayerGlow(),(x=W.cleanup)==null||x.call(W),(F=ie.cleanup)==null||F.call(ie),p.unregisterMap(te),_e()}),(x,F)=>(le(),fe("div",{ref_key:"rmRoot",ref:z,class:Fe(["rm-root",{"rm-dark":to.value,"dsm-dark":to.value}])},[C.value?(le(),fe("div",{key:0,ref_key:"tabBar",ref:be,class:"rm-tab-bar"},[(le(!0),fe(Ve,null,qt(ee.value,K=>(le(),fe(Ve,{key:K.id},[O("button",{class:Fe(["rm-tab",{active:H.value===K.id}]),onClick:ue=>ms(K.id)},ye(y(K)),11,SC),K.sepAfter?(le(),fe("div",AC)):xe("",!0)],64))),128))],512)):xe("",!0),O("div",PC,[!ce.value&&!B.value?(le(),fe("div",LC,ye(a("dashboard.map_loading","Research map loading…")),1)):xe("",!0),B.value?(le(),fe("div",CC,ye(a("allPeopleGroups.loadError","The map could not be loaded."))+" "+ye(B.value),1)):xe("",!0),O("div",{ref_key:"mapContainer",ref:ge,class:"rm-map-canvas"},null,512),F[4]||(F[4]=O("div",{class:"map-scroll-edge map-scroll-edge--left"},null,-1)),F[5]||(F[5]=O("div",{class:"map-scroll-edge map-scroll-edge--right"},null,-1)),me(c)!=="mapbox"?(le(),fe("div",{key:2,class:"rm-provider-badge","data-provider":me(c)},ye(me(L)),9,TC)):xe("",!0),ce.value&&me(V)&&u.value?(le(),tt(YA,{key:3,ref_key:"geocoderRef",ref:$e,"map-instance":me(V),"access-token":me(l),provider:me(c),"data-source-id":me(k),"is-dark":to.value,placeholder:I.value,"active-context":q.value,onPeopleGroupResult:me(Q),onAggregateResult:me(de),onClear:me(Pe)},null,8,["map-instance","access-token","provider","data-source-id","is-dark","placeholder","active-context","onPeopleGroupResult","onAggregateResult","onClear"])):xe("",!0),xe("",!0),ce.value&&me(V)?(le(),tt(wA,{key:5,"has-geocoder":u.value},{default:Qt(()=>[it(xA,{map:me(V),"is-dark":to.value},null,8,["map","is-dark"]),it(SA,{map:me(V),"is-dark":to.value},null,8,["map","is-dark"]),it(AA,{map:me(V),"is-dark":to.value},null,8,["map","is-dark"]),it(CA,{"map-container":ge.value,"is-dark":to.value},null,8,["map-container","is-dark"]),it(EA,{"is-dark":to.value,onToggle:HT},null,8,["is-dark"]),it(Dn,{"is-dark":to.value,active:xa.value,disabled:xa.value,title:BT.value,class:"export-poster-btn","aria-busy":xa.value?"true":"false",onClick:pc},{default:Qt(()=>[...F[3]||(F[3]=[O("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[O("path",{d:"M12 3v12M7 10l5 5 5-5M5 21h14"})],-1)])]),_:1},8,["is-dark","active","disabled","title","aria-busy"]),v.share?(le(),tt(bP,{key:0,"is-dark":to.value,"embed-path":"doxa-research-map/research-map/index.html"},null,8,["is-dark"])):xe("",!0)]),_:1},8,["has-geocoder"])):xe("",!0),ce.value&&m.value?(le(),tt(vA,{key:6,"legend-type":S.value,"is-dark":to.value},null,8,["legend-type","is-dark"])):xe("",!0),ce.value?(le(),tt(FP,{key:7,"is-open":of.value,onClose:F[1]||(F[1]=K=>of.value=!1),onOpenPoster:pc},{default:Qt(()=>[it(lL)]),_:1},8,["is-open"])):xe("",!0),O("div",{class:"rm-legend-desktop-slot",style:ft(b.value?{"--stl-top":b.value}:null)},[ce.value&&me(f).legendMode==="detail"&&me(f).selectedPeopleGroup?(le(),tt(lA,{key:0,"legend-type":S.value,"popup-action":G.value,"initially-collapsed":!1,"is-dark":to.value},null,8,["legend-type","popup-action","is-dark"])):xe("",!0),Hs(O("div",null,[ce.value?(le(),tt(mh,{key:0,nodes:ze.value,tabs:_t.value,title:Bn.value,hideTabs:Ge.value,columnLabel:It.value,progress:me(he),open:jt.value,"export-enabled":RC,onSelect:ka,onExport:jT,"onUpdate:open":go},null,8,["nodes","tabs","title","hideTabs","columnLabel","progress","open"])):xe("",!0)],512),[[td,!(me(f).legendMode==="detail"&&me(f).selectedPeopleGroup)]])],4),O("div",EC,[ce.value?(le(),tt(me(s),{key:0,"legend-type":S.value,"popup-action":G.value,"is-dark":to.value},null,8,["legend-type","popup-action","is-dark"])):xe("",!0)]),ce.value&&nf.value?(le(),tt(me(r),{key:8,feature:nf.value,action:G.value,dark:to.value,onClose:F[2]||(F[2]=K=>me(p).selectFeature(null))},null,8,["feature","action","dark"])):xe("",!0)])],2))}}},Symbol.toStringTag,{value:"Module"})),GC="",BC={class:"legend-sheet-root"},jC=["src","alt"],UC={key:0,class:"pull-tab-handle"},HC=["aria-label"],qC=["aria-label"],WC=["aria-label"],VC={class:"collapsed-detail-title"},KC={class:"legend-content"},YC=["aria-label"],JC=["aria-label"],kh=80,ZC=48,XC=44,QC=24,xh="--legend-sheet-h",Sh=Object.freeze(Object.defineProperty({__proto__:null,default:bn({__name:"LegendMobile",props:{legendType:{type:String,required:!0},nodes:{type:Array,default:null},tabs:{type:Array,default:null},defaultTab:{type:Number,default:0},columnLabel:{type:String,default:null},title:{type:String,default:null},columns:{type:Array,default:null},isDark:{type:Boolean,default:!1},popupAction:{type:String,default:"pray",validator:e=>["pray","adopt","none"].includes(e)},disableCollapse:{type:Boolean,default:!1}},setup(e){const{t}=kt();Et(` .floating-mini-image{position:absolute;inset-inline-start:16px;bottom:calc(30% + 16px);z-index:999;pointer-events:auto;cursor:pointer;} .mini-image{width:120px;height:150px;object-fit:cover;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.25);display:block;} .legend-sheet-root{position:absolute;inset:0;pointer-events:none;overflow:hidden;} diff --git a/public/dx-maps/doxa-research-map/research-map/index.html b/public/dx-maps/doxa-research-map/research-map/index.html index 3f416fbd5..bc4d4304a 100644 --- a/public/dx-maps/doxa-research-map/research-map/index.html +++ b/public/dx-maps/doxa-research-map/research-map/index.html @@ -36,7 +36,7 @@ - + - + \n\n" + "script": "\n\n\n\n" }, "instances": [ { @@ -1206,40 +1206,6 @@ } ] }, - { - "bundle": "rudder-voice", - "scriptUrl": "./rudder-voice/rudder-voice.js", - "output": "dx-maps/rudder-voice/rudder-voice.js", - "integrity": "sha384-a4oi+6HstA7vCZFrrX2qSEKq56mkDBJAkg485g8BRPeZb6C6QtJ+zxmjeBDg1/XT", - "elements": [ - "rudder-voice" - ], - "stage": "experimental", - "profiles": [ - { - "profile": "rudder-voice", - "stage": "experimental", - "label": "Rudder — voice to text (desktop)", - "targets": [ - "desktop" - ], - "widget": { - "corner": "bottom-right" - }, - "file": "rudder-voice.vue", - "description": "A DESKTOP-target plugin (rudder-voice.meta.json \"targets\": [\"desktop\"]). The speech", - "element": "rudder-voice", - "type": "single", - "isMap": false, - "iframeUrl": "./rudder-voice/rudder-voice/index.html", - "scriptUrl": "./rudder-voice/rudder-voice.js", - "embed": { - "iframe": "", - "script": "\n\n" - } - } - ] - }, { "bundle": "stack-demo", "scriptUrl": "./stack-demo/stack-demo.js",