@highstate/designer 0.31.0 → 0.31.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{D as J,P as De,bB as je,bC as Ae,_ as be,i as pe,aR as Ve,n as ze,aI as Ge,bi as ve,aW as Re,bD as Ee,b1 as qe}from"#entry";import{E as z,V as l,Y as $,ai as ce,_ as o,W as n,aj as fe,$ as j,a0 as q,D as e,al as We,a1 as V,j as S,a_ as me,J as B,aX as Te,a2 as O,a7 as Oe,aG as _,aa as A,ab as se,aY as ye,aO as ee,w as te,ah as we,aT as Pe,aU as Fe,aV as ue,ak as He,a as Y,aW as Ye,as as R,aI as he,aJ as Ie,aK as ke,at as re,Z as de,r as C,b4 as Se,am as xe,an as ge,bi as Je,ap as Me,m as Ke,M as Qe,a5 as Xe}from"./-NXdyIEV.js";import{H as Ze,I as _e}from"./Btw6kqCM.js";import{I as et}from"./Dtu55PAv.js";import{_ as L,a as tt}from"./BnH0SUiF.js";import{C as nt}from"./BzfFclT9.js";import{P as at}from"./BLfHOckY.js";const $e=z({__name:"EditorLoader",props:{text:{},value:{}},setup(t){const{instancesStore:a}=J(),y=S(()=>t.value===-1?t.text:`${t.text} ${t.value}/${a.totalInstanceCount}...`);return(w,i)=>t.text?(l(),$(ce,{key:0,variant:"tonal"},{default:o(()=>[n(fe,{class:"text-overline"},{default:o(()=>[j(q(e(y)),1)]),_:1}),n(We,{indeterminate:t.value===-1,"model-value":t.value,max:e(a).totalInstanceCount,height:4,color:"primary",class:"w-full"},null,8,["indeterminate","model-value","max"])]),_:1})):V("",!0)}}),Rt=z({__name:"EditorLoaderPopup",setup(t){const{instancesStore:a,stateStore:y}=J(),w=S(()=>a.initializationPhase==="resolving"||y.initializationPhase==="calculating");return(i,v)=>e(w)?(l(),$(ce,{key:0,variant:"tonal"},{default:o(()=>[e(a).initializationPhase==="resolving"?(l(),$($e,{key:0,text:"Resolving instance inputs",value:e(a).resolvedInstanceCount},null,8,["value"])):V("",!0),e(y).initializationPhase==="calculating"?(l(),$($e,{key:1,text:"Detecting instance changes",value:e(y).calculatedInputHashCount},null,8,["value"])):V("",!0)]),_:1})):V("",!0)}}),Et=z({__name:"HubNodeWrapper",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},setup(t){const{stateStore:a}=J(),y=me("contextMenu");return(w,i)=>(l(),$(Ze,{hub:t.data.hub,onContextmenu:i[0]||(i[0]=v=>e(y)?.showContextMenu(v))},{default:o(()=>[n(e(Be),{ref_key:"contextMenu",ref:y,title:"Hub",subtitle:t.data.hub.id,"is-deletable":v=>e(a).isNodeDeletable(v)},null,8,["subtitle","is-deletable"])]),_:1},8,["hub"]))}}),st={key:0},ot={class:"d-flex flex-column"},it={key:0,class:"text-caption text-medium-emphasis"},lt={key:1,class:"text-body-2 text-medium-emphasis pa-4"},rt=z({__name:"OperationPlanTree",props:{phases:{}},setup(t){const{instancesStore:a,libraryStore:y}=J(),w=S(()=>{const p=[];for(const s of t.phases){const d={id:`phase-${s.type}`,title:`${s.type.charAt(0).toUpperCase()+s.type.slice(1)} Phase`,subtitle:`${s.instances.length} instance${s.instances.length===1?"":"s"}`,icon:r(s.type),iconColor:I(s.type),phaseType:s.type,children:[]},c=i(s.instances);d.children=c,p.push(d)}return p}),i=p=>{const s=new Map;for(const c of p)s.has(c.id)||s.set(c.id,{...c,children:[]});for(const c of p)c.parentId&&s.has(c.parentId)&&s.get(c.parentId).children.push(c);return p.filter(c=>!c.parentId||!s.has(c.parentId)).map(c=>v(c,s))},v=(p,s)=>{const d=a.instances.get(p.id),c=d?y.library.components[d.type]:null,h={id:p.id,title:c&&d?`${c.meta.title} "${d.name}"`:p.id,subtitle:p.message,icon:c?.meta.icon??"iconamoon:component",iconColor:c?.meta.iconColor,phaseType:"instance"},g=s.get(p.id);return g&&g.children.length>0&&(h.children=g.children.map(f=>v(f,s))),h},r=p=>{switch(p){case"preview":return"mdi-eye";case"destroy":return"mdi-delete";case"update":return"mdi-update";case"refresh":return"mdi-refresh";default:return"mdi-cog"}},I=p=>{switch(p){case"preview":return"secondary";case"destroy":return"error";case"update":return"primary";case"refresh":return"info";default:return"secondary"}};return(p,s)=>t.phases.length>0?(l(),B("div",st,[n(Te,{items:e(w),"item-title":"title","item-value":"id",density:"compact","open-all":"","indent-lines":"","bg-color":"#2d2d2d"},{prepend:o(({item:d})=>[n(e(De),{icon:d.icon,color:d.iconColor,width:"20",class:"mr-2"},null,8,["icon","color"])]),title:o(({item:d})=>[O("div",ot,[O("div",{class:Oe(["text-body-2",d.phaseType==="instance"?"font-weight-regular":"font-weight-medium"])},q(d.title),3),d.subtitle?(l(),B("div",it,q(d.subtitle),1)):V("",!0)])]),_:1},8,["items"])])):(l(),B("div",lt," No changes planned for this operation. "))}}),dt={key:0},ct={class:"text-caption"},ut=z({__name:"OperationOptions",props:ee({operation:{},compositeTargetsOnly:{type:Boolean,default:!1}},{options:{default:{}},optionsModifiers:{}}),emits:["update:options"],setup(t){const a=_(t,"options"),y=S(()=>Ue(t.operation,{compositeTargetsOnly:t.compositeTargetsOnly})),w=(i,v)=>{const r=v??!1;i==="forceUpdateDependencies"&&r&&(a.value.ignoreChangedDependencies=!1,a.value.ignoreDependencies=!1),i==="ignoreChangedDependencies"&&r&&(a.value.forceUpdateDependencies=!1,a.value.ignoreDependencies=!1),i==="ignoreDependencies"&&r&&(a.value.forceUpdateDependencies=!1,a.value.ignoreChangedDependencies=!1),i==="onlyDestroyGhosts"&&r&&(a.value.firstDestroyGhosts=!1,a.value.ignoreGhosts=!1),i==="firstDestroyGhosts"&&r&&(a.value.onlyDestroyGhosts=!1,a.value.ignoreGhosts=!1),i==="ignoreGhosts"&&r&&(a.value.onlyDestroyGhosts=!1,a.value.firstDestroyGhosts=!1),a.value[i]=r};return(i,v)=>a.value?(l(),B("div",dt,[(l(!0),B(A,null,se(e(y),r=>(l(),B(A,{key:r.key},[n(ye,{"model-value":a.value[r.key],"onUpdate:modelValue":I=>w(r.key,I),class:Oe(r===e(y)[0]?"mt-2":""),label:r.label,density:"compact","hide-details":""},null,8,["model-value","onUpdate:modelValue","class","label"]),O("div",ct,q(r.description),1)],64))),128))])):V("",!0)}}),pt={class:"metadata-section"},ft={class:"options-header"},mt={class:"text-body-2 text-medium-emphasis mb-4"},vt={class:"options-scrollable"},gt={class:"plan-header"},yt={class:"plan-scrollable"},ht={key:0,class:"plan-warnings"},bt=z({__name:"InstanceOperationDialog",props:ee({instances:{},component:{},operation:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const a=_(t,"visible"),{operationsStore:y,projectStore:w}=J(),i=S(()=>t.instances.length>1),v=S(()=>t.instances[0]),r=C({forceUpdateDependencies:!1,ignoreDependencies:!1,ignoreChangedDependencies:!1,forceUpdateChildren:!1,onlyDestroyGhosts:!1,firstDestroyGhosts:!1,ignoreGhosts:!1,destroyDependentInstances:!1,invokeDestroyTriggers:!0,deleteUnreachableResources:!1,forceDeleteState:!1,allowPartialCompositeInstanceUpdate:!1,allowPartialCompositeInstanceDestruction:!1,refresh:!1}),I=C([]),p=C(!1),s=C(null),d=C(""),c=C(""),h=S(()=>t.instances.every(b=>b.kind==="composite"));te([()=>t.operation,()=>t.instances],()=>{t.instances.length!==0&&(d.value=i.value?je(t.operation,t.instances):Ae(t.operation,v.value),r.value={...r.value,destroyDependentInstances:t.operation==="destroy"})},{immediate:!0}),te(()=>r.value,()=>{g()},{deep:!0}),te(()=>a.value,b=>{b&&g()});const g=async()=>{if(a.value){p.value=!0,s.value=null;try{const b=await y.planOperation({projectId:w.projectId,type:t.operation,instanceIds:t.instances.map(u=>u.id),options:r.value});I.value=b}catch(b){console.error("Failed to load operation plan:",b),s.value=b instanceof Error?b.message:"Unknown error"}finally{p.value=!1}}},f=S(()=>{const b=new Set,u=new Set,U=new Set,ne=new Set,k=new Set;for(const m of I.value)for(const x of m.instances){if(k.add(x.id),m.type==="update"){b.add(x.id);continue}if(m.type==="destroy"){u.add(x.id);continue}if(m.type==="refresh"){U.add(x.id);continue}m.type==="preview"&&ne.add(x.id)}return{update:b.size,destroy:u.size,refresh:U.size,preview:ne.size,unique:k.size}}),M=S(()=>{const b=Ue(t.operation,{compositeTargetsOnly:h.value}).filter(u=>!!u.warning&&!!r.value[u.key]).map(u=>u.warning);return[...new Set(b)]}),D=b=>`${b} instance${b===1?"":"s"}`,P=S(()=>{switch(t.operation){case"update":return"Update";case"preview":return"Preview";case"refresh":return"Refresh";case"destroy":return"Destroy";case"recreate":return"Recreate";default:return"Unknown operation"}}),W=S(()=>{const b=f.value;switch(t.operation){case"update":{const{update:u}=b;return u===0?P.value:`Update ${D(u)}`}case"recreate":return b.unique===0?P.value:`Recreate ${D(b.unique)}`;case"destroy":return b.destroy===0?P.value:`Destroy ${D(b.destroy)}`;case"refresh":return b.refresh===0?P.value:`Refresh ${D(b.refresh)}`;case"preview":return b.preview===0?P.value:`Preview ${D(b.preview)}`;default:return b.unique===0?P.value:`${P.value} ${D(b.unique)}`}}),E=S(()=>{switch(t.operation){case"update":return"primary";case"preview":return"secondary";case"refresh":return"info";case"destroy":return"error";case"recreate":return"warning";default:return"primary"}}),G=C(!1),H=async()=>{G.value=!0;try{await y.launchOperation({projectId:w.projectId,type:t.operation,instanceIds:t.instances.map(b=>b.id),options:r.value,meta:{title:d.value,description:c.value}}),a.value=!1}finally{G.value=!1}},K=S(()=>i.value?`${P.value} ${t.instances.length} instances`:t.component?`${P.value} ${t.component.meta.title} "${v.value.name}"`:`${P.value} "${v.value.name}"`);return(b,u)=>(l(),$(we,{modelValue:a.value,"onUpdate:modelValue":u[4]||(u[4]=U=>a.value=U),"max-width":"1200px",class:"operation-dialog"},{default:o(()=>[n(ce,{title:e(K),color:t.component?.meta.color??"#2d2d2d",class:"operation-card"},{prepend:o(()=>[t.component&&!e(i)?(l(),$(e(nt),{key:0,meta:t.component.meta},null,8,["meta"])):e(i)?(l(),$(de,{key:1},{default:o(()=>[...u[5]||(u[5]=[j("mdi-format-list-bulleted",-1)])]),_:1})):(l(),$(de,{key:2},{default:o(()=>[...u[6]||(u[6]=[j("mdi-cube-outline",-1)])]),_:1}))]),default:o(()=>[n(fe,{class:"operation-card-content"},{default:o(()=>[n(Pe,{fluid:"",class:"pa-0 fill-height"},{default:o(()=>[n(Fe,{"no-gutters":"",class:"fill-height"},{default:o(()=>[n(ue,{cols:"12",md:"5",class:"pr-md-4 column-container"},{default:o(()=>[O("div",pt,[u[7]||(u[7]=O("div",{class:"text-overline mb-2"},"Metadata",-1)),n(He,{modelValue:e(d),"onUpdate:modelValue":u[0]||(u[0]=U=>Y(d)?d.value=U:null),label:"Title",variant:"outlined",density:"compact",class:"mb-3",hint:"A descriptive title for this operation (optional)","persistent-hint":""},null,8,["modelValue"]),n(Ye,{modelValue:e(c),"onUpdate:modelValue":u[1]||(u[1]=U=>Y(c)?c.value=U:null),label:"Description",variant:"outlined",density:"compact",rows:"2",hint:"Describe the purpose of this operation (optional)","persistent-hint":""},null,8,["modelValue"])]),n(R,{class:"my-4"}),O("div",ft,[u[10]||(u[10]=O("div",{class:"text-overline mb-2"},"Options",-1)),O("p",mt,[u[8]||(u[8]=j(" Configure how the ",-1)),O("b",null,q(t.operation),1),u[9]||(u[9]=j(" operation should be executed. These options control the behavior and scope of the operation. ",-1))])]),O("div",vt,[n(ut,{options:e(r),"onUpdate:options":u[2]||(u[2]=U=>Y(r)?r.value=U:null),operation:t.operation,"composite-targets-only":e(h)},null,8,["options","operation","composite-targets-only"])])]),_:1}),n(R,{vertical:"",class:"d-none d-md-flex"}),n(ue,{cols:"12",md:"7",class:"pl-md-4 column-container"},{default:o(()=>[O("div",gt,[u[11]||(u[11]=O("div",{class:"text-overline mb-2"},"Execution Plan",-1)),u[12]||(u[12]=O("p",{class:"text-body-2 text-medium-emphasis mb-4"}," Preview of instances that will be affected by this operation. The plan shows the execution phases and which instances will be processed. ",-1)),e(s)?(l(),$(he,{key:0,type:"error",variant:"outlined",density:"compact",class:"mb-3"},{default:o(()=>[j(" Failed to load operation plan: "+q(e(s)),1)]),_:1})):V("",!0)]),O("div",yt,[n(rt,{phases:e(I)},null,8,["phases"])]),e(M).length>0?(l(),B("div",ht,[(l(!0),B(A,null,se(e(M),U=>(l(),$(he,{key:U,density:"compact",type:"warning",variant:"outlined"},{default:o(()=>[j(q(U),1)]),_:2},1024))),128))])):V("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),n(Ie,null,{default:o(()=>[n(ke),n(re,{onClick:u[3]||(u[3]=U=>a.value=!1)},{default:o(()=>[...u[13]||(u[13]=[j("Cancel",-1)])]),_:1}),n(re,{color:e(E),loading:e(G),disabled:e(p),onClick:H},{default:o(()=>[j(q(e(W)),1)]),_:1},8,["color","loading","disabled"])]),_:1})]),_:1},8,["title","color"])]),_:1},8,["modelValue"]))}}),wt=be(bt,[["__scopeId","data-v-542509f5"]]),It={class:"tree-scrollable"},kt={class:"d-flex flex-column"},St={class:"text-body-2 font-weight-regular"},xt={class:"text-caption text-medium-emphasis"},Ct=z({__name:"ForgetInstanceStateDialog",props:ee({instances:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const a=_(t,"visible"),{stateStore:y,libraryStore:w}=J(),i=S(()=>t.instances.length>1),v=S(()=>t.instances[0]),r=C(!1),I=C(!1),p=C(!1),s=S(()=>t.instances.map(h=>{const g=w.library.components?.[h.type];return{id:h.id,title:g?`${g.meta.title} "${h.name}"`:`${h.type} "${h.name}"`,subtitle:h.id,icon:g?.meta.icon??"iconamoon:component",iconColor:g?.meta.iconColor}})),d=async()=>{r.value=!0;try{await y.forgetInstanceStates(t.instances.map(h=>h.id),I.value,p.value),a.value=!1}finally{r.value=!1}},c=S(()=>{if(t.instances.length===0)return"Forget state";if(!i.value){const h=v.value,g=w.library.components?.[h.type];return g?`Forget state of ${g.meta.title} "${h.name}"`:`Forget state of ${h.type} "${h.name}"`}return`Forget state of ${t.instances.length} instances`});return(h,g)=>(l(),$(we,{modelValue:a.value,"onUpdate:modelValue":g[3]||(g[3]=f=>a.value=f),"max-width":"1200px",class:"forget-dialog"},{default:o(()=>[n(ce,{title:e(c),color:"#2d2d2d",class:"forget-card"},{default:o(()=>[n(fe,{class:"forget-card-content"},{default:o(()=>[n(Pe,{fluid:"",class:"pa-0 fill-height"},{default:o(()=>[n(Fe,{"no-gutters":"",class:"fill-height"},{default:o(()=>[n(ue,{cols:"12",md:"5",class:"pr-md-4 column-container"},{default:o(()=>[g[5]||(g[5]=O("div",{class:"text-overline mb-2"},"Options",-1)),n(ye,{modelValue:e(I),"onUpdate:modelValue":g[0]||(g[0]=f=>Y(I)?I.value=f:null),label:"Delete all secrets associated with this instance",density:"compact","hide-details":""},null,8,["modelValue"]),n(ye,{modelValue:e(p),"onUpdate:modelValue":g[1]||(g[1]=f=>Y(p)?p.value=f:null),label:"Clear all terminal data associated with this instance",density:"compact","hide-details":""},null,8,["modelValue"]),n(he,{density:"compact",type:"warning",variant:"outlined",class:"mt-4 alert-auto"},{default:o(()=>[...g[4]||(g[4]=[O("div",null," No destroy operation will be performed, so all resources will be left in place and unreachable by HighState. ",-1),O("div",null," You should only use this operation when the instance is unreachable/unrecoverable and you want to start from scratch. ",-1)])]),_:1})]),_:1}),n(R,{vertical:"",class:"d-none d-md-flex"}),n(ue,{cols:"12",md:"7",class:"pl-md-4 mt-4 mt-md-0 column-container"},{default:o(()=>[g[6]||(g[6]=O("div",{class:"text-overline mb-2"},"Instances",-1)),O("div",It,[n(Te,{items:e(s),"item-title":"title","item-value":"id",density:"compact","bg-color":"#2d2d2d",class:"forget-instance-tree"},{prepend:o(({item:f})=>[n(e(De),{icon:f.icon,color:f.iconColor,width:"20",class:"mr-2"},null,8,["icon","color"])]),title:o(({item:f})=>[O("div",kt,[O("div",St,q(f.title),1),O("div",xt,q(f.subtitle),1)])]),_:1},8,["items"])])]),_:1})]),_:1})]),_:1})]),_:1}),n(Ie,null,{default:o(()=>[n(ke),n(re,{onClick:g[2]||(g[2]=f=>a.value=!1)},{default:o(()=>[...g[7]||(g[7]=[j("Cancel",-1)])]),_:1}),n(re,{loading:e(r),onClick:d},{default:o(()=>[j(" Forget State"+q(e(i)?` (${t.instances.length})`:""),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]))}}),$t=be(Ct,[["__scopeId","data-v-7881a32c"]]),Dt={class:"session-list-cointainer"},Vt=z({__name:"TerminalListSubmenu",props:ee({stateId:{},terminalIds:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const{instancesStore:a,stateStore:y}=J(),{state:w,execute:i,isLoading:v}=y.getTerminalsState(S(()=>t.terminalIds)),{state:r,execute:I,isLoading:p}=a.getTerminalSessionsState(S(()=>t.stateId)),s=_(t,"visible");te(s,f=>{f&&(I(),i())});const d=f=>f.finishedAt?`Finished at ${new Date(f.finishedAt).toLocaleString()}`:`Started at ${new Date(f.startedAt).toLocaleString()}`,c=f=>{const M=Je();return f.finishedAt?"#9E9E9E":M.current.value.colors.success},h=C(null),g=async f=>{h.value=f;try{await a.openTerminal(f,!0)}finally{h.value=null}};return(f,M)=>(l(),$(e(L),{icon:"mdi-console",title:"Terminals"},{append:o(()=>[n(de,{icon:"mdi-menu-right",size:"x-small"})]),default:o(()=>[n(Se,{modelValue:s.value,"onUpdate:modelValue":M[0]||(M[0]=D=>s.value=D),"open-on-focus":!1,"open-on-hover":"","close-on-content-click":!1,submenu:"",activator:"parent"},{default:o(()=>[n(xe,{density:"compact",variant:"text"},{default:o(()=>[n(ge,{class:"text-overline"},{default:o(()=>[...M[1]||(M[1]=[j("Available Terminals",-1)])]),_:1}),(l(!0),B(A,null,se(e(w),D=>(l(),$(e(L),{key:D.id,disabled:!!e(h),title:D.meta.title,subtitle:D.meta.description,"custom-icon":D.meta.icon,loading:e(h)===D.id,icon:"mdi-console",onClick:P=>g(D.id)},null,8,["disabled","title","subtitle","custom-icon","loading","onClick"]))),128)),n(R,{class:"mt-2 mb-2"}),n(ge,{class:"text-overline"},{default:o(()=>[...M[2]||(M[2]=[j("Sessions",-1)])]),_:1}),O("div",Dt,[(l(!0),B(A,null,se(e(r),D=>(l(),$(e(L),{key:D.id,title:D.meta.title,subtitle:d(D),"custom-icon":D.meta.icon,icon:"mdi-console",color:c(D),onClick:P=>e(a).openTerminalSession(D)},null,8,["title","subtitle","custom-icon","color","onClick"]))),128))]),e(r).length===0?(l(),$(ge,{key:0,class:"text-disabled"},{default:o(()=>[...M[3]||(M[3]=[j(" No sessions found ",-1)])]),_:1})):V("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}))}}),Tt=be(Vt,[["__scopeId","data-v-7c86584d"]]),Ot=z({__name:"PageListSubmenu",props:ee({pageIds:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const{projectStore:a,stateStore:y}=J(),w=pe(),i=C({}),v=C(!1),r=_(t,"visible");te(r,async p=>{if(p){v.value=!0;try{i.value=await y.getPages(t.pageIds)}finally{v.value=!1}}});const I=async p=>{await w.openPage(a.projectId,p)};return(p,s)=>(l(),$(e(L),{icon:"mdi-file-document",title:"Pages"},{append:o(()=>[n(de,{icon:"mdi-menu-right",size:"x-small"})]),default:o(()=>[n(Se,{modelValue:r.value,"onUpdate:modelValue":s[0]||(s[0]=d=>r.value=d),"open-on-focus":!1,"open-on-hover":"","close-on-content-click":!1,submenu:"",activator:"parent"},{default:o(()=>[n(xe,{density:"compact",variant:"text"},{default:o(()=>[(l(!0),B(A,null,se(t.pageIds,d=>(l(),$(e(L),{key:d,title:e(i)[d]?.meta.title??d,subtitle:e(i)[d]?.meta.description,"custom-icon":e(i)[d]?.meta.icon,disabled:!e(i)[d],icon:"mdi-file-document",onClick:c=>I(d)},null,8,["title","subtitle","custom-icon","disabled","onClick"]))),128)),e(v)?(l(),$(Me,{key:0,title:"Loading pages..."})):V("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}))}}),Pt=z({__name:"PanelListSubmenu",props:ee({panelIds:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const{projectStore:a,stateStore:y}=J(),w=pe(),i=C([]),v=C(!1),r=_(t,"visible");return te(r,async I=>{if(I){v.value=!0;try{i.value=await y.getPanels(t.panelIds)}finally{v.value=!1}}}),(I,p)=>(l(),$(e(L),{icon:"mdi-view-dashboard-outline",title:"Panels"},{append:o(()=>[n(de,{icon:"mdi-menu-right",size:"x-small"})]),default:o(()=>[n(Se,{modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=s=>r.value=s),"open-on-focus":!1,"open-on-hover":"","close-on-content-click":!1,submenu:"",activator:"parent"},{default:o(()=>[n(xe,{density:"compact",variant:"text"},{default:o(()=>[(l(!0),B(A,null,se(e(i),s=>(l(),$(e(L),{key:s.id,title:s.meta.title,subtitle:s.meta.description,"custom-icon":s.meta.icon,icon:"mdi-view-dashboard-outline",onClick:d=>e(w).openPanel(e(a).projectId,s.id)},null,8,["title","subtitle","custom-icon","onClick"]))),128)),e(v)?(l(),$(Me,{key:0,title:"Loading panels..."})):V("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}))}}),Ft=z({__name:"InstanceContextMenu",props:{instance:{},component:{},state:{},terminalIds:{},stores:{},operation:{},locked:{type:Boolean},editable:{type:Boolean},ghost:{type:Boolean,default:!1}},setup(t,{expose:a}){const y=S(()=>t.terminalIds??t.state?.terminalIds??[]),{projectStore:w,stateStore:i,operationsStore:v}=t.stores,r=pe(),{selection:I}=Ve(),p=C(!1),s=C(!1),d=C("update"),c=C([]),h=C(!1),g=C([]),f=S(()=>I.selectedInstances.length>1&&I.selectedInstances.some(m=>m.id===t.instance.id)?I.selectedInstances:[t.instance]),M=S(()=>f.value.length>1),D=(k,m,x)=>{if(x==="preview"&&(M.value||k.kind!=="unit"))return!1;const Q=Ge(m?.lastOperationState?.status);switch(x){case"update":return!Q;case"refresh":return ve(m)&&!Q;case"preview":return!Q;case"recreate":case"destroy":return ve(m)&&!Q;default:return!1}},P=k=>t.ghost&&k!=="destroy"?!1:f.value.some(m=>{const x=i.instanceStates.get(m.id);return D(m,x,k)}),W=k=>t.ghost&&k!=="destroy"?!1:f.value.every(m=>{const x=i.instanceStates.get(m.id);return D(m,x,k)}),E=S(()=>f.value.some(k=>{const m=i.instanceStates.get(k.id);return ve(m)})),G=k=>{const m=f.value.length;return m===1?k==="update"?E.value?"Update":"Create":k.charAt(0).toUpperCase()+k.slice(1):k==="update"?`${E.value?"Update":"Create"} selected (${m})`:`${k.charAt(0).toUpperCase()+k.slice(1)} selected (${m})`},H=k=>{if(M.value)return"mdi-format-list-bulleted";switch(k){case"update":return E.value?"mdi-play":"mdi-rocket-launch";case"refresh":return"mdi-reload";case"preview":return"mdi-eye";case"recreate":return"mdi-restart";case"destroy":return"mdi-stop";default:return"mdi-play"}},K=k=>{d.value=k,c.value=f.value,s.value=!0,p.value=!1,I.clearSelection()},b=()=>{g.value=f.value,h.value=!0,p.value=!1,I.clearSelection()},u=me("contextMenu"),U=async k=>{u.value&&await u.value.showContextMenu(k)},ne=async()=>{if(f.value.length!==1||t.instance.kind!=="unit"){p.value=!1;return}const k=await v.launchInstanceOperation("preview",t.instance);p.value=!1,t.state&&await r.openLogsPanel(w.projectId,k.id,t.state.id)};return a({showContextMenu:U}),(k,m)=>(l(),B(A,null,[n(e(Be),{ref_key:"contextMenu",ref:u,visible:e(p),"onUpdate:visible":m[6]||(m[6]=x=>Y(p)?p.value=x:null),title:"Instance",subtitle:t.instance.id,"is-deletable":x=>t.stores.stateStore.isNodeDeletable(x)},{default:o(()=>[P("update")?(l(),$(e(L),{key:0,title:G("update"),icon:H("update"),color:"primary",disabled:t.locked||!W("update"),onClick:m[0]||(m[0]=x=>K("update"))},null,8,["title","icon","disabled"])):V("",!0),P("refresh")?(l(),$(e(L),{key:1,title:G("refresh"),icon:H("refresh"),color:"primary",disabled:t.locked||!W("refresh"),onClick:m[1]||(m[1]=x=>K("refresh"))},null,8,["title","icon","disabled"])):V("",!0),P("preview")?(l(),$(e(L),{key:2,title:G("preview"),icon:H("preview"),color:"secondary",disabled:t.locked||!W("preview"),onClick:ne},null,8,["title","icon","disabled"])):V("",!0),t.state?.lastOperationState?(l(),B(A,{key:3},[n(R),n(e(L),{title:"Open Logs",icon:"mdi-text",color:"primary",onClick:m[2]||(m[2]=x=>e(i).openInstanceLogs(t.instance))})],64)):V("",!0),n(R),n(e(L),{title:"View in Settings",icon:"mdi-cog",color:"primary",onClick:m[3]||(m[3]=()=>{const x=e(i).getInstanceState(t.instance.id);x&&("navigateTo"in k?k.navigateTo:e(ze))({name:"settings.instance-details",params:{projectId:e(w).projectId,stateId:x.id}}),p.value=!1})}),t.state?.id&&e(y).length>0?(l(),B(A,{key:4},[n(R),n(Tt,{"state-id":t.state.id,"terminal-ids":e(y)},null,8,["state-id","terminal-ids"])],64)):V("",!0),t.state?.pageIds?.length?(l(),B(A,{key:5},[n(R),n(Ot,{"page-ids":t.state.pageIds},null,8,["page-ids"])],64)):V("",!0),t.state?.panelIds?.length?(l(),B(A,{key:6},[n(R),n(Pt,{"panel-ids":t.state.panelIds},null,8,["panel-ids"])],64)):V("",!0),e(E)||t.ghost?(l(),B(A,{key:7},[n(R),P("recreate")?(l(),$(e(L),{key:0,title:G("recreate"),icon:H("recreate"),color:"warning",disabled:t.locked||!W("recreate"),onClick:m[4]||(m[4]=x=>K("recreate"))},null,8,["title","icon","disabled"])):V("",!0),P("destroy")?(l(),$(e(L),{key:1,title:G("destroy"),icon:H("destroy"),color:"error",disabled:t.locked||!W("destroy"),onClick:m[5]||(m[5]=x=>K("destroy"))},null,8,["title","icon","disabled"])):V("",!0),n(e(L),{title:e(M)?`Forget State selected (${e(f).length})`:"Forget State",icon:"mdi-delete-forever",color:"error",disabled:t.locked,onClick:b},null,8,["title","disabled"])],64)):V("",!0)]),_:1},8,["visible","subtitle","is-deletable"]),n(wt,{visible:e(s),"onUpdate:visible":m[7]||(m[7]=x=>Y(s)?s.value=x:null),operation:e(d),instances:e(c),component:t.component},null,8,["visible","operation","instances","component"]),n($t,{visible:e(h),"onUpdate:visible":m[8]||(m[8]=x=>Y(h)?h.value=x:null),instances:e(g)},null,8,["visible","instances"])],64))}}),Mt=[{key:"forceUpdateDependencies",label:"Force update dependencies",description:"Force update all dependencies regardless of their current state. Bypasses hash-based change detection for dependency chains.",showForOperations:["update"]},{key:"ignoreChangedDependencies",label:"Ignore changed dependencies",description:"Skip only changed dependencies. Failed or undeployed dependencies of selected instances are still included.",showForOperations:["update"]},{key:"ignoreDependencies",label:"Ignore dependencies",description:"Skip all dependencies of selected instances, including failed and undeployed prerequisites. Operate only on explicitly selected instances.",warning:"This is manual mode. The operation may fail unless every required prerequisite instance is selected explicitly.",showForOperations:["update"]},{key:"forceUpdateChildren",label:"Force update children instances",description:"Force update all children of composite instances regardless of their state. Overrides selective child inclusion logic.",showForOperations:["update"]},{key:"onlyDestroyGhosts",label:"Only destroy ghosts",description:"Skip update phase and run only ghost cleanup destroy phase for affected composite instances.",showForOperations:["update"],requiresCompositeTargets:!0},{key:"firstDestroyGhosts",label:"Destroy ghosts before update",description:"Run ghost cleanup destroy phase before update phase for affected composite instances.",showForOperations:["update"],requiresCompositeTargets:!0},{key:"ignoreGhosts",label:"Ignore ghosts",description:"Skip ghost cleanup destroy phase for update operations.",showForOperations:["update"],requiresCompositeTargets:!0},{key:"destroyDependentInstances",label:"Destroy dependent instances",description:"Include dependent instances when destroying instances. Traverses the dependency graph in reverse to prevent orphaned instances.",defaultValue:!0,showForOperations:["destroy","recreate"]},{key:"invokeDestroyTriggers",label:"Invoke destroy triggers",description:"Execute destroy triggers when destroying instances. Controls trigger execution during the destruction phase.",defaultValue:!0},{key:"deleteUnreachableResources",label:"Delete unreachable resources",description:"Delete Pulumi resources that are no longer referenced in the state. Deletes orphaned resources within individual instances.",warning:"All resources that will not be reachable at the moment of the destroy operation will be removed from the state. Only use when you are sure that these resources do not actually exist!"},{key:"forceDeleteState",label:"Force delete state",description:"Force deletion of instance state even if the destroy operation fails. Bypasses normal destroy procedures as emergency fallback.",warning:"This will delete the stack state and all resources in it even if the destroy operation failed. Use only when the stack is unrecoverable and you want to start from scratch.",showForOperations:["destroy","recreate"]},{key:"allowPartialCompositeInstanceUpdate",label:"Allow partial update of composite instances",description:"Allow update of individual composite children without requiring all siblings. When enabled, only necessary children are included.",showForOperations:["update","recreate"]},{key:"allowPartialCompositeInstanceDestruction",label:"Allow partial destruction of composite instances",description:"Allow partial destruction of composite instances during cascade operations. When enabled, cascade destruction includes only directly dependent children.",showForOperations:["destroy","recreate"]},{key:"refresh",label:"Refresh state before operation",description:"Also refresh the state of instances during the operation. Synchronizes state with actual infrastructure."},{key:"debug",label:"Enable debug logging",description:"Enable debug logging for Pulumi engine and resource providers. Sets TF_LOG=DEBUG for Terraform providers.",warning:"Debug mode may expose sensitive information including credentials in the logs. Use only when absolutely necessary for troubleshooting."}],Ue=(t,a)=>Mt.filter(y=>y.requiresCompositeTargets&&!a?.compositeTargetsOnly?!1:y.showForOperations?y.showForOperations.includes(t):!0),Ut=z({__name:"PageDialog",props:ee({meta:{},content:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const a=_(t,"visible");return(y,w)=>(l(),$(we,{modelValue:a.value,"onUpdate:modelValue":w[1]||(w[1]=i=>a.value=i),"max-width":"80vh","max-height":"60vh"},{default:o(()=>[n(ce,{title:t.meta.title,color:"#2d2d2d"},{default:o(()=>[n(fe,{style:{"overflow-y":"scroll"}},{default:o(()=>[n(at,{content:t.content},null,8,["content"])]),_:1}),n(Ie,null,{default:o(()=>[n(ke),n(re,{onClick:w[0]||(w[0]=i=>a.value=!1)},{default:o(()=>[...w[2]||(w[2]=[j("Close",-1)])]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]))}}),qt=z({__name:"InstanceNodeWrapper",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},setup(t){const a=J(),y=pe(),{projectStore:w,stateStore:i,instancesStore:v,libraryStore:r,operationsStore:I,validationStore:p}=a,s=S(()=>t.data.instance),d=S(()=>{const F=v.getInstanceComponent(s.value);if(!F)throw new Error(`component "${s.value.type}" for instance "${s.value.id}" not found in library`);return F}),c=S(()=>i.instanceStates.get(s.value.id)),h=S(()=>c.value&&i.instanceLocks.get(c.value.id)),g=S(()=>I.getLastInstanceOperation(s.value.id)),f=S(()=>v.isGhostInstance(s.value.id)),M=C(!1),D=C(!1),P=C(),W=C([]),E=C(!1),G=C(!1),H=C({}),K=async()=>{M.value=!0;try{if(!c.value?.pageIds)return;const F=c.value.pageIds;if(!F.length)return;const T=await i.getPage(F[0]);if(!T)return;P.value=T.meta,W.value=T.content,D.value=!0}finally{M.value=!1}},b=C(!1),u=C(!1),U=S(()=>{const F=c.value?.terminalIds??[];if(d.value.kind!=="composite")return F;const T=new Set,N=new Set,X=[],ae=Z=>{for(const le of Z??[])N.has(le)||(N.add(le),X.push(le))},Ce=Z=>{if(T.has(Z))return;T.add(Z);const le=i.instanceStates.get(Z);ae(le?.terminalIds);for(const Le of v.getInstanceChildren(Z))Ce(Le.id)};ae(F);for(const Z of v.getInstanceChildren(s.value.id))Ce(Z.id);return X}),ne=async()=>{b.value=!0;try{if(U.value.length===0)return;await v.openTerminal(U.value[0])}finally{b.value=!1}},k=async()=>{u.value=!0;try{const F=c.value?.panelIds?.[0];if(!F)return;await y.openPanel(w.projectId,F)}finally{u.value=!1}},m=async()=>{G.value=!0;try{if(!c.value)return;const F=await a.stateStore.getInstanceSecrets(c.value.id);H.value={...F},E.value=!0}finally{G.value=!1}},x=async()=>{const F=c.value?.id??s.value.id;await y.openCompositeInstancePanel(w.projectId,F)},Q=me("contextMenu"),oe=Re(),ie=C(null),Ne=F=>f.value?!1:Ee(oe,r.library,v.inputResolverOutputs,F);return te(()=>({ghost:f.value,initialized:oe.areNodesInitialized.value}),({ghost:F,initialized:T})=>{if(!T)return;const N=oe.findNode(t.id);if(N){if(!F){if(ie.value){const{connectable:X,draggable:ae}=ie.value;oe.updateNode(t.id,()=>({connectable:X,draggable:ae})),ie.value=null}return}ie.value||(ie.value={connectable:!!N.connectable,draggable:N.draggable??!0}),oe.updateNode(t.id,()=>({connectable:!1,draggable:!0}))}},{immediate:!0}),(F,T)=>(l(),$(_e,{"editing-secrets":e(E),"onUpdate:editingSecrets":T[1]||(T[1]=N=>Y(E)?E.value=N:null),"loading-secrets":e(G),"initial-secrets":e(H),"loading-page":e(M),instance:t.data.instance,component:e(d),entities:e(r).library.entities,"project-id":e(w).projectId,"input-resolver-outputs":e(v).inputResolverOutputs,"input-resolver-dependent-map":e(v).inputResolverDependentMap,"is-valid-connection":Ne,"instance-lock":e(h),state:e(c),"terminal-ids":e(U),"loading-panel":e(u),editable:t.data.editable&&!e(f),ghost:e(f),stores:("markRaw"in F?F.markRaw:e(Ke))(e(a)),"workspace-store":e(y),"all-instances":e(v).instances,"onSave:args":T[2]||(T[2]=(N,X,ae)=>e(v).updateInstance(N,X,ae)),"onSave:secrets":T[3]||(T[3]=(N,X)=>e(i).updateInstanceSecrets(N,X)),"onOpen:secrets":m,"onOpen:terminal":ne,"onOpen:panel":k,"onOperation:launch":T[4]||(T[4]=N=>e(I).launchQuickInstanceOperation(N,t.data.instance)),"onOperation:cancel":T[5]||(T[5]=N=>e(I).cancelInstanceOperation(e(c).lastOperationState.operationId,t.data.instance.id)),onContextmenu:T[6]||(T[6]=N=>e(Q)?.showContextMenu(N)),"onOpen:composite":x,"onOpen:page":K},{status:o(()=>[n(e(et),{state:e(c),operation:e(g),"expected-input-hash":e(i).inputHashOutputs.get(e(s).id)?.inputHash,"validation-output":e(p).validationOutputs.get(e(s).id)},null,8,["state","operation","expected-input-hash","validation-output"])]),default:o(()=>[n(e(Ft),{ref_key:"contextMenu",ref:Q,stores:e(a),instance:e(s),component:e(d),state:e(c),"terminal-ids":e(U),editable:t.data.editable&&!e(f),locked:!!e(h),ghost:e(f)},null,8,["stores","instance","component","state","terminal-ids","editable","locked","ghost"]),e(P)?(l(),$(e(Ut),{key:0,visible:e(D),"onUpdate:visible":T[0]||(T[0]=N=>Y(D)?D.value=N:null),meta:e(P),content:e(W)},null,8,["visible","meta","content"])):V("",!0)]),_:1},8,["editing-secrets","loading-secrets","initial-secrets","loading-page","instance","component","entities","project-id","input-resolver-outputs","input-resolver-dependent-map","instance-lock","state","terminal-ids","loading-panel","editable","ghost","stores","workspace-store","all-instances"]))}}),Be=z({__name:"NodeContextMenu",props:ee({title:{},subtitle:{},isDeletable:{type:Function}},{visible:{type:Boolean,default:!1},visibleModifiers:{}}),emits:["update:visible"],setup(t,{expose:a}){const{selection:y,vueFlowStore:w,deleteNodes:i}=Ve(),v=_(t,"visible"),r=qe(),I=me("contextMenu"),p=async h=>{I.value&&await I.value.showContextMenu(h)},{off:s}=w.onViewportChange(()=>{v.value=!1});Qe(()=>{s(),v.value=!1}),a({showContextMenu:p});const d=S(()=>t.isDeletable(r.node)?y.selectedNodeIds.has(r.id)?Array.from(y.selectedNodes).filter(t.isDeletable):[r.node]:[]),c=S(()=>d.value.length===1?"Delete":`Delete selected (${d.value.length})`);return(h,g)=>(l(),$(tt,{ref_key:"contextMenu",ref:I,visible:v.value,"onUpdate:visible":g[1]||(g[1]=f=>v.value=f),title:t.title,subtitle:t.subtitle},{default:o(()=>[h.$slots.default?(l(),B(A,{key:0},[n(R),Xe(h.$slots,"default")],64)):V("",!0),e(d).length>0?(l(),B(A,{key:1},[n(R),n(L,{title:e(c),icon:"mdi-delete",color:"error",onClick:g[0]||(g[0]=f=>e(i)(e(d)))},null,8,["title"])],64)):V("",!0)]),_:3},8,["visible","title","subtitle"]))}});export{Rt as _,Et as a,qt as b,Ft as c};
1
+ import{D as J,P as De,bB as je,bC as Ae,_ as be,i as pe,aR as Ve,n as ze,aI as Ge,bi as ve,aW as Re,bD as Ee,b1 as qe}from"#entry";import{E as z,V as l,Y as $,ai as ce,_ as o,W as n,aj as fe,$ as j,a0 as q,D as e,al as We,a1 as V,j as S,a_ as me,J as B,aX as Te,a2 as O,a7 as Oe,aG as _,aa as A,ab as se,aY as ye,aO as ee,w as te,ah as we,aT as Pe,aU as Fe,aV as ue,ak as He,a as Y,aW as Ye,as as R,aI as he,aJ as Ie,aK as ke,at as re,Z as de,r as C,b4 as Se,am as xe,an as ge,bi as Je,ap as Me,m as Ke,M as Qe,a5 as Xe}from"./-NXdyIEV.js";import{H as Ze,I as _e}from"./Cjc0AvC7.js";import{I as et}from"./Dtu55PAv.js";import{_ as L,a as tt}from"./BnH0SUiF.js";import{C as nt}from"./BzfFclT9.js";import{P as at}from"./BLfHOckY.js";const $e=z({__name:"EditorLoader",props:{text:{},value:{}},setup(t){const{instancesStore:a}=J(),y=S(()=>t.value===-1?t.text:`${t.text} ${t.value}/${a.totalInstanceCount}...`);return(w,i)=>t.text?(l(),$(ce,{key:0,variant:"tonal"},{default:o(()=>[n(fe,{class:"text-overline"},{default:o(()=>[j(q(e(y)),1)]),_:1}),n(We,{indeterminate:t.value===-1,"model-value":t.value,max:e(a).totalInstanceCount,height:4,color:"primary",class:"w-full"},null,8,["indeterminate","model-value","max"])]),_:1})):V("",!0)}}),Rt=z({__name:"EditorLoaderPopup",setup(t){const{instancesStore:a,stateStore:y}=J(),w=S(()=>a.initializationPhase==="resolving"||y.initializationPhase==="calculating");return(i,v)=>e(w)?(l(),$(ce,{key:0,variant:"tonal"},{default:o(()=>[e(a).initializationPhase==="resolving"?(l(),$($e,{key:0,text:"Resolving instance inputs",value:e(a).resolvedInstanceCount},null,8,["value"])):V("",!0),e(y).initializationPhase==="calculating"?(l(),$($e,{key:1,text:"Detecting instance changes",value:e(y).calculatedInputHashCount},null,8,["value"])):V("",!0)]),_:1})):V("",!0)}}),Et=z({__name:"HubNodeWrapper",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},setup(t){const{stateStore:a}=J(),y=me("contextMenu");return(w,i)=>(l(),$(Ze,{hub:t.data.hub,onContextmenu:i[0]||(i[0]=v=>e(y)?.showContextMenu(v))},{default:o(()=>[n(e(Be),{ref_key:"contextMenu",ref:y,title:"Hub",subtitle:t.data.hub.id,"is-deletable":v=>e(a).isNodeDeletable(v)},null,8,["subtitle","is-deletable"])]),_:1},8,["hub"]))}}),st={key:0},ot={class:"d-flex flex-column"},it={key:0,class:"text-caption text-medium-emphasis"},lt={key:1,class:"text-body-2 text-medium-emphasis pa-4"},rt=z({__name:"OperationPlanTree",props:{phases:{}},setup(t){const{instancesStore:a,libraryStore:y}=J(),w=S(()=>{const p=[];for(const s of t.phases){const d={id:`phase-${s.type}`,title:`${s.type.charAt(0).toUpperCase()+s.type.slice(1)} Phase`,subtitle:`${s.instances.length} instance${s.instances.length===1?"":"s"}`,icon:r(s.type),iconColor:I(s.type),phaseType:s.type,children:[]},c=i(s.instances);d.children=c,p.push(d)}return p}),i=p=>{const s=new Map;for(const c of p)s.has(c.id)||s.set(c.id,{...c,children:[]});for(const c of p)c.parentId&&s.has(c.parentId)&&s.get(c.parentId).children.push(c);return p.filter(c=>!c.parentId||!s.has(c.parentId)).map(c=>v(c,s))},v=(p,s)=>{const d=a.instances.get(p.id),c=d?y.library.components[d.type]:null,h={id:p.id,title:c&&d?`${c.meta.title} "${d.name}"`:p.id,subtitle:p.message,icon:c?.meta.icon??"iconamoon:component",iconColor:c?.meta.iconColor,phaseType:"instance"},g=s.get(p.id);return g&&g.children.length>0&&(h.children=g.children.map(f=>v(f,s))),h},r=p=>{switch(p){case"preview":return"mdi-eye";case"destroy":return"mdi-delete";case"update":return"mdi-update";case"refresh":return"mdi-refresh";default:return"mdi-cog"}},I=p=>{switch(p){case"preview":return"secondary";case"destroy":return"error";case"update":return"primary";case"refresh":return"info";default:return"secondary"}};return(p,s)=>t.phases.length>0?(l(),B("div",st,[n(Te,{items:e(w),"item-title":"title","item-value":"id",density:"compact","open-all":"","indent-lines":"","bg-color":"#2d2d2d"},{prepend:o(({item:d})=>[n(e(De),{icon:d.icon,color:d.iconColor,width:"20",class:"mr-2"},null,8,["icon","color"])]),title:o(({item:d})=>[O("div",ot,[O("div",{class:Oe(["text-body-2",d.phaseType==="instance"?"font-weight-regular":"font-weight-medium"])},q(d.title),3),d.subtitle?(l(),B("div",it,q(d.subtitle),1)):V("",!0)])]),_:1},8,["items"])])):(l(),B("div",lt," No changes planned for this operation. "))}}),dt={key:0},ct={class:"text-caption"},ut=z({__name:"OperationOptions",props:ee({operation:{},compositeTargetsOnly:{type:Boolean,default:!1}},{options:{default:{}},optionsModifiers:{}}),emits:["update:options"],setup(t){const a=_(t,"options"),y=S(()=>Ue(t.operation,{compositeTargetsOnly:t.compositeTargetsOnly})),w=(i,v)=>{const r=v??!1;i==="forceUpdateDependencies"&&r&&(a.value.ignoreChangedDependencies=!1,a.value.ignoreDependencies=!1),i==="ignoreChangedDependencies"&&r&&(a.value.forceUpdateDependencies=!1,a.value.ignoreDependencies=!1),i==="ignoreDependencies"&&r&&(a.value.forceUpdateDependencies=!1,a.value.ignoreChangedDependencies=!1),i==="onlyDestroyGhosts"&&r&&(a.value.firstDestroyGhosts=!1,a.value.ignoreGhosts=!1),i==="firstDestroyGhosts"&&r&&(a.value.onlyDestroyGhosts=!1,a.value.ignoreGhosts=!1),i==="ignoreGhosts"&&r&&(a.value.onlyDestroyGhosts=!1,a.value.firstDestroyGhosts=!1),a.value[i]=r};return(i,v)=>a.value?(l(),B("div",dt,[(l(!0),B(A,null,se(e(y),r=>(l(),B(A,{key:r.key},[n(ye,{"model-value":a.value[r.key],"onUpdate:modelValue":I=>w(r.key,I),class:Oe(r===e(y)[0]?"mt-2":""),label:r.label,density:"compact","hide-details":""},null,8,["model-value","onUpdate:modelValue","class","label"]),O("div",ct,q(r.description),1)],64))),128))])):V("",!0)}}),pt={class:"metadata-section"},ft={class:"options-header"},mt={class:"text-body-2 text-medium-emphasis mb-4"},vt={class:"options-scrollable"},gt={class:"plan-header"},yt={class:"plan-scrollable"},ht={key:0,class:"plan-warnings"},bt=z({__name:"InstanceOperationDialog",props:ee({instances:{},component:{},operation:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const a=_(t,"visible"),{operationsStore:y,projectStore:w}=J(),i=S(()=>t.instances.length>1),v=S(()=>t.instances[0]),r=C({forceUpdateDependencies:!1,ignoreDependencies:!1,ignoreChangedDependencies:!1,forceUpdateChildren:!1,onlyDestroyGhosts:!1,firstDestroyGhosts:!1,ignoreGhosts:!1,destroyDependentInstances:!1,invokeDestroyTriggers:!0,deleteUnreachableResources:!1,forceDeleteState:!1,allowPartialCompositeInstanceUpdate:!1,allowPartialCompositeInstanceDestruction:!1,refresh:!1}),I=C([]),p=C(!1),s=C(null),d=C(""),c=C(""),h=S(()=>t.instances.every(b=>b.kind==="composite"));te([()=>t.operation,()=>t.instances],()=>{t.instances.length!==0&&(d.value=i.value?je(t.operation,t.instances):Ae(t.operation,v.value),r.value={...r.value,destroyDependentInstances:t.operation==="destroy"})},{immediate:!0}),te(()=>r.value,()=>{g()},{deep:!0}),te(()=>a.value,b=>{b&&g()});const g=async()=>{if(a.value){p.value=!0,s.value=null;try{const b=await y.planOperation({projectId:w.projectId,type:t.operation,instanceIds:t.instances.map(u=>u.id),options:r.value});I.value=b}catch(b){console.error("Failed to load operation plan:",b),s.value=b instanceof Error?b.message:"Unknown error"}finally{p.value=!1}}},f=S(()=>{const b=new Set,u=new Set,U=new Set,ne=new Set,k=new Set;for(const m of I.value)for(const x of m.instances){if(k.add(x.id),m.type==="update"){b.add(x.id);continue}if(m.type==="destroy"){u.add(x.id);continue}if(m.type==="refresh"){U.add(x.id);continue}m.type==="preview"&&ne.add(x.id)}return{update:b.size,destroy:u.size,refresh:U.size,preview:ne.size,unique:k.size}}),M=S(()=>{const b=Ue(t.operation,{compositeTargetsOnly:h.value}).filter(u=>!!u.warning&&!!r.value[u.key]).map(u=>u.warning);return[...new Set(b)]}),D=b=>`${b} instance${b===1?"":"s"}`,P=S(()=>{switch(t.operation){case"update":return"Update";case"preview":return"Preview";case"refresh":return"Refresh";case"destroy":return"Destroy";case"recreate":return"Recreate";default:return"Unknown operation"}}),W=S(()=>{const b=f.value;switch(t.operation){case"update":{const{update:u}=b;return u===0?P.value:`Update ${D(u)}`}case"recreate":return b.unique===0?P.value:`Recreate ${D(b.unique)}`;case"destroy":return b.destroy===0?P.value:`Destroy ${D(b.destroy)}`;case"refresh":return b.refresh===0?P.value:`Refresh ${D(b.refresh)}`;case"preview":return b.preview===0?P.value:`Preview ${D(b.preview)}`;default:return b.unique===0?P.value:`${P.value} ${D(b.unique)}`}}),E=S(()=>{switch(t.operation){case"update":return"primary";case"preview":return"secondary";case"refresh":return"info";case"destroy":return"error";case"recreate":return"warning";default:return"primary"}}),G=C(!1),H=async()=>{G.value=!0;try{await y.launchOperation({projectId:w.projectId,type:t.operation,instanceIds:t.instances.map(b=>b.id),options:r.value,meta:{title:d.value,description:c.value}}),a.value=!1}finally{G.value=!1}},K=S(()=>i.value?`${P.value} ${t.instances.length} instances`:t.component?`${P.value} ${t.component.meta.title} "${v.value.name}"`:`${P.value} "${v.value.name}"`);return(b,u)=>(l(),$(we,{modelValue:a.value,"onUpdate:modelValue":u[4]||(u[4]=U=>a.value=U),"max-width":"1200px",class:"operation-dialog"},{default:o(()=>[n(ce,{title:e(K),color:t.component?.meta.color??"#2d2d2d",class:"operation-card"},{prepend:o(()=>[t.component&&!e(i)?(l(),$(e(nt),{key:0,meta:t.component.meta},null,8,["meta"])):e(i)?(l(),$(de,{key:1},{default:o(()=>[...u[5]||(u[5]=[j("mdi-format-list-bulleted",-1)])]),_:1})):(l(),$(de,{key:2},{default:o(()=>[...u[6]||(u[6]=[j("mdi-cube-outline",-1)])]),_:1}))]),default:o(()=>[n(fe,{class:"operation-card-content"},{default:o(()=>[n(Pe,{fluid:"",class:"pa-0 fill-height"},{default:o(()=>[n(Fe,{"no-gutters":"",class:"fill-height"},{default:o(()=>[n(ue,{cols:"12",md:"5",class:"pr-md-4 column-container"},{default:o(()=>[O("div",pt,[u[7]||(u[7]=O("div",{class:"text-overline mb-2"},"Metadata",-1)),n(He,{modelValue:e(d),"onUpdate:modelValue":u[0]||(u[0]=U=>Y(d)?d.value=U:null),label:"Title",variant:"outlined",density:"compact",class:"mb-3",hint:"A descriptive title for this operation (optional)","persistent-hint":""},null,8,["modelValue"]),n(Ye,{modelValue:e(c),"onUpdate:modelValue":u[1]||(u[1]=U=>Y(c)?c.value=U:null),label:"Description",variant:"outlined",density:"compact",rows:"2",hint:"Describe the purpose of this operation (optional)","persistent-hint":""},null,8,["modelValue"])]),n(R,{class:"my-4"}),O("div",ft,[u[10]||(u[10]=O("div",{class:"text-overline mb-2"},"Options",-1)),O("p",mt,[u[8]||(u[8]=j(" Configure how the ",-1)),O("b",null,q(t.operation),1),u[9]||(u[9]=j(" operation should be executed. These options control the behavior and scope of the operation. ",-1))])]),O("div",vt,[n(ut,{options:e(r),"onUpdate:options":u[2]||(u[2]=U=>Y(r)?r.value=U:null),operation:t.operation,"composite-targets-only":e(h)},null,8,["options","operation","composite-targets-only"])])]),_:1}),n(R,{vertical:"",class:"d-none d-md-flex"}),n(ue,{cols:"12",md:"7",class:"pl-md-4 column-container"},{default:o(()=>[O("div",gt,[u[11]||(u[11]=O("div",{class:"text-overline mb-2"},"Execution Plan",-1)),u[12]||(u[12]=O("p",{class:"text-body-2 text-medium-emphasis mb-4"}," Preview of instances that will be affected by this operation. The plan shows the execution phases and which instances will be processed. ",-1)),e(s)?(l(),$(he,{key:0,type:"error",variant:"outlined",density:"compact",class:"mb-3"},{default:o(()=>[j(" Failed to load operation plan: "+q(e(s)),1)]),_:1})):V("",!0)]),O("div",yt,[n(rt,{phases:e(I)},null,8,["phases"])]),e(M).length>0?(l(),B("div",ht,[(l(!0),B(A,null,se(e(M),U=>(l(),$(he,{key:U,density:"compact",type:"warning",variant:"outlined"},{default:o(()=>[j(q(U),1)]),_:2},1024))),128))])):V("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),n(Ie,null,{default:o(()=>[n(ke),n(re,{onClick:u[3]||(u[3]=U=>a.value=!1)},{default:o(()=>[...u[13]||(u[13]=[j("Cancel",-1)])]),_:1}),n(re,{color:e(E),loading:e(G),disabled:e(p),onClick:H},{default:o(()=>[j(q(e(W)),1)]),_:1},8,["color","loading","disabled"])]),_:1})]),_:1},8,["title","color"])]),_:1},8,["modelValue"]))}}),wt=be(bt,[["__scopeId","data-v-542509f5"]]),It={class:"tree-scrollable"},kt={class:"d-flex flex-column"},St={class:"text-body-2 font-weight-regular"},xt={class:"text-caption text-medium-emphasis"},Ct=z({__name:"ForgetInstanceStateDialog",props:ee({instances:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const a=_(t,"visible"),{stateStore:y,libraryStore:w}=J(),i=S(()=>t.instances.length>1),v=S(()=>t.instances[0]),r=C(!1),I=C(!1),p=C(!1),s=S(()=>t.instances.map(h=>{const g=w.library.components?.[h.type];return{id:h.id,title:g?`${g.meta.title} "${h.name}"`:`${h.type} "${h.name}"`,subtitle:h.id,icon:g?.meta.icon??"iconamoon:component",iconColor:g?.meta.iconColor}})),d=async()=>{r.value=!0;try{await y.forgetInstanceStates(t.instances.map(h=>h.id),I.value,p.value),a.value=!1}finally{r.value=!1}},c=S(()=>{if(t.instances.length===0)return"Forget state";if(!i.value){const h=v.value,g=w.library.components?.[h.type];return g?`Forget state of ${g.meta.title} "${h.name}"`:`Forget state of ${h.type} "${h.name}"`}return`Forget state of ${t.instances.length} instances`});return(h,g)=>(l(),$(we,{modelValue:a.value,"onUpdate:modelValue":g[3]||(g[3]=f=>a.value=f),"max-width":"1200px",class:"forget-dialog"},{default:o(()=>[n(ce,{title:e(c),color:"#2d2d2d",class:"forget-card"},{default:o(()=>[n(fe,{class:"forget-card-content"},{default:o(()=>[n(Pe,{fluid:"",class:"pa-0 fill-height"},{default:o(()=>[n(Fe,{"no-gutters":"",class:"fill-height"},{default:o(()=>[n(ue,{cols:"12",md:"5",class:"pr-md-4 column-container"},{default:o(()=>[g[5]||(g[5]=O("div",{class:"text-overline mb-2"},"Options",-1)),n(ye,{modelValue:e(I),"onUpdate:modelValue":g[0]||(g[0]=f=>Y(I)?I.value=f:null),label:"Delete all secrets associated with this instance",density:"compact","hide-details":""},null,8,["modelValue"]),n(ye,{modelValue:e(p),"onUpdate:modelValue":g[1]||(g[1]=f=>Y(p)?p.value=f:null),label:"Clear all terminal data associated with this instance",density:"compact","hide-details":""},null,8,["modelValue"]),n(he,{density:"compact",type:"warning",variant:"outlined",class:"mt-4 alert-auto"},{default:o(()=>[...g[4]||(g[4]=[O("div",null," No destroy operation will be performed, so all resources will be left in place and unreachable by HighState. ",-1),O("div",null," You should only use this operation when the instance is unreachable/unrecoverable and you want to start from scratch. ",-1)])]),_:1})]),_:1}),n(R,{vertical:"",class:"d-none d-md-flex"}),n(ue,{cols:"12",md:"7",class:"pl-md-4 mt-4 mt-md-0 column-container"},{default:o(()=>[g[6]||(g[6]=O("div",{class:"text-overline mb-2"},"Instances",-1)),O("div",It,[n(Te,{items:e(s),"item-title":"title","item-value":"id",density:"compact","bg-color":"#2d2d2d",class:"forget-instance-tree"},{prepend:o(({item:f})=>[n(e(De),{icon:f.icon,color:f.iconColor,width:"20",class:"mr-2"},null,8,["icon","color"])]),title:o(({item:f})=>[O("div",kt,[O("div",St,q(f.title),1),O("div",xt,q(f.subtitle),1)])]),_:1},8,["items"])])]),_:1})]),_:1})]),_:1})]),_:1}),n(Ie,null,{default:o(()=>[n(ke),n(re,{onClick:g[2]||(g[2]=f=>a.value=!1)},{default:o(()=>[...g[7]||(g[7]=[j("Cancel",-1)])]),_:1}),n(re,{loading:e(r),onClick:d},{default:o(()=>[j(" Forget State"+q(e(i)?` (${t.instances.length})`:""),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]))}}),$t=be(Ct,[["__scopeId","data-v-7881a32c"]]),Dt={class:"session-list-cointainer"},Vt=z({__name:"TerminalListSubmenu",props:ee({stateId:{},terminalIds:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const{instancesStore:a,stateStore:y}=J(),{state:w,execute:i,isLoading:v}=y.getTerminalsState(S(()=>t.terminalIds)),{state:r,execute:I,isLoading:p}=a.getTerminalSessionsState(S(()=>t.stateId)),s=_(t,"visible");te(s,f=>{f&&(I(),i())});const d=f=>f.finishedAt?`Finished at ${new Date(f.finishedAt).toLocaleString()}`:`Started at ${new Date(f.startedAt).toLocaleString()}`,c=f=>{const M=Je();return f.finishedAt?"#9E9E9E":M.current.value.colors.success},h=C(null),g=async f=>{h.value=f;try{await a.openTerminal(f,!0)}finally{h.value=null}};return(f,M)=>(l(),$(e(L),{icon:"mdi-console",title:"Terminals"},{append:o(()=>[n(de,{icon:"mdi-menu-right",size:"x-small"})]),default:o(()=>[n(Se,{modelValue:s.value,"onUpdate:modelValue":M[0]||(M[0]=D=>s.value=D),"open-on-focus":!1,"open-on-hover":"","close-on-content-click":!1,submenu:"",activator:"parent"},{default:o(()=>[n(xe,{density:"compact",variant:"text"},{default:o(()=>[n(ge,{class:"text-overline"},{default:o(()=>[...M[1]||(M[1]=[j("Available Terminals",-1)])]),_:1}),(l(!0),B(A,null,se(e(w),D=>(l(),$(e(L),{key:D.id,disabled:!!e(h),title:D.meta.title,subtitle:D.meta.description,"custom-icon":D.meta.icon,loading:e(h)===D.id,icon:"mdi-console",onClick:P=>g(D.id)},null,8,["disabled","title","subtitle","custom-icon","loading","onClick"]))),128)),n(R,{class:"mt-2 mb-2"}),n(ge,{class:"text-overline"},{default:o(()=>[...M[2]||(M[2]=[j("Sessions",-1)])]),_:1}),O("div",Dt,[(l(!0),B(A,null,se(e(r),D=>(l(),$(e(L),{key:D.id,title:D.meta.title,subtitle:d(D),"custom-icon":D.meta.icon,icon:"mdi-console",color:c(D),onClick:P=>e(a).openTerminalSession(D)},null,8,["title","subtitle","custom-icon","color","onClick"]))),128))]),e(r).length===0?(l(),$(ge,{key:0,class:"text-disabled"},{default:o(()=>[...M[3]||(M[3]=[j(" No sessions found ",-1)])]),_:1})):V("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}))}}),Tt=be(Vt,[["__scopeId","data-v-7c86584d"]]),Ot=z({__name:"PageListSubmenu",props:ee({pageIds:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const{projectStore:a,stateStore:y}=J(),w=pe(),i=C({}),v=C(!1),r=_(t,"visible");te(r,async p=>{if(p){v.value=!0;try{i.value=await y.getPages(t.pageIds)}finally{v.value=!1}}});const I=async p=>{await w.openPage(a.projectId,p)};return(p,s)=>(l(),$(e(L),{icon:"mdi-file-document",title:"Pages"},{append:o(()=>[n(de,{icon:"mdi-menu-right",size:"x-small"})]),default:o(()=>[n(Se,{modelValue:r.value,"onUpdate:modelValue":s[0]||(s[0]=d=>r.value=d),"open-on-focus":!1,"open-on-hover":"","close-on-content-click":!1,submenu:"",activator:"parent"},{default:o(()=>[n(xe,{density:"compact",variant:"text"},{default:o(()=>[(l(!0),B(A,null,se(t.pageIds,d=>(l(),$(e(L),{key:d,title:e(i)[d]?.meta.title??d,subtitle:e(i)[d]?.meta.description,"custom-icon":e(i)[d]?.meta.icon,disabled:!e(i)[d],icon:"mdi-file-document",onClick:c=>I(d)},null,8,["title","subtitle","custom-icon","disabled","onClick"]))),128)),e(v)?(l(),$(Me,{key:0,title:"Loading pages..."})):V("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}))}}),Pt=z({__name:"PanelListSubmenu",props:ee({panelIds:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const{projectStore:a,stateStore:y}=J(),w=pe(),i=C([]),v=C(!1),r=_(t,"visible");return te(r,async I=>{if(I){v.value=!0;try{i.value=await y.getPanels(t.panelIds)}finally{v.value=!1}}}),(I,p)=>(l(),$(e(L),{icon:"mdi-view-dashboard-outline",title:"Panels"},{append:o(()=>[n(de,{icon:"mdi-menu-right",size:"x-small"})]),default:o(()=>[n(Se,{modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=s=>r.value=s),"open-on-focus":!1,"open-on-hover":"","close-on-content-click":!1,submenu:"",activator:"parent"},{default:o(()=>[n(xe,{density:"compact",variant:"text"},{default:o(()=>[(l(!0),B(A,null,se(e(i),s=>(l(),$(e(L),{key:s.id,title:s.meta.title,subtitle:s.meta.description,"custom-icon":s.meta.icon,icon:"mdi-view-dashboard-outline",onClick:d=>e(w).openPanel(e(a).projectId,s.id)},null,8,["title","subtitle","custom-icon","onClick"]))),128)),e(v)?(l(),$(Me,{key:0,title:"Loading panels..."})):V("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}))}}),Ft=z({__name:"InstanceContextMenu",props:{instance:{},component:{},state:{},terminalIds:{},stores:{},operation:{},locked:{type:Boolean},editable:{type:Boolean},ghost:{type:Boolean,default:!1}},setup(t,{expose:a}){const y=S(()=>t.terminalIds??t.state?.terminalIds??[]),{projectStore:w,stateStore:i,operationsStore:v}=t.stores,r=pe(),{selection:I}=Ve(),p=C(!1),s=C(!1),d=C("update"),c=C([]),h=C(!1),g=C([]),f=S(()=>I.selectedInstances.length>1&&I.selectedInstances.some(m=>m.id===t.instance.id)?I.selectedInstances:[t.instance]),M=S(()=>f.value.length>1),D=(k,m,x)=>{if(x==="preview"&&(M.value||k.kind!=="unit"))return!1;const Q=Ge(m?.lastOperationState?.status);switch(x){case"update":return!Q;case"refresh":return ve(m)&&!Q;case"preview":return!Q;case"recreate":case"destroy":return ve(m)&&!Q;default:return!1}},P=k=>t.ghost&&k!=="destroy"?!1:f.value.some(m=>{const x=i.instanceStates.get(m.id);return D(m,x,k)}),W=k=>t.ghost&&k!=="destroy"?!1:f.value.every(m=>{const x=i.instanceStates.get(m.id);return D(m,x,k)}),E=S(()=>f.value.some(k=>{const m=i.instanceStates.get(k.id);return ve(m)})),G=k=>{const m=f.value.length;return m===1?k==="update"?E.value?"Update":"Create":k.charAt(0).toUpperCase()+k.slice(1):k==="update"?`${E.value?"Update":"Create"} selected (${m})`:`${k.charAt(0).toUpperCase()+k.slice(1)} selected (${m})`},H=k=>{if(M.value)return"mdi-format-list-bulleted";switch(k){case"update":return E.value?"mdi-play":"mdi-rocket-launch";case"refresh":return"mdi-reload";case"preview":return"mdi-eye";case"recreate":return"mdi-restart";case"destroy":return"mdi-stop";default:return"mdi-play"}},K=k=>{d.value=k,c.value=f.value,s.value=!0,p.value=!1,I.clearSelection()},b=()=>{g.value=f.value,h.value=!0,p.value=!1,I.clearSelection()},u=me("contextMenu"),U=async k=>{u.value&&await u.value.showContextMenu(k)},ne=async()=>{if(f.value.length!==1||t.instance.kind!=="unit"){p.value=!1;return}const k=await v.launchInstanceOperation("preview",t.instance);p.value=!1,t.state&&await r.openLogsPanel(w.projectId,k.id,t.state.id)};return a({showContextMenu:U}),(k,m)=>(l(),B(A,null,[n(e(Be),{ref_key:"contextMenu",ref:u,visible:e(p),"onUpdate:visible":m[6]||(m[6]=x=>Y(p)?p.value=x:null),title:"Instance",subtitle:t.instance.id,"is-deletable":x=>t.stores.stateStore.isNodeDeletable(x)},{default:o(()=>[P("update")?(l(),$(e(L),{key:0,title:G("update"),icon:H("update"),color:"primary",disabled:t.locked||!W("update"),onClick:m[0]||(m[0]=x=>K("update"))},null,8,["title","icon","disabled"])):V("",!0),P("refresh")?(l(),$(e(L),{key:1,title:G("refresh"),icon:H("refresh"),color:"primary",disabled:t.locked||!W("refresh"),onClick:m[1]||(m[1]=x=>K("refresh"))},null,8,["title","icon","disabled"])):V("",!0),P("preview")?(l(),$(e(L),{key:2,title:G("preview"),icon:H("preview"),color:"secondary",disabled:t.locked||!W("preview"),onClick:ne},null,8,["title","icon","disabled"])):V("",!0),t.state?.lastOperationState?(l(),B(A,{key:3},[n(R),n(e(L),{title:"Open Logs",icon:"mdi-text",color:"primary",onClick:m[2]||(m[2]=x=>e(i).openInstanceLogs(t.instance))})],64)):V("",!0),n(R),n(e(L),{title:"View in Settings",icon:"mdi-cog",color:"primary",onClick:m[3]||(m[3]=()=>{const x=e(i).getInstanceState(t.instance.id);x&&("navigateTo"in k?k.navigateTo:e(ze))({name:"settings.instance-details",params:{projectId:e(w).projectId,stateId:x.id}}),p.value=!1})}),t.state?.id&&e(y).length>0?(l(),B(A,{key:4},[n(R),n(Tt,{"state-id":t.state.id,"terminal-ids":e(y)},null,8,["state-id","terminal-ids"])],64)):V("",!0),t.state?.pageIds?.length?(l(),B(A,{key:5},[n(R),n(Ot,{"page-ids":t.state.pageIds},null,8,["page-ids"])],64)):V("",!0),t.state?.panelIds?.length?(l(),B(A,{key:6},[n(R),n(Pt,{"panel-ids":t.state.panelIds},null,8,["panel-ids"])],64)):V("",!0),e(E)||t.ghost?(l(),B(A,{key:7},[n(R),P("recreate")?(l(),$(e(L),{key:0,title:G("recreate"),icon:H("recreate"),color:"warning",disabled:t.locked||!W("recreate"),onClick:m[4]||(m[4]=x=>K("recreate"))},null,8,["title","icon","disabled"])):V("",!0),P("destroy")?(l(),$(e(L),{key:1,title:G("destroy"),icon:H("destroy"),color:"error",disabled:t.locked||!W("destroy"),onClick:m[5]||(m[5]=x=>K("destroy"))},null,8,["title","icon","disabled"])):V("",!0),n(e(L),{title:e(M)?`Forget State selected (${e(f).length})`:"Forget State",icon:"mdi-delete-forever",color:"error",disabled:t.locked,onClick:b},null,8,["title","disabled"])],64)):V("",!0)]),_:1},8,["visible","subtitle","is-deletable"]),n(wt,{visible:e(s),"onUpdate:visible":m[7]||(m[7]=x=>Y(s)?s.value=x:null),operation:e(d),instances:e(c),component:t.component},null,8,["visible","operation","instances","component"]),n($t,{visible:e(h),"onUpdate:visible":m[8]||(m[8]=x=>Y(h)?h.value=x:null),instances:e(g)},null,8,["visible","instances"])],64))}}),Mt=[{key:"forceUpdateDependencies",label:"Force update dependencies",description:"Force update all dependencies regardless of their current state. Bypasses hash-based change detection for dependency chains.",showForOperations:["update"]},{key:"ignoreChangedDependencies",label:"Ignore changed dependencies",description:"Skip only changed dependencies. Failed or undeployed dependencies of selected instances are still included.",showForOperations:["update"]},{key:"ignoreDependencies",label:"Ignore dependencies",description:"Skip all dependencies of selected instances, including failed and undeployed prerequisites. Operate only on explicitly selected instances.",warning:"This is manual mode. The operation may fail unless every required prerequisite instance is selected explicitly.",showForOperations:["update"]},{key:"forceUpdateChildren",label:"Force update children instances",description:"Force update all children of composite instances regardless of their state. Overrides selective child inclusion logic.",showForOperations:["update"]},{key:"onlyDestroyGhosts",label:"Only destroy ghosts",description:"Skip update phase and run only ghost cleanup destroy phase for affected composite instances.",showForOperations:["update"],requiresCompositeTargets:!0},{key:"firstDestroyGhosts",label:"Destroy ghosts before update",description:"Run ghost cleanup destroy phase before update phase for affected composite instances.",showForOperations:["update"],requiresCompositeTargets:!0},{key:"ignoreGhosts",label:"Ignore ghosts",description:"Skip ghost cleanup destroy phase for update operations.",showForOperations:["update"],requiresCompositeTargets:!0},{key:"destroyDependentInstances",label:"Destroy dependent instances",description:"Include dependent instances when destroying instances. Traverses the dependency graph in reverse to prevent orphaned instances.",defaultValue:!0,showForOperations:["destroy","recreate"]},{key:"invokeDestroyTriggers",label:"Invoke destroy triggers",description:"Execute destroy triggers when destroying instances. Controls trigger execution during the destruction phase.",defaultValue:!0},{key:"deleteUnreachableResources",label:"Delete unreachable resources",description:"Delete Pulumi resources that are no longer referenced in the state. Deletes orphaned resources within individual instances.",warning:"All resources that will not be reachable at the moment of the destroy operation will be removed from the state. Only use when you are sure that these resources do not actually exist!"},{key:"forceDeleteState",label:"Force delete state",description:"Force deletion of instance state even if the destroy operation fails. Bypasses normal destroy procedures as emergency fallback.",warning:"This will delete the stack state and all resources in it even if the destroy operation failed. Use only when the stack is unrecoverable and you want to start from scratch.",showForOperations:["destroy","recreate"]},{key:"allowPartialCompositeInstanceUpdate",label:"Allow partial update of composite instances",description:"Allow update of individual composite children without requiring all siblings. When enabled, only necessary children are included.",showForOperations:["update","recreate"]},{key:"allowPartialCompositeInstanceDestruction",label:"Allow partial destruction of composite instances",description:"Allow partial destruction of composite instances during cascade operations. When enabled, cascade destruction includes only directly dependent children.",showForOperations:["destroy","recreate"]},{key:"refresh",label:"Refresh state before operation",description:"Also refresh the state of instances during the operation. Synchronizes state with actual infrastructure."},{key:"debug",label:"Enable debug logging",description:"Enable debug logging for Pulumi engine and resource providers. Sets TF_LOG=DEBUG for Terraform providers.",warning:"Debug mode may expose sensitive information including credentials in the logs. Use only when absolutely necessary for troubleshooting."}],Ue=(t,a)=>Mt.filter(y=>y.requiresCompositeTargets&&!a?.compositeTargetsOnly?!1:y.showForOperations?y.showForOperations.includes(t):!0),Ut=z({__name:"PageDialog",props:ee({meta:{},content:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:["update:visible"],setup(t){const a=_(t,"visible");return(y,w)=>(l(),$(we,{modelValue:a.value,"onUpdate:modelValue":w[1]||(w[1]=i=>a.value=i),"max-width":"80vh","max-height":"60vh"},{default:o(()=>[n(ce,{title:t.meta.title,color:"#2d2d2d"},{default:o(()=>[n(fe,{style:{"overflow-y":"scroll"}},{default:o(()=>[n(at,{content:t.content},null,8,["content"])]),_:1}),n(Ie,null,{default:o(()=>[n(ke),n(re,{onClick:w[0]||(w[0]=i=>a.value=!1)},{default:o(()=>[...w[2]||(w[2]=[j("Close",-1)])]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]))}}),qt=z({__name:"InstanceNodeWrapper",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},setup(t){const a=J(),y=pe(),{projectStore:w,stateStore:i,instancesStore:v,libraryStore:r,operationsStore:I,validationStore:p}=a,s=S(()=>t.data.instance),d=S(()=>{const F=v.getInstanceComponent(s.value);if(!F)throw new Error(`component "${s.value.type}" for instance "${s.value.id}" not found in library`);return F}),c=S(()=>i.instanceStates.get(s.value.id)),h=S(()=>c.value&&i.instanceLocks.get(c.value.id)),g=S(()=>I.getLastInstanceOperation(s.value.id)),f=S(()=>v.isGhostInstance(s.value.id)),M=C(!1),D=C(!1),P=C(),W=C([]),E=C(!1),G=C(!1),H=C({}),K=async()=>{M.value=!0;try{if(!c.value?.pageIds)return;const F=c.value.pageIds;if(!F.length)return;const T=await i.getPage(F[0]);if(!T)return;P.value=T.meta,W.value=T.content,D.value=!0}finally{M.value=!1}},b=C(!1),u=C(!1),U=S(()=>{const F=c.value?.terminalIds??[];if(d.value.kind!=="composite")return F;const T=new Set,N=new Set,X=[],ae=Z=>{for(const le of Z??[])N.has(le)||(N.add(le),X.push(le))},Ce=Z=>{if(T.has(Z))return;T.add(Z);const le=i.instanceStates.get(Z);ae(le?.terminalIds);for(const Le of v.getInstanceChildren(Z))Ce(Le.id)};ae(F);for(const Z of v.getInstanceChildren(s.value.id))Ce(Z.id);return X}),ne=async()=>{b.value=!0;try{if(U.value.length===0)return;await v.openTerminal(U.value[0])}finally{b.value=!1}},k=async()=>{u.value=!0;try{const F=c.value?.panelIds?.[0];if(!F)return;await y.openPanel(w.projectId,F)}finally{u.value=!1}},m=async()=>{G.value=!0;try{if(!c.value)return;const F=await a.stateStore.getInstanceSecrets(c.value.id);H.value={...F},E.value=!0}finally{G.value=!1}},x=async()=>{const F=c.value?.id??s.value.id;await y.openCompositeInstancePanel(w.projectId,F)},Q=me("contextMenu"),oe=Re(),ie=C(null),Ne=F=>f.value?!1:Ee(oe,r.library,v.inputResolverOutputs,F);return te(()=>({ghost:f.value,initialized:oe.areNodesInitialized.value}),({ghost:F,initialized:T})=>{if(!T)return;const N=oe.findNode(t.id);if(N){if(!F){if(ie.value){const{connectable:X,draggable:ae}=ie.value;oe.updateNode(t.id,()=>({connectable:X,draggable:ae})),ie.value=null}return}ie.value||(ie.value={connectable:!!N.connectable,draggable:N.draggable??!0}),oe.updateNode(t.id,()=>({connectable:!1,draggable:!0}))}},{immediate:!0}),(F,T)=>(l(),$(_e,{"editing-secrets":e(E),"onUpdate:editingSecrets":T[1]||(T[1]=N=>Y(E)?E.value=N:null),"loading-secrets":e(G),"initial-secrets":e(H),"loading-page":e(M),instance:t.data.instance,component:e(d),entities:e(r).library.entities,"project-id":e(w).projectId,"input-resolver-outputs":e(v).inputResolverOutputs,"input-resolver-dependent-map":e(v).inputResolverDependentMap,"is-valid-connection":Ne,"instance-lock":e(h),state:e(c),"terminal-ids":e(U),"loading-panel":e(u),editable:t.data.editable&&!e(f),ghost:e(f),stores:("markRaw"in F?F.markRaw:e(Ke))(e(a)),"workspace-store":e(y),"all-instances":e(v).instances,"onSave:args":T[2]||(T[2]=(N,X,ae)=>e(v).updateInstance(N,X,ae)),"onSave:secrets":T[3]||(T[3]=(N,X)=>e(i).updateInstanceSecrets(N,X)),"onOpen:secrets":m,"onOpen:terminal":ne,"onOpen:panel":k,"onOperation:launch":T[4]||(T[4]=N=>e(I).launchQuickInstanceOperation(N,t.data.instance)),"onOperation:cancel":T[5]||(T[5]=N=>e(I).cancelInstanceOperation(e(c).lastOperationState.operationId,t.data.instance.id)),onContextmenu:T[6]||(T[6]=N=>e(Q)?.showContextMenu(N)),"onOpen:composite":x,"onOpen:page":K},{status:o(()=>[n(e(et),{state:e(c),operation:e(g),"expected-input-hash":e(i).inputHashOutputs.get(e(s).id)?.inputHash,"validation-output":e(p).validationOutputs.get(e(s).id)},null,8,["state","operation","expected-input-hash","validation-output"])]),default:o(()=>[n(e(Ft),{ref_key:"contextMenu",ref:Q,stores:e(a),instance:e(s),component:e(d),state:e(c),"terminal-ids":e(U),editable:t.data.editable&&!e(f),locked:!!e(h),ghost:e(f)},null,8,["stores","instance","component","state","terminal-ids","editable","locked","ghost"]),e(P)?(l(),$(e(Ut),{key:0,visible:e(D),"onUpdate:visible":T[0]||(T[0]=N=>Y(D)?D.value=N:null),meta:e(P),content:e(W)},null,8,["visible","meta","content"])):V("",!0)]),_:1},8,["editing-secrets","loading-secrets","initial-secrets","loading-page","instance","component","entities","project-id","input-resolver-outputs","input-resolver-dependent-map","instance-lock","state","terminal-ids","loading-panel","editable","ghost","stores","workspace-store","all-instances"]))}}),Be=z({__name:"NodeContextMenu",props:ee({title:{},subtitle:{},isDeletable:{type:Function}},{visible:{type:Boolean,default:!1},visibleModifiers:{}}),emits:["update:visible"],setup(t,{expose:a}){const{selection:y,vueFlowStore:w,deleteNodes:i}=Ve(),v=_(t,"visible"),r=qe(),I=me("contextMenu"),p=async h=>{I.value&&await I.value.showContextMenu(h)},{off:s}=w.onViewportChange(()=>{v.value=!1});Qe(()=>{s(),v.value=!1}),a({showContextMenu:p});const d=S(()=>t.isDeletable(r.node)?y.selectedNodeIds.has(r.id)?Array.from(y.selectedNodes).filter(t.isDeletable):[r.node]:[]),c=S(()=>d.value.length===1?"Delete":`Delete selected (${d.value.length})`);return(h,g)=>(l(),$(tt,{ref_key:"contextMenu",ref:I,visible:v.value,"onUpdate:visible":g[1]||(g[1]=f=>v.value=f),title:t.title,subtitle:t.subtitle},{default:o(()=>[h.$slots.default?(l(),B(A,{key:0},[n(R),Xe(h.$slots,"default")],64)):V("",!0),e(d).length>0?(l(),B(A,{key:1},[n(R),n(L,{title:e(c),icon:"mdi-delete",color:"error",onClick:g[0]||(g[0]=f=>e(i)(e(d)))},null,8,["title"])],64)):V("",!0)]),_:3},8,["visible","title","subtitle"]))}});export{Rt as _,Et as a,qt as b,Ft as c};
@@ -1 +1 @@
1
- import{D as O,aP as G,A as Q,aR as T,aQ as U,U as q,V as J,W as K,aS as Y,E as X,_ as Z,m as tt}from"#entry";import{c as et,_ as nt,a as ot,b as st}from"./CvFUo4Re.js";import{E as h,a_ as at,D as t,V as m,Y as y,_ as v,W as S,a1 as x,j as p,u as it,aP as w,H as rt,av as F,aw as M,ag as R,J as E,a2 as k,a0 as ct,b1 as ut}from"./-NXdyIEV.js";import{I as dt,a as pt,G as lt}from"./Btw6kqCM.js";import{I as mt}from"./Dtu55PAv.js";import{_ as ft}from"./C50Jf3QI.js";import{P as vt}from"./DzP42O4c.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./BnH0SUiF.js";import"./BqAcL3eq.js";import"./BzfFclT9.js";import"./BLfHOckY.js";import"./D4_5UqG-.js";import"./4vGmo7Ws.js";import"./BbYXjaP8.js";import"./BxAss8Tj.js";import"./zPZwXEME.js";import"./DyDuNLRY.js";const It=h({__name:"CompositeInstanceInputNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{},instance:{}},setup(e){const o=O(),{instancesStore:n,libraryStore:r,stateStore:u,validationStore:i,operationsStore:a}=o,f=p(()=>u.instanceLocks.get(e.instance.id)),l=p(()=>n.getInstanceComponent(e.instance)),c=p(()=>u.getInstanceState(e.instance.id)),g=at("contextMenu");return(V,d)=>t(l)?(m(),y(t(dt),{key:0,instance:e.instance,component:t(l),entities:t(r).library.entities,state:t(c),editable:t(n).instances.has(e.instance.id),"input-resolver-outputs":t(n).inputResolverOutputs,"input-resolver-dependent-map":t(n).inputResolverDependentMap,"io-type":"inputs","io-mirror":!0,"hide-show-composite":!0,"onSave:args":d[0]||(d[0]=(I,j,N)=>t(n).updateInstance(I,j,N)),"onOperation:launch":d[1]||(d[1]=I=>t(a).launchQuickInstanceOperation(I,e.data.instance)),"onOperation:cancel":d[2]||(d[2]=I=>t(a).cancelInstanceOperation(t(c).lastOperationState.operationId,e.data.instance.id)),onContextmenu:d[3]||(d[3]=I=>t(g)?.showContextMenu(I))},{status:v(()=>[S(t(mt),{state:t(c),"expected-input-hash":t(u).inputHashOutputs.get(e.instance.id)?.inputHash,"validation-output":t(i).validationOutputs.get(e.instance.id)},null,8,["state","expected-input-hash","validation-output"])]),default:v(()=>[S(t(et),{ref_key:"contextMenu",ref:g,stores:t(o),instance:e.instance,component:t(l),state:t(c),editable:!1,locked:!!t(f)},null,8,["stores","instance","component","state","locked"])]),_:1},8,["instance","component","entities","state","editable","input-resolver-outputs","input-resolver-dependent-map"])):x("",!0)}}),yt=h({__name:"CompositeInstanceOutputNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{},instance:{}},setup(e){const{projectStore:o,instancesStore:n,libraryStore:r,stateStore:u}=O(),i=p(()=>n.getInstanceComponent(e.instance)),a=p(()=>u.getInstanceState(e.instance.id));return(f,l)=>t(i)?(m(),y(t(ft),{key:0,component:t(i),subtitle:"Outputs",style:{overflow:"visible"}},{default:v(()=>[S(t(pt),{instance:e.instance,component:t(i),entities:t(r).library.entities,"project-id":t(o).projectId,"state-id":t(a)?.id,type:"outputs",mirror:!0},null,8,["instance","component","entities","project-id","state-id"])]),_:1},8,["component"])):x("",!0)}}),_=G({name:"instance",getStoreId:(e,o,n)=>`projects/${e}/composites/${o}/${n}`,create:({storeId:e,id:[o,n,r],logger:u})=>Q(e,()=>{const{vueFlowStore:i,nodeFactory:a,onNodesMoved:f,edgeEndpointOffsets:l}=T("instance",o,n,r),{$client:c}=it(),{instancesStore:g,stateStore:V}=U(o),d=p(()=>V.stateIdToStateMap.get(n)),I=p(()=>{const s=d.value?.instanceId;if(s)return s;if(g.instances.has(n))return n}),j=p(()=>{const s=I.value;return s?g.instances.get(s):void 0}),N=async()=>{u.info({projectId:o},"initializing composite instance store");const s=d.value?await c.workspace.getCompositeViewport.query({projectId:o,stateId:n}):null;s&&(i.defaultViewport.value=s),u.info({projectId:o,stateId:n},"composite instance store initialized")},D=()=>{const s=j.value;if(!s)throw new Error(`Virtual instance not found for state: ${n}`);const L=a.createNodeFromInstance(s,{type:"inputs"}),A=g.getInstanceChildren(s.id);if(a.createNodesForModels(A,[],{readonly:!0}),s.outputs&&Object.keys(s.outputs).length>0){a.createNodeFromInstance(s,{id:"outputs",type:"outputs",readonly:!0}),a.instanceIdToNodeIdMap.set(s.id,L.id);for(const[b,W]of Object.entries(s.outputs)){const z=s.resolvedOutputs?.[b]?.length??0,B=z===0;for(const P of W){const C=g.instances.get(P.instanceId);if(!C)continue;const $=C.parentId===s.id;u.debug({currentInstanceId:s.id,sourceInstanceId:C.id,outputKey:b,sourceOutput:P.output,sourceParentId:C.parentId,projection:$,resolvedOutputCount:z,projectionUnresolved:B},"creating edge to composite output node"),a.createEdgeForInstanceOutput(C,b,P,{projection:$,projectionUnresolved:B})}}}q(i).then(()=>J(i)).then(()=>i.fitView()).then(()=>i.updateNodeInternals(i.getNodes.value.map(b=>b.id))).then(()=>K(i,f,l))},H=Y(async s=>{d.value&&await c.workspace.setCompositeViewport.mutate({projectId:o,stateId:n,viewport:s})},1e3);return i.onViewportChange(H),{initialize:N,placeNodes:D,stateId:n,instanceState:d,instance:j,version:r}})}),gt=h({__name:"CompositeInstanceCanvas",async setup(e){let o,n;const{projectStore:r,instancesStore:u,libraryStore:i}=O(),a=_();return r.initializing?([o,n]=w(()=>X(()=>r.initialized).toBe(!0)),await o,n(),r.addLibraryRoot()):([o,n]=w(()=>r.initialize1()),await o,n(),[o,n]=w(()=>r.initialize2()),await o,n()),[o,n]=w(()=>a.initialize()),await o,n(),rt(a.placeNodes),(f,l)=>(m(),y(t(lt),{canvasId:["instance",t(r).projectId,t(a).stateId,t(a).version],components:t(i).library.components,entities:t(i).library.entities,"input-resolver-outputs":t(u).inputResolverOutputs,editable:""},{"node-instance":v(c=>[S(t(st),F(M(c)),null,16)]),"node-inputs":v(c=>[t(a).instance?(m(),y(It,R({key:0},c,{instance:t(a).instance}),null,16,["instance"])):x("",!0)]),"node-outputs":v(c=>[t(a).instance?(m(),y(yt,R({key:0},c,{instance:t(a).instance,type:"outputs"}),null,16,["instance"])):x("",!0)]),"node-hub":v(c=>[S(t(ot),F(M(c)),null,16)]),"panel-bottom-left":v(()=>[S(t(nt))]),_:1},8,["canvasId","components","entities","input-resolver-outputs"]))}}),St=Z(gt,[["__scopeId","data-v-2e3534bb"]]),bt=h({__name:"CompositeInstanceWrapper",props:{projectId:{},stateId:{},version:{}},setup(e){return T.ensureCreated("instance",e.projectId,e.stateId,e.version),_.ensureCreated(e.projectId,e.stateId,e.version),(o,n)=>(m(),y(St,{"project-id":e.projectId,"state-id":e.stateId,version:e.version},null,8,["project-id","state-id","version"]))}}),Ct={key:1,class:"d-flex justify-center align-center h-100"},ht={class:"text-center"},jt={key:2,class:"d-flex justify-center align-center h-100"},At=h({__name:"index",props:{params:{}},setup(e){const{instancesStore:o,stateStore:n}=tt(e.params.projectId),r=p(()=>n.stateIdToStateMap.get(e.params.stateId)),u=p(()=>{const f=r.value;return f?o.instances.get(f.instanceId):o.instances.get(e.params.stateId)}),i=p(()=>o.initializationPhase==="ready"&&n.initializationPhase==="ready"),a=p(()=>!!u.value);return(f,l)=>(m(),y(t(vt),{"project-id":e.params.projectId,"can-unlock":""},{default:v(()=>[t(i)&&t(a)?(m(),y(t(bt),{key:t(o).evaluationVersion,"project-id":e.params.projectId,"state-id":e.params.stateId,version:t(o).evaluationVersion},null,8,["project-id","state-id","version"])):t(i)?(m(),E("div",Ct,[k("div",ht,[l[0]||(l[0]=k("h3",null,"Instance not found",-1)),k("p",null,"No composite instance found for identifier: "+ct(e.params.stateId),1)])])):(m(),E("div",jt,[S(ut,{indeterminate:"",color:"dark",size:"32"})]))]),_:1},8,["project-id"]))}});export{At as default};
1
+ import{D as O,aP as G,A as Q,aR as T,aQ as U,U as q,V as J,W as K,aS as Y,E as X,_ as Z,m as tt}from"#entry";import{c as et,_ as nt,a as ot,b as st}from"./DTT1Xzbm.js";import{E as h,a_ as at,D as t,V as m,Y as y,_ as v,W as S,a1 as x,j as p,u as it,aP as w,H as rt,av as F,aw as M,ag as R,J as E,a2 as k,a0 as ct,b1 as ut}from"./-NXdyIEV.js";import{I as dt,a as pt,G as lt}from"./Cjc0AvC7.js";import{I as mt}from"./Dtu55PAv.js";import{_ as ft}from"./C50Jf3QI.js";import{P as vt}from"./DzP42O4c.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./BnH0SUiF.js";import"./BqAcL3eq.js";import"./BzfFclT9.js";import"./BLfHOckY.js";import"./D4_5UqG-.js";import"./4vGmo7Ws.js";import"./BbYXjaP8.js";import"./BxAss8Tj.js";import"./zPZwXEME.js";import"./DyDuNLRY.js";const It=h({__name:"CompositeInstanceInputNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{},instance:{}},setup(e){const o=O(),{instancesStore:n,libraryStore:r,stateStore:u,validationStore:i,operationsStore:a}=o,f=p(()=>u.instanceLocks.get(e.instance.id)),l=p(()=>n.getInstanceComponent(e.instance)),c=p(()=>u.getInstanceState(e.instance.id)),g=at("contextMenu");return(V,d)=>t(l)?(m(),y(t(dt),{key:0,instance:e.instance,component:t(l),entities:t(r).library.entities,state:t(c),editable:t(n).instances.has(e.instance.id),"input-resolver-outputs":t(n).inputResolverOutputs,"input-resolver-dependent-map":t(n).inputResolverDependentMap,"io-type":"inputs","io-mirror":!0,"hide-show-composite":!0,"onSave:args":d[0]||(d[0]=(I,j,N)=>t(n).updateInstance(I,j,N)),"onOperation:launch":d[1]||(d[1]=I=>t(a).launchQuickInstanceOperation(I,e.data.instance)),"onOperation:cancel":d[2]||(d[2]=I=>t(a).cancelInstanceOperation(t(c).lastOperationState.operationId,e.data.instance.id)),onContextmenu:d[3]||(d[3]=I=>t(g)?.showContextMenu(I))},{status:v(()=>[S(t(mt),{state:t(c),"expected-input-hash":t(u).inputHashOutputs.get(e.instance.id)?.inputHash,"validation-output":t(i).validationOutputs.get(e.instance.id)},null,8,["state","expected-input-hash","validation-output"])]),default:v(()=>[S(t(et),{ref_key:"contextMenu",ref:g,stores:t(o),instance:e.instance,component:t(l),state:t(c),editable:!1,locked:!!t(f)},null,8,["stores","instance","component","state","locked"])]),_:1},8,["instance","component","entities","state","editable","input-resolver-outputs","input-resolver-dependent-map"])):x("",!0)}}),yt=h({__name:"CompositeInstanceOutputNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{},instance:{}},setup(e){const{projectStore:o,instancesStore:n,libraryStore:r,stateStore:u}=O(),i=p(()=>n.getInstanceComponent(e.instance)),a=p(()=>u.getInstanceState(e.instance.id));return(f,l)=>t(i)?(m(),y(t(ft),{key:0,component:t(i),subtitle:"Outputs",style:{overflow:"visible"}},{default:v(()=>[S(t(pt),{instance:e.instance,component:t(i),entities:t(r).library.entities,"project-id":t(o).projectId,"state-id":t(a)?.id,type:"outputs",mirror:!0},null,8,["instance","component","entities","project-id","state-id"])]),_:1},8,["component"])):x("",!0)}}),_=G({name:"instance",getStoreId:(e,o,n)=>`projects/${e}/composites/${o}/${n}`,create:({storeId:e,id:[o,n,r],logger:u})=>Q(e,()=>{const{vueFlowStore:i,nodeFactory:a,onNodesMoved:f,edgeEndpointOffsets:l}=T("instance",o,n,r),{$client:c}=it(),{instancesStore:g,stateStore:V}=U(o),d=p(()=>V.stateIdToStateMap.get(n)),I=p(()=>{const s=d.value?.instanceId;if(s)return s;if(g.instances.has(n))return n}),j=p(()=>{const s=I.value;return s?g.instances.get(s):void 0}),N=async()=>{u.info({projectId:o},"initializing composite instance store");const s=d.value?await c.workspace.getCompositeViewport.query({projectId:o,stateId:n}):null;s&&(i.defaultViewport.value=s),u.info({projectId:o,stateId:n},"composite instance store initialized")},D=()=>{const s=j.value;if(!s)throw new Error(`Virtual instance not found for state: ${n}`);const L=a.createNodeFromInstance(s,{type:"inputs"}),A=g.getInstanceChildren(s.id);if(a.createNodesForModels(A,[],{readonly:!0}),s.outputs&&Object.keys(s.outputs).length>0){a.createNodeFromInstance(s,{id:"outputs",type:"outputs",readonly:!0}),a.instanceIdToNodeIdMap.set(s.id,L.id);for(const[b,W]of Object.entries(s.outputs)){const z=s.resolvedOutputs?.[b]?.length??0,B=z===0;for(const P of W){const C=g.instances.get(P.instanceId);if(!C)continue;const $=C.parentId===s.id;u.debug({currentInstanceId:s.id,sourceInstanceId:C.id,outputKey:b,sourceOutput:P.output,sourceParentId:C.parentId,projection:$,resolvedOutputCount:z,projectionUnresolved:B},"creating edge to composite output node"),a.createEdgeForInstanceOutput(C,b,P,{projection:$,projectionUnresolved:B})}}}q(i).then(()=>J(i)).then(()=>i.fitView()).then(()=>i.updateNodeInternals(i.getNodes.value.map(b=>b.id))).then(()=>K(i,f,l))},H=Y(async s=>{d.value&&await c.workspace.setCompositeViewport.mutate({projectId:o,stateId:n,viewport:s})},1e3);return i.onViewportChange(H),{initialize:N,placeNodes:D,stateId:n,instanceState:d,instance:j,version:r}})}),gt=h({__name:"CompositeInstanceCanvas",async setup(e){let o,n;const{projectStore:r,instancesStore:u,libraryStore:i}=O(),a=_();return r.initializing?([o,n]=w(()=>X(()=>r.initialized).toBe(!0)),await o,n(),r.addLibraryRoot()):([o,n]=w(()=>r.initialize1()),await o,n(),[o,n]=w(()=>r.initialize2()),await o,n()),[o,n]=w(()=>a.initialize()),await o,n(),rt(a.placeNodes),(f,l)=>(m(),y(t(lt),{canvasId:["instance",t(r).projectId,t(a).stateId,t(a).version],components:t(i).library.components,entities:t(i).library.entities,"input-resolver-outputs":t(u).inputResolverOutputs,editable:""},{"node-instance":v(c=>[S(t(st),F(M(c)),null,16)]),"node-inputs":v(c=>[t(a).instance?(m(),y(It,R({key:0},c,{instance:t(a).instance}),null,16,["instance"])):x("",!0)]),"node-outputs":v(c=>[t(a).instance?(m(),y(yt,R({key:0},c,{instance:t(a).instance,type:"outputs"}),null,16,["instance"])):x("",!0)]),"node-hub":v(c=>[S(t(ot),F(M(c)),null,16)]),"panel-bottom-left":v(()=>[S(t(nt))]),_:1},8,["canvasId","components","entities","input-resolver-outputs"]))}}),St=Z(gt,[["__scopeId","data-v-2e3534bb"]]),bt=h({__name:"CompositeInstanceWrapper",props:{projectId:{},stateId:{},version:{}},setup(e){return T.ensureCreated("instance",e.projectId,e.stateId,e.version),_.ensureCreated(e.projectId,e.stateId,e.version),(o,n)=>(m(),y(St,{"project-id":e.projectId,"state-id":e.stateId,version:e.version},null,8,["project-id","state-id","version"]))}}),Ct={key:1,class:"d-flex justify-center align-center h-100"},ht={class:"text-center"},jt={key:2,class:"d-flex justify-center align-center h-100"},At=h({__name:"index",props:{params:{}},setup(e){const{instancesStore:o,stateStore:n}=tt(e.params.projectId),r=p(()=>n.stateIdToStateMap.get(e.params.stateId)),u=p(()=>{const f=r.value;return f?o.instances.get(f.instanceId):o.instances.get(e.params.stateId)}),i=p(()=>o.initializationPhase==="ready"&&n.initializationPhase==="ready"),a=p(()=>!!u.value);return(f,l)=>(m(),y(t(vt),{"project-id":e.params.projectId,"can-unlock":""},{default:v(()=>[t(i)&&t(a)?(m(),y(t(bt),{key:t(o).evaluationVersion,"project-id":e.params.projectId,"state-id":e.params.stateId,version:t(o).evaluationVersion},null,8,["project-id","state-id","version"])):t(i)?(m(),E("div",Ct,[k("div",ht,[l[0]||(l[0]=k("h3",null,"Instance not found",-1)),k("p",null,"No composite instance found for identifier: "+ct(e.params.stateId),1)])])):(m(),E("div",jt,[S(ut,{indeterminate:"",color:"dark",size:"32"})]))]),_:1},8,["project-id"]))}});export{At as default};
@@ -1 +1 @@
1
- {"id":"1548c3a0-586d-4ea6-8f99-85c2e41a6384","timestamp":1789319638250}
1
+ {"id":"c311f875-5d87-4e02-8fdf-60b546aeb931","timestamp":1789681882374}
@@ -0,0 +1 @@
1
+ {"id":"c311f875-5d87-4e02-8fdf-60b546aeb931","timestamp":1789681882374,"prerendered":[]}