From 9bf90cc1a49a78ac00f41156d58b3c2128df7d8e Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Sat, 3 Oct 2026 15:23:28 +0000 Subject: [PATCH 1/2] The pin spreading on a dense country lets the page repaint as it works (a frame every 26 of its 260 passes, only when the print shows its progress); every sheet stays byte-identical --- library/packet/poster-render.integrity.js | 4 ++-- library/packet/poster-render.js | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/library/packet/poster-render.integrity.js b/library/packet/poster-render.integrity.js index 1592db118..4a2b48931 100644 --- a/library/packet/poster-render.integrity.js +++ b/library/packet/poster-render.integrity.js @@ -2,13 +2,13 @@ // The sha384 of library/packet/poster-render.js. The browser fetches the served copy of that file // (/lib/poster-render.js), hashes it, and runs it only when it matches this pin: code loaded at // print time is integrity-pinned like every embed, because it executes on partner pages. -export const POSTER_RENDER_SHA384 = 'sha384-AM43ejAFlUq5/1D5V/vIhQhohlg/xU6SmM3CRn53/AbULq+lVj+D/M9ylfd3+3ry' +export const POSTER_RENDER_SHA384 = 'sha384-BovEYinyxyuBbZKenKq3jVNmVXHZG1qpEdznmgol7ceumR6r6KiKQhAQVg5Fs6yn' // The sha384 of library/scripts/posters/data/ne-places.json, served at /boundaries/ne-places.json. // Data, not code, but pinned the same way: a sheet uses the places only when they are the pinned ones. export const NE_PLACES_SHA384 = 'sha384-Qtz2q8mcnA9Ei8Kwa2MRMyX95hSbSnUXjXdtsy8rHTX++mgSCih4LO4Rdrb2MIQy' // The sha384 of the classic-script copy (/lib/poster-render.global.js, globalVariant of the file above), // loaded with + - + - + - + - + \n\n\n" + "script": "\n\n\n" } } ] @@ -306,7 +306,7 @@ "bundle": "country-posters", "scriptUrl": "./country-posters/country-posters.js", "output": "dx-maps/country-posters/country-posters.js", - "integrity": "sha384-tjMVEYOPjptIxmve+jk77LO5fym0rXT/WbTOtgl+s05oKEl+Nu/mNtTj/JIVNA04", + "integrity": "sha384-6o2stE4+bEVASQ83wBwfm9R39hTkhl8pQMdztmf1QAxIGC/5zCJfcy/j/VtKgNSs", "elements": [ "country-posters-map" ], @@ -329,8 +329,8 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -368,7 +368,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -384,8 +384,8 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -401,7 +401,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } } ] @@ -1025,7 +1025,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-5Tz1HsrQ/WyGlRaeM90yrVTh0Se0SpcJ/cV1sfiJAQ5FEFvx6cYnc4Fk+sxK5/xc", + "integrity": "sha384-f1YOoVGLiO4vTZYWg2VahfBHrcXASdeHyK23OOSFlud98wdzbiY6P9dMc4l0VmGt", "elements": [ "my-upg-100-list-map" ], @@ -1112,7 +1112,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1128,8 +1128,8 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -1145,8 +1145,8 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } } ] @@ -1277,7 +1277,7 @@ "bundle": "poster-design", "scriptUrl": "./poster-design/poster-design.js", "output": "dx-maps/poster-design/poster-design.js", - "integrity": "sha384-CSQGLjdDumN1Mpa+Slo46ZYmBeGo6UDXQQ0ba7j4UhPcC2ipOS1dKwy+xDSQJFr9", + "integrity": "sha384-M5WuZ+Y3sazmYp7yI+siTU8HLpGhpP9yQcNu3yQTUX/p635ZIZ1xHsu3ys5zSoAB", "elements": [ "poster-design" ], @@ -1300,7 +1300,7 @@ "scriptUrl": "./poster-design/poster-design.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1316,7 +1316,7 @@ "scriptUrl": "./poster-design/poster-design.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1332,7 +1332,7 @@ "scriptUrl": "./poster-design/poster-design.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } } ] @@ -1341,7 +1341,7 @@ "bundle": "poster-sections", "scriptUrl": "./poster-sections/poster-sections.js", "output": "dx-maps/poster-sections/poster-sections.js", - "integrity": "sha384-6N6zi7fJkLQNZQlEdGKpGjohXH8J2NlaY0cbylVD7onbAe51Da/ImX8kciB+ATnk", + "integrity": "sha384-Ky0f5azqdkYO9IzPy074iNzeb6tnof1XF3NmRVJW8edEARyVmpRWzAN5ylr0VSxu", "elements": [ "poster-sections" ], @@ -1360,7 +1360,7 @@ "scriptUrl": "./poster-sections/poster-sections.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" }, "instances": [ { @@ -1617,7 +1617,7 @@ "bundle": "regions-dashboard", "scriptUrl": "./regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js", - "integrity": "sha384-58FmLDUgJnRQJLbgBLgo6xGPFEqRV+sqsZXuvBKlWn90Y/qMAkWT8sOeX9HZAT32", + "integrity": "sha384-mYQQ30KbTK3RByu9g8ulmFLZrmw/mHO2h1358vULjkrlhuwFYjheL50kJCKpOvFP", "elements": [ "regions-dashboard" ], @@ -1640,8 +1640,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -1657,7 +1657,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1673,8 +1673,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } } ] diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index f83978dff..035bbe9a7 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -164,7 +164,7 @@ "bundle": "bless-india-posters", "scriptUrl": "./bless-india-posters/bless-india-posters.js", "output": "dx-maps/bless-india-posters/bless-india-posters.js", - "integrity": "sha384-7O62pcVQr0A+ycE3C5UFSAdOuSBejDn6kWOc3TtegFT2oxT50Z2hECuBzTNb/1Ku", + "integrity": "sha384-zcUT/F0snHbxquOmmFZWBaT3QjsAvRfSFEesDS6J2LPzvILIxb3Dg/8FZ5AuRxdy", "elements": [ "bless-india-posters" ], @@ -207,7 +207,7 @@ "scriptUrl": "./bless-india-posters/bless-india-posters.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } } ] @@ -306,7 +306,7 @@ "bundle": "country-posters", "scriptUrl": "./country-posters/country-posters.js", "output": "dx-maps/country-posters/country-posters.js", - "integrity": "sha384-tjMVEYOPjptIxmve+jk77LO5fym0rXT/WbTOtgl+s05oKEl+Nu/mNtTj/JIVNA04", + "integrity": "sha384-6o2stE4+bEVASQ83wBwfm9R39hTkhl8pQMdztmf1QAxIGC/5zCJfcy/j/VtKgNSs", "elements": [ "country-posters-map" ], @@ -329,8 +329,8 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -368,7 +368,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -384,8 +384,8 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -401,7 +401,7 @@ "scriptUrl": "./country-posters/country-posters.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } } ] @@ -1025,7 +1025,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-5Tz1HsrQ/WyGlRaeM90yrVTh0Se0SpcJ/cV1sfiJAQ5FEFvx6cYnc4Fk+sxK5/xc", + "integrity": "sha384-f1YOoVGLiO4vTZYWg2VahfBHrcXASdeHyK23OOSFlud98wdzbiY6P9dMc4l0VmGt", "elements": [ "my-upg-100-list-map" ], @@ -1112,7 +1112,7 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1128,8 +1128,8 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -1145,8 +1145,8 @@ "scriptUrl": "./my-upg-100-list/my-upg-100-list.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } } ] @@ -1277,7 +1277,7 @@ "bundle": "poster-design", "scriptUrl": "./poster-design/poster-design.js", "output": "dx-maps/poster-design/poster-design.js", - "integrity": "sha384-CSQGLjdDumN1Mpa+Slo46ZYmBeGo6UDXQQ0ba7j4UhPcC2ipOS1dKwy+xDSQJFr9", + "integrity": "sha384-M5WuZ+Y3sazmYp7yI+siTU8HLpGhpP9yQcNu3yQTUX/p635ZIZ1xHsu3ys5zSoAB", "elements": [ "poster-design" ], @@ -1300,7 +1300,7 @@ "scriptUrl": "./poster-design/poster-design.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1316,7 +1316,7 @@ "scriptUrl": "./poster-design/poster-design.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1332,7 +1332,7 @@ "scriptUrl": "./poster-design/poster-design.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } } ] @@ -1341,7 +1341,7 @@ "bundle": "poster-sections", "scriptUrl": "./poster-sections/poster-sections.js", "output": "dx-maps/poster-sections/poster-sections.js", - "integrity": "sha384-6N6zi7fJkLQNZQlEdGKpGjohXH8J2NlaY0cbylVD7onbAe51Da/ImX8kciB+ATnk", + "integrity": "sha384-Ky0f5azqdkYO9IzPy074iNzeb6tnof1XF3NmRVJW8edEARyVmpRWzAN5ylr0VSxu", "elements": [ "poster-sections" ], @@ -1360,7 +1360,7 @@ "scriptUrl": "./poster-sections/poster-sections.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" }, "instances": [ { @@ -1617,7 +1617,7 @@ "bundle": "regions-dashboard", "scriptUrl": "./regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js", - "integrity": "sha384-58FmLDUgJnRQJLbgBLgo6xGPFEqRV+sqsZXuvBKlWn90Y/qMAkWT8sOeX9HZAT32", + "integrity": "sha384-mYQQ30KbTK3RByu9g8ulmFLZrmw/mHO2h1358vULjkrlhuwFYjheL50kJCKpOvFP", "elements": [ "regions-dashboard" ], @@ -1640,8 +1640,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -1657,7 +1657,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1673,8 +1673,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\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 942b1a29d..201c16fcf 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 @@ -83,7 +83,7 @@ .pin-hint, .pin-hint-pill, .pin-hint-dot::after { animation: none !important; } } `,"pin-hint"),(H,X)=>c.value?Ni((Y(),ae("div",{key:0,ref_key:"hintEl",ref:f,class:at(["pin-hint",{dark:s.value}]),role:"status"},[E("span",q1,[X[0]||(X[0]=E("span",{class:"pin-hint-dot","aria-hidden":"true"},null,-1)),E("span",Y1,[(Y(!0),ae(et,null,oo(l.value,(D,T)=>(Y(),ae("span",{key:T,class:"pin-hint-line"},ue(D),1))),128))]),E("button",{class:"pin-hint-x",type:"button","aria-label":t("aria.dismissHint","Dismiss hint"),onClick:C},"×",8,Z1)])],2)),[[Vp,u.value&&p.value]]):Ee("",!0)}},X1=".lsn-bar[data-v-9a589f6f]{display:flex;align-items:flex-start;gap:8px;flex:none;margin:0;padding-block:8px;padding-inline:12px 8px;background:#fff8e1;border-block-end:1px solid #f0d68a;color:#4a3b00;font:400 13px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}.lsn-bar__text[data-v-9a589f6f]{flex:1 1 auto;margin:0}.lsn-bar__x[data-v-9a589f6f]{flex:none;min-width:24px;min-height:24px;padding:0;border:0;border-radius:4px;background:transparent;color:inherit;font:600 18px/1 system-ui,sans-serif;cursor:pointer}.lsn-bar__x[data-v-9a589f6f]:focus-visible{outline:2px solid #1a73e8;outline-offset:2px}.lsn-block[data-v-9a589f6f]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%;min-height:200px;padding:24px;background:#f7f7f5;color:#333;text-align:center;font:400 15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}.lsn-block__text[data-v-9a589f6f]{max-width:28em;margin:0}",vn=(e,t)=>{const o=e.__vccOpts||e;for(const[a,n]of t)o[a]=n;return o},Q1={key:0,class:"lsn-block",role:"status"},ev={class:"lsn-block__text"},tv={key:0},ov={key:1,class:"lsn-bar",role:"note"},av={class:"lsn-bar__text"},nv=["aria-label","title"],Fh=vn({__name:"LargerScreenNotice",props:{mode:{type:String,required:!0},label:{type:String,default:""},locale:{type:String,default:""}},emits:["dismiss"],setup(e){const t=e,o=(i,s)=>Ya(i,t.locale||void 0)||s,a=ne(()=>o("messages.largerScreenNotice","This experimental map is built for larger screens. It opens here, but parts of it may not fit or work well on a phone.")),n=ne(()=>o("messages.noticeDismiss","Dismiss")),r=ne(()=>o("messages.desktopOnlyNotice","{label} only supports desktop — open this page on a desktop to use it.").split("{label}"));return(i,s)=>e.mode==="desktop-only"?(Y(),ae("div",Q1,[E("p",ev,[Jt(ue(r.value[0]),1),r.value.length>1?(Y(),ae("bdi",tv,ue(e.label),1)):Ee("",!0),Jt(ue(r.value[1]||""),1)])])):(Y(),ae("div",ov,[E("p",av,ue(a.value),1),E("button",{type:"button",class:"lsn-bar__x","aria-label":n.value,title:n.value,onClick:s[0]||(s[0]=l=>i.$emit("dismiss"))},"×",8,nv)]))}},[["styles",[X1]],["__scopeId","data-v-9a589f6f"]]),rv="(max-width: 639.98px)";function iv(e){for(let t=e;t;t=t.parentNode||t.host)if(t.nodeType===1&&t.hasAttribute("data-doxa-gallery"))return!0;return!1}function sv(e){var l;const t=ne(()=>{var u;const c=(u=e.value)==null?void 0:u.mobile;return c==="desktop-only"||c==="larger-screens"?c:null});let o=null;try{o=r_()}catch{o=null}const a=o?iv(o):!1,n=ve(!1);if(typeof window<"u"&&typeof window.matchMedia=="function"){const c=window.matchMedia(rv);n.value=c.matches;const u=d=>{n.value=d.matches};(l=c.addEventListener)==null||l.call(c,"change",u),Zt(()=>{var d;return(d=c.removeEventListener)==null?void 0:d.call(c,"change",u)})}const r=ne(()=>{var c;return`dx-maps:larger-screens-dismissed:${((c=e.value)==null?void 0:c.profile)||""}`}),i=ve(!1);$t(r,c=>{try{i.value=sessionStorage.getItem(c)==="1"}catch{i.value=!1}},{immediate:!0});function s(){i.value=!0;try{sessionStorage.setItem(r.value,"1")}catch{}}return{flag:t,blocked:ne(()=>t.value==="desktop-only"&&n.value&&!a),advise:ne(()=>t.value==="larger-screens"&&n.value&&!a&&!i.value),dismiss:s,label:ne(()=>{var c,u;return String(((c=e.value)==null?void 0:c.mobileLabel)||((u=e.value)==null?void 0:u.profile)||"")})}}const lv=e=>{const t=[],o=a=>{for(const n of a.querySelectorAll?a.querySelectorAll("*"):[])(n.scrollTop||n.scrollLeft)&&t.push(n),n.shadowRoot&&o(n.shadowRoot)};return o(e),t};function cv(e,t,{style:o=n=>getComputedStyle(n),scrolled:a=()=>lv(e)}={}){let n=!1,r=null;const i=()=>e.hasAttribute("data-host-sized"),s=()=>parseFloat(o(e).minHeight)||0,l=()=>t.getBoundingClientRect().height;function c(m){e.style.minHeight=m?"0px":"",m?e.setAttribute("data-host-sized",""):e.removeAttribute("data-host-sized")}function u(){e.style.minHeight="0px";const m=l();e.style.minHeight="100000px";const h=l(),b=m>0&&Math.abs(h-m)<1;c(b);const _=b?0:s();n=!b&&_>0&&h+1<_}function d(){u(),r=l()}function p(){const m=a().map(h=>[h,h.scrollTop,h.scrollLeft]);u();for(const[h,b,_]of m)h.scrollTop!==b&&(h.scrollTop=b),h.scrollLeft!==_&&(h.scrollLeft=_)}function v(){const m=o(t).display;if(m==="inline"||m==="contents")return;const h=l();if(i())(r===null||Math.abs(h-r)>=1)&&p();else{const b=s();n?h+1>=b&&(n=!1):b>0&&h+1({_storeInstanceId:++dv,theme:"light",colorScheme:"default",reducedMotion:!1,highContrast:!1,activeTab:"doxa-regions",sidebarCollapsed:!1,mobileMenuOpen:!1,legendState:"collapsed",_customLegendHeight:null,searchMode:!1,hamburgerMenuOpen:!1,legendMode:"prayer",prayerFilter:null,engagementFilter:null,adoptionFilter:null,religionFilter:null,selectedPeopleGroup:null,breakpoint:"desktop",windowSize:{width:window.innerWidth,height:window.innerHeight},toasts:[],nextToastId:1,toastDuration:5e3,openModals:[],modalData:new Map,isGlobalLoading:!1,globalLoadingMessage:"Loading...",loadingStates:new Map,interactionHistory:[],maxHistoryLength:20,keyboardShortcutsEnabled:!0,screenReaderAnnouncement:"",focusTrapActive:!1,debugMode:!1,showPerformanceOverlay:!1}),getters:{isDarkTheme:e=>!1,isMobile:e=>e.breakpoint==="mobile",isTablet:e=>e.breakpoint==="tablet",isDesktop:e=>e.breakpoint==="desktop"||e.breakpoint==="wide",legendHeight:e=>e._customLegendHeight?e._customLegendHeight:e.legendState==="collapsed"?"48px":e.legendState==="open"?"30%":e.legendState==="fullyOpen"?"calc(100% - 80px)":"48px",caretRotation:e=>e.legendState==="collapsed"?0:90,showPullTab:e=>e.legendState==="open"||e.legendState==="fullyOpen",getToastsByType:e=>t=>e.toasts.filter(o=>o.type===t),hasOpenModal:e=>e.openModals.length>0,topModal:e=>e.openModals.length===0?null:e.openModals[e.openModals.length-1],isModalOpen:e=>t=>e.openModals.includes(t),isAnyLoading:e=>e.isGlobalLoading||e.loadingStates.size>0,isLoading:e=>t=>e.loadingStates.get(t)||!1},actions:{setTheme(e){if(!["light","dark","auto"].includes(e))return;e="light",this.theme=e;const o=this.isDarkTheme;document.documentElement.setAttribute("data-theme",o?"dark":"light");try{localStorage.setItem("theme",e)}catch{}},toggleTheme(){const e=this.theme==="light"?"dark":"light";this.setTheme(e)},setColorScheme(e){this.colorScheme=e,document.documentElement.setAttribute("data-color-scheme",e)},toggleReducedMotion(){this.reducedMotion=!this.reducedMotion,document.documentElement.setAttribute("data-reduced-motion",this.reducedMotion)},toggleHighContrast(){this.highContrast=!this.highContrast,document.documentElement.setAttribute("data-high-contrast",this.highContrast)},setActiveTab(e){this.activeTab=e,this.addToHistory({type:"tab-change",tabId:e,timestamp:Date.now()})},toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed},openMobileMenu(){this.mobileMenuOpen=!0},closeMobileMenu(){this.mobileMenuOpen=!1},setLegendMode(e){["prayer","detail"].includes(e)&&(this.legendMode=e)},setPrayerFilter(e){[null,"noPrayer","hasPrayer","fullPrayer"].includes(e)&&(this.prayerFilter=e)},setEngagementFilter(e){[null,"notEngaged","hasEngagement"].includes(e)&&(this.engagementFilter=e)},setAdoptionFilter(e){[null,"notAdopted","hasAdoption"].includes(e)&&(this.adoptionFilter=e)},setReligionFilter(e){[null,"C","M","H","B","E","J","S","N","O","U"].includes(e)&&(this.religionFilter=e)},selectPeopleGroup(e){const t=e&&!this.selectedPeopleGroup;this.selectedPeopleGroup=e,e?(t&&(this._legendStateBeforeDetail=this.legendState),this.legendState="open",this._customLegendHeight=null,this.setLegendMode("detail")):(this._legendStateBeforeDetail&&(this.legendState=this._legendStateBeforeDetail),this._legendStateBeforeDetail=null,this._customLegendHeight=null,this.setLegendMode("prayer"))},setLegendState(e){["collapsed","open","fullyOpen"].includes(e)&&(this.legendState=e)},toggleSearchMode(){this.searchMode=!this.searchMode},setSearchMode(e){this.searchMode=e},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},updateBreakpoint(e){let t;e<768?t="mobile":e<1024?t="tablet":e<1920?t="desktop":t="wide",t!==this.breakpoint&&(this.breakpoint=t)},updateWindowSize(e,t){this.windowSize.width=e,this.windowSize.height=t,this.updateBreakpoint(e)},showToast(e){const{message:t,type:o="info",duration:a=this.toastDuration,action:n=null,persistent:r=!1}=e,i={id:this.nextToastId++,message:t,type:o,duration:a,action:n,persistent:r,createdAt:Date.now()};return this.toasts.push(i),!r&&a>0&&setTimeout(()=>{this.removeToast(i.id)},a),i.id},showSuccess(e,t={}){return this.showToast({message:e,type:"success",...t})},showError(e,t={}){return this.showToast({message:e,type:"error",duration:7e3,...t})},showWarning(e,t={}){return this.showToast({message:e,type:"warning",...t})},showInfo(e,t={}){return this.showToast({message:e,type:"info",...t})},removeToast(e){const t=this.toasts.findIndex(o=>o.id===e);t!==-1&&this.toasts.splice(t,1)},clearAllToasts(){this.toasts=[]},openModal(e,t={}){this.openModals.includes(e)||(this.openModals.push(e),this.modalData.set(e,t),this.focusTrapActive=!0)},closeModal(e=null){if(e){const t=this.openModals.indexOf(e);t!==-1&&(this.openModals.splice(t,1),this.modalData.delete(e))}else{const t=this.openModals.pop();t&&this.modalData.delete(t)}this.openModals.length===0&&(this.focusTrapActive=!1)},closeAllModals(){this.openModals=[],this.modalData.clear(),this.focusTrapActive=!1},getModalData(e){return this.modalData.get(e)},showGlobalLoading(e="Loading..."){this.isGlobalLoading=!0,this.globalLoadingMessage=e},hideGlobalLoading(){this.isGlobalLoading=!1},setLoading(e,t=!0){t?this.loadingStates.set(e,!0):this.loadingStates.delete(e)},addToHistory(e){this.interactionHistory.push(e),this.interactionHistory.length>this.maxHistoryLength&&this.interactionHistory.shift()},clearHistory(){this.interactionHistory=[]},announce(e,t="polite"){this.screenReaderAnnouncement=e,setTimeout(()=>{this.screenReaderAnnouncement===e&&(this.screenReaderAnnouncement="")},1e3)},toggleKeyboardShortcuts(){this.keyboardShortcutsEnabled=!this.keyboardShortcutsEnabled},toggleDebugMode(){this.debugMode=!this.debugMode},togglePerformanceOverlay(){this.showPerformanceOverlay=!this.showPerformanceOverlay},toggleLegend(){this.legendState==="fullyOpen"?this.legendState="open":this.legendState==="open"?this.legendState="collapsed":this.legendState="open",this._customLegendHeight=null},openLegend(){this.legendState="open",this._customLegendHeight=null},fullyOpenLegend(){this.legendState="fullyOpen",this._customLegendHeight=null},collapseLegend(){this.legendState="collapsed",this._customLegendHeight=null},setLegendHeight(e){this._customLegendHeight=e},handleLegendItemClick(){this.legendState==="fullyOpen"&&(this.legendState="open")},enableSearchMode(){this.searchMode=!0},disableSearchMode(){this.searchMode=!1},toggleHamburgerMenu(){this.hamburgerMenuOpen=!this.hamburgerMenuOpen},openHamburgerMenu(){this.hamburgerMenuOpen=!0},closeHamburgerMenu(){this.hamburgerMenuOpen=!1},init(){let e=null;try{e=localStorage.getItem("theme")}catch{}e&&this.setTheme(e),new ResizeObserver(o=>{for(const a of o)this.updateWindowSize(a.contentRect.width,a.contentRect.height)}).observe(document.documentElement),window.matchMedia&&(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",o=>{this.theme==="auto"&&document.documentElement.setAttribute("data-theme",o.matches?"dark":"light")}),window.matchMedia("(prefers-reduced-motion: reduce)").addEventListener("change",o=>{this.reducedMotion=o.matches,document.documentElement.setAttribute("data-reduced-motion",o.matches)}))}}}),gv=Yl("map",{state:()=>({maps:{},activeMapId:null,selectedRegion:null,selectedFamily:null,selectedAffinityBlock:null,selectedLanguage:null,selectedDialect:null,activeLegendTab:"family",selectedResource:null,selectedPeopleGroup:null,selectedPinIds:[],globalFilters:{},searchQuery:"",autoFly:{isActive:!1,speed:1,interval:5e3,currentIndex:0,items:[],timerId:null},guidedTour:{isActive:!1,currentStep:0,steps:[]},showClusters:!1,clusterMode:"region",clusteringMode:"off",clusterPinOpacity:.6,clusterFilterProperty:null,clusterFilterValue:null,flySpeed:"normal",fullscreenMapId:null,preferences:{theme:"light",defaultMapStyle:"streets",enableAnimations:!0,autoSavePreferences:!0}}),getters:{getMapById:e=>t=>e.maps[t],activeMap:e=>e.activeMapId?e.maps[e.activeMapId]:null,hasMap:e=>t=>t in e.maps,allMapIds:e=>Object.keys(e.maps),hasSelection:e=>!!(e.selectedRegion||e.selectedFamily||e.selectedAffinityBlock||e.selectedPeopleGroup),isAutoFlying:e=>e.autoFly.isActive,isGuidedTourActive:e=>e.guidedTour.isActive,isMapFullscreen:e=>t=>e.fullscreenMapId===t},actions:{registerMap(e,t,o={}){let a=1.5;o.zoom!==void 0?a=o.zoom:t&&typeof t.getZoom=="function"&&(a=t.getZoom());let n=[0,0];if(o.center)n=o.center;else if(t&&typeof t.getCenter=="function"){const r=t.getCenter();r&&(n=[r.lng,r.lat])}this.maps[e]={instance:t,config:o,isReady:!1,zoom:a,center:n,registeredAt:Date.now()},this.activeMapId||(this.activeMapId=e)},setMapReady(e){const t=this.maps[e];t&&(t.isReady=!0)},updateMapState(e,t){const o=this.maps[e];o&&Object.assign(o,t)},unregisterMap(e){if(delete this.maps[e],this.activeMapId===e){const t=this.allMapIds;this.activeMapId=t.length>0?t[0]:null}},setActiveMap(e){e in this.maps&&(this.activeMapId=e)},selectRegion(e){this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedRegion=e},selectFamily(e){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedFamily=e},setActiveLegendTab(e){this.activeLegendTab=e},selectLanguage(e){this.selectedRegion=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedFamily=null,this.selectedDialect=null,this.selectedLanguage=e},selectDialect(e){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedDialect=e},selectAffinityBlock(e){this.selectedRegion=null,this.selectedFamily=null,this.selectedPeopleGroup=null,this.selectedAffinityBlock=e},selectPeopleGroup(e){this.selectedPeopleGroup=e},selectResource(e){this.selectedRegion=null,this.selectedFamily=null,this.selectedAffinityBlock=null,this.selectedPeopleGroup=null,this.selectedResource===e?this.selectedResource=null:this.selectedResource=e},clearSelections(){this.selectedRegion=null,this.selectedFamily=null,this.selectedLanguage=null,this.selectedDialect=null,this.selectedAffinityBlock=null,this.selectedResource=null,this.selectedPeopleGroup=null,this.selectedPinIds=[],this.showClusters=!1,this.clusterMode="region"},setSelectedPinIds(e){this.selectedPinIds=e||[]},setFilter(e,t){this.globalFilters[e]=t},removeFilter(e){delete this.globalFilters[e]},clearFilters(){this.globalFilters={},this.searchQuery=""},setSearchQuery(e){this.searchQuery=e},startAutoFly(e,t=1){this.stopAutoFly(),this.autoFly.isActive=!0,this.autoFly.speed=t,this.autoFly.items=e,this.autoFly.currentIndex=0},stopAutoFly(){this.autoFly.timerId&&(clearInterval(this.autoFly.timerId),this.autoFly.timerId=null),this.autoFly.isActive=!1,this.autoFly.currentIndex=0},setAutoFlySpeed(e){this.autoFly.speed=Math.max(.5,Math.min(2,e))},nextAutoFlyItem(){if(!this.autoFly.isActive||this.autoFly.items.length===0)return;this.autoFly.currentIndex=(this.autoFly.currentIndex+1)%this.autoFly.items.length;const e=this.autoFly.items[this.autoFly.currentIndex];e.type==="region"?this.selectRegion(e):e.type==="family"&&this.selectFamily(e)},toggleClusters(e){typeof e=="boolean"?this.showClusters=e:this.showClusters=!this.showClusters},setClusterMode(e){["region","language-family","affinity-block","mst","resource"].includes(e)&&(this.clusterMode=e)},setClusteringMode(e){["off","mapbox","mst","network"].includes(e)&&(this.clusteringMode=e,this.showClusters=e!=="off")},setClusterFilter(e,t){this.clusterFilterProperty=e||null,this.clusterFilterValue=t||null},clearClusterFilter(){this.clusterFilterProperty=null,this.clusterFilterValue=null},setFlySpeed(e){["slow","normal","fast"].includes(e)&&(this.flySpeed=e)},setSelectedFamily(e){this.selectFamily(e)},clearSelectedFamily(){this.selectFamily(null)},setSelectedRegion(e){this.selectRegion(e)},clearSelectedRegion(){this.selectRegion(null)},clearSelectedResource(){this.selectResource(null)},clearSelectedLanguage(){this.selectLanguage(null)},clearSelectedDialect(){this.selectDialect(null)},toggleFullscreen(e){this.fullscreenMapId===e?this.fullscreenMapId=null:this.fullscreenMapId=e},loadPreferences(){try{const e=localStorage.getItem("mapUserPreferences");if(e){const t=JSON.parse(e);this.preferences={...this.preferences,...t}}}catch(e){console.error("[mapStore] Failed to load preferences:",e)}},savePreferences(){try{localStorage.setItem("mapUserPreferences",JSON.stringify(this.preferences))}catch(e){console.error("[mapStore] Failed to save preferences:",e)}},setPreference(e,t){this.preferences[e]=t,this.preferences.autoSavePreferences&&this.savePreferences()}}}),hv=Yl("data",{state:()=>({sources:{},loadingStates:{}}),actions:{async load(e,t){if(!this.sources[e]){this.loadingStates[e]={isLoading:!0,error:null};try{const o=await t();this.sources[e]=sn({features:o,timestamp:Date.now()}),this.loadingStates[e]={isLoading:!1,error:null}}catch(o){console.error(`[dataStore] Failed to load source "${e}":`,o),this.loadingStates[e]={isLoading:!1,error:o}}}},clearSource(e){delete this.sources[e],delete this.loadingStates[e]},cacheSourceData(e,t){this.sources[e]=sn({features:t.normalizedData||[],timestamp:t.timestamp||Date.now()})},hasSourceData(e){return!!this.sources[e]},getSourceData(e){return this.sources[e]?{normalizedData:this.sources[e].features}:null}},getters:{getData:e=>t=>{var o;return((o=e.sources[t])==null?void 0:o.features)??null},isLoading:e=>t=>{var o;return((o=e.loadingStates[t])==null?void 0:o.isLoading)??!1},getError:e=>t=>{var o;return((o=e.loadingStates[t])==null?void 0:o.error)??null}}}),Vr={_meta:{_comment:"Single source of truth for data-source connections across all doxa-maps bundles.",_comment_token:"Mapbox access token is fetched at runtime from window.MAP_TOKEN_URL (same modular pattern as window.MAP_APP_API_URL). Not hardcoded to any host — set mapboxTokenUrl below or override window.MAP_TOKEN_URL on the host page.",mapboxTokenUrl:"window.MAP_TOKEN_URL"},activeSource:"pray-tools",sources:{"pray-tools":{id:"pray-tools",name:"Prayer.Tools API",type:"rest-api",description:"pray.doxa.life live API — people-group prayer, engagement, and adoption data. Base URL read from window.MAP_APP_API_URL or VITE_API_BASE_URL at runtime.",endpoints:{bulk:"/api/people-groups/list",detail:"/api/people-groups/detail/{slug}",statistics:"/api/people-groups/statistics"},queryParams:{lang:"en"},defaultFields:["slug","name","latitude","longitude","wagf_region","wagf_block","wagf_member","rop1","imb_reg_of_people_2","imb_reg_of_people_25","imb_reg_of_people_3","country_code","religion","population","has_photo","image_url","people_praying","people_committed","adopted_by_churches","engagement_status","imb_gsec","primary_language","imb_language_family","imb_language_class","imb_language_speakers"],pollFields:["slug","people_praying"],pollInterval:3e5,fallbackSourceId:null,fieldMappings:{uniqueId:"slug",slug:"slug",name:"name",latitude:"latitude",longitude:"longitude",wagfRegion:"wagf_region",doxaRegion:"wagf_region",wagfBlock:"wagf_block",wagfMember:"wagf_member",affinityBlock:"rop1",countryIso:"country_code",religion:"religion",religionCode:"religion",population:"population",hasPhoto:"has_photo",imageUrl:"image_url",photoUrl:"image_url",peoplePraying:"people_praying",peopleCommitted:"people_committed",engagementStatus:"engagement_status",adoptionStatus:"adopted_by_churches",language:"primary_language",cluster:"imb_reg_of_people_2",peopleGroup:"imb_reg_of_people_25",peopleGroupCountry:"imb_reg_of_people_3",languageFamily:"imb_language_family",languageClass:"imb_language_class",languageSpeakers:"imb_language_speakers"},imageConfig:{useField:"imageUrl",fallbackField:null,fallbackUrlTemplate:null,placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg",useSvgPlaceholder:!0}},"doxa-csv":{id:"doxa-csv",name:"DOXA People Groups CSV",type:"csv",path:"assets/data/Joshua-project-ids-Doxa-1439.csv",description:"People groups dataset from DOXA / Joshua Project",fieldMappings:{uniqueId:"ROP3",peopleGroupId:"ROP3",countryCode:"ROG",peopleId3:"PeopleID3",name:"Name",displayName:"NmDisp",alternateName:"NmAlt",description:"PeopleDesc",locationDescription:"LocationDe",country:"Ctry",countryIso:"ISOalpha3",region:"Regn",subRegion:"RegnSub",wagfRegion:"WAGF Region",doxaRegion:"WAGF Region",wagfBlock:"WAGF BLOCK",affinityBloc:"Affbloc",affinityBlock:"ROP1",affinityCode:"AffCd",affinityName:"Aff",peopleCluster:"PplClstr",ethneName:"Ethne",latitude:"Latitude",longitude:"Longitude",population:"Pop",populationClass:"PopCls",status:"Status",engagementStatus:"EngStat",evangelicalLevel:"EvngLvl",gsec:"GSEC",gsecBrief:"GSECbrf",gsecLong:"GSEClng",spiScore:"SPI",spiDescription:"SPIdesc",language:"Lang",languageCode:"ROL",languageFamily:"LangFamily",religion:"Rlgn",religionCode:"ROR",religionDescription:"RORdesc",religionBase:"RlgnBs",religionDiv:"RlgnDiv",bible:"Bible",jesusFilm:"Jesus",radio:"Radio",gospel:"Gospel",audio:"Audio",stories:"Stories",resourcesTotal:"ResTot",bibleLevel:"LvlBible",yearPublished:"YrPub",photoCredit:"PicCrdt",photoUrl:"PicURL",hasPhoto:"Photo",isIndigenous:"Indigenous"},imageConfig:{useField:"photoUrl",fallbackField:"peopleId3",fallbackUrlTemplate:"https://joshuaproject.net/assets/media/profiles/photos/p{peopleId3}.jpg",placeholderUrl:"https://www.peoplegroups.org/images/pgphotosearch/NoImageAvailable_search.jpg"}}},systemFields:{uniqueId:{description:"Unique identifier per row (slug for API, ROP3+ROG for CSV)",required:!0},peopleGroupId:{description:"People group ID — same group can appear in multiple countries",required:!0},name:{description:"People group display name",required:!0},latitude:{description:"Latitude coordinate for map pin",required:!0},longitude:{description:"Longitude coordinate for map pin",required:!0},engagementStatus:{description:"Boolean — true if engaged_status = 'engaged'",required:!1},adoptionStatus:{description:"Boolean — true if adopted_by_churches > 0",required:!1},peoplePraying:{description:"Number of people currently praying for this group — from pray-tools API",required:!1},peopleCommitted:{description:"Raw count of committed workers for this group — source of engagementStatus",required:!1},languageFamily:{description:"Language family name",required:!1},religion:{description:"Primary religion",required:!1},population:{description:"Population count",required:!1},doxaRegion:{description:"WAGF/DOXA region name",required:!1},photoUrl:{description:"URL to people group photo",required:!1},description:{description:"People group description text",required:!1}}},fv=".profile-loader[data-locale-pending][data-v-2a1bc53c] .stl-tabs,.profile-loader[data-locale-pending][data-v-2a1bc53c] .stl-title,.profile-loader[data-locale-pending][data-v-2a1bc53c] .stl-rows,.profile-loader[data-locale-pending][data-v-2a1bc53c] .legend-title,.profile-loader[data-locale-pending][data-v-2a1bc53c] .legend-content,.profile-loader[data-locale-pending][data-v-2a1bc53c] .legend-reopen-label,.profile-loader[data-locale-pending][data-v-2a1bc53c] .lt-btn-text,.profile-loader[data-locale-pending][data-v-2a1bc53c] .rd-topbar,.profile-loader[data-locale-pending][data-v-2a1bc53c] .rd-exportbar{visibility:hidden}.profile-loader[data-v-2a1bc53c]{border-radius:var(--map-radius-corners, var(--map-radius, 0px));width:100%;height:100%;min-height:var(--profile-min-h, 100svh);position:relative}.profile-loader.has-screen-notice[data-v-2a1bc53c]{display:flex;flex-direction:column}.profile-loader.has-screen-notice[data-v-2a1bc53c]>:not(.lsn-bar){flex:1 1 auto;min-height:0;position:relative!important;inset:auto!important}.profile-error[data-v-2a1bc53c]{padding:1rem;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;font-family:monospace;font-size:13px}@supports not (height: 100svh){.profile-loader[data-v-2a1bc53c]{min-height:var(--profile-min-h, 100vh)}}",mv=["dir","data-locale-pending"],bv={key:0,class:"profile-error"},$v={key:1,class:"profile-error"},_v=vn({__name:"ProfileLoader",props:{profileConfig:{type:String,default:""}},setup(e){var ge;const o=e,a=dt("profileConfig",null),n=ne(()=>{var I;if(!o.profileConfig)return null;let j;try{j=JSON.parse(o.profileConfig)}catch{return console.error("[ProfileLoader] Invalid profile-config JSON:",o.profileConfig),null}if(j&&j.assetsBase===void 0){const ce=(I=a==null?void 0:a.value)==null?void 0:I.assetsBase;typeof ce=="string"&&ce&&(j.assetsBase=ce)}return j}),r=dt("profileModules",null);if(!r)throw new Error('[ProfileLoader] No profileModules provided. Bundle entry must `app.provide("profileModules", import.meta.glob("./*.vue"))`');const i=(()=>{const j=Object.keys(r||{});if(j.length!==1)return null;const I=j[0].match(/^\.\/(.+)\.vue$/);return I?I[1]:null})(),s=ne(()=>{var j;return((j=n.value)==null?void 0:j.profile)||i||null}),l=S_(),c=ne(()=>{var I;const j=(I=n.value)==null?void 0:I.tk;return typeof j=="string"&&j?j:l.value||""});$t(()=>{var j;return(j=n.value)==null?void 0:j.tk},j=>{typeof j=="string"&&j&&Xl(j)},{immediate:!0}),$t(()=>{var j;return(j=n.value)==null?void 0:j.tokenUrl},j=>{var I;j&&!((I=n.value)!=null&&I.tk)&&!l.value&&P_(j)},{immediate:!0});const u=ne(()=>{var j;return((j=n.value)==null?void 0:j.dataSource)||Vr.activeSource}),d=ne(()=>{var j;return((j=n.value)==null?void 0:j.colorSet)||"default"}),p=ne(()=>!1),v=ne(()=>{var j;return((j=n.value)==null?void 0:j.pinHint)!==!1}),m=ne(()=>{var I,ce;const j=(((I=n.value)==null?void 0:I.locale)||((ce=n.value)==null?void 0:ce.lang)||Lh()||"").split("-")[0].toLowerCase();return Ur.includes(j)?j:""}),h=dt("appI18n",null);zd(()=>{m.value&&(h&&(h.global.locale.value=m.value),Th(m.value),_c(h,m.value).catch(()=>{}))});const b=ne(()=>{var j,I;return m.value||((I=(j=h==null?void 0:h.global)==null?void 0:j.locale)==null?void 0:I.value)||"en"}),_=ne(()=>ps.has(b.value)?"rtl":"ltr"),{blocked:f,advise:$,dismiss:k,label:g}=sv(n),y=ve(!1);zd(j=>{const I=b.value;if(!ps.has(I)){y.value=!1;return}let ce=!0;j(()=>{ce=!1}),y.value=!0,I1(I).finally(()=>{ce&&(y.value=!1)})});const x=ne(()=>{var j;return((j=n.value)==null?void 0:j.instanceId)||"doxa-map-"+Math.random().toString(36).slice(2,9)}),S=ne(()=>{if(!s.value)return null;const j=`./${s.value}.vue`;return r[j]?Rh(r[j]):(console.error(`[ProfileLoader] Profile not found: "${s.value}". Available:`,Object.keys(r)),null)});_o("mapboxToken",c),_o("dataSource",u),_o("colorSet",d),_o("profileConfig",n),_o("instanceId",x),_o("lang",b);const P=pv(),G=gv(),Z=hv();try{const j=typeof localStorage<"u"?localStorage.getItem("theme"):null;j&&((ge=P.setTheme)==null||ge.call(P,j))}catch{}_o("uiStore",P),_o("mapStore",G),_o("dataStore",Z);const C=ve(null);let N=null;return lo(()=>{const j=C.value,I=j&&j.getRootNode?j.getRootNode().host:null;if(!j||!I)return;const ce=cv(j,I);ce.probeOnce(),typeof ResizeObserver<"u"&&(N=new ResizeObserver(()=>ce.follow()),N.observe(I))}),Zt(()=>{N&&(N.disconnect(),N=null)}),(j,I)=>(Y(),ae("div",{ref_key:"loaderEl",ref:C,class:at(["profile-loader",{"has-screen-notice":z($)}]),dir:_.value,"data-locale-pending":y.value?"":null},[n.value?S.value?z(f)?(Y(),Nt(Fh,{key:2,mode:"desktop-only",label:z(g),locale:b.value},null,8,["label","locale"])):(Y(),ae(et,{key:3},[z($)?(Y(),Nt(Fh,{key:0,mode:"larger-screens",locale:b.value,onDismiss:z(k)},null,8,["locale","onDismiss"])):Ee("",!0),(Y(),Nt(Al(S.value)))],64)):(Y(),ae("div",$v,[E("p",null,[I[1]||(I[1]=Jt("⚠️ Profile ",-1)),E("strong",null,'"'+ue(s.value)+'"',1),I[2]||(I[2]=Jt(" not found.",-1))])])):(Y(),ae("div",bv,[...I[0]||(I[0]=[E("p",null,[Jt("⚠️ "),E("strong",null,"doxa-map"),Jt(": missing or invalid "),E("code",null,"profile-config"),Jt(" prop.")],-1),E("p",null,[Jt("Example: "),E("code",null,`profile-config='{"profile":"example-map","tk":"pk.eyJ..."}'`)],-1)])])),S.value&&p.value?(Y(),Nt(Al(z(null)),{key:4})):Ee("",!0),S.value&&v.value?(Y(),Nt(J1,{key:5})):Ee("",!0)],10,mv))}},[["styles",[fv]],["__scopeId","data-v-2a1bc53c"]]);function Ih(e,t,o){var n;const a=(n=e==null?void 0:e._context)==null?void 0:n.provides;if(a&&t in a){a[t]=o;return}e.provide(t,o)}function yv(e,t){var n;const o=(n=e==null?void 0:e._context)==null?void 0:n.provides,a=o?Object.getPrototypeOf(o):null;a&&Object.setPrototypeOf(o,null);try{return t()}finally{a&&Object.setPrototypeOf(o,a)}}function vv({profileModules:e={},configureApp:t=null}={}){return a_(_v,{configureApp(o){const a=b_();yv(o,()=>o.use(a));const n=O1();o.use(n),Ih(o,"appI18n",n),Ih(o,"profileModules",e),t&&t(o,{pinia:a,i18n:n})}})}const wv=Object.assign({"./poster-wall.vue":()=>Mt(()=>Promise.resolve().then(()=>pk),void 0),"./upg-100-list.vue":()=>Mt(()=>Promise.resolve().then(()=>zA),void 0),"./upg-100-mfe.vue":()=>Mt(()=>Promise.resolve().then(()=>DL),void 0)});function kv(){return vv({profileModules:wv,configureApp:(e,{pinia:t,i18n:o})=>{}})}const xv=kv();typeof customElements<"u"&&(customElements.get("my-upg-100-list-map")||customElements.define("my-upg-100-list-map",xv));const vc={default:"doxa",lists:[{id:"doxa",aliases:["2000","project-2000"],label:"Project 2000: DOXA's people groups",definition:"The people groups DOXA serves, as its live list gives them",source:"doxa",filter:null},{id:"unreached",aliases:["7000","project-7000"],label:"Project 7000: unreached people groups",definition:"IMB Lostness Priority 0-2 (Frontier, Pioneer or Expanding Unreached: under 2% evangelical)",source:"imb",filter:{lostness:[0,1,2]}},{id:"frontier",aliases:["4700","project-4700"],label:"Project 4700: frontier people groups",definition:"IMB Lostness Priority 0 (Frontier Unreached: 0.1% evangelical or less)",source:"imb",filter:{lostness:[0]}},{id:"frontier-500k",aliases:["700","project-700"],label:"Project 700: frontier people groups of 500,000 or more",definition:"IMB Lostness Priority 0 and Population of at least 500,000",source:"imb",filter:{lostness:[0],minPopulation:5e5}},{id:"unengaged",aliases:[],label:"Unengaged unreached people groups",definition:"IMB Lostness Priority 0-2 and Engagement Status Unengaged",source:"imb",filter:{lostness:[0,1,2],engagement:["Unengaged"]}}]},Sv=Fn&&Fn.tagName.toUpperCase()==="SCRIPT"&&Fn.src||new URL("my-upg-100-list.js",document.baseURI).href,Xo=e=>String(e||"").trim().replace(/\/+$/,"");function wc(){try{const t=String(Sv||"").split(/[?#]/)[0].match(/^(.*)\/([^/]+)\/([^/]+)\.js$/);return!t||t[2]!==t[3]?null:t[1]||null}catch{return null}}function Oh(e){const t=e==null?void 0:e.embedBaseUrl;if(typeof t=="string"&&t.trim())return Xo(t);if(typeof window<"u"){const o=window.MAP_EMBED_BASE_URL;if(typeof o=="string"&&o.trim())return Xo(o)}return Xo(wc()||"")}function da(e){const t=e==null?void 0:e.assetsBase;if(typeof t=="string"&&t.trim()){const a=Xo(t);if(/^https?:\/\//i.test(a)||a.startsWith("/"))return a}const o=Xo((e==null?void 0:e.treeBase)||"")||Xo(wc()||"");if(o)try{const a=typeof document<"u"?document.baseURI:void 0;return Xo(new URL(o+"/assets",a).href)}catch{return Xo(o+"/assets")}return"./assets"}function Pv(e){const t=a=>typeof a=="string"&&/^(https:\/\/|http:\/\/(127\.0\.0\.1|localhost)(:\d+)?\/)/i.test(a.trim()),o=e==null?void 0:e.shareBaseUrl;return t(o)?Xo(o):typeof window<"u"&&t(window.MAP_SHARE_BASE_URL)?Xo(window.MAP_SHARE_BASE_URL):Xo("")}function Av({shareUrl:e,embedPath:t,profileConfig:o}={}){const a=o||null,n=typeof window<"u",r=e||(a==null?void 0:a.shareUrl);if(typeof r=="string"&&r.trim())return r.trim();const i=String(t||(a==null?void 0:a.shareEmbedPath)||"").trim();if(i){if(/^https?:\/\//i.test(i))return i;if(i.startsWith("/"))return n?window.location.origin+i:i;const s=Oh(a),l=i.replace(/^\.\//,"");if(s)return s+"/"+l;if(typeof document<"u")try{return new URL(l,document.baseURI).href}catch{}return l}return n?window.location.origin+window.location.pathname:""}const qr=vc.default,kc=new Map;for(const e of vc.lists){kc.set(e.id,e);for(const t of e.aliases||[])kc.set(String(t).toLowerCase(),e)}function Dh(e){return kc.get(String(e??"").toLowerCase().trim())||null}function zh(e){let t=e;if(t&&typeof t=="object"&&"value"in t&&!("list"in t)&&!("profile"in t)&&(t=t.value),typeof t=="string")try{t=JSON.parse(t)}catch{t=null}return t&&typeof t=="object"?t:null}const Gh=new Set;function Qn(e){const t=zh(e),o=t==null?void 0:t.list,a=typeof location<"u"?new URLSearchParams(location.search).get("list"):null,n=typeof window<"u"?window.MAP_LIST:void 0,r=o||a||n||qr,i=Dh(r);return i?i.id:(Gh.has(r)||(Gh.add(r),console.warn(`[list] unknown people-group list "${r}", showing "${qr}". Known: ${vc.lists.map(s=>s.id).join(", ")}`)),qr)}const fs=new Map;function Lv(e,t){const o=`${da(zh(t))}/people-groups/lists/${e}.json`;return fs.has(o)||fs.set(o,es(o).then(a=>{if(!a.ok)throw new Error(`HTTP ${a.status}`);return a.json()}).then(a=>new Set(Array.isArray(a==null?void 0:a.slugs)?a.slugs:[])).catch(a=>{throw fs.delete(o),new Error(`list "${e}" membership ${o}: ${a.message}`)})),fs.get(o)}async function ms(e,t,{key:o=a=>a==null?void 0:a.slug}={}){const a=Qn(t);if(a===qr||!Array.isArray(e))return e;try{const n=await Lv(a,t);return e.filter(r=>n.has(o(r)))}catch(n){return console.error(`[list] ${n.message}. Showing no people groups rather than the wrong list.`),[]}}const jh=Symbol("poster-wall"),Cv={class:"sec-name"},Tv={class:"sec-count"},Ev={key:1,class:"perrow"},Mv=["for"],Nv=["id"],Rv=["value"],Fv=["data-list-id"],Iv=["aria-pressed","aria-label","onClick"],Ov={class:"hcount"},Dv={class:"hlabel"},zv=["aria-label","onClick"],Gv={class:"hcount"},jv={class:"hlabel"},Bv={class:"main"},Hv={key:0,class:"ph is-soon"},Uv={class:"ph-label"},Wv={key:0,class:"ph-count"},Kv={class:"ph-soon"},Vv={class:"ph-label"},qv={key:0,class:"ph-count"},Yv=["src","alt","role","tabindex","title","onClick","onKeydown","onError"],Zv={key:3,class:"ph"},Jv={class:"ph-label"},Xv={key:0,class:"ph-count"},Qv={class:"ph-note"},ew={class:"tape pfs"},tw=["aria-expanded","onClick"],ow=["onClick"],aw=["aria-expanded","onClick"],nw=["aria-label"],rw=["onClick"],iw=["aria-label"],sw=["onClick"],lw={__name:"PosterSection",props:{sec:{type:Object,required:!0},z:{type:Number,default:0}},setup(e){const{collapsible:t,columnsControl:o,headerAction:a,hidePrayerListWhenSoon:n,instanceId:r,previewSrc:i,sectionHeads:s,unit:l,unsupported:c,PER_ROW_AUTO:u,T:d,canPrintRows:p,countOf:v,deckKey:m,deckOpenFor:h,emit:b,exportPoster:_,generated:f,gridStyle:$,hud:k,isCollapsed:g,lastShown:y,missing:x,onPreviewError:S,packetVariants:P,perRowChoices:G,perRowShown:Z,pickedStock:C,previewIsControl:N,previewUrl:ge,printDeckAt:j,printPacketAs:I,sectionCount:ce,setPreviewEl:H,showOnMap:X,stockLabel:D,stockOptions:T,t:V,toggleDeck:q,toggleSection:we}=dt(jh);return(Ae,pe)=>(Y(),ae("section",{class:"sec",style:It({zIndex:e.z})},[z(s)?(Y(),Nt(Al(z(t)?"button":"div"),{key:0,class:at(["sec-head",{"is-toggle":z(t),"is-shut":z(t)&&z(g)(e.sec.name)}]),type:z(t)?"button":null,"aria-expanded":z(t)?String(!z(g)(e.sec.name)):null,onClick:pe[0]||(pe[0]=de=>z(t)&&z(we)(e.sec.name))},{default:Lo(()=>[z(t)?(Y(),ae("span",{key:0,class:at(["sec-caret",{"is-open":!z(g)(e.sec.name)}])},"▶",2)):Ee("",!0),E("h3",Cv,ue(e.sec.name),1),E("span",Tv,ue(z(ce)(e.sec)),1)]),_:1},8,["class","type","aria-expanded"])):Ee("",!0),z(o)&&!z(g)(e.sec.name)?(Y(),ae("div",Ev,[E("label",{class:"perrow__label",for:`perrow-${z(r)}-${e.sec.name}`},ue(z(V)("buttons.postersPerRow")),9,Mv),Ni(E("select",{id:`perrow-${z(r)}-${e.sec.name}`,class:"perrow__select","onUpdate:modelValue":pe[1]||(pe[1]=de=>Ht(Z)?Z.value=de:null)},[(Y(!0),ae(et,null,oo(z(G),de=>(Y(),ae("option",{key:de,value:de},ue(de===z(u)?z(V)("buttons.postersPerRowAuto"):de),9,Rv))),128))],8,Nv),[[l_,z(Z),void 0,{number:!0}]])])):Ee("",!0),Ni(E("div",{class:"grid",style:It(z($))},[(Y(!0),ae(et,null,oo(e.sec.items,de=>(Y(),ae("div",{key:de.id,class:at(["card",{"is-last":z(y)===de.id,"has-tape-open":z(h)===z(m)(de.id,"deck")||z(h)===z(m)(de.id,"packet")}]),"data-list-id":de.id},[z(a)?(Y(),ae("button",{key:1,type:"button",class:"tape tape-h","aria-label":z(V)(z(a).ariaKey||z(a).labelKey,{label:de.label}),onClick:be=>z(b)("header-action",de)},[de.count!=null?(Y(),ae(et,{key:0},[E("span",Gv,ue(de.count)+" "+ue(z(l)),1),pe[3]||(pe[3]=E("span",{class:"hsep"},"·",-1))],64)):Ee("",!0),E("span",jv,ue(z(V)(z(a).labelKey)),1)],8,zv)):(Y(),ae("button",{key:0,type:"button",class:"tape tape-h","aria-pressed":z(y)===de.id?"true":"false","aria-label":z(V)("buttons.showOnMapAria",{label:de.label}),onClick:be=>z(X)(de)},[E("span",Ov,ue(de.count)+" "+ue(z(l)),1),pe[2]||(pe[2]=E("span",{class:"hsep"},"·",-1)),E("span",Dv,ue(z(V)("buttons.showOnMap")),1)],8,Iv)),E("div",Bv,[z(c)(de)?(Y(),ae("div",Hv,[E("div",Uv,ue(de.label),1),de.count?(Y(),ae("div",Wv,ue(z(v)("wall.peopleGroupCount",de.count)),1)):Ee("",!0),E("div",Kv,ue(z(c)(de)),1)])):z(i)&&!z(f)[de.id]&&!z(x)[de.id]?(Y(),ae("div",{key:1,class:"ph is-pending",ref_for:!0,ref:be=>z(H)(de.id,be)},[E("div",Vv,ue(de.label),1),de.count?(Y(),ae("div",qv,ue(z(v)("wall.peopleGroupCount",de.count)),1)):Ee("",!0)],512)):z(x)[de.id]?(Y(),ae("div",Zv,[E("div",Jv,ue(de.label),1),de.count?(Y(),ae("div",Xv,ue(z(v)("wall.peopleGroupCount",de.count)),1)):Ee("",!0),E("div",Qv,ue(z(d)("poster.preview_unavailable","preview unavailable")),1)])):(Y(),ae("img",{key:2,class:at(["img",{"is-clickable":z(N)}]),src:z(i)?z(f)[de.id]:z(ge)(de.id),alt:z(N)?z(k)("wall.posterAltAction","{label} — prayer poster (click to preview and print)",{label:de.label}):z(k)("wall.posterAlt","{label} — prayer poster",{label:de.label}),loading:"lazy",decoding:"async",role:z(N)?"button":null,tabindex:z(N)?0:null,title:z(N)?z(V)("buttons.previewPrintPoster",{label:de.label}):null,onClick:be=>z(N)&&z(_)(de),onKeydown:[Wl(Yt(be=>z(N)&&z(_)(de),["prevent"]),["enter"]),Wl(Yt(be=>z(N)&&z(_)(de),["prevent"]),["space"])],onError:be=>z(S)(de.id)},null,42,Yv)),E("fieldset",ew,[E("legend",null,ue(z(V)("buttons.printOptions")),1),z(n)&&!z(p)?Ee("",!0):(Y(),ae("button",{key:0,type:"button",class:"pbtn","aria-expanded":String(z(h)===z(m)(de.id,"packet")),onClick:Yt(be=>z(q)(de.id,be,"packet"),["stop"])},ue(z(V)("buttons.prayerList")),9,tw)),E("button",{type:"button",class:"pbtn",onClick:be=>z(_)(de)},ue(z(V)("buttons.posterMap")),9,ow),z(p)?(Y(),ae("button",{key:1,type:"button",class:"pbtn pbtn-deck","aria-expanded":String(z(h)===z(m)(de.id,"deck")),onClick:Yt(be=>z(q)(de.id,be,"deck"),["stop"])},ue(z(V)("buttons.cardDeck")),9,aw)):Ee("",!0)]),z(h)===z(m)(de.id,"packet")?(Y(),ae("div",{key:4,class:"tape pstocks",role:"group","aria-label":z(V)("buttons.packetVariantAria")},[(Y(!0),ae(et,null,oo(z(P),be=>(Y(),ae("button",{key:be.id,type:"button",class:"pstock",onClick:Yt(Ve=>z(I)(de,be.id),["stop"])},ue(z(V)(be.labelKey)),9,rw))),128))],8,nw)):Ee("",!0),z(p)&&z(T).length&&z(h)===z(m)(de.id,"deck")?(Y(),ae("div",{key:5,class:"tape pstocks",role:"group","aria-label":z(V)("buttons.cardStockAria")},[(Y(!0),ae(et,null,oo(z(T),be=>(Y(),ae("button",{key:be.id,type:"button",class:at(["pstock",{"is-on":z(C)===be.id}]),onClick:Yt(Ve=>z(j)(de,be.id),["stop"])},ue(z(D)(be.stock)),11,sw))),128))],8,iw)):Ee("",!0)])],10,Fv))),128))],4),[[Vp,!z(g)(e.sec.name)]])],4))}},cw='class="stage"';async function uw(e){const t=new Uint8Array(await e.slice(0,12).arrayBuffer()),o=(a,n)=>String.fromCharCode(...t.slice(a,n));return o(0,4)==="RIFF"&&o(8,12)==="WEBP"||t[0]===137&&o(1,4)==="PNG"||t[0]===255&&t[1]===216&&t[2]===255}async function Bh(e,t=fetch){let o;try{o=await t(e)}catch{return null}if(!o||!o.ok)return null;const a=(o.headers.get("content-type")||"").toLowerCase();if(a.startsWith("text/"))return null;const n=await o.blob();return a.startsWith("image/")||await uw(n)?n:null}async function Hh(e,t=fetch){const o=await t(e);if(!o.ok)return{html:null,status:o.status};const a=await o.text();return a.includes(cw)?{html:a,status:o.status}:{html:null,status:404}}function Uh(e,{autoprint:t=!1}={}){const o=document.createElement("iframe");o.setAttribute("aria-hidden","true"),o.style.cssText="position:fixed;right:0;bottom:0;width:1px;height:1px;opacity:0;border:0",document.body.appendChild(o);const a=o.contentDocument;if(!a)return o.remove(),null;a.open(),a.write(e),t&&a.write(' - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +