From a4b57256ab562c477f48f9d75e92ebc54e85ff55 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Fri, 2 Oct 2026 12:09:37 +0000 Subject: [PATCH 1/2] Gallery: Poster Sections stays out of Experimental (a template plugin other plugins and sites embed) --- plugin-designs/doxa-maps-spa/doxa-maps-spa.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 76adc17c0..14b94c6ae 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -377,7 +377,10 @@ const NOT_EXPERIMENTAL = new Set([ 'posterverse', // bible-posters lives on POSTERVERSE's Experimental shelf, and only there: one poster plugin, shown // once, in the shell that gathers the poster plugins. - 'bible-posters' + 'bible-posters', + // poster-sections is a TEMPLATE plugin: the element other plugins and sites embed + // (the Regions list, DX Life's region pages). It stays in Plugin Studio, not on a reader's shelf. + 'poster-sections' ]) // ── EXPERIMENTAL ORDER = KINGDOM IMPACT, not the alphabet ──────────────────────────────── From 24a32b203e9d0f1350ebab9d992c829583ee09f7 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Fri, 2 Oct 2026 12:11:51 +0000 Subject: [PATCH 2/2] Rebuild the gallery for the Experimental exclusion, 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 54f2515e0..fa2f99918 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"),(w,K)=>(C(),N("div",{ref_key:"rootEl",ref:Ne,class:"mi",dir:b()?"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,mh),[[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",fh,[e.placement==="top-left"?(C(),N("path",hh)):(C(),N("path",bh))]))],2)):se("",!0),W.value&&!H.value&&!z()&&m.value?(C(),N("div",{key:1,class:Ge(["mi-pointer mi-ctl",["mi-ctl-"+m.value.side,{"mi-ctl-strip":m.value.strip}]]),style:Ea(k()),"aria-hidden":"true"},[O("span",{dir:b()?"rtl":"ltr"},B(ye(s)("mapInfo.pointer")),9,$h),(C(),N("svg",_h,[m.value.side==="left"?(C(),N("path",vh)):(C(),N("path",yh))]))],6)):se("",!0),H.value?(C(),N("div",{key:2,class:"mi-scrim",onClick:jo(nt,["self"]),onKeydown:S},[O("div",{ref_key:"dialogEl",ref:I,class:"mi-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"mi-title-"+e.storageKey},[O("div",kh,[O("h2",{id:"mi-title-"+e.storageKey,class:"mi-title"},B(ye(s)("mapInfo.title")),9,xh),O("button",{ref_key:"closeEl",ref:fe,type:"button",class:"mi-close","aria-label":ye(s)("mapInfo.close"),onClick:nt},"×",8,Sh)]),O("div",Lh,[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,Ph),O("p",Eh,B(r(e.leadKey,e.lead)),1)],8,Th)):se("",!0),(e.takeawayKey||e.takeaway)&&!c()?(C(),N("p",Oh,[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",Mh,[O("span",null,B(ye(s)("mapInfo.tabStrategy")),1),K[2]||(K[2]=O("span",{class:"mi-chev","aria-hidden":"true"},"▾",-1))]),O("p",Ah,B(l()),1),p().length?(C(),N("ul",Ch,[(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,Ih),Y.full?(C(),N("div",Nh,[O("a",{class:"mi-full",href:ce(Y.full),target:"_blank",rel:"noopener"},B(ye(s)("mapInfo.openFull")),9,Fh)])):se("",!0)],64)):Y.kind==="pages"&&(Y.pages||[]).length?(C(),N(ne,{key:1},[ke[oe]?(C(),N(ne,{key:1},[O("div",Wh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,jh)]),O("div",Uh,[(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)+" "+f(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,Vh)],8,Hh))),128))]),O("div",Bh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,Gh)])],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:f(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,Rh)],10,Dh),Y.pages.length>1?(C(),N("div",zh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandPages",{n:f(Y.pages.length)})),9,qh)])):se("",!0)],64))],64)):Y.kind==="deck"&&(Y.cards||[]).length?(C(),N(ne,{key:2},[ke[oe]?(C(),N(ne,{key:1},[O("div",Zh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,Qh)]),O("div",eb,[(C(!0),N(ne,null,Xe(Y.cards,(ge,Oe)=>(C(),N("img",{key:Oe,class:"mi-img",src:ce(ge),alt:Te(Y)+" "+f(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,tb))),128))]),O("div",ab,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,ob)])],64)):(C(),N(ne,{key:0},[O("button",{type:"button",class:"mi-hit mi-deck","aria-label":ye(s)("mapInfo.expandDeck",{n:f(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,Xh))),128))],8,Kh),O("div",Yh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandDeck",{n:f(Y.cards.length)})),9,Jh)])],64))],64)):Y.kind==="table"&&(Y.columns||[]).length?(C(),N(ne,{key:3},[O("div",nb,[O("table",sb,[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,Hb)=>(C(),N("td",{key:Hb},B(typeof Ht=="number"?f(Ht):Ht),1))),128))]))),128))])])]),Y.total&&Y.total>(Y.rows||[]).length?(C(),N("p",rb,B(ye(s)("mapInfo.moreRows",{n:f(Y.total-(Y.rows||[]).length)})),1)):se("",!0)],64)):se("",!0)])),[[Za,!Q[oe]]])),128)),e.noteKey||e.note?(C(),N("p",ib,B(r(e.noteKey,e.note)),1)):se("",!0)]),a()?se("",!0):(C(),N("div",lb,[O("label",null,[O("input",{type:"checkbox",checked:y.value,onChange:K[0]||(K[0]=Y=>F(Y.target.checked))},null,40,cb),O("span",null,B(ye(s)("mapInfo.pointerOff")),1)])]))],8,wh)],32)):se("",!0)],8,gh))}},ub=":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 db(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 gb=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"]),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"}];fb(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 mb(){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 fb(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}function hb(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function bb(e){const t=mb(),a=e&&Array.isArray(e.bundles)?e.bundles:[],o=[];for(const n of a){const s=n&&n.bundle;if(!s||t.has(s)||gb.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||hb(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 $b(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(L=>L.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 f=l&&Array.isArray(l.instances)?l.instances:[],b=!!(s.instance&&f.some(L=>(L&&(L.id||L.instance))===s.instance));n[s.id]={tag:p,scriptUrl:c,profile:l&&l.profile||s.profile,instance:b?s.instance:"",heavy:en.has(p)||en.has(s.bundle),scroll:tn.has(p)||tn.has(s.bundle)}}return n}const _b=$a({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:Bf,BackToTopButton:ri,MapInfo:pb,ShellLanguageMenu:ih},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:Gf(),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&&uh[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||lh("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=p=>{try{return new URL(p,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(p=>p.url===r)||s.push({url:r,root:t(r)});const i=[],l=p=>{if(p>=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.");return}const{url:c,root:f}=s[p];return i.push(c),fetch(c,{credentials:"same-origin"}).then(b=>{if(!b||!b.ok)throw new Error(c+" → HTTP "+(b?b.status:"?"));return b.json()}).then(b=>{if(!b)throw new Error(c+" → empty");this.manifestError="",this.manifestBase=f||"",this.applyManifest(b)}).catch(()=>l(p+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.mobileFlags=db(e),this.applyPageGlobals();const t=$b(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 bb(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,Kf(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);wl(a).then(()=>Wm(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)})}}}),vb={class:"dms-locale"},yb=["aria-expanded"],wb={class:"dms-flag"},kb={class:"dms-locale-name"},xb={key:0,class:"dms-locale-menu",role:"listbox"},Sb=["aria-selected"],Lb=["onClick"],Tb={class:"dms-flag"},Pb={class:"dms-locale-name"},Eb={class:"dms-locale-en"},Ob=["hidden","data-doxa-help"],Mb={key:0,class:"dms-mobile-notice",role:"status"},Ab=["aria-label","onClick"],Cb={key:2,class:"dms-hint"},Ib={key:3,class:"dms-hint err"},Nb={key:4,class:"dms-hint err"},Fb={key:0,class:"dms-notice",role:"status"},Db={id:"dms-help-title",class:"dms-help-title"},Rb={class:"dms-help-what"},zb={class:"dms-help-how"};function qb(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},Uc({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,f)=>Ra((C(),N("section",{key:c.id,class:"dms-pane",ref_for:!0,ref:b=>{b?e.paneEls[f]=b:delete e.paneEls[f]},hidden:f!==e.activeIndex,"data-doxa-help":e.tabHasHelp(c)?"":null,"data-doxa-gallery":""},[!c.heavy||f===e.activeIndex?(C(),N(ne,{key:0},[e.showsMobileNotice(c.id)?(C(),N("div",Mb,[O("span",null,B(e.largerScreenText),1),O("button",{type:"button",class:"dms-mobile-notice-x","aria-label":e.tr("dismiss"),onClick:b=>e.dismissMobileNotice(c.id)},"×",8,Ab)])):se("",!0),O("div",{class:"dms-slot",ref_for:!0,ref:b=>e.setSlot(f,b)},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",Cb,B(e.tr("loading",{label:e.tabLabel(c)})),1)):c.state==="error"?(C(),N("div",Ib,[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",Nb,[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,Ob)),[[Za,f===e.activeIndex]])),128)),e.disabledNotice?(C(),N("div",Fb,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",Db,B(e.tabLabel(e.tabs[e.activeIndex])),1),O("p",Rb,[O("strong",null,B(e.activeHelp.what),1)]),O("p",zb,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",vb,[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",wb,B(e.activeLang.flag),1),O("span",kb,B(e.activeLang.nativeName),1),t[6]||(t[6]=O("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,yb),e.localeOpen?(C(),N("ul",xb,[(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:f=>e.setLocale(c.code)},[O("span",Tb,B(c.flag),1),O("span",Pb,B(c.nativeName),1),O("span",Eb,B(c.name),1)],10,Lb)],8,Sb))),128))])):se("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","home-href","home-label","title","nav-label","header","groups","active","onUpdate:active"])}const Wb=Uo(_b,[["render",qb],["styles",[ub]]]),jb=jm(),Ub=Jp(Wb,{configureApp(e){e.provide("dmsTreeBase",jb)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Ub)})(); +`,"map-info"),(w,K)=>(C(),N("div",{ref_key:"rootEl",ref:Ne,class:"mi",dir:b()?"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,mh),[[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",fh,[e.placement==="top-left"?(C(),N("path",hh)):(C(),N("path",bh))]))],2)):se("",!0),W.value&&!H.value&&!z()&&m.value?(C(),N("div",{key:1,class:Ge(["mi-pointer mi-ctl",["mi-ctl-"+m.value.side,{"mi-ctl-strip":m.value.strip}]]),style:Ea(k()),"aria-hidden":"true"},[O("span",{dir:b()?"rtl":"ltr"},B(ye(s)("mapInfo.pointer")),9,$h),(C(),N("svg",_h,[m.value.side==="left"?(C(),N("path",vh)):(C(),N("path",yh))]))],6)):se("",!0),H.value?(C(),N("div",{key:2,class:"mi-scrim",onClick:jo(nt,["self"]),onKeydown:S},[O("div",{ref_key:"dialogEl",ref:I,class:"mi-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"mi-title-"+e.storageKey},[O("div",kh,[O("h2",{id:"mi-title-"+e.storageKey,class:"mi-title"},B(ye(s)("mapInfo.title")),9,xh),O("button",{ref_key:"closeEl",ref:fe,type:"button",class:"mi-close","aria-label":ye(s)("mapInfo.close"),onClick:nt},"×",8,Sh)]),O("div",Lh,[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,Ph),O("p",Eh,B(r(e.leadKey,e.lead)),1)],8,Th)):se("",!0),(e.takeawayKey||e.takeaway)&&!c()?(C(),N("p",Oh,[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",Mh,[O("span",null,B(ye(s)("mapInfo.tabStrategy")),1),K[2]||(K[2]=O("span",{class:"mi-chev","aria-hidden":"true"},"▾",-1))]),O("p",Ah,B(l()),1),p().length?(C(),N("ul",Ch,[(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,Ih),Y.full?(C(),N("div",Nh,[O("a",{class:"mi-full",href:ce(Y.full),target:"_blank",rel:"noopener"},B(ye(s)("mapInfo.openFull")),9,Fh)])):se("",!0)],64)):Y.kind==="pages"&&(Y.pages||[]).length?(C(),N(ne,{key:1},[ke[oe]?(C(),N(ne,{key:1},[O("div",Wh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,jh)]),O("div",Uh,[(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)+" "+f(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,Vh)],8,Hh))),128))]),O("div",Bh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapsePages")),9,Gh)])],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:f(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,Rh)],10,Dh),Y.pages.length>1?(C(),N("div",zh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandPages",{n:f(Y.pages.length)})),9,qh)])):se("",!0)],64))],64)):Y.kind==="deck"&&(Y.cards||[]).length?(C(),N(ne,{key:2},[ke[oe]?(C(),N(ne,{key:1},[O("div",Zh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,Qh)]),O("div",eb,[(C(!0),N(ne,null,Xe(Y.cards,(ge,Oe)=>(C(),N("img",{key:Oe,class:"mi-img",src:ce(ge),alt:Te(Y)+" "+f(Oe+1),loading:"lazy",decoding:"async",onError:ee},null,40,tb))),128))]),O("div",ab,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"true",onClick:ge=>G(oe)},B(ye(s)("mapInfo.collapseDeck")),9,ob)])],64)):(C(),N(ne,{key:0},[O("button",{type:"button",class:"mi-hit mi-deck","aria-label":ye(s)("mapInfo.expandDeck",{n:f(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,Xh))),128))],8,Kh),O("div",Yh,[O("button",{type:"button",class:"mi-toggle","aria-expanded":"false",onClick:ge=>G(oe)},B(ye(s)("mapInfo.expandDeck",{n:f(Y.cards.length)})),9,Jh)])],64))],64)):Y.kind==="table"&&(Y.columns||[]).length?(C(),N(ne,{key:3},[O("div",nb,[O("table",sb,[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,Hb)=>(C(),N("td",{key:Hb},B(typeof Ht=="number"?f(Ht):Ht),1))),128))]))),128))])])]),Y.total&&Y.total>(Y.rows||[]).length?(C(),N("p",rb,B(ye(s)("mapInfo.moreRows",{n:f(Y.total-(Y.rows||[]).length)})),1)):se("",!0)],64)):se("",!0)])),[[Za,!Q[oe]]])),128)),e.noteKey||e.note?(C(),N("p",ib,B(r(e.noteKey,e.note)),1)):se("",!0)]),a()?se("",!0):(C(),N("div",lb,[O("label",null,[O("input",{type:"checkbox",checked:y.value,onChange:K[0]||(K[0]=Y=>F(Y.target.checked))},null,40,cb),O("span",null,B(ye(s)("mapInfo.pointerOff")),1)])]))],8,wh)],32)):se("",!0)],8,gh))}},ub=":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 db(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 gb=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"}];fb(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 mb(){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 fb(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}function hb(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function bb(e){const t=mb(),a=e&&Array.isArray(e.bundles)?e.bundles:[],o=[];for(const n of a){const s=n&&n.bundle;if(!s||t.has(s)||gb.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||hb(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 $b(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(L=>L.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 f=l&&Array.isArray(l.instances)?l.instances:[],b=!!(s.instance&&f.some(L=>(L&&(L.id||L.instance))===s.instance));n[s.id]={tag:p,scriptUrl:c,profile:l&&l.profile||s.profile,instance:b?s.instance:"",heavy:en.has(p)||en.has(s.bundle),scroll:tn.has(p)||tn.has(s.bundle)}}return n}const _b=$a({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:Bf,BackToTopButton:ri,MapInfo:pb,ShellLanguageMenu:ih},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:Gf(),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&&uh[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||lh("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=p=>{try{return new URL(p,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(p=>p.url===r)||s.push({url:r,root:t(r)});const i=[],l=p=>{if(p>=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.");return}const{url:c,root:f}=s[p];return i.push(c),fetch(c,{credentials:"same-origin"}).then(b=>{if(!b||!b.ok)throw new Error(c+" → HTTP "+(b?b.status:"?"));return b.json()}).then(b=>{if(!b)throw new Error(c+" → empty");this.manifestError="",this.manifestBase=f||"",this.applyManifest(b)}).catch(()=>l(p+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.mobileFlags=db(e),this.applyPageGlobals();const t=$b(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 bb(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,Kf(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);wl(a).then(()=>Wm(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)})}}}),vb={class:"dms-locale"},yb=["aria-expanded"],wb={class:"dms-flag"},kb={class:"dms-locale-name"},xb={key:0,class:"dms-locale-menu",role:"listbox"},Sb=["aria-selected"],Lb=["onClick"],Tb={class:"dms-flag"},Pb={class:"dms-locale-name"},Eb={class:"dms-locale-en"},Ob=["hidden","data-doxa-help"],Mb={key:0,class:"dms-mobile-notice",role:"status"},Ab=["aria-label","onClick"],Cb={key:2,class:"dms-hint"},Ib={key:3,class:"dms-hint err"},Nb={key:4,class:"dms-hint err"},Fb={key:0,class:"dms-notice",role:"status"},Db={id:"dms-help-title",class:"dms-help-title"},Rb={class:"dms-help-what"},zb={class:"dms-help-how"};function qb(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},Uc({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,f)=>Ra((C(),N("section",{key:c.id,class:"dms-pane",ref_for:!0,ref:b=>{b?e.paneEls[f]=b:delete e.paneEls[f]},hidden:f!==e.activeIndex,"data-doxa-help":e.tabHasHelp(c)?"":null,"data-doxa-gallery":""},[!c.heavy||f===e.activeIndex?(C(),N(ne,{key:0},[e.showsMobileNotice(c.id)?(C(),N("div",Mb,[O("span",null,B(e.largerScreenText),1),O("button",{type:"button",class:"dms-mobile-notice-x","aria-label":e.tr("dismiss"),onClick:b=>e.dismissMobileNotice(c.id)},"×",8,Ab)])):se("",!0),O("div",{class:"dms-slot",ref_for:!0,ref:b=>e.setSlot(f,b)},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",Cb,B(e.tr("loading",{label:e.tabLabel(c)})),1)):c.state==="error"?(C(),N("div",Ib,[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",Nb,[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,Ob)),[[Za,f===e.activeIndex]])),128)),e.disabledNotice?(C(),N("div",Fb,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",Db,B(e.tabLabel(e.tabs[e.activeIndex])),1),O("p",Rb,[O("strong",null,B(e.activeHelp.what),1)]),O("p",zb,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",vb,[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",wb,B(e.activeLang.flag),1),O("span",kb,B(e.activeLang.nativeName),1),t[6]||(t[6]=O("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,yb),e.localeOpen?(C(),N("ul",xb,[(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:f=>e.setLocale(c.code)},[O("span",Tb,B(c.flag),1),O("span",Pb,B(c.nativeName),1),O("span",Eb,B(c.name),1)],10,Lb)],8,Sb))),128))])):se("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","home-href","home-label","title","nav-label","header","groups","active","onUpdate:active"])}const Wb=Uo(_b,[["render",qb],["styles",[ub]]]),jb=jm(),Ub=Jp(Wb,{configureApp(e){e.provide("dmsTreeBase",jb)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Ub)})(); 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 ea8613356..f1c6a9a17 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 aa80bbdb6..b09de6314 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-NTW8JAlFhr7toBjxKiN0S0jympiM1em5jx+0Y156CA/ef3ABAruQzJOctvsvFtBa", + "integrity": "sha384-6LiR6vjB5GrQ6TfcAVuCU0pon7+MTANx5bWgB0a9RiWqYqBvFZ1DS9XX7/hg07iO", "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": [ {