From 441fb6d92dc9c93bac98c419fc0f0a2e8112a158 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Fri, 2 Oct 2026 16:31:01 +0000 Subject: [PATCH] Rebuild the gallery for the Bless India Posters mount, and regenerate the tree and SRI --- public/dx-maps/doxa-maps-spa/doxa-maps-spa.js | 2 +- public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html | 2 +- public/dx-maps/doxa-maps-spa/doxa-maps-spa/index.html | 2 +- public/dx-maps/doxa-maps-spa/manifest.json | 4 ++-- public/dx-maps/manifest.json | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js index 844a01dbd..401b5f043 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js @@ -286,4 +286,4 @@ .mi-pointer, .mi .mi-pointer.mi-ctl{ animation:none; } .mi-chev{ transition:none; } } -`,"map-info"),(k,K)=>(C(),N("div",{ref_key:"rootEl",ref:Ne,class:"mi",dir:v()?"rtl":"ltr",lang:n()},[Ra(O("button",{ref_key:"btnEl",ref:V,type:"button",class:Ge(["mi-btn",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-label":ye(s)("mapInfo.open"),title:ye(s)("mapInfo.open"),"aria-haspopup":"dialog","aria-expanded":String(H.value),onClick:xe},[...K[1]||(K[1]=[O("svg",{viewBox:"0 0 24 24","aria-hidden":"true",focusable:"false"},[O("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"2"}),O("path",{d:"M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),O("circle",{cx:"12",cy:"17",r:"1.3",fill:"currentColor"})],-1)])],10,fh),[[Za,z()]]),W.value&&!H.value&&z()?(C(),N("div",{key:0,class:Ge(["mi-pointer",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-hidden":"true"},[O("span",null,B(ye(s)("mapInfo.pointer")),1),(C(),N("svg",hh,[e.placement==="top-left"?(C(),N("path",bh)):(C(),N("path",$h))]))],2)):se("",!0),W.value&&!H.value&&!z()&&f.value?(C(),N("div",{key:1,class:Ge(["mi-pointer mi-ctl",["mi-ctl-"+f.value.side,{"mi-ctl-strip":f.value.strip}]]),style:Ea(x()),"aria-hidden":"true"},[O("span",{dir:v()?"rtl":"ltr"},B(ye(s)("mapInfo.pointer")),9,_h),(C(),N("svg",vh,[f.value.side==="left"?(C(),N("path",yh)):(C(),N("path",wh))]))],6)):se("",!0),H.value?(C(),N("div",{key:2,class:"mi-scrim",onClick:jo(nt,["self"]),onKeydown:L},[O("div",{ref_key:"dialogEl",ref:I,class:"mi-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"mi-title-"+e.storageKey},[O("div",xh,[O("h2",{id:"mi-title-"+e.storageKey,class:"mi-title"},B(ye(s)("mapInfo.title")),9,Sh),O("button",{ref_key:"closeEl",ref:fe,type:"button",class:"mi-close","aria-label":ye(s)("mapInfo.close"),onClick:nt},"ร—",8,Lh)]),O("div",Th,[e.leadKey||e.lead?(C(),N("section",{key:0,class:"mi-bluf","aria-labelledby":"mi-bluf-"+e.storageKey},[O("h3",{id:"mi-bluf-"+e.storageKey,class:"mi-bluf-h"},B(ye(s)("mapInfo.shortDescription")),9,Eh),O("p",Oh,B(r(e.leadKey,e.lead)),1)],8,Ph)):se("",!0),(e.takeawayKey||e.takeaway)&&!c()?(C(),N("p",Mh,[O("b",null,B(ye(s)("mapInfo.takeaway")),1),Kt(" "+B(r(e.takeawayKey,e.takeaway)),1)])):se("",!0),c()?(C(),N("details",{key:"st-"+o.value,class:"mi-strategy"},[O("summary",Ah,[O("span",null,B(ye(s)("mapInfo.tabStrategy")),1),K[2]||(K[2]=O("span",{class:"mi-chev","aria-hidden":"true"},"โ–พ",-1))]),O("p",Ch,B(l()),1),p().length?(C(),N("ul",Ih,[(C(!0),N(ne,null,Xe(p(),(Y,oe)=>(C(),N("li",{key:oe},B(Y),1))),128))])):se("",!0)])):se("",!0),(C(!0),N(ne,null,Xe(e.examples,(Y,oe)=>Ra((C(),N("section",{key:oe,class:"mi-ex"},[O("h3",null,B(Te(Y)),1),Y.kind==="image"?(C(),N(ne,{key:0},[O("img",{class:"mi-img mi-poster",src:ce(Y.src),alt:Y.alt||Te(Y),decoding:"async",onError:ge=>Q[oe]=!0},null,40,Nh),Y.full?(C(),N("div",Fh,[O("a",{class:"mi-full",href:ce(Y.full),target:"_blank",rel:"noopener"},B(ye(s)("mapInfo.openFull")),9,Dh)])):se("",!0)],64)):Y.kind==="pages"&&(Y.pages||[]).length?(C(),N(ne,{key:1},[ke[oe]?(C(),N(ne,{key:1},[O("div",jh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,Uh)]),O("div",Hh,[(C(!0),N(ne,null,Xe(Y.pages,(ge,Oe)=>(C(),N("button",{key:Oe,type:"button",class:"mi-hit mi-open mi-page","aria-label":ye(s)("mapInfo.collapsePages"),onClick:Ht=>G(oe)},[O("img",{class:"mi-img",src:ce(ge),alt:Te(Y)+" "+m(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,Bh)],8,Vh))),128))]),O("div",Gh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,Kh)])],64)):(C(),N(ne,{key:0},[O("button",{type:"button",class:Ge(["mi-hit mi-page",{"mi-stack":Y.pages.length>1}]),"aria-label":ye(s)("mapInfo.expandPages",{n:m(Y.pages.length)}),"aria-expanded":"false",onClick:ge=>G(oe)},[O("img",{class:"mi-img",src:ce(Y.pages[0]),alt:Te(Y),decoding:"async",onError:ge=>Q[oe]=!0},null,40,zh)],10,Rh),Y.pages.length>1?(C(),N("div",qh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandPages",{n:m(Y.pages.length)})),9,Wh)])):se("",!0)],64))],64)):Y.kind==="deck"&&(Y.cards||[]).length?(C(),N(ne,{key:2},[ke[oe]?(C(),N(ne,{key:1},[O("div",Qh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,eb)]),O("div",tb,[(C(!0),N(ne,null,Xe(Y.cards,(ge,Oe)=>(C(),N("img",{key:Oe,class:"mi-img",src:ce(ge),alt:Te(Y)+" "+m(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,ab))),128))]),O("div",ob,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,nb)])],64)):(C(),N(ne,{key:0},[O("button",{type:"button",class:"mi-hit mi-deck","aria-label":ye(s)("mapInfo.expandDeck",{n:m(Y.cards.length)}),"aria-expanded":"false",onClick:ge=>G(oe)},[(C(!0),N(ne,null,Xe(Ut(Y),(ge,Oe)=>(C(),N("img",{key:Oe,class:"mi-card",src:ce(ge),alt:"",decoding:"async",onError:Ht=>Oe===0?Q[oe]=!0:ee(Ht),style:Ea({insetInlineStart:Oe*36+"px",transform:"rotate("+(Oe-2)*4+"deg)",zIndex:10-Oe})},null,44,Yh))),128))],8,Xh),O("div",Jh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandDeck",{n:m(Y.cards.length)})),9,Zh)])],64))],64)):Y.kind==="table"&&(Y.columns||[]).length?(C(),N(ne,{key:3},[O("div",sb,[O("table",rb,[O("thead",null,[O("tr",null,[(C(!0),N(ne,null,Xe(Y.columns,(ge,Oe)=>(C(),N("th",{key:Oe,scope:"col"},B(co(ge)),1))),128))])]),O("tbody",null,[(C(!0),N(ne,null,Xe(Y.rows||[],(ge,Oe)=>(C(),N("tr",{key:Oe},[(C(!0),N(ne,null,Xe(ge,(Ht,Kb)=>(C(),N("td",{key:Kb},B(typeof Ht=="number"?m(Ht):Ht),1))),128))]))),128))])])]),Y.total&&Y.total>(Y.rows||[]).length?(C(),N("p",ib,B(ye(s)("mapInfo.moreRows",{n:m(Y.total-(Y.rows||[]).length)})),1)):se("",!0)],64)):se("",!0)])),[[Za,!Q[oe]]])),128)),e.noteKey||e.note?(C(),N("p",lb,B(r(e.noteKey,e.note)),1)):se("",!0)]),a()?se("",!0):(C(),N("div",cb,[O("label",null,[O("input",{type:"checkbox",checked:y.value,onChange:K[0]||(K[0]=Y=>F(Y.target.checked))},null,40,pb),O("span",null,B(ye(s)("mapInfo.pointerOff")),1)])]))],8,kh)],32)):se("",!0)],8,mh))}},db=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h: 0}.mi.dms-info-raise .mi-btn{z-index:60}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-help-close:focus-visible{outline:2px solid #3f8f5a;outline-offset:2px}.dms-help-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#00000059;padding:16px}.dms-help{max-width:420px;width:100%;color:#3b463d;background:#fff;border-radius:12px;padding:18px 20px 14px;box-shadow:0 12px 32px #0003;font-size:14px;line-height:1.5}.dms-help-title{margin:0 0 8px;font-size:16px}.dms-help-what,.dms-help-how{margin:0 0 10px}.dms-help-close{float:right;font:inherit;padding:6px 14px;border-radius:8px;border:1px solid #d1d4cd;background:#f3f3f1;cursor:pointer}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-mobile-notice{position:sticky;top:0;z-index:30;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;font-size:13px;line-height:1.4;color:#3b463d;background:#fff8e6;border-bottom:1px solid #f0d58c}.dms-mobile-notice span{flex:1}.dms-mobile-notice-x{flex:none;min-width:32px;min-height:32px;border:0;border-radius:6px;background:transparent;color:inherit;font-size:18px;line-height:1;cursor:pointer}.dms-mobile-notice-x:focus-visible{outline:2px solid #3b463d;outline-offset:1px}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function Ml(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(us.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(us.includes(e))return e}catch{}return""}const gs=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"prayer-map",icon:"embed"},{id:"upg-100",icon:"list"},{id:"country-posters",icon:"poster"},{id:"poster-design",icon:"grid"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}];function gb(e){const t={},a=e&&Array.isArray(e.bundles)?e.bundles:[];for(const o of a)for(const n of Array.isArray(o&&o.profiles)?o.profiles:[])n&&(n.mobile==="desktop-only"||n.mobile==="larger-screens")&&(t[o.bundle+"/"+n.profile]=n.mobile);return t}const mb=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo","posterverse","bible-posters","poster-sections"]),Al={"prayer-walk-planner":1,"gospel-internet":2,"upg-neighbor":3,"key-cities":4,"all-people-groups":5,"doxa-vision-card":7},ms=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"๐ŸŒ",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer ยท engagement ยท regions",emoji:"๐Ÿ—บ๏ธ",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"๐Ÿ—บ๏ธ",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"๐Ÿ™",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"๐Ÿ“ก",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"๐Ÿ“–",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"๐ŸŒ",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG 100 List Posters",sub:"my unreached list + posters",emoji:"๐Ÿ“‹",bundle:"my-upg-100-list",profile:"upg-100-mfe"},{id:"country-posters",label:"Country Posters",sub:"a poster for every country",emoji:"๐Ÿ—บ๏ธ",bundle:"country-posters",profile:"country-posters-mfe"},{id:"poster-design",label:"Poster Design",sub:"every poster style and size",emoji:"๐ŸŽจ",bundle:"poster-design",profile:"poster-design-mfe"}];hb(gs);const en=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid","gospel-internet-board"]),tn=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function fb(){const e=Object.fromEntries(ms.map(a=>[a.id,a])),t=new Set;for(const a of gs)if(a.key!=="experimental")for(const o of a.tabs||[]){const n=e[o.id];n&&n.bundle&&t.add(n.bundle)}return t}function Cl(e,t){const a=[];for(const o of e)!o||t.has(o.key)||(t.add(o.key),a.push(o));return a}function hb(e){const t=new Map,a=[];for(const o of e)if(o.key!=="experimental")for(const n of o.tabs||[]){if(!n||!n.id)continue;const s=t.get(n.id);if(s===void 0){t.set(n.id,o.key);continue}(s!==o.key||a.indexOf(n.id)===-1)&&a.push(n.id+" ("+s+" + "+o.key+")")}return a.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+a.join(", ")+" โ€” VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),a}const Il="dxm.treeFingerprint@";function bb(e){const a=(e&&Array.isArray(e.bundles)?e.bundles:[]).map(n=>(n&&n.bundle)+":"+(n&&n.integrity||"")).join("|");let o=2166136261;for(let n=0;n>>0).toString(36)+"."+a.length}function $b(e){try{return localStorage.getItem(Il+e)}catch{return null}}function _b(e,t){try{localStorage.setItem(Il+e,t)}catch{}}function vb(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function yb(e){const t=fb(),a=e&&Array.isArray(e.bundles)?e.bundles:[],o=[];for(const n of a){const s=n&&n.bundle;if(!s||t.has(s)||mb.has(s)||n.stage==="production")continue;const r=Array.isArray(n.profiles)?n.profiles:[];if(!r.length||r.every(c=>c.widget||Array.isArray(c.targets)&&!c.targets.includes("web")))continue;const i=r.find(c=>c.isMap)||r.find(c=>c.profile===s)||r[0],l=i.element||Array.isArray(n.elements)&&n.elements[0]||s,p=n.scriptUrl||i.scriptUrl||"";p&&o.push({id:s,label:i.title||vb(s),sub:(i.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"๐Ÿงช",tag:l,bundle:s,profile:i.profile||s,scriptUrl:p,heavy:en.has(l)||en.has(s),scroll:tn.has(l)||tn.has(s),discovered:!0})}return o.sort((n,s)=>{const r=Al[n.id]||999,i=Al[s.id]||999;return r!==i?r-i:n.label.localeCompare(s.label)}),o}function wb(e,t){const a=e&&Array.isArray(e.bundles)?e.bundles:[],o=Object.fromEntries(a.map(s=>[s.bundle,s])),n={};for(const s of t){const r=o[s.bundle];if(!r)continue;const i=Array.isArray(r.profiles)?r.profiles:[],l=i.find(w=>w.profile===s.profile)||i[0],p=l&&l.element||Array.isArray(r.elements)&&r.elements[0]||s.bundle,c=r.scriptUrl||l&&l.scriptUrl||"";if(!c)continue;const m=l&&Array.isArray(l.instances)?l.instances:[],v=!!(s.instance&&m.some(w=>(w&&(w.id||w.instance))===s.instance));n[s.id]={tag:p,scriptUrl:c,profile:l&&l.profile||s.profile,instance:v?s.instance:"",heavy:en.has(p)||en.has(s.bundle),scroll:tn.has(p)||tn.has(s.bundle)}}return n}const kb=$a({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:Gf,BackToTopButton:ri,MapInfo:ub,ShellLanguageMenu:lh},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"Deep Research"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""},homeHref:{type:String,default:""},homeLabel:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:ba("dmsTreeBase","")}},data(){return{paneEls:{},activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,helpOpen:!1,mobileNoticeDismissed:{},mobileFlags:null,manifestError:"",manifestBase:"",runtime:{},locale:Kf(),hostLang:Ml(),sessionPick:"",localeOpen:!1,switcherLangs:kl,tabs:ms.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{largerScreenText(){return Wt("messages.largerScreenNotice",this.uiLocale)||"This experimental map is built for larger screens. It opens here, but parts of it may not fit or work well on a phone."},activePaneEl(){return this.paneEls[this.activeIndex]||null},activeHelp(){const e=this.tabs[this.activeIndex];return e&&e.discovered?Tl(e.id,this.uiLocale):null},cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},showInfo(){const e=this.cfg.info;return!(e===!1||e==="false"||e==="off")},headingText(){return String(this.cfg.heading||this.heading||"").trim()||"Deep Research"},showExperimental(){const e=this.cfg.experimental;return!(e===!1||e==="false"||e==="hidden"||e==="off")},navGroups(){const e=Object.fromEntries(this.tabs.map(a=>[a.id,a])),t=new Set;return gs.map(a=>{let o=Cl((a.tabs||[]).filter(n=>e[n.id]).map(n=>{const s=e[n.id],r=this.isDesktopOnly(s.id),i=r||this.mobileFlagOf(s.id)==="desktop-only";return{key:s.id,label:this.tabLabel(s),sub:this.tabSub(s),icon:n.icon,badge:i?this.tr("desktopOnly"):n.badge,disabled:r}}),t);return a.key==="experimental"&&!this.showExperimental?{key:a.key,rows:[]}:(a.key==="experimental"&&(o=o.concat(Cl(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.narrow&&this.mobileFlagOf(n.id)==="larger-screens"?this.tr("mobileNotBuilt"):this.tr("lab")})),t))),{key:a.key,label:a.i18n?this.tr(a.i18n):a.label,icon:a.icon,folder:!!a.folder,open:a.open,rows:o})}).filter(a=>a.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return ps(this.locale)||{code:this.locale,flag:"๐ŸŒ",nativeName:this.locale}},propLocale(){return(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim()},effectiveLocale(){const e=this.showLocaleSwitcher?this.locale:"";return(this.sessionPick||this.propLocale||e||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return us.includes(this.effectiveLocale)?this.effectiveLocale:"en"},defaultHomeHref(){return"https://doxa.life"+(this.uiLocale&&this.uiLocale!=="en"?"/"+this.uiLocale:"")},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse","home"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest(),this._onHostedHelp=e=>this.onHostedHelp(e),this.$el.addEventListener("doxa:help",this._onHostedHelp)},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),this._onHostedHelp&&(this.$el.removeEventListener("doxa:help",this._onHostedHelp),this._onHostedHelp=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{activeIndex(){this.helpOpen=!1},propLocale(){this.sessionPick=""},effectiveLocale(){const e=(o,n)=>{try{const s=this._slots&&this._slots[o];s&&(s.innerHTML="")}catch{}n.mounted=!1,n.state="idle",n.error=""};this.tabs.forEach((o,n)=>{o.mounted&&n!==this.activeIndex&&e(n,o)});const t=this.activeIndex,a=this.tabs[t];!a||!a.mounted||(e(t,a),this.mountElement(t))},tab(e){e&&this.onSelect(e)}},methods:{openHelp(){this.helpOpen=!0,this.$nextTick(()=>this.$refs.helpClose&&this.$refs.helpClose.focus())},closeHelp(){this.helpOpen=!1;const e=this._helpReturn;this._helpReturn=null,this.$nextTick(()=>e&&e.focus&&e.focus())},infoProps(e){const{pos:t,...a}=this.infoFor(e)||{};return a},infoPos(e){const t=(this.infoFor(e)||{}).pos||{},{narrow:a,...o}=t;return this.narrow&&a?{...o,...a}:o},infoStyle(e){const t=this.infoPos(e),a={};return t.top&&(a["--map-info-top"]=t.top),t.side&&(a["--map-info-side"]=t.side),a},infoFor(e){const t=this.showInfo&&e&&dh[e.id];return t&&(!t.leadKey||Wt(t.leadKey,"en"))?t:null},tabHasHelp(e){return!!(e&&e.discovered&&Tl(e.id,this.uiLocale))},onHostedHelp(e){if(!this.activeHelp)return;e.stopPropagation();const t=e.composedPath?e.composedPath():[];this._helpReturn=t.find(a=>a&&a.tagName==="BUTTON")||null,this.openHelp()},setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return Qo(this.uiLocale,e,t)},t(e,t){return Qo(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||ch("tab."+e.id)?Qo(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):Qo(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=Ml()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isDesktopOnly(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},mobileFlagOf(e){const t=this.tabs.find(a=>a.id===e);return t&&this.mobileFlags&&this.mobileFlags[t.bundle+"/"+t.profile]||null},isDesktopOnly(e){return this.narrow&&this.mobileFlagOf(e)==="desktop-only"},showsMobileNotice(e){return this.narrow&&this.mobileFlagOf(e)==="larger-screens"&&!this.mobileNoticeDismissed[e]},dismissMobileNotice(e){this.mobileNoticeDismissed={...this.mobileNoticeDismissed,[e]:!0}},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const a of t.rows){const o=this.tabs.findIndex(n=>n.id===a.key);if(!(o<0)&&(e<0&&(e=o),!a.disabled))return o}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=c=>{try{return new URL(c,location.href).href.replace(/[^/]*$/,"")}catch{return""}},a={url:e,root:t(e)},o={url:this.resolve("doxa-maps-spa/manifest.json"),root:a.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const s=n?[o,a]:[a,o],r="/public/dx-maps/manifest.json";s.some(c=>c.url===r)||s.push({url:r,root:t(r)});const i=[];let l;this._freshGate=new Promise(c=>{l=c}),setTimeout(l,8e3);const p=c=>{if(c>=s.length){this.manifestError="manifest.json not found (tried "+i.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" โ€” every tab except Big Picture is composed from it, so their panes cannot mount."),l();return}const{url:m,root:v}=s[c];return i.push(m),fetch(m,{credentials:"same-origin",cache:"no-cache"}).then(w=>{if(!w||!w.ok)throw new Error(m+" โ†’ HTTP "+(w?w.status:"?"));return w.json()}).then(w=>{if(!w)throw new Error(m+" โ†’ empty");this.manifestError="",this.manifestBase=v||"",this.revalidateBundles(w,v||"").then(l,l),this.applyManifest(w)}).catch(()=>p(c+1))};try{p(0)}catch{l()}},revalidateBundles(e,t){const a=bb(e),o=$b(t);if(o===a)return Promise.resolve();const n=[...new Set((e&&e.bundles||[]).map(p=>p&&p.scriptUrl?this.resolve(p.scriptUrl):"").filter(Boolean))],s=p=>{try{return new URL(p,location.href).origin===location.origin}catch{return!1}},r=p=>s(p)?fetch(p,{mode:"same-origin",credentials:"same-origin",cache:"only-if-cached"}).then(c=>(c&&c.body&&c.body.cancel&&c.body.cancel(),!!(c&&c.ok)),()=>!1):Promise.resolve(o!==null),i=p=>fetch(p,{credentials:"same-origin",cache:"no-cache"}).then(c=>{if(c&&c.status===200&&c.body&&c.body.cancel)return c.body.cancel()}),l=p=>r(p).then(c=>c?i(p):null).catch(()=>{});return Promise.all(n.map(l)).then(()=>_b(t,a))},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.mobileFlags=gb(e),this.applyPageGlobals();const t=wb(e,ms),a=this.activeKey,o=[];for(const l of this.tabs){if(l.discovered){o.push(l);continue}const p=t[l.id];p&&(Object.assign(l,p,{resolved:!0}),o.push(l))}const n=new Set(o.map(l=>l.id));if(this.showExperimental)for(const l of yb(e))n.has(l.id)||o.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=o;const s=this.requestedTab(),r=s?this.tabs.findIndex(l=>l.id===s):-1,i=this.tabs.findIndex(l=>l.id===a);r>=0&&!this.isDesktopOnly(s)&&!this._honouredTab?this.select(r):this.select(i>=0&&!this.isDesktopOnly(a)?i:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(a=>a.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isDesktopOnly(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,Xf(e)},pickLocale(e){this.setLocale(e),this.sessionPick=e},onSelect(e){if(this.isDesktopOnly(e)){const a=this.tabs.find(o=>o.id===e);this.disabledNotice=(Wt("messages.desktopOnlyNotice",this.uiLocale)||"{label} only supports desktop โ€” open this page on a desktop to use it.").replace("{label}",a?this.tabLabel(a):e),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(a=>a.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const a=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+a:this.base?this.base.replace(/\/+$/,"")+"/"+a:"../"+a},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const o=this.tabs[t];o&&o.heavy&&o.mounted&&this.releaseTab(t,o)}const a=this.tabs[e];a&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:a.id,label:a.label})),a.scriptUrl&&(this.narrow&&this.mobileFlags===null||this.isDesktopOnly(a.id)||a.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const a=this._slots&&this._slots[e];a&&(a.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const a=this.tk||this.cfg.tk||this.runtime.token;return a&&(t.tk=a),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t.mapTitle=this.tabLabel(e),t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const a=this.resolve(t.scriptUrl);Promise.resolve(this._freshGate).then(()=>wl(a)).then(()=>jm(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const o=this._slots&&this._slots[e];if(!o){t.state="error",t.error="no slot";return}o.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;min-height:0;",o.appendChild(n),t.state="ready"}catch(o){t.state="error",t.error="mount failed: "+(o&&o.message||String(o))}}).catch(o=>{t.state="error",t.error=o&&o.message||String(o)})}}}),xb={class:"dms-locale"},Sb=["aria-expanded"],Lb={class:"dms-flag"},Tb={class:"dms-locale-name"},Pb={key:0,class:"dms-locale-menu",role:"listbox"},Eb=["aria-selected"],Ob=["onClick"],Mb={class:"dms-flag"},Ab={class:"dms-locale-name"},Cb={class:"dms-locale-en"},Ib=["hidden","data-doxa-help"],Nb={key:0,class:"dms-mobile-notice",role:"status"},Fb=["aria-label","onClick"],Db={key:2,class:"dms-hint"},Rb={key:3,class:"dms-hint err"},zb={key:4,class:"dms-hint err"},qb={key:0,class:"dms-notice",role:"status"},Wb={id:"dms-help-title",class:"dms-help-title"},jb={class:"dms-help-what"},Ub={class:"dms-help-how"};function Hb(e,t,a,o,n,s){const r=Wa("ShellLanguageMenu"),i=Wa("MapInfo"),l=Wa("BackToTopButton"),p=Wa("VerticalTabsLayout");return C(),ya(p,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,"home-href":e.homeHref||e.cfg.homeHref||e.defaultHomeHref,"home-label":e.homeLabel||e.cfg.homeLabel||"",title:e.headingText,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},Hc({brand:oa(()=>[t[5]||(t[5]=O("span",{class:"dms-logo","aria-hidden":"true"},[O("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[O("circle",{cx:"12",cy:"12",r:"9"}),O("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),O("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:oa(()=>[Kt(B(e.t("meta",{n:e.tabs.length})),1)]),"phone-end":oa(()=>[Ie(r,{current:e.uiLocale,onSwitch:e.pickLocale},null,8,["current","onSwitch"])]),"rail-end":oa(({collapsed:c})=>[Ie(r,{current:e.uiLocale,collapsed:c,onSwitch:e.pickLocale},null,8,["current","collapsed","onSwitch"])]),default:oa(()=>[(C(!0),N(ne,null,Xe(e.tabs,(c,m)=>Ra((C(),N("section",{key:c.id,class:"dms-pane",ref_for:!0,ref:v=>{v?e.paneEls[m]=v:delete e.paneEls[m]},hidden:m!==e.activeIndex,"data-doxa-help":e.tabHasHelp(c)?"":null,"data-doxa-gallery":""},[!c.heavy||m===e.activeIndex?(C(),N(ne,{key:0},[e.showsMobileNotice(c.id)?(C(),N("div",Nb,[O("span",null,B(e.largerScreenText),1),O("button",{type:"button",class:"dms-mobile-notice-x","aria-label":e.tr("dismiss"),onClick:v=>e.dismissMobileNotice(c.id)},"ร—",8,Fb)])):se("",!0),O("div",{class:"dms-slot",ref_for:!0,ref:v=>e.setSlot(m,v)},null,512),e.infoFor(c)?(C(),ya(i,Dr({key:"info-"+c.id},{ref_for:!0},e.infoProps(c),{style:e.infoStyle(c),placement:e.infoPos(c).placement||"top-right",class:{"dms-info-raise":e.infoPos(c).raise},"assets-base":e.assetsBase,locale:e.effectiveLocale}),null,16,["style","placement","class","assets-base","locale"])):se("",!0),c.state==="loading"?(C(),N("div",Db,B(e.tr("loading",{label:e.tabLabel(c)})),1)):c.state==="error"?(C(),N("div",Rb,[Kt(B(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[7]||(t[7]=O("br",null,null,-1)),O("small",null,B(c.error),1)])):c.state==="idle"&&!c.scriptUrl&&e.manifestError?(C(),N("div",zb,[Kt(B(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[8]||(t[8]=O("br",null,null,-1)),O("small",null,B(e.manifestError),1),t[9]||(t[9]=O("br",null,null,-1)),O("small",null,B(e.tr("manifestHint")),1)])):se("",!0)],64)):se("",!0)],8,Ib)),[[Za,m===e.activeIndex]])),128)),e.disabledNotice?(C(),N("div",qb,B(e.disabledNotice),1)):se("",!0),e.helpOpen&&e.activeHelp?(C(),N("div",{key:1,class:"dms-help-scrim",onClick:t[3]||(t[3]=jo((...c)=>e.closeHelp&&e.closeHelp(...c),["self"])),onKeydown:t[4]||(t[4]=ai(jo((...c)=>e.closeHelp&&e.closeHelp(...c),["stop","prevent"]),["esc"]))},[O("div",{class:"dms-help",role:"dialog","aria-modal":"true","aria-labelledby":"dms-help-title",onKeydown:t[2]||(t[2]=ai(jo(c=>e.$refs.helpClose&&e.$refs.helpClose.focus(),["prevent"]),["tab"]))},[O("h2",Wb,B(e.tabLabel(e.tabs[e.activeIndex])),1),O("p",jb,[O("strong",null,B(e.activeHelp.what),1)]),O("p",Ub,B(e.activeHelp.how),1),O("button",{ref:"helpClose",type:"button",class:"dms-help-close",onClick:t[1]||(t[1]=(...c)=>e.closeHelp&&e.closeHelp(...c))},B(e.tr("close")),513)],32)],32)):se("",!0),Ie(l,{target:e.activePaneEl,labels:{backToTop:e.tr("backToTop")}},null,8,["target","labels"])]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:oa(()=>[O("div",xb,[O("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=c=>e.localeOpen=!e.localeOpen)},[O("span",Lb,B(e.activeLang.flag),1),O("span",Tb,B(e.activeLang.nativeName),1),t[6]||(t[6]=O("span",{class:"dms-dots","aria-hidden":"true"},"โ‹ฎ",-1))],8,Sb),e.localeOpen?(C(),N("ul",Pb,[(C(!0),N(ne,null,Xe(e.switcherLangs,c=>(C(),N("li",{key:c.code,role:"option","aria-selected":String(c.code===e.locale)},[O("button",{type:"button",class:Ge(["dms-locale-opt",{active:c.code===e.locale}]),onClick:m=>e.setLocale(c.code)},[O("span",Mb,B(c.flag),1),O("span",Ab,B(c.nativeName),1),O("span",Cb,B(c.name),1)],10,Ob)],8,Eb))),128))])):se("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","home-href","home-label","title","nav-label","header","groups","active","onUpdate:active"])}const Vb=Uo(kb,[["render",Hb],["styles",[db]]]),Bb=Um(),Gb=Zp(Vb,{configureApp(e){e.provide("dmsTreeBase",Bb)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Gb)})(); +`,"map-info"),(k,K)=>(C(),N("div",{ref_key:"rootEl",ref:Ne,class:"mi",dir:v()?"rtl":"ltr",lang:n()},[Ra(O("button",{ref_key:"btnEl",ref:V,type:"button",class:Ge(["mi-btn",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-label":ye(s)("mapInfo.open"),title:ye(s)("mapInfo.open"),"aria-haspopup":"dialog","aria-expanded":String(H.value),onClick:xe},[...K[1]||(K[1]=[O("svg",{viewBox:"0 0 24 24","aria-hidden":"true",focusable:"false"},[O("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"2"}),O("path",{d:"M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),O("circle",{cx:"12",cy:"17",r:"1.3",fill:"currentColor"})],-1)])],10,fh),[[Za,z()]]),W.value&&!H.value&&z()?(C(),N("div",{key:0,class:Ge(["mi-pointer",e.placement==="top-left"?"mi-at-left":"mi-at-right"]),"aria-hidden":"true"},[O("span",null,B(ye(s)("mapInfo.pointer")),1),(C(),N("svg",hh,[e.placement==="top-left"?(C(),N("path",bh)):(C(),N("path",$h))]))],2)):se("",!0),W.value&&!H.value&&!z()&&f.value?(C(),N("div",{key:1,class:Ge(["mi-pointer mi-ctl",["mi-ctl-"+f.value.side,{"mi-ctl-strip":f.value.strip}]]),style:Ea(x()),"aria-hidden":"true"},[O("span",{dir:v()?"rtl":"ltr"},B(ye(s)("mapInfo.pointer")),9,_h),(C(),N("svg",vh,[f.value.side==="left"?(C(),N("path",yh)):(C(),N("path",wh))]))],6)):se("",!0),H.value?(C(),N("div",{key:2,class:"mi-scrim",onClick:jo(nt,["self"]),onKeydown:L},[O("div",{ref_key:"dialogEl",ref:I,class:"mi-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"mi-title-"+e.storageKey},[O("div",xh,[O("h2",{id:"mi-title-"+e.storageKey,class:"mi-title"},B(ye(s)("mapInfo.title")),9,Sh),O("button",{ref_key:"closeEl",ref:fe,type:"button",class:"mi-close","aria-label":ye(s)("mapInfo.close"),onClick:nt},"ร—",8,Lh)]),O("div",Th,[e.leadKey||e.lead?(C(),N("section",{key:0,class:"mi-bluf","aria-labelledby":"mi-bluf-"+e.storageKey},[O("h3",{id:"mi-bluf-"+e.storageKey,class:"mi-bluf-h"},B(ye(s)("mapInfo.shortDescription")),9,Eh),O("p",Oh,B(r(e.leadKey,e.lead)),1)],8,Ph)):se("",!0),(e.takeawayKey||e.takeaway)&&!c()?(C(),N("p",Mh,[O("b",null,B(ye(s)("mapInfo.takeaway")),1),Kt(" "+B(r(e.takeawayKey,e.takeaway)),1)])):se("",!0),c()?(C(),N("details",{key:"st-"+o.value,class:"mi-strategy"},[O("summary",Ah,[O("span",null,B(ye(s)("mapInfo.tabStrategy")),1),K[2]||(K[2]=O("span",{class:"mi-chev","aria-hidden":"true"},"โ–พ",-1))]),O("p",Ch,B(l()),1),p().length?(C(),N("ul",Ih,[(C(!0),N(ne,null,Xe(p(),(Y,oe)=>(C(),N("li",{key:oe},B(Y),1))),128))])):se("",!0)])):se("",!0),(C(!0),N(ne,null,Xe(e.examples,(Y,oe)=>Ra((C(),N("section",{key:oe,class:"mi-ex"},[O("h3",null,B(Te(Y)),1),Y.kind==="image"?(C(),N(ne,{key:0},[O("img",{class:"mi-img mi-poster",src:ce(Y.src),alt:Y.alt||Te(Y),decoding:"async",onError:ge=>Q[oe]=!0},null,40,Nh),Y.full?(C(),N("div",Fh,[O("a",{class:"mi-full",href:ce(Y.full),target:"_blank",rel:"noopener"},B(ye(s)("mapInfo.openFull")),9,Dh)])):se("",!0)],64)):Y.kind==="pages"&&(Y.pages||[]).length?(C(),N(ne,{key:1},[ke[oe]?(C(),N(ne,{key:1},[O("div",jh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,Uh)]),O("div",Hh,[(C(!0),N(ne,null,Xe(Y.pages,(ge,Oe)=>(C(),N("button",{key:Oe,type:"button",class:"mi-hit mi-open mi-page","aria-label":ye(s)("mapInfo.collapsePages"),onClick:Ht=>G(oe)},[O("img",{class:"mi-img",src:ce(ge),alt:Te(Y)+" "+m(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,Bh)],8,Vh))),128))]),O("div",Gh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,Kh)])],64)):(C(),N(ne,{key:0},[O("button",{type:"button",class:Ge(["mi-hit mi-page",{"mi-stack":Y.pages.length>1}]),"aria-label":ye(s)("mapInfo.expandPages",{n:m(Y.pages.length)}),"aria-expanded":"false",onClick:ge=>G(oe)},[O("img",{class:"mi-img",src:ce(Y.pages[0]),alt:Te(Y),decoding:"async",onError:ge=>Q[oe]=!0},null,40,zh)],10,Rh),Y.pages.length>1?(C(),N("div",qh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandPages",{n:m(Y.pages.length)})),9,Wh)])):se("",!0)],64))],64)):Y.kind==="deck"&&(Y.cards||[]).length?(C(),N(ne,{key:2},[ke[oe]?(C(),N(ne,{key:1},[O("div",Qh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,eb)]),O("div",tb,[(C(!0),N(ne,null,Xe(Y.cards,(ge,Oe)=>(C(),N("img",{key:Oe,class:"mi-img",src:ce(ge),alt:Te(Y)+" "+m(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,ab))),128))]),O("div",ob,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,nb)])],64)):(C(),N(ne,{key:0},[O("button",{type:"button",class:"mi-hit mi-deck","aria-label":ye(s)("mapInfo.expandDeck",{n:m(Y.cards.length)}),"aria-expanded":"false",onClick:ge=>G(oe)},[(C(!0),N(ne,null,Xe(Ut(Y),(ge,Oe)=>(C(),N("img",{key:Oe,class:"mi-card",src:ce(ge),alt:"",decoding:"async",onError:Ht=>Oe===0?Q[oe]=!0:ee(Ht),style:Ea({insetInlineStart:Oe*36+"px",transform:"rotate("+(Oe-2)*4+"deg)",zIndex:10-Oe})},null,44,Yh))),128))],8,Xh),O("div",Jh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandDeck",{n:m(Y.cards.length)})),9,Zh)])],64))],64)):Y.kind==="table"&&(Y.columns||[]).length?(C(),N(ne,{key:3},[O("div",sb,[O("table",rb,[O("thead",null,[O("tr",null,[(C(!0),N(ne,null,Xe(Y.columns,(ge,Oe)=>(C(),N("th",{key:Oe,scope:"col"},B(co(ge)),1))),128))])]),O("tbody",null,[(C(!0),N(ne,null,Xe(Y.rows||[],(ge,Oe)=>(C(),N("tr",{key:Oe},[(C(!0),N(ne,null,Xe(ge,(Ht,Kb)=>(C(),N("td",{key:Kb},B(typeof Ht=="number"?m(Ht):Ht),1))),128))]))),128))])])]),Y.total&&Y.total>(Y.rows||[]).length?(C(),N("p",ib,B(ye(s)("mapInfo.moreRows",{n:m(Y.total-(Y.rows||[]).length)})),1)):se("",!0)],64)):se("",!0)])),[[Za,!Q[oe]]])),128)),e.noteKey||e.note?(C(),N("p",lb,B(r(e.noteKey,e.note)),1)):se("",!0)]),a()?se("",!0):(C(),N("div",cb,[O("label",null,[O("input",{type:"checkbox",checked:y.value,onChange:K[0]||(K[0]=Y=>F(Y.target.checked))},null,40,pb),O("span",null,B(ye(s)("mapInfo.pointerOff")),1)])]))],8,kh)],32)):se("",!0)],8,mh))}},db=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h: 0}.mi.dms-info-raise .mi-btn{z-index:60}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-help-close:focus-visible{outline:2px solid #3f8f5a;outline-offset:2px}.dms-help-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#00000059;padding:16px}.dms-help{max-width:420px;width:100%;color:#3b463d;background:#fff;border-radius:12px;padding:18px 20px 14px;box-shadow:0 12px 32px #0003;font-size:14px;line-height:1.5}.dms-help-title{margin:0 0 8px;font-size:16px}.dms-help-what,.dms-help-how{margin:0 0 10px}.dms-help-close{float:right;font:inherit;padding:6px 14px;border-radius:8px;border:1px solid #d1d4cd;background:#f3f3f1;cursor:pointer}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-mobile-notice{position:sticky;top:0;z-index:30;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;font-size:13px;line-height:1.4;color:#3b463d;background:#fff8e6;border-bottom:1px solid #f0d58c}.dms-mobile-notice span{flex:1}.dms-mobile-notice-x{flex:none;min-width:32px;min-height:32px;border:0;border-radius:6px;background:transparent;color:inherit;font-size:18px;line-height:1;cursor:pointer}.dms-mobile-notice-x:focus-visible{outline:2px solid #3b463d;outline-offset:1px}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function Ml(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(us.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(us.includes(e))return e}catch{}return""}const gs=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"prayer-map",icon:"embed"},{id:"upg-100",icon:"list"},{id:"country-posters",icon:"poster"},{id:"poster-design",icon:"grid"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}];function gb(e){const t={},a=e&&Array.isArray(e.bundles)?e.bundles:[];for(const o of a)for(const n of Array.isArray(o&&o.profiles)?o.profiles:[])n&&(n.mobile==="desktop-only"||n.mobile==="larger-screens")&&(t[o.bundle+"/"+n.profile]=n.mobile);return t}const mb=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo","posterverse","bible-posters","poster-sections"]),Al={"prayer-walk-planner":1,"gospel-internet":2,"upg-neighbor":3,"key-cities":4,"all-people-groups":5,"doxa-vision-card":7},ms=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"๐ŸŒ",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer ยท engagement ยท regions",emoji:"๐Ÿ—บ๏ธ",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"๐Ÿ—บ๏ธ",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"๐Ÿ™",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"๐Ÿ“ก",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"๐Ÿ“–",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"๐ŸŒ",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG 100 List Posters",sub:"my unreached list + posters",emoji:"๐Ÿ“‹",bundle:"my-upg-100-list",profile:"upg-100-mfe"},{id:"country-posters",label:"Country Posters",sub:"a poster for every country",emoji:"๐Ÿ—บ๏ธ",bundle:"country-posters",profile:"country-posters-mfe"},{id:"poster-design",label:"Poster Design",sub:"every poster style and size",emoji:"๐ŸŽจ",bundle:"poster-design",profile:"poster-design-mfe"}];hb(gs);const en=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid","gospel-internet-board"]),tn=new Set(["dashboard-plus-grid","research-map-plus-grid","bless-india-posters"]);function fb(){const e=Object.fromEntries(ms.map(a=>[a.id,a])),t=new Set;for(const a of gs)if(a.key!=="experimental")for(const o of a.tabs||[]){const n=e[o.id];n&&n.bundle&&t.add(n.bundle)}return t}function Cl(e,t){const a=[];for(const o of e)!o||t.has(o.key)||(t.add(o.key),a.push(o));return a}function hb(e){const t=new Map,a=[];for(const o of e)if(o.key!=="experimental")for(const n of o.tabs||[]){if(!n||!n.id)continue;const s=t.get(n.id);if(s===void 0){t.set(n.id,o.key);continue}(s!==o.key||a.indexOf(n.id)===-1)&&a.push(n.id+" ("+s+" + "+o.key+")")}return a.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+a.join(", ")+" โ€” VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),a}const Il="dxm.treeFingerprint@";function bb(e){const a=(e&&Array.isArray(e.bundles)?e.bundles:[]).map(n=>(n&&n.bundle)+":"+(n&&n.integrity||"")).join("|");let o=2166136261;for(let n=0;n>>0).toString(36)+"."+a.length}function $b(e){try{return localStorage.getItem(Il+e)}catch{return null}}function _b(e,t){try{localStorage.setItem(Il+e,t)}catch{}}function vb(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function yb(e){const t=fb(),a=e&&Array.isArray(e.bundles)?e.bundles:[],o=[];for(const n of a){const s=n&&n.bundle;if(!s||t.has(s)||mb.has(s)||n.stage==="production")continue;const r=Array.isArray(n.profiles)?n.profiles:[];if(!r.length||r.every(c=>c.widget||Array.isArray(c.targets)&&!c.targets.includes("web")))continue;const i=r.find(c=>c.isMap)||r.find(c=>c.profile===s)||r[0],l=i.element||Array.isArray(n.elements)&&n.elements[0]||s,p=n.scriptUrl||i.scriptUrl||"";p&&o.push({id:s,label:i.title||vb(s),sub:(i.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"๐Ÿงช",tag:l,bundle:s,profile:i.profile||s,scriptUrl:p,heavy:en.has(l)||en.has(s),scroll:tn.has(l)||tn.has(s),discovered:!0})}return o.sort((n,s)=>{const r=Al[n.id]||999,i=Al[s.id]||999;return r!==i?r-i:n.label.localeCompare(s.label)}),o}function wb(e,t){const a=e&&Array.isArray(e.bundles)?e.bundles:[],o=Object.fromEntries(a.map(s=>[s.bundle,s])),n={};for(const s of t){const r=o[s.bundle];if(!r)continue;const i=Array.isArray(r.profiles)?r.profiles:[],l=i.find(w=>w.profile===s.profile)||i[0],p=l&&l.element||Array.isArray(r.elements)&&r.elements[0]||s.bundle,c=r.scriptUrl||l&&l.scriptUrl||"";if(!c)continue;const m=l&&Array.isArray(l.instances)?l.instances:[],v=!!(s.instance&&m.some(w=>(w&&(w.id||w.instance))===s.instance));n[s.id]={tag:p,scriptUrl:c,profile:l&&l.profile||s.profile,instance:v?s.instance:"",heavy:en.has(p)||en.has(s.bundle),scroll:tn.has(p)||tn.has(s.bundle)}}return n}const kb=$a({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:Gf,BackToTopButton:ri,MapInfo:ub,ShellLanguageMenu:lh},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"Deep Research"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""},homeHref:{type:String,default:""},homeLabel:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:ba("dmsTreeBase","")}},data(){return{paneEls:{},activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,helpOpen:!1,mobileNoticeDismissed:{},mobileFlags:null,manifestError:"",manifestBase:"",runtime:{},locale:Kf(),hostLang:Ml(),sessionPick:"",localeOpen:!1,switcherLangs:kl,tabs:ms.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{largerScreenText(){return Wt("messages.largerScreenNotice",this.uiLocale)||"This experimental map is built for larger screens. It opens here, but parts of it may not fit or work well on a phone."},activePaneEl(){return this.paneEls[this.activeIndex]||null},activeHelp(){const e=this.tabs[this.activeIndex];return e&&e.discovered?Tl(e.id,this.uiLocale):null},cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},showInfo(){const e=this.cfg.info;return!(e===!1||e==="false"||e==="off")},headingText(){return String(this.cfg.heading||this.heading||"").trim()||"Deep Research"},showExperimental(){const e=this.cfg.experimental;return!(e===!1||e==="false"||e==="hidden"||e==="off")},navGroups(){const e=Object.fromEntries(this.tabs.map(a=>[a.id,a])),t=new Set;return gs.map(a=>{let o=Cl((a.tabs||[]).filter(n=>e[n.id]).map(n=>{const s=e[n.id],r=this.isDesktopOnly(s.id),i=r||this.mobileFlagOf(s.id)==="desktop-only";return{key:s.id,label:this.tabLabel(s),sub:this.tabSub(s),icon:n.icon,badge:i?this.tr("desktopOnly"):n.badge,disabled:r}}),t);return a.key==="experimental"&&!this.showExperimental?{key:a.key,rows:[]}:(a.key==="experimental"&&(o=o.concat(Cl(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.narrow&&this.mobileFlagOf(n.id)==="larger-screens"?this.tr("mobileNotBuilt"):this.tr("lab")})),t))),{key:a.key,label:a.i18n?this.tr(a.i18n):a.label,icon:a.icon,folder:!!a.folder,open:a.open,rows:o})}).filter(a=>a.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return ps(this.locale)||{code:this.locale,flag:"๐ŸŒ",nativeName:this.locale}},propLocale(){return(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim()},effectiveLocale(){const e=this.showLocaleSwitcher?this.locale:"";return(this.sessionPick||this.propLocale||e||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return us.includes(this.effectiveLocale)?this.effectiveLocale:"en"},defaultHomeHref(){return"https://doxa.life"+(this.uiLocale&&this.uiLocale!=="en"?"/"+this.uiLocale:"")},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse","home"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest(),this._onHostedHelp=e=>this.onHostedHelp(e),this.$el.addEventListener("doxa:help",this._onHostedHelp)},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),this._onHostedHelp&&(this.$el.removeEventListener("doxa:help",this._onHostedHelp),this._onHostedHelp=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{activeIndex(){this.helpOpen=!1},propLocale(){this.sessionPick=""},effectiveLocale(){const e=(o,n)=>{try{const s=this._slots&&this._slots[o];s&&(s.innerHTML="")}catch{}n.mounted=!1,n.state="idle",n.error=""};this.tabs.forEach((o,n)=>{o.mounted&&n!==this.activeIndex&&e(n,o)});const t=this.activeIndex,a=this.tabs[t];!a||!a.mounted||(e(t,a),this.mountElement(t))},tab(e){e&&this.onSelect(e)}},methods:{openHelp(){this.helpOpen=!0,this.$nextTick(()=>this.$refs.helpClose&&this.$refs.helpClose.focus())},closeHelp(){this.helpOpen=!1;const e=this._helpReturn;this._helpReturn=null,this.$nextTick(()=>e&&e.focus&&e.focus())},infoProps(e){const{pos:t,...a}=this.infoFor(e)||{};return a},infoPos(e){const t=(this.infoFor(e)||{}).pos||{},{narrow:a,...o}=t;return this.narrow&&a?{...o,...a}:o},infoStyle(e){const t=this.infoPos(e),a={};return t.top&&(a["--map-info-top"]=t.top),t.side&&(a["--map-info-side"]=t.side),a},infoFor(e){const t=this.showInfo&&e&&dh[e.id];return t&&(!t.leadKey||Wt(t.leadKey,"en"))?t:null},tabHasHelp(e){return!!(e&&e.discovered&&Tl(e.id,this.uiLocale))},onHostedHelp(e){if(!this.activeHelp)return;e.stopPropagation();const t=e.composedPath?e.composedPath():[];this._helpReturn=t.find(a=>a&&a.tagName==="BUTTON")||null,this.openHelp()},setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return Qo(this.uiLocale,e,t)},t(e,t){return Qo(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||ch("tab."+e.id)?Qo(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):Qo(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=Ml()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isDesktopOnly(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},mobileFlagOf(e){const t=this.tabs.find(a=>a.id===e);return t&&this.mobileFlags&&this.mobileFlags[t.bundle+"/"+t.profile]||null},isDesktopOnly(e){return this.narrow&&this.mobileFlagOf(e)==="desktop-only"},showsMobileNotice(e){return this.narrow&&this.mobileFlagOf(e)==="larger-screens"&&!this.mobileNoticeDismissed[e]},dismissMobileNotice(e){this.mobileNoticeDismissed={...this.mobileNoticeDismissed,[e]:!0}},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const a of t.rows){const o=this.tabs.findIndex(n=>n.id===a.key);if(!(o<0)&&(e<0&&(e=o),!a.disabled))return o}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=c=>{try{return new URL(c,location.href).href.replace(/[^/]*$/,"")}catch{return""}},a={url:e,root:t(e)},o={url:this.resolve("doxa-maps-spa/manifest.json"),root:a.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const s=n?[o,a]:[a,o],r="/public/dx-maps/manifest.json";s.some(c=>c.url===r)||s.push({url:r,root:t(r)});const i=[];let l;this._freshGate=new Promise(c=>{l=c}),setTimeout(l,8e3);const p=c=>{if(c>=s.length){this.manifestError="manifest.json not found (tried "+i.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" โ€” every tab except Big Picture is composed from it, so their panes cannot mount."),l();return}const{url:m,root:v}=s[c];return i.push(m),fetch(m,{credentials:"same-origin",cache:"no-cache"}).then(w=>{if(!w||!w.ok)throw new Error(m+" โ†’ HTTP "+(w?w.status:"?"));return w.json()}).then(w=>{if(!w)throw new Error(m+" โ†’ empty");this.manifestError="",this.manifestBase=v||"",this.revalidateBundles(w,v||"").then(l,l),this.applyManifest(w)}).catch(()=>p(c+1))};try{p(0)}catch{l()}},revalidateBundles(e,t){const a=bb(e),o=$b(t);if(o===a)return Promise.resolve();const n=[...new Set((e&&e.bundles||[]).map(p=>p&&p.scriptUrl?this.resolve(p.scriptUrl):"").filter(Boolean))],s=p=>{try{return new URL(p,location.href).origin===location.origin}catch{return!1}},r=p=>s(p)?fetch(p,{mode:"same-origin",credentials:"same-origin",cache:"only-if-cached"}).then(c=>(c&&c.body&&c.body.cancel&&c.body.cancel(),!!(c&&c.ok)),()=>!1):Promise.resolve(o!==null),i=p=>fetch(p,{credentials:"same-origin",cache:"no-cache"}).then(c=>{if(c&&c.status===200&&c.body&&c.body.cancel)return c.body.cancel()}),l=p=>r(p).then(c=>c?i(p):null).catch(()=>{});return Promise.all(n.map(l)).then(()=>_b(t,a))},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.mobileFlags=gb(e),this.applyPageGlobals();const t=wb(e,ms),a=this.activeKey,o=[];for(const l of this.tabs){if(l.discovered){o.push(l);continue}const p=t[l.id];p&&(Object.assign(l,p,{resolved:!0}),o.push(l))}const n=new Set(o.map(l=>l.id));if(this.showExperimental)for(const l of yb(e))n.has(l.id)||o.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=o;const s=this.requestedTab(),r=s?this.tabs.findIndex(l=>l.id===s):-1,i=this.tabs.findIndex(l=>l.id===a);r>=0&&!this.isDesktopOnly(s)&&!this._honouredTab?this.select(r):this.select(i>=0&&!this.isDesktopOnly(a)?i:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(a=>a.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isDesktopOnly(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,Xf(e)},pickLocale(e){this.setLocale(e),this.sessionPick=e},onSelect(e){if(this.isDesktopOnly(e)){const a=this.tabs.find(o=>o.id===e);this.disabledNotice=(Wt("messages.desktopOnlyNotice",this.uiLocale)||"{label} only supports desktop โ€” open this page on a desktop to use it.").replace("{label}",a?this.tabLabel(a):e),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(a=>a.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const a=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+a:this.base?this.base.replace(/\/+$/,"")+"/"+a:"../"+a},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const o=this.tabs[t];o&&o.heavy&&o.mounted&&this.releaseTab(t,o)}const a=this.tabs[e];a&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:a.id,label:a.label})),a.scriptUrl&&(this.narrow&&this.mobileFlags===null||this.isDesktopOnly(a.id)||a.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const a=this._slots&&this._slots[e];a&&(a.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const a=this.tk||this.cfg.tk||this.runtime.token;return a&&(t.tk=a),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t.mapTitle=this.tabLabel(e),t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const a=this.resolve(t.scriptUrl);Promise.resolve(this._freshGate).then(()=>wl(a)).then(()=>jm(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const o=this._slots&&this._slots[e];if(!o){t.state="error",t.error="no slot";return}o.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;min-height:0;",o.appendChild(n),t.state="ready"}catch(o){t.state="error",t.error="mount failed: "+(o&&o.message||String(o))}}).catch(o=>{t.state="error",t.error=o&&o.message||String(o)})}}}),xb={class:"dms-locale"},Sb=["aria-expanded"],Lb={class:"dms-flag"},Tb={class:"dms-locale-name"},Pb={key:0,class:"dms-locale-menu",role:"listbox"},Eb=["aria-selected"],Ob=["onClick"],Mb={class:"dms-flag"},Ab={class:"dms-locale-name"},Cb={class:"dms-locale-en"},Ib=["hidden","data-doxa-help"],Nb={key:0,class:"dms-mobile-notice",role:"status"},Fb=["aria-label","onClick"],Db={key:2,class:"dms-hint"},Rb={key:3,class:"dms-hint err"},zb={key:4,class:"dms-hint err"},qb={key:0,class:"dms-notice",role:"status"},Wb={id:"dms-help-title",class:"dms-help-title"},jb={class:"dms-help-what"},Ub={class:"dms-help-how"};function Hb(e,t,a,o,n,s){const r=Wa("ShellLanguageMenu"),i=Wa("MapInfo"),l=Wa("BackToTopButton"),p=Wa("VerticalTabsLayout");return C(),ya(p,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,"home-href":e.homeHref||e.cfg.homeHref||e.defaultHomeHref,"home-label":e.homeLabel||e.cfg.homeLabel||"",title:e.headingText,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},Hc({brand:oa(()=>[t[5]||(t[5]=O("span",{class:"dms-logo","aria-hidden":"true"},[O("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[O("circle",{cx:"12",cy:"12",r:"9"}),O("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),O("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:oa(()=>[Kt(B(e.t("meta",{n:e.tabs.length})),1)]),"phone-end":oa(()=>[Ie(r,{current:e.uiLocale,onSwitch:e.pickLocale},null,8,["current","onSwitch"])]),"rail-end":oa(({collapsed:c})=>[Ie(r,{current:e.uiLocale,collapsed:c,onSwitch:e.pickLocale},null,8,["current","collapsed","onSwitch"])]),default:oa(()=>[(C(!0),N(ne,null,Xe(e.tabs,(c,m)=>Ra((C(),N("section",{key:c.id,class:"dms-pane",ref_for:!0,ref:v=>{v?e.paneEls[m]=v:delete e.paneEls[m]},hidden:m!==e.activeIndex,"data-doxa-help":e.tabHasHelp(c)?"":null,"data-doxa-gallery":""},[!c.heavy||m===e.activeIndex?(C(),N(ne,{key:0},[e.showsMobileNotice(c.id)?(C(),N("div",Nb,[O("span",null,B(e.largerScreenText),1),O("button",{type:"button",class:"dms-mobile-notice-x","aria-label":e.tr("dismiss"),onClick:v=>e.dismissMobileNotice(c.id)},"ร—",8,Fb)])):se("",!0),O("div",{class:"dms-slot",ref_for:!0,ref:v=>e.setSlot(m,v)},null,512),e.infoFor(c)?(C(),ya(i,Dr({key:"info-"+c.id},{ref_for:!0},e.infoProps(c),{style:e.infoStyle(c),placement:e.infoPos(c).placement||"top-right",class:{"dms-info-raise":e.infoPos(c).raise},"assets-base":e.assetsBase,locale:e.effectiveLocale}),null,16,["style","placement","class","assets-base","locale"])):se("",!0),c.state==="loading"?(C(),N("div",Db,B(e.tr("loading",{label:e.tabLabel(c)})),1)):c.state==="error"?(C(),N("div",Rb,[Kt(B(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[7]||(t[7]=O("br",null,null,-1)),O("small",null,B(c.error),1)])):c.state==="idle"&&!c.scriptUrl&&e.manifestError?(C(),N("div",zb,[Kt(B(e.tr("loadFailed",{label:e.tabLabel(c)})),1),t[8]||(t[8]=O("br",null,null,-1)),O("small",null,B(e.manifestError),1),t[9]||(t[9]=O("br",null,null,-1)),O("small",null,B(e.tr("manifestHint")),1)])):se("",!0)],64)):se("",!0)],8,Ib)),[[Za,m===e.activeIndex]])),128)),e.disabledNotice?(C(),N("div",qb,B(e.disabledNotice),1)):se("",!0),e.helpOpen&&e.activeHelp?(C(),N("div",{key:1,class:"dms-help-scrim",onClick:t[3]||(t[3]=jo((...c)=>e.closeHelp&&e.closeHelp(...c),["self"])),onKeydown:t[4]||(t[4]=ai(jo((...c)=>e.closeHelp&&e.closeHelp(...c),["stop","prevent"]),["esc"]))},[O("div",{class:"dms-help",role:"dialog","aria-modal":"true","aria-labelledby":"dms-help-title",onKeydown:t[2]||(t[2]=ai(jo(c=>e.$refs.helpClose&&e.$refs.helpClose.focus(),["prevent"]),["tab"]))},[O("h2",Wb,B(e.tabLabel(e.tabs[e.activeIndex])),1),O("p",jb,[O("strong",null,B(e.activeHelp.what),1)]),O("p",Ub,B(e.activeHelp.how),1),O("button",{ref:"helpClose",type:"button",class:"dms-help-close",onClick:t[1]||(t[1]=(...c)=>e.closeHelp&&e.closeHelp(...c))},B(e.tr("close")),513)],32)],32)):se("",!0),Ie(l,{target:e.activePaneEl,labels:{backToTop:e.tr("backToTop")}},null,8,["target","labels"])]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:oa(()=>[O("div",xb,[O("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=c=>e.localeOpen=!e.localeOpen)},[O("span",Lb,B(e.activeLang.flag),1),O("span",Tb,B(e.activeLang.nativeName),1),t[6]||(t[6]=O("span",{class:"dms-dots","aria-hidden":"true"},"โ‹ฎ",-1))],8,Sb),e.localeOpen?(C(),N("ul",Pb,[(C(!0),N(ne,null,Xe(e.switcherLangs,c=>(C(),N("li",{key:c.code,role:"option","aria-selected":String(c.code===e.locale)},[O("button",{type:"button",class:Ge(["dms-locale-opt",{active:c.code===e.locale}]),onClick:m=>e.setLocale(c.code)},[O("span",Mb,B(c.flag),1),O("span",Ab,B(c.nativeName),1),O("span",Cb,B(c.name),1)],10,Ob)],8,Eb))),128))])):se("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","home-href","home-label","title","nav-label","header","groups","active","onUpdate:active"])}const Vb=Uo(kb,[["render",Hb],["styles",[db]]]),Bb=Um(),Gb=Zp(Vb,{configureApp(e){e.provide("dmsTreeBase",Bb)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Gb)})(); diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html index 4225fe908..3ba5b6ed8 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html @@ -67,7 +67,7 @@ - + - + \n\n\n" + "script": "\n\n\n" }, "instances": [ { diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index 10d005513..749463a99 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -409,7 +409,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-D/MCvAZhvdZ4CaVcpxKTxFLdT9GEuHidcKwBImnHSQfvUJg6mkAae/Y5JeUQYUjc", + "integrity": "sha384-C5x8ayydEbS+/4/FmfjQ/708vMLTCesnUfUcyT4Ml7hDkXBl8pYHna0PpPZQO3w+", "elements": [ "doxa-maps-spa" ], @@ -439,7 +439,7 @@ "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" }, "instances": [ {