From e678b1ecab1aa1dcff99afa0b02848c83383a7f4 Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Tue, 22 Sep 2026 15:23:00 +0000 Subject: [PATCH] Rebuild the tree so a fresh clone serves working bundles public/ is committed so a developer can run the dev server immediately without a four-minute build first, which means stale build output ships to every clone. This rebuild carries the heading-prop rename in both capability-5 shells and relocates the archived gallery to its own path. --- public/.build.lock | 2 +- public/__gallery/index.html | 363 ++++++++++++++++++ .../doxa-maps/doxa-maps-spa/doxa-maps-spa.js | 18 +- .../doxa-maps-spa/app/index.html | 2 +- .../doxa-maps-spa/doxa-maps-spa/index.html | 2 +- public/doxa-maps/index.html | 2 +- public/doxa-maps/manifest.json | 8 +- .../doxa-maps/plugin-studio/plugin-studio.js | 2 +- .../plugin-studio/plugin-studio/index.html | 2 +- .../plugin-studio/studio/index.html | 2 +- 10 files changed, 383 insertions(+), 20 deletions(-) create mode 100644 public/__gallery/index.html diff --git a/public/.build.lock b/public/.build.lock index 78d7eb4b6..4a5c13f32 100644 --- a/public/.build.lock +++ b/public/.build.lock @@ -1 +1 @@ -pid=202753 started=2026-09-22T14:18:45Z by=lk10x +pid=525656 started=2026-09-22T15:12:44Z by=lk10x diff --git a/public/__gallery/index.html b/public/__gallery/index.html new file mode 100644 index 000000000..a6fd386aa --- /dev/null +++ b/public/__gallery/index.html @@ -0,0 +1,363 @@ + + +
+ + +t(l,a,void 0,o));else{const l=Object.keys(e);n=new Array(l.length);for(let a=0,u=l.length;a{const o=i.fn(...n);return o&&(o.key=i.key),o}:i.fn)}return e}function cs(e,t,s,i,n,o){if(s==null&&(s={}),ne.ce||ne.parent&&ft(ne.parent)&&ne.parent.ce){const u=o!=null&&s.key==null?Y({},s,{key:o}):s,d=Object.keys(u).length>0;return t!=="default"&&(u.name=t),I(),hs(ee,null,[ye("slot",u,i)],d?-2:64)}let r=e[t];r&&r._c&&(r._d=!1);const l=Ue.length;I();let a;try{const u=r&&gn(r(s)),d=s.key||o||u&&u.key;a=hs(ee,{key:(d&&!me(d)?d:`_${t}`)+(!u&&i?"_fb":"")},u||(i?i():[]),u&&e._===1?64:-2)}catch(u){for(let d=Ue.length;d>l;d--)ai();throw u}finally{r&&r._c&&(r._d=!0)}return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),a}function gn(e){return e.some(t=>ci(t)?!(t.type===Te||t.type===ee&&!gn(t.children)):!0)?e:null}const Qs=e=>e?zn(e)?vs(e):Qs(e.parent):null,kt=Y(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Qs(e.parent),$root:e=>Qs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>xn(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=Zi.bind(e.proxy)),$watch:e=>br.bind(e)}),ei=(e,t)=>e!==B&&!e.__isScriptSetup&&F(e,t),Fr={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:i,data:n,props:o,accessCache:r,type:l,appContext:a}=e;if(t[0]!=="$"){const S=r[t];if(S!==void 0)switch(S){case 1:return i[t];case 2:return n[t];case 4:return s[t];case 3:return o[t]}else{if(ei(i,t))return r[t]=1,i[t];if(n!==B&&F(n,t))return r[t]=2,n[t];if(F(o,t))return r[t]=3,o[t];if(s!==B&&F(s,t))return r[t]=4,s[t];ti&&(r[t]=0)}}const u=kt[t];let d,p;if(u)return t==="$attrs"&&re(e.attrs,"get",""),u(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(s!==B&&F(s,t))return r[t]=4,s[t];if(p=a.config.globalProperties,F(p,t))return p[t]},set({_:e},t,s){const{data:i,setupState:n,ctx:o}=e;return ei(n,t)?(n[t]=s,!0):i!==B&&F(i,t)?(i[t]=s,!0):F(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:i,appContext:n,props:o,type:r}},l){let a;return!!(s[l]||e!==B&&l[0]!=="$"&&F(e,l)||ei(t,l)||F(o,l)||F(i,l)||F(kt,l)||F(n.config.globalProperties,l)||(a=r.__cssModules)&&a[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:F(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function mn(e){return A(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let ti=!0;function Dr(e){const t=xn(e),s=e.proxy,i=e.ctx;ti=!1,t.beforeCreate&&vn(t.beforeCreate,e,"bc");const{data:n,computed:o,methods:r,watch:l,provide:a,inject:u,created:d,beforeMount:p,mounted:S,beforeUpdate:C,updated:H,activated:R,deactivated:Z,beforeDestroy:J,beforeUnmount:j,destroyed:V,unmounted:T,render:te,renderTracked:Me,renderTriggered:Re,errorCaptured:Je,serverPrefetch:ys,expose:tt,inheritAttrs:Dt,components:_s,directives:ws,filters:mi}=t;if(u&&$r(u,i,null),r)for(const X in r){const q=r[X];M(q)&&(i[X]=q.bind(s))}if(n){const X=n.call(s,s);$(X)&&(e.data=Us(X))}if(ti=!0,o)for(const X in o){const q=o[X],st=M(q)?q.bind(s,s):M(q.get)?q.get.bind(s,s):we,Ss=!M(q)&&M(q.set)?q.set.bind(s):we,it=wl({get:st,set:Ss});Object.defineProperty(i,X,{enumerable:!0,configurable:!0,get:()=>it.value,set:Pe=>it.value=Pe})}if(l)for(const X in l)bn(l[X],i,s,X);if(a){const X=M(a)?a.call(s):a;Reflect.ownKeys(X).forEach(q=>{gr(q,X[q])})}d&&vn(d,e,"c");function de(X,q){A(q)?q.forEach(st=>X(st.bind(s))):q&&X(q.bind(s))}if(de(Cr,p),de(un,S),de(Er,C),de(kr,H),de(_r,R),de(wr,Z),de(Rr,Je),de(Mr,Me),de(Or,Re),de(Tr,j),de(hn,T),de(Ar,ys),A(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(q=>{Object.defineProperty(X,q,{get:()=>s[q],set:st=>s[q]=st,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===we&&(e.render=te),Dt!=null&&(e.inheritAttrs=Dt),_s&&(e.components=_s),ws&&(e.directives=ws),ys&&an(e)}function $r(e,t,s=we){A(e)&&(e=si(e));for(const i in e){const n=e[i];let o;$(n)?"default"in n?o=Ct(n.from||i,n.default,!0):o=Ct(n.from||i):o=Ct(n),le(o)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):t[i]=o}}function vn(e,t,s){xe(A(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,s)}function bn(e,t,s,i){let n=i.includes(".")?rn(s,i):()=>s[i];if(G(e)){const o=t[e];M(o)&&Gs(n,o)}else if(M(e))Gs(n,e.bind(s));else if($(e))if(A(e))e.forEach(o=>bn(o,t,s,i));else{const o=M(e.handler)?e.handler.bind(s):t[e.handler];M(o)&&Gs(n,o,e)}}function xn(e){const t=e.type,{mixins:s,extends:i}=t,{mixins:n,optionsCache:o,config:{optionMergeStrategies:r}}=e.appContext,l=o.get(t);let a;return l?a=l:!n.length&&!s&&!i?a=t:(a={},n.length&&n.forEach(u=>fs(a,u,r,!0)),fs(a,t,r)),$(t)&&o.set(t,a),a}function fs(e,t,s,i=!1){const{mixins:n,extends:o}=t;o&&fs(e,o,s,!0),n&&n.forEach(r=>fs(e,r,s,!0));for(const r in t)if(!(i&&r==="expose")){const l=Hr[r]||s&&s[r];e[r]=l?l(e[r],t[r]):t[r]}return e}const Hr={data:yn,props:_n,emits:_n,methods:Tt,computed:Tt,beforeCreate:fe,created:fe,beforeMount:fe,mounted:fe,beforeUpdate:fe,updated:fe,beforeDestroy:fe,beforeUnmount:fe,destroyed:fe,unmounted:fe,activated:fe,deactivated:fe,errorCaptured:fe,serverPrefetch:fe,components:Tt,directives:Tt,watch:Ur,provide:yn,inject:Vr};function yn(e,t){return t?e?function(){return Y(M(e)?e.call(this,this):e,M(t)?t.call(this,this):t)}:t:e}function Vr(e,t){return Tt(si(e),si(t))}function si(e){if(A(e)){const t={};for(let s=0;s<"+e(s.tag)+">"}))}))},active(){return this.rows.find(e=>e.key===this.activeKey)||null},countLabel(){return new Set(this.rows.map(t=>t.bundle)).size+" bundles · "+this.rows.length+" elements"},activeLang(){return Wa(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}}},mounted(){this.loadManifest()},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},setLocale(e){this.locale=e,this.localeOpen=!1,Ga(e);try{const t=this.active,s=this._slots&&this._slots[this.activeKey],n=s&&s.firstElementChild;if(n&&n.setAttribute&&t){const i={profile:t.label,instanceId:"ps-"+this.activeKey.replace(/\//g,"-"),locale:e};(this.tk||this.cfg.tk)&&(i.tk=this.tk||this.cfg.tk),n.setAttribute("profile-config",JSON.stringify(i))}}catch{}},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const s=t.replace(/^\.\//,"");return this.base?this.base.replace(/\/+$/,"")+"/"+s:"../"+s},loadManifest(){const e=s=>{this.rows=this.rowsFromManifest(s),this.route()},t=typeof window<"u"&&window.__psBaked||null;if(typeof fetch=="function"&&typeof location<"u"&&location.protocol!=="file:"){const s=this.base?this.resolve("manifest.json"):"../manifest.json";fetch(s,{cache:"no-cache"}).then(n=>n.ok?n.json():null).then(n=>e(n||t||{bundles:[]})).catch(()=>e(t||{bundles:[]}))}else e(t||{bundles:[]})},rowsFromManifest(e){const t=[];for(const s of e.bundles||[])if(s.bundle!=="plugin-studio")for(const n of s.profiles||[]){const i=n.element||s.elements&&s.elements[0]||s.bundle,o=Za(n.type||"single"),l=mo.has(i)||mo.has(s.bundle);t.push({key:s.bundle+"/"+n.profile,bundle:s.bundle,label:n.profile,tag:i,cap:o,emoji:Qa[o]||"🔹",description:n.description||"",heavy:l,bundleJs:s.scriptUrl||s.bundle+"/"+s.bundle+".js",embed:n.embed&&n.embed.script||"",mounted:!1,state:"idle",error:""})}return t.sort((s,n)=>n.cap-s.cap||s.bundle.localeCompare(n.bundle)||s.label.localeCompare(n.label)),t},route(){const e=(typeof location<"u"&&location.hash||"").replace(/^#\/?/,"");e&&this.rows.some(t=>t.key===e)&&this.select(e)},select(e){const t=this.activeKey;if(this.activeKey=e,this.embedOpen=!1,t&&t!==e){const n=this.rows.find(i=>i.key===t);n&&n.heavy&&n.mounted&&this.releaseRow(n)}const s=this.rows.find(n=>n.key===e);s&&(s.mounted||this.$nextTick(()=>{this.activeKey===s.key&&this.mountElement(s)}))},releaseRow(e){try{const t=this._slots&&this._slots[e.key];t&&(t.innerHTML="")}catch{}this._slots&&delete this._slots[e.key],e.mounted=!1,e.state="idle",e.error=""},mountElement(e){e.mounted=!0,e.state="loading";const t=this.resolve(e.bundleJs);ec(t).then(()=>tc(e.tag)).then(()=>{try{if(e.heavy&&this.activeKey!==e.key){e.mounted=!1,e.state="idle";return}const s=this._slots&&this._slots[e.key];if(!s){e.state="error",e.error="no slot";return}s.innerHTML="";const n=document.createElement(e.tag),i={profile:e.label,instanceId:"ps-"+e.key.replace(/\//g,"-"),locale:this.locale};(this.tk||this.cfg.tk)&&(i.tk=this.tk||this.cfg.tk),(this.tokenUrl||this.cfg.tokenUrl)&&(i.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.base&&(i.treeBase=this.base),n.setAttribute("profile-config",JSON.stringify(i)),n.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(n),e.state="ready"}catch(s){e.state="error",e.error="mount failed: "+(s&&s.message||String(s))}}).catch(s=>{e.state="error",e.error=s&&s.message||String(s)})},copyText(e,t){const s=()=>{const n=t.textContent;t.textContent="Copied",setTimeout(()=>{t.textContent=n},1200)};if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(e).then(s,()=>{});else try{const n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),s()}catch{}}}}),nc={class:"ps-count"},ic={class:"ps-locale"},oc=["aria-expanded"],lc={class:"ps-flag"},rc={class:"ps-locale-name"},ac={key:0,class:"ps-locale-menu",role:"listbox"},cc=["aria-selected"],fc=["onClick"],dc={class:"ps-flag"},uc={class:"ps-locale-name"},pc={class:"ps-locale-en"},hc={key:0,class:"ps-toolbar"},gc={class:"ps-bar"},vc={class:"ps-bar-t"},bc={class:"ps-bar-sub"},mc={key:0},xc=["aria-expanded"],yc={key:0,class:"ps-embed"},_c=["value"],wc={class:"ps-stage"},Sc=["hidden"],Cc={key:0,class:"ps-hint"},Ec={key:1,class:"ps-hint err"},kc={key:0,class:"ps-hint"};function Tc(e,t,s,n,i,o){const l=Il("VerticalTabsLayout");return R(),ps(l,{title:e.title,"nav-label":"Plugin elements · by capability 5 → 1",header:!0,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.select},{brand:Ct(()=>[...t[3]||(t[3]=[k("span",{class:"ps-logo","aria-hidden":"true"},[k("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[k("path",{d:"M10 3v3M14 3v3M7 6h10v5a5 5 0 0 1-10 0V6Z"}),k("path",{d:"M12 16v5"})])],-1)])]),meta:Ct(()=>[k("span",nc,j(e.countLabel),1),k("span",ic,[k("button",{type:"button",class:"ps-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=r=>e.localeOpen=!e.localeOpen)},[k("span",lc,j(e.activeLang.flag),1),k("span",rc,j(e.activeLang.nativeName),1),t[4]||(t[4]=k("span",{class:"ps-dots","aria-hidden":"true"},"⋮",-1))],8,oc),e.localeOpen?(R(),L("ul",ac,[(R(!0),L(ee,null,dt(e.switcherLangs,r=>(R(),L("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[k("button",{type:"button",class:We(["ps-locale-opt",{active:r.code===e.locale}]),onClick:a=>e.setLocale(r.code)},[k("span",dc,j(r.flag),1),k("span",uc,j(r.nativeName),1),k("span",pc,j(r.name),1)],10,fc)],8,cc))),128))])):oe("",!0)])]),toolbar:Ct(()=>[e.active?(R(),L("div",hc,[k("div",gc,[k("div",vc,[k("b",null,j(e.active.label),1),k("span",bc,[ht(j(e.active.bundle)+" · <"+j(e.active.tag)+">",1),e.active.description?(R(),L("span",mc," · "+j(e.active.description),1)):oe("",!0)])]),e.active.embed?(R(),L("button",{key:0,type:"button",class:"ps-btn","aria-expanded":String(e.embedOpen),onClick:t[1]||(t[1]=r=>e.embedOpen=!e.embedOpen)},"Copy embed",8,xc)):oe("",!0)]),e.embedOpen&&e.active.embed?(R(),L("div",yc,[k("label",null,[t[5]||(t[5]=ht("script embed ",-1)),k("button",{type:"button",class:"ps-btn",onClick:t[2]||(t[2]=r=>e.copyText(e.active.embed,r.target))},"Copy")]),k("textarea",{readonly:"",value:e.active.embed},null,8,_c)])):oe("",!0)])):oe("",!0)]),default:Ct(()=>[k("div",wc,[(R(!0),L(ee,null,dt(e.flatRows,r=>qs((R(),L("section",{key:r.key,class:"ps-pane",hidden:r.key!==e.activeKey},[!r.heavy||r.key===e.activeKey?(R(),L(ee,{key:0},[k("div",{class:"ps-slot",ref_for:!0,ref:a=>e.setSlot(r.key,a)},null,512),r.state==="loading"?(R(),L("div",Cc,"Loading "+j(r.label)+"…",1)):r.state==="error"?(R(),L("div",Ec,[ht(" Could not load "+j(r.label)+".",1),t[6]||(t[6]=k("br",null,null,-1)),k("small",null,j(r.error),1)])):oe("",!0)],64)):oe("",!0)],8,Sc)),[[un,r.key===e.activeKey]])),128)),e.activeKey?oe("",!0):(R(),L("div",kc,"Choose an element from the list."))])]),_:1},8,["title","groups","active","onUpdate:active"])}const Ac=ho(sc,[["render",Tc],["styles",[Ja]]]);function Oc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Mc=Oc(),Pc=Ur(Ac,{configureApp(e){e.provide("psTreeBase",Mc)}});typeof customElements<"u"&&!customElements.get("plugin-studio")&&customElements.define("plugin-studio",Pc)})();
+`,Xa={5:"App shell · nested-mfe-spa",4:"Composite element",3:"Multi-view element",2:"Preset element",1:"Single element"},bo={"nested-mfe-spa":0,"nested-elements-mfe":1,monolithic:2,parameterized:3,single:4},Za=e=>bo[e]!=null?5-bo[e]:1,Qa={5:"🧩",4:"🔗",3:"🗂️",2:"🎛️",1:"🔹"},mo=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"]),Ft={};function ec(e,t){return Ft[e]||(Ft[e]=new Promise((s,n)=>{const i=document.createElement("script");i.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(i.type="module"),i.onload=()=>s(),i.onerror=()=>{delete Ft[e],n(new Error("failed to load "+e))},document.head.appendChild(i)})),Ft[e]}function tc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((s,n)=>setTimeout(()=>{customElements.get(e)||n(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const sc=Xs({name:"PluginStudio",components:{VerticalTabsLayout:Ba},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"Plugin Studio"},tokenUrl:{type:String,default:""},tk:{type:String,default:""}},setup(){return uo(Ya,"plugin-studio"),{injectedBase:Et("psTreeBase","")}},data(){return{activeKey:"",embedOpen:!1,locale:qa(),localeOpen:!1,switcherLangs:Ua,rows:[]}},computed:{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(/\/+$/,"")+"/":""},flatRows(){return this.rows},groups(){const e={};for(const t of this.rows)(e[t.cap]=e[t.cap]||[]).push(t);return[5,4,3,2,1].filter(t=>e[t]&&e[t].length).map(t=>({cap:t,label:Xa[t]||"capability "+t,rows:e[t]}))},navGroups(){const e=t=>String(t).replace(/&/g,"&").replace(//g,">");return this.groups.map(t=>({key:"cap-"+t.cap,badge:"CAP "+t.cap,label:t.label,count:t.rows.length,rows:t.rows.map(s=>({key:s.key,label:s.label,emoji:s.emoji,sub:"<"+e(s.tag)+">"}))}))},active(){return this.rows.find(e=>e.key===this.activeKey)||null},countLabel(){return new Set(this.rows.map(t=>t.bundle)).size+" bundles · "+this.rows.length+" elements"},activeLang(){return Wa(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}}},mounted(){this.loadManifest()},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},setLocale(e){this.locale=e,this.localeOpen=!1,Ga(e);try{const t=this.active,s=this._slots&&this._slots[this.activeKey],n=s&&s.firstElementChild;if(n&&n.setAttribute&&t){const i={profile:t.label,instanceId:"ps-"+this.activeKey.replace(/\//g,"-"),locale:e};(this.tk||this.cfg.tk)&&(i.tk=this.tk||this.cfg.tk),n.setAttribute("profile-config",JSON.stringify(i))}}catch{}},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const s=t.replace(/^\.\//,"");return this.base?this.base.replace(/\/+$/,"")+"/"+s:"../"+s},loadManifest(){const e=s=>{this.rows=this.rowsFromManifest(s),this.route()},t=typeof window<"u"&&window.__psBaked||null;if(typeof fetch=="function"&&typeof location<"u"&&location.protocol!=="file:"){const s=this.base?this.resolve("manifest.json"):"../manifest.json";fetch(s,{cache:"no-cache"}).then(n=>n.ok?n.json():null).then(n=>e(n||t||{bundles:[]})).catch(()=>e(t||{bundles:[]}))}else e(t||{bundles:[]})},rowsFromManifest(e){const t=[];for(const s of e.bundles||[])if(s.bundle!=="plugin-studio")for(const n of s.profiles||[]){const i=n.element||s.elements&&s.elements[0]||s.bundle,o=Za(n.type||"single"),l=mo.has(i)||mo.has(s.bundle);t.push({key:s.bundle+"/"+n.profile,bundle:s.bundle,label:n.profile,tag:i,cap:o,emoji:Qa[o]||"🔹",description:n.description||"",heavy:l,bundleJs:s.scriptUrl||s.bundle+"/"+s.bundle+".js",embed:n.embed&&n.embed.script||"",mounted:!1,state:"idle",error:""})}return t.sort((s,n)=>n.cap-s.cap||s.bundle.localeCompare(n.bundle)||s.label.localeCompare(n.label)),t},route(){const e=(typeof location<"u"&&location.hash||"").replace(/^#\/?/,"");e&&this.rows.some(t=>t.key===e)&&this.select(e)},select(e){const t=this.activeKey;if(this.activeKey=e,this.embedOpen=!1,t&&t!==e){const n=this.rows.find(i=>i.key===t);n&&n.heavy&&n.mounted&&this.releaseRow(n)}const s=this.rows.find(n=>n.key===e);s&&(s.mounted||this.$nextTick(()=>{this.activeKey===s.key&&this.mountElement(s)}))},releaseRow(e){try{const t=this._slots&&this._slots[e.key];t&&(t.innerHTML="")}catch{}this._slots&&delete this._slots[e.key],e.mounted=!1,e.state="idle",e.error=""},mountElement(e){e.mounted=!0,e.state="loading";const t=this.resolve(e.bundleJs);ec(t).then(()=>tc(e.tag)).then(()=>{try{if(e.heavy&&this.activeKey!==e.key){e.mounted=!1,e.state="idle";return}const s=this._slots&&this._slots[e.key];if(!s){e.state="error",e.error="no slot";return}s.innerHTML="";const n=document.createElement(e.tag),i={profile:e.label,instanceId:"ps-"+e.key.replace(/\//g,"-"),locale:this.locale};(this.tk||this.cfg.tk)&&(i.tk=this.tk||this.cfg.tk),(this.tokenUrl||this.cfg.tokenUrl)&&(i.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.base&&(i.treeBase=this.base),n.setAttribute("profile-config",JSON.stringify(i)),n.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(n),e.state="ready"}catch(s){e.state="error",e.error="mount failed: "+(s&&s.message||String(s))}}).catch(s=>{e.state="error",e.error=s&&s.message||String(s)})},copyText(e,t){const s=()=>{const n=t.textContent;t.textContent="Copied",setTimeout(()=>{t.textContent=n},1200)};if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(e).then(s,()=>{});else try{const n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),s()}catch{}}}}),nc={class:"ps-count"},ic={class:"ps-locale"},oc=["aria-expanded"],lc={class:"ps-flag"},rc={class:"ps-locale-name"},ac={key:0,class:"ps-locale-menu",role:"listbox"},cc=["aria-selected"],fc=["onClick"],dc={class:"ps-flag"},uc={class:"ps-locale-name"},pc={class:"ps-locale-en"},hc={key:0,class:"ps-toolbar"},gc={class:"ps-bar"},vc={class:"ps-bar-t"},bc={class:"ps-bar-sub"},mc={key:0},xc=["aria-expanded"],yc={key:0,class:"ps-embed"},_c=["value"],wc={class:"ps-stage"},Sc=["hidden"],Cc={key:0,class:"ps-hint"},Ec={key:1,class:"ps-hint err"},kc={key:0,class:"ps-hint"};function Tc(e,t,s,n,i,o){const l=Il("VerticalTabsLayout");return R(),ps(l,{title:e.heading,"nav-label":"Plugin elements · by capability 5 → 1",header:!0,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.select},{brand:Ct(()=>[...t[3]||(t[3]=[k("span",{class:"ps-logo","aria-hidden":"true"},[k("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[k("path",{d:"M10 3v3M14 3v3M7 6h10v5a5 5 0 0 1-10 0V6Z"}),k("path",{d:"M12 16v5"})])],-1)])]),meta:Ct(()=>[k("span",nc,j(e.countLabel),1),k("span",ic,[k("button",{type:"button",class:"ps-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=r=>e.localeOpen=!e.localeOpen)},[k("span",lc,j(e.activeLang.flag),1),k("span",rc,j(e.activeLang.nativeName),1),t[4]||(t[4]=k("span",{class:"ps-dots","aria-hidden":"true"},"⋮",-1))],8,oc),e.localeOpen?(R(),L("ul",ac,[(R(!0),L(ee,null,dt(e.switcherLangs,r=>(R(),L("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[k("button",{type:"button",class:We(["ps-locale-opt",{active:r.code===e.locale}]),onClick:a=>e.setLocale(r.code)},[k("span",dc,j(r.flag),1),k("span",uc,j(r.nativeName),1),k("span",pc,j(r.name),1)],10,fc)],8,cc))),128))])):oe("",!0)])]),toolbar:Ct(()=>[e.active?(R(),L("div",hc,[k("div",gc,[k("div",vc,[k("b",null,j(e.active.label),1),k("span",bc,[ht(j(e.active.bundle)+" · <"+j(e.active.tag)+">",1),e.active.description?(R(),L("span",mc," · "+j(e.active.description),1)):oe("",!0)])]),e.active.embed?(R(),L("button",{key:0,type:"button",class:"ps-btn","aria-expanded":String(e.embedOpen),onClick:t[1]||(t[1]=r=>e.embedOpen=!e.embedOpen)},"Copy embed",8,xc)):oe("",!0)]),e.embedOpen&&e.active.embed?(R(),L("div",yc,[k("label",null,[t[5]||(t[5]=ht("script embed ",-1)),k("button",{type:"button",class:"ps-btn",onClick:t[2]||(t[2]=r=>e.copyText(e.active.embed,r.target))},"Copy")]),k("textarea",{readonly:"",value:e.active.embed},null,8,_c)])):oe("",!0)])):oe("",!0)]),default:Ct(()=>[k("div",wc,[(R(!0),L(ee,null,dt(e.flatRows,r=>qs((R(),L("section",{key:r.key,class:"ps-pane",hidden:r.key!==e.activeKey},[!r.heavy||r.key===e.activeKey?(R(),L(ee,{key:0},[k("div",{class:"ps-slot",ref_for:!0,ref:a=>e.setSlot(r.key,a)},null,512),r.state==="loading"?(R(),L("div",Cc,"Loading "+j(r.label)+"…",1)):r.state==="error"?(R(),L("div",Ec,[ht(" Could not load "+j(r.label)+".",1),t[6]||(t[6]=k("br",null,null,-1)),k("small",null,j(r.error),1)])):oe("",!0)],64)):oe("",!0)],8,Sc)),[[un,r.key===e.activeKey]])),128)),e.activeKey?oe("",!0):(R(),L("div",kc,"Choose an element from the list."))])]),_:1},8,["title","groups","active","onUpdate:active"])}const Ac=ho(sc,[["render",Tc],["styles",[Ja]]]);function Oc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Mc=Oc(),Pc=Ur(Ac,{configureApp(e){e.provide("psTreeBase",Mc)}});typeof customElements<"u"&&!customElements.get("plugin-studio")&&customElements.define("plugin-studio",Pc)})();
diff --git a/public/doxa-maps/plugin-studio/plugin-studio/index.html b/public/doxa-maps/plugin-studio/plugin-studio/index.html
index 33917a329..ced97e36f 100644
--- a/public/doxa-maps/plugin-studio/plugin-studio/index.html
+++ b/public/doxa-maps/plugin-studio/plugin-studio/index.html
@@ -26,7 +26,7 @@
-
+
-
+