l!=null&&l!==!0),s=typeof(e==null?void 0:e.getFeatureState)=="function",i=l=>{if(!(!s||l==null))try{return e.getFeatureState({source:t,id:l})}catch{return}};for(const l of Di(e,t)){const c=l&&l.properties;if(!c)continue;const u=c[n],d=i(u);r.length&&!r.every(f=>hr(f,c,d))||u!=null&&a.add(String(u))}return a}const Lw=Object.freeze(Object.defineProperty({__proto__:null,matchesExpression:hr,readSourceFeatures:Di,resolveExpr:yo,selectedPinIds:Aw},Symbol.toStringTag,{value:"Module"})),rn={style:"mapbox://styles/mapbox/standard",center:[20,10],zoom:1.8,minZoom:.5,maxZoom:22,pitch:20,bearing:0,projection:"mercator",renderWorldCopies:!0};function Cw(e={}){const{getMap:t=()=>null,mapId:o="unknown",mapStore:n=null,regionsGeoData:a=null,defaultCenter:r=(rn==null?void 0:rn.center)||[20,10],defaultZoom:s=rn==null?void 0:rn.zoom}=e,i=()=>{try{return typeof window<"u"&&!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}};function l(v){const N=i(),P=(T={})=>{const q={};for(const L of["center","zoom","bearing","pitch","padding"])T[L]!==void 0&&(q[L]=T[L]);return v.jumpTo(q)};return{flyTo:T=>N?P(T):v.flyTo(T),easeTo:T=>N?P(T):v.easeTo(T),fitBounds:(T,q={})=>v.fitBounds(T,N?{...q,animate:!1,duration:0}:q)}}const c={speed:.5,essential:!0,curve:1.2};function u(v,N,P={x:150,y:0}){const T=t();if(!T)return v;try{const q=T.getCanvas(),L=q.width,O=q.height,I=T.project(v),K=window.devicePixelRatio||1,z=(P.x||0)*K,re=(P.y||0)*K,ge={x:I.x-z,y:I.y-re},ye=T.unproject(ge);return[ye.lng,ye.lat]}catch{return v}}function d(v,N=[]){const P=t();if(!P)return;let T=null,q=5;const L=N.filter(I=>I.languageFamily===v);if(L.length>0){let I=1/0,K=-1/0,z=1/0,re=-1/0;if(L.forEach(ge=>{ge.longitude&&ge.latitude&&(I=Math.min(I,ge.longitude),K=Math.max(K,ge.longitude),z=Math.min(z,ge.latitude),re=Math.max(re,ge.latitude))}),I!==1/0){T=[(I+K)/2,(z+re)/2];const ge=K-I,ye=re-z,Se=Math.max(ge,ye);Se>50?q=2:Se>20?q=3:Se>10?q=4:Se>5?q=5:q=6}}if(!T)return;const O=u(T);l(P).flyTo({center:O,zoom:q,...c})}function f(v){const N=t();if(!N)return;let P=null,T=4;const q=$w(v);if(q)P=q.center,T=q.zoom||4;else if(a!=null&&a.features){const O=a.features.find(I=>{var K,z;return((K=I.properties)==null?void 0:K.region)===v||((z=I.properties)==null?void 0:z.name)===v});O&&(P=S(O))}if(!P)return;const L=u(P);l(N).flyTo({center:L,zoom:T,...c})}function S(v){if(!v||!v.geometry)return null;const{type:N,coordinates:P}=v.geometry;let T=[];if(N==="Polygon"?T=P[0]||[]:N==="MultiPolygon"&&P.forEach(O=>{T=T.concat(O[0]||[])}),T.length===0)return null;let q=0,L=0;return T.forEach(O=>{q+=O[0],L+=O[1]}),[q/T.length,L/T.length]}function w(v,N={}){const P=t();if(!P)return;const T={center:v,...c,...N};l(P).flyTo(T)}function $(v,N,P={}){const T=t();if(!T||(v==null?void 0:v.longitude)==null||(v==null?void 0:v.latitude)==null)return;const q=N??Math.min(T.getZoom()+2,8);w([v.longitude,v.latitude],{...P,zoom:q})}function b(v,N={top:40,right:40,bottom:40,left:40},P={}){const T=t();if(!T||!v)return;const q=P.maxZoom??4,L=P.duration??900;l(T).fitBounds(v,{padding:N,maxZoom:q,duration:L,...c,...P})}function m(){const v=t();v&&l(v).flyTo({center:r,zoom:s,...c})}const p=80,_=800,g=5,y=5,h=110,k=1.2;function A(v){const N=v.filter(Number.isFinite).slice().sort((ke,R)=>ke-R),P=N.length;if(!P)return null;let T=-1,q=0;for(let ke=0;keT&&(T=B,q=ke)}const L=(q+1)%P,O=new Array(P);for(let ke=0;ke
0&&R((ke+180)%360+360)%360-180,ye=ge(z),Se=24,xe=360/Se,Q=new Array(Se).fill(0);for(const ke of N){let R=Math.floor(((ke+180)%360+360)%360/xe);R>=Se&&(R=Se-1),Q[R]++}let Z=0;for(let ke=1;keQ[Z]&&(Z=ke);return{center:ge(-180+(Z+.5)*xe),minLng:ye,maxLng:ye+(re-z),span:re-z}}function x(v){try{const N=v.getContainer&&v.getContainer().clientWidth||0,P=N>0?Math.log2(N/512):k,T=typeof v.getMinZoom=="function"?v.getMinZoom():P;return Math.max(T,P)}catch{return k}}function D(v,N,P,T){l(v).easeTo({center:[N,(P+T)/2],zoom:x(v),duration:_,essential:!0})}function W(v,N,P){if(P>h)return!0;try{const T=typeof v.cameraForBounds=="function"?v.cameraForBounds(N,{padding:p,maxZoom:g}):null;return T==null?!0:typeof T.zoom=="number"&&T.zoom<=x(v)+.05}catch{return!1}}function G(v,N={}){var Q,Z;const P=t();if(!P||!v)return;if(N.regionPolygonSource&&P.getSource(N.regionPolygonSource)){const le=Di(P,N.regionPolygonSource),ke=v.id??v.label,R=le.find(B=>{const H=(B==null?void 0:B.properties)||{};return H.region===ke||H.name===ke||H.id===ke});if(R){const B=[];let H=1/0,Y=-1/0;const ne=se=>{for(const me of se)Array.isArray(me[0])?ne(me):Number.isFinite(me[0])&&Number.isFinite(me[1])&&(B.push(me[0]),me[1]Y&&(Y=me[1]))};(Q=R.geometry)!=null&&Q.coordinates&&ne(R.geometry.coordinates);const U=A(B);if(U&&Number.isFinite(H)){const se=[[U.minLng,H],[U.maxLng,Y]];W(P,se,U.span)?D(P,U.center,H,Y):l(P).fitBounds(se,{padding:p,maxZoom:g,duration:_,essential:!0});return}}}const T=N.sourceId??"language-families";if(!P.getSource(T))return;const q=N.matchExpr??v.filter;if(!q)return;const L=Di(P,T);if(!L.length)return;const O=[];let I=1/0,K=-1/0,z=0,re=0,ge=0;const ye=new Set;for(const le of L){const ke=le==null?void 0:le.properties;if(!hr(q,ke))continue;const R=ke==null?void 0:ke.uniqueId;if(R!=null){if(ye.has(R))continue;ye.add(R)}const B=(Z=le.geometry)==null?void 0:Z.coordinates;if(!Array.isArray(B)||B.length<2)continue;const H=B[0],Y=B[1];!Number.isFinite(H)||!Number.isFinite(Y)||(z===0&&(re=H,ge=Y),O.push(H),YK&&(K=Y),z++)}if(z===0)return;if(z===1){l(P).flyTo({center:[re,ge],zoom:y,duration:_,essential:!0});return}const Se=A(O)||{center:0,minLng:0,maxLng:0,span:0},xe=[[Se.minLng,I],[Se.maxLng,K]];if(W(P,xe,Se.span)){D(P,Se.center,I,K);return}try{l(P).fitBounds(xe,{padding:p,maxZoom:g,duration:_,essential:!0})}catch{}}return{getOffsetCenter:u,slowFlyToFamily:d,slowFlyToRegion:f,flyTo:w,flyToCoords:$,fitBounds:b,resetView:m,zoomToLegendRow:G,calculateRegionCenterFromPolygon:S}}const Oi="#1a1a1a",qn="selected-pin-highlight";function Tw(e=Oi){const t=document.createElement("div");t.className="map-go-pin-wrapper";const o=`pinGrad-${Math.random().toString(36).slice(2,8)}`;return t.innerHTML=`
+ `}function d(_){const g=t();if(!g)return;const y=_||"language-family-pins";if(!g.getLayer(y))return;const h=k=>{try{const A=k.features[0],x=A.properties,D=A.geometry.coordinates.slice();for(;Math.abs(k.lngLat.lng-D[0])>180;)D[0]+=k.lngLat.lng>D[0]?360:-360;if(r&&r.legendMode!==void 0){r.selectPeopleGroup(A),r.isMobile&&r.legendState==="collapsed"&&r.setLegendState("open"),r.isMobile||window.dispatchEvent(new CustomEvent("dxm:openDesktopLegend",{detail:{mapId:o}}));return}new(Ti(g)).Popup({maxWidth:"320px",className:"people-group-popup"}).setLngLat(D).setHTML(c(x)).addTo(g)}catch(A){console.error(` [${o}] Pin click handler error:`,A)}};g.on("click",y,h),l.value.push({event:"click",layer:y,handler:h})}function f(){const _=t();if(!_)return;const g="regions-fill";if(!_.getLayer(g))return;const y=h=>{const k=["language-family-pins","language-family-pins-hitbox","people-groups-pins"];for(const A of k)if(_.getLayer(A)){const x=_.queryRenderedFeatures(h.point,{layers:[A]});if(x&&x.length>0)return}if(h.features&&h.features.length>0){const A=h.features[0].properties;new(Ti(_)).Popup().setLngLat(h.lngLat).setHTML(u(A)).addTo(_)}};_.on("click",g,y),l.value.push({event:"click",layer:g,handler:y})}function S(){const _=t();if(!_)return;const g="clusters";if(!_.getLayer(g))return;const y=h=>{const k=_.queryRenderedFeatures(h.point,{layers:[g]});if(!k.length)return;const A=k[0].properties.cluster_id,x=k[0].source;_.getSource(x).getClusterExpansionZoom(A,(D,W)=>{D||_.easeTo({center:k[0].geometry.coordinates,zoom:W})})};_.on("click",g,y),l.value.push({event:"click",layer:g,handler:y})}function w(_){const g=t();if(!g||!g.getLayer(_))return;const y=()=>{g.getCanvas().style.cursor="pointer"},h=()=>{g.getCanvas().style.cursor=""};g.on("mouseenter",_,y),g.on("mouseleave",_,h),l.value.push({event:"mouseenter",layer:_,handler:y}),l.value.push({event:"mouseleave",layer:_,handler:h})}function $(){d("language-family-pins-hitbox"),w("language-family-pins"),w("language-family-pins-hitbox"),S(),w("clusters")}function b(){f(),w("regions-fill")}function m(){const _=t();_&&(_.getLayer("language-family-pins")&&$(),_.getLayer("regions-fill")&&b(),_.getLayer("people-groups-pins")&&(d("people-groups-pins"),w("people-groups-pins")))}function p(){const _=t();if(_){for(const{event:g,layer:y,handler:h}of l.value)try{_.off(g,y,h)}catch{}l.value=[]}}return{attachAllEventHandlers:m,attachLanguageFamilyEvents:$,attachRegionEvents:b,attachPinClickHandler:d,attachRegionClickHandler:f,attachClusterClickHandler:S,attachCursorHandlers:w,detachAllEventHandlers:p,generatePinPopupContent:c,generateRegionPopupContent:u,registeredHandlers:l}}const vt={Chamacoco:"Zamucoan",Ninam:"Yanomaman",Yagua:"Yaguan",Muinane:"Witotoan",Finnish:"Uralic","Hill Mari":"Uralic",Mansi:"Uralic","Meadow Mari":"Uralic","North Saami":"Uralic",Carabayo:"Unclassified",Kujarge:"Unclassified",Shabo:"Unclassified",Ainu:"Turkic",Kazakh:"Turkic","Khorasani Turkish":"Turkic",Kyrgyz:"Turkic","Northern Uzbek":"Turkic","South Azerbaijani":"Turkic",Turkish:"Turkic",Tuvan:"Turkic",Uyghur:"Turkic",Amundava:"Tupian",Araweté:"Tupian","Asurini of Xingú":"Tupian","Avá-Canoeiro":"Tupian",Awetí:"Tupian",Kamayurá:"Tupian",Karo:"Tupian",Morerebi:"Tupian",Tenharim:"Tupian","Uru-Eu-Wau-Wau":"Tupian","Uru-Pa-In":"Tupian",Wayampi:"Tupian","Zo’é":"Tupian",Evenki:"Tungusic",Xibe:"Tungusic",Carapana:"Tucanoan",Cubeo:"Tucanoan",Desano:"Tucanoan",Macuna:"Tucanoan",Piratapuyo:"Tucanoan",Siona:"Tucanoan",Siriano:"Tucanoan",Tucano:"Tucanoan",Tuyuca:"Tucanoan",Waimaha:"Tucanoan",Tay:"Trans-New Guinea",Adi:"Sino-Tibetan",Akha:"Sino-Tibetan","Amdo Tibetan":"Sino-Tibetan",Axi:"Sino-Tibetan",Biyo:"Sino-Tibetan","Boro (India)":"Sino-Tibetan",Brokkat:"Sino-Tibetan",Bugun:"Sino-Tibetan",Byangsi:"Sino-Tibetan","Central Lalo":"Sino-Tibetan","Central Tibetan":"Sino-Tibetan",Chak:"Sino-Tibetan",Chalikha:"Sino-Tibetan",Chaudangsi:"Sino-Tibetan",Chocangacakha:"Sino-Tibetan",Darlong:"Sino-Tibetan",Dhimal:"Sino-Tibetan","Digaro-Mishmi":"Sino-Tibetan",Dzalakha:"Sino-Tibetan","Eastern Nisu":"Sino-Tibetan",Ersu:"Sino-Tibetan",Gahri:"Sino-Tibetan",Gongduk:"Sino-Tibetan",Gyalsumdo:"Sino-Tibetan",Hani:"Sino-Tibetan","Idu-Mishmi":"Sino-Tibetan",Kaike:"Sino-Tibetan",Kanashi:"Sino-Tibetan",Katso:"Sino-Tibetan",Khamba:"Sino-Tibetan",Koireng:"Sino-Tibetan",Kucong:"Sino-Tibetan",Kurtokha:"Sino-Tibetan",Ladakhi:"Sino-Tibetan",Lakha:"Sino-Tibetan","Lang’e":"Sino-Tibetan",Lhokpu:"Sino-Tibetan",Lolopo:"Sino-Tibetan",Lunanakha:"Sino-Tibetan","Mandarin Chinese":"Sino-Tibetan",Meitei:"Sino-Tibetan","Miju-Mishmi":"Sino-Tibetan",Mpi:"Sino-Tibetan",Na:"Sino-Tibetan",Namuyi:"Sino-Tibetan",Narua:"Sino-Tibetan",Naxi:"Sino-Tibetan","Northern Muji":"Sino-Tibetan",Nuosu:"Sino-Tibetan",Nupbikha:"Sino-Tibetan",Nyenkha:"Sino-Tibetan",Olekha:"Sino-Tibetan",Pahari:"Sino-Tibetan",Pattani:"Sino-Tibetan","Phana’":"Sino-Tibetan",Phula:"Sino-Tibetan",Phunoi:"Sino-Tibetan",Puma:"Sino-Tibetan",Puroik:"Sino-Tibetan",Raji:"Sino-Tibetan",Rawat:"Sino-Tibetan",Sani:"Sino-Tibetan",Sherdukpen:"Sino-Tibetan",Sherpa:"Sino-Tibetan",Shuhi:"Sino-Tibetan",Sila:"Sino-Tibetan",Singpho:"Sino-Tibetan",Sunwar:"Sino-Tibetan","Tawang Monpa":"Sino-Tibetan",Tseku:"Sino-Tibetan",Tshangla:"Sino-Tibetan",Usoi:"Sino-Tibetan","Western Minyag":"Sino-Tibetan","Wusa Nasu":"Sino-Tibetan","Xiang Chinese":"Sino-Tibetan",Yakkha:"Sino-Tibetan","Youle Jinuo":"Sino-Tibetan","Yue Chinese":"Sino-Tibetan",Zakhring:"Sino-Tibetan","Afghan Sign Language":"Sign Language","Albanian Sign Language":"Sign Language","Algerian Sign Language":"Sign Language","American Sign Language":"Sign Language","Armenian Sign Language":"Sign Language","British Sign Language":"Sign Language","Bulgarian Sign Language":"Sign Language","Cambodian Sign Language":"Sign language","Cuban Sign Language":"Sign Language","Egyptian Sign Language":"Sign Language","Greek Sign Language":"Sign Language","Guinean Sign Language":"Sign Language","Hong Kong Sign Language":"Sign Language","Icelandic Sign Language":"Sign Language","Iranian Sign Language":"Sign Language","Israeli Sign Language":"Sign Language","Jamaican Sign Language":"Sign Language","Jordanian Sign Language":"Sign Language","Laos Sign Language":"Sign Language","Libyan Sign Language":"Sign Language","Maltese Sign Language":"Sign Language","Mauritian Sign Language":"Sign Language","Moroccan Sign Language":"Sign Language","Mozambican Sign Language":"Sign Language","Myanmar Sign Language":"Sign language","Natural Sign Language":"Sign Language","Pakistan Sign Language":"Sign Language","Papua New Guinean Sign Language":"Sign language","Russian Sign Language":"Sign Language","Saudi Arabian Sign Language":"Sign Language","Sign Language of the Netherlands":"Sign Language","Solomon Islands Sign Language":"Sign Language","Sri Lankan Sign Language":"Sign Language","Swedish Sign Language":"Sign Language","Turkish Sign Language":"Sign Language","Northern Conchucos Ancash Quechua":"Quechuan","Northern Pastaza Quichua":"Quechuan",Hupdë:"Puinavean",Amahuaca:"Panoan",Korubo:"Panoan",Sharanahua:"Panoan","Shipibo-Conibo":"Panoan",Yaminahua:"Panoan",Yawanawa:"Panoan",Afitti:"Nilo-Saharan",Assangori:"Nilo-Saharan","Beli (South Sudan)":"Nilo-Saharan",Berta:"Nilo-Saharan",Burun:"Nilo-Saharan","Dar Daju Daju":"Nilo-Saharan","Dar Fur Daju":"Nilo-Saharan","Dar Sila Daju":"Nilo-Saharan",Dazaga:"Nilo-Saharan","Dendi (Benin)":"Nilo-Saharan",Dilling:"Nilo-Saharan",Fur:"Nilo-Saharan",Gbaya:"Nilo-Saharan",Ghulfan:"Nilo-Saharan",Gwama:"Nilo-Saharan","Humburi Senni Songhay":"Nilo-Saharan",Jopadhola:"Nilo-Saharan",Kadaru:"Nilo-Saharan",Kanga:"Nilo-Saharan",Karanga:"Nilo-Saharan",Karko:"Nilo-Saharan",Kebu:"Nilo-Saharan",Keiga:"Nilo-Saharan",Keliko:"Nilo-Saharan",Kendeje:"Nilo-Saharan",Kibet:"Nilo-Saharan","Komo (Sudan)":"Nilo-Saharan",Korandje:"Nilo-Saharan",Kulfa:"Nilo-Saharan",Kwegu:"Nilo-Saharan",Laarim:"Nilo-Saharan",Logorik:"Nilo-Saharan",Majang:"Nilo-Saharan","Manga Kanuri":"Nilo-Saharan",Mango:"Nilo-Saharan",Mararit:"Nilo-Saharan",Marfa:"Nilo-Saharan",Midob:"Nilo-Saharan","Mo’da":"Nilo-Saharan",Morom:"Nilo-Saharan",Moru:"Nilo-Saharan",Naba:"Nilo-Saharan",Nara:"Nilo-Saharan",Njalgulgule:"Nilo-Saharan",Nuer:"Nilo-Saharan","Nyamusa-Molo":"Nilo-Saharan",Nyangatom:"Nilo-Saharan","Olu’bo":"Nilo-Saharan",Opo:"Nilo-Saharan",Päri:"Nilo-Saharan","Sara Kaba Naa":"Nilo-Saharan",Surbakhal:"Nilo-Saharan",Tadaksahak:"Nilo-Saharan","Tama (Chad)":"Nilo-Saharan",Temein:"Nilo-Saharan",Thuri:"Nilo-Saharan","Tirmaga-Chai Suri":"Nilo-Saharan",Toposa:"Nilo-Saharan",Tumtum:"Nilo-Saharan","Wali (Sudan)":"Nilo-Saharan","Yerwa Kanuri":"Nilo-Saharan",Yulu:"Nilo-Saharan",Zaghawa:"Nilo-Saharan","Adamawa Fulfulde":"Niger-Congo",Akaselem:"Niger-Congo","Amba (Uganda)":"Niger-Congo",Anii:"Niger-Congo",Baangi:"Niger-Congo",Badyara:"Niger-Congo","Bago-Kusuntu":"Niger-Congo",Bai:"Niger-Congo","Bainouk-Gunyaamolo":"Niger-Congo",Bamanankan:"Niger-Congo","Banda-Mbrès":"Niger-Congo",Bandial:"Niger-Congo",Bankagooma:"Niger-Congo","Belanda Viri":"Niger-Congo",Bemba:"Niger-Congo",Bolgo:"Niger-Congo","Bon Gula":"Niger-Congo",Bua:"Niger-Congo",Chichewa:"Niger-Congo","Chung (Cameroon)":"Niger-Congo","Ci Gbe":"Niger-Congo",Degema:"Niger-Congo",Dek:"Niger-Congo",Dhimba:"Niger-Congo",Dogoso:"Niger-Congo","East Limba":"Niger-Congo",Engenni:"Niger-Congo",Epie:"Niger-Congo",Éwé:"Niger-Congo",Fania:"Niger-Congo",Foodo:"Niger-Congo",Fwe:"Niger-Congo",Gciriku:"Niger-Congo",Gwa:"Niger-Congo",Herero:"Niger-Congo",Ibuoro:"Niger-Congo","Jenaama Bozo":"Niger-Congo",Jita:"Niger-Congo",Jula:"Niger-Congo",Kabiyè:"Niger-Congo",Kadung:"Niger-Congo",Kakabe:"Niger-Congo",Kalamsé:"Niger-Congo","Kami (Tanzania)":"Niger-Congo","Kango (Bas-Uélé District)":"Niger-Congo",Kasem:"Niger-Congo","Kelengaxo Bozo":"Niger-Congo",Khe:"Niger-Congo",Khisa:"Niger-Congo",Kim:"Niger-Congo",Kinyarwanda:"Niger-Congo",Kipfokomu:"Niger-Congo",Kitharaka:"Niger-Congo",Kiyombe:"Niger-Congo",Ko:"Niger-Congo",Koalib:"Niger-Congo",Koke:"Niger-Congo",Konongo:"Niger-Congo","Koro Nulu":"Niger-Congo","Koro Zuba":"Niger-Congo",Kuhane:"Niger-Congo",Kunda:"Niger-Congo",Kuranko:"Niger-Congo",Kuria:"Niger-Congo",Kwangali:"Niger-Congo",Lame:"Niger-Congo",Laru:"Niger-Congo",Lopa:"Niger-Congo","Makhuwa-Meetto":"Niger-Congo","Makhuwa-Shirima":"Niger-Congo","Malawi Nyiha":"Niger-Congo",Mandinka:"Niger-Congo",Mankanya:"Niger-Congo",Mansoanka:"Niger-Congo",Mbukushu:"Niger-Congo","Mende (Sierra Leone)":"Niger-Congo",Miyobe:"Niger-Congo",Mushungulu:"Niger-Congo","Mwali Comorian":"Niger-Congo","Mwera (Chimwera)":"Niger-Congo",Ndemli:"Niger-Congo",Ndengereko:"Niger-Congo",Ndumu:"Niger-Congo",Ndunga:"Niger-Congo","Ndzwani Comorian":"Niger-Congo",Ngile:"Niger-Congo","Northwest Gbaya":"Niger-Congo",Notre:"Niger-Congo",Nyamwanga:"Niger-Congo",Nyankore:"Niger-Congo",Nyengo:"Niger-Congo",Okpamheri:"Niger-Congo",Osatu:"Niger-Congo","Pana (Burkina Faso)":"Niger-Congo",Pulaar:"Niger-Congo",Pular:"Niger-Congo",Rufiji:"Niger-Congo","Sankaran Maninka":"Niger-Congo",Sapo:"Niger-Congo","Senara Sénoufo":"Niger-Congo",Shanga:"Niger-Congo",Sininkere:"Niger-Congo","Southern Ngbandi":"Niger-Congo",Swahili:"Niger-Congo","Syenara Sénoufo":"Niger-Congo",Tagbu:"Niger-Congo",Tagoi:"Niger-Congo",Tegali:"Niger-Congo",Tem:"Niger-Congo","Tiéyaxo Bozo":"Niger-Congo",Tiyaa:"Niger-Congo",Tocho:"Niger-Congo","Tonga (Zambia)":"Niger-Congo",Totela:"Niger-Congo","Toura (Côte d’Ivoire)":"Niger-Congo",Tswa:"Niger-Congo",Tumbuka:"Niger-Congo",Ukaan:"Niger-Congo",Uneme:"Niger-Congo",Vai:"Niger-Congo",Vute:"Niger-Congo",Waama:"Niger-Congo",Warnang:"Niger-Congo",Wolof:"Niger-Congo",Yao:"Niger-Congo",Yauma:"Niger-Congo",Yom:"Niger-Congo","Zan Gula":"Niger-Congo",Zande:"Niger-Congo",Zigula:"Niger-Congo",Mamaindê:"Nambikwara",Aghul:"Nakh-Daghestanian",Akhvakh:"Nakh-Daghestanian",Andi:"Nakh-Daghestanian",Avar:"Nakh-Daghestanian",Bagvalal:"Nakh-Daghestanian",Botlikh:"Nakh-Daghestanian",Chamalal:"Nakh-Daghestanian",Chechen:"Nakh-Daghestanian",Dargwa:"Nakh-Daghestanian",Kaitag:"Nakh-Daghestanian",Karata:"Nakh-Daghestanian",Khvarshi:"Nakh-Daghestanian",Tindi:"Nakh-Daghestanian",Pirahã:"Muran",Bonan:"Mongolic","China Buriat":"Mongolic",Daur:"Mongolic","Kalmyk-Oirat":"Mongolic","Peripheral Mongolian":"Mongolic","Russia Buriat":"Mongolic",Tagdal:"Mixed language",Wutunhua:"Mixed language","Ashéninka Perené":"Maipurean",Baniwa:"Maipurean",Cabiyarí:"Maipurean",Curripaco:"Maipurean","Enawené-Nawé":"Maipurean",Kanamarí:"Maipurean",Mehináku:"Maipurean","Pichis Ashéninka":"Maipurean",Waurá:"Maipurean",Bangime:"Language isolate",Burushaski:"Language isolate","Ai-Cham":"Kra-Dai",Aiton:"Kra-Dai","Dai Zhuang":"Kra-Dai",Duoluo:"Kra-Dai","Green Gelao":"Kra-Dai","Guibian Zhuang":"Kra-Dai",Hlai:"Kra-Dai",Jiamao:"Kra-Dai",Kang:"Kra-Dai",Khün:"Kra-Dai",Kuan:"Kra-Dai",Lachi:"Kra-Dai","Laha (Viet Nam)":"Kra-Dai",Lao:"Kra-Dai",Lü:"Kra-Dai","Mak (China)":"Kra-Dai","Northeastern Thai":"Kra-Dai","Northern Dong":"Kra-Dai","Northern Thai":"Kra-Dai",Nyaw:"Kra-Dai",Phake:"Kra-Dai","Phu Thai":"Kra-Dai",Qabiao:"Kra-Dai",Qau:"Kra-Dai","Qiubei Zhuang":"Kra-Dai",Shan:"Kra-Dai","Southern Dong":"Kra-Dai",Sui:"Kra-Dai","T’en":"Kra-Dai","Tai Daeng":"Kra-Dai","Tai Dam":"Kra-Dai","Tai Hongjin":"Kra-Dai","Tai Nüa":"Kra-Dai","Tai Ya":"Kra-Dai","Tai Yo":"Kra-Dai","Ts’ün-Lao":"Kra-Dai","Yang Zhuang":"Kra-Dai",Yerong:"Kra-Dai",Yong:"Kra-Dai",Yoy:"Kra-Dai",Khoekhoe:"Khoe-Kwadi",Karajá:"Karajá","Pará Gavião":"Jean",Suyá:"Jean",Japanese:"Japonic","Oki-No-Erabu":"Japonic","Toku-No-Shima":"Japonic",Yaeyama:"Japonic",Yoron:"Japonic","Adivasi Oriya":"Indo-European",Afrikaans:"Indo-European","Alviri-Vidari":"Indo-European",Angika:"Indo-European",Assamese:"Indo-European",Bagheli:"Indo-European",Bagri:"Indo-European",Bashkardi:"Indo-European",Bateri:"Indo-European",Bengali:"Indo-European",Bhojpuri:"Indo-European",Bhunjia:"Indo-European",Bilaspuri:"Indo-European",Bosnian:"Indo-European","Braj Bhasha":"Indo-European",Brokskat:"Indo-European",Bundeli:"Indo-European",Catalan:"Indo-European",Chambeali:"Indo-European",Chhattisgarhi:"Indo-European",Dameli:"Indo-European",Dari:"Indo-European",Dhundari:"Indo-European",Dogri:"Indo-European",Domari:"Indo-European",Dutch:"Indo-European","Eastern Balochi":"Indo-European","Eastern Panjabi":"Indo-European","Eastern Yiddish":"Indo-European",English:"Indo-European",French:"Indo-European",Gaddi:"Indo-European",Garhwali:"Indo-European",Gawri:"Indo-European",Gowro:"Indo-European",Gujarati:"Indo-European",Gujari:"Indo-European",Halbi:"Indo-European",Haroti:"Indo-European",Haryanvi:"Indo-European",Hindi:"Indo-European","Indus Kohistani":"Indo-European","Iranian Persian":"Indo-European",Ishkashimi:"Indo-European",Kacchi:"Indo-European",Kalkoti:"Indo-European",Kanauji:"Indo-European",Kangri:"Indo-European",Karingani:"Indo-European",Kashmiri:"Indo-European",Kati:"Indo-European",Khunsari:"Indo-European",Konkani:"Indo-European",Kudmali:"Indo-European",Kumaoni:"Indo-European",Kumzari:"Indo-European",Laki:"Indo-European",Lasi:"Indo-European",Luwati:"Indo-European",Magahi:"Indo-European",Maithili:"Indo-European",Maldivian:"Indo-European",Malvi:"Indo-European",Marathi:"Indo-European","Marwari (India)":"Indo-European",Mewari:"Indo-European",Munji:"Indo-European",Nepali:"Indo-European",Nimadi:"Indo-European","Northern Kurdish":"Indo-European",Odia:"Indo-European","Pahari-Potwari":"Indo-European",Palula:"Indo-European",Panchpargania:"Indo-European",Pangwali:"Indo-European",Parachi:"Indo-European",Portuguese:"Indo-European",Russian:"Indo-European",Sadri:"Indo-European",Sanglechi:"Indo-European",Sarikoli:"Indo-European",Savi:"Indo-European",Semnani:"Indo-European",Serbian:"Indo-European",Shabak:"Indo-European",Shahrudi:"Indo-European",Shekhawati:"Indo-European",Shina:"Indo-European",Shughni:"Indo-European",Shumashti:"Indo-European",Sindhi:"Indo-European",Sivandi:"Indo-European",Soi:"Indo-European","Southern Balochi":"Indo-European",Spanish:"Indo-European",Tajik:"Indo-European",Talysh:"Indo-European",Urdu:"Indo-European",Ushojo:"Indo-European",Vaghri:"Indo-European","Vlax Romani":"Indo-European",Wagdi:"Indo-European",Wakhi:"Indo-European",Waneci:"Indo-European","Western Balochi":"Indo-European",Yadgha:"Indo-European","Bu-Nao Bunu":"Hmong-Mien","Central Mashan Miao":"Hmong-Mien","Chuanqiandian Cluster Miao":"Hmong-Mien","Eastern Xiangxi Miao":"Hmong-Mien","Iu Mien":"Hmong-Mien","Luopohe Miao":"Hmong-Mien","Northern Qiandong Miao":"Hmong-Mien","Pa-Hng":"Hmong-Mien","Southwestern Huishui Miao":"Hmong-Mien","Wunai Bunu":"Hmong-Mien","Younuo Bunu":"Hmong-Mien",Amarakaeri:"Harákmbut",Huachipaeri:"Harákmbut",Cuiba:"Guajiboan",Macaguán:"Guajiboan",Tlicho:"Eyak-Athabaskan",Kannada:"Dravidian",Kodava:"Dravidian","Korra Koraga":"Dravidian","Kota (India)":"Dravidian",Kudiya:"Dravidian",Malapandaram:"Dravidian",Malayalam:"Dravidian",Muthuvan:"Dravidian",Ravula:"Dravidian",Sholaga:"Dravidian",Tamil:"Dravidian",Telugu:"Dravidian",Tulu:"Dravidian",Vishavan:"Dravidian","Andaman Hindi Creole":"Creole","Cocos Islands Malay":"Creole","Juba Arabic":"Creole",Nubi:"Creole",Barí:"Chibchan","Barro Negro Tunebo":"Chibchan","Western Tunebo":"Chibchan",Ikpeng:"Cariban","Kuikúro-Kalapálo":"Cariban",Pemon:"Cariban",Trió:"Cariban","Waimiri-Atroarí":"Cariban",Waiwai:"Cariban",Yukpa:"Cariban",Borôro:"Bororoan",Chachi:"Barbacoan","Abai Sungai":"Austronesian",Ambelau:"Austronesian",Asilulu:"Austronesian",Balaesang:"Austronesian","Batak Alas-Kluet":"Austronesian","Batak Dairi":"Austronesian","Batak Karo":"Austronesian",Bonerate:"Austronesian",Bonggi:"Austronesian",Brunei:"Austronesian","Brunei Bisaya":"Austronesian",Buol:"Austronesian","Central Malay":"Austronesian","Central Sama":"Austronesian","Coastal Konjo":"Austronesian",Dampelas:"Austronesian","Dibabawon Manobo":"Austronesian",Dondo:"Austronesian",Gane:"Austronesian","Geser-Gorom":"Austronesian","Highland Konjo":"Austronesian",Hitu:"Austronesian",Iban:"Austronesian",Indonesian:"Austronesian","Kadazan Dusun":"Austronesian",Kiput:"Austronesian",Komodo:"Austronesian",Kompane:"Austronesian",Lahanan:"Austronesian","Lampung Nyo":"Austronesian","Larike-Wakasihu":"Austronesian",Lola:"Austronesian",Luhu:"Austronesian",Malay:"Austronesian",Mariri:"Austronesian",Moronene:"Austronesian",Rukai:"Austronesian","Sabah Bisaya":"Austronesian","Seit-Kaitetu":"Austronesian",Sula:"Austronesian","Tae’":"Austronesian",Tajio:"Austronesian",Tomini:"Austronesian",Tutong:"Austronesian",Ujir:"Austronesian",Aheu:"Austro-Asiatic",Alak:"Austro-Asiatic",Bit:"Austro-Asiatic","Bo (Laos)":"Austro-Asiatic",Bondo:"Austro-Asiatic",Brao:"Austro-Asiatic",Bugan:"Austro-Asiatic",Chong:"Austro-Asiatic",Chut:"Austro-Asiatic",Danau:"Austro-Asiatic",Halang:"Austro-Asiatic","Halang Doan":"Austro-Asiatic",Hu:"Austro-Asiatic",Hung:"Austro-Asiatic",Ir:"Austro-Asiatic",Kensiu:"Austro-Asiatic",Khmu:"Austro-Asiatic",Khua:"Austro-Asiatic",Khuen:"Austro-Asiatic",Koda:"Austro-Asiatic","Kon Keu":"Austro-Asiatic",Kriang:"Austro-Asiatic",Kuay:"Austro-Asiatic",Laven:"Austro-Asiatic",Maleng:"Austro-Asiatic","Man Met":"Austro-Asiatic",Mang:"Austro-Asiatic",Minriq:"Austro-Asiatic",Mlabri:"Austro-Asiatic",Nguôn:"Austro-Asiatic",Nyaheun:"Austro-Asiatic",Nyahkur:"Austro-Asiatic","O’du":"Austro-Asiatic",Ong:"Austro-Asiatic",Oy:"Austro-Asiatic",Pacoh:"Austro-Asiatic","Phong-Kniang":"Austro-Asiatic",Prai:"Austro-Asiatic",Puoc:"Austro-Asiatic",Rengao:"Austro-Asiatic",Rmeet:"Austro-Asiatic","Rumai Palaung":"Austro-Asiatic",Sapuan:"Austro-Asiatic","Shwe Palaung":"Austro-Asiatic","So (Laos)":"Austro-Asiatic",Sou:"Austro-Asiatic","Tai Loi":"Austro-Asiatic",Talieng:"Austro-Asiatic",Tareng:"Austro-Asiatic",Tho:"Austro-Asiatic",U:"Austro-Asiatic","Upper Ta’oih":"Austro-Asiatic",Vietnamese:"Austro-Asiatic","Western Katu":"Austro-Asiatic",Suruahá:"Arauan",Jarawa:"Andamanese",Öñge:"Andamanese",Sentinel:"Andamanese",Afar:"Afro-Asiatic","Alaba-K’abeena":"Afro-Asiatic",Alagwa:"Afro-Asiatic",Ale:"Afro-Asiatic","Algerian Arabic":"Afro-Asiatic",Amharic:"Afro-Asiatic",Arbore:"Afro-Asiatic","Baharna Arabic":"Afro-Asiatic",Barein:"Afro-Asiatic",Bedawiyet:"Afro-Asiatic",Bidiyo:"Afro-Asiatic",Bilen:"Afro-Asiatic",Birgit:"Afro-Asiatic",Boor:"Afro-Asiatic","Borana-Arsi-Guji Oromo":"Afro-Asiatic",Buduma:"Afro-Asiatic","Central Atlas Tamazight":"Afro-Asiatic","Chadian Arabic":"Afro-Asiatic",Chenoua:"Afro-Asiatic",Ciwogai:"Afro-Asiatic",Daasanach:"Afro-Asiatic",Dabarre:"Afro-Asiatic",Dangaléat:"Afro-Asiatic",Deno:"Afro-Asiatic",Diri:"Afro-Asiatic",Duwai:"Afro-Asiatic","Eastern Egyptian Bedawi Arabic":"Afro-Asiatic","Eastern Oromo":"Afro-Asiatic",Garre:"Afro-Asiatic",Geruma:"Afro-Asiatic",Giiwo:"Afro-Asiatic",Gorowa:"Afro-Asiatic","Gulf Arabic":"Afro-Asiatic","Hadrami Arabic":"Afro-Asiatic",Harsusi:"Afro-Asiatic",Hassaniyya:"Afro-Asiatic",Hausa:"Afro-Asiatic",Hebrew:"Afro-Asiatic","Hijazi Arabic":"Afro-Asiatic",Hobyót:"Afro-Asiatic",Hozo:"Afro-Asiatic",Jiiddu:"Afro-Asiatic",Jimi:"Afro-Asiatic",Jina:"Afro-Asiatic","Jonkor Bourmataguil":"Afro-Asiatic","Judeo-Iraqi Arabic":"Afro-Asiatic","Judeo-Moroccan Arabic":"Afro-Asiatic",Kabalai:"Afro-Asiatic",Kajakse:"Afro-Asiatic",Kariya:"Afro-Asiatic","Karo (Ethiopia)":"Afro-Asiatic",Kutto:"Afro-Asiatic","Levantine Arabic":"Afro-Asiatic",Libido:"Afro-Asiatic","Libyan Arabic":"Afro-Asiatic","Lishana Deni":"Afro-Asiatic",Maaka:"Afro-Asiatic",Maay:"Afro-Asiatic",Majera:"Afro-Asiatic",Male:"Afro-Asiatic",Maslam:"Afro-Asiatic",Masmaje:"Afro-Asiatic",Mburku:"Afro-Asiatic",Mehri:"Afro-Asiatic","Mesopotamian Arabic":"Afro-Asiatic",Migaama:"Afro-Asiatic",Mogum:"Afro-Asiatic","Moroccan Arabic":"Afro-Asiatic",Mositacha:"Afro-Asiatic",Mubi:"Afro-Asiatic",Mukulu:"Afro-Asiatic",Nafusi:"Afro-Asiatic","Najdi Arabic":"Afro-Asiatic",Nyam:"Afro-Asiatic","Omani Arabic":"Afro-Asiatic","Pa’a":"Afro-Asiatic",Saba:"Afro-Asiatic",Saho:"Afro-Asiatic","Sanaani Arabic":"Afro-Asiatic",Seze:"Afro-Asiatic",Shehri:"Afro-Asiatic",Shekkacho:"Afro-Asiatic",Sheko:"Afro-Asiatic","Shihhi Arabic":"Afro-Asiatic",Siwi:"Afro-Asiatic",Sokoro:"Afro-Asiatic",Soqotri:"Afro-Asiatic","South Levantine Arabic":"Afro-Asiatic","Standard Arabic":"Afro-Asiatic","Sudanese Arabic":"Afro-Asiatic","Ta’izzi-Adeni Arabic":"Afro-Asiatic","Tahaggart Tamahaq":"Afro-Asiatic",Taznatit:"Afro-Asiatic",Tigré:"Afro-Asiatic",Toram:"Afro-Asiatic",Tsamai:"Afro-Asiatic",Tumzabt:"Afro-Asiatic",Tunni:"Afro-Asiatic",Waata:"Afro-Asiatic","West Central Oromo":"Afro-Asiatic",Xamtanga:"Afro-Asiatic",Zumbun:"Afro-Asiatic"},lu=[">",["to-number",["get","peoplePraying"],0],0],cu={0:.25,8:.4,14:.5},fr={0:.1,8:.18,14:.22},hr={0:1.2,8:1.6,14:2},Nh=["interpolate",["linear"],["zoom"],0,["case",lu,cu[0],fr[0]],8,["case",lu,cu[8],fr[8]],14,["case",lu,cu[14],fr[14]]],vw=["interpolate",["linear"],["zoom"],0,hr[0],8,hr[8],14,hr[14]],Ih=["==",["to-number",["get","peoplePraying"],0],0],ww={prayer:[Ih],prayerProgress:[Ih],engagement:[["all",["!=",["get","engagementStatus"],!0],["!=",["get","engagementStatus"],1]]],adoption:[["all",["!=",["get","adoptionStatus"],!0],["!=",["get","adoptionStatus"],1]]]};function kw(e){const t=ww[e]||[];if(!t.length)return vw;const o=t.length===1?t[0]:["any",...t];return["interpolate",["linear"],["zoom"],0,["case",o,fr[0],hr[0]],8,["case",o,fr[8],hr[8]],14,["case",o,fr[14],hr[14]]]}const xw=[[/ sign language$/i,"Sign Language"]];function Sw(e){if(!e||typeof e!="string")return null;const t=e.trim(),o=t.split(",").map(a=>a.trim()).filter(Boolean);if(o.length>=2){const a=[...o].reverse().join(" ");if(vt[a])return vt[a];if(o.length>=3){const r=[o[1],o[0]].join(" ");if(vt[r])return vt[r]}}if(vt[t])return vt[t];const n=t.replace(/\s*\(.*?\)\s*$/,"").trim();if(n!==t&&vt[n])return vt[n];for(const[a,r]of xw)if(a.test(t))return r;return null}function Pw(e={}){const{getMap:t=()=>null,mapId:o="unknown",getLanguageFamilyColor:n=()=>"#999999",getNormalizedPeopleGroups:a=()=>[]}=e,r=()=>{const Q=t();return Q?ut(Q):null},s=Fh({getMap:r,mapId:o,getLanguageFamilyColor:n,getNormalizedPeopleGroups:a}),i=we({languageFamilyPins:!1,regions:!1,peopleGroups:!1,familyConnections:!1}),l=we({});function c(Q,Z="languageFamily"){const le=r();if(!le||!(Q!=null&&Q.length))return;const ke=mw(Z),R=Q.map(U=>{var se,me,M,C,J,ce,be,ve,X,ie,Fe,Ie,it,xt,pt,Bt,Ne,Ce,Oe;return{type:"Feature",properties:{uniqueId:U.id||U.uniqueId,slug:U.slug||((se=U._normalized)==null?void 0:se.slug)||"",rop3:U.rop3||U.peopleGroupId,peopleId3:U.peopleId3||"",name:U.name,language:U.language,languageFamily:U.languageFamily||((me=U._normalized)==null?void 0:me.languageFamily)||Sw(U.language)||"Unknown",affinityBlock:U.affinityBlock||U.affbloc||U.Affbloc||((M=U._normalized)==null?void 0:M.affinityBlock)||"Unknown",affinityBlockLabel:U.affinityBlockLabel||((C=U._normalized)==null?void 0:C.affinityBlockLabel)||"",cluster:U.cluster||((J=U._normalized)==null?void 0:J.cluster)||"",clusterLabel:U.clusterLabel||((ce=U._normalized)==null?void 0:ce.clusterLabel)||"",peopleGroup:U.peopleGroup||((be=U._normalized)==null?void 0:be.peopleGroup)||"",peopleGroupLabel:U.peopleGroupLabel||((ve=U._normalized)==null?void 0:ve.peopleGroupLabel)||"",doxaRegion:U.doxaRegion||((X=U._normalized)==null?void 0:X.doxaRegion)||"Unknown",wagfBlock:U.wagfBlock||((ie=U._normalized)==null?void 0:ie.wagfBlock)||"",wagfBlockLabel:U.wagfBlockLabel||((Fe=U._normalized)==null?void 0:Fe.wagfBlockLabel)||"",wagfRegionLabel:U.wagfRegionLabel||((Ie=U._normalized)==null?void 0:Ie.wagfRegionLabel)||"",country:U.country,countryIso:U.countryIso,countryIsoLabel:U.countryIsoLabel,countryName:U.countryName,religion:U.religion,religionCode:U.religionCode,religionLabel:U.religionLabel,religionName:U.religionName,population:U.population,status:U.status,description:U.description||"",imageUrl:U.imageUrl||"",peoplePraying:Number(U.peoplePraying??((it=U._normalized)==null?void 0:it.peoplePraying)??0),engagementStatus:U.engagementStatus===!0||U.engagementStatus===1||!1,adoptionStatus:U.adoptionStatus===!0||U.adoptionStatus===1||!1,bible:U.bible||((xt=U._normalized)==null?void 0:xt.bible)||"Not Available",jesusFilm:U.jesusFilm||((pt=U._normalized)==null?void 0:pt.jesusFilm)||"Not Available",radio:U.radio||((Bt=U._normalized)==null?void 0:Bt.radio)||"Not Available",gospel:U.gospel||((Ne=U._normalized)==null?void 0:Ne.gospel)||"Not Available",audio:U.audio||((Ce=U._normalized)==null?void 0:Ce.audio)||"Not Available",stories:U.stories||((Oe=U._normalized)==null?void 0:Oe.stories)||"Not Available",lng:parseFloat(U.longitude||U.lng)||0},geometry:{type:"Point",coordinates:[parseFloat(U.longitude||U.lng),parseFloat(U.latitude||U.lat)]}}}).filter(U=>!isNaN(U.geometry.coordinates[0])&&!isNaN(U.geometry.coordinates[1])),B=.04,H=U=>`${U.geometry.coordinates[0]},${U.geometry.coordinates[1]}`,Y=new Map;for(const U of R){const se=H(U);Y.has(se)||Y.set(se,[]),Y.get(se).push(U)}for(const U of Y.values()){if(U.length<2)continue;const[se,me]=U[0].geometry.coordinates,M=U.length;for(let C=0;C",["to-number",["get","peoplePraying"],0],0],"#ffffff","#1f2937"],"circle-opacity":1,"circle-stroke-opacity":1,"circle-opacity-transition":{duration:250}}}),le.addLayer({id:"language-family-pins-hitbox",type:"circle",source:"language-families",paint:{"circle-radius":iu("touchTarget"),"circle-color":"rgba(0,0,0,0)","circle-stroke-width":0,"circle-opacity":0}}),i.value.languageFamilyPins=!0,s.attachLanguageFamilyEvents()}function u(Q,Z="doxa-regions"){const le=r();if(!le)return;le.getLayer("regions-fill")&&le.removeLayer("regions-fill"),le.getLayer("regions-border")&&le.removeLayer("regions-border"),le.getSource("regions")&&le.removeSource("regions");const ke={africa:"#ff2e2e",asia:"#1a8cff",europe:"#1ee05f","latin_america_&_caribbean":"#FFEB3B",middle_east:"#a83dff","north_america_&_non-spanish_caribbean":"#00e0bd",oceania:"#ff7f11"},R="#cccccc",B=Q&&Q.isoToRegion?Q.isoToRegion:{},H=[],Y={};for(const[me,M]of Object.entries(B)){const C=ke[String(M).toLowerCase()];C&&H.push(me,C),Y[M]||(Y[M]=[]),Y[M].push(me)}l.value=Y;const ne=H.length?["match",["get","iso_3166_1_alpha_3"],...H,R]:R,U=le.getLayer("language-family-pins-shadow")?"language-family-pins-shadow":le.getLayer("language-family-pins")?"language-family-pins":void 0,se=(()=>{var me,M,C;try{return!!((C=(M=(me=le.getContainer)==null?void 0:me.call(le))==null?void 0:M.classList)!=null&&C.contains("maplibregl-map"))}catch{return!1}})();se?(le.addSource("regions",{type:"geojson",data:{type:"FeatureCollection",features:[]}}),ar(`${cs(null)}/boundaries/world-adm0-web.geojson`).then(me=>me.json()).then(me=>{for(const C of me.features||[])C.properties&&C.properties.iso3&&(C.properties.iso_3166_1_alpha_3=C.properties.iso3);const M=le.getSource("regions");M&&M.setData(me)}).catch(me=>console.warn("[map-layers] region boundaries failed to load",me))):le.addSource("regions",{type:"vector",url:"mapbox://mapbox.country-boundaries-v1"}),le.addLayer({id:"regions-fill",type:"fill",source:"regions",...se?{}:{"source-layer":"country_boundaries"},paint:{"fill-color":ne,"fill-opacity":Z==="none"?.1:.7,"fill-antialias":!0,...vn(le,"fill"),"fill-opacity-transition":{duration:300}}},U),le.addLayer({id:"regions-border",type:"line",source:"regions",...se?{}:{"source-layer":"country_boundaries"},paint:{"line-color":ne,"line-width":1,"line-opacity":.9,...vn(le,"line")}},U),i.value.regions=!0,s.attachRegionEvents()}function d(Q,Z){const le=r();if(!le||!Q||!(Z!=null&&Z.length))return;f();const ke=Z.filter(ne=>{var se;return(ne.languageFamily||((se=ne._normalized)==null?void 0:se.languageFamily)||"Unknown")===Q});if(ke.length<2)return;const R=n(Q),B=[],H=15,Y=[...ke].sort((ne,U)=>(ne.longitude||ne.lng)-(U.longitude||U.lng));for(let ne=0;ne=",["get","peoplePraying"],wn],"#15803d",[">",["get","peoplePraying"],0],"#d97706","rgba(0,0,0,0)"]}const L=[0,5,2,6,4,7,5,9,6,12,7,14,8,18,10,25,12,32,14,40];function O(Q,Z){const le=["interpolate",["linear"],["zoom"]];for(let ke=0;ke",["get","peoplePraying"],0],le=q();if(!A.every(R=>Q.getLayer(R))){for(const R of A)if(Q.getLayer(R))try{Q.removeLayer(R)}catch{}Q.addLayer({id:y,type:"circle",source:"language-families",filter:Z,paint:{"circle-radius":O(L,1),"circle-color":le,"circle-blur":.3,"circle-opacity":.45,"circle-stroke-width":0,...vn(Q)}},"language-family-pins");for(const R of k)Q.addLayer({id:R,type:"circle",source:"language-families",filter:Z,paint:{"circle-radius":O(L,1),"circle-radius-transition":N,"circle-color":"rgba(0,0,0,0)","circle-blur":0,"circle-opacity":1,"circle-stroke-width":2.5,"circle-stroke-color":le,"circle-stroke-opacity":0,"circle-stroke-opacity-transition":N,...vn(Q)}},"language-family-pins")}}function K(){const Q=r();if(Q)for(const Z of A)Q.getLayer(Z)&&Q.removeLayer(Z)}function z(Q){const Z=r();if(!Z)return;const le=[">",["get","peoplePraying"],0],ke=Q?["all",le,Q]:le;for(const R of A)if(Z.getLayer(R))try{Z.setFilter(R,ke)}catch{}}function re(){const Q=r();if(Q){if(I(),p&&(cancelAnimationFrame(p),p=null),_=!0,Q.getLayer("language-family-pins"))try{Q.setLayoutProperty("language-family-pins","circle-sort-key",["case",[">=",["get","peoplePraying"],wn],1,[">",["get","peoplePraying"],0],1,3])}catch{}ye(Q),ge()}}function ge(){p&&(cancelAnimationFrame(p),p=null);const Q=++g;let Z=performance.now(),le=-1/0;function ke(R){if(!_||Q!==g)return;const B=r();if(!B||!A.some(Y=>B.getLayer(Y))){p=null;return}if(R-le"u")return;const Z=typeof Q.getContainer=="function"?Q.getContainer():null;if(Z)try{T=new IntersectionObserver(le=>{for(const ke of le)P=ke.isIntersecting},{threshold:0}),T.observe(Z)}catch{T=null,P=!0}}function Se(){if(T){try{T.disconnect()}catch{}T=null}P=!0}function xe(){_=!1,p&&(cancelAnimationFrame(p),p=null),Se();try{K();const Q=r();Q&&Q.getLayer("language-family-pins")&&Q.setLayoutProperty("language-family-pins","circle-sort-key",void 0)}catch{}}return{layersAdded:i,regionIsoMap:l,addLanguageFamilyLayer:c,addRegionsLayer:u,addFamilyConnectionLines:d,removeFamilyConnectionLines:f,updateLayerSource:S,removeLayer:w,hasLayer:$,setPaintProperty:b,mapEvents:s,startPrayerGlow:re,stopPrayerGlow:xe,syncGlowFilter:z,cleanup:m}}function vo(e,t,o){if(!Array.isArray(e))return e;switch(e[0]){case"get":return t==null?void 0:t[e[1]];case"literal":return e[1];case"feature-state":return o==null?void 0:o[e[1]];case"has":return t!=null&&e[1]in t;case"!has":return t==null||!(e[1]in t);case"!":return!vo(e[1],t,o);case"coalesce":{for(let a=1;a2){const s=Number(vo(e[2],t,o));return Number.isFinite(s)?s:0}return NaN}case"to-string":{const a=vo(e[1],t,o);return a==null?"":String(a)}case"to-boolean":return!!vo(e[1],t,o);case"slice":{const a=vo(e[1],t,o),r=vo(e[2],t,o),s=e.length>3?vo(e[3],t,o):void 0;return typeof a!="string"?"":s!=null?a.slice(r,s):a.slice(r)}default:return e}}function mr(e,t,o){if(e===!0)return!0;if(e===!1)return!1;if(!Array.isArray(e))return!!e;const n=e[0];if(n==="all"){for(let a=1;a"||n===">="||n==="<"||n==="<="){const a=typeof e[1]=="string"?t==null?void 0:t[e[1]]:vo(e[1],t,o),r=vo(e[2],t,o);switch(n){case"==":return a===r||a==null&&r==null;case"!=":return!(a===r||a==null&&r==null);case">":return a>r;case">=":return a>=r;case"<":return al!=null&&l!==!0),s=typeof(e==null?void 0:e.getFeatureState)=="function",i=l=>{if(!(!s||l==null))try{return e.getFeatureState({source:t,id:l})}catch{return}};for(const l of Di(e,t)){const c=l&&l.properties;if(!c)continue;const u=c[n],d=i(u);r.length&&!r.every(f=>mr(f,c,d))||u!=null&&a.add(String(u))}return a}const Lw=Object.freeze(Object.defineProperty({__proto__:null,matchesExpression:mr,readSourceFeatures:Di,resolveExpr:vo,selectedPinIds:Aw},Symbol.toStringTag,{value:"Module"})),rn={style:"mapbox://styles/mapbox/standard",center:[20,10],zoom:1.8,minZoom:.5,maxZoom:22,pitch:20,bearing:0,projection:"mercator",renderWorldCopies:!0};function Cw(e={}){const{getMap:t=()=>null,mapId:o="unknown",mapStore:n=null,regionsGeoData:a=null,defaultCenter:r=(rn==null?void 0:rn.center)||[20,10],defaultZoom:s=rn==null?void 0:rn.zoom}=e,i=()=>{try{return typeof window<"u"&&!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}};function l(v){const N=i(),P=(T={})=>{const q={};for(const L of["center","zoom","bearing","pitch","padding"])T[L]!==void 0&&(q[L]=T[L]);return v.jumpTo(q)};return{flyTo:T=>N?P(T):v.flyTo(T),easeTo:T=>N?P(T):v.easeTo(T),fitBounds:(T,q={})=>v.fitBounds(T,N?{...q,animate:!1,duration:0}:q)}}const c={speed:.5,essential:!0,curve:1.2};function u(v,N,P={x:150,y:0}){const T=t();if(!T)return v;try{const q=T.getCanvas(),L=q.width,O=q.height,I=T.project(v),K=window.devicePixelRatio||1,z=(P.x||0)*K,re=(P.y||0)*K,ge={x:I.x-z,y:I.y-re},ye=T.unproject(ge);return[ye.lng,ye.lat]}catch{return v}}function d(v,N=[]){const P=t();if(!P)return;let T=null,q=5;const L=N.filter(I=>I.languageFamily===v);if(L.length>0){let I=1/0,K=-1/0,z=1/0,re=-1/0;if(L.forEach(ge=>{ge.longitude&&ge.latitude&&(I=Math.min(I,ge.longitude),K=Math.max(K,ge.longitude),z=Math.min(z,ge.latitude),re=Math.max(re,ge.latitude))}),I!==1/0){T=[(I+K)/2,(z+re)/2];const ge=K-I,ye=re-z,Se=Math.max(ge,ye);Se>50?q=2:Se>20?q=3:Se>10?q=4:Se>5?q=5:q=6}}if(!T)return;const O=u(T);l(P).flyTo({center:O,zoom:q,...c})}function f(v){const N=t();if(!N)return;let P=null,T=4;const q=$w(v);if(q)P=q.center,T=q.zoom||4;else if(a!=null&&a.features){const O=a.features.find(I=>{var K,z;return((K=I.properties)==null?void 0:K.region)===v||((z=I.properties)==null?void 0:z.name)===v});O&&(P=S(O))}if(!P)return;const L=u(P);l(N).flyTo({center:L,zoom:T,...c})}function S(v){if(!v||!v.geometry)return null;const{type:N,coordinates:P}=v.geometry;let T=[];if(N==="Polygon"?T=P[0]||[]:N==="MultiPolygon"&&P.forEach(O=>{T=T.concat(O[0]||[])}),T.length===0)return null;let q=0,L=0;return T.forEach(O=>{q+=O[0],L+=O[1]}),[q/T.length,L/T.length]}function w(v,N={}){const P=t();if(!P)return;const T={center:v,...c,...N};l(P).flyTo(T)}function $(v,N,P={}){const T=t();if(!T||(v==null?void 0:v.longitude)==null||(v==null?void 0:v.latitude)==null)return;const q=N??Math.min(T.getZoom()+2,8);w([v.longitude,v.latitude],{...P,zoom:q})}function b(v,N={top:40,right:40,bottom:40,left:40},P={}){const T=t();if(!T||!v)return;const q=P.maxZoom??4,L=P.duration??900;l(T).fitBounds(v,{padding:N,maxZoom:q,duration:L,...c,...P})}function m(){const v=t();v&&l(v).flyTo({center:r,zoom:s,...c})}const p=80,_=800,g=5,y=5,h=110,k=1.2;function A(v){const N=v.filter(Number.isFinite).slice().sort((ke,R)=>ke-R),P=N.length;if(!P)return null;let T=-1,q=0;for(let ke=0;keT&&(T=B,q=ke)}const L=(q+1)%P,O=new Array(P);for(let ke=0;ke
0&&R((ke+180)%360+360)%360-180,ye=ge(z),Se=24,xe=360/Se,Q=new Array(Se).fill(0);for(const ke of N){let R=Math.floor(((ke+180)%360+360)%360/xe);R>=Se&&(R=Se-1),Q[R]++}let Z=0;for(let ke=1;keQ[Z]&&(Z=ke);return{center:ge(-180+(Z+.5)*xe),minLng:ye,maxLng:ye+(re-z),span:re-z}}function x(v){try{const N=v.getContainer&&v.getContainer().clientWidth||0,P=N>0?Math.log2(N/512):k,T=typeof v.getMinZoom=="function"?v.getMinZoom():P;return Math.max(T,P)}catch{return k}}function D(v,N,P,T){l(v).easeTo({center:[N,(P+T)/2],zoom:x(v),duration:_,essential:!0})}function W(v,N,P){if(P>h)return!0;try{const T=typeof v.cameraForBounds=="function"?v.cameraForBounds(N,{padding:p,maxZoom:g}):null;return T==null?!0:typeof T.zoom=="number"&&T.zoom<=x(v)+.05}catch{return!1}}function G(v,N={}){var Q,Z;const P=t();if(!P||!v)return;if(N.regionPolygonSource&&P.getSource(N.regionPolygonSource)){const le=Di(P,N.regionPolygonSource),ke=v.id??v.label,R=le.find(B=>{const H=(B==null?void 0:B.properties)||{};return H.region===ke||H.name===ke||H.id===ke});if(R){const B=[];let H=1/0,Y=-1/0;const ne=se=>{for(const me of se)Array.isArray(me[0])?ne(me):Number.isFinite(me[0])&&Number.isFinite(me[1])&&(B.push(me[0]),me[1]Y&&(Y=me[1]))};(Q=R.geometry)!=null&&Q.coordinates&&ne(R.geometry.coordinates);const U=A(B);if(U&&Number.isFinite(H)){const se=[[U.minLng,H],[U.maxLng,Y]];W(P,se,U.span)?D(P,U.center,H,Y):l(P).fitBounds(se,{padding:p,maxZoom:g,duration:_,essential:!0});return}}}const T=N.sourceId??"language-families";if(!P.getSource(T))return;const q=N.matchExpr??v.filter;if(!q)return;const L=Di(P,T);if(!L.length)return;const O=[];let I=1/0,K=-1/0,z=0,re=0,ge=0;const ye=new Set;for(const le of L){const ke=le==null?void 0:le.properties;if(!mr(q,ke))continue;const R=ke==null?void 0:ke.uniqueId;if(R!=null){if(ye.has(R))continue;ye.add(R)}const B=(Z=le.geometry)==null?void 0:Z.coordinates;if(!Array.isArray(B)||B.length<2)continue;const H=B[0],Y=B[1];!Number.isFinite(H)||!Number.isFinite(Y)||(z===0&&(re=H,ge=Y),O.push(H),YK&&(K=Y),z++)}if(z===0)return;if(z===1){l(P).flyTo({center:[re,ge],zoom:y,duration:_,essential:!0});return}const Se=A(O)||{center:0,minLng:0,maxLng:0,span:0},xe=[[Se.minLng,I],[Se.maxLng,K]];if(W(P,xe,Se.span)){D(P,Se.center,I,K);return}try{l(P).fitBounds(xe,{padding:p,maxZoom:g,duration:_,essential:!0})}catch{}}return{getOffsetCenter:u,slowFlyToFamily:d,slowFlyToRegion:f,flyTo:w,flyToCoords:$,fitBounds:b,resetView:m,zoomToLegendRow:G,calculateRegionCenterFromPolygon:S}}const Oi="#1a1a1a",qn="selected-pin-highlight";function Tw(e=Oi){const t=document.createElement("div");t.className="map-go-pin-wrapper";const o=`pinGrad-${Math.random().toString(36).slice(2,8)}`;return t.innerHTML=`
