From cd6148681ee9bc30404660f3fde7b80c1a6230a3 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 01:10:09 +0000 Subject: [PATCH] Rebuild the consumers main left stale (build owner, README rule 5) check:composite-freshness found stale on main: none; also rebuilt: all-people-groups big-picture cities-internet country-posters dashboard-plus-grid demo-map doxa-maps-spa doxa-research-map doxa-simple-map doxa-vision-card golden-path-check gospel-internet gospel-resources my-upg-100-list people-groups-grid plugin-studio pplr-data-maps prayer-walk-planner regions-dashboard research-dashboard research-map-plus-grid rudder-voice stack-demo upg-neighbor wall-of-people-groups. Rebuilt, tree + SRI regenerated; the landing precondition (fresh, one folder, SRI) passed in main-capture scan. --- .../country-posters/countries-map/index.html | 2 +- .../country-poster-wall/index.html | 2 +- .../country-posters-mfe/index.html | 2 +- .../country-posters/country-posters.js | 29 +-- public/dx-maps/doxa-maps-spa/doxa-maps-spa.js | 148 +------------ .../doxa-maps-spa/app/index.html | 2 +- .../doxa-maps-spa/doxa-maps-spa/index.html | 2 +- public/dx-maps/doxa-maps-spa/manifest.json | 36 +-- public/dx-maps/index.html | 2 +- public/dx-maps/manifest.json | 36 +-- .../my-upg-100-list/my-upg-100-list.js | 40 +--- .../my-upg-100-list/poster-wall/index.html | 2 +- .../my-upg-100-list/upg-100-list/index.html | 2 +- .../my-upg-100-list/upg-100-mfe/index.html | 2 +- public/dx-maps/plugin-studio/plugin-studio.js | 209 ++---------------- .../plugin-studio/plugin-studio/index.html | 2 +- .../plugin-studio/studio/index.html | 2 +- .../dx-maps/pplr-data-maps/pplr-data-maps.js | 7 - .../pplr-data-maps/pplr-data-maps/index.html | 2 +- .../region-dashboards/index.html | 2 +- .../regions-dashboard/regions-dashboard.js | 21 +- .../regions-dashboard/regions-list/index.html | 2 +- .../regions-dashboard/regions-mfe/index.html | 2 +- 23 files changed, 78 insertions(+), 478 deletions(-) diff --git a/public/dx-maps/country-posters/countries-map/index.html b/public/dx-maps/country-posters/countries-map/index.html index a9301deca..1a3c9df40 100644 --- a/public/dx-maps/country-posters/countries-map/index.html +++ b/public/dx-maps/country-posters/countries-map/index.html @@ -36,7 +36,7 @@ - + - + - + - + - + \n\n" + "script": "\n\n\n\n" } }, { @@ -202,7 +202,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -217,7 +217,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] @@ -317,7 +317,7 @@ "bundle": "doxa-maps-spa", "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js", - "integrity": "sha384-rLTDkqumxtv1rDoCpF7Gubflil8YbosAnEN741ue/oml2btEkGBJrHoLcERx3Iiw", + "integrity": "sha384-O6x4cLrNP72ZluOLN/4Ty5bjoJlMJ8ayem3KT6HQO9WryPqGyRpNvDkXYMj0KdR6", "elements": [ "doxa-maps-spa" ], @@ -344,7 +344,7 @@ "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { @@ -814,7 +814,7 @@ "bundle": "my-upg-100-list", "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "output": "dx-maps/my-upg-100-list/my-upg-100-list.js", - "integrity": "sha384-zRCUCInrjAg7FkO00XfsZOvzTzhYtbQRaSJZ35iU3moarmFRrf11f/DgtIMKk+mF", + "integrity": "sha384-kGg+6wCJyUDih0VGd9FQQ3DAcUN+1r50jARLUa2P+Hzg8ft5mOia5zh9pYSoZkKv", "elements": [ "my-upg-100-list-map" ], @@ -836,7 +836,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -851,7 +851,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -866,7 +866,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] @@ -938,7 +938,7 @@ "bundle": "plugin-studio", "scriptUrl": "./plugin-studio/plugin-studio.js", "output": "dx-maps/plugin-studio/plugin-studio.js", - "integrity": "sha384-Awv4926G0miJpm4VD0vO4rC4SeeUIRQ4ASqg0kFuJt01iSVScplcaa9UkxE0a7nu", + "integrity": "sha384-1KspSeIUO3xQaKKd+sTg2ezt/+gB/ua2U1g8flIGH+C64uOnzXw2yFLoqLXy8vl8", "elements": [ "plugin-studio" ], @@ -968,7 +968,7 @@ "scriptUrl": "./plugin-studio/plugin-studio.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { @@ -995,7 +995,7 @@ "bundle": "pplr-data-maps", "scriptUrl": "./pplr-data-maps/pplr-data-maps.js", "output": "dx-maps/pplr-data-maps/pplr-data-maps.js", - "integrity": "sha384-PrNoOug2lEoTkFJmTpjOY1uweCo/CV5JEiVs6qbHKQeUzv40KJ9m5zx2FB+z1di0", + "integrity": "sha384-QZeBhEtZRuC4DuMS/Q0IDxabpGv2oFqfEWbULE+DbrCEn+EZmqv1jIEM4d6LpEEd", "elements": [ "pplr-data-maps" ], @@ -1013,7 +1013,7 @@ "scriptUrl": "./pplr-data-maps/pplr-data-maps.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" }, "bundle": "pplr-data-maps" } @@ -1050,7 +1050,7 @@ "bundle": "regions-dashboard", "scriptUrl": "./regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js", - "integrity": "sha384-w6zwFLjOJosuTvBOW+4dL/wHKVKroj0nhIcmm1KjhVUMOhr6Mz1XVR/nonKyCSvn", + "integrity": "sha384-BKvyqmem1gAeYIpv+N7hUWezGfuToUwRjtpyN38YCa1TqdM4rA1zty9cNm8kpzOR", "elements": [ "regions-dashboard" ], @@ -1072,7 +1072,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -1087,7 +1087,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -1102,7 +1102,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] diff --git a/public/dx-maps/index.html b/public/dx-maps/index.html index 7cfa29856..294475374 100644 --- a/public/dx-maps/index.html +++ b/public/dx-maps/index.html @@ -19,6 +19,6 @@ - + diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index 87ee1a5b7..8d975f3c7 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -165,7 +165,7 @@ "bundle": "country-posters", "scriptUrl": "./country-posters/country-posters.js", "output": "dx-maps/country-posters/country-posters.js", - "integrity": "sha384-TGcGt/DMzMTUXCS01z2XJg/kDnpHTQXavyILjh/8PKU7rxGW+PBALzFWZGKmRJKA", + "integrity": "sha384-mkjfczD2UgdXg1PKUHLuf5fFMs3W7UjGtDKJ9KVTWnTJ0SoQk6LPWMy+ijlkOGsA", "elements": [ "country-posters-map" ], @@ -187,7 +187,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -202,7 +202,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -217,7 +217,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] @@ -317,7 +317,7 @@ "bundle": "doxa-maps-spa", "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js", - "integrity": "sha384-rLTDkqumxtv1rDoCpF7Gubflil8YbosAnEN741ue/oml2btEkGBJrHoLcERx3Iiw", + "integrity": "sha384-O6x4cLrNP72ZluOLN/4Ty5bjoJlMJ8ayem3KT6HQO9WryPqGyRpNvDkXYMj0KdR6", "elements": [ "doxa-maps-spa" ], @@ -344,7 +344,7 @@ "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { @@ -814,7 +814,7 @@ "bundle": "my-upg-100-list", "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "output": "dx-maps/my-upg-100-list/my-upg-100-list.js", - "integrity": "sha384-zRCUCInrjAg7FkO00XfsZOvzTzhYtbQRaSJZ35iU3moarmFRrf11f/DgtIMKk+mF", + "integrity": "sha384-kGg+6wCJyUDih0VGd9FQQ3DAcUN+1r50jARLUa2P+Hzg8ft5mOia5zh9pYSoZkKv", "elements": [ "my-upg-100-list-map" ], @@ -836,7 +836,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -851,7 +851,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -866,7 +866,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] @@ -938,7 +938,7 @@ "bundle": "plugin-studio", "scriptUrl": "./plugin-studio/plugin-studio.js", "output": "dx-maps/plugin-studio/plugin-studio.js", - "integrity": "sha384-Awv4926G0miJpm4VD0vO4rC4SeeUIRQ4ASqg0kFuJt01iSVScplcaa9UkxE0a7nu", + "integrity": "sha384-1KspSeIUO3xQaKKd+sTg2ezt/+gB/ua2U1g8flIGH+C64uOnzXw2yFLoqLXy8vl8", "elements": [ "plugin-studio" ], @@ -968,7 +968,7 @@ "scriptUrl": "./plugin-studio/plugin-studio.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { @@ -995,7 +995,7 @@ "bundle": "pplr-data-maps", "scriptUrl": "./pplr-data-maps/pplr-data-maps.js", "output": "dx-maps/pplr-data-maps/pplr-data-maps.js", - "integrity": "sha384-PrNoOug2lEoTkFJmTpjOY1uweCo/CV5JEiVs6qbHKQeUzv40KJ9m5zx2FB+z1di0", + "integrity": "sha384-QZeBhEtZRuC4DuMS/Q0IDxabpGv2oFqfEWbULE+DbrCEn+EZmqv1jIEM4d6LpEEd", "elements": [ "pplr-data-maps" ], @@ -1013,7 +1013,7 @@ "scriptUrl": "./pplr-data-maps/pplr-data-maps.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" }, "bundle": "pplr-data-maps" } @@ -1050,7 +1050,7 @@ "bundle": "regions-dashboard", "scriptUrl": "./regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js", - "integrity": "sha384-w6zwFLjOJosuTvBOW+4dL/wHKVKroj0nhIcmm1KjhVUMOhr6Mz1XVR/nonKyCSvn", + "integrity": "sha384-BKvyqmem1gAeYIpv+N7hUWezGfuToUwRjtpyN38YCa1TqdM4rA1zty9cNm8kpzOR", "elements": [ "regions-dashboard" ], @@ -1072,7 +1072,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -1087,7 +1087,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -1102,7 +1102,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] diff --git a/public/dx-maps/my-upg-100-list/my-upg-100-list.js b/public/dx-maps/my-upg-100-list/my-upg-100-list.js index 4f91f17be..622accb80 100644 --- a/public/dx-maps/my-upg-100-list/my-upg-100-list.js +++ b/public/dx-maps/my-upg-100-list/my-upg-100-list.js @@ -815,32 +815,19 @@ `+o.join(` `));return!0}function Pg(e){const t=[],o=n=>{for(const a of n)a.children&&a.children.length?o(a.children):t.push(a)};return o(e||[]),t}const xg=()=>({type:"FeatureCollection",features:[]});function gS(e,t){const o=Hn(e.selector,t),n=new Set;for(const a of t)a&&o.has(a.slug)&&a.country_code&&n.add(a.country_code);return n}function hS(e){return typeof e.id=="string"&&e.id.startsWith("asia-")}function yl(e,t){return{type:"Feature",properties:{...e.properties||{},zoneKey:t.zoneKey??t.id,zoneColor:t.color??t.zoneColor??"#888",zoneLabel:t.label,...t.id==="deaf"?{hatch:!0}:{}},geometry:e.geometry}}function fS(e,t){const{records:o=[],adm0:n,adm1Ind:a,adm1Chn:r}=t||{},s=xg();if(hS(e)){const l=[a,r].filter(Boolean);for(const u of l)for(const c of u.features||[])c.properties&&c.properties.listId===e.id&&s.features.push(yl(c,e));if(Array.isArray(e.adm0)&&e.adm0.length&&n){const u=new Set(e.adm0);for(const c of n.features||[])c.properties&&u.has(c.properties.iso3)&&s.features.push(yl(c,e))}return s}if(!e.selector)return s;const i=gS(e,o);if(n&&i.size)for(const l of n.features||[])l.properties&&i.has(l.properties.iso3)&&s.features.push(yl(l,e));return s}function mS(e,t){const o=xg(),n=new Map;for(const a of e){if(a.id==="deaf"){n.set(a.zoneKey??a.id,0);continue}const r=fS(a,t);n.set(a.zoneKey??a.id,r.features.length);for(const s of r.features)o.features.push(s)}return{tapestry:o,perZone:n}}const bS={"andean-caribbean":"#f9a51f","asia-china-tibet-autonomous-region":"#00f0c8","asia-china-yunnan-province":"#22ddff","asia-frontier-nas-a":"#ff1744","asia-india-andhra-pradesh":"#22ddff","asia-india-assam":"#22ddff","asia-india-chhattisgarh":"#536dfe","asia-india-gujarat":"#536dfe","asia-india-karnataka":"#536dfe","asia-india-kerala":"#2196ff","asia-india-madhya-pradesh":"#2196ff","asia-india-maharashtra":"#2196ff","asia-india-odisha":"#2196ff","asia-india-rajasthan":"#22ddff","asia-india-tamil-nadu":"#7c4dff","asia-india-uttarakhand":"#536dfe","asia-india-west-bengal":"#22ddff",brazil:"#f4c57b","central-africa":"#c20001",deaf:"#18ffff","east-africa":"#ef3410",europe:"#34cb74",laos:"#7c4dff","maghreb-egypt":"#602f74","mainland-se-asia-philippines":"#ff1744","middle-east-core":"#bc8bd0","oceania-indonesia":"#ee892f","southern-africa-islands":"#e75556",sudan:"#e69e93","uncovered-central-asia":"#ff8a00","uncovered-himalaya":"#ff6d00","uncovered-japan":"#ffc400","uncovered-mongolia":"#76ff03","uncovered-nas-a":"#ff1744","uncovered-nepal":"#ffea00","uncovered-sa-west":"#ff1744","uncovered-scatter":"#eeff41","west-africa":"#edcac9"};function yS(e,t){const o=bS[e];return typeof o=="string"&&o?o:t}const rs={"Andaman and Nicobar Islands":9,"Andhra Pradesh":81,"Arunāchal Pradesh":7,Assam:15,Bihār:18,Chandīgarh:1,Chhattīsgarh:24,Delhi:1,"Dādra and Nagar Haveli and Damān and Diu":1,Goa:5,Gujarāt:90,Haryāna:4,"Himāchal Pradesh":20,"Jammu and Kashmīr":33,Jhārkhand:9,Karnātaka:81,Kerala:72,Ladākh:6,Lakshadweep:1,"Madhya Pradesh":33,Mahārāshtra:54,Manipur:5,Meghālaya:2,Odisha:64,Puducherry:5,Punjab:4,Rājasthān:48,Sikkim:1,"Tamil Nādu":64,Telangāna:26,Tripura:11,"Uttar Pradesh":23,Uttarākhand:7,"West Bengal":30,"Gansu Province":3,"Guangxi Zhuang Autonomous Region":6,"Guizhou Province":34,"Hainan Province":3,"Heilongjiang Province":2,"Hunan Province":5,"Inner Mongolia Autonomous Region":3,"Qinghai Province":3,"Sichuan Province":12,"Tibet Autonomous Region":13,"Xinjiang Uyghur Autonomous Region":7,"Yunnan Province":61},Sg={ABW:1,AFG:21,AGO:10,ALB:1,AND:1,ARE:2,ARM:1,ASM:1,ATG:1,AZE:3,BEN:9,BFA:8,BGD:3,BGR:1,BHR:2,BHS:1,BIH:1,BLM:1,BLR:1,BMU:1,BOL:1,BRA:103,BRB:1,BRN:5,BTN:13,CAF:1,CHN:154,CIV:2,CMR:8,COD:9,COG:2,COK:1,COL:27,COM:3,CUB:1,CUW:1,CYM:1,CYP:1,CZE:1,DJI:1,DMA:1,DZA:17,ECU:1,EGY:3,ERI:8,ESP:1,ETH:29,FIN:1,FJI:1,FRO:1,FSM:1,GAB:2,GEO:1,GGY:1,GHA:1,GIN:13,GLP:1,GMB:3,GNB:3,GNQ:1,GRC:1,GRD:1,GUF:2,GUM:1,GUY:1,IDN:36,IRN:20,IRQ:8,ISL:1,ISR:4,JAM:1,JOR:3,JPN:6,KAZ:1,KEN:5,KGZ:2,KHM:1,KIR:1,KWT:1,LAO:95,LBN:4,LBR:2,LBY:15,LCA:1,LIE:1,LKA:1,LUX:1,MAR:4,MDV:1,MHL:1,MLI:13,MLT:1,MMR:7,MNE:1,MNG:1,MNP:1,MOZ:4,MRT:3,MSR:1,MUS:1,MWI:1,MYS:12,MYT:1,NAM:6,NCL:1,NER:2,NGA:38,NIU:1,NPL:34,NZL:1,OMN:7,PAK:24,PAN:1,PER:10,PHL:1,PLW:1,PNG:1,PRK:1,PRY:1,PSE:4,PYF:1,QAT:3,RUS:21,SAU:3,SDN:105,SEN:1,SHN:1,SLB:1,SLE:2,SMR:1,SOM:9,SSD:22,STP:1,SUR:2,SWE:2,SWZ:1,SYR:5,TCA:1,TCD:53,TGO:6,THA:8,TJK:3,TON:1,TUN:2,TUR:3,TZA:16,UGA:6,USA:3,UZB:1,VCT:1,VEN:6,VGB:1,VIR:1,VNM:16,VUT:1,WLF:1,WSM:1,YEM:9,ZAF:2,ZMB:6,ZWE:3},Ga={ABW:"Aruba",IND:"India",AFG:"Afghanistan",AGO:"Angola",ALB:"Albania",AND:"Andorra",ARE:"United Arab Emirates",ARM:"Armenia",ASM:"American Samoa",ATG:"Antigua and Barbuda",AZE:"Azerbaijan",BEN:"Benin",BFA:"Burkina Faso",BGD:"Bangladesh",BGR:"Bulgaria",BHR:"Bahrain",BHS:"Bahamas",BIH:"Bosnia and Herzegovina",BLM:"Saint Barthélemy",BLR:"Belarus",BMU:"Bermuda",BOL:"Bolivia",BRA:"Brazil",BRB:"Barbados",BRN:"Brunei",BTN:"Bhutan",CAF:"Central African Republic",CHN:"China",CIV:"Côte d'Ivoire",CMR:"Cameroon",COD:"DR Congo",COG:"Congo",COK:"Cook Islands",COL:"Colombia",COM:"Comoros",CUB:"Cuba",CUW:"Curaçao",CYM:"Cayman Islands",CYP:"Cyprus",CZE:"Czechia",DJI:"Djibouti",DMA:"Dominica",DZA:"Algeria",ECU:"Ecuador",EGY:"Egypt",ERI:"Eritrea",ESP:"Spain",ETH:"Ethiopia",FIN:"Finland",FJI:"Fiji",FRO:"Faroe Islands",FSM:"Micronesia",GAB:"Gabon",GEO:"Georgia",GGY:"Guernsey",GHA:"Ghana",GIN:"Guinea",GLP:"Guadeloupe",GMB:"Gambia",GNB:"Guinea-Bissau",GNQ:"Equatorial Guinea",GRC:"Greece",GRD:"Grenada",GUF:"French Guiana",GUM:"Guam",GUY:"Guyana",IDN:"Indonesia",IRN:"Iran",IRQ:"Iraq",ISL:"Iceland",ISR:"Israel",JAM:"Jamaica",JOR:"Jordan",JPN:"Japan",KAZ:"Kazakhstan",KEN:"Kenya",KGZ:"Kyrgyzstan",KHM:"Cambodia",KIR:"Kiribati",KWT:"Kuwait",LAO:"Laos",LBN:"Lebanon",LBR:"Liberia",LBY:"Libya",LCA:"Saint Lucia",LIE:"Liechtenstein",LKA:"Sri Lanka",LUX:"Luxembourg",MAR:"Morocco",MDV:"Maldives",MHL:"Marshall Islands",MLI:"Mali",MLT:"Malta",MMR:"Myanmar",MNE:"Montenegro",MNG:"Mongolia",MNP:"Northern Mariana Islands",MOZ:"Mozambique",MRT:"Mauritania",MSR:"Montserrat",MUS:"Mauritius",MWI:"Malawi",MYS:"Malaysia",MYT:"Mayotte",NAM:"Namibia",NCL:"New Caledonia",NER:"Niger",NGA:"Nigeria",NIU:"Niue",NPL:"Nepal",NZL:"New Zealand",OMN:"Oman",PAK:"Pakistan",PAN:"Panama",PER:"Peru",PHL:"Philippines",PLW:"Palau",PNG:"Papua New Guinea",PRK:"North Korea",PRY:"Paraguay",PSE:"Palestine",PYF:"French Polynesia",QAT:"Qatar",RUS:"Russia",SAU:"Saudi Arabia",SDN:"Sudan",SEN:"Senegal",SHN:"Saint Helena",SLB:"Solomon Islands",SLE:"Sierra Leone",SMR:"San Marino",SOM:"Somalia",SSD:"South Sudan",STP:"São Tomé and Príncipe",SUR:"Suriname",SWE:"Sweden",SWZ:"Eswatini",SYR:"Syria",TCA:"Turks and Caicos Islands",TCD:"Chad",TGO:"Togo",THA:"Thailand",TJK:"Tajikistan",TON:"Tonga",TUN:"Tunisia",TUR:"Turkey",TZA:"Tanzania",UGA:"Uganda",USA:"United States",UZB:"Uzbekistan",VCT:"Saint Vincent and the Grenadines",VEN:"Venezuela",VGB:"British Virgin Islands",VIR:"U.S. Virgin Islands",VNM:"Vietnam",VUT:"Vanuatu",WLF:"Wallis and Futuna",WSM:"Samoa",YEM:"Yemen",ZAF:"South Africa",ZMB:"Zambia",ZWE:"Zimbabwe"};function Ag(e){const t={...Ga};for(const o of e||[]){const n=o&&o.country_code,a=o&&o.country_code_label;n&&a&&(t[n]=a)}return t}function Lg(e,t={}){if(!e||typeof e!="object")return null;const o=t.nameMap||Ga;if(e.shapeName){const n=String(e.shapeName),a=Object.prototype.hasOwnProperty.call(rs,n)?rs[n]:null;return{key:"adm1:"+n,name:n,count:a,kind:"adm1"}}if(e.iso3){const n=String(e.iso3),a=o[n]||Ga[n]||n,r=Object.prototype.hasOwnProperty.call(Sg,n)?Sg[n]:null;return{key:"adm0:"+n,name:a,count:r,kind:"adm0"}}return null}function $S(e,t={}){const o=Array.isArray(e)?e:[],n=o.map(l=>l.name),a=o.reduce((l,u)=>l+(Number(u.count)||0),0),r=t&&typeof t.color=="string"&&t.color?t.color:"",s=n.join(", ")+" — "+a+" UUPG"+(r?" · "+r:""),i=o.map(l=>l.name+" "+(Number(l.count)||0)).join(", ");return s+` `+i}function qn(e){return String(e??"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().trim()}function _S(e){return qn(e).split(/[\s,;]+/).filter(Boolean)}function vS(e={}){const{records:t=[],leafZones:o=[],adm1Counts:n={},iso3Names:a={},countryNameMap:r=null}=e,s=[],i=new Set;for(const u of t){if(!u)continue;const c=u.slug;if(!c||i.has(c))continue;const d=Number(u.latitude),p=Number(u.longitude);if(!Number.isFinite(d)||!Number.isFinite(p))continue;const x=u.name||c;i.add(c),s.push({label:x,kind:"pg",target:{type:"pg",slug:c,lng:p,lat:d},_hay:qn(x)})}for(const u of o){if(!u)continue;const c=u.zoneKey||u.id,d=u.label||c;c&&s.push({label:d,kind:"zone",target:{type:"zone",zoneId:c},_hay:qn(d)})}for(const u of Object.keys(n))s.push({label:u,kind:"territory",target:{type:"territory",shapeName:u},_hay:qn(u)});const l=r||a;for(const u of Object.keys(a)){const c=l&&l[u]||a[u]||u;s.push({label:c,kind:"territory",target:{type:"territory",shapeName:u,iso3:!0},_hay:qn(c)})}return s}const wS={zone:0,territory:1,pg:2};function kS(e={}){const{records:t=[],leafZones:o=[],adm1Counts:n={},iso3Names:a={},countryNameMap:r=null,centroidFor:s=null}=e,i=[];for(const c of t)c&&i.push(c);const l=(c,d,p)=>!d||!Number.isFinite(d[0])||!Number.isFinite(d[1])?null:{name:c,slug:p.__synthSlug,latitude:d[1],longitude:d[0],...p};for(const c of o){if(!c)continue;const d=c.zoneKey||c.id,p=c.label||d;if(!d)continue;const x=typeof s=="function"?s(f=>f&&f.properties&&f.properties.zoneKey===d):null,S=l(p,x,{__upgKind:"zone",__zoneId:d,__synthSlug:`__zone__${d}`});S&&i.push(S)}for(const c of Object.keys(n)){const d=typeof s=="function"?s(x=>x&&x.properties&&x.properties.shapeName===c):null,p=l(c,d,{__upgKind:"territory",__shapeName:c,__synthSlug:`__terr__${c}`});p&&i.push(p)}const u=r||a;for(const c of Object.keys(a)){const d=u&&u[c]||a[c]||c,p=typeof s=="function"?s(S=>S&&S.properties&&S.properties.iso3===c):null,x=l(d,p,{__upgKind:"territory",__shapeName:c,__synthSlug:`__terr__${c}`});x&&i.push(x)}return i}function Cg(e,t,o={}){const n=o.limit??8,a=_S(t);if(!a.length)return[];const r=a[0],s=[];for(const i of e){let l=!0;for(const d of a)if(!i._hay.includes(d)){l=!1;break}if(!l)continue;const u=i._hay.startsWith(r)?0:1,c=i._hay===qn(t)?-1:0;s.push({e:i,starts:u,exact:c,kr:wS[i.kind]??9,len:i._hay.length})}return s.sort((i,l)=>i.exact-l.exact||i.starts-l.starts||i.kr-l.kr||i.len-l.len),s.slice(0,n).map(i=>i.e)}const PS={class:"upg-root"},xS={key:0,class:"upg-map-err"},SS={class:"upg-legend-desktop-slot"},AS={class:"upg-legend-mobile-slot"},LS={class:"upg-detail-desktop-slot"},CS={key:4,class:"upg-hud"},TS={key:0,class:"upg-hud-head"},ES={class:"upg-hud-total"},RS={key:1,class:"upg-hud-names"},NS={key:2,class:"upg-hud-actions"},MS=["disabled"],IS=["disabled"],FS={key:3,class:"upg-hud-flash"},OS={class:"upg-status"},$l="upg-search",Tg=1,DS="people-groups",Eg=8,_l=123,GS=Object.freeze(Object.defineProperty({__proto__:null,default:{__name:"upg-100-list",setup(e){const t=Fu(()=>yt(()=>Promise.resolve().then(()=>cx),void 0)),o=He("mapboxToken",be("")),n=He("profileConfig",be(null)),a=tS(n),r=a==="maplibre",s=ee(()=>{var N;return((N=n==null?void 0:n.value)==null?void 0:N.search)===!1?!1:a==="mapbox"}),i=ee(()=>{var H;const N=(H=n.value)==null?void 0:H.edgeScrollAffordance;return N==null?!0:!(N===!1||N==="false")}),l=He("dataStore",null),u=He("uiStore",null),c=be(null),d=be("loading…"),p=be(""),x=xn([]),S=be(null),f=xn(null),g=be(!1),m=K1("my-upg-100-list");m.theme.value="light",W1(m);const h=be([]),y=ee(()=>h.value.reduce((N,H)=>N+(Number(H.count)||0),0)),b=ee(()=>h.value.length),$=be("");let C=null;const P=be(!1);function E(N){const H=N===void 0?!P.value:!!N;return H===P.value||(P.value=H,T&&(T.getCanvas().style.cursor=""),_()),H}function v(){E()}nt([P,g],()=>{jt(()=>rt())});function j(N){if(!N)return;const H=h.value,Y=H.findIndex(ge=>ge.key===N.key);Y>=0?h.value=H.filter((ge,Ae)=>Ae!==Y):h.value=[...H,N],_(),$.value=""}const oe=be(""),Z=be("");function z(N){const H=/^#?([0-9a-fA-F]{6})$/.exec(String(N||"").trim());if(!H)return;const Y="#"+H[1].toLowerCase();oe.value=oe.value===Y?"":Y,_()}const ue=be(null),F=[{id:"upg100Region",label:"Region",info:"Region — sort the UPG-100 lists by world area (Africa, India, Middle East, Deaf, …). Counts are the UUPGs and population summed across every list beneath it."},{id:"upg100Zone",label:"UPG-100 Lists",info:"UPG-100 Lists — each one is a prayer list of the unreached people groups in an area, and is what the map paints and colours. Every list prints as its own packet."}];let I=[],T=null,M=null,G=[],W=null,ne=null,le=null;const we=typeof window<"u"&&window.MAP_APP_API_URL||void 0||"",{locale:Pe,t:Ee}=Pt(),de=ee(()=>Ee("legend.title.upg100List")),he=ee(()=>Ee("search.upg100Placeholder"));Lt(`.upg-root{position:absolute;inset:0;background:#0a1410;color:#e5e7eb;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}.upg-map{position:absolute;inset:0}.upg-map-err{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);z-index:1;pointer-events:none;text-align:center;padding:0 24px;font:13px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#9aa7b8}.upg-map-err strong{display:block;font-size:14px;color:#cbd5e1;margin-bottom:4px}.map-scroll-edge{position:absolute;top:0;bottom:0;width:40px;z-index:2;touch-action:pan-y;pointer-events:auto;background:transparent}.map-scroll-edge--left{left:0}.map-scroll-edge--right{right:0}.upg-legend-desktop-slot{--stl-top:8px}.upg-legend-mobile-slot{display:none}@media(max-width:767px){.upg-legend-mobile-slot{display:block}.upg-legend-desktop-slot{display:none}.upg-detail-desktop-slot{display:none}}.upg-status{position:absolute;bottom:10px;right:10px;z-index:5;font:10px/1 ui-monospace,monospace;color:#9aa7b8;background:rgba(10,14,21,.82);padding:6px 10px;border-radius:8px}.upg-detail-panel{position:absolute;top:60px;right:8px;bottom:10px;width:340px;max-width:calc(100vw - 16px);z-index:6;background:#fff;border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.45);overflow:hidden;display:flex;flex-direction:column;animation:upgPanelIn .18s ease}.upg-detail-panel.dark{background:#1a1a2e}@keyframes upgPanelIn{from{transform:translateX(16px);opacity:0}to{transform:translateX(0);opacity:1}}@media(max-width:480px){.upg-detail-panel{top:auto;left:8px;right:8px;width:auto;height:55vh}}.upg-hud{position:absolute;bottom:34px;right:10px;z-index:6;min-width:150px;font:11px/1.35 ui-monospace,monospace;color:#e5e7eb;background:rgba(10,20,16,.92);border:1px solid rgba(110,231,183,.35);border-radius:10px;padding:8px 10px;box-shadow:0 4px 16px rgba(0,0,0,.4)}.upg-hud-head{display:flex;align-items:baseline;gap:6px;white-space:nowrap}.upg-hud-total{font-size:15px;font-weight:700;color:#6ee7b7}.upg-hud-band{margin-left:auto;font-size:9px;color:#9aa7b8}.upg-hud-band.ok{color:#6ee7b7}.upg-hud-names{margin-top:5px;max-height:84px;overflow:auto;font-size:10px;color:#cbd5e1;line-height:1.45;word-break:break-word}.upg-hud-actions{display:flex;gap:6px;margin-top:7px}.upg-hud-btn{flex:1;cursor:pointer;border:1px solid rgba(110,231,183,.4);background:rgba(16,185,129,.18);color:#d1fae5;font:12px/1 ui-monospace,monospace;padding:0 10px;min-height:40px;border-radius:8px}.upg-hud-btn:hover{background:rgba(16,185,129,.32)}.upg-hud-btn.clear{background:rgba(148,163,184,.12);border-color:rgba(148,163,184,.4);color:#cbd5e1}.upg-hud-flash{margin-top:5px;font-size:9px;color:#6ee7b7;min-height:11px}.upg-hud-hint{margin-top:4px;font-size:9px;color:#64748b}.upg-hud-swatches{display:flex;gap:6px;margin-top:7px;align-items:center;flex-wrap:wrap}.upg-swatch{width:40px;height:40px;border-radius:9px;cursor:pointer;padding:0;border:1px solid rgba(255,255,255,.3)}.upg-swatch.active{outline:2px solid #fff;outline-offset:1px}.upg-hex{width:84px;min-height:40px;background:rgba(148,163,184,.12);border:1px solid rgba(148,163,184,.4);color:#cbd5e1;font:12px/1 ui-monospace,monospace;padding:0 8px;border-radius:8px}@media(max-width:480px){.upg-hud{left:8px;right:8px;min-width:0;bottom:30px;max-height:48vh;overflow:auto}}.map-toolbar .mcb.upg-batch-on{background:#10b981!important;color:#04241a!important;box-shadow:0 0 0 2px rgba(52,211,153,.45),0 1px 4px rgba(0,0,0,0.2)!important}.map-toolbar .mcb.upg-batch-on.dark{border-color:#34d399!important}.upg-batch-row{position:relative;background:rgba(16,185,129,.16)!important;opacity:1!important;box-shadow:inset 3px 0 0 0 #10b981}.upg-batch-row .stl-name{color:#065f46!important;font-weight:700}.stl-panel[data-theme="dark"] .upg-batch-row .stl-name,.upg-batch-row.dark .stl-name{color:#6ee7b7!important}.upg-batch-row .stl-dot{box-shadow:0 0 0 2px #10b981}.mapboxgl-ctrl-top-left{top:12px!important;left:8px!important;width:380px!important;max-width:380px!important;z-index:1200!important}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{margin:0!important;float:none!important}.stl-panel{--stl-top:8px!important}.upg-root:has(.mapboxgl-ctrl-geocoder) .stl-panel{--stl-top:58px!important}[dir="rtl"] .upg-detail-panel{right:auto!important;left:8px!important}.dg-main{font:13px/1.3 ui-monospace,monospace}.dg-meta{margin-top:2px;font-size:11px;color:#475569;display:flex;flex-wrap:wrap;gap:8px}.dg-field strong{font-weight:700}.dg-section-header-item{padding:4px 8px;font:10px/1.2 ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;pointer-events:none}`);function se(N){const H=[];for(const Y of N)H.push(Y.zoneKey,yS(Y.zoneKey,Y.color));return["match",["get","zoneKey"],...H,"#9ca3af"]}function Le(){if(T.getSource("tapestry")&&T.getLayer("tapestry-fill")&&T.getLayer("tapestry-line"))return;T.getSource("tapestry")||T.addSource("tapestry",{type:"geojson",data:M});const N=g.value?.45:.3,H=g.value?.65:.45;if(T.getLayer("tapestry-fill")||T.addLayer({id:"tapestry-fill",type:"fill",source:"tapestry",paint:{"fill-color":W,"fill-opacity":["case",["==",["get","zoneKey"],"deaf"],N,H]}}),T.getLayer("tapestry-line")||T.addLayer({id:"tapestry-line",type:"line",source:"tapestry",paint:{"line-color":W,"line-width":1.2,"line-opacity":.9}}),tn){const Y=tn;jt(()=>{tn===Y&&Ha(Y)})}}function V(){!T||!T.getSource("tapestry")||T.getLayer("upg-sel-fill")||(T.addLayer({id:"upg-sel-fill",type:"fill",source:"tapestry",filter:["boolean",!1],paint:{"fill-color":"#f59e0b","fill-opacity":.28}}),T.addLayer({id:"upg-sel-line",type:"line",source:"tapestry",filter:["boolean",!1],paint:{"line-color":"#fbbf24","line-width":2.4,"line-opacity":.95}}))}function me(){const N=[],H=[],Y=[];for(const Ae of h.value)Ae.kind==="adm1"?N.push(Ae.name):Ae.kind==="adm0"?H.push(Ae.key.slice(5)):Ae.kind==="zone"&&Y.push(Ae.key.slice(5));const ge=[];return N.length&&ge.push(["in",["get","shapeName"],["literal",N]]),H.length&&ge.push(["in",["get","iso3"],["literal",H]]),Y.length&&ge.push(["in",["get","zoneKey"],["literal",Y]]),ge.length?ge.length===1?ge[0]:["any",...ge]:["boolean",!1]}function _(){if(rt(),!T||!T.getLayer("upg-sel-fill"))return;const N=P.value?me():["boolean",!1];T.setFilter("upg-sel-fill",N),T.setFilter("upg-sel-line",N);const H=oe.value;T.setPaintProperty("upg-sel-fill","fill-color",H||"#f59e0b"),T.setPaintProperty("upg-sel-fill","fill-opacity",H?.55:.28),T.setPaintProperty("upg-sel-line","line-color",H||"#fbbf24")}let A=null,L=!1;function K(){if(!(!T||!T.getLayer("tapestry-fill"))){if(A)try{T.off("click","tapestry-fill",A)}catch{}A=N=>{const H=N&&N.features&&N.features[0];if(H&&P.value){const Y=Lg(H.properties,{nameMap:C});if(!Y){console.warn("[batch-select] clicked feature has no shapeName/iso3",H.properties);return}Y.count==null&&console.warn("[batch-select] no UUPG count for territory",Y.name,H.properties),j(Y)}},T.on("click","tapestry-fill",A),L||(T.on("mouseenter","tapestry-fill",()=>{T&&(T.getCanvas().style.cursor=P.value?"crosshair":"")}),T.on("mouseleave","tapestry-fill",()=>{T&&(T.getCanvas().style.cursor="")}),L=!0)}}function re(){h.value=[],$.value="",oe.value="",Z.value="",_()}function ie(N){if(l&&typeof l.cacheSourceData=="function"){const H=kS({records:N,leafZones:G,adm1Counts:rs,iso3Names:Ga,countryNameMap:C,centroidFor:Y=>{const ge=te(Y);return ge?[(ge[0][0]+ge[1][0])/2,(ge[0][1]+ge[1][1])/2]:null}});l.cacheSourceData($l,{normalizedData:H})}I=vS({records:N,leafZones:G,adm1Counts:rs,iso3Names:Ga,countryNameMap:C}),typeof window<"u"&&(window.__UPG_SEARCH__={size:()=>I.length,counts:()=>{const H={pg:0,zone:0,territory:0};for(const Y of I)H[Y.kind]=(H[Y.kind]||0)+1;return H},query:H=>Cg(I,H,{limit:Eg}).map(Y=>({label:Y.label,kind:Y.kind,target:Y.target})),select:H=>{const Y=Cg(I,H,{limit:Eg})[0];return Y?(w(Y.target),{label:Y.label,kind:Y.kind,target:Y.target}):null},feedSize:()=>{const H=l&&l.sources&&l.sources[$l];return H&&Array.isArray(H.features)&&H.features.length||0},localGeocoder:H=>{const Y=ue.value&&ue.value.geocoder,ge=Y&&Y.options&&Y.options.localGeocoder;return ge?ge(H).map(Ae=>Ae&&Ae.place_name):null}})}function pe(N){const H=N&&N.properties||{},Y=H.__upgKind;if(Y==="zone")B(H.__zoneId);else if(Y==="territory")X(H.__shapeName);else{const ge=N&&N.geometry,Ae=ge&&Array.isArray(ge.coordinates)?ge.coordinates:null;Ae&&Number.isFinite(Ae[0])&&Number.isFinite(Ae[1])&&T&&T.flyTo({center:[Ae[0],Ae[1]],zoom:6,duration:800}),U(H.slug)}}function fe(N){if(!N||!T)return;const H=new Set(N.memberIds||[]);if(!H.size)return;let Y=[];try{Y=T.querySourceFeatures("upg").filter(Je=>{const ke=Je.properties||{};return H.has(ke.slug)||H.has(ke.id)||H.has(ke.peopleGroupId)})}catch{return}if(!Y.length)return;let ge=180,Ae=90,je=-180,Ve=-90,Ge=!1;for(const Je of Y){const ke=Je.geometry&&Je.geometry.coordinates;!Array.isArray(ke)||!Number.isFinite(ke[0])||!Number.isFinite(ke[1])||(ke[0]je&&(je=ke[0]),ke[1]Ve&&(Ve=ke[1]),Ge=!0)}Ge&&T.fitBounds([[ge,Ae],[je,Ve]],{padding:60,duration:800,maxZoom:6})}function k(){Yn(null),u&&typeof u.selectPeopleGroup=="function"&&u.selectPeopleGroup(null)}function w(N){!N||!T||(N.type==="pg"?(Number.isFinite(N.lng)&&Number.isFinite(N.lat)&&T.flyTo({center:[N.lng,N.lat],zoom:6,duration:800}),U(N.slug)):N.type==="zone"?B(N.zoneId):N.type==="territory"&&X(N.shapeName))}function U(N){if(!N||!u||typeof u.selectPeopleGroup!="function")return;const H=T&&T.getSource&&T.getSource("upg"),ge=(H&&H._data&&H._data.features||[]).find(Ae=>Ae.properties&&Ae.properties.slug===N);ge&&u.selectPeopleGroup(ge)}function B(N){if(!N||!T||!M)return;const H=te(Y=>Y.properties&&Y.properties.zoneKey===N);H&&T.fitBounds(H,{padding:40,duration:800,maxZoom:6})}function X(N){if(!N||!T||!M)return;const H=te(Y=>{const ge=Y.properties||{};return ge.shapeName===N||ge.iso3===N});H&&T.fitBounds(H,{padding:40,duration:800,maxZoom:6})}function te(N){let H=180,Y=90,ge=-180,Ae=-90,je=!1;const Ve=Ge=>{if(typeof Ge[0]=="number"){const[Je,ke]=Ge;Jege&&(ge=Je),keAe&&(Ae=ke),je=!0;return}for(const Je of Ge)Ve(Je)};for(const Ge of M.features)N(Ge)&&Ve(Ge.geometry.coordinates);return je?[[H,Y],[ge,Ae]]:null}function D(N){const H=new Set,Y=ge=>{ge.children&&ge.children.length?ge.children.forEach(Y):H.add(ge.zoneKey??ge.id)};return Y(N),H}let J=null;function ve(N){if(![...D(N)].length)return;const Y=[],ge=Ge=>{Ge.children&&Ge.children.length?Ge.children.forEach(ge):Y.push(Ge)};ge(N);const Ae=h.value,je=new Set(Ae.filter(Ge=>Ge.kind==="zone").map(Ge=>Ge.key));if(Y.every(Ge=>je.has("zone:"+(Ge.zoneKey??Ge.id)))){const Ge=new Set(Y.map(Je=>"zone:"+(Je.zoneKey??Je.id)));h.value=Ae.filter(Je=>!Ge.has(Je.key))}else{const Ge=Y.filter(Je=>!je.has("zone:"+(Je.zoneKey??Je.id))).map(Je=>({key:"zone:"+(Je.zoneKey??Je.id),name:Je.label||Je.id,count:Number(Je.count)||0,kind:"zone"}));h.value=[...Ae,...Ge]}_(),$.value=""}function Re(){const N=new Set;for(const H of h.value)H.kind==="zone"&&N.add(H.key.slice(5));return N}function qe(){const N=new Map,H=Y=>{const ge=D(Y);Y.label&&N.set(Y.label,ge),Y.children&&Y.children.length&&Y.children.forEach(H)};for(const Y of x.value)H(Y);return N}function rt(){if(typeof document>"u")return;const N=document.querySelector("my-upg-100-list-map"),Y=(N&&N.shadowRoot||document).querySelectorAll(".stl-row");if(!Y.length)return;if(!P.value){Y.forEach(Ve=>Ve.classList.remove("upg-batch-row"));return}const ge=Re(),Ae=qe(),je=g.value;Y.forEach(Ve=>{const Ge=Ve.querySelector(".stl-name"),Je=Ge?Ge.textContent.trim():"",ke=Je&&Ae.get(Je),Ue=!!(ke&&ke.size&&[...ke].every(it=>ge.has(it)));Ve.classList.toggle("upg-batch-row",Ue),Ve.classList.toggle("dark",Ue&&je)})}let Xe=null;function Ot(){if(typeof document>"u"||Xe)return;const N=document.querySelector("my-upg-100-list-map"),Y=(N&&N.shadowRoot||document).querySelector(".stl-rows");Y&&(Xe=new MutationObserver(()=>{requestAnimationFrame(()=>rt())}),Xe.observe(Y,{childList:!0,subtree:!0}))}zt("onSemanticTreeSelect",Yn),zt("onLegendExport",Wt);async function Wt(N){const H=S.value;if(!H)return;if(N==="packet"){await xe(H);return}const Y=Me().find(ge=>ge.id===H)||{id:H};await Se.printPoster(Y)}const Se=ap({records:N=>ot(N),lang:()=>$n(),label:N=>(N==null?void 0:N.label)||(N==null?void 0:N.id)||"",assetsBase:()=>zn(n.value),downloadPrefix:"doxa-upg-100"});nt(Se.exportState,N=>{if(!N){/packet/i.test(d.value)&&(d.value="");return}if(N.phase==="error"){Q(Ee("messages.packetFailed",{reason:N.message}),4e3);return}d.value=N.phase==="done"?"":`${N.message}…`});async function ot(N){if(!we)throw new Error("no API configured");const Y=await fetch(`${we}/api/people-groups/list?fields=slug,name,country_code,population,religion,image_url&lang=${$n()}`,{cache:"no-store"});if(!Y.ok)throw new Error(`people-groups fetch failed (${Y.status})`);const ge=Ea(await Ca(Ra(await Y.json()),n));let Ae;if(N.selector&&N.selector.type==="pg_slugs")Ae=new Set(N.selector.values||[]);else{const{evaluate:je}=await yt(async()=>{const{evaluate:Ve}=await Promise.resolve().then(()=>Si);return{evaluate:Ve}},void 0);Ae=new Set(je(N.selector,ge))}return ge.filter(je=>Ae.has(je.slug)).sort((je,Ve)=>String(je.name).localeCompare(String(Ve.name),$n()))}async function Vt(N,H){try{const Y=zn(n.value),ge=await(await fetch(`${Y}/posters/${N}.html`,{cache:"force-cache"})).text(),Ae=ge.match(//);return Ae?`
${Ae[0]}
`:""}catch{return""}}function O(N,H,Y){N.value=H,setTimeout(()=>{N.value===H&&(N.value="")},Y)}const Q=(N,H)=>O(d,N,H);async function xe(N){const H=Me().find(je=>je.id===N);if(!H)return;const[{createPacketRenderer:Y},ge]=await Promise.all([yt(()=>Promise.resolve().then(()=>Pl),void 0),yt(()=>Promise.resolve().then(()=>Ba),void 0).then(je=>je.default||je)]),Ae=Y({strings:ge,lang:$n()});await Se.printPacket(H,{mapSvg:await Vt(N,Ae),funnel:await mt()})}function Ce(){return pp(Ur(n))}function Me(){const N=Ce();return[...N.lists||[],...N.asia_lists||[],...N.uncovered_lists||[]]}async function mt(){var N;try{const H=(await yt(async()=>{const{default:je}=await Promise.resolve().then(()=>AA);return{default:je}},void 0)).default;if(!H||!Array.isArray(H.steps)||!H.steps.length)return null;const Y=Ur(n),ge=Number(H.steps[H.steps.length-1].groups)||0;if(Y===La)return{...H,listCount:Me().length,listTotal:ge};let Ae=0;try{const je=zn(n.value),Ve=await fetch(`${je}/people-groups/lists/${Y}.json`);if(Ve.ok){const Ge=await Ve.json();Ae=Number((N=Ge==null?void 0:Ge.counts)==null?void 0:N.doxa)||(Array.isArray(Ge==null?void 0:Ge.slugs)?Ge.slugs.length:0)}}catch{}return{...H,listTotal:Ae,listId:Y,listLabel:(tp(Y)||{}).label||Y}}catch{return null}}const Ne=be(!1);function Mt(){const N=h.value.filter(Y=>Y.kind==="zone").map(Y=>String(Y.key).replace(/^zone:/,"")),H=new Map(Me().map(Y=>[Y.id,Y]));return N.map(Y=>H.get(Y)).filter(Boolean)}let xt=null;async function oo(){if(!xt){const N=await yt(()=>Promise.resolve().then(()=>Ba),void 0).then(H=>H.default||H);xt={...N.en||{},...N[$n()]||{}}}return xt}function is(N,H){return N?String(N).replace(/\{(\w+)\}/g,(Y,ge)=>H[ge]!=null?String(H[ge]):Y):null}async function LA(){const N=Mt();if(!N.length)throw new Error("nothing selected");if(!we)throw new Error("no API configured");const Y=await fetch(`${we}/api/people-groups/list?fields=slug,name,country_code,population,religion,image_url&lang=${$n()}`,{cache:"no-store"});if(!Y.ok)throw new Error(`people-groups fetch failed (${Y.status})`);const ge=Ea(await Ca(Ra(await Y.json()),n)),{evaluate:Ae}=await yt(async()=>{const{evaluate:Ue}=await Promise.resolve().then(()=>Si);return{evaluate:Ue}},void 0),je=new Set;for(const Ue of N)if(Ue.selector&&Ue.selector.type==="pg_slugs")for(const it of Ue.selector.values||[])je.add(it);else for(const it of Ae(Ue.selector,ge))je.add(it);const Ve=N.map(Ue=>Ue.label||Ue.id),Ge=await oo(),Je=(Ue,it)=>is(Ge.zone_join,{a:Ue,b:it})??`${Ue} + ${it}`;return{id:"selection",label:Ve.length<=3?Ve.reduce(Je):is(Ge.zone_join_more,{a:Ve.slice(0,2).reduce(Je),n:Ve.length-2})??`${Ve.slice(0,2).join(" + ")} +${Ve.length-2} more`,count:je.size,selector:{type:"pg_slugs",values:[...je]}}}async function CA(){if(!Ne.value){Ne.value=!0;try{const N=await LA(),[{createPacketRenderer:H},Y]=await Promise.all([yt(()=>Promise.resolve().then(()=>Pl),void 0),yt(()=>Promise.resolve().then(()=>Ba),void 0).then(Ge=>Ge.default||Ge)]),ge=H({strings:Y,lang:$n()}),Ae=Mt(),je=Ae.length===1?await Vt(Ae[0].id,ge):"",Ve=await mt();await Se.printPacket(N,{mapSvg:je,funnel:Ve&&Ae.length===1?Ve:Ve?{...Ve,listCount:0}:null})}catch(N){Q(Ee("messages.selectionPacketFailed",{reason:String((N==null?void 0:N.message)||N).slice(0,90)}),4e3)}finally{Ne.value=!1}}}async function TA(){if(!Ne.value){Ne.value=!0;try{const N=Mt();if(!N.length)throw new Error("nothing selected");if(N.length>1){Q(Ee("messages.posterOneTerritory",{count:N.length}),5e3);return}await Se.printPoster(N[0])}catch(N){Q(Ee("messages.selectionPosterFailed",{reason:String((N==null?void 0:N.message)||N).slice(0,90)}),4e3)}finally{Ne.value=!1}}}function $n(){const N=Pe&&(Pe.value??Pe);return typeof N=="string"&&N||"en"}function Yn(N){if(!T||!T.getLayer("tapestry-fill"))return!1;if(P.value)return N&&ve(N),!0;if(!N)return J=null,S.value=null,T.setFilter("tapestry-fill",null),T.setFilter("tapestry-line",null),T.setPaintProperty("upg-pins","circle-opacity",1),!0;J=N;const H=[...D(N)];S.value=H.length===1?H[0]:N.id??null;const Y=["in",["get","zoneKey"],["literal",H]];T.setFilter("tapestry-fill",Y),T.setFilter("tapestry-line",Y),T.getLayer("upg-pins")&&T.setPaintProperty("upg-pins","circle-opacity",["case",["in",["get","zoneKey"],["literal",H]],.95,.05]);const ge=te(Ae=>H.includes(Ae.properties.zoneKey));return ge&&T.fitBounds(ge,{padding:40,duration:700,maxZoom:6}),!0}function xl(){T&&(typeof le=="function"&&le(),M&&(Le(),V(),K(),_(),S.value&&T.getLayer("tapestry-fill")&&Yn(J)))}function EA(){T&&(g.value=!g.value,m.theme.value=g.value?"dark":"light",T.setStyle(g.value?fl("ink",a).style||"mapbox://styles/mapbox/dark-v11":fl("paper",a).style||"mapbox://styles/mapbox/light-v11"),T.once("style.load",xl))}function Qg(){!T||!T.getLayer("upg-pins")||(T.on("click","upg-pins",N=>{const H=N&&N.features&&N.features[0];H&&u&&typeof u.selectPeopleGroup=="function"&&u.selectPeopleGroup(H)}),T.on("mouseenter","upg-pins",()=>{T&&(T.getCanvas().style.cursor="pointer")}),T.on("mouseleave","upg-pins",()=>{T&&(T.getCanvas().style.cursor="")}))}let Ua=null,tn,Jn=null;function ls(N,H){var Y,ge,Ae;try{const je=(Ae=(ge=(Y=c.value)==null?void 0:Y.getRootNode)==null?void 0:ge.call(Y))==null?void 0:Ae.host;if(!je)return;je.setAttribute("data-doxa-select-zone-state",N),H&&je.setAttribute("data-doxa-select-zone-applied",String(H))}catch{}}function Ha(N){if(!N)return Yn(null),tn=void 0,ls("cleared",""),!0;const H=eh(x.value,N);return H?Yn(H)?(tn=void 0,ls("applied",N),!0):(tn=N,ls("applied-but-no-selection",N),!1):(tn=N,ls("unresolved",N),!1)}function RA(N){var Y;const H=((Y=N==null?void 0:N.detail)==null?void 0:Y.listId)??null;Ha(H)}function eh(N,H){for(const Y of N||[]){if((Y.zoneKey||Y.id)===H)return Y;const ge=Y.children&&eh(Y.children,H);if(ge)return ge}return null}function NA(){const N=Ce(),H=bl(N,{deafCount:_l});x.value=H,G=Pg(H);const Y={};for(const ge of N.lists||[])Y[ge.id]=ge.selector;for(const ge of N.asia_lists||[])Y[ge.id]=ge.selector;for(const ge of N.uncovered_lists||[])Y[ge.id]=ge.selector;Y.deaf={type:"affinity_bloc",rop1:"A017"};for(const ge of G)ge.selector=Y[ge.id];W=se(G)}async function th(){if(we)try{const H=await fetch(`${we}/api/people-groups/list?fields=slug,name,country_code,wagf_region,wagf_block,rop1,population,latitude,longitude&lang=en`,{cache:"no-store"});if(!H.ok)throw new Error(`list ${H.status}`);const Y=Ea(await Ca(Ra(await H.json()),n));C=Ag(Y),x.value=bl(Ce(),{deafCount:_l,records:Y})}catch{}}so(async()=>{var Ae,je,Ve,Ge,Je;NA();try{await lS(a)}catch{}const N=ml(a);N&&iS(N);const H=(o==null?void 0:o.value)||((Ae=n==null?void 0:n.value)==null?void 0:Ae.tk)||"";if(!N){console.warn(`[upg-100-list] ${a} engine global is missing — refusing to substitute another engine. A page that asked for the keyless engine must not silently receive the token-gated one.`),d.value=`⚠ ${Ee("messages.engineNotLoaded")}`,p.value=Ee("messages.engineNotLoadedDetail",{engine:r?"MapLibre":"Mapbox"}),th();return}if(!r){if(!H){d.value="⚠ no mapbox token",p.value="No Mapbox token configured. The list and legend are unaffected.",th();return}N.accessToken=H}try{const ke=wg(a);ke&&await cS(c.value,ke)}catch{}try{const ke=!r&&c.value&&c.value.getRootNode();if(ke instanceof ShadowRoot){const Ue=wg("mapbox");if(Ue&&!ke.querySelector(`link[href="${Ue}"]`)){const it=document.createElement("link");it.rel="stylesheet",it.href=Ue,ke.prepend(it)}}}catch{}T=new N.Map({container:c.value,style:fl("paper",a).style||"mapbox://styles/mapbox/light-v11",center:[35,20],zoom:1.5,projection:"mercator"}),f.value=T,ne=aS(((je=c.value)==null?void 0:je.parentElement)||null,{enabled:i.value}),typeof window<"u"&&(window.__UPG_MAP__=T),window.__UPG_SELECT__={get list(){return h.value.map(ke=>({...ke}))},get total(){return y.value},get count(){return b.value},get color(){return oe.value},get batchMode(){return P.value},setColor:ke=>z(ke),setBatchMode:ke=>E(ke),clipboardText:()=>$S(h.value,{color:oe.value}),clear:()=>re(),toggleByProps:ke=>{const Ue=Lg(ke,{nameMap:C});return Ue?(j(Ue),{...Ue}):null},toggleLegendRow:ke=>{const Ue=on=>{for(const ft of on){if(ft.label===ke)return ft;if(ft.children&&ft.children.length){const Dt=Ue(ft.children);if(Dt)return Dt}}return null},it=Ue(x.value);return it?(ve(it),{label:it.label,zoneKeys:[...D(it)]}):null},markedLegendRows:()=>{if(typeof document>"u")return[];const ke=document.querySelector("my-upg-100-list-map");return[...(ke&&ke.shadowRoot||document).querySelectorAll(".stl-row.upg-batch-row .stl-name")].map(it=>it.textContent.trim())},highlightFeatureCount:()=>{if(!T||!M||!T.getLayer("upg-sel-fill"))return-1;const ke=new Set,Ue=new Set,it=new Set;for(const ft of h.value)ft.kind==="zone"?ke.add(ft.key.slice(5)):ft.kind==="adm1"?Ue.add(ft.name):ft.kind==="adm0"&&it.add(ft.key.slice(5));let on=0;for(const ft of M.features){const Dt=ft.properties||{};(ke.has(Dt.zoneKey)||Ue.has(Dt.shapeName)||it.has(Dt.iso3))&&on++}return on},zoneKeysForRow:ke=>{const Ue=on=>{for(const ft of on){if(ft.label===ke)return ft;if(ft.children&&ft.children.length){const Dt=Ue(ft.children);if(Dt)return Dt}}return null},it=Ue(x.value);return it?[...D(it)]:null}};try{d.value="loading boundaries…";const ke=Ke=>`${zn(n.value)}/boundaries/${Ke}`,Ue=Ke=>fetch(ke(Ke)).then(Ct=>{if(!Ct.ok)throw new Error(`boundary fetch ${Ct.status} ${Ke}`);return Ct.json()});if(!we)throw new Error("No API base configured — set window.MAP_APP_API_URL or VITE_API_BASE_URL. Failing closed (no default host).");const on=fetch(`${we}/api/people-groups/list?fields=slug,name,country_code,wagf_region,wagf_block,rop1,population,latitude,longitude&lang=en`).then(Ke=>{if(!Ke.ok)throw new Error(`list ${Ke.status}`);return Ke.json()}),ft={adm0:Ue("world-adm0-web.geojson"),adm1Chn:Ue("gb-CHN-ADM1.geojson"),adm1Ind:Ue("gb-IND-ADM1-web.geojson")};d.value="fetching 2106 UUPGs…";const Dt=Ea(await Ca(Ra(await on),n));C=Ag(Dt),x.value=bl(Ce(),{deafCount:_l,records:Dt});const Sl=[],ja={},{evaluate:IA}=await yt(async()=>{const{evaluate:Ke}=await Promise.resolve().then(()=>Si);return{evaluate:Ke}},void 0);for(const Ke of G)if(Ke.selector&&Ke.selector.type==="pg_slugs")for(const Ct of Ke.selector.values||[])Ct in ja||(ja[Ct]=Ke.zoneKey);else try{for(const Ct of IA(Ke.selector,Dt))Ct in ja||(ja[Ct]=Ke.zoneKey)}catch(Ct){console.warn("zone selector skipped",Ke.id,Ct&&Ct.message)}for(const Ke of Dt){const Ct=Number(Ke.latitude),Ll=Number(Ke.longitude);!isFinite(Ct)||!isFinite(Ll)||Sl.push({type:"Feature",geometry:{type:"Point",coordinates:[Ll,Ct]},properties:{slug:Ke.slug,zoneKey:ja[Ke.slug]||"",name:Ke.name||Ke.slug||"",population:Ke.population??0,countryName:Ke.country_code_label||"",country:Ke.country_code||""}})}const FA=rn({type:"FeatureCollection",features:Sl});le=()=>{if(!(T.getSource("upg")&&T.getLayer("upg-pins"))){if(T.getSource("upg")||T.addSource("upg",{type:"geojson",data:FA}),T.getLayer("upg-pins")){Qg();return}T.addLayer({id:"upg-pins",type:"circle",source:"upg",paint:{"circle-radius":["interpolate",["linear"],["zoom"],1,5,4,6.5,8,9],"circle-color":W,"circle-opacity":1,"circle-stroke-width":["interpolate",["linear"],["zoom"],1,1.8,8,2],"circle-stroke-color":"rgba(15,20,25,0.9)"}}),Qg()}};const oh=()=>{try{xl()}catch(Ke){console.warn("early pin paint skipped",Ke&&Ke.message)}};T.isStyleLoaded()?oh():T.once("style.load",oh),d.value="loading boundaries…";const[OA,DA]=await Promise.all([ft.adm0,ft.adm1Chn]),GA=await ft.adm1Ind,{tapestry:zA,perZone:BA}=mS(G,{records:Dt,adm0:OA,adm1Ind:GA,adm1Chn:DA});M=rn(zA),ie(Dt);let Al=!0;const Zn=()=>{Al&&(Al=!1,T.off("style.load",Zn),T.off("idle",Zn),xl())};if(T.isStyleLoaded())Zn();else{T.once("style.load",Zn),T.once("idle",Zn);const Ke=setInterval(()=>{if(!Al||!T){clearInterval(Ke);return}let Ct=!1;try{Ct=T.isStyleLoaded()}catch{clearInterval(Ke);return}Ct&&(clearInterval(Ke),Zn())},120);setTimeout(()=>clearInterval(Ke),15e3)}const nh=[...BA.entries()].filter(([Ke])=>Ke!=="deaf"),UA=nh.filter(([,Ke])=>Ke>=1).length;d.value=`${M.features.length} polys · ${UA}/${nh.length} zones · ${Sl.length} pins`}catch(ke){d.value="⚠ "+(ke&&ke.message?ke.message:String(ke))}let Y=0;const ge=()=>{const ke=typeof document<"u"&&document.querySelector("my-upg-100-list-map"),Ue=ke&&ke.shadowRoot||(typeof document<"u"?document:null);if(Ue&&Ue.querySelector(".stl-rows")){Ot(),rt();return}Y++<40&&setTimeout(ge,250)};ge();{const ke=(Je=(Ge=(Ve=c.value)==null?void 0:Ve.getRootNode)==null?void 0:Ge.call(Ve))==null?void 0:Je.host;if(ke){Ua=RA,ke.addEventListener("doxa:select-zone",Ua);const Ue=ke.getAttribute("select-zone");Ue&&Ha(Ue),Jn=new MutationObserver(()=>{Ha(ke.getAttribute("select-zone")||null)}),Jn.observe(ke,{attributes:!0,attributeFilter:["select-zone"]})}}});const MA=()=>{var N,H,Y;try{return((Y=(H=(N=c.value)==null?void 0:N.getRootNode)==null?void 0:H.call(N))==null?void 0:Y.host)||null}catch{return null}};return nt([x,f],()=>{jt(()=>{var H;const N=((H=MA())==null?void 0:H.getAttribute("select-zone"))||tn||null;N&&Ha(N)})}),Xt(()=>{var N,H,Y;if(Jn==null||Jn.disconnect(),Jn=null,Ua){const ge=(Y=(H=(N=c.value)==null?void 0:N.getRootNode)==null?void 0:H.call(N))==null?void 0:Y.host;ge==null||ge.removeEventListener("doxa:select-zone",Ua),Ua=null}if(Xe){try{Xe.disconnect()}catch{}Xe=null}if(ne){try{ne()}catch{}ne=null}T&&(T.remove(),T=null),M=null}),(N,H)=>{var Y;return q(),ae("div",PS,[R("div",{ref_key:"mapEl",ref:c,class:"upg-map"},null,512),p.value?(q(),ae("div",xS,[R("strong",null,ce(ye(Ee)("messages.mapUnavailable")),1),vt(ce(p.value),1)])):_e("",!0),i.value?(q(),ae(Be,{key:1},[H[0]||(H[0]=R("div",{class:"map-scroll-edge map-scroll-edge--left"},null,-1)),H[1]||(H[1]=R("div",{class:"map-scroll-edge map-scroll-edge--right"},null,-1))],64)):_e("",!0),f.value&&s.value?(q(),dt(Xx,{key:2,ref_key:"geocoderRef",ref:ue,"map-instance":f.value,"access-token":ye(o)||((Y=ye(n))==null?void 0:Y.tk)||"","data-source-id":$l,"is-dark":g.value,placeholder:he.value,"active-context":DS,onPeopleGroupResult:pe,onAggregateResult:fe,onClear:k},null,8,["map-instance","access-token","is-dark","placeholder"])):_e("",!0),f.value?(q(),dt(xx,{key:3,"has-geocoder":s.value},{default:Zt(()=>[tt(Ax,{map:f.value,"is-dark":g.value},null,8,["map","is-dark"]),tt(Lx,{map:f.value,"is-dark":g.value},null,8,["map","is-dark"]),tt(Cx,{map:f.value,"is-dark":g.value},null,8,["map","is-dark"]),tt(Rx,{"map-container":c.value,"is-dark":g.value},null,8,["map-container","is-dark"]),tt(Mx,{"is-dark":g.value,onToggle:EA},null,8,["is-dark"]),tt(yn,{"is-dark":g.value,active:P.value,class:ze({"upg-batch-on":P.value}),"aria-pressed":P.value?"true":"false",title:"Batch Select",onClick:v},{default:Zt(()=>[...H[2]||(H[2]=[R("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[R("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1"}),R("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1"}),R("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),R("rect",{x:"14",y:"14",width:"7",height:"7",rx:"1"})],-1)])]),_:1},8,["is-dark","active","class","aria-pressed"])]),_:1},8,["has-geocoder"])):_e("",!0),R("div",SS,[x.value.length?(q(),dt(yp,{key:0,nodes:x.value,tabs:F,"default-tab":Tg,columns:["count","pop"],title:de.value,"export-enabled":!0,onSelect:Yn,onExport:Wt},null,8,["nodes","title"])):_e("",!0)]),R("div",AS,[x.value.length?(q(),dt(Px,{key:0,"legend-type":"upg-100",nodes:x.value,tabs:F,"default-tab":Tg,columns:["count","pop"],"column-label":"UPG 100",title:de.value,"is-dark":g.value,"popup-action":"pray"},null,8,["nodes","title","is-dark"])):_e("",!0)]),R("div",LS,[ye(u)&&ye(u).selectedPeopleGroup?(q(),ae("div",{key:0,class:ze(["upg-detail-panel pg-detail-root",{dark:g.value}])},[tt(ye(t),{peopleGroup:ye(u).selectedPeopleGroup,dark:g.value,action:"pray"},null,8,["peopleGroup","dark"])],2)):_e("",!0)]),P.value?(q(),ae("div",CS,[H[3]||(H[3]=R("div",{class:"upg-hud-hint"}," Tap territories on the map or legend rows to add · tap again to remove ",-1)),b.value?(q(),ae("div",TS,[R("span",null,ce(b.value)+" territor"+ce(b.value===1?"y":"ies")+" ·",1),R("span",ES,ce(y.value)+" UUPG",1),R("span",{class:ze(["upg-hud-band",{ok:y.value>=50&&y.value<=100}])},ce(y.value>=50&&y.value<=100?"✓ 50–100 band":"band 50–100"),3)])):_e("",!0),b.value?(q(),ae("div",RS,ce(h.value.map(ge=>ge.name).join(", ")),1)):_e("",!0),b.value?(q(),ae("div",NS,[R("button",{class:"upg-hud-btn make",disabled:Ne.value,onClick:CA},ce(ye(Ee)("buttons.prayerList")),9,MS),R("button",{class:"upg-hud-btn make",disabled:Ne.value,onClick:TA},ce(ye(Ee)("buttons.posterMap")),9,IS),R("button",{class:"upg-hud-btn clear",onClick:re},ce(ye(Ee)("buttons.clearSelection")),1)])):_e("",!0),b.value?(q(),ae("div",FS,ce($.value),1)):_e("",!0)])):_e("",!0),R("div",OS,ce(d.value),1)])}}}},Symbol.toStringTag,{value:"Module"})),zS=` -/* The column that scrolls. Vertical neighbours stack here and the user scrolls - between them; scroll-snap makes each pane settle cleanly instead of stopping - half-way between two views. */ .pane-col{ position:absolute; inset:0; overflow-y:auto; overflow-x:hidden; scroll-snap-type:y mandatory; scroll-behavior:smooth; -webkit-overflow-scrolling:touch; - /* DOUBLE SCROLLBAR FIX. A pane's own content (e.g. the poster wall) scrolls - inside the pane; this column only scrolls BETWEEN panes. With both visible - the desktop showed two bars side by side. The column's bar is hidden — pane - navigation is driven by the View switcher and scroll-snap, not by dragging a - bar — while the inner content keeps its own, which is the one a user wants. - Scrolling still works here; only the indicator is suppressed. */ - scrollbar-width:none; /* Firefox */ - -ms-overflow-style:none; /* legacy Edge */ + scrollbar-width:none; + -ms-overflow-style:none; } -.pane-col::-webkit-scrollbar{ width:0; height:0; } /* WebKit/Blink */ -/* Each pane fills the stage exactly, so "scroll down" moves you one full view. */ +.pane-col::-webkit-scrollbar{ width:0; height:0; } .pane{ position:relative; width:100%; height:100%; scroll-snap-align:start; scroll-snap-stop:always; } -/* The live custom element fills its pane. */ .pane > .pane-mount{ position:absolute; inset:0; } -/* Placeholder copy for a pane whose profile is not built yet — same card styling - as the wrapper's own placeholder so an unbuilt pane never looks broken. */ .pane-placeholder{ position:absolute; inset:0; display:grid; place-items:center; padding:24px; text-align:center; @@ -851,8 +838,6 @@ } .pane-placeholder h2{ margin:0 0 8px; font-size:18px; font-weight:600 } .pane-placeholder p{ margin:0; font-size:13px; line-height:1.55; opacity:.78 } -/* A small persistent hint that there IS something below — the affordance the - edge strips reinforce once you start interacting. Hidden on the last pane. */ .pane-more{ position:absolute; left:50%; bottom:10px; transform:translateX(-50%); display:flex; align-items:center; gap:6px; padding:5px 12px; border-radius:999px; @@ -1128,14 +1113,7 @@ color:#2ea44f; } `,"share-button");const{t:o,tm:n,rt:a}=Pt(),r=e,s=be(null),i=be(!1),l=be(null),u=be(null),c=be("link"),d=be(!1),p=be(!1),x=be("medium"),S={small:{label:"Small",height:400},medium:{label:"Medium",height:600},large:{label:"Large",height:800}},f=He("profileConfig",null),g=ee(()=>Yv({embedPath:r.embedPath,profileConfig:ye(f)||null})),m=ee(()=>{const oe=S[x.value].height;return''});function h(){i.value=!i.value,i.value&&(c.value="link",d.value=!1,p.value=!1)}function y(){i.value=!1}async function b(oe){try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(oe),!0}catch{}try{const Z=document.createElement("textarea");Z.value=oe,Z.setAttribute("readonly",""),Z.style.cssText="position:fixed;top:-1000px;opacity:0",document.body.appendChild(Z),Z.select();const z=document.execCommand("copy");return document.body.removeChild(Z),z}catch{return!1}}async function $(){await b(g.value)&&(d.value=!0,setTimeout(()=>{d.value=!1},2e3))}async function C(){await b(m.value)&&(p.value=!0,setTimeout(()=>{p.value=!1},2e3))}const P=He("mapToolbar",null),E=be(null);zt("mapToolbar",P||{el:E});const v=!P;function j(oe){if(s.value=oe||null,!v||!oe){oe||(E.value=null);return}const Z=oe.offsetParent||oe.parentElement;Z&&!Z.closest(".dsm-map-area, .rm-map-area, .dm-map-area, [data-map-area]")&&Z.setAttribute("data-map-area","share-fallback"),E.value=oe}return(oe,Z)=>(q(),ae("div",{ref:j,class:"share-wrap","data-share-root":""},[tt(yn,{ref_key:"btnEl",ref:u,"is-dark":e.isDark,active:i.value,title:ye(o)("buttons.share"),onClick:h},{default:Zt(()=>[...Z[2]||(Z[2]=[R("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[R("path",{d:"M4 12v7a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7"}),R("polyline",{points:"16 6 12 2 8 6"}),R("line",{x1:"12",y1:"2",x2:"12",y2:"15"})],-1)])]),_:1},8,["is-dark","active","title"]),tt(XS,{open:i.value,title:ye(o)("buttons.share"),"is-dark":e.isDark,onClose:y},{default:Zt(()=>[R("div",{ref_key:"popoverEl",ref:l,class:ze(["share-pop",{light:!e.isDark}])},[R("ul",QS,[(q(!0),ae(Be,null,Et(ye(n)("buttons.shareSteps"),(z,ue)=>(q(),ae("li",{key:ue},ce(ye(a)(z)),1))),128))]),R("div",eA,[R("button",{class:ze(["share-tab",{active:c.value==="link"}]),onClick:Z[0]||(Z[0]=z=>c.value="link")},ce(t("share.embed_link","Embed link")),3),R("button",{class:ze(["share-tab",{active:c.value==="embed"}]),onClick:Z[1]||(Z[1]=z=>c.value="embed")},ce(t("share.add_to_website","Add to Your Website")),3)]),c.value==="link"?(q(),ae("div",tA,[R("div",oA,[R("div",nA,ce(g.value),1)]),R("button",{class:ze(["share-primary-btn",{copied:d.value}]),onClick:$},[d.value?(q(),ae("svg",rA,[...Z[4]||(Z[4]=[R("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):(q(),ae("svg",aA,[...Z[3]||(Z[3]=[R("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),R("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"},null,-1)])])),vt(" "+ce(d.value?"Copied!":"Copy Link"),1)],2)])):_e("",!0),c.value==="embed"?(q(),ae("div",sA,[R("div",iA,ce(t("share.embed_paste_hint","Paste this code into your website builder (WordPress, Squarespace, Wix, or any site that accepts HTML widgets).")),1),R("div",lA,[(q(),ae(Be,null,Et(S,(z,ue)=>R("button",{key:ue,class:ze(["share-size-pill",{active:x.value===ue}]),onClick:F=>x.value=ue},ce(z.label),11,cA)),64))]),R("div",uA,ce(m.value),1),R("button",{class:ze(["share-secondary-btn",{copied:p.value}]),onClick:C},[p.value?(q(),ae("svg",pA,[...Z[6]||(Z[6]=[R("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):(q(),ae("svg",dA,[...Z[5]||(Z[5]=[R("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),R("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"},null,-1)])])),vt(" "+ce(p.value?"Copied!":"Copy Code"),1)],2)])):_e("",!0)],2)]),_:1},8,["open","title","is-dark"])],512))}},hA={class:"upgmfe"},fA={class:"hdr"},Rg="my-upg-100-list-map",mA="my-upg-100-list/upg-100-mfe/index.html",bA=Object.freeze(Object.defineProperty({__proto__:null,default:{__name:"upg-100-mfe",setup(e){const t=Br(""),o=He("profileConfig",be(null)),n=He("mapboxToken",be("")),a=He("uiStore",null),r=ee(()=>!!(a!=null&&a.isDark)),s=ee(()=>{var b;return((b=o.value)==null?void 0:b.instanceId)||"upg-100-mfe"}),i=ee(()=>{var b;return{id:"upg-100-mfe",tag:Rg,config:{profile:"upg-100-list",instanceId:s.value,...(b=o.value)!=null&&b.dataSource?{dataSource:o.value.dataSource}:{}},panes:[{id:"list",label:t("tabs.prayerResources"),at:[0,0],config:{profile:"poster-wall"}},{id:"map",label:t("tabs.map"),at:[1,0],config:{profile:"upg-100-list"}}],paneHint:!1}}),l=be(null),u=ee(()=>{var $;return(($=i.value.panes.filter(C=>{var P;return(((P=C.at)==null?void 0:P[1])??0)===0}).sort((C,P)=>{var E,v;return(((E=C.at)==null?void 0:E[0])??0)-(((v=P.at)==null?void 0:v[0])??0)})[0])==null?void 0:$.id)||"list"}),c=be(null),d=ee({get:()=>c.value||u.value,set:b=>{c.value=b}});let p=null,x=null;const S={},f=["assetsBase","apiBaseUrl","tokenUrl","locale","lang","isDark","qa","provider","list"];function g(b){const $=document.createElement(Rg),C=o.value||{},P={};for(const v of f)C[v]!==void 0&&C[v]!==null&&C[v]!==""&&(P[v]=C[v]);P.locale===void 0&&P.lang!==void 0&&(P.locale=P.lang);const E={...P,...i.value.config,...b.config};return E.pinHint=!1,n.value&&(E.tk=n.value),$.setAttribute("profile-config",JSON.stringify(E)),$}function m(b){if(p)for(const $ of p.panes){const C=p.mountEl($.id);C&&($.id===b?C.removeAttribute("inert"):C.setAttribute("inert",""))}}function h(b){d.value=b,p==null||p.scrollTo(b),m(b)}function y(b){const $=(b==null?void 0:b.detail)||{};if($.instanceId&&$.instanceId!==s.value)return;h("map");const C=$.listId??null;S.map&&(C?S.map.setAttribute("select-zone",String(C)):S.map.removeAttribute("select-zone"),S.map.dispatchEvent(new CustomEvent("doxa:select-zone",{detail:{listId:C}})))}return so(()=>{var b;if(l.value&&(p=BS(i.value,{host:l.value}),!!p)){for(const $ of p.panes){if(!$.config)continue;const C=g($);S[$.id]=C,(b=p.mountEl($.id))==null||b.appendChild(C)}m(p.current()),x=p.onScroll(()=>{const $=p.current();$&&$!==d.value&&(d.value=$),$&&m($)}),window.addEventListener("doxa-upg-100-list:show-on-map",y)}}),Xt(()=>{window.removeEventListener("doxa-upg-100-list:show-on-map",y),x==null||x(),p==null||p.destroy(),p=null;for(const b of Object.keys(S))delete S[b]}),Lt(zS+` -/* SELF-SIZE (BUG-UPG100-NESTED-ELEMENTS-ZERO-HEIGHT). Every layer inside this element is - position:absolute / height:100% (.upgmfe -> .pane-col -> .pane), so the whole chain resolves to - ZERO unless the HOST itself is sized. The standalone leaf page papered over it with a page-level - rule, but inside a tab layout no such rule exists -> the header rendered and every pane collapsed - to 0, which is the "elements are not embedding" report. Declaring :host here makes the element - fill whatever slot it is mounted into, in every deploy method. */ :host{ display:block; width:100%; height:100%; min-height:420px; } -/* ── palette: DX-life material light ── */ .upgmfe{ --ui-bg:#ffffff; --ui-bg-elevated:#f3f3f1; --ui-bg-accented:#f3f3f1; --ui-border:#d1d4cd; --ui-text:#3b463d; --ui-text-muted:#6d766e; --ui-primary:#92b195; @@ -1144,27 +1122,15 @@ background:var(--ui-bg); color:var(--ui-text); font:14px/1.4 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,system-ui,sans-serif; } -/* NO AUTO-DARK. The DX design pattern is material LIGHT (Driver 2026-09-20): a system set to dark - mode must NOT flip this element. The prefers-color-scheme:dark override that used to live here is - removed deliberately — the light palette above is the only theme. */ -/* ── header: same height/border as the shell; switcher centred; share at right ── */ .upgmfe .hdr{ flex:0 0 var(--header); height:var(--header); position:relative; display:flex; align-items:center; justify-content:flex-end; padding:0 12px; background:var(--ui-bg); border-bottom:1px solid var(--ui-border); } -/* ── Select View fieldset ── - The control's own metrics now live in the SHARED library component - (components/ViewSelect.vue) — this file used to carry a hand-copied second - implementation of the shell's .viewsel/.seg rules. Only the PLACEMENT stays - here, because centring in this particular header is this layout's decision, - not the control's. */ .viewsel{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); } -/* ── stage: the pane-wrapper column mounts here (its .pane-col is absolute) ── */ .upgmfe .stage{ position:relative; flex:1 1 auto; min-height:0; } -/* the live custom element fills its pane */ .pane > .pane-mount > *{ position:absolute; inset:0; width:100%; height:100%; display:block; } `,"upg-100-mfe"),(b,$)=>(q(),ae("div",hA,[R("header",fA,[tt(KS,{views:i.value.panes,current:d.value,legend:ye(t)("tabs.selectView"),label:ye(t)("tabs.views"),onSelect:h},null,8,["views","current","legend","label"]),tt(gA,{"is-dark":r.value,"embed-path":mA},null,8,["is-dark"])]),R("div",{class:"stage",ref_key:"stage",ref:l},null,512)]))}}},Symbol.toStringTag,{value:"Module"}));function Ng(e){const t=(e.match(//)||[])[0];if(!t)throw new Error("poster HTML contains no ");const n=((e.match(/`}const kl={poker:{w:2.5,h:3.5,label:"Card 2.5 × 3.5 in"},pokerLandscape:{w:3.5,h:2.5,label:"Card 3.5 × 2.5 in (landscape)",side:!0},postcard:{w:4,h:6,label:"Postcard 4 × 6 in"},postcardLandscape:{w:6,h:4,label:"Postcard 6 × 4 in (landscape)",side:!0},a6:{w:4.13,h:5.83,label:"A6 105 × 148 mm"}},Og=96;function kA({strings:e,lang:t="en",stock:o="poker",siteBase:n="https://pray.doxa.life"}={}){const a=e.en,r=e[t]||{},s=h=>r[h]!==void 0?r[h]:a[h],i=h=>String(h??"").replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),l=(h,y)=>{const b=h[`${y}_label`];if(b)return String(b);const $=h[y];return $&&typeof $=="object"?String($.label??$.value??""):$==null?"":String($)},u=h=>Number.isFinite(Number(h))?Number(h).toLocaleString(t):"—",c=kl[o]||kl.poker,d=Math.round(c.w*Og),p=Math.round(c.h*Og),x=c.side===!0,S=h=>t==="en"?`${n}/${h}`:`${n}/${t}/${h}`;function f(){return` /* THE PAGE IS THE CARD. Explicit inches — a named size silently falls back to diff --git a/public/dx-maps/my-upg-100-list/poster-wall/index.html b/public/dx-maps/my-upg-100-list/poster-wall/index.html index 877e2d443..11520a038 100644 --- a/public/dx-maps/my-upg-100-list/poster-wall/index.html +++ b/public/dx-maps/my-upg-100-list/poster-wall/index.html @@ -32,7 +32,7 @@ - + - + - + - + - + - + - + - + - +