@highstate/designer 0.30.3 → 0.31.1

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.
Files changed (117) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BWDN-9Hx.js → 01ZR8FKx.js} +1 -1
  3. package/.output/public/_nuxt/{Cofyfw8g.js → 0MzBjiBY.js} +1 -1
  4. package/.output/public/_nuxt/{VQuDbHHR.js → 4vGmo7Ws.js} +1 -1
  5. package/.output/public/_nuxt/8VAFkPEE.js +269 -0
  6. package/.output/public/_nuxt/{Lo988ya0.js → AKCe9LNp.js} +1 -1
  7. package/.output/public/_nuxt/{DhjMLkwg.js → B9ZfIHZw.js} +1 -1
  8. package/.output/public/_nuxt/{CJVpO6nQ.js → BCJUQ-QU.js} +1 -1
  9. package/.output/public/_nuxt/{C7lm33JZ.js → BDLjTA3_.js} +1 -1
  10. package/.output/public/_nuxt/{DysjCpM9.js → BHpMD-mY.js} +1 -1
  11. package/.output/public/_nuxt/BKWHojhU.js +1 -0
  12. package/.output/public/_nuxt/{DsxZEVxb.js → BLfHOckY.js} +7 -7
  13. package/.output/public/_nuxt/{2jnOiqNC.js → BNEHDwNV.js} +1 -1
  14. package/.output/public/_nuxt/BOtPOJrV.js +1 -0
  15. package/.output/public/_nuxt/{k0GHL-8U.js → BQvzkDFt.js} +1 -1
  16. package/.output/public/_nuxt/{DmGf47KM.js → BVxJafKI.js} +1 -1
  17. package/.output/public/_nuxt/BeV7FtCY.js +1 -0
  18. package/.output/public/_nuxt/BhtYnCk1.js +1 -0
  19. package/.output/public/_nuxt/{5-u3YHQd.js → BipPPoWE.js} +1 -1
  20. package/.output/public/_nuxt/{CW9RwN2l.js → Bkhf7GZT.js} +1 -1
  21. package/.output/public/_nuxt/{D3MpZ_Sw.js → BnH0SUiF.js} +1 -1
  22. package/.output/public/_nuxt/{BwBpcI2q.js → BrgLtl1N.js} +1 -1
  23. package/.output/public/_nuxt/BscvYf-N.js +2 -0
  24. package/.output/public/_nuxt/BsfH1i0r.js +1 -0
  25. package/.output/public/_nuxt/{DcDfdgW1.js → BuVA3kO7.js} +1 -1
  26. package/.output/public/_nuxt/BulzREL4.js +1 -0
  27. package/.output/public/_nuxt/{Bc-UhGEo.js → BvF6CC6t.js} +1 -1
  28. package/.output/public/_nuxt/{aPAh1oAW.js → BvcB3_Ox.js} +1 -1
  29. package/.output/public/_nuxt/{SCrI01L1.js → Bw8W7XlP.js} +1 -1
  30. package/.output/public/_nuxt/{D6EnKPw6.js → ByVvJoFt.js} +1 -1
  31. package/.output/public/_nuxt/{DZH0GUvg.js → BzHexD0k.js} +1 -1
  32. package/.output/public/_nuxt/{A3pA-dEU.js → BzfFclT9.js} +1 -1
  33. package/.output/public/_nuxt/{D-LsJ2ZE.js → C3Nw-pxO.js} +1 -1
  34. package/.output/public/_nuxt/C3dDboVU.js +1 -0
  35. package/.output/public/_nuxt/{CbVegJaT.js → C50Jf3QI.js} +1 -1
  36. package/.output/public/_nuxt/{DXfLpys7.js → C9U9g4dI.js} +1 -1
  37. package/.output/public/_nuxt/{CNrxBMAX.js → C9khB4Xk.js} +1 -1
  38. package/.output/public/_nuxt/{Cq4nuP-7.js → CAqURRGH.js} +1 -1
  39. package/.output/public/_nuxt/{CZyQa1Zc.js → CBtqoa0c.js} +1 -1
  40. package/.output/public/_nuxt/{Dr_haoD_.js → CFMSQg2L.js} +1 -1
  41. package/.output/public/_nuxt/{DKbLex6i.js → CHVFVVjA.js} +1 -1
  42. package/.output/public/_nuxt/{hvsd0Qgg.js → CJnh15-L.js} +1 -1
  43. package/.output/public/_nuxt/{DsRcdFOB.js → CQ57LN-w.js} +1 -1
  44. package/.output/public/_nuxt/CTCvE27h.js +1 -0
  45. package/.output/public/_nuxt/{CAGxZJ_q.js → CVCvRHBP.js} +1 -1
  46. package/.output/public/_nuxt/{B3xH1Y0W.js → Cc4wgJ1h.js} +1 -1
  47. package/.output/public/_nuxt/{DwfxqiyB.js → CcDGEY8Q.js} +1 -1
  48. package/.output/public/_nuxt/{DgMGRJzb.js → CcgfvGG3.js} +1 -1
  49. package/.output/public/_nuxt/Cjc0AvC7.js +14 -0
  50. package/.output/public/_nuxt/{BxFuzIIZ.js → Cn0h663F.js} +1 -1
  51. package/.output/public/_nuxt/{DmVwOSq5.js → CqCN84b-.js} +1 -1
  52. package/.output/public/_nuxt/{DyhJj7Ha.js → CrAApG3c.js} +1 -1
  53. package/.output/public/_nuxt/{Doxnvpyq.js → Cy6PxgoV.js} +1 -1
  54. package/.output/public/_nuxt/{EKqCuazP.js → D2UhOMoe.js} +1 -1
  55. package/.output/public/_nuxt/{Dpa6A3ZD.js → D3W9Jfu7.js} +1 -1
  56. package/.output/public/_nuxt/{zQpq8Nlt.js → D4O2OVDh.js} +1 -1
  57. package/.output/public/_nuxt/{DGnuSaKc.js → D6CGQiZp.js} +1 -1
  58. package/.output/public/_nuxt/{JoXnlJ5o.js → D84zi-ec.js} +1 -1
  59. package/.output/public/_nuxt/D8M0limG.js +1 -0
  60. package/.output/public/_nuxt/{CPTDoFCr.js → DDJReq2V.js} +1 -1
  61. package/.output/public/_nuxt/{DZXawbDK.js → DEI-Qge8.js} +1 -1
  62. package/.output/public/_nuxt/{CriYd4Xu.js → DKWb1hup.js} +1 -1
  63. package/.output/public/_nuxt/{CC9Mjlxx.js → DQ-NJtj8.js} +1 -1
  64. package/.output/public/_nuxt/{D7ydzmTA.js → DRhnxQ4y.js} +1 -1
  65. package/.output/public/_nuxt/{_c6GHTN4.js → DTSgpdAF.js} +1 -1
  66. package/.output/public/_nuxt/{LC_ejPos.js → DTT1Xzbm.js} +1 -1
  67. package/.output/public/_nuxt/{DEdaEI2J.js → DXmPWjsX.js} +1 -1
  68. package/.output/public/_nuxt/{O5iT7Vr2.js → DYnMeE8e.js} +1 -1
  69. package/.output/public/_nuxt/{BKZ346WY.js → DfDsDJD2.js} +1 -1
  70. package/.output/public/_nuxt/{u9IB9fko.js → DjTKfsHU.js} +1 -1
  71. package/.output/public/_nuxt/{C7Ij7g1p.js → DlfNK0cA.js} +1 -1
  72. package/.output/public/_nuxt/{DH_B79BE.js → DpUEzsMu.js} +1 -1
  73. package/.output/public/_nuxt/{Eovi5v4f.js → DrfPDWCl.js} +2 -2
  74. package/.output/public/_nuxt/{Bsca_muP.js → Dtu55PAv.js} +2 -2
  75. package/.output/public/_nuxt/DvLL-V6a.js +1 -0
  76. package/.output/public/_nuxt/{B2Q2xBzH.js → Dz1kPrb2.js} +1 -1
  77. package/.output/public/_nuxt/DzP42O4c.js +1 -0
  78. package/.output/public/_nuxt/DzlC1Z8c.js +1 -0
  79. package/.output/public/_nuxt/{CSWVWBW7.js → GdhEIX5n.js} +1 -1
  80. package/.output/public/_nuxt/{BYaYzU2p.js → H3fZkrEW.js} +1 -1
  81. package/.output/public/_nuxt/SVmeI-Hd.js +1 -0
  82. package/.output/public/_nuxt/{BzOk-KTc.js → UY6IumFv.js} +1 -1
  83. package/.output/public/_nuxt/{CVfWNyhe.js → Ztua2i2Y.js} +1 -1
  84. package/.output/public/_nuxt/builds/latest.json +1 -1
  85. package/.output/public/_nuxt/builds/meta/2ff2f563-aaec-4b33-8dfa-863323cf8d21.json +1 -0
  86. package/.output/public/_nuxt/{DkZkynzL.js → iHlZS5Nr.js} +1 -1
  87. package/.output/public/_nuxt/{BSawHEJh.js → iX982afC.js} +1 -1
  88. package/.output/public/_nuxt/{D1nRrnR_.js → kwdF6vE0.js} +1 -1
  89. package/.output/public/_nuxt/{DS4ev0Th.js → mUQQEHsz.js} +1 -1
  90. package/.output/public/_nuxt/{Deh8i6lm.js → oLJXBT2A.js} +1 -1
  91. package/.output/public/_nuxt/{B8N1sP4y.js → rErpME9V.js} +1 -1
  92. package/.output/public/_nuxt/ue1Ve9YE.js +1 -0
  93. package/.output/public/_nuxt/{y7qbSnME.js → xdzoAViU.js} +1 -1
  94. package/.output/public/_nuxt/{BExqDRwH.js → zcI5daFe.js} +1 -1
  95. package/.output/public/_nuxt/{DqaT_RDK.js → zzNAWI73.js} +1 -1
  96. package/.output/server/index.mjs +1189 -1190
  97. package/.output/server/package.json +1 -1
  98. package/package.json +5 -5
  99. package/.output/public/_nuxt/352AptFn.js +0 -1
  100. package/.output/public/_nuxt/3RbcgHkU.js +0 -14
  101. package/.output/public/_nuxt/BuIQ2wGk.js +0 -1
  102. package/.output/public/_nuxt/C-mYaH7u.js +0 -1
  103. package/.output/public/_nuxt/C2i4Pe8_.js +0 -1
  104. package/.output/public/_nuxt/C4hwWhkw.js +0 -269
  105. package/.output/public/_nuxt/CFc9rdAS.js +0 -2
  106. package/.output/public/_nuxt/CYKlIh8L.js +0 -1
  107. package/.output/public/_nuxt/Ct3ssWsd.js +0 -1
  108. package/.output/public/_nuxt/DJwAKlaO.js +0 -1
  109. package/.output/public/_nuxt/DOo85agn.js +0 -1
  110. package/.output/public/_nuxt/DT8lV676.js +0 -1
  111. package/.output/public/_nuxt/DXVNaud5.js +0 -1
  112. package/.output/public/_nuxt/Desw6Usx.js +0 -1
  113. package/.output/public/_nuxt/builds/meta/74426c6d-f911-4b17-980a-4fe479415ac8.json +0 -1
  114. package/.output/public/_nuxt/builds/meta/8b3b1d78-540f-4b23-a5a0-4fbad1ad9477.json +0 -1
  115. package/.output/public/_nuxt/dYgxrjeZ.js +0 -1
  116. package/.output/public/_nuxt/mxKUVBjZ.js +0 -1
  117. package/.output/public/_nuxt/p1qmzON1.js +0 -1
@@ -1,2 +0,0 @@
1
- import{C as I,s as f,l as j}from"#entry";import{E as d,u as g,M as C,V as l,Y as p,D as r,_ as w,W as x}from"./-NXdyIEV.js";import{G as L}from"./zPZwXEME.js";import{P}from"./DJwAKlaO.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./DyDuNLRY.js";const b=d({__name:"InstanceLogsPanel",props:{operationId:{},stateId:{}},setup(t){const{projectStore:c}=I(),{$client:n}=g();let s=null;const i=e=>{const a=e.split(`
2
- `);for(const o of a)s.writeln(o)},{unsubscribe:m}=n.logs.watchInstanceLogs.subscribe({operationId:t.operationId,stateId:t.stateId},{onData:e=>{s&&i(e.content)}});C(m);const u=async e=>{s=e;const a=await f(o=>n.logs.getInstanceLogs.query({projectId:c.projectId,stateId:t.stateId,operationId:t.operationId,...o}));for(const o of a)i(o.content)};return(e,a)=>(l(),p(r(L),{onLoad:u}))}}),E=d({__name:"[stateId]",props:{params:{}},setup(t){return j(t.params.projectId),(c,n)=>(l(),p(r(P),{"project-id":t.params.projectId,"can-unlock":""},{default:w(()=>[x(r(b),{"operation-id":t.params.operationId,"state-id":t.params.stateId},null,8,["operation-id","state-id"])]),_:1},8,["project-id"]))}});export{E as default};
@@ -1 +0,0 @@
1
- import{C as O,I as J,E as F,D as M}from"#entry";import{E as W,u as q,aP as w,J as G,W as a,_ as o,D as t,a as C,ah as S,aa as H,r as n,V as Q,at as k,$ as p,ai as x,aj as K,a0 as X,aJ as I,aK as R}from"./-NXdyIEV.js";import"./C7Ij7g1p.js";import{S as Y}from"./DEdaEI2J.js";import{_ as Z}from"./DsRcdFOB.js";import{A as _}from"./BxFuzIIZ.js";import{P as h}from"./O5iT7Vr2.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./VQuDbHHR.js";import"./D9y446qR.js";import"./BKZ346WY.js";import"./DKbLex6i.js";import"./CNrxBMAX.js";import"./B2Q2xBzH.js";import"./DyhJj7Ha.js";import"./hvsd0Qgg.js";import"./CZyQa1Zc.js";import"./BqAcL3eq.js";import"./D4_5UqG-.js";import"./DXVNaud5.js";import"./BWDN-9Hx.js";const we=W({__name:"index",props:{params:{}},async setup(A){let s,r;const{projectStore:v}=O(),i=J(),{$client:U}=q(),g=n(!1),m=n(!1),f=n(!1),y=n(!1),c=n(null),P=n(null),D=n(""),j=n(!1),V=n(!1),b=n(!1);v.initializing?([s,r]=w(()=>M(()=>v.initialized).toBe(!0)),await s,r(),v.addLibraryRoot()):([s,r]=w(()=>v.initialize1()),await s,r(),[s,r]=w(()=>v.initialize2()),await s,r());const[B,T]=([s,r]=w(()=>Promise.all([F().getRestrictionOptions(),i.getServiceAccountOptions()])),s=await s,r(),s);async function $(u){j.value=!0;try{const e=await i.create(u);g.value=!1,D.value=e.token,y.value=!0}finally{j.value=!1}}function z(u){c.value=u,m.value=!0}function E(u){P.value=u,f.value=!0}async function L(){if(c.value){V.value=!0;try{await i.delete(c.value.id),m.value=!1,c.value=null}finally{V.value=!1}}}async function N(){if(P.value){b.value=!0;try{const u=await U.apiKey.rotateProject.mutate({projectId:A.params.projectId,apiKeyId:P.value.id});await i.items.load(),f.value=!1,D.value=u.token,y.value=!0,P.value=null}finally{b.value=!1}}}return i.items.load(),(u,e)=>(Q(),G(H,null,[a(t(Y),{title:"API Keys",icon:"mdi-key-variant",description:"Manage tokens that provide programmatic access to project resources."},{actions:o(()=>[a(k,{color:"primary","prepend-icon":"mdi-plus",onClick:e[0]||(e[0]=l=>g.value=!0)},{default:o(()=>[...e[11]||(e[11]=[p(" Create API key ",-1)])]),_:1})]),default:o(({height:l})=>[a(t(Z),{search:t(i).items.search,"onUpdate:search":e[1]||(e[1]=d=>t(i).items.search=d),"sort-by":t(i).items.sortBy,"onUpdate:sortBy":e[2]||(e[2]=d=>t(i).items.sortBy=d),page:t(i).items.page,"onUpdate:page":e[3]||(e[3]=d=>t(i).items.page=d),"items-per-page":t(i).items.itemsPerPage,"onUpdate:itemsPerPage":e[4]||(e[4]=d=>t(i).items.itemsPerPage=d),"project-id":A.params.projectId,data:t(i).items.data,loading:t(i).items.isLoading,height:l,onDelete:z,onRotate:E},null,8,["search","sort-by","page","items-per-page","project-id","data","loading","height"])]),_:1}),a(t(h),{visible:t(g),"onUpdate:visible":e[5]||(e[5]=l=>C(g)?g.value=l:null),"service-accounts":t(T),"restriction-options":t(B),loading:t(j),onSave:$},null,8,["visible","service-accounts","restriction-options","loading"]),a(t(_),{visible:t(y),"onUpdate:visible":e[6]||(e[6]=l=>C(y)?y.value=l:null),token:t(D)},null,8,["visible","token"]),a(S,{modelValue:t(m),"onUpdate:modelValue":e[8]||(e[8]=l=>C(m)?m.value=l:null),"max-width":"480"},{default:o(()=>[a(x,{title:"Delete API key"},{default:o(()=>[a(K,null,{default:o(()=>[p('This permanently revokes "'+X(t(c)?.meta.title)+'".',1)]),_:1}),a(I,null,{default:o(()=>[a(R),a(k,{disabled:t(V),onClick:e[7]||(e[7]=l=>m.value=!1)},{default:o(()=>[...e[12]||(e[12]=[p("Cancel",-1)])]),_:1},8,["disabled"]),a(k,{color:"error",loading:t(V),onClick:L},{default:o(()=>[...e[13]||(e[13]=[p("Delete",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),a(S,{modelValue:t(f),"onUpdate:modelValue":e[10]||(e[10]=l=>C(f)?f.value=l:null),"max-width":"480"},{default:o(()=>[a(x,{title:"Rotate API key"},{default:o(()=>[a(K,null,{default:o(()=>[...e[14]||(e[14]=[p("The current token will stop working immediately.",-1)])]),_:1}),a(I,null,{default:o(()=>[a(R),a(k,{disabled:t(b),onClick:e[9]||(e[9]=l=>f.value=!1)},{default:o(()=>[...e[15]||(e[15]=[p("Cancel",-1)])]),_:1},8,["disabled"]),a(k,{color:"warning",loading:t(b),onClick:N},{default:o(()=>[...e[16]||(e[16]=[p("Rotate",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}});export{we as default};
@@ -1 +0,0 @@
1
- import{aP as B,z as X,aQ as Y,aR as G,D as P,aS as Q,m as W,U as J,W as Z,aT as N,aL as x,aU as tt,aV as et}from"#entry";import{u as nt,B as T}from"./-NXdyIEV.js";const ot=(l,I)=>l.type===I||(l.extensions?.includes(I)??!1),st=B({name:"project-panel",getStoreId:l=>`projects/${l}/panel`,create:({storeId:l,id:[I],logger:m})=>X(l,()=>{const{instancesStore:o,libraryStore:v}=Y(I),b=T(),y=T();let C=0;const{vueFlowStore:s,nodeFactory:u,onHubMoved:O,onInstanceMoved:R,onHubNodeDeleted:S,onInstanceNodeDeleted:A,onNodesMoved:M,edgeEndpointOffsets:D}=G.ensureCreated("project",I),{$client:F}=nt(),q=Q(async t=>{await F.workspace.setProjectViewport.mutate({projectId:I,viewport:t})},1e3);s.onViewportChange(q);const z=async()=>{W.info({projectId:I},"initializing project panel store");const t=await F.workspace.getProjectViewport.query({projectId:I});t&&(s.defaultViewport.value=t)},K=async()=>{u.createNodesForModels(o.getProjectInstances(),[...o.hubs.values()]),J(s).then(()=>Z(s,M,D))},U=t=>{C+=1,b.value={instanceId:t,requestId:C}},V=t=>{b.value?.requestId===t&&(b.value=void 0)},_=t=>{const e=s.findNode(t.target);if(!e)return{x:120,y:120};const n=s.viewport.value;return{x:e.position.x*n.zoom+n.x+24,y:e.position.y*n.zoom+n.y+24}},L=t=>{const{inputInstance:e,outputInstance:n,outputKey:i,inputKey:a}=N(s,t);if(!e||!n)return!1;const r=o.getInstanceComponent(n),d=o.getInstanceComponent(e),c=r?.outputs[i],p=d?.inputs[a];if(!c||!p)return!1;const E=v.library.entities[c.type];if(E&&ot(E,p.type))return!1;const h=et({rootType:c.type,targetType:p.type,entities:v.library.entities});return h.filter(f=>f.path&&f.assignable).length===0?!1:(y.value={connection:t,targetLabel:a,rootType:c.type,targetType:p.type,options:h,..._(t)},!0)};R(t=>{o.patchInstance(t,["position"])}),O(t=>{o.patchHub(t,["position"])}),S(t=>{o.deleteHub(t.data.hub,!t.data.blueprint)}),A(t=>{o.deleteInstance(t.data.instance,!t.data.blueprint)});const w=async(t,e)=>{const{inputInstance:n,outputInstance:i,inputHub:a,outputHub:r,outputKey:d,inputKey:c}=N(s,t);let p=c;if(i?.type===x)throw new Error("Export port cannot be a connection source");if(r&&n?.type===x&&!c)throw new Error("Export port does not allow injection inputs");if(!await o.canAddInputDependency({instance:n,hub:a},{instance:i,hub:r}))throw m.warn({connection:t,inputInstanceId:n?.id,inputHubId:a?.id,outputInstanceId:i?.id,outputHubId:r?.id},"connection rejected by cycle"),new Error("Circular dependency");if(n&&c===tt&&n.type===x){if(!i)throw new Error("Create-input handle supports only instance outputs");const H=o.getInstanceComponent(i)?.outputs[d];if(!H)throw new Error(`Output "${d}" not found in instance "${i.id}"`);const f=v.library.entities[H.type];p=o.createEditableExportInput(n,{outputTitle:f?.meta.title})}if(!(!e&&L(t))){if(n&&i)return await o.addInstanceInput(n,p,{instanceId:i.id,output:d,path:e});if(r&&n&&p)return await o.addInstanceHubInput(n,p,{hubId:r.id});if(r&&n)return await o.addInstanceInjectionInput(n,{hubId:r.id});if(i&&a)return await o.addHubInput(a,{instanceId:i.id,output:d,path:e});if(r&&a)return await o.addHubInjectionInput(a,{hubId:r.id});throw m.error({msg:"unexpected connection while adding",connection:t,inputInstance:n,outputInstance:i,inputHub:a,outputHub:r,outputKey:d,inputKey:c}),new Error("Invalid connection")}},j=t=>{const{inputInstance:e,outputInstance:n,inputHub:i,outputHub:a,outputKey:r,inputKey:d}=N(s,t),c=t.data?.path;if(e&&n)return o.removeInstanceInput(e,d,{instanceId:n.id,output:r,path:c});if(a&&e&&d)return o.removeInstanceHubInput(e,d,{hubId:a.id});if(a&&e)return o.removeInstanceInjectionInput(e,{hubId:a.id});if(n&&i)return o.removeHubInput(i,{instanceId:n.id,output:r,path:c});if(a&&i)return o.removeHubInjectionInput(i,{hubId:a.id});throw m.error({msg:"unexpected connection while removing",edge:t,inputInstance:e,outputInstance:n,inputHub:i,outputHub:a,outputKey:r,inputKey:d}),new Error("Invalid connection")};s.onConnect(w);const $=async t=>{const e=y.value;e&&(y.value=void 0,await w(e.connection,t))},k=()=>{y.value=void 0};let g=!1;return s.onEdgeUpdate(async({edge:t,connection:e})=>{g=!0,await j(t),await w(e)}),s.onEdgeUpdateEnd(async({edge:t})=>{try{if(g)return;await j(t)}finally{g=!1}}),o.onInstanceInputAdded(({instance:t,inputName:e,input:n})=>{u.createEdgeForInstanceInput(t,e,n)}),o.onInstanceHubInputAdded(({instance:t,inputName:e,input:n})=>{u.createEdgeForInstanceHubInput(t,e,n)}),o.onInstanceInjectionInputAdded(({instance:t,input:e})=>{u.createEdgeForInstanceInjectionInput(t,e)}),o.onHubInputAdded(({hub:t,input:e})=>{u.createEdgeForHubInput(t,e)}),o.onHubInjectionInputAdded(({hub:t,input:e})=>{u.createEdgeForHubInjectionInput(t,e)}),o.onInstanceInputRemoved(({instance:t,inputName:e,input:n})=>{u.removeEdgeForInstanceInput(t,e,n)}),o.onInstanceHubInputRemoved(({instance:t,inputName:e,input:n})=>{u.removeEdgeForInstanceHubInput(t,e,n)}),o.onInstanceInjectionInputRemoved(({instance:t,input:e})=>{u.removeEdgeForInstanceInjectionInput(t,e)}),o.onHubInputRemoved(({hub:t,input:e})=>{u.removeEdgeForHubInput(t,e)}),o.onHubInjectionInputRemoved(({hub:t,input:e})=>{u.removeEdgeForHubInjectionInput(t,e)}),o.onInstanceNameChanged(({oldId:t,newId:e})=>{const n=u.instanceIdToNodeIdMap.get(t);u.instanceIdToNodeIdMap.set(e,n),u.instanceIdToNodeIdMap.delete(t),s.updateNodeData(n,{})}),o.onInstanceCreated(async({instance:t,blueprint:e})=>{const n=u.createNodeFromInstance(t,{blueprint:e});if(await P(s.areNodesInitialized).toBe(!0),!e){if(o.isGhostInstance(t.id))return;s.updateNode(n.id,i=>{const a={x:i.position.x-i.dimensions.width/2,y:i.position.y-i.dimensions.height/2};return t.position=a,{position:a}})}}),o.onInstanceDeleted(t=>{const e=u.instanceIdToNodeIdMap.get(t);e&&(s.removeNodes(e),u.instanceIdToNodeIdMap.delete(t))}),o.onHubDeleted(t=>{s.removeNodes(t)}),o.onHubCreated(async({hub:t,blueprint:e})=>{u.createNodeFromHub(t,{blueprint:e}),await P(s.areNodesInitialized).toBe(!0),e||s.updateNode(t.id,n=>{const i={x:n.position.x-n.dimensions.width/2,y:n.position.y-n.dimensions.height/2};return t.position=i,{position:i}})}),{initialize:z,placeNodes:K,instanceFocusRequest:b,requestInstanceFocus:U,clearInstanceFocusRequest:V,pendingOutputExpression:y,selectPendingOutputExpression:$,closePendingOutputExpression:k}})});export{st as u};
@@ -1 +0,0 @@
1
- import{E,a_ as L,aP as U,H as R,w as _,D as o,V as k,Y as h,_ as t,a5 as J,a3 as q,J as P,W as s,ai as B,aj as N,aL as A,Z as y,$ as r,a2 as f,a$ as H,a as M,aJ as Y,aK as Z,at as F,a1 as z,r as x,j as K,n as G}from"./-NXdyIEV.js";import{a1 as O,i as Q,D as X,m as g,a2 as ee,_ as te}from"#entry";import{_ as se,D as S,a as D}from"./DyDuNLRY.js";const ae=""+new URL("hira-unlock-impossible.B5Pl3pvF.png",import.meta.url).href,oe={key:1,class:"password-prompt-container"},re={key:2,class:"password-prompt-container"},le={key:3,class:"mt-4 text-center text-uppercase text-disabled"},ne=E({__name:"ProjectContainer",props:{projectId:{},canUnlock:{type:Boolean}},async setup(i){let l,m;const b=L("passwordField"),u=x(""),d=x(null),w=x(!1),n=([l,m]=U(()=>O.async(i.projectId)),l=await l,m(),l),W=Q(),c=x(!1),p=K(()=>{if(n.unlockState?.type==="locked")return n.unlockState.unlockSuite}),V=async()=>{if(!c.value){c.value=!0;try{const a=p.value?.passkeys??[];for(const e of a){const v=new S;v.addIdentity(new D({identity:e.passkeyIdentity}));let T;try{const I=ee(e.encryptedIdentity);T=await v.decrypt(I,"text")}catch(I){g.debug({error:I},"failed to decrypt identity, trying next passkey");continue}await n.unlockWithIdentity(T);return}if(a.length===0&&p.value?.hasPasskey){const e=new S;if(e.addIdentity(new D),await n.unlock(e))return}d.value="No passkey could unlock the project"}catch(a){g.error({error:a},"failed to unlock project with passkey"),d.value="An error occurred while unlocking the project with passkey"}finally{c.value=!1}}},j=([l,m]=U(()=>X(()=>n.unlockState).not.toBeUndefined()),l=await l,m(),l);j.type==="locked"&&p.value?.hasPasskey&&W.dockview?.activePanel?.params?.projectId===i.projectId&&(g.info('attempting passkey unlock for project "%s"',i.projectId),V()),R(()=>{b.value&&j.type==="locked"&&!p.value?.hasPasskey&&b.value.textField?.focus()}),_(u,()=>{d.value=null});const C=async()=>{w.value=!0,await G();try{const a=new S;a.addPassphrase(u.value),await n.unlock(a)||(d.value="The password is incorrect")}catch(a){g.error({error:a},"failed to unlock project"),d.value="An error occurred while unlocking the project"}finally{w.value=!1}},$=K(()=>[a=>!!a||"Password is required"]);return(a,e)=>o(n).unlockState?.type==="unlocked"?(k(),h(q,{key:0},{default:t(()=>[J(a.$slots,"default",{},void 0,!0)]),_:3})):i.canUnlock&&o(n).isUnlockImpossible?(k(),P("div",oe,[s(B,{variant:"text"},{default:t(()=>[s(N,null,{default:t(()=>[s(A,{class:"text-center text-disabled text-uppercase"},{default:t(()=>[s(y,{color:"error"},{default:t(()=>[...e[1]||(e[1]=[r("mdi-lock",-1)])]),_:1}),e[2]||(e[2]=f("br",null,null,-1)),e[3]||(e[3]=r(" No unlock method available! ",-1)),e[4]||(e[4]=f("br",null,null,-1)),e[5]||(e[5]=r(" The decryption of state is impossible! ",-1)),e[6]||(e[6]=f("br",null,null,-1)),e[7]||(e[7]=r(" Try to restore the state from backup or ask for help... ",-1))]),_:1}),e[8]||(e[8]=f("div",{class:"text-center mt-4"},[f("img",{src:ae,class:"mascot-image"})],-1))]),_:1})]),_:1})])):i.canUnlock?(k(),P("div",re,[s(B,{width:"460",variant:"text"},{default:t(()=>[s(N,null,{default:t(()=>[s(A,{class:"text-center text-disabled text-uppercase"},{default:t(()=>[s(y,null,{default:t(()=>[...e[9]||(e[9]=[r("mdi-lock",-1)])]),_:1}),e[10]||(e[10]=r(" The project is locked ",-1))]),_:1}),s(o(se),{ref_key:"passwordField",ref:b,modelValue:o(u),"onUpdate:modelValue":e[0]||(e[0]=v=>M(u)?u.value=v:null),class:"mt-4",label:"Password",hint:"Enter the password to unlock the project","persistent-hint":"",rules:o($),"error-messages":o(d)?[o(d)]:[],onKeydown:H(C,["enter"])},null,8,["modelValue","rules","error-messages"])]),_:1}),s(Y,null,{default:t(()=>[s(Z),o(j).type==="locked"&&o(p)?.hasPasskey?(k(),h(F,{key:0,color:"secondary",loading:o(c),disabled:o(c),onClick:V},{default:t(()=>[s(y,null,{default:t(()=>[...e[11]||(e[11]=[r("mdi-fingerprint",-1)])]),_:1})]),_:1},8,["loading","disabled"])):z("",!0),s(F,{color:"primary",loading:o(w),disabled:o(w),onClick:C},{default:t(()=>[s(y,{class:"mr-2"},{default:t(()=>[...e[12]||(e[12]=[r("mdi-lock-open",-1)])]),_:1}),e[13]||(e[13]=r(" Unlock ",-1))]),_:1},8,["loading","disabled"])]),_:1})]),_:1})])):(k(),P("div",le,[s(y,null,{default:t(()=>[...e[14]||(e[14]=[r("mdi-lock",-1)])]),_:1}),e[15]||(e[15]=r(" The project is locked ",-1))]))}}),ce=te(ne,[["__scopeId","data-v-957d5296"]]);export{ce as P};
@@ -1 +0,0 @@
1
- import{C as L,q as O,D as P,O as E,n as H}from"#entry";import{E as R,aP as I,Y as f,_ as h,D as t,V as m,a2 as s,a6 as U,W as g,Z as S,$ as W,a0 as y,ak as $,a as q,aX as A,a1 as j,a7 as F,J,r as M,j as b}from"./-NXdyIEV.js";import"./C7Ij7g1p.js";import{S as X}from"./DEdaEI2J.js";import{I as Y}from"./Bsca_muP.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./VQuDbHHR.js";import"./D9y446qR.js";import"./zPZwXEME.js";const Z={class:"d-flex align-center justify-space-between mb-4",style:{"flex-shrink":"0"}},G={class:"d-flex align-center"},K={class:"text-subtitle-1 font-weight-medium"},Q={style:{flex:"1","min-height":"0","overflow-y":"auto"}},ee={class:"mr-2"},te=["onClick"],oe={class:"d-flex flex-column flex-grow-1 mr-4"},ne={key:0,class:"text-caption text-medium-emphasis"},he=R({__name:"index",async setup(ie){let c,l;const{projectStore:d,instancesStore:_,libraryStore:k,stateStore:x,validationStore:V,infoStore:r}=L();d.initializing?([c,l]=I(()=>P(()=>d.initialized).toBe(!0)),await c,l(),d.addLibraryRoot()):([c,l]=I(()=>d.initialize1()),await c,l(),[c,l]=I(()=>d.initialize2()),await c,l());const p=M(""),z=O(p,300),D=b(()=>{const o=[..._.instances.values()],n=z.value.toLowerCase().trim(),e=(n?o.filter(i=>i.id.includes(n)):o).map(i=>{const a=k.library.components[i.type];return{...i,meta:{title:a.meta.title,description:i.name,color:a.meta.color,icon:a.meta.icon??"iconamoon:component",iconColor:a.meta.iconColor,secondaryIcon:a.meta.secondaryIcon,secondaryIconColor:a.meta.secondaryIconColor}}}),u=e.filter(i=>!i.parentId),C=i=>i.map(a=>{const w=e.filter(N=>N.parentId===a.id);return{...a,children:w.length>0?C(w):void 0}});return C(u)}),B=b(()=>{if(!r.projectInfo)return[];const o=r.projectInfo;return[{id:o.id,meta:{title:o.meta.title||o.name,description:o.id,icon:o.meta.icon||"mdi-folder-outline",iconColor:o.meta.iconColor},children:D.value}]}),T=o=>{if(o.id===r.projectInfo?.id)return;const n=x.getInstanceState(o.id);n&&H({name:"settings.instance-details",params:{projectId:d.projectId,stateId:n.id}})};return(o,n)=>(m(),f(t(X),{title:"Instances",icon:"mdi-cube-outline",description:"View and manage instances created in this project."},{default:h(({height:v})=>[s("div",{class:"instances-tree",style:U({height:v,display:"flex",flexDirection:"column"})},[s("div",Z,[s("div",G,[g(S,{class:"mr-2"},{default:h(()=>[...n[1]||(n[1]=[W("mdi-format-list-bulleted",-1)])]),_:1}),s("span",K,y(t(_).instances.size)+" instance "+y(t(_).instances.size===1?"":"s"),1)]),g($,{modelValue:t(p),"onUpdate:modelValue":n[0]||(n[0]=e=>q(p)?p.value=e:null),"prepend-inner-icon":"mdi-magnify",placeholder:"Search instances...",variant:"outlined",density:"compact",clearable:"","hide-details":"",style:{"max-width":"300px"}},null,8,["modelValue"])]),s("div",Q,[g(A,{items:t(B),"item-title":"meta.title","item-value":"id","open-strategy":"multiple","select-strategy":"independent",density:"compact","indent-lines":"",opened:[t(r).projectInfo?.id]},{prepend:h(({item:e,isOpen:u})=>[s("div",ee,[e.id!==t(r).projectInfo?.id?(m(),f(t(Y),{key:0,state:t(x).instanceStates.get(e.id),"expected-input-hash":t(x).inputHashOutputs.get(e.id)?.inputHash,"validation-output":t(V).validationOutputs.get(e.id)},null,8,["state","expected-input-hash","validation-output"])):(m(),f(S,{key:1,icon:u?"mdi-folder-open-outline":"mdi-folder-outline",size:"20",color:e.meta.iconColor},null,8,["icon","color"]))])]),title:h(({item:e})=>[s("div",{class:"d-flex align-center flex-grow-1",style:{cursor:"pointer"},onClick:u=>T(e)},[e.meta.icon&&e.id!==t(r).projectInfo?.id?(m(),f(t(E),{key:0,icon:e.meta.icon,color:e.meta.iconColor,width:"24",class:"mr-3"},null,8,["icon","color"])):j("",!0),s("div",oe,[s("div",{class:F(["font-weight-medium",e.id===t(r).projectInfo?.id?"text-h6":"text-body-1"])},y(e.meta.title||"Unnamed"),3),e.meta.description?(m(),J("div",ne,y(e.meta.description),1)):j("",!0)])],8,te)]),_:1},8,["items","opened"])])],4)]),_:1}))}});export{he as default};
@@ -1 +0,0 @@
1
- import{bA as A,_ as H,aR as $,C as G,m as U,D as V,S as X,bg as Y,l as Z}from"#entry";import{_ as J,a as K,b as W}from"./LC_ejPos.js";import{a as q,g as Q,i as ee}from"./oZs8U75K.js";import{_ as te,G as oe}from"./3RbcgHkU.js";import{E as S,a_ as se,l as ae,V as g,Y as x,ai as B,a6 as ne,_ as r,W as c,a2 as _,a0 as y,aK as E,at as z,aL as re,ak as ie,a as O,D as s,$ as h,aX as le,bg as ce,a7 as ue,J as pe,aa as de,a1 as M,Z as D,am as me,ap as fe,aq as ge,aj as _e,r as j,j as F,aP as I,H as xe,w as be,av as L,aw as N}from"./-NXdyIEV.js";import{u as R}from"./Ct3ssWsd.js";import{P as ye}from"./DJwAKlaO.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./Bsca_muP.js";import"./VQuDbHHR.js";import"./zPZwXEME.js";import"./D3MpZ_Sw.js";import"./BqAcL3eq.js";import"./A3pA-dEU.js";import"./DsxZEVxb.js";import"./CbVegJaT.js";import"./D4_5UqG-.js";import"./BbYXjaP8.js";import"./BxAss8Tj.js";import"./DyDuNLRY.js";const ve={class:"text-caption text-medium-emphasis mb-2"},he={class:"d-flex align-center mt-3 mb-1"},we={class:"text-caption text-medium-emphasis"},Ce={class:"output-expression-picker__list"},ke=["onClick"],Ie={class:"text-body-2"},Se={class:"text-caption text-medium-emphasis"},Te=S({__name:"OutputExpressionPicker",props:{targetLabel:{},rootType:{},targetType:{},options:{},x:{},y:{}},emits:["select","close"],setup(u,{emit:d}){const l=d,i=j(""),n=j(!1),m=j(["__root__"]),C=se("picker");A(C,()=>l("close"));const w=(o,e)=>e?o.label.toLowerCase().includes(e)||o.title.toLowerCase().includes(e)||o.type.toLowerCase().includes(e):!0,f=o=>{if(!o)return;const e=o.lastIndexOf(".");if(e!==-1)return o.slice(0,e)},T=o=>{const e=["__root__"];let t=f(o);for(;t;)e.push(t),t=f(t);return e},P=F(()=>{const o=new Map;for(const t of u.options){const p=t.path??"__root__";o.set(p,{...t,id:p,children:[]})}const e=[];for(const t of o.values()){const p=f(t.path),b=o.get(p??"__root__");if(t.id!=="__root__"&&b){b.children?.push(t);continue}e.push(t)}return e}),k=(o,e)=>{const t=o.children?.map(v=>k(v,e)).filter(v=>!!v),p=n.value||o.assignable||(t?.length??0)>0,b=w(o,e)||(t?.length??0)>0;return!p||!b?null:{...o,children:t&&t.length>0?t:void 0}},a=F(()=>{const o=i.value.trim().toLowerCase();return P.value.map(e=>k(e,o)).filter(e=>!!e)});return ae(()=>{i.value.trim().length>0||n.value||(m.value=Array.from(new Set(u.options.filter(o=>o.assignable).flatMap(o=>T(o.path)))))}),(o,e)=>(g(),x(B,{ref:"picker",class:"output-expression-picker",style:ne({left:`${Math.max(12,u.x)}px`,top:`${Math.max(12,u.y)}px`}),elevation:"10",width:"420"},{default:r(()=>[c(re,{class:"d-flex align-center py-2 pr-2 text-subtitle-1"},{default:r(()=>[_("span",null,"Connect to "+y(u.targetLabel),1),c(E),c(z,{icon:"mdi-close",size:"small",variant:"text",onClick:e[0]||(e[0]=t=>l("close"))})]),_:1}),c(_e,{class:"pt-0 pb-2"},{default:r(()=>[_("div",ve,y(u.rootType)+" -> "+y(u.targetType),1),c(ie,{modelValue:s(i),"onUpdate:modelValue":e[1]||(e[1]=t=>O(i)?i.value=t:null),density:"compact",variant:"outlined","prepend-inner-icon":"mdi-magnify",placeholder:"Search expressions...","hide-details":"",autofocus:""},null,8,["modelValue"]),_("div",he,[_("div",we,y(s(n)?"All expressions":"Compatible"),1),c(E),c(z,{size:"x-small",variant:"text",onClick:e[2]||(e[2]=t=>n.value=!s(n))},{default:r(()=>[h(y(s(n)?"Compatible only":"Show all"),1)]),_:1})]),_("div",Ce,[s(a).length>0?(g(),x(le,{key:0,opened:s(m),"onUpdate:opened":e[3]||(e[3]=t=>O(m)?m.value=t:null),items:s(a),"item-title":"label","item-value":"id",density:"compact","open-all":s(i).trim().length>0,"open-on-click":"","indent-lines":""},{prepend:r(({item:t})=>[t.assignable?(g(),x(D,{key:0,size:"12"},{default:r(()=>[...e[4]||(e[4]=[h("mdi-circle-outline",-1)])]),_:1})):(g(),x(D,{key:1,size:"12",color:"disabled"},{default:r(()=>[...e[5]||(e[5]=[h("mdi-circle-off-outline",-1)])]),_:1}))]),title:r(({item:t})=>[_("div",{class:ue(["output-expression-picker__item",{"output-expression-picker__item--disabled":!t.assignable}]),onClick:ce(p=>t.assignable&&l("select",t.path),["stop"])},[_("div",Ie,y(t.label)+" "+y(t.multiple?"[]":""),1),_("div",Se,[h(y(t.type)+" ",1),t.assignable?M("",!0):(g(),pe(de,{key:0},[h("· not assignable")],64))])],10,ke)]),_:1},8,["opened","items","open-all"])):(g(),x(me,{key:1,density:"compact"},{default:r(()=>[c(fe,null,{default:r(()=>[c(ge,null,{default:r(()=>[...e[6]||(e[6]=[h("No expressions found",-1)])]),_:1})]),_:1})]),_:1}))])]),_:1})]),_:1},8,["style"]))}}),Pe=H(Te,[["__scopeId","data-v-4d5a7d78"]]),je=S({__name:"ExtraElementPanel",setup(u){const d=l=>{q(l.dataTransfer)};return(l,i)=>(g(),x(B,null,{default:r(()=>[_("div",{draggable:"true",style:{cursor:"grab"},onDragstart:d},[c(te)],32)]),_:1}))}}),Ve=S({__name:"ProjectCanvas",async setup(u){let d,l;const i=$(),n=R(),{projectStore:m,instancesStore:C,libraryStore:w}=G(),f=U.child({feature:"project-canvas-focus"});m.initializing?([d,l]=I(()=>V(()=>m.initialized).toBe(!0)),await d,l(),m.addLibraryRoot()):([d,l]=I(()=>m.initialize1()),await d,l(),[d,l]=I(()=>m.initialize2()),await d,l()),[d,l]=I(()=>n.initialize()),await d,l();const T=async a=>{f.debug({instanceId:a},"focus requested"),await V(i.vueFlowStore.areNodesInitialized).toBe(!0),await P(()=>{const v=i.nodeFactory.instanceIdToNodeIdMap.get(a);return v?!!i.vueFlowStore.findNode(v):!1},20,50);const o=i.nodeFactory.instanceIdToNodeIdMap.get(a);if(!o)return f.debug({instanceId:a},"focus failed: node id not found in instance map"),!1;const e=i.vueFlowStore.findNode(o);if(!e)return f.debug({instanceId:a,nodeId:o},"focus failed: vue-flow node not found"),!1;const t=e.position.x+e.dimensions.width/2,p=e.position.y+e.dimensions.height/2,b=i.vueFlowStore.viewport.value.zoom;return await i.vueFlowStore.setCenter(t,p,{zoom:b,duration:300}),f.debug({instanceId:a,nodeId:o,nodeCenterX:t,nodeCenterY:p},"focus success"),!0},P=async(a,o,e)=>{for(let t=0;t<o;t++){if(a())return;await new Promise(p=>setTimeout(p,e))}};xe(()=>{n.placeNodes()}),be(()=>n.instanceFocusRequest,async a=>{if(!a)return;if(f.debug({request:a},"focus request changed"),!await T(a.instanceId)){f.debug({request:a},"focus request kept for retry because focus did not succeed");return}n.clearInstanceFocusRequest(a.requestId)},{immediate:!0});const k=a=>{if(a.preventDefault(),!a.dataTransfer||i.blueprint)return;let o;const e=Q(a.dataTransfer);if(e){const t=C.getNextInstanceName(e),p=Y(e,t),b=w.library.components[e];o={boundary:{width:360,height:260},instances:[{id:p,name:t,type:e,kind:b.kind,position:{x:0,y:0}}],hubs:[]}}else if(ee(a.dataTransfer))o={boundary:{width:74,height:74},instances:[],hubs:[{id:X.createId(),position:{x:0,y:0}}]};else return;i.blueprint=o};return(a,o)=>(g(),x(s(oe),{canvasId:["project",s(m).projectId],components:s(w).library.components,entities:s(w).library.entities,"input-resolver-outputs":s(C).inputResolverOutputs,editable:"",onDragover:k},{"node-instance":r(e=>[c(s(W),L(N(e)),null,16)]),"node-hub":r(e=>[c(s(K),L(N(e)),null,16)]),"panel-bottom-left":r(()=>[c(s(J))]),"panel-bottom-right":r(()=>[c(s(je))]),overlay:r(()=>[s(n).pendingOutputExpression?(g(),x(s(Pe),{key:0,"target-label":s(n).pendingOutputExpression.targetLabel,"root-type":s(n).pendingOutputExpression.rootType,"target-type":s(n).pendingOutputExpression.targetType,options:s(n).pendingOutputExpression.options,x:s(n).pendingOutputExpression.x,y:s(n).pendingOutputExpression.y,onSelect:s(n).selectPendingOutputExpression,onClose:s(n).closePendingOutputExpression},null,8,["target-label","root-type","target-type","options","x","y","onSelect","onClose"])):M("",!0)]),_:1},8,["canvasId","components","entities","input-resolver-outputs"]))}}),qe=S({__name:"index",props:{params:{}},setup(u){return Z(u.params.projectId),$.ensureCreated("project",u.params.projectId),R.ensureCreated(u.params.projectId),(d,l)=>(g(),x(s(ye),{"project-id":u.params.projectId,"can-unlock":""},{default:r(()=>[c(s(Ve))]),_:1},8,["project-id"]))}});export{qe as default};
@@ -1 +0,0 @@
1
- import{M as a,R as T}from"#entry";import{R as j}from"./BWDN-9Hx.js";import{E as O,aG as S,r as E,w as G,V,Y as b,D as f,aO as g,j as w}from"./-NXdyIEV.js";const C=O({__name:"ProjectRoleRulesBuilder",props:g({options:{},allowedRules:{},allowEmpty:{type:Boolean,default:!1},sectionTitle:{default:"Rules"}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const u=S(t,"modelValue"),I=w(()=>a.flatMap((e,r)=>{const o=e.permissions.filter(l=>!t.allowedRules||t.allowedRules.some(i=>i.permissions.includes(l.name)));if(o.length===0)return[];const c=o.some(l=>t.allowedRules?.some(i=>i.permissions.includes(l.name)&&!i.restrictions))?[...e.supportedRestrictions]:e.supportedRestrictions.filter(l=>t.allowedRules?.some(i=>i.permissions.some(s=>o.some(n=>n.name===s))&&i.restrictions?.some(s=>s.type===l)));return[{id:String(r),title:e.title,permissions:o.map(l=>({...l})),supportedRestrictions:c,resourceType:"resourceType"in e?e.resourceType:void 0}]})),k=[{id:"resources",title:"Resources"},{id:"instances",title:"Instances",recursive:!0},{id:"owners",title:"Owners"},{id:"self",title:"Self"},{id:"workers",title:"Workers"}],v=w(()=>({...t.options.resources,instances:t.options.instances,owners:t.options.serviceAccounts,self:[{id:"self",title:"Current service account"}],workers:t.options.workers})),h=w(()=>t.allowedRules?Object.fromEntries(Object.entries(v.value).map(([e,r])=>{const o=a.find(s=>"resourceType"in s&&s.resourceType===e),c=(o?[o]:a.filter(s=>s.supportedRestrictions.includes(e))).flatMap(s=>s.permissions.map(n=>n.name));if(t.allowedRules.some(s=>s.permissions.some(n=>c.includes(n))&&!s.restrictions))return[e,r];const i=new Set(t.allowedRules.flatMap(s=>s.permissions.some(n=>c.includes(n))?(s.restrictions??[]).filter(n=>e==="resources"?n.type==="resources":n.type===e).flatMap(y):[]));return[e,r.filter(s=>i.has(s.id))]})):v.value);let d=!1;const m=E(R(u.value));G(u,e=>{if(d){d=!1;return}m.value=R(e)},{deep:!0});function R(e){return e.map(r=>({groupId:String(a.findIndex(o=>o.permissions.some(p=>p.name===r.permissions[0]))),permissions:[...r.permissions],restrictions:(r.restrictions??[]).map(o=>({type:o.type,ids:y(o),recursive:"recursive"in o?o.recursive:void 0}))}))}function y(e){switch(e.type){case"resources":return e.resourceIds;case"instances":return e.instanceIds;case"owners":return e.serviceAccountIds;case"workers":return e.workerIds;case"self":return["self"]}}function M(e){switch(e.type){case"resources":return{type:"resources",resourceIds:e.ids};case"instances":return{type:"instances",instanceIds:e.ids.map(r=>T.parse(r)),recursive:e.recursive??!1};case"owners":return{type:"owners",serviceAccountIds:e.ids};case"workers":return{type:"workers",workerIds:e.ids};case"self":return{type:"self"};default:throw new Error(`Unsupported project restriction "${e.type}"`)}}function B(e){m.value=e,d=!0,u.value=e.map(r=>({permissions:r.permissions,...r.restrictions.length?{restrictions:r.restrictions.map(M)}:{}}))}return(e,r)=>(V(),b(j,{"model-value":f(m),groups:f(I),"restriction-descriptors":k,options:f(h),"allow-empty":t.allowEmpty,"section-title":t.sectionTitle,"onUpdate:modelValue":B},null,8,["model-value","groups","options","allow-empty","section-title"]))}});export{C as _};
@@ -1 +0,0 @@
1
- import{bs as S,C as N,D as H}from"#entry";import"./C7Ij7g1p.js";import{S as E}from"./DEdaEI2J.js";import{S as J,b as w}from"./BKZ346WY.js";import{u as R}from"./M3Z1JMP1.js";import{_ as W}from"./D9y446qR.js";import{_ as G}from"./CZyQa1Zc.js";import{E as B,aG as b,w as K,V as M,Y as U,_ as l,W as o,ai as j,aj as F,D as t,aI as $,$ as v,a0 as T,a1 as I,aJ as A,aK as z,at as C,ah as L,aO as P,r as y,aL as O,Z as Y,a2 as V,aP as D,J as Z,a as x,aa as q}from"./-NXdyIEV.js";import{_ as Q,c as X}from"./p1qmzON1.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./VQuDbHHR.js";import"./DKbLex6i.js";import"./DyDuNLRY.js";const _=B({__name:"CreateUnlockMethodDialog",props:{visible:{type:Boolean},visibleModifiers:{}},emits:P(["created"],["update:visible"]),setup(r,{emit:g}){const i=b(r,"visible"),p=g,s=S(),c=y(!1),u=y(!1),m=y(null),k=y(),e=y({type:"password",title:"",description:"",password:"",confirmPassword:""}),n=()=>{i.value=!1,k.value?.resetForm(),m.value=null},h=async()=>{if(c.value){u.value=!0,m.value=null;try{const a=await X(e.value);await s.create(a),i.value=!1,k.value?.resetForm(),m.value=null,p("created")}catch(a){console.error("Failed to create unlock method:",a),m.value="Some error occurred"}finally{u.value=!1}}};return K(i,a=>{a||(k.value?.resetForm(),m.value=null)}),(a,d)=>(M(),U(L,{modelValue:i.value,"onUpdate:modelValue":d[2]||(d[2]=f=>i.value=f),"max-width":"600px"},{default:l(()=>[o(j,{title:"Create Unlock Method"},{default:l(()=>[o(F,null,{default:l(()=>[o(Q,{ref_key:"unlockMethodForm",ref:k,"onUpdate:valid":d[0]||(d[0]=f=>c.value=f),"onUpdate:form":d[1]||(d[1]=f=>e.value=f)},null,512),t(m)?(M(),U($,{key:0,type:"error",density:"compact",class:"mb-4"},{default:l(()=>[v(T(t(m)),1)]),_:1})):I("",!0)]),_:1}),o(A,null,{default:l(()=>[o(z),o(C,{disabled:t(u),onClick:n},{default:l(()=>[...d[3]||(d[3]=[v("Cancel",-1)])]),_:1},8,["disabled"]),o(C,{color:"primary",disabled:!t(c),loading:t(u),onClick:h},{default:l(()=>[...d[4]||(d[4]=[v(" Create ",-1)])]),_:1},8,["disabled","loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"]))}}),ee={class:"mb-3"},te=B({__name:"DeleteUnlockMethodDialog",props:P({unlockMethod:{}},{visible:{type:Boolean},visibleModifiers:{}}),emits:P(["confirm"],["update:visible"]),setup(r,{emit:g}){const i=b(r,"visible"),p=r,s=g,c=y(!1),u=()=>{p.unlockMethod&&s("confirm",p.unlockMethod)},m=()=>{i.value=!1};return(k,e)=>(M(),U(L,{modelValue:i.value,"onUpdate:modelValue":e[0]||(e[0]=n=>i.value=n),"max-width":"500px"},{default:l(()=>[r.unlockMethod?(M(),U(j,{key:0},{default:l(()=>[o(O,{class:"d-flex align-center"},{default:l(()=>[o(Y,{class:"mr-2 text-error"},{default:l(()=>[...e[1]||(e[1]=[v("mdi-alert-circle-outline",-1)])]),_:1}),e[2]||(e[2]=v(" Delete Unlock Method ",-1))]),_:1}),o(F,null,{default:l(()=>[V("p",ee,[e[3]||(e[3]=v(" Are you sure you want to delete the unlock method ",-1)),V("strong",null,'"'+T(r.unlockMethod.meta.title)+'"',1),e[4]||(e[4]=v("? ",-1))]),o($,{type:"warning",density:"compact"},{default:l(()=>[...e[5]||(e[5]=[V("strong",null,"Warning:",-1),v(" Deleting this unlock method will permanently remove your ability to unlock the project using this method. Make sure you have at least one other unlock method configured before proceeding. ",-1)])]),_:1})]),_:1}),o(A,null,{default:l(()=>[o(z),o(C,{disabled:t(c),onClick:m},{default:l(()=>[...e[6]||(e[6]=[v("Cancel",-1)])]),_:1},8,["disabled"]),o(C,{color:"error",loading:t(c),onClick:u},{default:l(()=>[...e[7]||(e[7]=[v("Delete",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})):I("",!0)]),_:1},8,["modelValue"]))}}),ae={class:"d-flex align-center gap-1"},oe=B({__name:"UnlockMethodsTable",props:P({projectId:{},data:{},loading:{type:Boolean},hideHeader:{type:Boolean},height:{}},{search:{},searchModifiers:{},sortBy:{},sortByModifiers:{},page:{},pageModifiers:{},itemsPerPage:{},itemsPerPageModifiers:{}}),emits:P(["delete"],["update:search","update:sortBy","update:page","update:itemsPerPage"]),setup(r,{emit:g}){const i=g,p=b(r,"search"),s=b(r,"sortBy"),c=b(r,"page"),u=b(r,"itemsPerPage"),m=[{key:"type",title:"Type"},w.name,w.id,w.createdAt,w.actions];return(k,e)=>(M(),U(t(J),{search:p.value,"onUpdate:search":e[0]||(e[0]=n=>p.value=n),"sort-by":s.value,"onUpdate:sortBy":e[1]||(e[1]=n=>s.value=n),page:c.value,"onUpdate:page":e[2]||(e[2]=n=>c.value=n),"items-per-page":u.value,"onUpdate:itemsPerPage":e[3]||(e[3]=n=>u.value=n),headers:m,data:r.data,loading:r.loading,"hide-header":r.hideHeader,height:r.height},{"item.type":l(({item:n})=>[o(t(W),{status:n.type,"status-map":t(R)},null,8,["status","status-map"])]),"item.actions":l(({item:n})=>[V("div",ae,[o(t(G),{"page-name":"settings.unlock-method-details","page-params":{projectId:r.projectId,unlockMethodId:n.id}},null,8,["page-params"]),o(C,{variant:"text",icon:"mdi-delete",size:"small",color:"error",onClick:h=>i("delete",n)},null,8,["onClick"])])]),_:1},8,["search","sort-by","page","items-per-page","data","loading","hide-header","height"]))}}),ke=B({__name:"index",async setup(r){let g,i;const{projectStore:p}=N(),s=S();p.initializing?([g,i]=D(()=>H(()=>p.initialized).toBe(!0)),await g,i(),p.addLibraryRoot()):([g,i]=D(()=>p.initialize1()),await g,i(),[g,i]=D(()=>p.initialize2()),await g,i()),s.items.load();const c=y(!1),u=y(!1),m=y(null),k=y(!1),e=h=>{m.value=h,u.value=!0},n=async h=>{k.value=!0;try{await s.delete(h.id),u.value=!1,m.value=null}catch(a){console.error("Failed to delete unlock method:",a)}finally{k.value=!1}};return(h,a)=>(M(),Z(q,null,[o(t(E),{title:"Unlock Methods",icon:"mdi-lock-open-outline",description:"Manage the methods used to unlock and access this project's encrypted data."},{actions:l(()=>[o(C,{color:"primary","prepend-icon":"mdi-plus",onClick:a[0]||(a[0]=d=>c.value=!0)},{default:l(()=>[...a[7]||(a[7]=[v(" Add Unlock Method ",-1)])]),_:1})]),default:l(({height:d})=>[o(t(oe),{search:t(s).items.search,"onUpdate:search":a[1]||(a[1]=f=>t(s).items.search=f),"sort-by":t(s).items.sortBy,"onUpdate:sortBy":a[2]||(a[2]=f=>t(s).items.sortBy=f),page:t(s).items.page,"onUpdate:page":a[3]||(a[3]=f=>t(s).items.page=f),"items-per-page":t(s).items.itemsPerPage,"onUpdate:itemsPerPage":a[4]||(a[4]=f=>t(s).items.itemsPerPage=f),"project-id":t(p).projectId,data:t(s).items.data,loading:t(s).items.isLoading,height:d,onDelete:e},null,8,["search","sort-by","page","items-per-page","project-id","data","loading","height"])]),_:1}),o(t(_),{visible:t(c),"onUpdate:visible":a[5]||(a[5]=d=>x(c)?c.value=d:null)},null,8,["visible"]),o(t(te),{visible:t(u),"onUpdate:visible":a[6]||(a[6]=d=>x(u)?u.value=d:null),"unlock-method":t(m),onConfirm:n},null,8,["visible","unlock-method"])],64))}});export{ke as default};
@@ -1 +0,0 @@
1
- {"id":"74426c6d-f911-4b17-980a-4fe479415ac8","timestamp":1788443704166,"prerendered":[]}
@@ -1 +0,0 @@
1
- import{g as _,i as U,k as H,_ as R}from"#entry";import{_ as A,c as E}from"./p1qmzON1.js";import{E as F,aG as z,w as D,V,Y as T,_ as s,W as t,ai as $,aH as W,a as k,D as n,aj as L,ak as N,as as B,a2 as d,Z as w,$ as l,aI as Y,aJ as q,aK as J,at as S,ah as K,r as c,j as G,H as Z,M as O,J as P,aL as Q,aM as X,a0 as x,am as ee,ap as C,an as te,aa as I,ab as ae,x as se}from"./-NXdyIEV.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./DyDuNLRY.js";const oe={class:"mb-4"},le={class:"text-subtitle-1 font-weight-medium mb-2"},ne=F({__name:"NewProjectDialog",props:{visible:{type:Boolean},visibleModifiers:{}},emits:["update:visible"],setup(j){const p=z(j,"visible"),f=c(!1),y=c(!1),r=c(""),m=c(""),v=c(),g=c({type:"password",title:"",description:"",password:"",confirmPassword:""}),h=[o=>!!o||"Name is required",o=>o&&o.length<=64||"Name must be less than 64 characters",o=>/^[a-z0-9-\.]+$/.test(o)||"Name must be alphanumeric in lowercase with dashes (-) and dots (.)",o=>/^[a-z]/i.test(o)||"Name must start with a letter"],b=_(),a=U(),u=G(()=>f.value&&y.value),M=async()=>{if(!u.value)return;const o=await E(g.value),e=await b.createProject(r.value,{title:m.value},o);a.openProjectPanel(e.id),p.value=!1,r.value="",v.value?.resetForm()};return D(p,o=>{o||(r.value="",v.value?.resetForm())}),D(r,o=>{m.value=H(o)}),(o,e)=>(V(),T(K,{modelValue:p.value,"onUpdate:modelValue":e[6]||(e[6]=i=>p.value=i),"max-width":"600px"},{default:s(()=>[t($,{title:"New project",color:"#2d2d2d"},{default:s(()=>[t(W,{modelValue:n(f),"onUpdate:modelValue":e[5]||(e[5]=i=>k(f)?f.value=i:null)},{default:s(()=>[t(L,null,{default:s(()=>[t(N,{modelValue:n(r),"onUpdate:modelValue":e[0]||(e[0]=i=>k(r)?r.value=i:null),class:"mb-4",variant:"outlined",density:"compact",label:"Name",rules:h,placeholder:"my-awesome-project",hint:"Name must be unique across all repositories connected to the same storage","persistent-hint":""},null,8,["modelValue"]),t(N,{modelValue:n(m),"onUpdate:modelValue":e[1]||(e[1]=i=>k(m)?m.value=i:null),class:"mb-4",variant:"outlined",density:"compact",label:"Title",hint:"A human-readable title for your project","persistent-hint":""},null,8,["modelValue"]),t(B,{class:"my-6"}),d("div",oe,[d("h3",le,[t(w,{class:"mr-2"},{default:s(()=>[...e[7]||(e[7]=[l("mdi-lock-outline",-1)])]),_:1}),e[8]||(e[8]=l(" Unlock Method ",-1))]),e[9]||(e[9]=d("p",{class:"text-body-2 text-medium-emphasis mb-4"}," This method will be used to encrypt your project secrets and state data. You can add more unlock methods later. ",-1))]),t(n(A),{ref_key:"unlockMethodForm",ref:v,"show-type-selector":!0,"show-description":!1,"show-display-name":!1,"display-name-label":"Unlock Method Name","display-name-hint":"A friendly name for your unlock method","password-hint":"Password must be strong enough to resist offline attacks","default-display-name":"Default","default-description":"The initial unlock method configured when creating the project.","onUpdate:valid":e[2]||(e[2]=i=>y.value=i),"onUpdate:form":e[3]||(e[3]=i=>g.value=i)},null,512),t(Y,{type:"warning",density:"compact",class:"mt-4"},{default:s(()=>[...e[10]||(e[10]=[d("div",{class:"ml-2"},[d("strong",null,"Important:"),l(" Losing your unlock method will result in losing control over the created resources! ")],-1)])]),_:1})]),_:1}),t(q,null,{default:s(()=>[t(J),t(S,{onClick:e[4]||(e[4]=i=>p.value=!1)},{default:s(()=>[...e[11]||(e[11]=[l("Cancel",-1)])]),_:1}),t(S,{disabled:!n(u),loading:n(b).loadingCreateProject,onClick:M},{default:s(()=>[...e[12]||(e[12]=[l(" Create ",-1)])]),_:1},8,["disabled","loading"])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["modelValue"]))}}),re=""+new URL("hira-1.DuDDiA5P.png",import.meta.url).href,ie=globalThis.setInterval,de={class:"main-menu-container"},ue={class:"content-layout"},me={class:"project-list"},ce={class:"mascot-container"},pe={class:"catchphrase-text text-h6"},fe=F({__name:"index",props:{params:{}},setup(j){const p=_(),f=U(),y=se(),r=c(!1),m=["Let's orchestrate this beautifully!","State is everything!","No infrastructure left behind!","Visual first, code second!","Infrastructure should be as elegant as it is functional!","Time to sync the state!","Ready to deploy some magic?","Every good system starts with a solid foundation!","Building the future, one container at a time!","Kubernetes makes everything better... except debugging!","Your infrastructure deserves some love too!","Who needs sleep when you have perfectly orchestrated deployments?","Configuration drift is my arch-nemesis!","Monitoring dashboards are my happy place!","Clean architecture is the key to digital zen!","Infrastructure as art, code as poetry!","Scaling up? Scaling out? Let's scale with style!","Error 404: Downtime not found!","Highstate слабее ArgoCD и FluxCD, но в цирке не выступает!"],v=c(""),g=()=>{const b=Math.floor(Math.random()*m.length);return m[b]};v.value=g();let h;return Z(()=>{h=ie(()=>{v.value=g()},1e4)}),O(()=>{h&&clearInterval(h)}),(b,a)=>(V(),P(I,null,[d("div",de,[d("div",ue,[t($,{variant:"text",class:"project-card-inner"},{default:s(()=>[t(L,null,{default:s(()=>[t(Q,{class:"text-center text-uppercase text-bold"},{default:s(()=>[...a[3]||(a[3]=[l("Highstate Designer",-1)])]),_:1}),t(X,{class:"text-center"},{default:s(()=>[l(" v"+x(n(y).public.version)+" • Все зонды удалены ",1)]),_:1}),t(B,{class:"mt-4"}),t(ee,{variant:"flat",class:"main-menu-list"},{default:s(()=>[t(C,{class:"list-item list-button",onClick:a[0]||(a[0]=u=>n(f).openDataSettingsPanel())},{default:s(()=>[t(w,{class:"mr-2"},{default:s(()=>[...a[4]||(a[4]=[l("mdi-database-cog",-1)])]),_:1}),a[5]||(a[5]=l(" Data & Settings ",-1))]),_:1}),t(te,{class:"text-uppercase"},{default:s(()=>[...a[6]||(a[6]=[l("Projects",-1)])]),_:1}),d("div",me,[(V(!0),P(I,null,ae(n(p).projects,u=>(V(),T(C,{key:u.id,class:"list-item",onClick:M=>n(f).openProjectPanel(u.id)},{default:s(()=>[t(w,{class:"mr-2"},{default:s(()=>[...a[7]||(a[7]=[l("mdi-folder",-1)])]),_:1}),l(" "+x(u.meta.title),1)]),_:2},1032,["onClick"]))),128))]),t(C,{class:"list-item",onClick:a[1]||(a[1]=u=>r.value=!0)},{default:s(()=>[t(w,{class:"mr-2"},{default:s(()=>[...a[8]||(a[8]=[l("mdi-plus",-1)])]),_:1}),a[9]||(a[9]=l(" Create new project ",-1))]),_:1})]),_:1})]),_:1})]),_:1}),d("div",ce,[a[10]||(a[10]=d("img",{src:re,alt:"Hira Nakamura - Highstate Mascot",class:"mascot-image"},null,-1)),d("div",pe,'"'+x(n(v))+'"',1)])])]),t(n(ne),{visible:n(r),"onUpdate:visible":a[2]||(a[2]=u=>k(r)?r.value=u:null)},null,8,["visible"])],64))}}),ke=R(fe,[["__scopeId","data-v-01f1f778"]]);export{ke as default};
@@ -1 +0,0 @@
1
- import{C as y,H as V,F as w,t as C,D as j,n as D}from"#entry";import{w as _}from"./M3Z1JMP1.js";import{E as b,V as I,Y as k,D as e,aP as p,_ as t,W as i,at as A,$ as g,ao as K,a0 as $,aS as x}from"./-NXdyIEV.js";import{_ as B}from"./D9y446qR.js";import{E}from"./DyhJj7Ha.js";import{_ as v,I as f}from"./DKbLex6i.js";import{S as h}from"./C7Ij7g1p.js";import{D as z,a as T}from"./Bc-UhGEo.js";import{_ as U}from"./DSTHpVUV.js";import{_ as L}from"./DkZkynzL.js";import"./B69Z0Xk1.js";import"./CxoCegAs.js";import"./VQuDbHHR.js";import"./BKZ346WY.js";import"./B2Q2xBzH.js";import"./hvsd0Qgg.js";import"./u9IB9fko.js";import"./CZyQa1Zc.js";const W=b({__name:"ApiKeyRefChip",props:{item:{}},setup(n){const{projectStore:s}=y();return(l,u)=>(I(),k(e(E),{id:n.item.apiKeyId,meta:n.item.apiKeyMeta,"fallback-icon":"mdi-key","page-name":"settings.api-key-details","page-params":{projectId:e(s).projectId,apiKeyId:n.item.apiKeyId}},null,8,["id","meta","page-params"]))}}),oe=b({__name:"[versionId]",props:{params:{}},async setup(n){let s,l;const u=V(),P=w(),{projectStore:m}=y();m.initializing?([s,l]=p(()=>j(()=>m.initialized).toBe(!0)),await s,l(),m.addLibraryRoot()):([s,l]=p(()=>m.initialize1()),await s,l(),[s,l]=p(()=>m.initialize2()),await s,l());const a=([s,l]=p(()=>u.getVersion(n.params.versionId)),s=await s,l(),s);if(!a)throw C({statusCode:404,statusMessage:"Worker version not found"});const S=[{key:"versionId",label:"Version ID"},{key:"status",label:"Status"},{key:"digest",label:"Digest"},{key:"enabled",label:"Enabled"},{key:"apiKey",label:"API Key"},{key:"createdAt",label:"Created"},{key:"updatedAt",label:"Updated"}],o=P.forWorkerVersion(n.params.versionId);return o.load(),(c,r)=>(I(),k(e(T),null,{default:t(()=>[i(h,{meta:e(a).meta,"fallback-icon":"mdi-source-branch",title:e(a).meta.title||`Version ${e(a).id.slice(0,8)}`,description:e(a).meta.description},{actions:t(()=>[i(A,{variant:"outlined","prepend-icon":"mdi-console",onClick:r[0]||(r[0]=d=>("navigateTo"in c?c.navigateTo:e(D))({name:"worker-version-logs",params:{projectId:n.params.projectId,workerVersionId:n.params.versionId}}))},{default:t(()=>[...r[5]||(r[5]=[g(" View Logs ",-1)])]),_:1})]),_:1},8,["meta","title","description"]),i(e(z),{title:"Version Details",items:S},{"item.versionId":t(()=>[i(e(f),{value:e(a).id},null,8,["value"])]),"item.status":t(()=>[i(e(B),{status:e(a).status,"status-map":e(_)},null,8,["status","status-map"])]),"item.digest":t(()=>[i(e(f),{value:e(a).digest,"copy-full-text":"Copy full digest"},null,8,["value"])]),"item.enabled":t(()=>[i(K,{size:"small",color:e(a).enabled?"success":"secondary",class:"text-uppercase"},{default:t(()=>[g($(e(a).enabled?"Enabled":"Disabled"),1)]),_:1},8,["color"])]),"item.apiKey":t(()=>[i(e(W),{item:e(a)},null,8,["item"])]),"item.createdAt":t(()=>[i(e(v),{value:e(a).createdAt},null,8,["value"])]),"item.updatedAt":t(()=>[i(e(v),{value:e(a).updatedAt},null,8,["value"])]),_:1}),i(x,{elevation:0},{default:t(()=>[i(e(U),{title:"Panels",icon:"mdi-view-dashboard-outline",count:e(o).data.value.total},{default:t(()=>[i(e(L),{search:e(o).search.value,"onUpdate:search":r[1]||(r[1]=d=>e(o).search.value=d),"sort-by":e(o).sortBy.value,"onUpdate:sortBy":r[2]||(r[2]=d=>e(o).sortBy.value=d),page:e(o).page.value,"onUpdate:page":r[3]||(r[3]=d=>e(o).page.value=d),"items-per-page":e(o).itemsPerPage.value,"onUpdate:itemsPerPage":r[4]||(r[4]=d=>e(o).itemsPerPage.value=d),"project-id":n.params.projectId,data:e(o).data.value,loading:e(o).isLoading.value,"hide-header":""},null,8,["search","sort-by","page","items-per-page","project-id","data","loading"])]),_:1},8,["count"])]),_:1})]),_:1}))}});export{oe as default};
@@ -1 +0,0 @@
1
- import{b as J,n as Q,_ as A,r as X,E as F,c as ee,W as te,g as se,i as ne}from"./DyDuNLRY.js";import{Y as oe,Z as re}from"#entry";import{E as ae,d as ie,w as G,H as le,P as ce,V as f,Y as E,aH as de,a as W,D as r,_ as k,aZ as ue,W as h,at as U,Z as L,$ as x,a1 as V,ak as pe,aW as me,J as P,aa as j,aI as z,a2 as N,a0 as T,ao as ye,al as fe,ab as we,r as H,j as $}from"./-NXdyIEV.js";const M=J,O=Q;function I(e,t){let s=[];for(let n=0;n<Math.max(e.length,t.length);n++)s.push([e[n],t[n]]);return s}function B(...e){return e.reduce((t,s)=>new Set([...t,...s]),new Set)}function he(...e){return e.reduce((t,s)=>new Set(Array.from(t).filter(n=>s.has(n))))}const y={sec:1e3};y.min=60*y.sec;y.h=60*y.min;y.d=24*y.h;y.mo=30*y.d;y.y=365*y.mo;function ge(e){if(Number.isNaN(e))return"never";if(e>y.y*100)return"centuries";let t=[];for(let[s,n]of Object.entries(y).reverse()){if(e<n)continue;let c=Math.floor(e/n);t.push(`${c}${s}`),e-=c*n}return t.length>0?t.join(" "):"0 sec"}const u={};u[1]=new Set("0123456789");u["@"]=new Set("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");u.v=new Set("aeiouy");u.c=new Set("bcdfghjklmnpqrstvwxz");u.a=B(u.v,u.c);for(const e of"vca")u[e.toUpperCase()]=new Set(Array.from(u[e]).map(t=>t.toUpperCase()));u.l=B(u.a,u.A);u.n=B(u.l,u[1]);u["*"]=B(u.n,u["@"]);const ve={s:"cv",S:"Cv"};function ke(e,t){if(Array.isArray(e)||(e=Array.from(e)),t<0||t>=e.length)throw new Error("Out of bounds index access");return e[t]}function be(e,t){let s=M(t),n=[];for(const c of e){const l=BigInt(c);n.push(Number(s%l)),s/=l}return{values:n,entropyLeft:s}}function q(e){let t=0;for(let s=e;s;t++,s>>=1n);return t-1}function S(e,t){return ge(Number(e)/t*1e3)}function Ve(e){const t=[[1005,"too guessable"],[1000005,"very guessable"],[100000005,"somewhat guessable"],[10000000005,"safely unguessable"]];let s="very unguessable";for(const[n,c]of t)if(e<=BigInt(n)){s=c;break}return s}function Y(e){const s=3416.6666666666665/(2*(y.y/1e3)),c=(360+6*320)/6,l=.12,o=(l+l*.33)/60/1e3,b=c*o+s,w=v=>Number(e/BigInt(v))*b;return{score:Ve(e),guesses:{online_throttling:S(e,100/(y.h/1e3)),online:S(e,10),slow:S(e,1e4),fast:S(e,1e10)},costs:{luks:w(22779),filevault2:w(151300),macos:w(1019200),pbkdf2:w(3029200)}}}class Pe{constructor(t){t=t.split("").map(s=>ve[s]||s).join(""),this.chars=t.split(""),this.length=this.chars.length,this.sets=this.chars.map(s=>u[s]||new Set([s])),this.lengths=this.sets.map(s=>s.size),this.cardinality=this.sets.reduce((s,n)=>s*BigInt(n.size),1n),this.entropy=q(this.cardinality)}apply(t){if(this.cardinality>=2n**BigInt(8*t.length/2))throw new Error("Not enough entropy");const{entropyLeft:s,values:n}=be(this.lengths,t);return{password:I(this.sets,n).map(([l,d])=>ke(l,d)).join(""),entropyLeft:s}}inverse({password:t,entropyLeft:s}){const n=I(this.sets,t.split("")).map(([l,d])=>Array.from(l).indexOf(d)),c=I(this.sets,n).reduceRight((l,[d,o])=>l*BigInt(d.size)+BigInt(o),0n);return O(s*this.cardinality+c)}estimate(){return Y(this.cardinality)}}const _=e=>new Pe(e),C=[];for(let e=0;e<17;e++)for(let t=0;t<3;t++)for(let s=0;s<2;s++){const n=["cvccvc","cvccvc","cvccvc"];n[t]=s?"1cvcvc":"cvccv1";const c=n.join("-");let l;for(let d=0,o=0;d<c.length;d++){const g=c[d];["c","v"].includes(g)&&(o===e&&(l=c.slice(0,d)+g.toUpperCase()+c.slice(d+1)),o++)}if(!l)throw new Error("Cannot find uppercase syllable index");C.push(l)}const Ne=(()=>{const e=BigInt(C.length),t=_(C[0]).cardinality*e;return{length:20,cardinality:t,entropy:q(t),estimate:()=>Y(t),apply:s=>{let n=M(s);const c=Number(n%e);return _(C[c]).apply(O(n/e))},inverse(s){const c=s.password.split("").map(g=>{const b=Object.entries(u).filter(([w,v])=>["c","v","C","V","1"].includes(w)).map(([w,v])=>[w,he(v,new Set([g]))]).filter(([w,v])=>v.size>0);if(b.length>1)throw new Error("Too much possible values, cannot detect mask.");return b.length?b[0][0]:g}).join(""),l=C.indexOf(c);if(l<0)throw new Error("Unknown mask");const d=_(C[l]).inverse(s),o=M(d);return O(o*e+BigInt(l))}}})(),Ee={class:"ml-2"},Ce={key:0,class:"mt-1"},xe={key:1},Te={key:1,class:"mb-4"},Se={class:"d-flex justify-space-between align-center mb-2"},Be={class:"text-caption text-medium-emphasis mt-1"},Ue={key:0,class:"mt-2"},Ie={class:"text-caption text-medium-emphasis ml-4"},Ae=ae({__name:"UnlockMethodForm",props:{showTypeSelector:{type:Boolean,default:!0},showDescription:{type:Boolean,default:!0},showDisplayName:{type:Boolean,default:!0},initialType:{default:"password"},displayNameLabel:{default:"Display Name"},displayNameHint:{default:"A friendly name to identify this unlock method"},passwordHint:{default:"Password must be strong enough to resist offline attacks"},defaultDisplayName:{default:""},defaultDescription:{default:""}},emits:["update:valid","update:form"],setup(e,{expose:t,emit:s}){const n=e,c=s,l=H(!1),d=H(!1),o=ie({type:n.initialType,title:"",description:"",password:"",confirmPassword:""}),g=$(()=>n.showDisplayName?[a=>!!a||"Display name is required",a=>a&&a.length<=100||"Display name must be less than 100 characters"]:[]),b=[a=>!!a||"Password is required"],w=[a=>!!a||"Confirm password is required",a=>a===o.password||"Passwords do not match"],v=()=>{const a=Ne.apply(X(32)).password;o.password=a,o.confirmPassword=a,d.value=!0},m=$(()=>{if(!o.password)return null;const a=oe.zxcvbn(o.password),i={0:"very-weak",1:"weak",2:"fair",3:"strong",4:"very-strong"},p=Math.max(0,Math.min(4,a.score));return{score:a.score/4*100,level:i[p],estimatedCrackTime:a.crack_times_display.offline_slow_hashing_1e4_per_second||"unknown",recommendations:a.feedback.suggestions||[],warning:a.feedback.warning||void 0}}),R=a=>{switch(a){case"very-weak":return"error";case"weak":return"warning";case"fair":return"info";case"strong":return"success";case"very-strong":return"success";default:return"info"}},D=a=>{switch(a){case"password":return"mdi-key-variant";case"passkey":return"mdi-fingerprint";default:return"mdi-lock"}},Z=()=>{o.type=n.initialType,o.title=n.defaultDisplayName,o.description=n.defaultDescription,o.password="",o.confirmPassword="",d.value=!1};return G(l,a=>{c("update:valid",a)}),G(o,a=>{c("update:form",{...a})},{deep:!0}),le(()=>{o.title=n.defaultDisplayName,o.description=n.defaultDescription}),t({resetForm:Z,form:ce(o)}),(a,i)=>(f(),E(de,{modelValue:r(l),"onUpdate:modelValue":i[6]||(i[6]=p=>W(l)?l.value=p:null)},{default:k(()=>[e.showTypeSelector?(f(),E(ue,{key:0,modelValue:r(o).type,"onUpdate:modelValue":i[0]||(i[0]=p=>r(o).type=p),mandatory:"",variant:"outlined",density:"compact",divided:"",class:"w-100 mb-6"},{default:k(()=>[h(U,{value:"password",class:"flex-grow-1"},{default:k(()=>[h(L,{icon:D("password"),class:"mr-2"},null,8,["icon"]),i[7]||(i[7]=x(" Password ",-1))]),_:1}),h(U,{value:"passkey",class:"flex-grow-1"},{default:k(()=>[h(L,{icon:D("passkey"),class:"mr-2"},null,8,["icon"]),i[8]||(i[8]=x(" Passkey ",-1))]),_:1})]),_:1},8,["modelValue"])):V("",!0),e.showDisplayName?(f(),E(pe,{key:1,modelValue:r(o).title,"onUpdate:modelValue":i[1]||(i[1]=p=>r(o).title=p),class:"mb-4",variant:"outlined",density:"compact",label:e.displayNameLabel,rules:r(g),placeholder:"My unlock method",hint:e.displayNameHint,"persistent-hint":""},null,8,["modelValue","label","rules","hint"])):V("",!0),e.showDescription?(f(),E(me,{key:2,modelValue:r(o).description,"onUpdate:modelValue":i[2]||(i[2]=p=>r(o).description=p),class:"mb-4",variant:"outlined",density:"compact",label:"Description",placeholder:"Optional description for this unlock method",rows:"2","auto-grow":"","hide-details":""},null,8,["modelValue"])):V("",!0),r(o).type==="password"?(f(),P(j,{key:3},[h(r(A),{modelValue:r(o).password,"onUpdate:modelValue":i[3]||(i[3]=p=>r(o).password=p),visible:r(d),"onUpdate:visible":i[4]||(i[4]=p=>W(d)?d.value=p:null),class:"mb-4",label:"Password",rules:b,hint:e.passwordHint,"persistent-hint":""},null,8,["modelValue","visible","hint"]),h(U,{type:"button",class:"mb-4",variant:"tonal","prepend-icon":"mdi-auto-fix",onClick:v},{default:k(()=>[...i[9]||(i[9]=[x(" Generate Secure Password ",-1)])]),_:1}),h(r(A),{modelValue:r(o).confirmPassword,"onUpdate:modelValue":i[5]||(i[5]=p=>r(o).confirmPassword=p),class:"mb-4",label:"Confirm Password",rules:w},null,8,["modelValue"]),r(m)&&r(m).score<40?(f(),E(z,{key:0,type:r(m).score<20?"error":"warning",density:"compact",class:"mb-4"},{default:k(()=>[N("div",Ee,[N("strong",null,T(r(m).score<20?"Very Weak":"Weak")+" Password:",1),r(m).warning?(f(),P("div",Ce,T(r(m).warning),1)):(f(),P("div",xe," This password may be vulnerable to offline attacks. Consider using a stronger password. "))])]),_:1},8,["type"])):V("",!0),r(m)?(f(),P("div",Te,[N("div",Se,[i[10]||(i[10]=N("span",{class:"text-caption"},"Password Strength",-1)),h(ye,{color:R(r(m).level),size:"small",variant:"flat"},{default:k(()=>[x(T(r(m).level.replace("-"," ").toUpperCase()),1)]),_:1},8,["color"])]),h(fe,{"model-value":r(m).score,color:R(r(m).level),height:"6",rounded:""},null,8,["model-value","color"]),N("div",Be," Estimated crack time: "+T(r(m).estimatedCrackTime),1),r(m).recommendations.length>0?(f(),P("div",Ue,[i[11]||(i[11]=N("div",{class:"text-caption font-weight-medium mb-1"},"Suggestions:",-1)),N("ul",Ie,[(f(!0),P(j,null,we(r(m).recommendations,p=>(f(),P("li",{key:p},T(p),1))),128))])])):V("",!0)])):V("",!0)],64)):r(o).type==="passkey"?(f(),E(z,{key:4,type:"info",density:"compact",class:"mb-4"},{default:k(()=>[...i[12]||(i[12]=[x(" You'll be prompted to create a passkey using your device's biometric authentication or security key when you click Create. ",-1)])]),_:1})):V("",!0)]),_:1},8,["modelValue"]))}});async function K(e,t){const s=await se(),n=await t.encrypt(s),c=re(n),l=await ne(s);return{meta:e,encryptedIdentity:c,recipient:l}}async function _e(e,t){const s=new F;return s.setPassphrase(e),{type:"password",...await K(t,s)}}async function Me(e){if(!e.title)throw new Error("Display name is required for passkey unlock method");const t=await ee({keyName:e.title}),s=new F;return s.addRecipient(new te({identity:t})),{type:"passkey",...await K(e,s),passkeyIdentity:t}}function Ge(e){const t={title:e.title,description:e.description};if(e.type==="password")return _e(e.password,t);if(e.type==="passkey")return Me(t);throw new Error(`Unsupported unlock method type: ${e.type}`)}export{Ae as _,Ge as c};