@omniviewdev/runtime 0.11.0 → 0.13.0
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.
- package/dist/api.cjs +1 -1
- package/dist/api.js +1 -1
- package/dist/bindings/events/index.d.ts +4 -0
- package/dist/bindings/github.com/omniviewdev/omniview/backend/pkg/plugin/resource/index.d.ts +1 -1
- package/dist/bindings/github.com/omniviewdev/omniview/backend/pkg/plugin/resource/models.d.ts +20 -0
- package/dist/bindings/github.com/omniviewdev/omniview/backend/pkg/plugin/resource/servicewrapper.d.ts +2 -0
- package/dist/bindings/github.com/omniviewdev/plugin-sdk/pkg/resource/v2/index.d.ts +2 -2
- package/dist/bindings/github.com/omniviewdev/plugin-sdk/pkg/resource/v2/models.d.ts +47 -1
- package/dist/connection/metadata.d.ts +42 -0
- package/dist/hooks/connection/index.d.ts +2 -0
- package/dist/hooks/connection/useConnectionMetadata.d.ts +16 -0
- package/dist/hooks/resource/useEventBatcher.d.ts +4 -3
- package/dist/hooks/resource/useResources.d.ts +6 -4
- package/dist/index.cjs +4 -4
- package/dist/index.js +2488 -2262
- package/dist/resource/v2/client.d.ts +3 -0
- package/dist/{servicewrapper-Bda7yi8z.js → servicewrapper-BhxHs5DR.js} +283 -279
- package/dist/servicewrapper-CNtZecKV.cjs +1 -0
- package/package.json +3 -3
- package/dist/servicewrapper-BOM6A8IG.cjs +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
2
|
-
`);return{message:e||(t.title!=="Error"?t.title:"Operation failed"),status:"error",details:r,actions:t.actions?.map(Yt)}}function xe(t,e,r){if(qe(e))return;const n=ae(e);t(Zt(n,r))}function ne(t,e){return r=>{if(qe(r))return;const n=ae(r);t(Zt(n,n.title!=="Error"?n.title:e))}}function kn(t){const e=W.c(2);let r;return e[0]!==t?(r=N.jsx(Pn,{...t},t.pluginId),e[0]=t,e[1]=r):r=e[1],r}function Pn(t){const e=W.c(40),{children:r,pluginId:n,headless:s}=t,l=s===void 0?!1:s;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o={},e[0]=o):o=e[0];const[u,i]=C.useState(o);let a;e[1]===Symbol.for("react.memo_cache_sentinel")?(a=new Ot.PluginMeta,e[1]=a):a=e[1];const[f,c]=C.useState(a),[d,h]=C.useState(!1),[y,g]=C.useState(null),p=C.useRef(0),m=C.useRef(0);console.debug("[PluginContextProvider] render",{pluginId:n,metaLoaded:d,metaError:!!y});let S;e[2]!==n?(S=()=>{if(n===void 0||n==="")return;const O=p.current=p.current+1;console.debug(`[PluginContextProvider] fetching settings for "${n}"`),A.PluginValues(n).then(k=>{O===p.current&&(console.debug(`[PluginContextProvider] settings loaded for "${n}"`,Object.keys(k)),i(k))}).catch(k=>{if(O!==p.current)return;const w=ae(k);console.error(`[PluginContextProvider] error fetching settings for "${n}":`,w.detail)})},e[2]=n,e[3]=S):S=e[3];const v=S;let E;e[4]!==n?(E=()=>{if(n===void 0||n===""){console.debug("[PluginContextProvider] skipping meta fetch — empty pluginId");return}const O=m.current=m.current+1;console.debug(`[PluginContextProvider] fetching meta for "${n}"`),A.GetPluginMeta(n).then(k=>{O===m.current&&(console.debug(`[PluginContextProvider] meta loaded for "${n}"`,{name:k?.name,version:k?.version}),c(k),h(!0))}).catch(k=>{if(O!==m.current)return;const w=ae(k);console.error(`[PluginContextProvider] error fetching meta for "${n}":`,w.detail),g(w.detail),h(!1)})},e[4]=n,e[5]=E):E=e[5];const b=E;let x,I;e[6]!==b||e[7]!==v||e[8]!==d||e[9]!==n?(x=()=>{if(d)return;const O=()=>{g(null),v(),b()},k=[G.On("plugin/init_complete",O),G.On("plugin/dev_install_complete",w=>{w.data?.id===n&&O()}),G.On("plugin/inventory_changed",O)];return()=>{for(const w of k)w()}},I=[n,d,v,b],e[6]=b,e[7]=v,e[8]=d,e[9]=n,e[10]=x,e[11]=I):(x=e[10],I=e[11]),C.useEffect(x,I);let _,R;if(e[12]!==b||e[13]!==v||e[14]!==n?(_=()=>(console.debug(`[PluginContextProvider] useEffect — pluginId changed to "${n}"`),v(),b(),()=>{p.current=p.current+1,m.current=m.current+1}),R=[n,v,b],e[12]=b,e[13]=v,e[14]=n,e[15]=_,e[16]=R):(_=e[15],R=e[16]),C.useEffect(_,R),y){if(l)throw new Error(y);let O,k,w;e[17]===Symbol.for("react.memo_cache_sentinel")?(w={display:"flex",flex:1,alignItems:"center",justifyContent:"center",padding:24},O={maxWidth:480,width:"100%",border:"1px solid #7F1D1D",borderRadius:8,backgroundColor:"#1C1917",padding:20,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},k={display:"flex",alignItems:"center",gap:8,marginBottom:12},e[17]=O,e[18]=k,e[19]=w):(O=e[17],k=e[18],w=e[19]);let L,M;e[20]===Symbol.for("react.memo_cache_sentinel")?(L=N.jsxs("div",{style:k,children:[N.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"#EF4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[N.jsx("circle",{cx:"12",cy:"12",r:"10"}),N.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),N.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),N.jsx("span",{style:{fontSize:14,fontWeight:600,color:"#FECACA"},children:"Plugin failed to load"})]}),M={fontSize:13,color:"#A1A1AA",margin:"0 0 16px"},e[20]=L,e[21]=M):(L=e[20],M=e[21]);let j;e[22]!==y?(j=N.jsx("p",{style:M,children:y}),e[22]=y,e[23]=j):j=e[23];let P;e[24]!==b?(P=()=>{g(null),b()},e[24]=b,e[25]=P):P=e[25];let q;e[26]===Symbol.for("react.memo_cache_sentinel")?(q={background:"transparent",color:"#F87171",border:"1px solid #7F1D1D",borderRadius:6,padding:"6px 14px",fontSize:13,fontWeight:500,cursor:"pointer"},e[26]=q):q=e[26];let $;e[27]!==P?($=N.jsx("button",{onClick:P,style:q,children:"Retry"}),e[27]=P,e[28]=$):$=e[28];let z;return e[29]!==j||e[30]!==$?(z=N.jsx("div",{style:w,children:N.jsxs("div",{style:O,children:[L,j,$]})}),e[29]=j,e[30]=$,e[31]=z):z=e[31],z}if(!d){if(l)return null;let O;return e[32]===Symbol.for("react.memo_cache_sentinel")?(O=N.jsxs("div",{style:{display:"flex",flex:1,alignItems:"center",justifyContent:"center"},children:[N.jsx("div",{style:{width:24,height:24,border:"2px solid #3F3F46",borderTopColor:"#A1A1AA",borderRadius:"50%",animation:"plugin-spin 0.8s linear infinite"}}),N.jsx("style",{children:"@keyframes plugin-spin { to { transform: rotate(360deg); } }"})]}),e[32]=O):O=e[32],O}let D;e[33]!==f||e[34]!==n||e[35]!==u?(D={pluginId:n,settings:u,meta:f},e[33]=f,e[34]=n,e[35]=u,e[36]=D):D=e[36];let F;return e[37]!==r||e[38]!==D?(F=N.jsx(He.Provider,{value:D,children:r}),e[37]=r,e[38]=D,e[39]=F):F=e[39],F}function Ve(){const t=C.useContext(He);if(!t)throw new Error("usePluginContext must be used within a PluginContextProvider");return t}function An(){return Ve().settings}const kt=C.createContext(void 0),Ln=t=>{const e=W.c(10),{children:r}=t;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n={},e[0]=n):n=e[0];const[s,l]=C.useState(n),o=C.useRef(0);let u;e[1]===Symbol.for("react.memo_cache_sentinel")?(u=()=>{const g=o.current+1;o.current=g,A.Values().then(p=>{g===o.current&&l(p)}).catch(p=>{g===o.current&&console.error("Error fetching settings:",p)})},e[1]=u):u=e[1];const i=u;let a,f;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=()=>{const g=G.On("settings/changed",()=>i());return i(),()=>{o.current=o.current+1,g()}},f=[i],e[2]=a,e[3]=f):(a=e[2],f=e[3]),C.useEffect(a,f);let c;e[4]===Symbol.for("react.memo_cache_sentinel")?(c=()=>{i()},e[4]=c):c=e[4];const d=c;let h;e[5]!==s?(h={settings:s,reload:d},e[5]=s,e[6]=h):h=e[6];let y;return e[7]!==r||e[8]!==h?(y=N.jsx(kt.Provider,{value:h,children:r}),e[7]=r,e[8]=h,e[9]=y):y=e[9],y},Xt={height:32,focused:0,tabs:[],createTab:()=>{},createTabs:()=>{},updateTab:()=>{},focusTab:()=>{},reorderTab:()=>{},closeTab:()=>{},closeTabs:()=>{},resizeDrawer:()=>{},closeDrawer:()=>{},fullscreenDrawer:()=>{}},en=C.createContext(Xt),tn=C.createContext(void 0),nn=C.createContext(void 0),Pt=C.createContext(void 0),Fn=3e4,qn=t=>{const e=W.c(12),{children:r}=t;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];const[s,l]=C.useState(n);let o;e[1]===Symbol.for("react.memo_cache_sentinel")?(o=m=>{l(S=>[m,...S])},e[1]=o):o=e[1];const u=o;let i;e[2]===Symbol.for("react.memo_cache_sentinel")?(i=(m,S)=>{l(v=>v.map(E=>E.id===m?{...E,...S}:E))},e[2]=i):i=e[2];const a=i;let f;e[3]===Symbol.for("react.memo_cache_sentinel")?(f=m=>{l(S=>S.filter(v=>v.id!==m))},e[3]=f):f=e[3];const c=f;let d,h;e[4]!==s?(d=()=>{const m=[];for(const S of s)if(S.status!=="running"){const v=Date.now()-(S.completedAt??S.startedAt),E=Math.max(0,Fn-v);m.push(setTimeout(()=>c(S.id),E))}return()=>m.forEach(clearTimeout)},h=[s,c],e[4]=s,e[5]=d,e[6]=h):(d=e[5],h=e[6]),C.useEffect(d,h);let y;e[7]!==s?(y={operations:s,addOperation:u,updateOperation:a,removeOperation:c},e[7]=s,e[8]=y):y=e[8];const g=y;let p;return e[9]!==r||e[10]!==g?(p=N.jsx(Pt.Provider,{value:g,children:r}),e[9]=r,e[10]=g,e[11]=p):p=e[11],p},Ye=C.createContext(null),Mn=t=>{const e=W.c(3),{actions:r,children:n}=t;let s;return e[0]!==r||e[1]!==n?(s=N.jsx(Ye.Provider,{value:r,children:n}),e[0]=r,e[1]=n,e[2]=s):s=e[2],s};function jn(){const t=C.useContext(Ye);if(!t)throw new Error("useWindowActions must be used inside a workspace window (WindowActionsProvider)");return t}var wt=function(t,e){return wt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[s]=n[s])},wt(t,e)};function $n(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");wt(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var yt="Invariant Violation",Bt=Object.setPrototypeOf,Wn=Bt===void 0?function(t,e){return t.__proto__=e,t}:Bt,Un=(function(t){$n(e,t);function e(r){r===void 0&&(r=yt);var n=t.call(this,typeof r=="number"?yt+": "+r+" (see https://github.com/apollographql/invariant-packages)":r)||this;return n.framesToPop=1,n.name=yt,Wn(n,e.prototype),n}return e})(Error);function Ct(t,e){if(!t)throw new Un(e)}var sn=["debug","log","warn","error","silent"],Qn=sn.indexOf("log");function Ge(t){return function(){if(sn.indexOf(t)>=Qn){var e=console[t]||console.log;return e.apply(console,arguments)}}}(function(t){t.debug=Ge("debug"),t.log=Ge("log"),t.warn=Ge("warn"),t.error=Ge("error")})(Ct||(Ct={}));const rn=C.createContext(void 0),on=()=>C.useContext(rn);function At(t){const e=W.c(6),r=on(),n=C.useRef(null);let s;e[0]!==t||e[1]!==r?(s=i=>{let a=r?.getExtensionPoint(t),f=a?.subscribe(i);const c=r?.subscribe(()=>{const d=r.getExtensionPoint(t);d!==a&&(f?.(),a=d,f=a?.subscribe(i)),i()});return()=>{f?.(),c?.()}},e[0]=t,e[1]=r,e[2]=s):s=e[2];const l=s;let o;e[3]!==t||e[4]!==r?(o=()=>{const i=r?.getExtensionPoint(t),a=i?.version??-1,f=n.current;if(f&&f.store===i&&f.version===a)return f;const c={store:i,version:a,contributions:i?.listAll()??[]};return n.current=c,c},e[3]=t,e[4]=r,e[5]=o):o=e[5];const u=o;return C.useSyncExternalStore(l,u,u)}function Kn(t){return At(t).store}const Gn=t=>{const e=W.c(5),{registry:r,children:n}=t;let s;e[0]!==r?(s=()=>r,e[0]=r,e[1]=s):s=e[1];const[l]=C.useState(s);Ct(l===r,"You can't change the extension registry after it has been rendered");let o;return e[2]!==n||e[3]!==l?(o=N.jsx(rn.Provider,{value:l,children:n}),e[2]=n,e[3]=l,e[4]=o):o=e[4],o},mt=t=>{if(!t||typeof t!="string")throw new TypeError(`extensionName is required to be a string and can't be: "${t}" (${typeof t})`);return t.trim()};class cn{id;mode;_pluginId;_version=0;_contributions=new Map;_lookupCache=new Map;_matcher;_select;_listeners=new Set;constructor(e){this.id=e.id,this.mode=e.mode??"multiple",this._pluginId=e.pluginId,this._matcher=e.matcher,this._select=e.select}get pluginId(){return this._pluginId}get version(){return this._version}register(e){if(this._contributions.has(e.id))throw new Error(`Contribution with id "${e.id}" already exists in extension point "${this.id}"`);this._contributions.set(e.id,e),this._invalidateCache(),this._notify()}unregister(e){this._contributions.delete(e)&&(this._invalidateCache(),this._notify())}provide(e){return this._getMatched(e).map(n=>n.value)}list(e){return this._getMatched(e)}listAll(){return Array.from(this._contributions.values())}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}removeContributionsByPlugin(e){let r=!1;for(const[n,s]of this._contributions)s.plugin===e&&(this._contributions.delete(n),r=!0);r&&(this._invalidateCache(),this._notify())}_getMatched(e){const r=this._getCacheKey(e);if(r!=null){const s=this._lookupCache.get(r);if(s){const l=s.map(o=>this._contributions.get(o)).filter(o=>o!=null);return this._applyMode(l,e)}}let n=this._sortDeterministic(Array.from(this._contributions.values()));return this._matcher&&e!==void 0&&(n=n.filter(s=>this._matcher(s,e))),r!=null&&this._lookupCache.set(r,n.map(s=>s.id)),this._applyMode(n,e)}_applyMode(e,r){if(this.mode==="single"){if(this._select){const n=this._select(e,r);return n?[n]:[]}return e.length>0?[e[0]]:[]}return e}_sortDeterministic(e){return[...e].sort((r,n)=>{const s=r.plugin.localeCompare(n.plugin);return s!==0?s:r.id.localeCompare(n.id)})}_getCacheKey(e){if(e!=null&&typeof e=="object"&&"getCacheKey"in e){const r=e.getCacheKey;if(typeof r=="function")return r()}}_invalidateCache(){this._lookupCache.clear()}_notify(){this._version++;for(const e of this._listeners)e()}}class Bn{_stores=new Map;_storeUnsubs=new Map;_listeners=new Set;constructor(e){if(e?.initialStores)for(const r of e.initialStores)this.addExtensionPoint(r)}addExtensionPoint(e){const r=mt(e.id);if(this._stores.has(r)){const s=this._stores.get(r);throw new Error(`Extension point "${r}" already exists (owned by "${s.pluginId??"unknown"}")`)}const n=new cn({...e,id:r});this._stores.set(r,n),this._storeUnsubs.set(r,n.subscribe(()=>this._notify())),this._notify()}getExtensionPoint(e){const r=mt(e);return this._stores.get(r)}hasExtensionPoint(e){const r=mt(e);return this._stores.has(r)}listExtensionPoints(){return Array.from(this._stores.keys())}removeExtensionPoints(e){let r=!1;for(const[n,s]of this._stores)s.pluginId===e&&(this._storeUnsubs.get(n)?.(),this._storeUnsubs.delete(n),this._stores.delete(n),r=!0);r&&this._notify()}removeContributions(e){for(const r of this._stores.values())r.removeContributionsByPlugin(e);this._notify()}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}_notify(){for(const e of this._listeners)e()}}const ce={Panel:{position:"fixed",right:"var(--ov-space-3)",bottom:36,zIndex:"calc(var(--ov-z-toast, 9999) + 1)",width:"min(480px, calc(100vw - 24px))",minWidth:0,maxHeight:"min(560px, calc(100dvh - 64px))",display:"flex",flexDirection:"column",overflow:"hidden",padding:0},Header:{flex:"none",gap:"var(--ov-space-2)",paddingInline:"var(--ov-space-3)",background:"var(--ov-color-bg-surface-raised)",borderBottom:"1px solid var(--ov-color-border-muted)"},HeaderActions:{marginLeft:"auto"},List:{minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},Notice:{borderTop:"1px solid var(--ov-color-border-muted)"},Row:{display:"flex",alignItems:"center",gap:"var(--ov-space-1)",padding:"var(--ov-space-2) var(--ov-space-2) var(--ov-space-2) var(--ov-space-3)"},ErrorIcon:{flex:"none",color:"var(--ov-color-danger)"},Message:{flex:1,minWidth:0,justifyContent:"flex-start",textAlign:"left"},MessageText:{minWidth:0,overflowWrap:"anywhere"},Details:{padding:"0 var(--ov-space-3) var(--ov-space-3) 36px"},Code:{display:"block",margin:"var(--ov-space-2) 0",padding:"var(--ov-space-3)",maxHeight:240,overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.5,userSelect:"text"},Actions:{display:"flex",flexWrap:"wrap",gap:"var(--ov-space-2)"},CopyError:{margin:0,padding:"var(--ov-space-3)",borderTop:"1px solid var(--ov-color-border-muted)"}},an=C.createContext(void 0),zn={default:"info",info:"info",success:"success",warning:"warning",error:"danger"},Jn=({children:t})=>{const{toast:e}=J.useToast(),[r,n]=C.useState([]),[s,l]=C.useState([]),[o,u]=C.useState(!1),[i,a]=C.useState(),[f,c]=C.useState(""),d=C.useRef(0),h=C.useRef(null);C.useEffect(()=>{if(!o)return;const p=document.activeElement;h.current?.focus();const m=S=>{S.key==="Escape"&&(S.stopPropagation(),u(!1))};return document.addEventListener("keydown",m),()=>{document.removeEventListener("keydown",m),p instanceof HTMLElement&&p.isConnected&&p.focus()}},[o]);const y=p=>{n(m=>[...m,p])},g=(p,m,S)=>{const v=typeof p=="object";let E="",b="info",x,I=5e3,_;if(v){if(E=p.message,p.showOnce){if(r.includes(E))return;y(E)}b=p.status,x=p.details,I=p.autoHideDuration??5e3,_=p.actions}else E=p,b=m,x=S;let R;if(b==="error"){const D={id:++d.current,message:E,details:x,created:new Date().toISOString(),actions:_};l(F=>[...F,D].slice(-20)),R={label:"Details",onClick:()=>{a(D.id),u(!0)}}}e(b==="error"?E:x??E,{severity:zn[b]??"info",title:b!=="error"&&x?E:void 0,duration:I,action:R??_?.[0]})};return N.jsxs(an.Provider,{value:{showSnackbar:g,openNotifications:()=>{u(!0)},notificationCount:s.length},children:[t,o&&N.jsxs(J.Card,{ref:h,style:ce.Panel,size:"sm",variant:"outline",surface:"overlay",elevation:3,"aria-label":"Notifications",tabIndex:-1,children:[N.jsxs(J.Toolbar,{size:"sm",style:ce.Header,children:[N.jsx(J.Text,{size:"sm",weight:"semibold",children:"Notifications"}),N.jsx(J.Text,{size:"xs",tone:"muted",children:s.length}),N.jsxs(J.Toolbar.Group,{style:ce.HeaderActions,children:[N.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":"Clear history",title:"Clear history",disabled:s.length===0,onClick:()=>{l([]),a(void 0),c("")},children:N.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:N.jsx("path",{d:"m3 3 6 6m0-6L3 9M13 6h8M3 14h18M3 20h18"})})}),N.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":"Close notifications",title:"Close notifications",onClick:()=>{u(!1)},children:N.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:N.jsx("path",{d:"m6 9 6 6 6-6"})})})]})]}),N.jsxs("div",{style:ce.List,children:[s.length===0&&N.jsx(J.EmptyState,{size:"sm",title:"No recent errors",description:"Error details will appear here."}),s.slice().reverse().map(p=>{const m=i===p.id;return N.jsxs("div",{style:ce.Notice,children:[N.jsxs("div",{style:ce.Row,children:[N.jsxs("svg",{style:ce.ErrorIcon,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-label":"Error",role:"img",children:[N.jsx("circle",{cx:"12",cy:"12",r:"9"}),N.jsx("path",{d:"m9 9 6 6m0-6-6 6"})]}),N.jsx(J.Button,{size:"sm",variant:"ghost",style:ce.Message,"aria-expanded":m,"aria-controls":`notification-${p.id}`,title:p.message,onClick:()=>{a(m?void 0:p.id),c("")},children:N.jsx(J.Text,{size:"sm",style:ce.MessageText,truncate:!m,children:p.message})}),N.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":m?"Collapse details":"Expand details",title:m?"Collapse details":"Expand details","aria-expanded":m,"aria-controls":`notification-${p.id}`,onClick:()=>{a(m?void 0:p.id),c("")},children:N.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:N.jsx("path",{d:m?"m6 15 6-6 6 6":"m6 9 6 6 6-6"})})}),N.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":`Dismiss ${p.message}`,title:"Dismiss notification",onClick:()=>{l(S=>S.filter(v=>v.id!==p.id)),m&&(a(void 0),c(""))},children:N.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:N.jsx("path",{d:"m6 6 12 12m0-12L6 18"})})})]}),N.jsx("div",{id:`notification-${p.id}`,hidden:!m,style:ce.Details,children:m&&N.jsxs(N.Fragment,{children:[N.jsx(J.Text,{size:"xs",tone:"muted",children:N.jsx("time",{dateTime:p.created,children:new Date(p.created).toLocaleString()})}),N.jsx(J.Code,{size:"sm",style:ce.Code,children:p.details?.length?p.details:p.message}),N.jsxs("div",{style:ce.Actions,children:[N.jsx(J.Button,{size:"sm",variant:"ghost",onClick:async()=>{c("");try{await navigator.clipboard.writeText(`${p.message}
|
|
3
|
-
${
|
|
4
|
-
${p.details??""}`)}catch{c("Copy failed. Select the diagnostic text and copy it manually.")}},children:"Copy details"}),p.actions?.map((S,v)=>N.jsx(J.Button,{size:"sm",variant:"outline",onClick:S.onClick,children:S.label},`${S.label}-${v}`))]})]})})]},p.id)})]}),f&&N.jsx(J.Text,{as:"p",size:"sm",role:"status",style:ce.CopyError,children:f})]})]})},de=()=>{const t=C.useContext(an);if(t===void 0)throw new Error("useCustomSnackbar must be used within a CustomSnackbarProvider");return t},me={all:t=>[t,"resource-v2"],scope:(t,e)=>[t,"resource-v2","target",e],list:(t,e)=>[t,"resource-v2","enumerate",e],nativeQuery:(t,e)=>[t,"resource-v2","native-query",e],resource:(t,e)=>[t,"resource-v2","get",e]};function B(t){const r=C.useContext(He)?.pluginId??t;if(!r)throw new Error("pluginID must be provided either via PluginContext or as an explicit parameter");return r}const ue=new Map,Pe=new Map;let vt=0,ke=[],Lt=0;const ln={phase:"checking"};function Ee(t,e){const r=JSON.stringify([t,e]);let n=ue.get(r);return n||(n={pluginID:t,connectionID:e,key:r,snapshot:ln,listeners:new Set,users:0,version:0,generation:++Lt,starts:new Set},ue.set(r,n)),n}function Le(t,e){t.snapshot.phase==="connected"&&e.phase!=="connected"&&(t.generation=++Lt),t.snapshot=e;for(const r of t.listeners)r()}function be(t,e,r=!1){t.generation=++Lt,t.version++,r||(t.operation=void 0),Le(t,e)}function Hn(t){switch(t){case"CONNECTED":return"connected";case"DISCONNECTED":return"disconnected";case"PENDING":return"connecting";case"UNAUTHORIZED":return"unauthorized";case"FORBIDDEN":return"forbidden";case"NOT_FOUND":return"not-found";default:return"error"}}function Ft(t){const e=t?.trim();if(e)return e.startsWith("{")||e.startsWith("[")||e.length>512||/[\r\n]|\bgoroutine\b|\bat\s+\S+\s+\(.*:\d+:\d+\)/.test(e)?"The connection operation could not be completed.":e}function un(t,e){const r=Hn(t.status);return{phase:r,connection:e,message:Ft(t.error||t.details)||(r==="error"?"The connection is not ready.":void 0)}}function dn(t,e){const r=ae(t);return{phase:r.status===401?"unauthorized":r.status===403?"forbidden":r.status===404?"not-found":"error",connection:e,message:Ft(r.detail||r.title)}}function St(t,e){e=Ft(e)||"The plugin is unavailable.",Pe.set(t,e);for(const r of ue.values())r.pluginID===t&&be(r,{phase:"error",message:e,connection:r.snapshot.connection})}function zt(t){const e=Pe.delete(t);for(const r of ue.values())r.pluginID===t&&(!e&&r.snapshot.phase==="checking"&&r.operation?.kind==="check"||(be(r,{phase:"checking",connection:r.snapshot.connection}),r.users&&ye(r,"check").catch(()=>{})))}function Oe(){if(!(typeof document<"u"&&document.visibilityState==="hidden"))for(const t of ue.values())t.users&&!Pe.has(t.pluginID)&&ye(t,"check",!0).catch(()=>{})}function Vn(){ke.length||(ke=[G.On("connection/status",({data:t})=>{const e=ue.get(JSON.stringify([t.pluginID,t.connectionID]));!e||Pe.has(t.pluginID)||e.stop&&t.status!=="DISCONNECTED"||t.status!=="DISCONNECTED"&&e.starts.size&&e.operation?.kind!=="start"||be(e,un({status:t.status,error:"",details:""},e.snapshot.connection),t.status==="CONNECTED")}),G.On("plugin/crash",({data:t})=>St(t.pluginID,t.error||"The plugin stopped unexpectedly.")),G.On("plugin/crash_recovery_failed",({data:t})=>St(t.pluginID,t.error||"Plugin recovery failed.")),G.On("plugin/recovered",({data:t})=>zt(t.pluginID)),G.On("plugin/state_change",({data:t})=>{t.to==="Running"?zt(t.pluginID):St(t.pluginID,t.reason||`The plugin is ${t.to}.`)})],typeof window<"u"&&(window.addEventListener("focus",Oe),window.addEventListener("pageshow",Oe),ke.push(()=>{window.removeEventListener("focus",Oe),window.removeEventListener("pageshow",Oe)})),typeof document<"u"&&(document.addEventListener("visibilitychange",Oe),ke.push(()=>document.removeEventListener("visibilitychange",Oe))))}function _e(t){return ue.set(t.key,t),t.users++,vt++,Vn(),()=>{if(t.users--,vt--,t.users||(be(t,ln),ue.get(t.key)===t&&ue.delete(t.key)),!vt){for(const e of ke)e();ke=[],Pe.clear()}}}function ye(t,e,r=!1){if(t.stop)return Promise.reject(new Error("Connection is disconnecting. Wait for it to stop before connecting."));const n=Pe.get(t.pluginID);if(n)return Le(t,{phase:"error",message:n,connection:t.snapshot.connection}),Promise.reject(new Error(n));if(t.operation&&(e==="check"||t.operation.kind==="start"))return t.operation.promise;const s=++t.version;(!r||t.snapshot.phase!=="connected")&&Le(t,{phase:e==="start"?"connecting":"checking",connection:t.snapshot.connection}),e==="start"&&t.starts.add(s);const l=Promise.resolve().then(()=>{if(t.version!==s)throw new Error("Connection readiness changed before the operation began.");return e==="start"?A.StartConnection(t.pluginID,t.connectionID):A.CheckConnection(t.pluginID,t.connectionID)}).then(o=>(t.version===s&&Le(t,un(o,o.connection??t.snapshot.connection)),o),o=>{throw t.version===s&&Le(t,dn(o,t.snapshot.connection)),o}).finally(()=>{e==="start"&&t.starts.delete(s),t.operation?.version===s&&(t.operation=void 0)});return t.operation={kind:e,promise:l,version:s},l}function Ze(t,e){return{getSnapshot:()=>Ee(t,e).snapshot,subscribe:r=>{const n=Ee(t,e),s=n.users===0,l=_e(n);return n.listeners.add(r),s&&ye(n,"check").catch(()=>{}),()=>{n.listeners.delete(r),l()}},connect:async()=>{const r=Ee(t,e),n=_e(r);try{await ye(r,"start")}catch{}finally{n()}},retry:async()=>{const r=Ee(t,e),n=_e(r);try{await ye(r,"check")}catch{}finally{n()}}}}async function Me(t,e){const r=Ee(t,e),n=_e(r);try{try{await ye(r,"check",!0)}catch{}if(r.snapshot.phase!=="connected")throw new Error(r.snapshot.message||`Connection ${e} is ${r.snapshot.phase}. Connect before continuing.`)}finally{n()}}async function Yn(t,e,r){const n=Ee(t,e),s=_e(n);try{try{await ye(n,"check",!0)}catch{}if(n.snapshot.phase!=="connected")throw new Error(n.snapshot.message||`Connection ${e} is ${n.snapshot.phase}. Connect before continuing.`);const l=n.generation,o=await r();if(n.generation!==l||n.snapshot.phase!=="connected")throw new Error(`Connection ${e} changed while the operation was in progress. Retry after connecting.`);return o}finally{s()}}function fn(t,e){return ue.get(JSON.stringify([t,e]))?.generation}function It(t,e,r){const n=ue.get(JSON.stringify([t,e]));return r!==void 0&&n?.generation===r&&n.snapshot.phase==="connected"}async function Zn(t,e){const r=Ee(t,e),n=_e(r);try{return await ye(r,"start")}finally{n()}}function hn(t,e){const r=Ee(t,e);if(r.stop)return r.stop;const n=_e(r),s=Promise.resolve().then(()=>A.StopConnection(t,e)).then(l=>(be(r,{phase:"disconnected",connection:l}),l),l=>{throw be(r,dn(l,r.snapshot.connection)),l}).finally(()=>{r.stop=void 0,n()});return r.stop=s,be(r,{phase:"disconnected",message:"Disconnecting. Wait for the connection to stop before reconnecting.",connection:r.snapshot.connection}),s}function Jt(t,e,r=!1){const n=ue.get(JSON.stringify([t,e]));n&&(be(n,{phase:r?"not-found":"checking",connection:r?void 0:n.snapshot.connection}),!r&&n.users&&ye(n,"check").catch(()=>{}))}function Et(t){if(!t.applied)throw new Error("Connection profile was not applied");return t}const Xn=t=>{const e=W.c(89),{pluginID:r,connectionID:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r),u=T.useQueryClient(),{showSnackbar:i}=de();let a;e[0]!==n||e[1]!==o?(a=[o,"connection","detail",n],e[0]=n,e[1]=o,e[2]=a):a=e[2];const f=a;let c;e[3]!==o||e[4]!==u?(c=async()=>{await Promise.all([u.invalidateQueries({queryKey:[o,"connection"]}),u.invalidateQueries({queryKey:me.all(o)}),u.invalidateQueries({queryKey:[o,"resource-v2","editor-schemas"]})])},e[3]=o,e[4]=u,e[5]=c):c=e[5];const d=c;let h;e[6]!==n||e[7]!==d||e[8]!==o?(h=async()=>{Jt(o,n),await d()},e[6]=n,e[7]=d,e[8]=o,e[9]=h):h=e[9];const y=h;let g;e[10]!==n||e[11]!==o?(g=()=>Zn(o,n),e[10]=n,e[11]=o,e[12]=g):g=e[12];let p;e[13]!==i?(p=ne(i,"Failed to start connection"),e[13]=i,e[14]=p):p=e[14];let m;e[15]!==d||e[16]!==g||e[17]!==p?(m={mutationFn:g,onSuccess:d,onError:p},e[15]=d,e[16]=g,e[17]=p,e[18]=m):m=e[18];const{mutateAsync:S}=T.useMutation(m);let v;e[19]!==n||e[20]!==o?(v=()=>hn(o,n),e[19]=n,e[20]=o,e[21]=v):v=e[21];let E;e[22]!==i?(E=ne(i,"Failed to stop connection"),e[22]=i,e[23]=E):E=e[23];let b;e[24]!==d||e[25]!==v||e[26]!==E?(b={mutationFn:v,onSuccess:d,onError:E},e[24]=d,e[25]=v,e[26]=E,e[27]=b):b=e[27];const{mutateAsync:x}=T.useMutation(b);let I;e[28]!==o?(I=Re=>A.SaveConnectionProfile(o,Re).then(Et),e[28]=o,e[29]=I):I=e[29];let _,R;e[30]!==i?(_=()=>{i("Connection profile saved","success")},R=ne(i,"Failed to save connection profile"),e[30]=i,e[31]=_,e[32]=R):(_=e[31],R=e[32]);let D;e[33]!==y||e[34]!==I||e[35]!==_||e[36]!==R?(D={mutationFn:I,onSuccess:_,onError:R,onSettled:y},e[33]=y,e[34]=I,e[35]=_,e[36]=R,e[37]=D):D=e[37];const{mutateAsync:F}=T.useMutation(D);let O;e[38]!==n||e[39]!==o?(O=()=>A.ImportConnectionProfile(o,n).then(Et),e[38]=n,e[39]=o,e[40]=O):O=e[40];let k,w;e[41]!==i?(k=()=>{i("Connection profile imported","success")},w=ne(i,"Failed to import connection profile"),e[41]=i,e[42]=k,e[43]=w):(k=e[42],w=e[43]);let L;e[44]!==y||e[45]!==O||e[46]!==k||e[47]!==w?(L={mutationFn:O,onSuccess:k,onError:w,onSettled:y},e[44]=y,e[45]=O,e[46]=k,e[47]=w,e[48]=L):L=e[48];const{mutateAsync:M}=T.useMutation(L);let j;e[49]!==n||e[50]!==o?(j=()=>A.ResetConnectionProfile(o,n).then(Et),e[49]=n,e[50]=o,e[51]=j):j=e[51];let P,q;e[52]!==i?(P=()=>{i("Connection profile reset","success")},q=ne(i,"Failed to reset connection profile"),e[52]=i,e[53]=P,e[54]=q):(P=e[53],q=e[54]);let $;e[55]!==y||e[56]!==j||e[57]!==P||e[58]!==q?($={mutationFn:j,onSuccess:P,onError:q,onSettled:y},e[55]=y,e[56]=j,e[57]=P,e[58]=q,e[59]=$):$=e[59];const{mutateAsync:z}=T.useMutation($);let K;e[60]!==n||e[61]!==o?(K=()=>A.RemoveConnection(o,n),e[60]=n,e[61]=o,e[62]=K):K=e[62];let U;e[63]!==n||e[64]!==o||e[65]!==i?(U=()=>{Jt(o,n,!0),i("Connection disabled","success")},e[63]=n,e[64]=o,e[65]=i,e[66]=U):U=e[66];let Y;e[67]!==i?(Y=ne(i,"Failed to disable connection"),e[67]=i,e[68]=Y):Y=e[68];let H;e[69]!==d||e[70]!==K||e[71]!==U||e[72]!==Y?(H={mutationFn:K,onSuccess:U,onError:Y,onSettled:d},e[69]=d,e[70]=K,e[71]=U,e[72]=Y,e[73]=H):H=e[73];const{mutateAsync:ee}=T.useMutation(H);let re;e[74]!==n||e[75]!==o?(re=()=>A.GetConnection(o,n),e[74]=n,e[75]=o,e[76]=re):re=e[76];const oe=l&&!!n;let pe;e[77]!==f||e[78]!==re||e[79]!==oe?(pe={queryKey:f,queryFn:re,enabled:oe},e[77]=f,e[78]=re,e[79]=oe,e[80]=pe):pe=e[80];const he=T.useQuery(pe);let te;return e[81]!==he||e[82]!==M||e[83]!==ee||e[84]!==z||e[85]!==F||e[86]!==S||e[87]!==x?(te={connection:he,startConnection:S,stopConnection:x,saveConnectionProfile:F,importConnectionProfile:M,resetConnectionProfile:z,removeConnection:ee},e[81]=he,e[82]=M,e[83]=ee,e[84]=z,e[85]=F,e[86]=S,e[87]=x,e[88]=te):te=e[88],te},pn=t=>[t,"connection","list"],es=t=>{const e=W.c(33),{plugin:r}=t,n=B(r),s=T.useQueryClient(),{showSnackbar:l}=de();let o;e[0]!==n?(o=pn(n),e[0]=n,e[1]=o):o=e[1];const u=o;let i;e[2]!==n?(i=_=>A.StartConnectionWatch(n,_),e[2]=n,e[3]=i):i=e[3];let a;e[4]!==l?(a=ne(l,"Failed to start connection watch"),e[4]=l,e[5]=a):a=e[5];let f;e[6]!==i||e[7]!==a?(f={mutationFn:i,onError:a},e[6]=i,e[7]=a,e[8]=f):f=e[8];const{mutateAsync:c}=T.useMutation(f);let d;e[9]!==n?(d=_=>A.StopConnectionWatch(n,_),e[9]=n,e[10]=d):d=e[10];let h;e[11]!==l?(h=ne(l,"Failed to stop connection watch"),e[11]=l,e[12]=h):h=e[12];let y;e[13]!==d||e[14]!==h?(y={mutationFn:d,onError:h},e[13]=d,e[14]=h,e[15]=y):y=e[15];const{mutateAsync:g}=T.useMutation(y);let p;e[16]!==s||e[17]!==u?(p=_=>{const R=_.data;console.log("got update to connections",R),s.setQueryData(u,R)},e[16]=s,e[17]=u,e[18]=p):p=e[18];const m=p;let S,v;e[19]!==m||e[20]!==n?(v=()=>{const _=G.On(`${n}/connection/sync`,m);return()=>{_()}},S=[n,m],e[19]=m,e[20]=n,e[21]=S,e[22]=v):(S=e[21],v=e[22]),C.useEffect(v,S);let E;e[23]!==n||e[24]!==l?(E=async()=>{try{return await A.ListConnections(n)}catch(_){const R=_;console.log(R),ne(l,"Failed to load connections")(R)}return[]},e[23]=n,e[24]=l,e[25]=E):E=e[25];let b;e[26]!==u||e[27]!==E?(b={queryKey:u,queryFn:E,staleTime:3e4,placeholderData:T.keepPreviousData},e[26]=u,e[27]=E,e[28]=b):b=e[28];const x=T.useQuery(b);let I;return e[29]!==x||e[30]!==c||e[31]!==g?(I={connections:x,startWatch:c,stopWatch:g},e[29]=x,e[30]=c,e[31]=g,e[32]=I):I=e[32],I},ts={phase:"checking"},ns={getSnapshot:()=>ts,subscribe:()=>()=>{},connect:async()=>{},retry:async()=>{}};function ie(t){const e=W.c(8),{pluginID:r,connectionID:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r);let u;e[0]!==n||e[1]!==l||e[2]!==o?(u=l?Ze(o,n):ns,e[0]=n,e[1]=l,e[2]=o,e[3]=u):u=e[3];const i=u,a=C.useSyncExternalStore(i.subscribe,i.getSnapshot,i.getSnapshot);let f;return e[4]!==a||e[5]!==i.connect||e[6]!==i.retry?(f={...a,connect:i.connect,retry:i.retry},e[4]=a,e[5]=i.connect,e[6]=i.retry,e[7]=f):f=e[7],f}function le(t,e){const r=T.useQueryClient();return C.useCallback(async(n,s,l,o=e)=>{const u=o,i=fn(t,u),a=()=>i!==void 0&&It(t,u,i);if(s.aborted||!a())throw new T.CancelledError({revert:!0});let f,c=!1,d=!1;const h=()=>{f&&"cancel"in f&&typeof f.cancel=="function"&&Promise.resolve(f.cancel()).catch(p=>{console.error("Failed to cancel resource query",p)}),g()},y=Ze(t,u).subscribe(()=>{a()||(c=!0,r.cancelQueries({queryKey:n,exact:!0}).catch(p=>{console.error("Failed to cancel invalidated resource query",p)}))}),g=()=>{d||(d=!0,y())};s.addEventListener("abort",h,{once:!0});try{if(s.aborted||c||!a())throw new T.CancelledError({revert:!0});f=l();const p=await f;if(s.aborted||c||!a())throw new T.CancelledError({revert:!0});return p}finally{s.removeEventListener("abort",h),g()}},[t,e,r])}const ss=t=>{const e=W.c(20),{pluginID:r,route:n,dimension:s,enabled:l}=t,o=l===void 0?!0:l,u=B(r),i=o&&!!s;let a;e[0]!==u||e[1]!==n.connection||e[2]!==i?(a={pluginID:u,connectionID:n.connection,enabled:i},e[0]=u,e[1]=n.connection,e[2]=i,e[3]=a):a=e[3];const f=ie(a),c=le(u,n.connection),d=o&&!!u&&!!n.connection&&!!s&&f.phase==="connected";let h;e[4]!==s||e[5]!==u||e[6]!==n?(h=[u,"resource-v2","scope-values",n,s],e[4]=s,e[5]=u,e[6]=n,e[7]=h):h=e[7];let y;e[8]!==s||e[9]!==c||e[10]!==u||e[11]!==d||e[12]!==n?(y=d?S=>{const{signal:v,queryKey:E}=S;return c(E,v,()=>A.ScopeValues(u,n,s))}:T.skipToken,e[8]=s,e[9]=c,e[10]=u,e[11]=d,e[12]=n,e[13]=y):y=e[13];let g;e[14]!==d||e[15]!==h||e[16]!==y?(g={queryKey:h,queryFn:y,enabled:d},e[14]=d,e[15]=h,e[16]=y,e[17]=g):g=e[17];const p=T.useQuery(g);let m;return e[18]!==p?(m={values:p},e[18]=p,e[19]=m):m=e[19],m};function _t(t){const e=Object.values(t.states),r=e.length;let n=0,s=0,l=0,o=0;for(const f of e)f===Q.WatchState.WatchStateSynced&&n++,(f===Q.WatchState.WatchStateError||f===Q.WatchState.WatchStateFailed)&&s++,f===Q.WatchState.WatchStateForbidden&&l++,f===Q.WatchState.WatchStateSkipped&&o++;const u=r-o,i=e.filter(f=>f===Q.WatchState.WatchStateSynced||f===Q.WatchState.WatchStateError||f===Q.WatchState.WatchStateStopped||f===Q.WatchState.WatchStateFailed||f===Q.WatchState.WatchStateForbidden).length,a=u>0?i/u:0;return{pluginID:t.pluginID,connectionID:t.connectionID,totalResources:r,watchedTotal:u,syncedCount:n,errorCount:s,forbiddenCount:l,skippedCount:o,doneCount:i,progress:a}}function Xe(t){return t.watchedTotal>0&&t.doneCount>=t.watchedTotal}function gn(t){return t.some(e=>!Xe(e))}function yn(t){const e=t.reduce((n,s)=>n+s.watchedTotal,0);return e===0?0:t.reduce((n,s)=>n+s.doneCount,0)/e}function qt(t,e){return JSON.stringify([t,e.route.connection])}function xt(t,e,r){const n=qt(e,r);t.has(n)||t.set(n,{states:{},pluginID:e,connectionID:r.route.connection});const s=t.get(n);return s.states[r.type]=r.state,s}function rs(){const[t,e]=C.useState(new Map),r=C.useRef(t),n=C.useRef(new Map),s=C.useRef(new Map),[l,o]=C.useState(!0),[u,i]=C.useState(),a=C.useRef({generation:0}),[f,c]=C.useState({}),[d,h]=C.useState(new Map),y=C.useRef(new Map),[g,p]=C.useState(new Map);C.useEffect(()=>{const w=G.On("plugin/crash_recovery_failed",M=>{const j=M.data,P=j?.pluginID;P&&p(q=>{const $=new Map(q);return $.set(P,j.error??"Crash recovery failed"),$})}),L=G.On("plugin/recovered",M=>{const P=M.data?.pluginID;P&&p(q=>{if(!q.has(P))return q;const $=new Map(q);return $.delete(P),$})});return()=>{w(),L()}},[]);const m=C.useCallback(async()=>{const w=++a.current.generation;n.current.clear(),s.current.clear();let L;try{L=A.GetAllConnectionStates()}catch(M){L=Promise.reject(M)}await L.then(M=>{if(w!==a.current.generation||!M)return;const j={},P=new Map,q=new Map;for(const[$,z]of Object.entries(M))if(z){j[$]=z.map(K=>K.connection);for(const K of z){const U=JSON.stringify([$,K.connection.id]),Y=n.current.get(U)??{readiness:K.readiness,readinessError:K.readinessError};if(P.set(U,Y),Y.readiness!=="CONNECTED")continue;const H={pluginID:$,connectionID:K.connection.id,states:{}};if(K.resources)for(const[ee,re]of Object.entries(K.resources))H.states[ee]=re;Object.assign(H.states,s.current.get(U)?.states),y.current.set(U,H),q.set(U,_t(H))}}c(j);for(const[$,z]of n.current)P.set($,z);r.current=P,e(P),h(q)}).catch(M=>{w===a.current.generation&&i(ae(M))}).finally(()=>{w===a.current.generation&&o(!1)})},[]),S=C.useCallback(async()=>{o(!0),i(void 0),await m()},[m]);C.useEffect(()=>{const w=a.current;return m().catch(L=>{console.error("Connection status refresh failed:",L)}),()=>{++w.generation}},[m]),C.useEffect(()=>{let w=!0,L=0;const M=G.On("connection/status",j=>{const P=j.data,q=JSON.stringify([P.pluginID,P.connectionID]),$=P.status==="DISCONNECTED"||P.status==="PENDING"||P.status==="CONNECTED"||P.status==="FAILED"?P.status:"UNKNOWN",z={readiness:$};n.current.set(q,z);const K=new Map(r.current);K.set(q,z),r.current=K,e(K),$!=="CONNECTED"&&(h(H=>{const ee=new Map(H);return ee.delete(q),ee}),y.current.delete(q),s.current.delete(q));const U=++L,Y=a.current.generation;A.ListAllConnections().then(H=>{if(!w||U!==L||Y!==a.current.generation||!H)return;const ee={};for(const[re,oe]of Object.entries(H))oe!=null&&(ee[re]=oe);c(ee)}).catch(H=>{w&&U===L&&Y===a.current.generation&&console.error("Connection metadata refresh failed:",H)})});return()=>{w=!1,M()}},[]);const v=C.useCallback(w=>{const L=w.data,M=qt(L.pluginID,L);if(r.current.get(M)?.readiness!=="CONNECTED")return;const j=xt(y.current,L.pluginID,L);xt(s.current,L.pluginID,L);const P=_t(j);h(q=>{const $=new Map(q);return $.set(M,P),$})},[]);C.useEffect(()=>G.On("watch/STATE",v),[v]);const E=C.useCallback(async(w,L)=>{await hn(w,L)},[]),b=C.useCallback(async(w,L)=>{if(r.current.get(JSON.stringify([w,L]))?.readiness!=="CONNECTED")return;const M={connection:L},j=await A.Catalog(w,{route:M}),P=await Promise.all(j.types.filter(q=>q.capabilities.some($=>$.operation==="update")).map(q=>A.ResolveTarget(w,{route:M,type:q.type})));await A.StartConnectionWatch(w,P.map(q=>q.target))},[]),x=C.useCallback(async w=>{const L=g.get(w);p(M=>{if(!M.has(w))return M;const j=new Map(M);return j.delete(w),j});try{await A.RetryFailedPlugin(w)}catch(M){throw p(j=>{const P=new Map(j);return P.set(w,L??"Reload failed"),P}),M}},[g]),I=[],_=new Set(t.keys());for(const[w,L]of Object.entries(f))for(const M of L)_.add(JSON.stringify([w,M.id]));for(const w of _){const[L,M]=JSON.parse(w),P=(f[L]??[]).find(Y=>Y.id===M),q=t.get(w)??{readiness:"UNKNOWN"},$=q.readiness==="CONNECTED"?d.get(w):void 0,z=$!=null&&!Xe($),K=$!=null&&$.errorCount>0,U=g.get(L);I.push({pluginID:L,connectionID:M,name:P?.name??M,avatar:P?.avatar??"",readiness:q.readiness,readinessError:q.readinessError,sync:$,isSyncing:z,hasErrors:K||U!=null||q.readiness==="FAILED"||q.readinessError!=null,pluginFailed:U!=null,pluginError:U})}const R=new Map;for(const w of I){const L=R.get(w.pluginID)??[];L.push(w),R.set(w.pluginID,L)}const D=I.flatMap(w=>w.sync?[w.sync]:[]),F=I.filter(w=>w.isSyncing),O=I.filter(w=>w.hasErrors),k=I.filter(w=>w.pluginFailed);return{isLoading:l,error:u,refresh:S,entries:I,grouped:R,connectedCount:I.filter(w=>w.readiness==="CONNECTED").length,syncingCount:F.length,errorCount:O.length,failedCount:k.length,hasSyncing:gn(D),aggregateProgress:yn(D),disconnect:E,retryWatch:b,retryPlugin:x}}function os(t){const e=W.c(9),{pluginID:r}=t,n=B(r);let s,l;e[0]!==n?(s=[n,"connection","profiles"],l=f=>{const{signal:c}=f;c.throwIfAborted();const d=A.ListConnectionProfiles(n),h=()=>{d.cancel()};return c.addEventListener("abort",h,{once:!0}),d.finally(()=>c.removeEventListener("abort",h))},e[0]=n,e[1]=s,e[2]=l):(s=e[1],l=e[2]);const o=!!n;let u;e[3]!==s||e[4]!==l||e[5]!==o?(u={queryKey:s,queryFn:l,enabled:o,retry:!1},e[3]=s,e[4]=l,e[5]=o,e[6]=u):u=e[6];const i=T.useQuery(u);let a;return e[7]!==i?(a={profiles:i},e[7]=i,e[8]=a):a=e[8],a}const is={display:"flex",alignItems:"center",justifyContent:"center",minHeight:240,height:"100%",padding:24,boxSizing:"border-box",color:"var(--ov-color-fg-default)"},cs={width:"100%",maxWidth:560,minWidth:0,display:"flex",flexDirection:"column",gap:16},as={display:"flex",alignItems:"center",gap:12},ls={margin:0,fontSize:"1.125rem",fontWeight:600},us={display:"flex",flexWrap:"wrap",gap:8},bt={margin:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere"},ds={width:20,height:20,flexShrink:0},fs={checking:{title:"Checking connection",description:"Checking whether this connection is ready before loading resources."},disconnected:{title:"Connection is disconnected",description:"Connect to load resources and continue at this location."},connecting:{title:"Connecting",description:"Establishing the connection. Resources will load here when it is ready."},unauthorized:{title:"Authentication required",description:"The connection could not authenticate. Check its credentials, then connect again."},forbidden:{title:"Connection access denied",description:"The connection is not permitted to access this target. Check its credentials and permissions."},"not-found":{title:"Connection not found",description:"This saved connection is no longer available. Return to connections or check its configuration."},error:{title:"Connection could not be verified",description:"Check the connection settings and network, then connect again or retry the check."}};function mn(t){const e=W.c(44),{state:r,connectionName:n,connectionDetails:s,onEditConnection:l,onBack:o,backLabel:u}=t,i=u===void 0?"Back to connections":u,a=C.useId();if(r.phase==="connected")return null;const f=r.phase==="checking"||r.phase==="connecting",c=fs[r.phase],d=n??r.connection?.name;let h;e[0]!==s||e[1]!==d?(h=s??(d&&N.jsx(J.Text,{size:"sm",tone:"muted",style:bt,children:d})),e[0]=s,e[1]=d,e[2]=h):h=e[2];let y;e[3]!==f?(y=f&&N.jsx(J.Spinner,{style:ds,"aria-hidden":"true"}),e[3]=f,e[4]=y):y=e[4];let g;e[5]!==a||e[6]!==c.title?(g=N.jsx("h2",{id:a,style:ls,children:c.title}),e[5]=a,e[6]=c.title,e[7]=g):g=e[7];let p;e[8]!==y||e[9]!==g?(p=N.jsxs("div",{style:as,role:"status","aria-live":"polite",children:[y,g]}),e[8]=y,e[9]=g,e[10]=p):p=e[10];let m;e[11]!==c.description?(m=N.jsx(J.Text,{as:"p",size:"sm",tone:"muted",style:bt,children:c.description}),e[11]=c.description,e[12]=m):m=e[12];let S;e[13]!==f||e[14]!==r.message?(S=r.message&&N.jsx(J.Text,{as:"p",size:"sm",style:bt,role:f?"status":"alert",children:r.message}),e[13]=f,e[14]=r.message,e[15]=S):S=e[15];let v;e[16]!==f||e[17]!==r?(v=r.phase!=="not-found"&&N.jsx(J.Button,{size:"sm",variant:"solid",color:"brand",disabled:f,onClick:()=>{r.connect()},children:"Connect and continue"}),e[16]=f,e[17]=r,e[18]=v):v=e[18];const E=r.phase==="checking";let b;e[19]!==r?(b=()=>{r.retry()},e[19]=r,e[20]=b):b=e[20];let x;e[21]!==b||e[22]!==E?(x=N.jsx(J.Button,{size:"sm",variant:"outline",color:"neutral",disabled:E,onClick:b,children:"Retry check"}),e[21]=b,e[22]=E,e[23]=x):x=e[23];let I;e[24]!==l?(I=l&&N.jsx(J.Button,{size:"sm",variant:"outline",color:"neutral",onClick:l,children:"Edit connection"}),e[24]=l,e[25]=I):I=e[25];let _;e[26]!==i||e[27]!==o?(_=o&&N.jsx(J.Button,{size:"sm",variant:"outline",color:"neutral",onClick:o,children:i}),e[26]=i,e[27]=o,e[28]=_):_=e[28];let R;e[29]!==x||e[30]!==I||e[31]!==_||e[32]!==v?(R=N.jsxs("div",{style:us,children:[v,x,I,_]}),e[29]=x,e[30]=I,e[31]=_,e[32]=v,e[33]=R):R=e[33];let D;e[34]!==R||e[35]!==h||e[36]!==p||e[37]!==m||e[38]!==S?(D=N.jsxs("div",{style:cs,children:[h,p,m,S,R]}),e[34]=R,e[35]=h,e[36]=p,e[37]=m,e[38]=S,e[39]=D):D=e[39];let F;return e[40]!==f||e[41]!==a||e[42]!==D?(F=N.jsx("section",{style:is,"aria-labelledby":a,"aria-busy":f,children:D}),e[40]=f,e[41]=a,e[42]=D,e[43]=F):F=e[43],F}function hs(t){const e=W.c(9),{pluginID:r,connectionID:n,children:s,fallback:l}=t;let o;e[0]!==n||e[1]!==r?(o={pluginID:r,connectionID:n},e[0]=n,e[1]=r,e[2]=o):o=e[2];const u=ie(o);if(u.phase!=="connected"){let a;return e[3]!==n||e[4]!==l||e[5]!==u?(a=l?l(u):N.jsx(mn,{state:u,connectionName:u.connection?.name||n}),e[3]=n,e[4]=l,e[5]=u,e[6]=a):a=e[6],a}let i;return e[7]!==s?(i=N.jsx(N.Fragment,{children:s}),e[7]=s,e[8]=i):i=e[8],i}function ps(t){const e=W.c(7),r=B(t.pluginID);let n;e[0]!==r||e[1]!==t.connectionID?(n=JSON.stringify([r,t.connectionID]),e[0]=r,e[1]=t.connectionID,e[2]=n):n=e[2];let s;return e[3]!==r||e[4]!==t||e[5]!==n?(s=C.createElement(hs,{...t,pluginID:r,key:n}),e[3]=r,e[4]=t,e[5]=n,e[6]=s):s=e[6],s}function gs(t,e){return e===null?t===null:Array.isArray(e)?Array.isArray(t):typeof e=="object"?typeof t=="object"&&t!==null&&!Array.isArray(t):typeof t==typeof e}function ys(t,e,r){const n=W.c(29),s=B(t),l=T.useQueryClient();let o;n[0]!==e||n[1]!==s?(o=[s,"data",e],n[0]=e,n[1]=s,n[2]=o):o=n[2];const u=o;let i;n[3]!==r||n[4]!==e||n[5]!==s?(i=async()=>{const E=await A.Get(s,e);return E==null?r:gs(E,r)?E:(console.warn(`[usePluginData] stored value for "${e}" has unexpected type (expected ${Array.isArray(r)?"array":typeof r}, got ${Array.isArray(E)?"array":typeof E}). Using default.`),r)},n[3]=r,n[4]=e,n[5]=s,n[6]=i):i=n[6];let a;n[7]!==u||n[8]!==i?(a={queryKey:u,queryFn:i},n[7]=u,n[8]=i,n[9]=a):a=n[9];const f=T.useQuery(a);let c;n[10]!==e||n[11]!==s?(c=async E=>{await A.Set(s,e,E)},n[10]=e,n[11]=s,n[12]=c):c=n[12];let d,h,y;n[13]!==l||n[14]!==u?(d=async E=>{await l.cancelQueries({queryKey:u});const b=l.getQueryData(u);return l.setQueryData(u,E),{previous:b}},h=(E,b,x)=>{x?.previous!==void 0&&l.setQueryData(u,x.previous)},y=()=>{l.invalidateQueries({queryKey:u})},n[13]=l,n[14]=u,n[15]=d,n[16]=h,n[17]=y):(d=n[15],h=n[16],y=n[17]);let g;n[18]!==c||n[19]!==d||n[20]!==h||n[21]!==y?(g={mutationFn:c,onMutate:d,onError:h,onSettled:y},n[18]=c,n[19]=d,n[20]=h,n[21]=y,n[22]=g):g=n[22];const p=T.useMutation(g),m=f.data??r;let S;n[23]!==p?(S=async E=>{await p.mutateAsync(E)},n[23]=p,n[24]=S):S=n[24];let v;return n[25]!==f.isLoading||n[26]!==m||n[27]!==S?(v={data:m,update:S,isLoading:f.isLoading},n[25]=f.isLoading,n[26]=m,n[27]=S,n[28]=v):v=n[28],v}const ms=()=>{const t=C.useContext(tn);if(!t)throw new Error("useRightDrawer must be used within a RightDrawerProvider");return t},Mt=()=>{const t=C.useContext(en);if(t===void 0)throw new Error("useBottomDrawer must be used within a BottomDrawerProvider");return t},vs=({pluginID:t})=>{const e=B(t),{showSnackbar:r}=de(),{createTab:n,updateTab:s}=Mt();return{createSession:T.useMutation({mutationFn:async({connectionID:o,icon:u,label:i,opts:a,recovery:f})=>{const c=`pending-${crypto.randomUUID()}`;n({id:c,title:i??"Connecting...",variant:"terminal",icon:u??"LuSquareTerminal",properties:{status:"connecting",pluginID:e,connectionID:o,opts:{...a},recovery:f}});const d=Ot.SessionOptions.createFrom({command:["/bin/bash"],tty:!0,...a});try{const h=await A.CreateSession(e,o,d);if(!h)throw new Error("Failed to create session: null response");return s({id:c},{id:h.id,title:i??`Session ${h.id.substring(0,8)}`,properties:{status:"connected",pluginID:e,connectionID:o,opts:{...a},recovery:f}}),h}catch(h){const y=ae(h);return s({id:c},{properties:{status:"error",error:y.detail,pluginID:e,connectionID:o,opts:{...a},recovery:f,errorInfo:{title:y.title||"Session error",suggestion:y.detail,raw:y.detail}}}),xe(r,h,"Failed to start session"),null}}}).mutateAsync}},Ss=t=>{const e=W.c(15),{pluginID:r}=t,n=B(r),{showSnackbar:s}=de(),{createTab:l}=Mt();let o;e[0]!==l||e[1]!==n?(o=async y=>{const{connectionID:g,resourceKey:p,resourceID:m,resourceData:S,reference:v,route:E,icon:b,label:x,target:I,follow:_,tailLines:R,params:D}=y,k={resource_key:p,resource_id:m,resource_data:S,reference:v,route:E,options:{target:I??"",follow:_===void 0?!0:_,include_previous:!1,include_timestamps:!0,tail_lines:R===void 0?1e3:R,since_seconds:0,limit_bytes:0,include_source_events:!0,params:D??{}}},w=await A.CreateSession$1(n,g,k);if(!w)throw new Error("Failed to create log session: null response");return l({id:w.id,title:x??`Logs ${w.id.substring(0,8)}`,variant:"logs",icon:b??"LuLogs"}),w},e[0]=l,e[1]=n,e[2]=o):o=e[2];let u;e[3]!==s?(u=ne(s,"Failed to start log session"),e[3]=s,e[4]=u):u=e[4];let i;e[5]!==o||e[6]!==u?(i={mutationFn:o,onError:u},e[5]=o,e[6]=u,e[7]=i):i=e[7];const a=T.useMutation(i);let f;e[8]!==s?(f=ne(s,"Failed to close log session"),e[8]=s,e[9]=f):f=e[9];let c;e[10]!==f?(c={mutationFn:Es,onError:f},e[10]=f,e[11]=c):c=e[11];const d=T.useMutation(c);let h;return e[12]!==d.mutateAsync||e[13]!==a.mutateAsync?(h={createLogSession:a.mutateAsync,closeLogSession:d.mutateAsync},e[12]=d.mutateAsync,e[13]=a.mutateAsync,e[14]=h):h=e[14],h};async function Es(t){await A.CloseSession(t)}const bs=()=>{const t=W.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e={queryKey:["metric","providers"],queryFn:A.GetProviders,staleTime:3e4},t[0]=e):e=t[0],T.useQuery(e)},vn=t=>{const e=W.c(7);let r,n;e[0]!==t?(r=["metric","providers",t],n=()=>A.GetProvidersForResource(t),e[0]=t,e[1]=r,e[2]=n):(r=e[1],n=e[2]);const s=!!t;let l;return e[3]!==r||e[4]!==n||e[5]!==s?(l={queryKey:r,queryFn:n,enabled:s,staleTime:3e4},e[3]=r,e[4]=n,e[5]=s,e[6]=l):l=e[6],T.useQuery(l)},ws=t=>{const e=W.c(45),{connectionID:r,resourceKey:n,resourceID:s,resourceNamespace:l,resourceData:o,reference:u,route:i,params:a,metricIDs:f,shape:c,timeRange:d,refreshInterval:h,enabled:y}=t,g=l===void 0?"":l;let p;e[0]!==f?(p=f===void 0?[]:f,e[0]=f,e[1]=p):p=e[1];const m=p,S=c===void 0?0:c,v=h===void 0?0:h,E=y===void 0?!0:y,{data:b,isLoading:x}=vn(n);let I;e[2]!==b?(I=b??[],e[2]=b,e[3]=I):I=e[3];const _=I,R=d?Math.max(Math.floor((d.end.getTime()-d.start.getTime())/250),15e3)*1e6:0;let D;e[4]!==d?.start?(D=d?.start?.getTime(),e[4]=d?.start,e[5]=D):D=e[5];let F;e[6]!==d?.end?(F=d?.end?.getTime(),e[6]=d?.end,e[7]=F):F=e[7];let O;e[8]!==r||e[9]!==m||e[10]!==a||e[11]!==u||e[12]!==s||e[13]!==n||e[14]!==g||e[15]!==i||e[16]!==S||e[17]!==D||e[18]!==F?(O=["metric","query",r,n,s,g,u,i,a,m,S,D,F],e[8]=r,e[9]=m,e[10]=a,e[11]=u,e[12]=s,e[13]=n,e[14]=g,e[15]=i,e[16]=S,e[17]=D,e[18]=F,e[19]=O):O=e[19];let k;e[20]!==r||e[21]!==m||e[22]!==a||e[23]!==u||e[24]!==o||e[25]!==s||e[26]!==n||e[27]!==g||e[28]!==i||e[29]!==S||e[30]!==R||e[31]!==d?.end||e[32]!==d?.start?(k=async()=>{const K=await A.QueryAll(r,{resource_key:n,resource_id:s,resource_namespace:g,resource_data:o,reference:u,route:i,params:a,metric_ids:m,shape:S,start_time:(d?.start??new Date(0)).toISOString(),end_time:(d?.end??new Date(0)).toISOString(),step:R}),U={};for(const[Y,H]of Object.entries(K))H!=null&&(U[Y]=H);return U},e[20]=r,e[21]=m,e[22]=a,e[23]=u,e[24]=o,e[25]=s,e[26]=n,e[27]=g,e[28]=i,e[29]=S,e[30]=R,e[31]=d?.end,e[32]=d?.start,e[33]=k):k=e[33];const w=E&&!!r&&!!n&&_.length>0,L=v>0?v:void 0;let M;e[34]!==k||e[35]!==w||e[36]!==L||e[37]!==O?(M={queryKey:O,queryFn:k,enabled:w,refetchInterval:L,staleTime:5e3,placeholderData:T.keepPreviousData},e[34]=k,e[35]=w,e[36]=L,e[37]=O,e[38]=M):M=e[38];const j=T.useQuery(M),P=j.data??void 0,q=x||j.isLoading,$=j.error;let z;return e[39]!==j.refetch||e[40]!==_||e[41]!==P||e[42]!==q||e[43]!==$?(z={data:P,providers:_,isLoading:q,error:$,refetch:j.refetch},e[39]=j.refetch,e[40]=_,e[41]=P,e[42]=q,e[43]=$,e[44]=z):z=e[44],z},Cs=t=>{const{pluginID:e,connectionID:r,resourceKey:n,resourceID:s,resourceNamespace:l="",resourceData:o,reference:u,route:i,params:a,metricIDs:f=[],interval:c=1e4,enabled:d=!0}=t,h=B(e),[y,g]=C.useState(null),[p,m]=C.useState(null),[S,v]=C.useState(!1),[E,b]=C.useState(null),x=C.useRef(null),I=C.useCallback(async()=>{if(!(!d||!h||!r||!n))try{const R=await A.Subscribe(h,r,{resource_key:n,resource_id:s,resource_namespace:l,resource_data:o,reference:u,route:i,params:a,metric_ids:f,interval:c*1e6});m(R),v(!0),b(null);const D=G.On(`core/metrics/data/${R}`,O=>{const k=O.data;try{const w=JSON.parse(k);w.results&&(g(w.results),v(!0),b(null))}catch(w){console.error("Failed to parse metric stream data:",w)}}),F=G.On(`core/metrics/error/${R}`,O=>{const k=O.data;try{const w=JSON.parse(k);let L="Unknown error";if(w&&typeof w=="object"&&("error"in w&&typeof w.error=="string"&&w.error&&(L=w.error),"operation_error"in w)){const M=w.operation_error;M&&typeof M=="object"&&"message"in M&&typeof M.message=="string"&&(L=M.message)}b(L),v(!1)}catch{b("Failed to parse metric stream error")}});x.current=()=>{D(),F()}}catch(R){b(R instanceof Error?R.message:String(R))}},[h,r,n,s,l,o,u,i,a,f,c,d]),_=C.useCallback(async()=>{if(p)try{await A.Unsubscribe(p)}catch(R){console.error("Failed to unsubscribe:",R)}x.current&&(x.current(),x.current=null),m(null),v(!1)},[p]);return C.useEffect(()=>()=>{p&&A.Unsubscribe(p).catch(console.error),x.current&&x.current()},[p]),{data:y,subscriptionID:p,isStreaming:S,error:E,start:I,stop:_}},Ie=["networker","portforward","all-sessions"];function Is(){const t=W.c(17),{showSnackbar:e}=de(),r=T.useQueryClient();let n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n={queryKey:[...Ie],queryFn:Rs,retry:!1},t[0]=n):n=t[0];const s=T.useQuery(n);let l,o;t[1]!==r?(l=()=>{const y=G.On("core/networker/portforward/created",()=>{r.invalidateQueries({queryKey:[...Ie]})}),g=G.On("core/networker/portforward/closed",()=>{r.invalidateQueries({queryKey:[...Ie]})});return()=>{y(),g()}},o=[r],t[1]=r,t[2]=l,t[3]=o):(l=t[2],o=t[3]),C.useEffect(l,o);let u;t[4]!==s.data?(u=s.data??[],t[4]=s.data,t[5]=u):u=t[5];const i=u;let a;t[6]!==e?(a=ne(e,"Failed to close port forwarding session"),t[6]=e,t[7]=a):a=t[7];let f;t[8]!==r?(f=async()=>{await r.invalidateQueries({queryKey:[...Ie]})},t[8]=r,t[9]=f):f=t[9];let c;t[10]!==a||t[11]!==f?(c={mutationFn:xs,onError:a,onSuccess:f},t[10]=a,t[11]=f,t[12]=c):c=t[12];const d=T.useMutation(c);let h;return t[13]!==i||t[14]!==d.mutateAsync||t[15]!==s?(h={sessions:s,activeSessions:i,closeSession:d.mutateAsync,openInBrowser:_s},t[13]=i,t[14]=d.mutateAsync,t[15]=s,t[16]=h):h=t[16],h}function _s(t){return G.OpenURL(`http://localhost:${t}`)}async function xs(t){return A.ClosePortForwardSession(t)}async function Rs(){return A.ListAllPortForwardSessions().catch(Ds)}function Ds(t){if(ae(t).detail.includes("not found"))return[];throw t}function Ns(t){const e=W.c(36),{pluginID:r,connectionID:n,resourceID:s}=t,l=B(r);let o;e[0]!==n||e[1]!==l||e[2]!==s?(o=["networker","portforward","sessions",l,n,s],e[0]=n,e[1]=l,e[2]=s,e[3]=o):o=e[3];const u=o,{showSnackbar:i}=de(),a=T.useQueryClient();let f;e[4]!==n||e[5]!==l||e[6]!==s||e[7]!==i?(f=async()=>A.FindPortForwardSessions(l,n,Ot.FindPortForwardSessionRequest.createFrom({resource_id:s,connection_id:n})).catch(I=>{const _=ae(I);return _.detail.includes("not found")?[]:(i({message:"Failed to fetch port forward sessions",status:"error",details:_.detail}),[])}),e[4]=n,e[5]=l,e[6]=s,e[7]=i,e[8]=f):f=e[8];let c;e[9]!==u||e[10]!==f?(c={queryKey:u,queryFn:f,retry:!1},e[9]=u,e[10]=f,e[11]=c):c=e[11];const d=T.useQuery(c);let h;e[12]!==n||e[13]!==l?(h=async I=>{const{opts:_}=I,R={local_port:_.localPort||0,remote_port:_.remotePort,protocol:_.protocol||"TCP",connection_type:"RESOURCE",connection:{resource_data:_.resource,reference:_.reference,route:_.route,connection_id:n,plugin_id:l,resource_id:_.resourceId,resource_key:_.resourceKey},labels:_.labels??{},params:_.parameters??{}},D=await A.StartResourcePortForwardingSession(l,n,R);if(!D)throw new Error("Failed to start port forwarding: null response");return _.openInBrowser&&G.OpenURL(`http://localhost:${D.local_port}`),D},e[12]=n,e[13]=l,e[14]=h):h=e[14];let y;e[15]!==i?(y=ne(i,"Failed to start port forwarding session"),e[15]=i,e[16]=y):y=e[16];let g;e[17]!==a||e[18]!==u?(g=async()=>{await Promise.all([a.invalidateQueries({queryKey:u}),a.invalidateQueries({queryKey:[...Ie]})])},e[17]=a,e[18]=u,e[19]=g):g=e[19];let p;e[20]!==h||e[21]!==y||e[22]!==g?(p={mutationFn:h,onError:y,onSuccess:g},e[20]=h,e[21]=y,e[22]=g,e[23]=p):p=e[23];const m=T.useMutation(p);let S;e[24]!==i?(S=ne(i,"Failed to close port forwarding session"),e[24]=i,e[25]=S):S=e[25];let v;e[26]!==a||e[27]!==u?(v=async()=>{await Promise.all([a.invalidateQueries({queryKey:u}),a.invalidateQueries({queryKey:[...Ie]})])},e[26]=a,e[27]=u,e[28]=v):v=e[28];let E;e[29]!==S||e[30]!==v?(E={mutationFn:Ts,onError:S,onSuccess:v},e[29]=S,e[30]=v,e[31]=E):E=e[31];const b=T.useMutation(E);let x;return e[32]!==b.mutateAsync||e[33]!==m.mutateAsync||e[34]!==d?(x={sessions:d,forward:m.mutateAsync,close:b.mutateAsync},e[32]=b.mutateAsync,e[33]=m.mutateAsync,e[34]=d,e[35]=x):x=e[35],x}async function Ts(t){const{opts:e}=t;return A.ClosePortForwardSession(e.sessionID)}const Os=()=>{const t=C.useContext(nn);if(!t)throw new Error("useConfirmationModal must be used within a ConfirmationModalProvider");return t},ks=t=>{const e=W.c(31),{pluginID:r,request:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r),u=n?.request.route.connection??"",i=l&&!!n;let a;e[0]!==u||e[1]!==o||e[2]!==i?(a={pluginID:o,connectionID:u,enabled:i},e[0]=u,e[1]=o,e[2]=i,e[3]=a):a=e[3];const f=ie(a),c=le(o,u),d=T.useQueryClient(),{showSnackbar:h}=de();let y;e[4]!==o||e[5]!==n?(y=me.resource(o,n),e[4]=o,e[5]=n,e[6]=y):y=e[6];const g=y,p=l&&!!n&&f.phase==="connected";let m;e[7]!==o||e[8]!==n?(m=async D=>{if(!n)throw new Error("Resource target is not resolved");return await Me(o,n.request.route.connection),A.Mutate(o,{...D,route:n.request.route,reference:n.request.reference})},e[7]=o,e[8]=n,e[9]=m):m=e[9];let S;e[10]!==o||e[11]!==d?(S=async()=>{await d.invalidateQueries({queryKey:me.all(o)})},e[10]=o,e[11]=d,e[12]=S):S=e[12];let v;e[13]!==h?(v=ne(h,"Failed to mutate resource"),e[13]=h,e[14]=v):v=e[14];let E;e[15]!==m||e[16]!==S||e[17]!==v?(E={mutationFn:m,onSuccess:S,onError:v},e[15]=m,e[16]=S,e[17]=v,e[18]=E):E=e[18];const{mutateAsync:b}=T.useMutation(E);let x;e[19]!==c||e[20]!==o||e[21]!==p||e[22]!==n?(x=p?D=>{const{signal:F,queryKey:O}=D;return c(O,F,()=>A.Get$1(o,n))}:T.skipToken,e[19]=c,e[20]=o,e[21]=p,e[22]=n,e[23]=x):x=e[23];let I;e[24]!==p||e[25]!==g||e[26]!==x?(I={queryKey:g,queryFn:x,retry:!1,enabled:p},e[24]=p,e[25]=g,e[26]=x,e[27]=I):I=e[27];const _=T.useQuery(I);let R;return e[28]!==b||e[29]!==_?(R={resource:_,mutate:b},e[28]=b,e[29]=_,e[30]=R):R=e[30],R},Ps=t=>{const e=W.c(11);let r;e[0]!==t.area||e[1]!==t.plugin||e[2]!==t.resource?(r=["component",t.plugin,t.resource,t.area],e[0]=t.area,e[1]=t.plugin,e[2]=t.resource,e[3]=r):r=e[3];const n=r;let s;e[4]!==t?(s=async()=>A.GetResourceAreaComponent(t),e[4]=t,e[5]=s):s=e[5];let l;e[6]!==n||e[7]!==s?(l={queryKey:n,queryFn:s},e[6]=n,e[7]=s,e[8]=l):l=e[8];const o=T.useQuery(l);let u;return e[9]!==o?(u={component:o},e[9]=o,e[10]=u):u=e[10],u},As=t=>{const e=W.c(18),{pluginID:r,route:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r);let u;e[0]!==l||e[1]!==o||e[2]!==n.connection?(u={pluginID:o,connectionID:n.connection,enabled:l},e[0]=l,e[1]=o,e[2]=n.connection,e[3]=u):u=e[3];const i=ie(u),a=le(o,n.connection),f=l&&!!o&&!!n.connection&&i.phase==="connected";let c;e[4]!==o||e[5]!==n?(c=[o,"resource-v2","groups",n],e[4]=o,e[5]=n,e[6]=c):c=e[6];let d;e[7]!==a||e[8]!==o||e[9]!==f||e[10]!==n?(d=f?p=>{const{signal:m,queryKey:S}=p;return a(S,m,()=>A.GetResourceGroups(o,n))}:T.skipToken,e[7]=a,e[8]=o,e[9]=f,e[10]=n,e[11]=d):d=e[11];let h;e[12]!==f||e[13]!==c||e[14]!==d?(h={queryKey:c,queryFn:d,enabled:f,retry:!1},e[12]=f,e[13]=c,e[14]=d,e[15]=h):h=e[15];const y=T.useQuery(h);let g;return e[16]!==y?(g={groups:y},e[16]=y,e[17]=g):g=e[17],g},Ls=t=>{const e=W.c(28),{pluginID:r,searches:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r);let u;e[0]!==l||e[1]!==n?(u=JSON.stringify(l?[...new Set(n.map(Fs))].sort():[]),e[0]=l,e[1]=n,e[2]=u):u=e[2];const i=u;let a;if(e[3]!==i||e[4]!==o){const S=JSON.parse(i);let v;e[6]!==o?(v=E=>[E,Ze(o,E)],e[6]=o,e[7]=v):v=e[7],a=new Map(S.map(v)),e[3]=i,e[4]=o,e[5]=a}else a=e[5];const f=a;let c,d;e[8]!==f?(c=()=>JSON.stringify([...f.values()].map(qs)),d=S=>{const v=[...f.values()].map(E=>E.subscribe(S));return()=>{for(const E of v)E()}},e[8]=f,e[9]=c,e[10]=d):(c=e[9],d=e[10]);let h;e[11]!==f||e[12]!==c||e[13]!==d?(h={stores:f,getSnapshot:c,subscribe:d},e[11]=f,e[12]=c,e[13]=d,e[14]=h):h=e[14];const y=h;C.useSyncExternalStore(y.subscribe,y.getSnapshot,y.getSnapshot);const g=le(o,"");let p;if(e[15]!==l||e[16]!==g||e[17]!==o||e[18]!==y.stores||e[19]!==n){let S;e[21]!==l||e[22]!==g||e[23]!==o||e[24]!==y.stores?(S=v=>{const E=v.request.target.route.connection,b=l&&y.stores.get(E)?.getSnapshot().phase==="connected";return{queryKey:me.nativeQuery(o,v),queryFn:b?x=>{const{signal:I,queryKey:_}=x;return g(_,I,()=>A.NativeQuery(o,v),E)}:T.skipToken,retry:!1,enabled:b}},e[21]=l,e[22]=g,e[23]=o,e[24]=y.stores,e[25]=S):S=e[25],p=n.map(S),e[15]=l,e[16]=g,e[17]=o,e[18]=y.stores,e[19]=n,e[20]=p}else p=e[20];let m;return e[26]!==p?(m={queries:p},e[26]=p,e[27]=m):m=e[27],T.useQueries(m)};function Fs(t){return t.request.target.route.connection}function qs(t){return t.getSnapshot().phase}const Ms=t=>{const e=W.c(21),{pluginID:r,route:n,type:s}=t,l=B(r),o=!!s;let u;e[0]!==l||e[1]!==n.connection||e[2]!==o?(u={pluginID:l,connectionID:n.connection,enabled:o},e[0]=l,e[1]=n.connection,e[2]=o,e[3]=u):u=e[3];const i=ie(u),a=le(l,n.connection),f=!!l&&!!n.connection&&!!s&&i.phase==="connected";let c;e[4]!==l||e[5]!==n?(c=[l,"resource-v2","catalog",n],e[4]=l,e[5]=n,e[6]=c):c=e[6];let d;e[7]!==a||e[8]!==l||e[9]!==f||e[10]!==n?(d=f?m=>{const{signal:S,queryKey:v}=m;return a(v,S,()=>A.Catalog(l,{route:n}))}:T.skipToken,e[7]=a,e[8]=l,e[9]=f,e[10]=n,e[11]=d):d=e[11];let h;e[12]!==s?(h=m=>m.types.find(S=>S.type===s),e[12]=s,e[13]=h):h=e[13];let y;e[14]!==f||e[15]!==c||e[16]!==d||e[17]!==h?(y={queryKey:c,queryFn:d,select:h,enabled:f,retry:!1},e[14]=f,e[15]=c,e[16]=d,e[17]=h,e[18]=y):y=e[18];const g=T.useQuery(y);let p;return e[19]!==g?(p={resourceType:g},e[19]=g,e[20]=p):p=e[20],p},js=t=>{const e=W.c(18),{pluginID:r,route:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r);let u;e[0]!==l||e[1]!==o||e[2]!==n.connection?(u={pluginID:o,connectionID:n.connection,enabled:l},e[0]=l,e[1]=o,e[2]=n.connection,e[3]=u):u=e[3];const i=ie(u),a=le(o,n.connection),f=l&&!!o&&!!n.connection&&i.phase==="connected";let c;e[4]!==o||e[5]!==n?(c=[o,"resource-v2","catalog",n],e[4]=o,e[5]=n,e[6]=c):c=e[6];let d;e[7]!==a||e[8]!==o||e[9]!==f||e[10]!==n?(d=f?p=>{const{signal:m,queryKey:S}=p;return a(S,m,()=>A.Catalog(o,{route:n}))}:T.skipToken,e[7]=a,e[8]=o,e[9]=f,e[10]=n,e[11]=d):d=e[11];let h;e[12]!==f||e[13]!==c||e[14]!==d?(h={queryKey:c,queryFn:d,select:$s,enabled:f,retry:!1},e[12]=f,e[13]=c,e[14]=d,e[15]=h):h=e[15];const y=T.useQuery(h);let g;return e[16]!==y?(g={resourceTypes:y},e[16]=y,e[17]=g):g=e[17],g};function $s(t){return t.types}function Sn(t,e,r=!1){if(!t||!e.length&&!r)return t;let n;const s=e.length>1?new Map(t.records.map((i,a)=>[i.key,a])):void 0,l=new Set;let o=t.view?.membershipStale===!0||r;for(const i of e){const a=i.type==="DELETE"?i.payload.key:i.payload.record.key,f=s?s.get(a)??-1:t.records.findIndex(c=>c.key===a);i.type==="DELETE"?(f!==-1&&l.add(f),o=!0):f===-1||l.has(f)?o=!0:(n??t.records)[f]!==i.payload.record&&(n??=[...t.records],n[f]=i.payload.record)}if(!n&&!l.size&&t.view?.membershipStale===o&&t.view.guarantee==="bestEffort"&&t.view.count.kind==="unknown"&&t.view.sourceRevision===void 0)return t;const u=n??t.records;return{records:l.size?u.filter((i,a)=>!l.has(a)):u,sourcePage:t.sourcePage,view:{guarantee:"bestEffort",count:{kind:"unknown"},membershipStale:o}}}function En(t,e,r,n){const s=W.c(32);let l;s[0]===Symbol.for("react.memo_cache_sentinel")?(l=new Map,s[0]=l):l=s[0];const o=C.useRef(l),u=C.useRef(!1),i=C.useRef(void 0),a=C.useRef(void 0),f=C.useRef(r),c=n?.enabled??!0,d=n?.isCurrent;let h;s[1]!==c||s[2]!==d||s[3]!==t||s[4]!==e?(h={queryClient:t,queryKey:e,enabled:c,isCurrent:d},s[1]=c,s[2]=d,s[3]=t,s[4]=e,s[5]=h):h=s[5];const y=h,g=C.useRef(void 0);let p;s[6]!==c||s[7]!==d||s[8]!==y?(p=()=>g.current===y&&c&&(!d||d()),s[6]=c,s[7]=d,s[8]=y,s[9]=p):p=s[9];const m=p;let S,v;s[10]!==r?(S=()=>{f.current=r},v=[r],s[10]=r,s[11]=S,s[12]=v):(S=s[11],v=s[12]),C.useLayoutEffect(S,v);const E=n?.syncWindowMs??500;let b;s[13]!==m||s[14]!==t||s[15]!==e||s[16]!==y?(b=()=>{if(g.current!==y)return;if(window.clearTimeout(i.current),a.current!==void 0&&cancelAnimationFrame(a.current),i.current=void 0,a.current=void 0,!m()){o.current.clear(),u.current=!1;return}if(!o.current.size&&!u.current||!t.getQueryData(e))return;const F=[...o.current.values()],O=u.current;o.current.clear(),u.current=!1,t.setQueryData(e,k=>m()?Sn(k,F,O):k);for(const k of F){if(!m())return;k.type==="DELETE"?t.invalidateQueries({queryKey:[e[0],"resource-v2","get"],predicate:w=>m()&&w.state.data?.key===k.payload.key}):t.setQueriesData({queryKey:[e[0],"resource-v2","get"]},w=>m()&&w?.key===k.payload.record.key?k.payload.record:w)}},s[13]=m,s[14]=t,s[15]=e,s[16]=y,s[17]=b):b=s[17];const x=b;let I;s[18]!==m||s[19]!==x||s[20]!==t||s[21]!==e||s[22]!==E?(I=F=>{if(!m())return;const O=F.type==="DELETE"?F.payload.key:F.payload.record.key;t.getQueryData(e)?.records.some(w=>w.key===O)?o.current.set(O,F):u.current=!0,F.type==="DELETE"&&(u.current=!0),!(i.current!==void 0||a.current!==void 0)&&(i.current=window.setTimeout(x,E),f.current!==Q.WatchState.WatchStateSyncing&&(a.current=requestAnimationFrame(x)))},s[18]=m,s[19]=x,s[20]=t,s[21]=e,s[22]=E,s[23]=I):I=s[23];const _=I;let R,D;return s[24]!==m||s[25]!==c||s[26]!==x||s[27]!==t||s[28]!==e||s[29]!==y?(R=()=>{if(!c)return;g.current=y;const F=o.current,O=t.getQueryCache().subscribe(k=>{!m()||k.type!=="updated"||k.query.queryHash!==T.hashKey(e)||(k.action.type==="fetch"?(F.clear(),u.current=!1):k.action.type==="success"&&x())});return()=>{g.current=void 0,O(),window.clearTimeout(i.current),a.current!==void 0&&cancelAnimationFrame(a.current),F.clear(),u.current=!1,i.current=void 0,a.current=void 0}},D=[t,e,x,c,y,m],s[24]=m,s[25]=c,s[26]=x,s[27]=t,s[28]=e,s[29]=y,s[30]=R,s[31]=D):(R=s[30],D=s[31]),C.useLayoutEffect(R,D),_}const Ws={getSnapshot:()=>{},subscribe:()=>()=>{}},Us=t=>{const e=W.c(84),{pluginID:r,request:n,enabled:s,live:l}=t,o=s===void 0?!0:s,u=l===void 0?!0:l,i=B(r),a=T.useQueryClient(),{showSnackbar:f}=de(),c=C.useRef(f);let d,h;e[0]!==f?(d=()=>{c.current=f},h=[f],e[0]=f,e[1]=d,e[2]=h):(d=e[1],h=e[2]),C.useLayoutEffect(d,h);let y;e[3]!==n?(y=T.hashKey([n]),e[3]=n,e[4]=y):y=e[4];const g=y;let p;e[5]!==n||e[6]!==g?(p={hash:g,request:n},e[5]=n,e[6]=g,e[7]=p):p=e[7];const[m,S]=C.useState(p);m.hash!==g&&S({hash:g,request:n});const v=m.hash===g?m.request:n,E=v?.request.target.route.connection??"",b=o&&!!v;let x;e[8]!==E||e[9]!==i||e[10]!==b?(x={pluginID:i,connectionID:E,enabled:b},e[8]=E,e[9]=i,e[10]=b,e[11]=x):x=e[11];const I=ie(x);let _;e[12]!==E||e[13]!==i||e[14]!==b?(_=b?{subscribe:Ze(i,E).subscribe,getSnapshot:()=>fn(i,E)}:Ws,e[12]=E,e[13]=i,e[14]=b,e[15]=_):_=e[15];const R=_,D=C.useSyncExternalStore(R.subscribe,R.getSnapshot,R.getSnapshot),F=le(i,E),O=b&&I.phase==="connected";let k;e[16]!==i||e[17]!==v?(k=v?T.hashKey([i,v.targetId,v.request.target]):void 0,e[16]=i,e[17]=v,e[18]=k):k=e[18];const w=k;let L;e[19]!==i||e[20]!==v?(L=me.list(i,v),e[19]=i,e[20]=v,e[21]=L):L=e[21];const M=L;let j;e[22]!==F||e[23]!==i||e[24]!==O||e[25]!==v?(j=O?X=>{const{signal:ge,queryKey:Te}=X;return F(Te,ge,()=>A.Enumerate(i,v))}:T.skipToken,e[22]=F,e[23]=i,e[24]=O,e[25]=v,e[26]=j):j=e[26];let P;e[27]!==O||e[28]!==M||e[29]!==j?(P={queryKey:M,queryFn:j,enabled:O,retry:!1,gcTime:0,placeholderData:void 0},e[27]=O,e[28]=M,e[29]=j,e[30]=P):P=e[30];const q=T.useQuery(P),[$,z]=C.useState();let K=$;if(w&&v&&q.isSuccess&&q.data){if($?.identity!==w||$.requestHash!==g){let X;e[31]!==g||e[32]!==v||e[33]!==w?(X={identity:w,requestHash:g,request:v},e[31]=g,e[32]=v,e[33]=w,e[34]=X):X=e[34],K=X,z(K)}}else $&&$.identity!==w&&(K=void 0,z(void 0));const U=w&&K?.identity===w?K.request:void 0;let Y;e[35]!==U||e[36]!==i?(Y=me.list(i,U),e[35]=U,e[36]=i,e[37]=Y):Y=e[37];const H=Y;let ee;e[38]!==U||e[39]!==F||e[40]!==i||e[41]!==O?(ee=O&&U?X=>{const{signal:ge,queryKey:Te}=X;return F(Te,ge,()=>A.Enumerate(i,U))}:T.skipToken,e[38]=U,e[39]=F,e[40]=i,e[41]=O,e[42]=ee):ee=e[42];let re;e[43]!==H||e[44]!==ee?(re={queryKey:H,queryFn:ee,enabled:!1,retry:!1,gcTime:0,placeholderData:void 0},e[43]=H,e[44]=ee,e[45]=re):re=e[45];const oe=T.useQuery(re);let pe;e[46]!==U||e[47]!==oe.data?(pe=U&&oe.data?{request:U,page:oe.data}:void 0,e[46]=U,e[47]=oe.data,e[48]=pe):pe=e[48];const he=pe,te=O&&u&&!!U;let Re;e[49]!==U||e[50]!==D||e[51]!==i||e[52]!==te?(Re={pluginID:i,acquiredRequest:U,generation:D,enabled:te},e[49]=U,e[50]=D,e[51]=i,e[52]=te,e[53]=Re):Re=e[53];const ve=Re,[De,Rn]=C.useState(),we=te&&De?.scope===ve?De.state:Q.WatchState.WatchStateIdle,Dn=te&&De?.scope===ve?De.error:void 0,jt=te&&De?.scope===ve&&De.live;let je;e[54]!==E||e[55]!==D||e[56]!==i?(je=()=>D!==void 0&&It(i,E,D),e[54]=E,e[55]=D,e[56]=i,e[57]=je):je=e[57];const tt=je;let $e;e[58]!==tt||e[59]!==te?($e={enabled:te,isCurrent:tt},e[58]=tt,e[59]=te,e[60]=$e):$e=e[60];const Ne=En(a,H,we,$e);let We;e[61]===Symbol.for("react.memo_cache_sentinel")?(We=Promise.resolve(),e[61]=We):We=e[61];const nt=C.useRef(We);let Ue,Qe;e[62]!==U||e[63]!==E||e[64]!==Ne||e[65]!==D||e[66]!==i||e[67]!==te||e[68]!==ve?(Ue=()=>{if(!te||!U)return;const X=U.request.target,ge={targetId:U.targetId,target:X};let Te=!0,$t=!1,Wt=!1,ft;const Se=()=>Te&&D!==void 0&&It(i,E,D),Ae=Z=>{Se()&&Rn(se=>({state:Q.WatchState.WatchStateIdle,live:!1,...se?.scope===ve?se:{},...Z,scope:ve}))},ht=`${i}/${X.route.connection}/${X.type}`,Nn=[G.On(`${ht}/ADD`,Z=>{const se=Z.data;Se()&&se.record.targetId===ge.targetId&&Ne({type:"ADD",payload:se})}),G.On(`${ht}/UPDATE`,Z=>{const se=Z.data;Se()&&se.record.targetId===ge.targetId&&Ne({type:"UPDATE",payload:se})}),G.On(`${ht}/DELETE`,Z=>{const se=Z.data;Se()&&se.targetId===ge.targetId&&Ne({type:"DELETE",payload:se})}),G.On(`${i}/${X.route.connection}/watch/STATE`,Z=>{const se=Z.data;!Se()||se.type!==X.type||se.route.connection!==X.route.connection||(Wt=!0,Ae({state:se.state,error:se.error}))})],Ut=()=>{for(const Z of Nn)Z()},Qt=A.GetWatchState(i,X.route);Qt.then(Z=>{!Wt&&Z?.resources[X.type]!==void 0&&Ae({state:Z.resources[X.type]})}).catch(Z=>Ae({error:Z}));const Kt=nt.current.then(async()=>{Se()&&(await A.SubscribeResource(i,ge),$t=!0,Se()&&(ft=A.EnsureResourceWatch(i,X),await ft,Ae({live:!0})))}).catch(Z=>{Ut(),Ae({error:Z,state:Q.WatchState.WatchStateError,live:!1}),Se()&&xe(c.current,Z,"Failed to subscribe to resource updates")});return nt.current=Kt,()=>{Te=!1,Ut(),Qt.cancel(),ft?.cancel(),nt.current=Kt.then(async()=>{$t&&await A.UnsubscribeResource(i,ge)}).catch(Z=>{xe(c.current,Z,"Failed to unsubscribe from resource updates")})}},Qe=[i,E,U,te,D,ve,Ne],e[62]=U,e[63]=E,e[64]=Ne,e[65]=D,e[66]=i,e[67]=te,e[68]=ve,e[69]=Ue,e[70]=Qe):(Ue=e[69],Qe=e[70]),C.useEffect(Ue,Qe);const Ce=he!==void 0,st=Ce&&K?.requestHash===g,rt=he?.page.view,ot=he?.page.view?.membershipStale??!1,it=Ce?we:Q.WatchState.WatchStateIdle,ct=Ce&&jt,at=Ce&&we===Q.WatchState.WatchStateSyncing,lt=Ce&&we===Q.WatchState.WatchStateSynced,ut=Ce?Dn??(we===Q.WatchState.WatchStateError||we===Q.WatchState.WatchStateFailed||we===Q.WatchState.WatchStateForbidden?!0:void 0):void 0,dt=Ce&&jt?"bestEffort":void 0;let Ke;return e[71]!==he||e[72]!==oe.refetch||e[73]!==q||e[74]!==st||e[75]!==rt||e[76]!==ot||e[77]!==it||e[78]!==ct||e[79]!==at||e[80]!==lt||e[81]!==ut||e[82]!==dt?(Ke={resources:q,acquired:he,isAcquiredRequestCurrent:st,refreshAcquiredPage:oe.refetch,view:rt,membershipStale:ot,watchState:it,isLive:ct,isSyncing:at,isSynced:lt,watchError:ut,guarantee:dt},e[71]=he,e[72]=oe.refetch,e[73]=q,e[74]=st,e[75]=rt,e[76]=ot,e[77]=it,e[78]=ct,e[79]=at,e[80]=lt,e[81]=ut,e[82]=dt,e[83]=Ke):Ke=e[83],Ke},Qs=t=>{const e=W.c(13),{pluginID:r}=t,n=B(r),s=T.useQueryClient(),{showSnackbar:l}=de();let o;e[0]!==n?(o=async d=>(await Me(n,d.route.connection),A.Mutate(n,d)),e[0]=n,e[1]=o):o=e[1];let u;e[2]!==n||e[3]!==s?(u=async()=>{await s.invalidateQueries({queryKey:me.all(n)})},e[2]=n,e[3]=s,e[4]=u):u=e[4];let i;e[5]!==l?(i=ne(l,"Failed to mutate resource"),e[5]=l,e[6]=i):i=e[6];let a;e[7]!==o||e[8]!==u||e[9]!==i?(a={mutationFn:o,onSuccess:u,onError:i},e[7]=o,e[8]=u,e[9]=i,e[10]=a):a=e[10];const f=T.useMutation(a);let c;return e[11]!==f?(c={mutate:f.mutateAsync,mutation:f},e[11]=f,e[12]=c):c=e[12],c},Ks=t=>{const e=W.c(25),{pluginID:r,route:n,type:s,enabled:l}=t,o=l===void 0?!0:l,u=B(r),i=n.connection,a=o&&!!s;let f;e[0]!==i||e[1]!==u||e[2]!==a?(f={pluginID:u,connectionID:i,enabled:a},e[0]=i,e[1]=u,e[2]=a,e[3]=f):f=e[3];const c=ie(f),d=le(u,i);let h;e[4]!==u||e[5]!==n||e[6]!==s?(h=[u,"resource-v2","actions",n,s],e[4]=u,e[5]=n,e[6]=s,e[7]=h):h=e[7];let y;e[8]!==o||e[9]!==d||e[10]!==u||e[11]!==c||e[12]!==n||e[13]!==s?(y=o&&s&&c.phase==="connected"?E=>{const{signal:b,queryKey:x}=E;return d(x,b,()=>A.GetActions(u,n,s))}:T.skipToken,e[8]=o,e[9]=d,e[10]=u,e[11]=c,e[12]=n,e[13]=s,e[14]=y):y=e[14];const g=o&&!!u&&!!n.connection&&!!s&&c.phase==="connected";let p;e[15]!==h||e[16]!==y||e[17]!==g?(p={queryKey:h,queryFn:y,enabled:g,staleTime:3e5},e[15]=h,e[16]=y,e[17]=g,e[18]=p):p=e[18];const m=T.useQuery(p);let S;e[19]!==m.data?(S=m.data??[],e[19]=m.data,e[20]=S):S=e[20];let v;return e[21]!==m.error||e[22]!==m.isLoading||e[23]!==S?(v={actions:S,isLoading:m.isLoading,error:m.error},e[21]=m.error,e[22]=m.isLoading,e[23]=S,e[24]=v):v=e[24],v},Gs=t=>{const e=W.c(15),{pluginID:r}=t,n=B(r),s=T.useQueryClient(),{showSnackbar:l}=de();let o;e[0]!==n?(o=async d=>(await Me(n,d.route.connection),A.Action(n,d)),e[0]=n,e[1]=o):o=e[1];let u;e[2]!==n||e[3]!==s?(u=async()=>{await s.invalidateQueries({queryKey:me.all(n)})},e[2]=n,e[3]=s,e[4]=u):u=e[4];let i;e[5]!==l?(i=(d,h)=>{xe(l,d,`Failed to execute action "${h.action}"`)},e[5]=l,e[6]=i):i=e[6];let a;e[7]!==o||e[8]!==u||e[9]!==i?(a={mutationFn:o,onSuccess:u,onError:i},e[7]=o,e[8]=u,e[9]=i,e[10]=a):a=e[10];const f=T.useMutation(a);let c;return e[11]!==f.error||e[12]!==f.isPending||e[13]!==f.mutateAsync?(c={executeAction:f.mutateAsync,isExecuting:f.isPending,error:f.error},e[11]=f.error,e[12]=f.isPending,e[13]=f.mutateAsync,e[14]=c):c=e[14],c},Bs=t=>{const e=W.c(27),{pluginID:r,route:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r),u=T.useQueryClient();let i;e[0]!==l||e[1]!==o||e[2]!==n.connection?(i={pluginID:o,connectionID:n.connection,enabled:l},e[0]=l,e[1]=o,e[2]=n.connection,e[3]=i):i=e[3];const a=ie(i),f=le(o,n.connection),c=l&&!!o&&!!n.connection&&a.phase==="connected";let d;e[4]!==o||e[5]!==n?(d=[o,"resource-v2","editor-schemas",n],e[4]=o,e[5]=n,e[6]=d):d=e[6];let h;e[7]!==f||e[8]!==o||e[9]!==u||e[10]!==c||e[11]!==n?(h=c?v=>{const{signal:E,queryKey:b}=v;return f(b,E,async()=>{const x=await f(b,E,()=>A.GetEditorSchemas(o,n)),I=[],_=new Set;for(const R of x){const D=R.binding.documentRef;if(!D)continue;const F=JSON.stringify([D.id,D.revision]);_.has(F)||(I.push(await u.fetchQuery({queryKey:[o,"resource-v2","schema-document",n,D],queryFn:O=>{const{signal:k,queryKey:w}=O;return f(w,AbortSignal.any([E,k]),()=>A.GetSchemaDocument(o,n,D))},staleTime:1/0})),_.add(F))}return{schemas:x,documents:I}})}:T.skipToken,e[7]=f,e[8]=o,e[9]=u,e[10]=c,e[11]=n,e[12]=h):h=e[12];let y;e[13]!==c||e[14]!==d||e[15]!==h?(y={queryKey:d,queryFn:h,enabled:c,staleTime:6e5,retry:1},e[13]=c,e[14]=d,e[15]=h,e[16]=y):y=e[16];const g=T.useQuery(y);let p;e[17]!==g.data?.schemas?(p=g.data?.schemas??[],e[17]=g.data?.schemas,e[18]=p):p=e[18];let m;e[19]!==g.data?.documents?(m=g.data?.documents??[],e[19]=g.data?.documents,e[20]=m):m=e[20];let S;return e[21]!==g.error||e[22]!==g.isLoading||e[23]!==g.refetch||e[24]!==p||e[25]!==m?(S={schemas:p,documents:m,isLoading:g.isLoading,error:g.error,refetch:g.refetch},e[21]=g.error,e[22]=g.isLoading,e[23]=g.refetch,e[24]=p,e[25]=m,e[26]=S):S=e[26],S};function Ht(t){const e=Object.values(t.resources);return{...t,totalResources:e.length,syncedCount:e.filter(r=>r===Q.WatchState.WatchStateSynced).length,errorCount:e.filter(r=>r===Q.WatchState.WatchStateError||r===Q.WatchState.WatchStateFailed).length}}const zs=t=>{const e=W.c(38),{pluginID:r,route:n,enabled:s}=t,l=s===void 0?!0:s,o=B(r),u=T.useQueryClient(),i=n.connection;let a;e[0]!==i?(a={connection:i},e[0]=i,e[1]=a):a=e[1];let f;e[2]!==o||e[3]!==a?(f=[o,"resource-v2","watch-state",a],e[2]=o,e[3]=a,e[4]=f):f=e[4];const c=f;let d;e[5]===Symbol.for("react.memo_cache_sentinel")?(d=[],e[5]=d):d=e[5];const h=C.useRef(d),y=C.useRef(!1);let g;e[6]!==u||e[7]!==c?(g=P=>{u.setQueryData(c,q=>q&&Ht({...q,resources:{...q.resources,[P.type]:P.state},resourceCounts:{...q.resourceCounts,[P.type]:P.count}}))},e[6]=u,e[7]=c,e[8]=g):g=e[8];const p=g;let m;e[9]!==i||e[10]!==o?(m=async()=>{const P=await A.GetWatchState(o,{connection:i});if(!P)throw new Error("Failed to get watch state: null response");return Ht(P)},e[9]=i,e[10]=o,e[11]=m):m=e[11];const S=l&&!!o&&!!i;let v;e[12]!==c||e[13]!==m||e[14]!==S?(v={queryKey:c,queryFn:m,enabled:S,refetchInterval:Hs},e[12]=c,e[13]=m,e[14]=S,e[15]=v):v=e[15];const E=T.useQuery(v);let b,x;e[16]!==p||e[17]!==i||e[18]!==l||e[19]!==o?(x=()=>{if(y.current=!1,h.current=[],!l||!i)return;const P=G.On(`${o}/${i}/watch/STATE`,q=>{const $=q.data;$.route.connection===i&&(y.current?p($):h.current.push($))});return()=>{P(),y.current=!1,h.current=[]}},b=[o,i,l,p],e[16]=p,e[17]=i,e[18]=l,e[19]=o,e[20]=b,e[21]=x):(b=e[20],x=e[21]),C.useEffect(x,b);let I,_;e[22]!==p||e[23]!==E.data?(I=()=>{if(!E.data||y.current)return;y.current=!0;const P=h.current;h.current=[];for(const q of P)p(q)},_=[E.data,p],e[22]=p,e[23]=E.data,e[24]=I,e[25]=_):(I=e[24],_=e[25]),C.useEffect(I,_);let R;e[26]!==E.data?.resources?(R=Object.values(E.data?.resources??{}),e[26]=E.data?.resources,e[27]=R):R=e[27];const D=R;let F;e[28]!==D?(F=D.filter(Vs),e[28]=D,e[29]=F):F=e[29];const O=F.length;let k;e[30]!==E.data?.resources?(k=P=>E.data?.resources[P],e[30]=E.data?.resources,e[31]=k):k=e[31];const w=D.length>0&&O===D.length,L=D.length?O/D.length:0,M=E.data?.errorCount??0;let j;return e[32]!==E||e[33]!==k||e[34]!==w||e[35]!==L||e[36]!==M?(j={summary:E,getResourceState:k,isFullySynced:w,syncProgress:L,errorCount:M,guarantee:"bestEffort"},e[32]=E,e[33]=k,e[34]=w,e[35]=L,e[36]=M,e[37]=j):j=e[37],j};function Js(t){return t!==Q.WatchState.WatchStateIdle&&t!==Q.WatchState.WatchStateSyncing}function Hs(t){const e=Object.values(t.state.data?.resources??{});return e.length&&e.every(Js)?!1:3e3}function Vs(t){return t!==Q.WatchState.WatchStateIdle&&t!==Q.WatchState.WatchStateSyncing}const Ys=()=>{const t=W.c(16);let e;t[0]===Symbol.for("react.memo_cache_sentinel")?(e=new Map,t[0]=e):e=t[0];const[r,n]=C.useState(e);let s;t[1]===Symbol.for("react.memo_cache_sentinel")?(s=new Map,t[1]=s):s=t[1];const l=C.useRef(s);let o;t[2]===Symbol.for("react.memo_cache_sentinel")?(o=new Map,t[2]=o):o=t[2];const u=C.useRef(o);let i;t[3]===Symbol.for("react.memo_cache_sentinel")?(i=S=>{const v=S.data,E=qt(v.pluginID,v),b=xt(l.current,v.pluginID,v),x=_t(b);if(n(I=>{const _=new Map(I);return _.set(E,x),_}),u.current.has(E)&&(clearTimeout(u.current.get(E)),u.current.delete(E)),Xe(x)){const I=setTimeout(()=>{n(_=>{const R=new Map(_);return R.delete(E),R}),l.current.delete(E),u.current.delete(E)},5e3);u.current.set(E,I)}},t[3]=i):i=t[3];const a=i;let f,c;t[4]===Symbol.for("react.memo_cache_sentinel")?(f=()=>{const S=u.current,v=G.On("watch/STATE",a);return()=>{v();for(const E of S.values())clearTimeout(E);S.clear()}},c=[a],t[4]=f,t[5]=c):(f=t[4],c=t[5]),C.useEffect(f,c);let d,h,y,g;t[6]!==r?(y=Array.from(r.values()),d=gn(y),h=y.find(Zs)??y[0]??null,g=yn(y),t[6]=r,t[7]=d,t[8]=h,t[9]=y,t[10]=g):(d=t[7],h=t[8],y=t[9],g=t[10]);const p=g;let m;return t[11]!==p||t[12]!==d||t[13]!==h||t[14]!==y?(m={syncs:y,hasSyncing:d,primarySync:h,aggregateProgress:p},t[11]=p,t[12]=d,t[13]=h,t[14]=y,t[15]=m):m=t[15],m};function Zs(t){return!Xe(t)}const bn=()=>{const t=C.useContext(Pt);if(!t)throw new Error("useOperations must be used within an OperationsProvider");return t};function Je(t){switch(t.kind){case"null":return null;case"bool":case"string":case"double":case"timestamp":return t.value;case"int64":case"uint64":{const e=BigInt(t.value);return e>=-9007199254740991n&&e<=9007199254740991n?Number(e):e}case"list":return t.value.map(Je);case"map":return Object.fromEntries(Object.entries(t.value).map(([e,r])=>[e,Je(r)]))}}function Rt(t){for(let e=0;e<t.length;e++){const r=t.charCodeAt(e);if(r>=55296&&r<=56319){const n=t.charCodeAt(++e);if(!(n>=56320&&n<=57343))throw new TypeError("Resource strings require valid Unicode")}else if(r>=56320&&r<=57343)throw new TypeError("Resource strings require valid Unicode")}return t}function Dt(t){const e=BigInt(t);if(e>=-(1n<<63n)&&e<=(1n<<63n)-1n)return{kind:"int64",value:e.toString()};if(e>=0n&&e<=(1n<<64n)-1n)return{kind:"uint64",value:e.toString()};throw new RangeError("Integer exceeds the resource Value range")}function Nt(t){if(t===null)return{kind:"null"};if(typeof t=="boolean")return{kind:"bool",value:t};if(typeof t=="string")return{kind:"string",value:Rt(t)};if(typeof t=="bigint")return Dt(t.toString());if(typeof t=="number"){if(!Number.isFinite(t))throw new TypeError("Resource values require finite numbers");if(Number.isInteger(t)&&!Object.is(t,-0)){if(!Number.isSafeInteger(t))throw new RangeError("Use bigint for exact resource integers");return Dt(t.toString())}return{kind:"double",value:t}}if(Array.isArray(t))return{kind:"list",value:t.map(Nt)};if(typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype)return{kind:"map",value:Object.fromEntries(Object.entries(t).map(([e,r])=>[Rt(e),Nt(r)]))};throw new TypeError("Unsupported resource value")}function Tt(t){switch(t.kind){case"null":return"null";case"bool":case"string":case"timestamp":return JSON.stringify(t.value);case"int64":case"uint64":return t.value;case"double":{if(!Number.isFinite(t.value))throw new TypeError("Resource values require finite numbers");if(Object.is(t.value,-0))return"-0.0";const e=JSON.stringify(t.value);return/[.eE]/.test(e)?e:`${e}.0`}case"list":return`[${t.value.map(Tt).join(",")}]`;case"map":return`{${Object.entries(t.value).map(([e,r])=>`${JSON.stringify(e)}:${Tt(r)}`).join(",")}}`}}function Xs(t){let e=0;const r=()=>{throw new SyntaxError(`Invalid resource JSON at offset ${e}`)},n=()=>{for(;e<t.length&&/[\t\n\r ]/.test(t[e]);)e++},s=()=>{const u=e++;for(;e<t.length;){const i=t[e++];if(i==="\\"){e++;continue}if(i==='"')return Rt(JSON.parse(t.slice(u,e)))}return r()},l=u=>{if(u>64)throw new RangeError("Resource JSON exceeds maximum depth");n();const i=t[e];if(i==='"')return{kind:"string",value:s()};if(i==="["){e++,n();const c=[];if(t[e]==="]")return e++,{kind:"list",value:c};for(;e<t.length;){if(c.push(l(u+1)),n(),t[e]==="]")return e++,{kind:"list",value:c};if(t[e++]!==",")return r()}return r()}if(i==="{"){e++,n();const c=[],d=new Set;if(t[e]==="}")return e++,{kind:"map",value:{}};for(;e<t.length;){if(n(),t[e]!=='"')return r();const h=s();if(d.has(h))throw new SyntaxError(`Duplicate resource JSON key: ${h}`);if(d.add(h),n(),t[e++]!==":")return r();if(c.push([h,l(u+1)]),n(),t[e]==="}")return e++,{kind:"map",value:Object.fromEntries(c)};if(t[e++]!==",")return r()}return r()}for(const[c,d]of[["null",{kind:"null"}],["true",{kind:"bool",value:!0}],["false",{kind:"bool",value:!1}]])if(t.startsWith(c,e))return e+=c.length,d;const a=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(t.slice(e));if(!a)return r();if(e+=a[0].length,!/[.eE]/.test(a[0])&&a[0]!=="-0")return Dt(a[0]);const f=Number(a[0]);if(!Number.isFinite(f))throw new RangeError("Resource JSON number must be finite");return{kind:"double",value:f}},o=l(0);return n(),e!==t.length?r():o}const er=({pluginID:t})=>{const e=B(t),{showSnackbar:r}=de(),{addOperation:n,updateOperation:s}=bn(),l=C.useRef(new Set),o=C.useCallback((a,f=!1)=>{a.disposed||(a.disposed=!0,a.unsubscribe?.(),a.open?.cancel(),a.attach?.cancel(),a.handle&&(A.CancelStreamAction(a.handle).catch(()=>{}),f&&s(a.handle,{status:"cancelled",message:"Cancelled",completedAt:Date.now()})),l.current.delete(a))},[s]);C.useEffect(()=>()=>{for(const a of l.current)o(a,!0)},[e,o]);const u=C.useCallback(async({request:a,label:f})=>{const c={disposed:!1,terminal:!1,sequence:0};l.current.add(c);try{if(await Me(e,a.route.connection),c.disposed)throw new Error("Stream action was cancelled before the connection became ready");c.open=A.StreamAction(e,a);const d=await c.open;if(c.open=void 0,c.disposed)return A.CancelStreamAction(d).catch(()=>{}),d;c.handle=d,n({id:d,label:f,resourceKey:a.typeTarget?.type??a.reference?.address.type??"",resourceName:a.reference?.address.id??"",connectionID:a.route.connection,status:"running",startedAt:Date.now()});const h=g=>{if(c.disposed||!Number.isSafeInteger(g.sequence)||g.sequence<=c.sequence)return;c.sequence=g.sequence;const p=g.event,m=p.data?Je(p.data):void 0,S=m&&typeof m=="object"&&!Array.isArray(m)?m:{};if(p.type==="error"){c.terminal=!0;const v=ae(p.error);s(d,{status:qe(v)?"cancelled":"error",message:v.title,completedAt:Date.now()}),xe(r,v,f),o(c)}else if(p.type==="complete"){c.terminal=!0;const v=typeof S.message=="string"?S.message:`${f} completed`;s(d,{status:"completed",message:v,completedAt:Date.now()}),r(v,"success"),o(c)}else s(d,{message:typeof S.message=="string"?S.message:void 0,progress:(typeof S.ready=="number"||typeof S.ready=="bigint")&&(typeof S.desired=="number"||typeof S.desired=="bigint")?{ready:Number(S.ready),desired:Number(S.desired)}:void 0})};c.unsubscribe=G.On(`action/stream/${d}`,g=>h(g.data)),c.attach=A.AttachStreamAction(d);const y=await c.attach;return c.attach=void 0,h(y),d}catch(d){if(c.terminal&&c.handle)return c.handle;throw c.disposed||(c.handle&&s(c.handle,{status:qe(d)?"cancelled":"error",message:ae(d).title,completedAt:Date.now()}),xe(r,d,`Failed to start "${a.action}"`)),o(c),d}},[e,n,s,r,o]),i=C.useCallback(a=>{for(const f of l.current)if(f.handle===a){o(f,!0);return}},[o]);return{startStreamAction:u,cancelStreamAction:i}};function wn(t,e){return`${t}/${e}/graph/CHANGED`}function et(t,e,r,n){const s=W.c(16),l=T.useQueryClient(),o=C.useRef(r);let u,i;s[0]!==r?(u=()=>{o.current=r},i=[r],s[0]=r,s[1]=u,s[2]=i):(u=s[1],i=s[2]),C.useLayoutEffect(u,i);let a;s[3]!==r?(a=JSON.stringify(r),s[3]=r,s[4]=a):a=s[4];const f=a;let c;s[5]!==e||s[6]!==n||s[7]!==t||s[8]!==l?(c=()=>{if(!n||!t||!e)return;const h=G.On(wn(t,e),()=>{l.invalidateQueries({queryKey:o.current,exact:!0})});return()=>{h()}},s[5]=e,s[6]=n,s[7]=t,s[8]=l,s[9]=c):c=s[9];let d;s[10]!==e||s[11]!==n||s[12]!==f||s[13]!==t||s[14]!==l?(d=[l,t,e,f,n],s[10]=e,s[11]=n,s[12]=f,s[13]=t,s[14]=l,s[15]=d):d=s[15],C.useEffect(c,d)}const tr={owns:{outgoing:"Owns",incoming:"Owned by"},runs_on:{outgoing:"Runs on",incoming:"Running here"},uses:{outgoing:"Uses",incoming:"Used by"},exposes:{outgoing:"Exposes",incoming:"Exposed by"},manages:{outgoing:"Manages",incoming:"Managed by"},member_of:{outgoing:"Member of",incoming:"Members"},selects:{outgoing:"Selects",incoming:"Selected by"}};function nr(t,e){const r=tr[t];if(r)return r[e];const n=t.replace(/_/g," ");return e==="outgoing"?n:`${n} (incoming)`}function Cn(t,e){return e.map(r=>{const n=Q.sameGraphNode(r.source,t);return{resource:n?r.target:r.source,type:r.type,direction:n?"outgoing":"incoming",label:r.label}})}const sr=t=>{const e=W.c(38),{pluginID:r,reference:n,route:s,direction:l,relationshipType:o,enabled:u,refetchInterval:i}=t,a=l===void 0?"both":l,f=u===void 0?!0:u,c=i===void 0?!1:i,d=B(r),h=o??null;let y;e[0]!==a||e[1]!==d||e[2]!==n||e[3]!==s||e[4]!==h?(y=["RESOURCE_RELATED",d,n,s,a,h],e[0]=a,e[1]=d,e[2]=n,e[3]=s,e[4]=h,e[5]=y):y=e[5];const g=y,p=f&&!!n.address.id;let m;e[6]!==d||e[7]!==s.connection||e[8]!==p?(m={pluginID:d,connectionID:s.connection,enabled:p},e[6]=d,e[7]=s.connection,e[8]=p,e[9]=m):m=e[9];const S=ie(m),v=le(d,s.connection),E=f&&!!d&&!!s.connection&&!!n.address.id&&S.phase==="connected";et(d,s.connection,g,E);let b;e[10]!==a||e[11]!==v||e[12]!==d||e[13]!==E||e[14]!==n||e[15]!==o||e[16]!==s?(b=E?F=>{const{signal:O,queryKey:k}=F;return v(k,O,()=>A.GetRelated(d,n,s,a,o??null))}:T.skipToken,e[10]=a,e[11]=v,e[12]=d,e[13]=E,e[14]=n,e[15]=o,e[16]=s,e[17]=b):b=e[17];let x;e[18]!==E||e[19]!==g||e[20]!==c||e[21]!==b?(x={queryKey:g,queryFn:b,enabled:E,refetchInterval:c},e[18]=E,e[19]=g,e[20]=c,e[21]=b,e[22]=x):x=e[22];const I=T.useQuery(x);let _,R;if(e[23]!==d||e[24]!==I.data||e[25]!==n||e[26]!==s){const F={pluginId:d,reference:n};let O;e[29]!==I.data?(O=I.data??[],e[29]=I.data,e[30]=O):O=e[30],_=O,R=Cn(F,_),e[23]=d,e[24]=I.data,e[25]=n,e[26]=s,e[27]=_,e[28]=R}else _=e[27],R=e[28];let D;return e[31]!==_||e[32]!==I.error||e[33]!==I.isFetching||e[34]!==I.isLoading||e[35]!==I.refetch||e[36]!==R?(D={related:R,edges:_,isLoading:I.isLoading,isFetching:I.isFetching,error:I.error,refetch:I.refetch},e[31]=_,e[32]=I.error,e[33]=I.isFetching,e[34]=I.isLoading,e[35]=I.refetch,e[36]=R,e[37]=D):D=e[37],D},rr=t=>{const e=W.c(27),{pluginID:r,reference:n,route:s,maxDepth:l,enabled:o,refetchInterval:u}=t,i=l===void 0?3:l,a=o===void 0?!0:o,f=u===void 0?!1:u,c=B(r);let d;e[0]!==i||e[1]!==c||e[2]!==n||e[3]!==s?(d=["RESOURCE_DEPENDENCY_TREE",c,n,s,i],e[0]=i,e[1]=c,e[2]=n,e[3]=s,e[4]=d):d=e[4];const h=d,y=a&&!!n.address.id;let g;e[5]!==c||e[6]!==s.connection||e[7]!==y?(g={pluginID:c,connectionID:s.connection,enabled:y},e[5]=c,e[6]=s.connection,e[7]=y,e[8]=g):g=e[8];const p=ie(g),m=le(c,s.connection),S=a&&!!c&&!!s.connection&&!!n.address.id&&p.phase==="connected";et(c,s.connection,h,S);let v;e[9]!==m||e[10]!==i||e[11]!==c||e[12]!==S||e[13]!==n||e[14]!==s?(v=S?_=>{const{signal:R,queryKey:D}=_;return m(D,R,()=>A.GetDependencyTree(c,n,s,i))}:T.skipToken,e[9]=m,e[10]=i,e[11]=c,e[12]=S,e[13]=n,e[14]=s,e[15]=v):v=e[15];let E;e[16]!==S||e[17]!==h||e[18]!==f||e[19]!==v?(E={queryKey:h,queryFn:v,enabled:S,refetchInterval:f},e[16]=S,e[17]=h,e[18]=f,e[19]=v,e[20]=E):E=e[20];const b=T.useQuery(E),x=b.data??null;let I;return e[21]!==b.error||e[22]!==b.isFetching||e[23]!==b.isLoading||e[24]!==b.refetch||e[25]!==x?(I={tree:x,isLoading:b.isLoading,isFetching:b.isFetching,error:b.error,refetch:b.refetch},e[21]=b.error,e[22]=b.isFetching,e[23]=b.isLoading,e[24]=b.refetch,e[25]=x,e[26]=I):I=e[26],I},or=t=>{const e=W.c(28),{pluginID:r,reference:n,route:s,upDepth:l,downDepth:o,enabled:u}=t,i=l===void 0?2:l,a=o===void 0?3:o,f=u===void 0?!0:u,c=B(r);let d;e[0]!==a||e[1]!==c||e[2]!==n||e[3]!==s||e[4]!==i?(d=["RESOURCE_GRAPH",c,n,s,i,a],e[0]=a,e[1]=c,e[2]=n,e[3]=s,e[4]=i,e[5]=d):d=e[5];const h=d,y=f&&!!n.address.id;let g;e[6]!==c||e[7]!==s.connection||e[8]!==y?(g={pluginID:c,connectionID:s.connection,enabled:y},e[6]=c,e[7]=s.connection,e[8]=y,e[9]=g):g=e[9];const p=ie(g),m=le(c,s.connection),S=f&&!!c&&!!s.connection&&!!n.address.id&&p.phase==="connected";et(c,s.connection,h,S);let v;e[10]!==a||e[11]!==m||e[12]!==c||e[13]!==S||e[14]!==n||e[15]!==s||e[16]!==i?(v=S?_=>{const{signal:R,queryKey:D}=_;return m(D,R,()=>A.GetSubgraph(c,n,s,i,a))}:T.skipToken,e[10]=a,e[11]=m,e[12]=c,e[13]=S,e[14]=n,e[15]=s,e[16]=i,e[17]=v):v=e[17];let E;e[18]!==S||e[19]!==h||e[20]!==v?(E={queryKey:h,queryFn:v,enabled:S,retry:!1},e[18]=S,e[19]=h,e[20]=v,e[21]=E):E=e[21];const b=T.useQuery(E),x=b.data??null;let I;return e[22]!==b.error||e[23]!==b.isFetching||e[24]!==b.isLoading||e[25]!==b.refetch||e[26]!==x?(I={graph:x,isLoading:b.isLoading,isFetching:b.isFetching,error:b.error,refetch:b.refetch},e[22]=b.error,e[23]=b.isFetching,e[24]=b.isLoading,e[25]=b.refetch,e[26]=x,e[27]=I):I=e[27],I},ir=()=>{const t=C.useContext(kt);if(!t)throw new Error("useSettings must be used within a SettingsProvider");return t},cr=1,ar=t=>{const e=W.c(19);let r,n,s,l;if(e[0]!==t){const{to:g,withinContext:p,onClick:m,onAuxClick:S,...v}=t;l=g,n=m,r=S,s=v,e[0]=t,e[1]=r,e[2]=n,e[3]=s,e[4]=l}else r=e[1],n=e[2],s=e[3],l=e[4];const{pluginId:o}=Ve(),u=C.useContext(Ye);o||console.error("Link used outside of a plugin context");const i=`/_plugin/${o}${l.startsWith("/")?"":"/"}${l}`;let a;e[5]!==n||e[6]!==i||e[7]!==u?(a=g=>{n?.(g),!(g.defaultPrevented||!u||!(g.ctrlKey||g.metaKey))&&(g.preventDefault(),u.openInNewTab(i,{background:!0}))},e[5]=n,e[6]=i,e[7]=u,e[8]=a):a=e[8];const f=a;let c;e[9]!==r||e[10]!==i||e[11]!==u?(c=g=>{r?.(g),!(g.defaultPrevented||!u||g.button!==cr)&&(g.preventDefault(),u.openInNewTab(i,{background:!0}))},e[9]=r,e[10]=i,e[11]=u,e[12]=c):c=e[12];const d=c;let h;e[13]===Symbol.for("react.memo_cache_sentinel")?(h={textDecoration:"none",color:"inherit"},e[13]=h):h=e[13];let y;return e[14]!==d||e[15]!==f||e[16]!==s||e[17]!==i?(y=N.jsx(ze.Link,{style:h,...s,to:i,onClick:f,onAuxClick:d}),e[14]=d,e[15]=f,e[16]=s,e[17]=i,e[18]=y):y=e[18],y};function lr(){const t=W.c(10),e=ze.useNavigate(),r=ze.useLocation(),{pluginId:n}=Ve();n||console.error("usePluginRouter used outside of a plugin context");const s=`/_plugin/${n}`;let l;t[0]!==r.pathname||t[1]!==s?(l=r.pathname.startsWith(s)?r.pathname.slice(s.length)||"/":r.pathname,t[0]=r.pathname,t[1]=s,t[2]=l):l=t[2];const o=l;let u;t[3]!==e||t[4]!==s?(u=(f,c)=>{const{...d}=c??{};f.startsWith("/")?e(`${s}${f}`,d):e(f,d)},t[3]=e,t[4]=s,t[5]=u):u=t[5];const i=u;let a;return t[6]!==r||t[7]!==i||t[8]!==o?(a={location:r,navigate:i,pluginPath:o},t[6]=r,t[7]=i,t[8]=o,t[9]=a):a=t[9],a}class ur{}class dr{_extensions;root;pages;_routes;get extensions(){return this._extensions||[]}get Routes(){if(!this._routes&&this.root)return[{path:"",index:!0,Component:this.root}];if(!this._routes?.length)throw new Error("cannot use plugin without a root page or router");return this._routes}get Window(){if(!this._routes&&this.root)return N.jsx(this.root,{});const e=ze.createMemoryRouter(this._routes||[]);return N.jsx(Tn.RouterProvider,{router:e})}registerExtensionPoints(e){return this._extensions=e||[],this}setRootPage(e){return this.root=e,this}withPage(e,r){return this.pages||(this.pages={}),this.pages[e]?(console.warn("Cannot register page with the same name. Please use a different name."),this):(this.pages[e]=r,this)}withRoutes(e){return this._routes=e,this}}var In=(t=>(t.MISSING_MANIFEST="MISSING_MANIFEST",t.MISSING_PLUGIN="MISSING_PLUGIN",t.MISSING_ENTRYPOINT="MISSING_ENTRYPOINT",t))(In||{});const _n="omniview/global-search/open";function fr(t={}){window.dispatchEvent(new CustomEvent(_n,{detail:t}))}const xn="omniview/resource/icons";class hr extends C.Component{state={failed:!1,resetToken:this.props.resetToken};static getDerivedStateFromProps(e,r){return e.resetToken!==r.resetToken?{failed:!1,resetToken:e.resetToken}:null}static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?this.props.fallback:this.props.children}}function pr(t,e){try{return t?.schemaVersion!==1||typeof t.resolve!="function"?void 0:t.resolve(e)}catch{return}}function gr(t){const e=W.c(7);let r,n;e[0]!==t?({icon:r,...n}=t,e[0]=t,e[1]=r,e[2]=n):(r=e[1],n=e[2]);const s=n["aria-hidden"]??!0;let l;return e[3]!==r||e[4]!==n||e[5]!==s?(l=N.jsx(r,{...n,"aria-hidden":s}),e[3]=r,e[4]=n,e[5]=s,e[6]=l):l=e[6],l}function yr(t){const e=W.c(17);let r,n,s,l;e[0]!==t?({pluginId:n,resourceKey:l,fallback:r,...s}=t,e[0]=t,e[1]=r,e[2]=n,e[3]=s,e[4]=l):(r=e[1],n=e[2],s=e[3],l=e[4]);const{version:o,contributions:u}=At(xn);let i;e[5]!==r||e[6]!==s?(i=r===void 0?N.jsx("svg",{width:s.size??16,height:s.size??16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",className:s.className,"aria-hidden":s["aria-hidden"]??!0,children:N.jsx("path",{d:"m12 3 9 5v8l-9 5-9-5V8l9-5Zm0 9 9-4M12 12 3 8m9 4v9"})}):r,e[5]=r,e[6]=s,e[7]=i):i=e[7];const a=i;let f;if(e[8]!==u||e[9]!==a||e[10]!==n||e[11]!==s||e[12]!==l||e[13]!==o){f=Symbol.for("react.early_return_sentinel");e:for(const d of u){if(d.plugin!==n)continue;const h=pr(d.value,l);if(h){f=N.jsx(hr,{resetToken:d,fallback:a,children:N.jsx(C.Suspense,{fallback:a,children:N.jsx(gr,{icon:h,...s})})},JSON.stringify([n,l,o,d.id]));break e}}e[8]=u,e[9]=a,e[10]=n,e[11]=s,e[12]=l,e[13]=o,e[14]=f}else f=e[14];if(f!==Symbol.for("react.early_return_sentinel"))return f;let c;return e[15]!==a?(c=N.jsx(N.Fragment,{children:a}),e[15]=a,e[16]=c):c=e[16],c}function mr(t){const e=W.c(23);let r,n,s;e[0]!==t?({pluginID:r,enabled:s,...n}=t,e[0]=t,e[1]=r,e[2]=n,e[3]=s):(r=e[1],n=e[2],s=e[3]);const l=s===void 0?!0:s,o=B(r),u=l&&!!n.type;let i;e[4]!==o||e[5]!==n.route.connection||e[6]!==u?(i={pluginID:o,connectionID:n.route.connection,enabled:u},e[4]=o,e[5]=n.route.connection,e[6]=u,e[7]=i):i=e[7];const a=ie(i),f=le(o,n.route.connection),c=l&&!!o&&!!n.route.connection&&!!n.type&&a.phase==="connected";let d;e[8]!==o||e[9]!==n?(d=[o,"resource-v2","resolve-target",n],e[8]=o,e[9]=n,e[10]=d):d=e[10];let h;e[11]!==f||e[12]!==o||e[13]!==c||e[14]!==n?(h=c?S=>{const{signal:v,queryKey:E}=S;return f(E,v,()=>A.ResolveTarget(o,n))}:T.skipToken,e[11]=f,e[12]=o,e[13]=c,e[14]=n,e[15]=h):h=e[15];let y;e[16]!==c||e[17]!==d||e[18]!==h?(y={queryKey:d,queryFn:h,enabled:c,retry:!1,placeholderData:void 0},e[16]=c,e[17]=d,e[18]=h,e[19]=y):y=e[19];const g=T.useQuery(y),p=c&&g.isSuccess&&!g.isFetching?g.data:void 0;let m;return e[20]!==g||e[21]!==p?(m={...g,data:p},e[20]=g,e[21]=p,e[22]=m):m=e[22],m}exports.SyncPolicy=Q.SyncPolicy;exports.WatchState=Q.WatchState;exports.sameGraphNode=Q.sameGraphNode;exports.ALL_SESSIONS_KEY=Ie;exports.BottomDrawerContext=en;exports.ConfirmationModalContext=nn;exports.ConnectionBoundary=ps;exports.ConnectionBoundaryFallback=mn;exports.ErrorTypes=V;exports.ExtensionPointRegistry=Bn;exports.ExtensionPointStore=cn;exports.ExtensionProvider=Gn;exports.GLOBAL_SEARCH_OPEN_EVENT=_n;exports.Link=ar;exports.OperationsContext=Pt;exports.OperationsProvider=qn;exports.PluginContext=He;exports.PluginContextProvider=kn;exports.PluginErrorCode=In;exports.PluginWindow=dr;exports.PluginWindowRootProps=ur;exports.RESOURCE_ICON_EXTENSION_POINT_ID=xn;exports.ResourceIcon=yr;exports.RightDrawerContext=tn;exports.SettingsContext=kt;exports.SettingsProvider=Ln;exports.SnackbarProvider=Jn;exports.WindowActionsContext=Ye;exports.WindowActionsProvider=Mn;exports.actionToSnackbar=Yt;exports.applyBatch=Sn;exports.connectionListQueryKey=pn;exports.createErrorHandler=ne;exports.defaultState=Xt;exports.graphChangedEvent=wn;exports.isCancelledError=qe;exports.jsonTextToValue=Xs;exports.jsonToValue=Nt;exports.navigateActivePage=Vt;exports.openGlobalSearch=fr;exports.parseAppError=ae;exports.registerActivePageNavigator=On;exports.relationshipLabel=nr;exports.requireConnectionReady=Me;exports.resourceQueryKeys=me;exports.showAppError=xe;exports.toRelatedResources=Cn;exports.useActiveSyncs=Ys;exports.useBottomDrawer=Mt;exports.useConfirmationModal=Os;exports.useConnection=Xn;exports.useConnectionProfiles=os;exports.useConnectionReadiness=ie;exports.useConnectionStatus=rs;exports.useConnections=es;exports.useDependencyTree=rr;exports.useEditorSchemas=Bs;exports.useEventBatcher=En;exports.useExec=vs;exports.useExecuteAction=Gs;exports.useExtensionPoint=Kn;exports.useExtensionPointSnapshot=At;exports.useExtensionRegistry=on;exports.useLogs=Ss;exports.useMetricProviders=bs;exports.useMetricProvidersForResource=vn;exports.useMetricStream=Cs;exports.useOperations=bn;exports.usePluginContext=Ve;exports.usePluginData=ys;exports.usePluginRouter=lr;exports.usePluginSettings=An;exports.usePortForwardSessions=Is;exports.useRefetchOnGraphChange=et;exports.useRelatedResources=sr;exports.useResolvedPluginId=B;exports.useResolvedResourceTarget=mr;exports.useResource=ks;exports.useResourceActions=Ks;exports.useResourceAreaComponent=Ps;exports.useResourceGraph=or;exports.useResourceGroups=As;exports.useResourceMetrics=ws;exports.useResourceMutations=Qs;exports.useResourcePortForwarder=Ns;exports.useResourceSearch=Ls;exports.useResourceType=Ms;exports.useResourceTypes=js;exports.useResources=Us;exports.useRightDrawer=ms;exports.useScopeValues=ss;exports.useSettings=ir;exports.useSnackbar=de;exports.useStreamAction=er;exports.useWatchState=zs;exports.useWindowActions=jn;exports.valueToJSON=Je;exports.valueToJSONText=Tt;exports.withConnectionReady=Yn;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("react/jsx-runtime"),W=require("react/compiler-runtime"),E=require("react"),Q=require("./graph-wHun0Bkz.cjs"),O=require("@tanstack/react-query"),L=require("./servicewrapper-CNtZecKV.cjs");require("./index-BVi9X4oU.cjs");const K=require("./events-DnLqUWri.cjs"),$e=require("react-router"),J=require("@omniviewdev/base-ui"),ht=require("./models-DSGyy8lg.cjs"),ln=require("react-router/dom"),Qe=E.createContext(void 0),Y={PLUGIN_NOT_FOUND:"omniview:plugin/not-found",PLUGIN_NOT_LOADED:"omniview:plugin/not-loaded",PLUGIN_ALREADY_LOADED:"omniview:plugin/already-loaded",PLUGIN_INSTALL_FAILED:"omniview:plugin/install-failed",PLUGIN_LOAD_FAILED:"omniview:plugin/load-failed",PLUGIN_BUILD_FAILED:"omniview:plugin/build-failed",PLUGIN_COMMITTED_CLEANUP_PENDING:"omniview:plugin/committed-cleanup-pending",PLUGIN_COMMIT_UNCERTAIN:"omniview:plugin/commit-uncertain",SETTINGS_MISSING_CONFIG:"omniview:settings/missing-config",SETTINGS_INVALID_CONFIG:"omniview:settings/invalid-config",RESOURCE_NOT_FOUND:"omniview:resource/not-found",RESOURCE_FORBIDDEN:"omniview:resource/forbidden",RESOURCE_UNAUTHORIZED:"omniview:resource/unauthorized",RESOURCE_CONFLICT:"omniview:resource/conflict",RESOURCE_TIMEOUT:"omniview:resource/timeout",RESOURCE_LIMIT:"omniview:resource/limit",RESOURCE_CONTINUATION_EXPIRED:"omniview:resource/continuation-expired",RESOURCE_RESET_REQUIRED:"omniview:resource/reset-required",RESOURCE_PARTIAL:"omniview:resource/partial",RESOURCE_PROVIDER_ERROR:"omniview:resource/provider-error",CONNECTION_NOT_FOUND:"omniview:connection/not-found",CONNECTION_FAILED:"omniview:connection/failed",SESSION_NOT_FOUND:"omniview:session/not-found",SESSION_FAILED:"omniview:session/failed",CANCELLED:"omniview:cancelled",INTERNAL:"omniview:internal",VALIDATION:"omniview:validation",NOT_IMPLEMENTED:"omniview:not-implemented"};let Ae=null;function un(t){return Ae=t,()=>{Ae===t&&(Ae=null)}}function Tt(t){if(!Ae)throw new Error(`cannot navigate to "${t}": this window has no page navigator`);Ae(t)}const xt={INVALID_REQUEST:[Y.VALIDATION,400,"correctRequest"],UNSUPPORTED:[Y.NOT_IMPLEMENTED,501,"refreshContract"],FORBIDDEN:[Y.RESOURCE_FORBIDDEN,403,"none"],UNAUTHORIZED:[Y.RESOURCE_UNAUTHORIZED,401,"none"],NOT_FOUND:[Y.RESOURCE_NOT_FOUND,404,"none"],CONFLICT:[Y.RESOURCE_CONFLICT,409,"refreshContract"],ALREADY_EXISTS:[Y.RESOURCE_CONFLICT,409,"refreshContract"],CANCELLED:[Y.CANCELLED,499,"none"],TIMEOUT:[Y.RESOURCE_TIMEOUT,408,"none"],UNAVAILABLE:[Y.CONNECTION_FAILED,503,"reconnect"],CONNECTION_ERROR:[Y.CONNECTION_FAILED,503,"reconnect"],CERTIFICATE_ERROR:[Y.CONNECTION_FAILED,502,"reconnect"],RESOURCE_LIMIT:[Y.RESOURCE_LIMIT,429,"correctRequest"],CONTINUATION_EXPIRED:[Y.RESOURCE_CONTINUATION_EXPIRED,410,"restartQuery"],RESET_REQUIRED:[Y.RESOURCE_RESET_REQUIRED,409,"restartQuery"],PARTIAL_RESULT:[Y.RESOURCE_PARTIAL,422,"none"],PROVIDER_ERROR:[Y.RESOURCE_PROVIDER_ERROR,502,"none"],INTERNAL:[Y.INTERNAL,500,"none"]};function He(t){return typeof t=="object"&&t!==null?t:void 0}function de(t,e){return typeof t=="string"&&t.length>0&&t.length<=e}function Ve(){return{type:Y.CANCELLED,code:"CANCELLED",title:"Cancelled",status:499,detail:"The operation was cancelled.",recovery:"none"}}function je(t,e){if(e>4)return;if(t==="cancelled")return Ve();if(typeof t=="string"){const n=t.trim();if(!n.startsWith("{"))return;try{return je(JSON.parse(n),e+1)}catch{return}}const r=He(t);if(r){if(r.name==="AbortError"||r.name==="CancelError")return Ve();if(de(r.type,256)&&de(r.title,256)&&typeof r.status=="number"&&Number.isInteger(r.status)&&r.status>=100&&r.status<=599&&typeof r.detail=="string"&&r.detail.length<=4096){const n={type:r.type,title:r.title,status:r.status,detail:r.detail};de(r.code,64)&&(n.code=r.code),de(r.requestId,256)&&(n.requestId=r.requestId),de(r.instance,512)&&(n.instance=r.instance),Array.isArray(r.suggestions)&&(n.suggestions=r.suggestions.filter(i=>de(i,512)).slice(0,8)),Array.isArray(r.actions)&&(n.actions=r.actions.filter(i=>{const o=He(i);return!!o&&["navigate","retry","open-url","copy"].includes(String(o.type))&&de(o.label,256)&&(o.target===void 0||de(o.target,4096))}).slice(0,8)),["correctRequest","refreshContract","restartQuery","reconnect","none"].includes(String(r.recovery))&&(n.recovery=r.recovery);const s=He(r.location);return s?.unit==="utf8-byte"&&typeof s.start=="number"&&typeof s.end=="number"&&Number.isSafeInteger(s.start)&&Number.isSafeInteger(s.end)&&s.start>=0&&s.end>=s.start&&(n.location={start:s.start,end:s.end,unit:"utf8-byte"}),n}if(typeof r.code=="string"&&typeof r.title=="string"&&typeof r.message=="string"){let n=r.code;if(n==="PERMISSION_DENIED"&&(n="FORBIDDEN"),["INVALID_INPUT","FILTER_UNKNOWN_FIELD","FILTER_INVALID_OPERATOR"].includes(n)&&(n="INVALID_REQUEST"),Object.prototype.hasOwnProperty.call(xt,n)||(n="INTERNAL"),n==="CANCELLED")return Ve();const[s,i,o]=xt[n],c=n==="FORBIDDEN"||n==="UNAUTHORIZED"||n==="INTERNAL"||n==="PROVIDER_ERROR";return{type:s,status:i,code:n,recovery:o,title:c?n==="FORBIDDEN"?"Access denied":n==="UNAUTHORIZED"?"Authentication required":"Operation failed":de(r.title,256)?r.title:"Operation failed",detail:c?"The operation could not be completed.":de(r.message,4096)?r.message:"The operation could not be completed.",...!c&&Array.isArray(r.suggestions)?{suggestions:r.suggestions.filter(u=>de(u,512)).slice(0,8)}:{}}}return je(r.message,e+1)??je(r.cause,e+1)}}function ce(t){return je(t,0)??{type:Y.INTERNAL,title:t==null?"Unknown error":"Error",status:500,detail:t==null?"An unknown error occurred.":"The operation could not be completed."}}function Le(t){return ce(t).type===Y.CANCELLED}function Pt(t){switch(t.type){case"navigate":return{label:t.label,onClick:()=>{Tt((t.target??"/").replace(/^#/,""))}};case"open-url":return{label:t.label,onClick:()=>{window.open(t.target,"_blank")}};case"copy":return{label:t.label,onClick:()=>{navigator.clipboard.writeText(t.target??"")}};case"retry":return{label:t.label,onClick:()=>{}};default:return{label:t.label,onClick:()=>{}}}}function At(t,e){const r=[t.detail,...t.suggestions?.map(s=>`• ${s}`)??[]].join(`
|
|
2
|
+
`);return{message:e||(t.title!=="Error"?t.title:"Operation failed"),status:"error",details:r,actions:t.actions?.map(Pt)}}function _e(t,e,r){if(Le(e))return;const n=ce(e);t(At(n,r))}function ne(t,e){return r=>{if(Le(r))return;const n=ce(r);t(At(n,n.title!=="Error"?n.title:e))}}function dn(t){const e=W.c(2);let r;return e[0]!==t?(r=D.jsx(fn,{...t},t.pluginId),e[0]=t,e[1]=r):r=e[1],r}function fn(t){const e=W.c(40),{children:r,pluginId:n,headless:s}=t,i=s===void 0?!1:s;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o={},e[0]=o):o=e[0];const[c,u]=E.useState(o);let a;e[1]===Symbol.for("react.memo_cache_sentinel")?(a=new ht.PluginMeta,e[1]=a):a=e[1];const[f,l]=E.useState(a),[d,p]=E.useState(!1),[y,g]=E.useState(null),h=E.useRef(0),m=E.useRef(0);console.debug("[PluginContextProvider] render",{pluginId:n,metaLoaded:d,metaError:!!y});let v;e[2]!==n?(v=()=>{if(n===void 0||n==="")return;const k=h.current=h.current+1;console.debug(`[PluginContextProvider] fetching settings for "${n}"`),L.PluginValues(n).then(F=>{k===h.current&&(console.debug(`[PluginContextProvider] settings loaded for "${n}"`,Object.keys(F)),u(F))}).catch(F=>{if(k!==h.current)return;const C=ce(F);console.error(`[PluginContextProvider] error fetching settings for "${n}":`,C.detail)})},e[2]=n,e[3]=v):v=e[3];const S=v;let b;e[4]!==n?(b=()=>{if(n===void 0||n===""){console.debug("[PluginContextProvider] skipping meta fetch — empty pluginId");return}const k=m.current=m.current+1;console.debug(`[PluginContextProvider] fetching meta for "${n}"`),L.GetPluginMeta(n).then(F=>{k===m.current&&(console.debug(`[PluginContextProvider] meta loaded for "${n}"`,{name:F?.name,version:F?.version}),l(F),p(!0))}).catch(F=>{if(k!==m.current)return;const C=ce(F);console.error(`[PluginContextProvider] error fetching meta for "${n}":`,C.detail),g(C.detail),p(!1)})},e[4]=n,e[5]=b):b=e[5];const w=b;let x,I;e[6]!==w||e[7]!==S||e[8]!==d||e[9]!==n?(x=()=>{if(d)return;const k=()=>{g(null),S(),w()},F=[K.On("plugin/init_complete",k),K.On("plugin/dev_install_complete",C=>{C.data?.id===n&&k()}),K.On("plugin/inventory_changed",k)];return()=>{for(const C of F)C()}},I=[n,d,S,w],e[6]=w,e[7]=S,e[8]=d,e[9]=n,e[10]=x,e[11]=I):(x=e[10],I=e[11]),E.useEffect(x,I);let _,R;if(e[12]!==w||e[13]!==S||e[14]!==n?(_=()=>(console.debug(`[PluginContextProvider] useEffect — pluginId changed to "${n}"`),S(),w(),()=>{h.current=h.current+1,m.current=m.current+1}),R=[n,S,w],e[12]=w,e[13]=S,e[14]=n,e[15]=_,e[16]=R):(_=e[15],R=e[16]),E.useEffect(_,R),y){if(i)throw new Error(y);let k,F,C;e[17]===Symbol.for("react.memo_cache_sentinel")?(C={display:"flex",flex:1,alignItems:"center",justifyContent:"center",padding:24},k={maxWidth:480,width:"100%",border:"1px solid #7F1D1D",borderRadius:8,backgroundColor:"#1C1917",padding:20,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},F={display:"flex",alignItems:"center",gap:8,marginBottom:12},e[17]=k,e[18]=F,e[19]=C):(k=e[17],F=e[18],C=e[19]);let T,P;e[20]===Symbol.for("react.memo_cache_sentinel")?(T=D.jsxs("div",{style:F,children:[D.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"#EF4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[D.jsx("circle",{cx:"12",cy:"12",r:"10"}),D.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),D.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),D.jsx("span",{style:{fontSize:14,fontWeight:600,color:"#FECACA"},children:"Plugin failed to load"})]}),P={fontSize:13,color:"#A1A1AA",margin:"0 0 16px"},e[20]=T,e[21]=P):(T=e[20],P=e[21]);let $;e[22]!==y?($=D.jsx("p",{style:P,children:y}),e[22]=y,e[23]=$):$=e[23];let A;e[24]!==w?(A=()=>{g(null),w()},e[24]=w,e[25]=A):A=e[25];let q;e[26]===Symbol.for("react.memo_cache_sentinel")?(q={background:"transparent",color:"#F87171",border:"1px solid #7F1D1D",borderRadius:6,padding:"6px 14px",fontSize:13,fontWeight:500,cursor:"pointer"},e[26]=q):q=e[26];let j;e[27]!==A?(j=D.jsx("button",{onClick:A,style:q,children:"Retry"}),e[27]=A,e[28]=j):j=e[28];let B;return e[29]!==$||e[30]!==j?(B=D.jsx("div",{style:C,children:D.jsxs("div",{style:k,children:[T,$,j]})}),e[29]=$,e[30]=j,e[31]=B):B=e[31],B}if(!d){if(i)return null;let k;return e[32]===Symbol.for("react.memo_cache_sentinel")?(k=D.jsxs("div",{style:{display:"flex",flex:1,alignItems:"center",justifyContent:"center"},children:[D.jsx("div",{style:{width:24,height:24,border:"2px solid #3F3F46",borderTopColor:"#A1A1AA",borderRadius:"50%",animation:"plugin-spin 0.8s linear infinite"}}),D.jsx("style",{children:"@keyframes plugin-spin { to { transform: rotate(360deg); } }"})]}),e[32]=k):k=e[32],k}let N;e[33]!==f||e[34]!==n||e[35]!==c?(N={pluginId:n,settings:c,meta:f},e[33]=f,e[34]=n,e[35]=c,e[36]=N):N=e[36];let M;return e[37]!==r||e[38]!==N?(M=D.jsx(Qe.Provider,{value:N,children:r}),e[37]=r,e[38]=N,e[39]=M):M=e[39],M}function Ge(){const t=E.useContext(Qe);if(!t)throw new Error("usePluginContext must be used within a PluginContextProvider");return t}function pn(){return Ge().settings}const gt=E.createContext(void 0),hn=t=>{const e=W.c(10),{children:r}=t;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n={},e[0]=n):n=e[0];const[s,i]=E.useState(n),o=E.useRef(0);let c;e[1]===Symbol.for("react.memo_cache_sentinel")?(c=()=>{const g=o.current+1;o.current=g,L.Values().then(h=>{g===o.current&&i(h)}).catch(h=>{g===o.current&&console.error("Error fetching settings:",h)})},e[1]=c):c=e[1];const u=c;let a,f;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=()=>{const g=K.On("settings/changed",()=>u());return u(),()=>{o.current=o.current+1,g()}},f=[u],e[2]=a,e[3]=f):(a=e[2],f=e[3]),E.useEffect(a,f);let l;e[4]===Symbol.for("react.memo_cache_sentinel")?(l=()=>{u()},e[4]=l):l=e[4];const d=l;let p;e[5]!==s?(p={settings:s,reload:d},e[5]=s,e[6]=p):p=e[6];let y;return e[7]!==r||e[8]!==p?(y=D.jsx(gt.Provider,{value:p,children:r}),e[7]=r,e[8]=p,e[9]=y):y=e[9],y},Lt={height:32,focused:0,tabs:[],createTab:()=>{},createTabs:()=>{},updateTab:()=>{},focusTab:()=>{},reorderTab:()=>{},closeTab:()=>{},closeTabs:()=>{},resizeDrawer:()=>{},closeDrawer:()=>{},fullscreenDrawer:()=>{}},Ft=E.createContext(Lt),qt=E.createContext(void 0),Mt=E.createContext(void 0),yt=E.createContext(void 0),gn=3e4,yn=t=>{const e=W.c(12),{children:r}=t;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];const[s,i]=E.useState(n);let o;e[1]===Symbol.for("react.memo_cache_sentinel")?(o=m=>{i(v=>[m,...v])},e[1]=o):o=e[1];const c=o;let u;e[2]===Symbol.for("react.memo_cache_sentinel")?(u=(m,v)=>{i(S=>S.map(b=>b.id===m?{...b,...v}:b))},e[2]=u):u=e[2];const a=u;let f;e[3]===Symbol.for("react.memo_cache_sentinel")?(f=m=>{i(v=>v.filter(S=>S.id!==m))},e[3]=f):f=e[3];const l=f;let d,p;e[4]!==s?(d=()=>{const m=[];for(const v of s)if(v.status!=="running"){const S=Date.now()-(v.completedAt??v.startedAt),b=Math.max(0,gn-S);m.push(setTimeout(()=>l(v.id),b))}return()=>m.forEach(clearTimeout)},p=[s,l],e[4]=s,e[5]=d,e[6]=p):(d=e[5],p=e[6]),E.useEffect(d,p);let y;e[7]!==s?(y={operations:s,addOperation:c,updateOperation:a,removeOperation:l},e[7]=s,e[8]=y):y=e[8];const g=y;let h;return e[9]!==r||e[10]!==g?(h=D.jsx(yt.Provider,{value:g,children:r}),e[9]=r,e[10]=g,e[11]=h):h=e[11],h},Ke=E.createContext(null),mn=t=>{const e=W.c(3),{actions:r,children:n}=t;let s;return e[0]!==r||e[1]!==n?(s=D.jsx(Ke.Provider,{value:r,children:n}),e[0]=r,e[1]=n,e[2]=s):s=e[2],s};function vn(){const t=E.useContext(Ke);if(!t)throw new Error("useWindowActions must be used inside a workspace window (WindowActionsProvider)");return t}var st=function(t,e){return st=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[s]=n[s])},st(t,e)};function bn(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");st(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var Ye="Invariant Violation",Rt=Object.setPrototypeOf,Sn=Rt===void 0?function(t,e){return t.__proto__=e,t}:Rt,En=(function(t){bn(e,t);function e(r){r===void 0&&(r=Ye);var n=t.call(this,typeof r=="number"?Ye+": "+r+" (see https://github.com/apollographql/invariant-packages)":r)||this;return n.framesToPop=1,n.name=Ye,Sn(n,e.prototype),n}return e})(Error);function ot(t,e){if(!t)throw new En(e)}var jt=["debug","log","warn","error","silent"],wn=jt.indexOf("log");function Me(t){return function(){if(jt.indexOf(t)>=wn){var e=console[t]||console.log;return e.apply(console,arguments)}}}(function(t){t.debug=Me("debug"),t.log=Me("log"),t.warn=Me("warn"),t.error=Me("error")})(ot||(ot={}));const $t=E.createContext(void 0),Wt=()=>E.useContext($t);function mt(t){const e=W.c(6),r=Wt(),n=E.useRef(null);let s;e[0]!==t||e[1]!==r?(s=u=>{let a=r?.getExtensionPoint(t),f=a?.subscribe(u);const l=r?.subscribe(()=>{const d=r.getExtensionPoint(t);d!==a&&(f?.(),a=d,f=a?.subscribe(u)),u()});return()=>{f?.(),l?.()}},e[0]=t,e[1]=r,e[2]=s):s=e[2];const i=s;let o;e[3]!==t||e[4]!==r?(o=()=>{const u=r?.getExtensionPoint(t),a=u?.version??-1,f=n.current;if(f&&f.store===u&&f.version===a)return f;const l={store:u,version:a,contributions:u?.listAll()??[]};return n.current=l,l},e[3]=t,e[4]=r,e[5]=o):o=e[5];const c=o;return E.useSyncExternalStore(i,c,c)}function Cn(t){return mt(t).store}const In=t=>{const e=W.c(5),{registry:r,children:n}=t;let s;e[0]!==r?(s=()=>r,e[0]=r,e[1]=s):s=e[1];const[i]=E.useState(s);ot(i===r,"You can't change the extension registry after it has been rendered");let o;return e[2]!==n||e[3]!==i?(o=D.jsx($t.Provider,{value:i,children:n}),e[2]=n,e[3]=i,e[4]=o):o=e[4],o},Ze=t=>{if(!t||typeof t!="string")throw new TypeError(`extensionName is required to be a string and can't be: "${t}" (${typeof t})`);return t.trim()};class Ut{id;mode;_pluginId;_version=0;_contributions=new Map;_lookupCache=new Map;_matcher;_select;_listeners=new Set;constructor(e){this.id=e.id,this.mode=e.mode??"multiple",this._pluginId=e.pluginId,this._matcher=e.matcher,this._select=e.select}get pluginId(){return this._pluginId}get version(){return this._version}register(e){if(this._contributions.has(e.id))throw new Error(`Contribution with id "${e.id}" already exists in extension point "${this.id}"`);this._contributions.set(e.id,e),this._invalidateCache(),this._notify()}unregister(e){this._contributions.delete(e)&&(this._invalidateCache(),this._notify())}provide(e){return this._getMatched(e).map(n=>n.value)}list(e){return this._getMatched(e)}listAll(){return Array.from(this._contributions.values())}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}removeContributionsByPlugin(e){let r=!1;for(const[n,s]of this._contributions)s.plugin===e&&(this._contributions.delete(n),r=!0);r&&(this._invalidateCache(),this._notify())}_getMatched(e){const r=this._getCacheKey(e);if(r!=null){const s=this._lookupCache.get(r);if(s){const i=s.map(o=>this._contributions.get(o)).filter(o=>o!=null);return this._applyMode(i,e)}}let n=this._sortDeterministic(Array.from(this._contributions.values()));return this._matcher&&e!==void 0&&(n=n.filter(s=>this._matcher(s,e))),r!=null&&this._lookupCache.set(r,n.map(s=>s.id)),this._applyMode(n,e)}_applyMode(e,r){if(this.mode==="single"){if(this._select){const n=this._select(e,r);return n?[n]:[]}return e.length>0?[e[0]]:[]}return e}_sortDeterministic(e){return[...e].sort((r,n)=>{const s=r.plugin.localeCompare(n.plugin);return s!==0?s:r.id.localeCompare(n.id)})}_getCacheKey(e){if(e!=null&&typeof e=="object"&&"getCacheKey"in e){const r=e.getCacheKey;if(typeof r=="function")return r()}}_invalidateCache(){this._lookupCache.clear()}_notify(){this._version++;for(const e of this._listeners)e()}}class _n{_stores=new Map;_storeUnsubs=new Map;_listeners=new Set;constructor(e){if(e?.initialStores)for(const r of e.initialStores)this.addExtensionPoint(r)}addExtensionPoint(e){const r=Ze(e.id);if(this._stores.has(r)){const s=this._stores.get(r);throw new Error(`Extension point "${r}" already exists (owned by "${s.pluginId??"unknown"}")`)}const n=new Ut({...e,id:r});this._stores.set(r,n),this._storeUnsubs.set(r,n.subscribe(()=>this._notify())),this._notify()}getExtensionPoint(e){const r=Ze(e);return this._stores.get(r)}hasExtensionPoint(e){const r=Ze(e);return this._stores.has(r)}listExtensionPoints(){return Array.from(this._stores.keys())}removeExtensionPoints(e){let r=!1;for(const[n,s]of this._stores)s.pluginId===e&&(this._storeUnsubs.get(n)?.(),this._storeUnsubs.delete(n),this._stores.delete(n),r=!0);r&&this._notify()}removeContributions(e){for(const r of this._stores.values())r.removeContributionsByPlugin(e);this._notify()}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}_notify(){for(const e of this._listeners)e()}}const ie={Panel:{position:"fixed",right:"var(--ov-space-3)",bottom:36,zIndex:"calc(var(--ov-z-toast, 9999) + 1)",width:"min(480px, calc(100vw - 24px))",minWidth:0,maxHeight:"min(560px, calc(100dvh - 64px))",display:"flex",flexDirection:"column",overflow:"hidden",padding:0},Header:{flex:"none",gap:"var(--ov-space-2)",paddingInline:"var(--ov-space-3)",background:"var(--ov-color-bg-surface-raised)",borderBottom:"1px solid var(--ov-color-border-muted)"},HeaderActions:{marginLeft:"auto"},List:{minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},Notice:{borderTop:"1px solid var(--ov-color-border-muted)"},Row:{display:"flex",alignItems:"center",gap:"var(--ov-space-1)",padding:"var(--ov-space-2) var(--ov-space-2) var(--ov-space-2) var(--ov-space-3)"},ErrorIcon:{flex:"none",color:"var(--ov-color-danger)"},Message:{flex:1,minWidth:0,justifyContent:"flex-start",textAlign:"left"},MessageText:{minWidth:0,overflowWrap:"anywhere"},Details:{padding:"0 var(--ov-space-3) var(--ov-space-3) 36px"},Code:{display:"block",margin:"var(--ov-space-2) 0",padding:"var(--ov-space-3)",maxHeight:240,overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.5,userSelect:"text"},Actions:{display:"flex",flexWrap:"wrap",gap:"var(--ov-space-2)"},CopyError:{margin:0,padding:"var(--ov-space-3)",borderTop:"1px solid var(--ov-color-border-muted)"}},Qt=E.createContext(void 0),xn={default:"info",info:"info",success:"success",warning:"warning",error:"danger"},Rn=({children:t})=>{const{toast:e}=J.useToast(),[r,n]=E.useState([]),[s,i]=E.useState([]),[o,c]=E.useState(!1),[u,a]=E.useState(),[f,l]=E.useState(""),d=E.useRef(0),p=E.useRef(null);E.useEffect(()=>{if(!o)return;const h=document.activeElement;p.current?.focus();const m=v=>{v.key==="Escape"&&(v.stopPropagation(),c(!1))};return document.addEventListener("keydown",m),()=>{document.removeEventListener("keydown",m),h instanceof HTMLElement&&h.isConnected&&h.focus()}},[o]);const y=h=>{n(m=>[...m,h])},g=(h,m,v)=>{const S=typeof h=="object";let b="",w="info",x,I=5e3,_;if(S){if(b=h.message,h.showOnce){if(r.includes(b))return;y(b)}w=h.status,x=h.details,I=h.autoHideDuration??5e3,_=h.actions}else b=h,w=m,x=v;let R;if(w==="error"){const N={id:++d.current,message:b,details:x,created:new Date().toISOString(),actions:_};i(M=>[...M,N].slice(-20)),R={label:"Details",onClick:()=>{a(N.id),c(!0)}}}e(w==="error"?b:x??b,{severity:xn[w]??"info",title:w!=="error"&&x?b:void 0,duration:I,action:R??_?.[0]})};return D.jsxs(Qt.Provider,{value:{showSnackbar:g,openNotifications:()=>{c(!0)},notificationCount:s.length},children:[t,o&&D.jsxs(J.Card,{ref:p,style:ie.Panel,size:"sm",variant:"outline",surface:"overlay",elevation:3,"aria-label":"Notifications",tabIndex:-1,children:[D.jsxs(J.Toolbar,{size:"sm",style:ie.Header,children:[D.jsx(J.Text,{size:"sm",weight:"semibold",children:"Notifications"}),D.jsx(J.Text,{size:"xs",tone:"muted",children:s.length}),D.jsxs(J.Toolbar.Group,{style:ie.HeaderActions,children:[D.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":"Clear history",title:"Clear history",disabled:s.length===0,onClick:()=>{i([]),a(void 0),l("")},children:D.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:D.jsx("path",{d:"m3 3 6 6m0-6L3 9M13 6h8M3 14h18M3 20h18"})})}),D.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":"Close notifications",title:"Close notifications",onClick:()=>{c(!1)},children:D.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:D.jsx("path",{d:"m6 9 6 6 6-6"})})})]})]}),D.jsxs("div",{style:ie.List,children:[s.length===0&&D.jsx(J.EmptyState,{size:"sm",title:"No recent errors",description:"Error details will appear here."}),s.slice().reverse().map(h=>{const m=u===h.id;return D.jsxs("div",{style:ie.Notice,children:[D.jsxs("div",{style:ie.Row,children:[D.jsxs("svg",{style:ie.ErrorIcon,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-label":"Error",role:"img",children:[D.jsx("circle",{cx:"12",cy:"12",r:"9"}),D.jsx("path",{d:"m9 9 6 6m0-6-6 6"})]}),D.jsx(J.Button,{size:"sm",variant:"ghost",style:ie.Message,"aria-expanded":m,"aria-controls":`notification-${h.id}`,title:h.message,onClick:()=>{a(m?void 0:h.id),l("")},children:D.jsx(J.Text,{size:"sm",style:ie.MessageText,truncate:!m,children:h.message})}),D.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":m?"Collapse details":"Expand details",title:m?"Collapse details":"Expand details","aria-expanded":m,"aria-controls":`notification-${h.id}`,onClick:()=>{a(m?void 0:h.id),l("")},children:D.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:D.jsx("path",{d:m?"m6 15 6-6 6 6":"m6 9 6 6 6-6"})})}),D.jsx(J.IconButton,{size:"sm",variant:"ghost","aria-label":`Dismiss ${h.message}`,title:"Dismiss notification",onClick:()=>{i(v=>v.filter(S=>S.id!==h.id)),m&&(a(void 0),l(""))},children:D.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:D.jsx("path",{d:"m6 6 12 12m0-12L6 18"})})})]}),D.jsx("div",{id:`notification-${h.id}`,hidden:!m,style:ie.Details,children:m&&D.jsxs(D.Fragment,{children:[D.jsx(J.Text,{size:"xs",tone:"muted",children:D.jsx("time",{dateTime:h.created,children:new Date(h.created).toLocaleString()})}),D.jsx(J.Code,{size:"sm",style:ie.Code,children:h.details?.length?h.details:h.message}),D.jsxs("div",{style:ie.Actions,children:[D.jsx(J.Button,{size:"sm",variant:"ghost",onClick:async()=>{l("");try{await navigator.clipboard.writeText(`${h.message}
|
|
3
|
+
${h.created}
|
|
4
|
+
${h.details??""}`)}catch{l("Copy failed. Select the diagnostic text and copy it manually.")}},children:"Copy details"}),h.actions?.map((v,S)=>D.jsx(J.Button,{size:"sm",variant:"outline",onClick:v.onClick,children:v.label},`${v.label}-${S}`))]})]})})]},h.id)})]}),f&&D.jsx(J.Text,{as:"p",size:"sm",role:"status",style:ie.CopyError,children:f})]})]})},ue=()=>{const t=E.useContext(Qt);if(t===void 0)throw new Error("useCustomSnackbar must be used within a CustomSnackbarProvider");return t},me={all:t=>[t,"resource-v2"],scope:(t,e)=>[t,"resource-v2","target",e],list:(t,e)=>[t,"resource-v2","enumerate",e],nativeQuery:(t,e)=>[t,"resource-v2","native-query",e],resource:(t,e)=>[t,"resource-v2","get",e]};function G(t){const r=E.useContext(Qe)?.pluginId??t;if(!r)throw new Error("pluginID must be provided either via PluginContext or as an explicit parameter");return r}const le=new Map,Oe=new Map;let Xe=0,Re=[],vt=0;const Gt={phase:"checking"};function Se(t,e){const r=JSON.stringify([t,e]);let n=le.get(r);return n||(n={pluginID:t,connectionID:e,key:r,snapshot:Gt,listeners:new Set,users:0,version:0,generation:++vt,starts:new Set},le.set(r,n)),n}function Te(t,e){t.snapshot.phase==="connected"&&e.phase!=="connected"&&(t.generation=++vt),t.snapshot=e;for(const r of t.listeners)r()}function Ee(t,e,r=!1){t.generation=++vt,t.version++,r||(t.operation=void 0),Te(t,e)}function Dn(t){switch(t){case"CONNECTED":return"connected";case"DISCONNECTED":return"disconnected";case"PENDING":return"connecting";case"UNAUTHORIZED":return"unauthorized";case"FORBIDDEN":return"forbidden";case"NOT_FOUND":return"not-found";default:return"error"}}function bt(t){const e=t?.trim();if(e)return e.startsWith("{")||e.startsWith("[")||e.length>512||/[\r\n]|\bgoroutine\b|\bat\s+\S+\s+\(.*:\d+:\d+\)/.test(e)?"The connection operation could not be completed.":e}function Kt(t,e){const r=Dn(t.status);return{phase:r,connection:e,message:bt(t.error||t.details)||(r==="error"?"The connection is not ready.":void 0)}}function Bt(t,e){const r=ce(t);return{phase:r.status===401?"unauthorized":r.status===403?"forbidden":r.status===404?"not-found":"error",connection:e,message:bt(r.detail||r.title)}}function et(t,e){e=bt(e)||"The plugin is unavailable.",Oe.set(t,e);for(const r of le.values())r.pluginID===t&&Ee(r,{phase:"error",message:e,connection:r.snapshot.connection})}function Dt(t){const e=Oe.delete(t);for(const r of le.values())r.pluginID===t&&(!e&&r.snapshot.phase==="checking"&&r.operation?.kind==="check"||(Ee(r,{phase:"checking",connection:r.snapshot.connection}),r.users&&ye(r,"check").catch(()=>{})))}function xe(){if(!(typeof document<"u"&&document.visibilityState==="hidden"))for(const t of le.values())t.users&&!Oe.has(t.pluginID)&&ye(t,"check",!0).catch(()=>{})}function kn(){Re.length||(Re=[K.On("connection/status",({data:t})=>{const e=le.get(JSON.stringify([t.pluginID,t.connectionID]));!e||Oe.has(t.pluginID)||e.stop&&t.status!=="DISCONNECTED"||t.status!=="DISCONNECTED"&&e.starts.size&&e.operation?.kind!=="start"||Ee(e,Kt({status:t.status,error:"",details:""},e.snapshot.connection),t.status==="CONNECTED")}),K.On("plugin/crash",({data:t})=>et(t.pluginID,t.error||"The plugin stopped unexpectedly.")),K.On("plugin/crash_recovery_failed",({data:t})=>et(t.pluginID,t.error||"Plugin recovery failed.")),K.On("plugin/recovered",({data:t})=>Dt(t.pluginID)),K.On("plugin/state_change",({data:t})=>{t.to==="Running"?Dt(t.pluginID):et(t.pluginID,t.reason||`The plugin is ${t.to}.`)})],typeof window<"u"&&(window.addEventListener("focus",xe),window.addEventListener("pageshow",xe),Re.push(()=>{window.removeEventListener("focus",xe),window.removeEventListener("pageshow",xe)})),typeof document<"u"&&(document.addEventListener("visibilitychange",xe),Re.push(()=>document.removeEventListener("visibilitychange",xe))))}function Ie(t){return le.set(t.key,t),t.users++,Xe++,kn(),()=>{if(t.users--,Xe--,t.users||(Ee(t,Gt),le.get(t.key)===t&&le.delete(t.key)),!Xe){for(const e of Re)e();Re=[],Oe.clear()}}}function ye(t,e,r=!1){if(t.stop)return Promise.reject(new Error("Connection is disconnecting. Wait for it to stop before connecting."));const n=Oe.get(t.pluginID);if(n)return Te(t,{phase:"error",message:n,connection:t.snapshot.connection}),Promise.reject(new Error(n));if(t.operation&&(e==="check"||t.operation.kind==="start"))return t.operation.promise;const s=++t.version;(!r||t.snapshot.phase!=="connected")&&Te(t,{phase:e==="start"?"connecting":"checking",connection:t.snapshot.connection}),e==="start"&&t.starts.add(s);const i=Promise.resolve().then(()=>{if(t.version!==s)throw new Error("Connection readiness changed before the operation began.");return e==="start"?L.StartConnection(t.pluginID,t.connectionID):L.CheckConnection(t.pluginID,t.connectionID)}).then(o=>(t.version===s&&Te(t,Kt(o,o.connection??t.snapshot.connection)),o),o=>{throw t.version===s&&Te(t,Bt(o,t.snapshot.connection)),o}).finally(()=>{e==="start"&&t.starts.delete(s),t.operation?.version===s&&(t.operation=void 0)});return t.operation={kind:e,promise:i,version:s},i}function Be(t,e){return{getSnapshot:()=>Se(t,e).snapshot,subscribe:r=>{const n=Se(t,e),s=n.users===0,i=Ie(n);return n.listeners.add(r),s&&ye(n,"check").catch(()=>{}),()=>{n.listeners.delete(r),i()}},connect:async()=>{const r=Se(t,e),n=Ie(r);try{await ye(r,"start")}catch{}finally{n()}},retry:async()=>{const r=Se(t,e),n=Ie(r);try{await ye(r,"check")}catch{}finally{n()}}}}async function Fe(t,e){const r=Se(t,e),n=Ie(r);try{try{await ye(r,"check",!0)}catch{}if(r.snapshot.phase!=="connected")throw new Error(r.snapshot.message||`Connection ${e} is ${r.snapshot.phase}. Connect before continuing.`)}finally{n()}}async function On(t,e,r){const n=Se(t,e),s=Ie(n);try{try{await ye(n,"check",!0)}catch{}if(n.snapshot.phase!=="connected")throw new Error(n.snapshot.message||`Connection ${e} is ${n.snapshot.phase}. Connect before continuing.`);const i=n.generation,o=await r();if(n.generation!==i||n.snapshot.phase!=="connected")throw new Error(`Connection ${e} changed while the operation was in progress. Retry after connecting.`);return o}finally{s()}}function it(t,e){return le.get(JSON.stringify([t,e]))?.generation}function Pe(t,e,r){const n=le.get(JSON.stringify([t,e]));return r!==void 0&&n?.generation===r&&n.snapshot.phase==="connected"}async function Nn(t,e){const r=Se(t,e),n=Ie(r);try{return await ye(r,"start")}finally{n()}}function zt(t,e){const r=Se(t,e);if(r.stop)return r.stop;const n=Ie(r),s=Promise.resolve().then(()=>L.StopConnection(t,e)).then(i=>(Ee(r,{phase:"disconnected",connection:i}),i),i=>{throw Ee(r,Bt(i,r.snapshot.connection)),i}).finally(()=>{r.stop=void 0,n()});return r.stop=s,Ee(r,{phase:"disconnected",message:"Disconnecting. Wait for the connection to stop before reconnecting.",connection:r.snapshot.connection}),s}function kt(t,e,r=!1){const n=le.get(JSON.stringify([t,e]));n&&(Ee(n,{phase:r?"not-found":"checking",connection:r?void 0:n.snapshot.connection}),!r&&n.users&&ye(n,"check").catch(()=>{}))}function tt(t){if(!t.applied)throw new Error("Connection profile was not applied");return t}const Tn=t=>{const e=W.c(89),{pluginID:r,connectionID:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r),c=O.useQueryClient(),{showSnackbar:u}=ue();let a;e[0]!==n||e[1]!==o?(a=[o,"connection","detail",n],e[0]=n,e[1]=o,e[2]=a):a=e[2];const f=a;let l;e[3]!==o||e[4]!==c?(l=async()=>{await Promise.all([c.invalidateQueries({queryKey:[o,"connection"]}),c.invalidateQueries({queryKey:me.all(o)}),c.invalidateQueries({queryKey:[o,"resource-v2","editor-schemas"]})])},e[3]=o,e[4]=c,e[5]=l):l=e[5];const d=l;let p;e[6]!==n||e[7]!==d||e[8]!==o?(p=async()=>{kt(o,n),await d()},e[6]=n,e[7]=d,e[8]=o,e[9]=p):p=e[9];const y=p;let g;e[10]!==n||e[11]!==o?(g=()=>Nn(o,n),e[10]=n,e[11]=o,e[12]=g):g=e[12];let h;e[13]!==u?(h=ne(u,"Failed to start connection"),e[13]=u,e[14]=h):h=e[14];let m;e[15]!==d||e[16]!==g||e[17]!==h?(m={mutationFn:g,onSuccess:d,onError:h},e[15]=d,e[16]=g,e[17]=h,e[18]=m):m=e[18];const{mutateAsync:v}=O.useMutation(m);let S;e[19]!==n||e[20]!==o?(S=()=>zt(o,n),e[19]=n,e[20]=o,e[21]=S):S=e[21];let b;e[22]!==u?(b=ne(u,"Failed to stop connection"),e[22]=u,e[23]=b):b=e[23];let w;e[24]!==d||e[25]!==S||e[26]!==b?(w={mutationFn:S,onSuccess:d,onError:b},e[24]=d,e[25]=S,e[26]=b,e[27]=w):w=e[27];const{mutateAsync:x}=O.useMutation(w);let I;e[28]!==o?(I=ve=>L.SaveConnectionProfile(o,ve).then(tt),e[28]=o,e[29]=I):I=e[29];let _,R;e[30]!==u?(_=()=>{u("Connection profile saved","success")},R=ne(u,"Failed to save connection profile"),e[30]=u,e[31]=_,e[32]=R):(_=e[31],R=e[32]);let N;e[33]!==y||e[34]!==I||e[35]!==_||e[36]!==R?(N={mutationFn:I,onSuccess:_,onError:R,onSettled:y},e[33]=y,e[34]=I,e[35]=_,e[36]=R,e[37]=N):N=e[37];const{mutateAsync:M}=O.useMutation(N);let k;e[38]!==n||e[39]!==o?(k=()=>L.ImportConnectionProfile(o,n).then(tt),e[38]=n,e[39]=o,e[40]=k):k=e[40];let F,C;e[41]!==u?(F=()=>{u("Connection profile imported","success")},C=ne(u,"Failed to import connection profile"),e[41]=u,e[42]=F,e[43]=C):(F=e[42],C=e[43]);let T;e[44]!==y||e[45]!==k||e[46]!==F||e[47]!==C?(T={mutationFn:k,onSuccess:F,onError:C,onSettled:y},e[44]=y,e[45]=k,e[46]=F,e[47]=C,e[48]=T):T=e[48];const{mutateAsync:P}=O.useMutation(T);let $;e[49]!==n||e[50]!==o?($=()=>L.ResetConnectionProfile(o,n).then(tt),e[49]=n,e[50]=o,e[51]=$):$=e[51];let A,q;e[52]!==u?(A=()=>{u("Connection profile reset","success")},q=ne(u,"Failed to reset connection profile"),e[52]=u,e[53]=A,e[54]=q):(A=e[53],q=e[54]);let j;e[55]!==y||e[56]!==$||e[57]!==A||e[58]!==q?(j={mutationFn:$,onSuccess:A,onError:q,onSettled:y},e[55]=y,e[56]=$,e[57]=A,e[58]=q,e[59]=j):j=e[59];const{mutateAsync:B}=O.useMutation(j);let z;e[60]!==n||e[61]!==o?(z=()=>L.RemoveConnection(o,n),e[60]=n,e[61]=o,e[62]=z):z=e[62];let H;e[63]!==n||e[64]!==o||e[65]!==u?(H=()=>{kt(o,n,!0),u("Connection disabled","success")},e[63]=n,e[64]=o,e[65]=u,e[66]=H):H=e[66];let Z;e[67]!==u?(Z=ne(u,"Failed to disable connection"),e[67]=u,e[68]=Z):Z=e[68];let V;e[69]!==d||e[70]!==z||e[71]!==H||e[72]!==Z?(V={mutationFn:z,onSuccess:H,onError:Z,onSettled:d},e[69]=d,e[70]=z,e[71]=H,e[72]=Z,e[73]=V):V=e[73];const{mutateAsync:te}=O.useMutation(V);let U;e[74]!==n||e[75]!==o?(U=()=>L.GetConnection(o,n),e[74]=n,e[75]=o,e[76]=U):U=e[76];const X=i&&!!n;let fe;e[77]!==f||e[78]!==U||e[79]!==X?(fe={queryKey:f,queryFn:U,enabled:X},e[77]=f,e[78]=U,e[79]=X,e[80]=fe):fe=e[80];const pe=O.useQuery(fe);let he;return e[81]!==pe||e[82]!==P||e[83]!==te||e[84]!==B||e[85]!==M||e[86]!==v||e[87]!==x?(he={connection:pe,startConnection:v,stopConnection:x,saveConnectionProfile:M,importConnectionProfile:P,resetConnectionProfile:B,removeConnection:te},e[81]=pe,e[82]=P,e[83]=te,e[84]=B,e[85]=M,e[86]=v,e[87]=x,e[88]=he):he=e[88],he},Jt=t=>[t,"connection","list"],Pn=t=>{const e=W.c(33),{plugin:r}=t,n=G(r),s=O.useQueryClient(),{showSnackbar:i}=ue();let o;e[0]!==n?(o=Jt(n),e[0]=n,e[1]=o):o=e[1];const c=o;let u;e[2]!==n?(u=_=>L.StartConnectionWatch(n,_),e[2]=n,e[3]=u):u=e[3];let a;e[4]!==i?(a=ne(i,"Failed to start connection watch"),e[4]=i,e[5]=a):a=e[5];let f;e[6]!==u||e[7]!==a?(f={mutationFn:u,onError:a},e[6]=u,e[7]=a,e[8]=f):f=e[8];const{mutateAsync:l}=O.useMutation(f);let d;e[9]!==n?(d=_=>L.StopConnectionWatch(n,_),e[9]=n,e[10]=d):d=e[10];let p;e[11]!==i?(p=ne(i,"Failed to stop connection watch"),e[11]=i,e[12]=p):p=e[12];let y;e[13]!==d||e[14]!==p?(y={mutationFn:d,onError:p},e[13]=d,e[14]=p,e[15]=y):y=e[15];const{mutateAsync:g}=O.useMutation(y);let h;e[16]!==s||e[17]!==c?(h=_=>{const R=_.data;console.log("got update to connections",R),s.setQueryData(c,R)},e[16]=s,e[17]=c,e[18]=h):h=e[18];const m=h;let v,S;e[19]!==m||e[20]!==n?(S=()=>{const _=K.On(`${n}/connection/sync`,m);return()=>{_()}},v=[n,m],e[19]=m,e[20]=n,e[21]=v,e[22]=S):(v=e[21],S=e[22]),E.useEffect(S,v);let b;e[23]!==n||e[24]!==i?(b=async()=>{try{return await L.ListConnections(n)}catch(_){const R=_;console.log(R),ne(i,"Failed to load connections")(R)}return[]},e[23]=n,e[24]=i,e[25]=b):b=e[25];let w;e[26]!==c||e[27]!==b?(w={queryKey:c,queryFn:b,staleTime:3e4,placeholderData:O.keepPreviousData},e[26]=c,e[27]=b,e[28]=w):w=e[28];const x=O.useQuery(w);let I;return e[29]!==x||e[30]!==l||e[31]!==g?(I={connections:x,startWatch:l,stopWatch:g},e[29]=x,e[30]=l,e[31]=g,e[32]=I):I=e[32],I},An={phase:"checking"},Ln={getSnapshot:()=>An,subscribe:()=>()=>{},connect:async()=>{},retry:async()=>{}};function oe(t){const e=W.c(8),{pluginID:r,connectionID:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r);let c;e[0]!==n||e[1]!==i||e[2]!==o?(c=i?Be(o,n):Ln,e[0]=n,e[1]=i,e[2]=o,e[3]=c):c=e[3];const u=c,a=E.useSyncExternalStore(u.subscribe,u.getSnapshot,u.getSnapshot);let f;return e[4]!==a||e[5]!==u.connect||e[6]!==u.retry?(f={...a,connect:u.connect,retry:u.retry},e[4]=a,e[5]=u.connect,e[6]=u.retry,e[7]=f):f=e[7],f}function ae(t,e){const r=O.useQueryClient();return E.useCallback(async(n,s,i,o=e)=>{const c=o,u=it(t,c),a=()=>u!==void 0&&Pe(t,c,u);if(s.aborted||!a())throw new O.CancelledError({revert:!0});let f,l=!1,d=!1;const p=()=>{f&&"cancel"in f&&typeof f.cancel=="function"&&Promise.resolve(f.cancel()).catch(h=>{console.error("Failed to cancel resource query",h)}),g()},y=Be(t,c).subscribe(()=>{a()||(l=!0,r.cancelQueries({queryKey:n,exact:!0}).catch(h=>{console.error("Failed to cancel invalidated resource query",h)}))}),g=()=>{d||(d=!0,y())};s.addEventListener("abort",p,{once:!0});try{if(s.aborted||l||!a())throw new O.CancelledError({revert:!0});f=i();const h=await f;if(s.aborted||l||!a())throw new O.CancelledError({revert:!0});return h}finally{s.removeEventListener("abort",p),g()}},[t,e,r])}const Fn=t=>{const e=W.c(20),{pluginID:r,route:n,dimension:s,enabled:i}=t,o=i===void 0?!0:i,c=G(r),u=o&&!!s;let a;e[0]!==c||e[1]!==n.connection||e[2]!==u?(a={pluginID:c,connectionID:n.connection,enabled:u},e[0]=c,e[1]=n.connection,e[2]=u,e[3]=a):a=e[3];const f=oe(a),l=ae(c,n.connection),d=o&&!!c&&!!n.connection&&!!s&&f.phase==="connected";let p;e[4]!==s||e[5]!==c||e[6]!==n?(p=[c,"resource-v2","scope-values",n,s],e[4]=s,e[5]=c,e[6]=n,e[7]=p):p=e[7];let y;e[8]!==s||e[9]!==l||e[10]!==c||e[11]!==d||e[12]!==n?(y=d?v=>{const{signal:S,queryKey:b}=v;return l(b,S,()=>L.ScopeValues(c,n,s))}:O.skipToken,e[8]=s,e[9]=l,e[10]=c,e[11]=d,e[12]=n,e[13]=y):y=e[13];let g;e[14]!==d||e[15]!==p||e[16]!==y?(g={queryKey:p,queryFn:y,enabled:d},e[14]=d,e[15]=p,e[16]=y,e[17]=g):g=e[17];const h=O.useQuery(g);let m;return e[18]!==h?(m={values:h},e[18]=h,e[19]=m):m=e[19],m};function ct(t){const e=Object.values(t.states),r=e.length;let n=0,s=0,i=0,o=0;for(const f of e)f===Q.WatchState.WatchStateSynced&&n++,(f===Q.WatchState.WatchStateError||f===Q.WatchState.WatchStateFailed)&&s++,f===Q.WatchState.WatchStateForbidden&&i++,f===Q.WatchState.WatchStateSkipped&&o++;const c=r-o,u=e.filter(f=>f===Q.WatchState.WatchStateSynced||f===Q.WatchState.WatchStateError||f===Q.WatchState.WatchStateStopped||f===Q.WatchState.WatchStateFailed||f===Q.WatchState.WatchStateForbidden).length,a=c>0?u/c:0;return{pluginID:t.pluginID,connectionID:t.connectionID,totalResources:r,watchedTotal:c,syncedCount:n,errorCount:s,forbiddenCount:i,skippedCount:o,doneCount:u,progress:a}}function ze(t){return t.watchedTotal>0&&t.doneCount>=t.watchedTotal}function Ht(t){return t.some(e=>!ze(e))}function Vt(t){const e=t.reduce((n,s)=>n+s.watchedTotal,0);return e===0?0:t.reduce((n,s)=>n+s.doneCount,0)/e}function St(t,e){return JSON.stringify([t,e.route.connection])}function at(t,e,r){const n=St(e,r);t.has(n)||t.set(n,{states:{},pluginID:e,connectionID:r.route.connection});const s=t.get(n);return s.states[r.type]=r.state,s}function qn(){const[t,e]=E.useState(new Map),r=E.useRef(t),n=E.useRef(new Map),s=E.useRef(new Map),[i,o]=E.useState(!0),[c,u]=E.useState(),a=E.useRef({generation:0}),[f,l]=E.useState({}),[d,p]=E.useState(new Map),y=E.useRef(new Map),[g,h]=E.useState(new Map);E.useEffect(()=>{const C=K.On("plugin/crash_recovery_failed",P=>{const $=P.data,A=$?.pluginID;A&&h(q=>{const j=new Map(q);return j.set(A,$.error??"Crash recovery failed"),j})}),T=K.On("plugin/recovered",P=>{const A=P.data?.pluginID;A&&h(q=>{if(!q.has(A))return q;const j=new Map(q);return j.delete(A),j})});return()=>{C(),T()}},[]);const m=E.useCallback(async()=>{const C=++a.current.generation;n.current.clear(),s.current.clear();let T;try{T=L.GetAllConnectionStates()}catch(P){T=Promise.reject(P)}await T.then(P=>{if(C!==a.current.generation||!P)return;const $={},A=new Map,q=new Map;for(const[j,B]of Object.entries(P))if(B){$[j]=B.map(z=>z.connection);for(const z of B){const H=JSON.stringify([j,z.connection.id]),Z=n.current.get(H)??{readiness:z.readiness,readinessError:z.readinessError};if(A.set(H,Z),Z.readiness!=="CONNECTED")continue;const V={pluginID:j,connectionID:z.connection.id,states:{}};if(z.resources)for(const[te,U]of Object.entries(z.resources))V.states[te]=U;Object.assign(V.states,s.current.get(H)?.states),y.current.set(H,V),q.set(H,ct(V))}}l($);for(const[j,B]of n.current)A.set(j,B);r.current=A,e(A),p(q)}).catch(P=>{C===a.current.generation&&u(ce(P))}).finally(()=>{C===a.current.generation&&o(!1)})},[]),v=E.useCallback(async()=>{o(!0),u(void 0),await m()},[m]);E.useEffect(()=>{const C=a.current;return m().catch(T=>{console.error("Connection status refresh failed:",T)}),()=>{++C.generation}},[m]),E.useEffect(()=>{let C=!0,T=0;const P=K.On("connection/status",$=>{const A=$.data,q=JSON.stringify([A.pluginID,A.connectionID]),j=A.status==="DISCONNECTED"||A.status==="PENDING"||A.status==="CONNECTED"||A.status==="FAILED"?A.status:"UNKNOWN",B={readiness:j};n.current.set(q,B);const z=new Map(r.current);z.set(q,B),r.current=z,e(z),j!=="CONNECTED"&&(p(V=>{const te=new Map(V);return te.delete(q),te}),y.current.delete(q),s.current.delete(q));const H=++T,Z=a.current.generation;L.ListAllConnections().then(V=>{if(!C||H!==T||Z!==a.current.generation||!V)return;const te={};for(const[U,X]of Object.entries(V))X!=null&&(te[U]=X);l(te)}).catch(V=>{C&&H===T&&Z===a.current.generation&&console.error("Connection metadata refresh failed:",V)})});return()=>{C=!1,P()}},[]);const S=E.useCallback(C=>{const T=C.data,P=St(T.pluginID,T);if(r.current.get(P)?.readiness!=="CONNECTED")return;const $=at(y.current,T.pluginID,T);at(s.current,T.pluginID,T);const A=ct($);p(q=>{const j=new Map(q);return j.set(P,A),j})},[]);E.useEffect(()=>K.On("watch/STATE",S),[S]);const b=E.useCallback(async(C,T)=>{await zt(C,T)},[]),w=E.useCallback(async(C,T)=>{if(r.current.get(JSON.stringify([C,T]))?.readiness!=="CONNECTED")return;const P={connection:T},$=await L.Catalog(C,{route:P}),A=await Promise.all($.types.filter(q=>q.capabilities.some(j=>j.operation==="update")).map(q=>L.ResolveTarget(C,{route:P,type:q.type})));await L.StartConnectionWatch(C,A.map(q=>q.target))},[]),x=E.useCallback(async C=>{const T=g.get(C);h(P=>{if(!P.has(C))return P;const $=new Map(P);return $.delete(C),$});try{await L.RetryFailedPlugin(C)}catch(P){throw h($=>{const A=new Map($);return A.set(C,T??"Reload failed"),A}),P}},[g]),I=[],_=new Set(t.keys());for(const[C,T]of Object.entries(f))for(const P of T)_.add(JSON.stringify([C,P.id]));for(const C of _){const[T,P]=JSON.parse(C),A=(f[T]??[]).find(Z=>Z.id===P),q=t.get(C)??{readiness:"UNKNOWN"},j=q.readiness==="CONNECTED"?d.get(C):void 0,B=j!=null&&!ze(j),z=j!=null&&j.errorCount>0,H=g.get(T);I.push({pluginID:T,connectionID:P,name:A?.name??P,avatar:A?.avatar??"",readiness:q.readiness,readinessError:q.readinessError,sync:j,isSyncing:B,hasErrors:z||H!=null||q.readiness==="FAILED"||q.readinessError!=null,pluginFailed:H!=null,pluginError:H})}const R=new Map;for(const C of I){const T=R.get(C.pluginID)??[];T.push(C),R.set(C.pluginID,T)}const N=I.flatMap(C=>C.sync?[C.sync]:[]),M=I.filter(C=>C.isSyncing),k=I.filter(C=>C.hasErrors),F=I.filter(C=>C.pluginFailed);return{isLoading:i,error:c,refresh:v,entries:I,grouped:R,connectedCount:I.filter(C=>C.readiness==="CONNECTED").length,syncingCount:M.length,errorCount:k.length,failedCount:F.length,hasSyncing:Ht(N),aggregateProgress:Vt(N),disconnect:b,retryWatch:w,retryPlugin:x}}function Mn(t){const e=W.c(9),{pluginID:r}=t,n=G(r);let s,i;e[0]!==n?(s=[n,"connection","profiles"],i=f=>{const{signal:l}=f;l.throwIfAborted();const d=L.ListConnectionProfiles(n),p=()=>{d.cancel()};return l.addEventListener("abort",p,{once:!0}),d.finally(()=>l.removeEventListener("abort",p))},e[0]=n,e[1]=s,e[2]=i):(s=e[1],i=e[2]);const o=!!n;let c;e[3]!==s||e[4]!==i||e[5]!==o?(c={queryKey:s,queryFn:i,enabled:o,retry:!1},e[3]=s,e[4]=i,e[5]=o,e[6]=c):c=e[6];const u=O.useQuery(c);let a;return e[7]!==u?(a={profiles:u},e[7]=u,e[8]=a):a=e[8],a}const jn={display:"flex",alignItems:"center",justifyContent:"center",minHeight:240,height:"100%",padding:24,boxSizing:"border-box",color:"var(--ov-color-fg-default)"},$n={width:"100%",maxWidth:560,minWidth:0,display:"flex",flexDirection:"column",gap:16},Wn={display:"flex",alignItems:"center",gap:12},Un={margin:0,fontSize:"1.125rem",fontWeight:600},Qn={display:"flex",flexWrap:"wrap",gap:8},nt={margin:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere"},Gn={width:20,height:20,flexShrink:0},Kn={checking:{title:"Checking connection",description:"Checking whether this connection is ready before loading resources."},disconnected:{title:"Connection is disconnected",description:"Connect to load resources and continue at this location."},connecting:{title:"Connecting",description:"Establishing the connection. Resources will load here when it is ready."},unauthorized:{title:"Authentication required",description:"The connection could not authenticate. Check its credentials, then connect again."},forbidden:{title:"Connection access denied",description:"The connection is not permitted to access this target. Check its credentials and permissions."},"not-found":{title:"Connection not found",description:"This saved connection is no longer available. Return to connections or check its configuration."},error:{title:"Connection could not be verified",description:"Check the connection settings and network, then connect again or retry the check."}};function Yt(t){const e=W.c(44),{state:r,connectionName:n,connectionDetails:s,onEditConnection:i,onBack:o,backLabel:c}=t,u=c===void 0?"Back to connections":c,a=E.useId();if(r.phase==="connected")return null;const f=r.phase==="checking"||r.phase==="connecting",l=Kn[r.phase],d=n??r.connection?.name;let p;e[0]!==s||e[1]!==d?(p=s??(d&&D.jsx(J.Text,{size:"sm",tone:"muted",style:nt,children:d})),e[0]=s,e[1]=d,e[2]=p):p=e[2];let y;e[3]!==f?(y=f&&D.jsx(J.Spinner,{style:Gn,"aria-hidden":"true"}),e[3]=f,e[4]=y):y=e[4];let g;e[5]!==a||e[6]!==l.title?(g=D.jsx("h2",{id:a,style:Un,children:l.title}),e[5]=a,e[6]=l.title,e[7]=g):g=e[7];let h;e[8]!==y||e[9]!==g?(h=D.jsxs("div",{style:Wn,role:"status","aria-live":"polite",children:[y,g]}),e[8]=y,e[9]=g,e[10]=h):h=e[10];let m;e[11]!==l.description?(m=D.jsx(J.Text,{as:"p",size:"sm",tone:"muted",style:nt,children:l.description}),e[11]=l.description,e[12]=m):m=e[12];let v;e[13]!==f||e[14]!==r.message?(v=r.message&&D.jsx(J.Text,{as:"p",size:"sm",style:nt,role:f?"status":"alert",children:r.message}),e[13]=f,e[14]=r.message,e[15]=v):v=e[15];let S;e[16]!==f||e[17]!==r?(S=r.phase!=="not-found"&&D.jsx(J.Button,{size:"sm",variant:"solid",color:"brand",disabled:f,onClick:()=>{r.connect()},children:"Connect and continue"}),e[16]=f,e[17]=r,e[18]=S):S=e[18];const b=r.phase==="checking";let w;e[19]!==r?(w=()=>{r.retry()},e[19]=r,e[20]=w):w=e[20];let x;e[21]!==w||e[22]!==b?(x=D.jsx(J.Button,{size:"sm",variant:"outline",color:"neutral",disabled:b,onClick:w,children:"Retry check"}),e[21]=w,e[22]=b,e[23]=x):x=e[23];let I;e[24]!==i?(I=i&&D.jsx(J.Button,{size:"sm",variant:"outline",color:"neutral",onClick:i,children:"Edit connection"}),e[24]=i,e[25]=I):I=e[25];let _;e[26]!==u||e[27]!==o?(_=o&&D.jsx(J.Button,{size:"sm",variant:"outline",color:"neutral",onClick:o,children:u}),e[26]=u,e[27]=o,e[28]=_):_=e[28];let R;e[29]!==x||e[30]!==I||e[31]!==_||e[32]!==S?(R=D.jsxs("div",{style:Qn,children:[S,x,I,_]}),e[29]=x,e[30]=I,e[31]=_,e[32]=S,e[33]=R):R=e[33];let N;e[34]!==R||e[35]!==p||e[36]!==h||e[37]!==m||e[38]!==v?(N=D.jsxs("div",{style:$n,children:[p,h,m,v,R]}),e[34]=R,e[35]=p,e[36]=h,e[37]=m,e[38]=v,e[39]=N):N=e[39];let M;return e[40]!==f||e[41]!==a||e[42]!==N?(M=D.jsx("section",{style:jn,"aria-labelledby":a,"aria-busy":f,children:N}),e[40]=f,e[41]=a,e[42]=N,e[43]=M):M=e[43],M}function Bn(t){const e=W.c(9),{pluginID:r,connectionID:n,children:s,fallback:i}=t;let o;e[0]!==n||e[1]!==r?(o={pluginID:r,connectionID:n},e[0]=n,e[1]=r,e[2]=o):o=e[2];const c=oe(o);if(c.phase!=="connected"){let a;return e[3]!==n||e[4]!==i||e[5]!==c?(a=i?i(c):D.jsx(Yt,{state:c,connectionName:c.connection?.name||n}),e[3]=n,e[4]=i,e[5]=c,e[6]=a):a=e[6],a}let u;return e[7]!==s?(u=D.jsx(D.Fragment,{children:s}),e[7]=s,e[8]=u):u=e[8],u}function zn(t){const e=W.c(7),r=G(t.pluginID);let n;e[0]!==r||e[1]!==t.connectionID?(n=JSON.stringify([r,t.connectionID]),e[0]=r,e[1]=t.connectionID,e[2]=n):n=e[2];let s;return e[3]!==r||e[4]!==t||e[5]!==n?(s=E.createElement(Bn,{...t,pluginID:r,key:n}),e[3]=r,e[4]=t,e[5]=n,e[6]=s):s=e[6],s}const qe={supported:void 0,transportAvailable:!1,isLoading:!1},De=new Map;let rt,Ot=0;function ge(t,e){const r={...t.state,...e};Object.keys(r).every(n=>Object.is(r[n],t.state[n]))||(t.state=r,t.listeners.forEach(n=>n()))}function ke(t,e){let r=De.get(t);r||(r={retired:new Set,connections:new Map},De.set(t,r));let n=r.connections.get(e);return n||(n={pluginID:t,connectionID:e,state:qe,listeners:new Set,epoch:0,eventVersion:0},r.connections.set(e,n)),n}function Jn(t){return t&&/^[0-9]+$/.test(t)?BigInt(t):void 0}function Zt(t,e){if(Object.is(t,e))return!0;if(t===null||e===null||typeof t!="object"||typeof e!="object"||Array.isArray(t)!==Array.isArray(e))return!1;const r=t,n=e,s=Object.keys(r);return s.length!==Object.keys(n).length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&Zt(r[i],n[i]))}function Hn(t,e){if(!t)return e;const r={...e.entries};let n=Object.keys(t.entries).length===Object.keys(r).length;for(const s of Object.keys(r))Zt(t.entries[s],r[s])?r[s]=t.entries[s]:n=!1;return{...e,entries:n?t.entries:r}}function Xt(t,e){const r=De.get(t.pluginID);if(!r||r.retired.has(t.registrationID))return;if(r.registrationID!==t.registrationID){if(r.registrationID&&!e)return;if(r.registrationID){r.retired.add(r.registrationID);for(const i of r.connections.values())i.epoch++,i.pending=void 0,i.revision=void 0,ge(i,{...qe,snapshot:void 0,error:void 0})}r.registrationID=t.registrationID}const n=t.snapshot?.connectionID??t.connectionID,s=n===void 0?[...r.connections.values()]:[r.connections.get(n)].filter(i=>!!i);for(const i of s){e&&i.eventVersion++;const o=i.state.transportAvailable,c=Jn(t.snapshot?.revision??t.revision);if(c!==void 0&&(i.revision===void 0||c>i.revision)&&(i.revision=c,ge(i,{snapshot:t.removed?void 0:t.snapshot?Hn(i.state.snapshot,t.snapshot):i.state.snapshot})),!t.transportAvailable){i.epoch++,i.pending=void 0,ge(i,{supported:t.supported,transportAvailable:!1,isLoading:!1});continue}if(n===void 0){ge(i,{supported:t.supported,transportAvailable:!t.supported}),t.supported&&i.listeners.size?We(i,!1):ge(i,{isLoading:!1,error:void 0});continue}ge(i,{supported:t.supported,transportAvailable:!e||o,isLoading:!1,error:void 0}),e&&!o&&i.listeners.size&&We(i,!1)}}function We(t,e){if(!t.listeners.size||t.state.supported===!1)return Promise.resolve();if(!e&&t.pending)return t.pending;const r=t.epoch,n=t.eventVersion;ge(t,{isLoading:!0,error:void 0});const s=e?L.RefreshConnectionMetadata:L.GetConnectionMetadata,i=Promise.resolve().then(()=>{if(!(t.epoch!==r||!t.listeners.size||t.state.supported===!1))return s(t.pluginID,t.connectionID)}).then(o=>{if(!o||t.epoch!==r||!t.listeners.size||o.pluginID!==t.pluginID)return;const c=o.snapshot?.connectionID??o.connectionID;c!==void 0&&c!==t.connectionID||Xt({...o,connectionID:t.connectionID},!1)}).catch(o=>{t.epoch===r&&t.eventVersion===n&&t.listeners.size&&ge(t,{error:o,isLoading:!1})}).finally(()=>{t.pending===i&&(t.pending=void 0),t.epoch===r&&t.listeners.size&&ge(t,{isLoading:!1})});return e||(t.pending=i),i}function Et(t,e){return t.listeners.add(e),Ot++===0&&(rt=K.On("resource/connection/metadata",r=>Xt(r.data,!0))),t.listeners.size===1&&We(t,!1),()=>{t.listeners.delete(e),t.listeners.size||(t.epoch++,t.pending=void 0,De.get(t.pluginID)?.connections.delete(t.connectionID)),--Ot===0&&(rt?.(),rt=void 0,De.clear())}}function Vn(t,e){const r=W.c(15),n=G(t),s=n!==void 0&&e!==void 0;let i;r[0]!==e||r[1]!==s||r[2]!==n?(i=p=>s?Et(ke(n,e),p):Zn,r[0]=e,r[1]=s,r[2]=n,r[3]=i):i=r[3];const o=i;let c;r[4]!==e||r[5]!==s||r[6]!==n?(c=()=>s?ke(n,e).state:qe,r[4]=e,r[5]=s,r[6]=n,r[7]=c):c=r[7];const u=c,a=E.useSyncExternalStore(o,u,Yn);let f;r[8]!==e||r[9]!==s||r[10]!==n?(f=()=>{const p=s?De.get(n)?.connections.get(e):void 0;return p?We(p,!0):Promise.resolve()},r[8]=e,r[9]=s,r[10]=n,r[11]=f):f=r[11];const l=f;let d;return r[12]!==l||r[13]!==a?(d={...a,refresh:l},r[12]=l,r[13]=a,r[14]=d):d=r[14],d}function Yn(){return qe}function Zn(){}function Xn(t,e){const r=JSON.parse(e);let n=new Map;return{subscribe(s){const i=r.map(o=>Et(ke(t,o),s));return()=>i.forEach(o=>o())},read(){const s=r.map(i=>ke(t,i).state);return(n.size!==r.length||r.some((i,o)=>n.get(i)!==s[o]))&&(n=new Map(r.map((i,o)=>[i,s[o]]))),n}}}function er(t,e){const r=W.c(5),n=G(t);let s;r[0]!==e?(s=JSON.stringify([...new Set(e)]),r[0]=e,r[1]=s):s=r[1];const i=s;let o;r[2]!==i||r[3]!==n?(o=Xn(n,i),r[2]=i,r[3]=n,r[4]=o):o=r[4];const c=o;return E.useSyncExternalStore(c.subscribe,c.read,c.read)}function tr(t,e,r){let n,s;return{read(){const i=e===void 0?qe:ke(t,e).state;return n!==i&&(s=r(i),n=i),s}}}function nr(t,e,r){const n=W.c(7),s=G(t);let i;n[0]!==e||n[1]!==s?(i=a=>e===void 0?rr:Et(ke(s,e),a),n[0]=e,n[1]=s,n[2]=i):i=n[2];const o=i;let c;n[3]!==e||n[4]!==s||n[5]!==r?(c=tr(s,e,r),n[3]=e,n[4]=s,n[5]=r,n[6]=c):c=n[6];const u=c;return E.useSyncExternalStore(o,u.read,u.read)}function rr(){}function sr(t,e,r){if(!e||!t?.active)return;const n=t.entries[r];return n?.state==="current"&&typeof n.value=="string"?n.value:void 0}function or(t,e){return e===null?t===null:Array.isArray(e)?Array.isArray(t):typeof e=="object"?typeof t=="object"&&t!==null&&!Array.isArray(t):typeof t==typeof e}function ir(t,e,r){const n=W.c(29),s=G(t),i=O.useQueryClient();let o;n[0]!==e||n[1]!==s?(o=[s,"data",e],n[0]=e,n[1]=s,n[2]=o):o=n[2];const c=o;let u;n[3]!==r||n[4]!==e||n[5]!==s?(u=async()=>{const b=await L.Get(s,e);return b==null?r:or(b,r)?b:(console.warn(`[usePluginData] stored value for "${e}" has unexpected type (expected ${Array.isArray(r)?"array":typeof r}, got ${Array.isArray(b)?"array":typeof b}). Using default.`),r)},n[3]=r,n[4]=e,n[5]=s,n[6]=u):u=n[6];let a;n[7]!==c||n[8]!==u?(a={queryKey:c,queryFn:u},n[7]=c,n[8]=u,n[9]=a):a=n[9];const f=O.useQuery(a);let l;n[10]!==e||n[11]!==s?(l=async b=>{await L.Set(s,e,b)},n[10]=e,n[11]=s,n[12]=l):l=n[12];let d,p,y;n[13]!==i||n[14]!==c?(d=async b=>{await i.cancelQueries({queryKey:c});const w=i.getQueryData(c);return i.setQueryData(c,b),{previous:w}},p=(b,w,x)=>{x?.previous!==void 0&&i.setQueryData(c,x.previous)},y=()=>{i.invalidateQueries({queryKey:c})},n[13]=i,n[14]=c,n[15]=d,n[16]=p,n[17]=y):(d=n[15],p=n[16],y=n[17]);let g;n[18]!==l||n[19]!==d||n[20]!==p||n[21]!==y?(g={mutationFn:l,onMutate:d,onError:p,onSettled:y},n[18]=l,n[19]=d,n[20]=p,n[21]=y,n[22]=g):g=n[22];const h=O.useMutation(g),m=f.data??r;let v;n[23]!==h?(v=async b=>{await h.mutateAsync(b)},n[23]=h,n[24]=v):v=n[24];let S;return n[25]!==f.isLoading||n[26]!==m||n[27]!==v?(S={data:m,update:v,isLoading:f.isLoading},n[25]=f.isLoading,n[26]=m,n[27]=v,n[28]=S):S=n[28],S}const cr=()=>{const t=E.useContext(qt);if(!t)throw new Error("useRightDrawer must be used within a RightDrawerProvider");return t},wt=()=>{const t=E.useContext(Ft);if(t===void 0)throw new Error("useBottomDrawer must be used within a BottomDrawerProvider");return t},ar=({pluginID:t})=>{const e=G(t),{showSnackbar:r}=ue(),{createTab:n,updateTab:s}=wt();return{createSession:O.useMutation({mutationFn:async({connectionID:o,icon:c,label:u,opts:a,recovery:f})=>{const l=`pending-${crypto.randomUUID()}`;n({id:l,title:u??"Connecting...",variant:"terminal",icon:c??"LuSquareTerminal",properties:{status:"connecting",pluginID:e,connectionID:o,opts:{...a},recovery:f}});const d=ht.SessionOptions.createFrom({command:["/bin/bash"],tty:!0,...a});try{const p=await L.CreateSession(e,o,d);if(!p)throw new Error("Failed to create session: null response");return s({id:l},{id:p.id,title:u??`Session ${p.id.substring(0,8)}`,properties:{status:"connected",pluginID:e,connectionID:o,opts:{...a},recovery:f}}),p}catch(p){const y=ce(p);return s({id:l},{properties:{status:"error",error:y.detail,pluginID:e,connectionID:o,opts:{...a},recovery:f,errorInfo:{title:y.title||"Session error",suggestion:y.detail,raw:y.detail}}}),_e(r,p,"Failed to start session"),null}}}).mutateAsync}},lr=t=>{const e=W.c(15),{pluginID:r}=t,n=G(r),{showSnackbar:s}=ue(),{createTab:i}=wt();let o;e[0]!==i||e[1]!==n?(o=async y=>{const{connectionID:g,resourceKey:h,resourceID:m,resourceData:v,reference:S,route:b,icon:w,label:x,target:I,follow:_,tailLines:R,params:N}=y,F={resource_key:h,resource_id:m,resource_data:v,reference:S,route:b,options:{target:I??"",follow:_===void 0?!0:_,include_previous:!1,include_timestamps:!0,tail_lines:R===void 0?1e3:R,since_seconds:0,limit_bytes:0,include_source_events:!0,params:N??{}}},C=await L.CreateSession$1(n,g,F);if(!C)throw new Error("Failed to create log session: null response");return i({id:C.id,title:x??`Logs ${C.id.substring(0,8)}`,variant:"logs",icon:w??"LuLogs"}),C},e[0]=i,e[1]=n,e[2]=o):o=e[2];let c;e[3]!==s?(c=ne(s,"Failed to start log session"),e[3]=s,e[4]=c):c=e[4];let u;e[5]!==o||e[6]!==c?(u={mutationFn:o,onError:c},e[5]=o,e[6]=c,e[7]=u):u=e[7];const a=O.useMutation(u);let f;e[8]!==s?(f=ne(s,"Failed to close log session"),e[8]=s,e[9]=f):f=e[9];let l;e[10]!==f?(l={mutationFn:ur,onError:f},e[10]=f,e[11]=l):l=e[11];const d=O.useMutation(l);let p;return e[12]!==d.mutateAsync||e[13]!==a.mutateAsync?(p={createLogSession:a.mutateAsync,closeLogSession:d.mutateAsync},e[12]=d.mutateAsync,e[13]=a.mutateAsync,e[14]=p):p=e[14],p};async function ur(t){await L.CloseSession(t)}const dr=()=>{const t=W.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e={queryKey:["metric","providers"],queryFn:L.GetProviders,staleTime:3e4},t[0]=e):e=t[0],O.useQuery(e)},en=t=>{const e=W.c(7);let r,n;e[0]!==t?(r=["metric","providers",t],n=()=>L.GetProvidersForResource(t),e[0]=t,e[1]=r,e[2]=n):(r=e[1],n=e[2]);const s=!!t;let i;return e[3]!==r||e[4]!==n||e[5]!==s?(i={queryKey:r,queryFn:n,enabled:s,staleTime:3e4},e[3]=r,e[4]=n,e[5]=s,e[6]=i):i=e[6],O.useQuery(i)},fr=t=>{const e=W.c(45),{connectionID:r,resourceKey:n,resourceID:s,resourceNamespace:i,resourceData:o,reference:c,route:u,params:a,metricIDs:f,shape:l,timeRange:d,refreshInterval:p,enabled:y}=t,g=i===void 0?"":i;let h;e[0]!==f?(h=f===void 0?[]:f,e[0]=f,e[1]=h):h=e[1];const m=h,v=l===void 0?0:l,S=p===void 0?0:p,b=y===void 0?!0:y,{data:w,isLoading:x}=en(n);let I;e[2]!==w?(I=w??[],e[2]=w,e[3]=I):I=e[3];const _=I,R=d?Math.max(Math.floor((d.end.getTime()-d.start.getTime())/250),15e3)*1e6:0;let N;e[4]!==d?.start?(N=d?.start?.getTime(),e[4]=d?.start,e[5]=N):N=e[5];let M;e[6]!==d?.end?(M=d?.end?.getTime(),e[6]=d?.end,e[7]=M):M=e[7];let k;e[8]!==r||e[9]!==m||e[10]!==a||e[11]!==c||e[12]!==s||e[13]!==n||e[14]!==g||e[15]!==u||e[16]!==v||e[17]!==N||e[18]!==M?(k=["metric","query",r,n,s,g,c,u,a,m,v,N,M],e[8]=r,e[9]=m,e[10]=a,e[11]=c,e[12]=s,e[13]=n,e[14]=g,e[15]=u,e[16]=v,e[17]=N,e[18]=M,e[19]=k):k=e[19];let F;e[20]!==r||e[21]!==m||e[22]!==a||e[23]!==c||e[24]!==o||e[25]!==s||e[26]!==n||e[27]!==g||e[28]!==u||e[29]!==v||e[30]!==R||e[31]!==d?.end||e[32]!==d?.start?(F=async()=>{const z=await L.QueryAll(r,{resource_key:n,resource_id:s,resource_namespace:g,resource_data:o,reference:c,route:u,params:a,metric_ids:m,shape:v,start_time:(d?.start??new Date(0)).toISOString(),end_time:(d?.end??new Date(0)).toISOString(),step:R}),H={};for(const[Z,V]of Object.entries(z))V!=null&&(H[Z]=V);return H},e[20]=r,e[21]=m,e[22]=a,e[23]=c,e[24]=o,e[25]=s,e[26]=n,e[27]=g,e[28]=u,e[29]=v,e[30]=R,e[31]=d?.end,e[32]=d?.start,e[33]=F):F=e[33];const C=b&&!!r&&!!n&&_.length>0,T=S>0?S:void 0;let P;e[34]!==F||e[35]!==C||e[36]!==T||e[37]!==k?(P={queryKey:k,queryFn:F,enabled:C,refetchInterval:T,staleTime:5e3,placeholderData:O.keepPreviousData},e[34]=F,e[35]=C,e[36]=T,e[37]=k,e[38]=P):P=e[38];const $=O.useQuery(P),A=$.data??void 0,q=x||$.isLoading,j=$.error;let B;return e[39]!==$.refetch||e[40]!==_||e[41]!==A||e[42]!==q||e[43]!==j?(B={data:A,providers:_,isLoading:q,error:j,refetch:$.refetch},e[39]=$.refetch,e[40]=_,e[41]=A,e[42]=q,e[43]=j,e[44]=B):B=e[44],B},pr=t=>{const{pluginID:e,connectionID:r,resourceKey:n,resourceID:s,resourceNamespace:i="",resourceData:o,reference:c,route:u,params:a,metricIDs:f=[],interval:l=1e4,enabled:d=!0}=t,p=G(e),[y,g]=E.useState(null),[h,m]=E.useState(null),[v,S]=E.useState(!1),[b,w]=E.useState(null),x=E.useRef(null),I=E.useCallback(async()=>{if(!(!d||!p||!r||!n))try{const R=await L.Subscribe(p,r,{resource_key:n,resource_id:s,resource_namespace:i,resource_data:o,reference:c,route:u,params:a,metric_ids:f,interval:l*1e6});m(R),S(!0),w(null);const N=K.On(`core/metrics/data/${R}`,k=>{const F=k.data;try{const C=JSON.parse(F);C.results&&(g(C.results),S(!0),w(null))}catch(C){console.error("Failed to parse metric stream data:",C)}}),M=K.On(`core/metrics/error/${R}`,k=>{const F=k.data;try{const C=JSON.parse(F);let T="Unknown error";if(C&&typeof C=="object"&&("error"in C&&typeof C.error=="string"&&C.error&&(T=C.error),"operation_error"in C)){const P=C.operation_error;P&&typeof P=="object"&&"message"in P&&typeof P.message=="string"&&(T=P.message)}w(T),S(!1)}catch{w("Failed to parse metric stream error")}});x.current=()=>{N(),M()}}catch(R){w(R instanceof Error?R.message:String(R))}},[p,r,n,s,i,o,c,u,a,f,l,d]),_=E.useCallback(async()=>{if(h)try{await L.Unsubscribe(h)}catch(R){console.error("Failed to unsubscribe:",R)}x.current&&(x.current(),x.current=null),m(null),S(!1)},[h]);return E.useEffect(()=>()=>{h&&L.Unsubscribe(h).catch(console.error),x.current&&x.current()},[h]),{data:y,subscriptionID:h,isStreaming:v,error:b,start:I,stop:_}},Ce=["networker","portforward","all-sessions"];function hr(){const t=W.c(17),{showSnackbar:e}=ue(),r=O.useQueryClient();let n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n={queryKey:[...Ce],queryFn:mr,retry:!1},t[0]=n):n=t[0];const s=O.useQuery(n);let i,o;t[1]!==r?(i=()=>{const y=K.On("core/networker/portforward/created",()=>{r.invalidateQueries({queryKey:[...Ce]})}),g=K.On("core/networker/portforward/closed",()=>{r.invalidateQueries({queryKey:[...Ce]})});return()=>{y(),g()}},o=[r],t[1]=r,t[2]=i,t[3]=o):(i=t[2],o=t[3]),E.useEffect(i,o);let c;t[4]!==s.data?(c=s.data??[],t[4]=s.data,t[5]=c):c=t[5];const u=c;let a;t[6]!==e?(a=ne(e,"Failed to close port forwarding session"),t[6]=e,t[7]=a):a=t[7];let f;t[8]!==r?(f=async()=>{await r.invalidateQueries({queryKey:[...Ce]})},t[8]=r,t[9]=f):f=t[9];let l;t[10]!==a||t[11]!==f?(l={mutationFn:yr,onError:a,onSuccess:f},t[10]=a,t[11]=f,t[12]=l):l=t[12];const d=O.useMutation(l);let p;return t[13]!==u||t[14]!==d.mutateAsync||t[15]!==s?(p={sessions:s,activeSessions:u,closeSession:d.mutateAsync,openInBrowser:gr},t[13]=u,t[14]=d.mutateAsync,t[15]=s,t[16]=p):p=t[16],p}function gr(t){return K.OpenURL(`http://localhost:${t}`)}async function yr(t){return L.ClosePortForwardSession(t)}async function mr(){return L.ListAllPortForwardSessions().catch(vr)}function vr(t){if(ce(t).detail.includes("not found"))return[];throw t}function br(t){const e=W.c(36),{pluginID:r,connectionID:n,resourceID:s}=t,i=G(r);let o;e[0]!==n||e[1]!==i||e[2]!==s?(o=["networker","portforward","sessions",i,n,s],e[0]=n,e[1]=i,e[2]=s,e[3]=o):o=e[3];const c=o,{showSnackbar:u}=ue(),a=O.useQueryClient();let f;e[4]!==n||e[5]!==i||e[6]!==s||e[7]!==u?(f=async()=>L.FindPortForwardSessions(i,n,ht.FindPortForwardSessionRequest.createFrom({resource_id:s,connection_id:n})).catch(I=>{const _=ce(I);return _.detail.includes("not found")?[]:(u({message:"Failed to fetch port forward sessions",status:"error",details:_.detail}),[])}),e[4]=n,e[5]=i,e[6]=s,e[7]=u,e[8]=f):f=e[8];let l;e[9]!==c||e[10]!==f?(l={queryKey:c,queryFn:f,retry:!1},e[9]=c,e[10]=f,e[11]=l):l=e[11];const d=O.useQuery(l);let p;e[12]!==n||e[13]!==i?(p=async I=>{const{opts:_}=I,R={local_port:_.localPort||0,remote_port:_.remotePort,protocol:_.protocol||"TCP",connection_type:"RESOURCE",connection:{resource_data:_.resource,reference:_.reference,route:_.route,connection_id:n,plugin_id:i,resource_id:_.resourceId,resource_key:_.resourceKey},labels:_.labels??{},params:_.parameters??{}},N=await L.StartResourcePortForwardingSession(i,n,R);if(!N)throw new Error("Failed to start port forwarding: null response");return _.openInBrowser&&K.OpenURL(`http://localhost:${N.local_port}`),N},e[12]=n,e[13]=i,e[14]=p):p=e[14];let y;e[15]!==u?(y=ne(u,"Failed to start port forwarding session"),e[15]=u,e[16]=y):y=e[16];let g;e[17]!==a||e[18]!==c?(g=async()=>{await Promise.all([a.invalidateQueries({queryKey:c}),a.invalidateQueries({queryKey:[...Ce]})])},e[17]=a,e[18]=c,e[19]=g):g=e[19];let h;e[20]!==p||e[21]!==y||e[22]!==g?(h={mutationFn:p,onError:y,onSuccess:g},e[20]=p,e[21]=y,e[22]=g,e[23]=h):h=e[23];const m=O.useMutation(h);let v;e[24]!==u?(v=ne(u,"Failed to close port forwarding session"),e[24]=u,e[25]=v):v=e[25];let S;e[26]!==a||e[27]!==c?(S=async()=>{await Promise.all([a.invalidateQueries({queryKey:c}),a.invalidateQueries({queryKey:[...Ce]})])},e[26]=a,e[27]=c,e[28]=S):S=e[28];let b;e[29]!==v||e[30]!==S?(b={mutationFn:Sr,onError:v,onSuccess:S},e[29]=v,e[30]=S,e[31]=b):b=e[31];const w=O.useMutation(b);let x;return e[32]!==w.mutateAsync||e[33]!==m.mutateAsync||e[34]!==d?(x={sessions:d,forward:m.mutateAsync,close:w.mutateAsync},e[32]=w.mutateAsync,e[33]=m.mutateAsync,e[34]=d,e[35]=x):x=e[35],x}async function Sr(t){const{opts:e}=t;return L.ClosePortForwardSession(e.sessionID)}const Er=()=>{const t=E.useContext(Mt);if(!t)throw new Error("useConfirmationModal must be used within a ConfirmationModalProvider");return t},wr=t=>{const e=W.c(31),{pluginID:r,request:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r),c=n?.request.route.connection??"",u=i&&!!n;let a;e[0]!==c||e[1]!==o||e[2]!==u?(a={pluginID:o,connectionID:c,enabled:u},e[0]=c,e[1]=o,e[2]=u,e[3]=a):a=e[3];const f=oe(a),l=ae(o,c),d=O.useQueryClient(),{showSnackbar:p}=ue();let y;e[4]!==o||e[5]!==n?(y=me.resource(o,n),e[4]=o,e[5]=n,e[6]=y):y=e[6];const g=y,h=i&&!!n&&f.phase==="connected";let m;e[7]!==o||e[8]!==n?(m=async N=>{if(!n)throw new Error("Resource target is not resolved");return await Fe(o,n.request.route.connection),L.Mutate(o,{...N,route:n.request.route,reference:n.request.reference})},e[7]=o,e[8]=n,e[9]=m):m=e[9];let v;e[10]!==o||e[11]!==d?(v=async()=>{await d.invalidateQueries({queryKey:me.all(o)})},e[10]=o,e[11]=d,e[12]=v):v=e[12];let S;e[13]!==p?(S=ne(p,"Failed to mutate resource"),e[13]=p,e[14]=S):S=e[14];let b;e[15]!==m||e[16]!==v||e[17]!==S?(b={mutationFn:m,onSuccess:v,onError:S},e[15]=m,e[16]=v,e[17]=S,e[18]=b):b=e[18];const{mutateAsync:w}=O.useMutation(b);let x;e[19]!==l||e[20]!==o||e[21]!==h||e[22]!==n?(x=h?N=>{const{signal:M,queryKey:k}=N;return l(k,M,()=>L.Get$1(o,n))}:O.skipToken,e[19]=l,e[20]=o,e[21]=h,e[22]=n,e[23]=x):x=e[23];let I;e[24]!==h||e[25]!==g||e[26]!==x?(I={queryKey:g,queryFn:x,retry:!1,enabled:h},e[24]=h,e[25]=g,e[26]=x,e[27]=I):I=e[27];const _=O.useQuery(I);let R;return e[28]!==w||e[29]!==_?(R={resource:_,mutate:w},e[28]=w,e[29]=_,e[30]=R):R=e[30],R},Cr=t=>{const e=W.c(11);let r;e[0]!==t.area||e[1]!==t.plugin||e[2]!==t.resource?(r=["component",t.plugin,t.resource,t.area],e[0]=t.area,e[1]=t.plugin,e[2]=t.resource,e[3]=r):r=e[3];const n=r;let s;e[4]!==t?(s=async()=>L.GetResourceAreaComponent(t),e[4]=t,e[5]=s):s=e[5];let i;e[6]!==n||e[7]!==s?(i={queryKey:n,queryFn:s},e[6]=n,e[7]=s,e[8]=i):i=e[8];const o=O.useQuery(i);let c;return e[9]!==o?(c={component:o},e[9]=o,e[10]=c):c=e[10],c},Ir=t=>{const e=W.c(18),{pluginID:r,route:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r);let c;e[0]!==i||e[1]!==o||e[2]!==n.connection?(c={pluginID:o,connectionID:n.connection,enabled:i},e[0]=i,e[1]=o,e[2]=n.connection,e[3]=c):c=e[3];const u=oe(c),a=ae(o,n.connection),f=i&&!!o&&!!n.connection&&u.phase==="connected";let l;e[4]!==o||e[5]!==n?(l=[o,"resource-v2","groups",n],e[4]=o,e[5]=n,e[6]=l):l=e[6];let d;e[7]!==a||e[8]!==o||e[9]!==f||e[10]!==n?(d=f?h=>{const{signal:m,queryKey:v}=h;return a(v,m,()=>L.GetResourceGroups(o,n))}:O.skipToken,e[7]=a,e[8]=o,e[9]=f,e[10]=n,e[11]=d):d=e[11];let p;e[12]!==f||e[13]!==l||e[14]!==d?(p={queryKey:l,queryFn:d,enabled:f,retry:!1},e[12]=f,e[13]=l,e[14]=d,e[15]=p):p=e[15];const y=O.useQuery(p);let g;return e[16]!==y?(g={groups:y},e[16]=y,e[17]=g):g=e[17],g},_r=t=>{const e=W.c(28),{pluginID:r,searches:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r);let c;e[0]!==i||e[1]!==n?(c=JSON.stringify(i?[...new Set(n.map(xr))].sort():[]),e[0]=i,e[1]=n,e[2]=c):c=e[2];const u=c;let a;if(e[3]!==u||e[4]!==o){const v=JSON.parse(u);let S;e[6]!==o?(S=b=>[b,Be(o,b)],e[6]=o,e[7]=S):S=e[7],a=new Map(v.map(S)),e[3]=u,e[4]=o,e[5]=a}else a=e[5];const f=a;let l,d;e[8]!==f?(l=()=>JSON.stringify([...f.values()].map(Rr)),d=v=>{const S=[...f.values()].map(b=>b.subscribe(v));return()=>{for(const b of S)b()}},e[8]=f,e[9]=l,e[10]=d):(l=e[9],d=e[10]);let p;e[11]!==f||e[12]!==l||e[13]!==d?(p={stores:f,getSnapshot:l,subscribe:d},e[11]=f,e[12]=l,e[13]=d,e[14]=p):p=e[14];const y=p;E.useSyncExternalStore(y.subscribe,y.getSnapshot,y.getSnapshot);const g=ae(o,"");let h;if(e[15]!==i||e[16]!==g||e[17]!==o||e[18]!==y.stores||e[19]!==n){let v;e[21]!==i||e[22]!==g||e[23]!==o||e[24]!==y.stores?(v=S=>{const b=S.request.target.route.connection,w=i&&y.stores.get(b)?.getSnapshot().phase==="connected";return{queryKey:me.nativeQuery(o,S),queryFn:w?x=>{const{signal:I,queryKey:_}=x;return g(_,I,()=>L.NativeQuery(o,S),b)}:O.skipToken,retry:!1,enabled:w}},e[21]=i,e[22]=g,e[23]=o,e[24]=y.stores,e[25]=v):v=e[25],h=n.map(v),e[15]=i,e[16]=g,e[17]=o,e[18]=y.stores,e[19]=n,e[20]=h}else h=e[20];let m;return e[26]!==h?(m={queries:h},e[26]=h,e[27]=m):m=e[27],O.useQueries(m)};function xr(t){return t.request.target.route.connection}function Rr(t){return t.getSnapshot().phase}const Dr=t=>{const e=W.c(21),{pluginID:r,route:n,type:s}=t,i=G(r),o=!!s;let c;e[0]!==i||e[1]!==n.connection||e[2]!==o?(c={pluginID:i,connectionID:n.connection,enabled:o},e[0]=i,e[1]=n.connection,e[2]=o,e[3]=c):c=e[3];const u=oe(c),a=ae(i,n.connection),f=!!i&&!!n.connection&&!!s&&u.phase==="connected";let l;e[4]!==i||e[5]!==n?(l=[i,"resource-v2","catalog",n],e[4]=i,e[5]=n,e[6]=l):l=e[6];let d;e[7]!==a||e[8]!==i||e[9]!==f||e[10]!==n?(d=f?m=>{const{signal:v,queryKey:S}=m;return a(S,v,()=>L.Catalog(i,{route:n}))}:O.skipToken,e[7]=a,e[8]=i,e[9]=f,e[10]=n,e[11]=d):d=e[11];let p;e[12]!==s?(p=m=>m.types.find(v=>v.type===s),e[12]=s,e[13]=p):p=e[13];let y;e[14]!==f||e[15]!==l||e[16]!==d||e[17]!==p?(y={queryKey:l,queryFn:d,select:p,enabled:f,retry:!1},e[14]=f,e[15]=l,e[16]=d,e[17]=p,e[18]=y):y=e[18];const g=O.useQuery(y);let h;return e[19]!==g?(h={resourceType:g},e[19]=g,e[20]=h):h=e[20],h},kr=t=>{const e=W.c(18),{pluginID:r,route:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r);let c;e[0]!==i||e[1]!==o||e[2]!==n.connection?(c={pluginID:o,connectionID:n.connection,enabled:i},e[0]=i,e[1]=o,e[2]=n.connection,e[3]=c):c=e[3];const u=oe(c),a=ae(o,n.connection),f=i&&!!o&&!!n.connection&&u.phase==="connected";let l;e[4]!==o||e[5]!==n?(l=[o,"resource-v2","catalog",n],e[4]=o,e[5]=n,e[6]=l):l=e[6];let d;e[7]!==a||e[8]!==o||e[9]!==f||e[10]!==n?(d=f?h=>{const{signal:m,queryKey:v}=h;return a(v,m,()=>L.Catalog(o,{route:n}))}:O.skipToken,e[7]=a,e[8]=o,e[9]=f,e[10]=n,e[11]=d):d=e[11];let p;e[12]!==f||e[13]!==l||e[14]!==d?(p={queryKey:l,queryFn:d,select:Or,enabled:f,retry:!1},e[12]=f,e[13]=l,e[14]=d,e[15]=p):p=e[15];const y=O.useQuery(p);let g;return e[16]!==y?(g={resourceTypes:y},e[16]=y,e[17]=g):g=e[17],g};function Or(t){return t.types}function lt(t,e,r=!1,n=!1){if(!t||!e.length&&!r)return t;if(n){const a=new Map(t.records.map(f=>[f.key,f]));for(const f of e)f.type==="DELETE"?a.delete(f.payload.key):a.set(f.payload.record.key,f.payload.record);return{records:[...a.values()],sourcePage:t.sourcePage,view:{guarantee:"bestEffort",count:{kind:"unknown"},membershipStale:!1}}}let s;const i=e.length>1?new Map(t.records.map((a,f)=>[a.key,f])):void 0,o=new Set;let c=t.view?.membershipStale===!0||r;for(const a of e){const f=a.type==="DELETE"?a.payload.key:a.payload.record.key,l=i?i.get(f)??-1:t.records.findIndex(d=>d.key===f);a.type==="DELETE"?(l!==-1&&o.add(l),c=!0):l===-1||o.has(l)?c=!0:(s??t.records)[l]!==a.payload.record&&(s??=[...t.records],s[l]=a.payload.record)}if(!s&&!o.size&&t.view?.membershipStale===c&&t.view.guarantee==="bestEffort"&&t.view.count.kind==="unknown"&&t.view.sourceRevision===void 0)return t;const u=s??t.records;return{records:o.size?u.filter((a,f)=>!o.has(f)):u,sourcePage:t.sourcePage,view:{guarantee:"bestEffort",count:{kind:"unknown"},membershipStale:c}}}function tn(t,e,r,n){const s=W.c(36);let i;s[0]===Symbol.for("react.memo_cache_sentinel")?(i=new Map,s[0]=i):i=s[0];const o=E.useRef(i),c=E.useRef(!1),u=E.useRef(void 0),a=E.useRef(void 0),f=E.useRef(r),l=n?.enabled??!0,d=n?.isCurrent,p=n?.collection??!1;let y;s[1]!==p||s[2]!==l||s[3]!==d||s[4]!==t||s[5]!==e?(y={queryClient:t,queryKey:e,enabled:l,isCurrent:d,collection:p},s[1]=p,s[2]=l,s[3]=d,s[4]=t,s[5]=e,s[6]=y):y=s[6];const g=y,h=E.useRef(void 0);let m;s[7]!==l||s[8]!==d||s[9]!==g?(m=()=>h.current===g&&l&&(!d||d()),s[7]=l,s[8]=d,s[9]=g,s[10]=m):m=s[10];const v=m;let S,b;s[11]!==r?(S=()=>{f.current=r},b=[r],s[11]=r,s[12]=S,s[13]=b):(S=s[12],b=s[13]),E.useLayoutEffect(S,b);const w=n?.syncWindowMs??500;let x;s[14]!==p||s[15]!==v||s[16]!==t||s[17]!==e||s[18]!==g?(x=()=>{if(h.current!==g)return;if(window.clearTimeout(u.current),a.current!==void 0&&cancelAnimationFrame(a.current),u.current=void 0,a.current=void 0,!v()){o.current.clear(),c.current=!1;return}if(!o.current.size&&!c.current||!t.getQueryData(e)||p&&t.getQueryState(e)?.fetchStatus==="fetching")return;const k=[...o.current.values()],F=c.current;o.current.clear(),c.current=!1;const C=t.getQueryCache().find({queryKey:e,exact:!0});p&&C?.state.status==="error"?C.setState({data:v()?lt(C.state.data,k,F,p):C.state.data}):t.setQueryData(e,T=>v()?lt(T,k,F,p):T);for(const T of k){if(!v())return;T.type==="DELETE"?t.invalidateQueries({queryKey:[e[0],"resource-v2","get"],predicate:P=>v()&&P.state.data?.key===T.payload.key}):t.setQueriesData({queryKey:[e[0],"resource-v2","get"]},P=>v()&&P?.key===T.payload.record.key?T.payload.record:P)}},s[14]=p,s[15]=v,s[16]=t,s[17]=e,s[18]=g,s[19]=x):x=s[19];const I=x;let _;s[20]!==p||s[21]!==v||s[22]!==I||s[23]!==t||s[24]!==e||s[25]!==w?(_=k=>{if(!v())return;const F=k.type==="DELETE"?k.payload.key:k.payload.record.key,C=t.getQueryData(e);p||C?.records.some(T=>T.key===F)?o.current.set(F,k):c.current=!0,!p&&k.type==="DELETE"&&(c.current=!0),!(u.current!==void 0||a.current!==void 0)&&(u.current=window.setTimeout(I,w),f.current!==Q.WatchState.WatchStateSyncing&&(a.current=requestAnimationFrame(I)))},s[20]=p,s[21]=v,s[22]=I,s[23]=t,s[24]=e,s[25]=w,s[26]=_):_=s[26];const R=_;let N,M;return s[27]!==p||s[28]!==v||s[29]!==l||s[30]!==I||s[31]!==t||s[32]!==e||s[33]!==g?(N=()=>{if(!l)return;h.current=g;const k=o.current,F=t.getQueryCache().subscribe(C=>{!v()||C.type!=="updated"||C.query.queryHash!==O.hashKey(e)||(C.action.type==="fetch"?(k.clear(),c.current=!1):(C.action.type==="success"||p&&C.action.type==="error")&&I())});return()=>{h.current=void 0,F(),window.clearTimeout(u.current),a.current!==void 0&&cancelAnimationFrame(a.current),k.clear(),c.current=!1,u.current=void 0,a.current=void 0}},M=[t,e,I,l,g,v,p],s[27]=p,s[28]=v,s[29]=l,s[30]=I,s[31]=t,s[32]=e,s[33]=g,s[34]=N,s[35]=M):(N=s[34],M=s[35]),E.useLayoutEffect(N,M),R}const Nr={getSnapshot:()=>{},subscribe:()=>()=>{}},Tr=({pluginID:t,request:e,enabled:r=!0,live:n=!0,collection:s=!1})=>{const i=G(t),o=O.useQueryClient(),{showSnackbar:c}=ue(),u=E.useRef(c);E.useLayoutEffect(()=>{u.current=c},[c]);const a=O.hashKey([e]),[f,l]=E.useState({hash:a,request:e});f.hash!==a&&l({hash:a,request:e});const d=f.hash===a?f.request:e,p=d?.request.target.route.connection??"",y=r&&!!d,g=oe({pluginID:i,connectionID:p,enabled:y}),h=E.useMemo(()=>y?{subscribe:Be(i,p).subscribe,getSnapshot:()=>it(i,p)}:Nr,[i,p,y]),m=E.useSyncExternalStore(h.subscribe,h.getSnapshot,h.getSnapshot),v=ae(i,p),S=y&&g.phase==="connected",b=d?O.hashKey([i,d.targetId,d.request.target,s]):void 0,w=E.useCallback(U=>s?[...me.list(i,U),"collection"]:me.list(i,U),[i,s]),x=E.useCallback(async(U,X,fe)=>{if(!s)return v(fe,X,()=>L.Enumerate(i,U));const pe=it(i,p),he=new Map,ve=new Set;let se,be;do{if(X.aborted||pe===void 0||!Pe(i,p,pe))throw new O.CancelledError({revert:!0});const we=await v(fe,X,()=>L.Enumerate(i,{...U,request:{...U.request,cursor:se}}));if(X.aborted||!Pe(i,p,pe))throw new O.CancelledError({revert:!0});be??=we;for(const Ne of we.records){if(Ne.targetId!==U.targetId)throw new Error("Collection page returned a different resource target");he.set(Ne.key,Ne)}if(se=we.sourcePage.nextCursor,se){if(ve.has(se))throw new Error("Collection enumeration repeated a source cursor");ve.add(se)}}while(se);return{records:[...he.values()],sourcePage:{...be.sourcePage,nextCursor:void 0,count:{kind:"unknown"},sourceRevision:void 0},view:{guarantee:"bestEffort",count:{kind:"unknown"},membershipStale:!1}}},[s,v,i,p]),I=E.useMemo(()=>w(d),[w,d]),_=O.useQuery({queryKey:I,queryFn:S?({signal:U,queryKey:X})=>x(d,U,X):O.skipToken,enabled:S,retry:!1,gcTime:0,placeholderData:void 0}),[R,N]=E.useState();let M=R;b&&d&&_.isSuccess&&_.data?(R?.identity!==b||R.requestHash!==a)&&(M={identity:b,requestHash:a,request:d},N(M)):R&&R.identity!==b&&(M=void 0,N(void 0));const k=b&&M?.identity===b?M.request:void 0,F=E.useMemo(()=>w(k),[w,k]),C=O.useQuery({queryKey:F,queryFn:S&&k?({signal:U,queryKey:X})=>x(k,U,X):O.skipToken,enabled:!1,retry:!1,gcTime:0,placeholderData:void 0}),T=E.useMemo(()=>k&&C.data?{request:k,page:C.data}:void 0,[k,C.data]),P=S&&n&&!!k,$=E.useMemo(()=>({pluginID:i,acquiredRequest:k,generation:m,enabled:P}),[i,k,m,P]),[A,q]=E.useState(),j=P&&A?.scope===$?A.state:Q.WatchState.WatchStateIdle,B=P&&A?.scope===$?A.error:void 0,z=P&&A?.scope===$&&A.live,H=E.useCallback(()=>m!==void 0&&Pe(i,p,m),[i,p,m]),Z=tn(o,F,j,{enabled:P,isCurrent:H,collection:s}),V=E.useRef(Promise.resolve());E.useEffect(()=>{if(!P||!k)return;const U=k.request.target,X={targetId:k.targetId,target:U};let fe=!0,pe=!1,he=!1,ve;const se=()=>fe&&m!==void 0&&Pe(i,p,m),be=ee=>{se()&&q(re=>({state:Q.WatchState.WatchStateIdle,live:!1,...re?.scope===$?re:{},...ee,scope:$}))},we=`${i}/${U.route.connection}/${U.type}`,Ne=[K.On(`${we}/ADD`,ee=>{const re=ee.data;se()&&re.record.targetId===X.targetId&&Z({type:"ADD",payload:re})}),K.On(`${we}/UPDATE`,ee=>{const re=ee.data;se()&&re.record.targetId===X.targetId&&Z({type:"UPDATE",payload:re})}),K.On(`${we}/DELETE`,ee=>{const re=ee.data;se()&&re.targetId===X.targetId&&Z({type:"DELETE",payload:re})}),K.On(`${i}/${U.route.connection}/watch/STATE`,ee=>{const re=ee.data;!se()||re.type!==U.type||re.route.connection!==U.route.connection||(he=!0,be({state:re.state,error:re.error}))})],Ct=()=>{for(const ee of Ne)ee()},It=L.GetWatchState(i,U.route);It.then(ee=>{!he&&ee?.resources[U.type]!==void 0&&be({state:ee.resources[U.type]})}).catch(ee=>be({error:ee}));const _t=V.current.then(async()=>{se()&&(await L.SubscribeResource(i,X),pe=!0,se()&&(ve=L.EnsureResourceWatch(i,U),await ve,be({live:!0})))}).catch(ee=>{Ct(),be({error:ee,state:Q.WatchState.WatchStateError,live:!1}),se()&&_e(u.current,ee,"Failed to subscribe to resource updates")});return V.current=_t,()=>{fe=!1,Ct(),It.cancel(),ve?.cancel(),V.current=_t.then(async()=>{pe&&await L.UnsubscribeResource(i,X)}).catch(ee=>{_e(u.current,ee,"Failed to unsubscribe from resource updates")})}},[i,p,k,P,m,$,Z]);const te=T!==void 0;return{resources:_,acquired:T,isAcquiredRequestCurrent:te&&M?.requestHash===a,refreshAcquiredPage:C.refetch,view:T?.page.view,membershipStale:T?.page.view?.membershipStale??!1,watchState:te?j:Q.WatchState.WatchStateIdle,isLive:te&&z,isSyncing:te&&j===Q.WatchState.WatchStateSyncing,isSynced:te&&j===Q.WatchState.WatchStateSynced,watchError:te?B??(j===Q.WatchState.WatchStateError||j===Q.WatchState.WatchStateFailed||j===Q.WatchState.WatchStateForbidden?!0:void 0):void 0,guarantee:te&&z?"bestEffort":void 0}},Pr=t=>{const e=W.c(13),{pluginID:r}=t,n=G(r),s=O.useQueryClient(),{showSnackbar:i}=ue();let o;e[0]!==n?(o=async d=>(await Fe(n,d.route.connection),L.Mutate(n,d)),e[0]=n,e[1]=o):o=e[1];let c;e[2]!==n||e[3]!==s?(c=async()=>{await s.invalidateQueries({queryKey:me.all(n)})},e[2]=n,e[3]=s,e[4]=c):c=e[4];let u;e[5]!==i?(u=ne(i,"Failed to mutate resource"),e[5]=i,e[6]=u):u=e[6];let a;e[7]!==o||e[8]!==c||e[9]!==u?(a={mutationFn:o,onSuccess:c,onError:u},e[7]=o,e[8]=c,e[9]=u,e[10]=a):a=e[10];const f=O.useMutation(a);let l;return e[11]!==f?(l={mutate:f.mutateAsync,mutation:f},e[11]=f,e[12]=l):l=e[12],l},Ar=t=>{const e=W.c(25),{pluginID:r,route:n,type:s,enabled:i}=t,o=i===void 0?!0:i,c=G(r),u=n.connection,a=o&&!!s;let f;e[0]!==u||e[1]!==c||e[2]!==a?(f={pluginID:c,connectionID:u,enabled:a},e[0]=u,e[1]=c,e[2]=a,e[3]=f):f=e[3];const l=oe(f),d=ae(c,u);let p;e[4]!==c||e[5]!==n||e[6]!==s?(p=[c,"resource-v2","actions",n,s],e[4]=c,e[5]=n,e[6]=s,e[7]=p):p=e[7];let y;e[8]!==o||e[9]!==d||e[10]!==c||e[11]!==l||e[12]!==n||e[13]!==s?(y=o&&s&&l.phase==="connected"?b=>{const{signal:w,queryKey:x}=b;return d(x,w,()=>L.GetActions(c,n,s))}:O.skipToken,e[8]=o,e[9]=d,e[10]=c,e[11]=l,e[12]=n,e[13]=s,e[14]=y):y=e[14];const g=o&&!!c&&!!n.connection&&!!s&&l.phase==="connected";let h;e[15]!==p||e[16]!==y||e[17]!==g?(h={queryKey:p,queryFn:y,enabled:g,staleTime:3e5},e[15]=p,e[16]=y,e[17]=g,e[18]=h):h=e[18];const m=O.useQuery(h);let v;e[19]!==m.data?(v=m.data??[],e[19]=m.data,e[20]=v):v=e[20];let S;return e[21]!==m.error||e[22]!==m.isLoading||e[23]!==v?(S={actions:v,isLoading:m.isLoading,error:m.error},e[21]=m.error,e[22]=m.isLoading,e[23]=v,e[24]=S):S=e[24],S},Lr=t=>{const e=W.c(15),{pluginID:r}=t,n=G(r),s=O.useQueryClient(),{showSnackbar:i}=ue();let o;e[0]!==n?(o=async d=>(await Fe(n,d.route.connection),L.Action(n,d)),e[0]=n,e[1]=o):o=e[1];let c;e[2]!==n||e[3]!==s?(c=async()=>{await s.invalidateQueries({queryKey:me.all(n)})},e[2]=n,e[3]=s,e[4]=c):c=e[4];let u;e[5]!==i?(u=(d,p)=>{_e(i,d,`Failed to execute action "${p.action}"`)},e[5]=i,e[6]=u):u=e[6];let a;e[7]!==o||e[8]!==c||e[9]!==u?(a={mutationFn:o,onSuccess:c,onError:u},e[7]=o,e[8]=c,e[9]=u,e[10]=a):a=e[10];const f=O.useMutation(a);let l;return e[11]!==f.error||e[12]!==f.isPending||e[13]!==f.mutateAsync?(l={executeAction:f.mutateAsync,isExecuting:f.isPending,error:f.error},e[11]=f.error,e[12]=f.isPending,e[13]=f.mutateAsync,e[14]=l):l=e[14],l},Fr=t=>{const e=W.c(27),{pluginID:r,route:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r),c=O.useQueryClient();let u;e[0]!==i||e[1]!==o||e[2]!==n.connection?(u={pluginID:o,connectionID:n.connection,enabled:i},e[0]=i,e[1]=o,e[2]=n.connection,e[3]=u):u=e[3];const a=oe(u),f=ae(o,n.connection),l=i&&!!o&&!!n.connection&&a.phase==="connected";let d;e[4]!==o||e[5]!==n?(d=[o,"resource-v2","editor-schemas",n],e[4]=o,e[5]=n,e[6]=d):d=e[6];let p;e[7]!==f||e[8]!==o||e[9]!==c||e[10]!==l||e[11]!==n?(p=l?S=>{const{signal:b,queryKey:w}=S;return f(w,b,async()=>{const x=await f(w,b,()=>L.GetEditorSchemas(o,n)),I=[],_=new Set;for(const R of x){const N=R.binding.documentRef;if(!N)continue;const M=JSON.stringify([N.id,N.revision]);_.has(M)||(I.push(await c.fetchQuery({queryKey:[o,"resource-v2","schema-document",n,N],queryFn:k=>{const{signal:F,queryKey:C}=k;return f(C,AbortSignal.any([b,F]),()=>L.GetSchemaDocument(o,n,N))},staleTime:1/0})),_.add(M))}return{schemas:x,documents:I}})}:O.skipToken,e[7]=f,e[8]=o,e[9]=c,e[10]=l,e[11]=n,e[12]=p):p=e[12];let y;e[13]!==l||e[14]!==d||e[15]!==p?(y={queryKey:d,queryFn:p,enabled:l,staleTime:6e5,retry:1},e[13]=l,e[14]=d,e[15]=p,e[16]=y):y=e[16];const g=O.useQuery(y);let h;e[17]!==g.data?.schemas?(h=g.data?.schemas??[],e[17]=g.data?.schemas,e[18]=h):h=e[18];let m;e[19]!==g.data?.documents?(m=g.data?.documents??[],e[19]=g.data?.documents,e[20]=m):m=e[20];let v;return e[21]!==g.error||e[22]!==g.isLoading||e[23]!==g.refetch||e[24]!==h||e[25]!==m?(v={schemas:h,documents:m,isLoading:g.isLoading,error:g.error,refetch:g.refetch},e[21]=g.error,e[22]=g.isLoading,e[23]=g.refetch,e[24]=h,e[25]=m,e[26]=v):v=e[26],v};function Nt(t){const e=Object.values(t.resources);return{...t,totalResources:e.length,syncedCount:e.filter(r=>r===Q.WatchState.WatchStateSynced).length,errorCount:e.filter(r=>r===Q.WatchState.WatchStateError||r===Q.WatchState.WatchStateFailed).length}}const qr=t=>{const e=W.c(38),{pluginID:r,route:n,enabled:s}=t,i=s===void 0?!0:s,o=G(r),c=O.useQueryClient(),u=n.connection;let a;e[0]!==u?(a={connection:u},e[0]=u,e[1]=a):a=e[1];let f;e[2]!==o||e[3]!==a?(f=[o,"resource-v2","watch-state",a],e[2]=o,e[3]=a,e[4]=f):f=e[4];const l=f;let d;e[5]===Symbol.for("react.memo_cache_sentinel")?(d=[],e[5]=d):d=e[5];const p=E.useRef(d),y=E.useRef(!1);let g;e[6]!==c||e[7]!==l?(g=A=>{c.setQueryData(l,q=>q&&Nt({...q,resources:{...q.resources,[A.type]:A.state},resourceCounts:{...q.resourceCounts,[A.type]:A.count}}))},e[6]=c,e[7]=l,e[8]=g):g=e[8];const h=g;let m;e[9]!==u||e[10]!==o?(m=async()=>{const A=await L.GetWatchState(o,{connection:u});if(!A)throw new Error("Failed to get watch state: null response");return Nt(A)},e[9]=u,e[10]=o,e[11]=m):m=e[11];const v=i&&!!o&&!!u;let S;e[12]!==l||e[13]!==m||e[14]!==v?(S={queryKey:l,queryFn:m,enabled:v,refetchInterval:jr},e[12]=l,e[13]=m,e[14]=v,e[15]=S):S=e[15];const b=O.useQuery(S);let w,x;e[16]!==h||e[17]!==u||e[18]!==i||e[19]!==o?(x=()=>{if(y.current=!1,p.current=[],!i||!u)return;const A=K.On(`${o}/${u}/watch/STATE`,q=>{const j=q.data;j.route.connection===u&&(y.current?h(j):p.current.push(j))});return()=>{A(),y.current=!1,p.current=[]}},w=[o,u,i,h],e[16]=h,e[17]=u,e[18]=i,e[19]=o,e[20]=w,e[21]=x):(w=e[20],x=e[21]),E.useEffect(x,w);let I,_;e[22]!==h||e[23]!==b.data?(I=()=>{if(!b.data||y.current)return;y.current=!0;const A=p.current;p.current=[];for(const q of A)h(q)},_=[b.data,h],e[22]=h,e[23]=b.data,e[24]=I,e[25]=_):(I=e[24],_=e[25]),E.useEffect(I,_);let R;e[26]!==b.data?.resources?(R=Object.values(b.data?.resources??{}),e[26]=b.data?.resources,e[27]=R):R=e[27];const N=R;let M;e[28]!==N?(M=N.filter($r),e[28]=N,e[29]=M):M=e[29];const k=M.length;let F;e[30]!==b.data?.resources?(F=A=>b.data?.resources[A],e[30]=b.data?.resources,e[31]=F):F=e[31];const C=N.length>0&&k===N.length,T=N.length?k/N.length:0,P=b.data?.errorCount??0;let $;return e[32]!==b||e[33]!==F||e[34]!==C||e[35]!==T||e[36]!==P?($={summary:b,getResourceState:F,isFullySynced:C,syncProgress:T,errorCount:P,guarantee:"bestEffort"},e[32]=b,e[33]=F,e[34]=C,e[35]=T,e[36]=P,e[37]=$):$=e[37],$};function Mr(t){return t!==Q.WatchState.WatchStateIdle&&t!==Q.WatchState.WatchStateSyncing}function jr(t){const e=Object.values(t.state.data?.resources??{});return e.length&&e.every(Mr)?!1:3e3}function $r(t){return t!==Q.WatchState.WatchStateIdle&&t!==Q.WatchState.WatchStateSyncing}const Wr=()=>{const t=W.c(16);let e;t[0]===Symbol.for("react.memo_cache_sentinel")?(e=new Map,t[0]=e):e=t[0];const[r,n]=E.useState(e);let s;t[1]===Symbol.for("react.memo_cache_sentinel")?(s=new Map,t[1]=s):s=t[1];const i=E.useRef(s);let o;t[2]===Symbol.for("react.memo_cache_sentinel")?(o=new Map,t[2]=o):o=t[2];const c=E.useRef(o);let u;t[3]===Symbol.for("react.memo_cache_sentinel")?(u=v=>{const S=v.data,b=St(S.pluginID,S),w=at(i.current,S.pluginID,S),x=ct(w);if(n(I=>{const _=new Map(I);return _.set(b,x),_}),c.current.has(b)&&(clearTimeout(c.current.get(b)),c.current.delete(b)),ze(x)){const I=setTimeout(()=>{n(_=>{const R=new Map(_);return R.delete(b),R}),i.current.delete(b),c.current.delete(b)},5e3);c.current.set(b,I)}},t[3]=u):u=t[3];const a=u;let f,l;t[4]===Symbol.for("react.memo_cache_sentinel")?(f=()=>{const v=c.current,S=K.On("watch/STATE",a);return()=>{S();for(const b of v.values())clearTimeout(b);v.clear()}},l=[a],t[4]=f,t[5]=l):(f=t[4],l=t[5]),E.useEffect(f,l);let d,p,y,g;t[6]!==r?(y=Array.from(r.values()),d=Ht(y),p=y.find(Ur)??y[0]??null,g=Vt(y),t[6]=r,t[7]=d,t[8]=p,t[9]=y,t[10]=g):(d=t[7],p=t[8],y=t[9],g=t[10]);const h=g;let m;return t[11]!==h||t[12]!==d||t[13]!==p||t[14]!==y?(m={syncs:y,hasSyncing:d,primarySync:p,aggregateProgress:h},t[11]=h,t[12]=d,t[13]=p,t[14]=y,t[15]=m):m=t[15],m};function Ur(t){return!ze(t)}const nn=()=>{const t=E.useContext(yt);if(!t)throw new Error("useOperations must be used within an OperationsProvider");return t};function Ue(t){switch(t.kind){case"null":return null;case"bool":case"string":case"double":case"timestamp":return t.value;case"int64":case"uint64":{const e=BigInt(t.value);return e>=-9007199254740991n&&e<=9007199254740991n?Number(e):e}case"list":return t.value.map(Ue);case"map":return Object.fromEntries(Object.entries(t.value).map(([e,r])=>[e,Ue(r)]))}}function ut(t){for(let e=0;e<t.length;e++){const r=t.charCodeAt(e);if(r>=55296&&r<=56319){const n=t.charCodeAt(++e);if(!(n>=56320&&n<=57343))throw new TypeError("Resource strings require valid Unicode")}else if(r>=56320&&r<=57343)throw new TypeError("Resource strings require valid Unicode")}return t}function dt(t){const e=BigInt(t);if(e>=-(1n<<63n)&&e<=(1n<<63n)-1n)return{kind:"int64",value:e.toString()};if(e>=0n&&e<=(1n<<64n)-1n)return{kind:"uint64",value:e.toString()};throw new RangeError("Integer exceeds the resource Value range")}function ft(t){if(t===null)return{kind:"null"};if(typeof t=="boolean")return{kind:"bool",value:t};if(typeof t=="string")return{kind:"string",value:ut(t)};if(typeof t=="bigint")return dt(t.toString());if(typeof t=="number"){if(!Number.isFinite(t))throw new TypeError("Resource values require finite numbers");if(Number.isInteger(t)&&!Object.is(t,-0)){if(!Number.isSafeInteger(t))throw new RangeError("Use bigint for exact resource integers");return dt(t.toString())}return{kind:"double",value:t}}if(Array.isArray(t))return{kind:"list",value:t.map(ft)};if(typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype)return{kind:"map",value:Object.fromEntries(Object.entries(t).map(([e,r])=>[ut(e),ft(r)]))};throw new TypeError("Unsupported resource value")}function pt(t){switch(t.kind){case"null":return"null";case"bool":case"string":case"timestamp":return JSON.stringify(t.value);case"int64":case"uint64":return t.value;case"double":{if(!Number.isFinite(t.value))throw new TypeError("Resource values require finite numbers");if(Object.is(t.value,-0))return"-0.0";const e=JSON.stringify(t.value);return/[.eE]/.test(e)?e:`${e}.0`}case"list":return`[${t.value.map(pt).join(",")}]`;case"map":return`{${Object.entries(t.value).map(([e,r])=>`${JSON.stringify(e)}:${pt(r)}`).join(",")}}`}}function Qr(t){let e=0;const r=()=>{throw new SyntaxError(`Invalid resource JSON at offset ${e}`)},n=()=>{for(;e<t.length&&/[\t\n\r ]/.test(t[e]);)e++},s=()=>{const c=e++;for(;e<t.length;){const u=t[e++];if(u==="\\"){e++;continue}if(u==='"')return ut(JSON.parse(t.slice(c,e)))}return r()},i=c=>{if(c>64)throw new RangeError("Resource JSON exceeds maximum depth");n();const u=t[e];if(u==='"')return{kind:"string",value:s()};if(u==="["){e++,n();const l=[];if(t[e]==="]")return e++,{kind:"list",value:l};for(;e<t.length;){if(l.push(i(c+1)),n(),t[e]==="]")return e++,{kind:"list",value:l};if(t[e++]!==",")return r()}return r()}if(u==="{"){e++,n();const l=[],d=new Set;if(t[e]==="}")return e++,{kind:"map",value:{}};for(;e<t.length;){if(n(),t[e]!=='"')return r();const p=s();if(d.has(p))throw new SyntaxError(`Duplicate resource JSON key: ${p}`);if(d.add(p),n(),t[e++]!==":")return r();if(l.push([p,i(c+1)]),n(),t[e]==="}")return e++,{kind:"map",value:Object.fromEntries(l)};if(t[e++]!==",")return r()}return r()}for(const[l,d]of[["null",{kind:"null"}],["true",{kind:"bool",value:!0}],["false",{kind:"bool",value:!1}]])if(t.startsWith(l,e))return e+=l.length,d;const a=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(t.slice(e));if(!a)return r();if(e+=a[0].length,!/[.eE]/.test(a[0])&&a[0]!=="-0")return dt(a[0]);const f=Number(a[0]);if(!Number.isFinite(f))throw new RangeError("Resource JSON number must be finite");return{kind:"double",value:f}},o=i(0);return n(),e!==t.length?r():o}const Gr=({pluginID:t})=>{const e=G(t),{showSnackbar:r}=ue(),{addOperation:n,updateOperation:s}=nn(),i=E.useRef(new Set),o=E.useCallback((a,f=!1)=>{a.disposed||(a.disposed=!0,a.unsubscribe?.(),a.open?.cancel(),a.attach?.cancel(),a.handle&&(L.CancelStreamAction(a.handle).catch(()=>{}),f&&s(a.handle,{status:"cancelled",message:"Cancelled",completedAt:Date.now()})),i.current.delete(a))},[s]);E.useEffect(()=>()=>{for(const a of i.current)o(a,!0)},[e,o]);const c=E.useCallback(async({request:a,label:f})=>{const l={disposed:!1,terminal:!1,sequence:0};i.current.add(l);try{if(await Fe(e,a.route.connection),l.disposed)throw new Error("Stream action was cancelled before the connection became ready");l.open=L.StreamAction(e,a);const d=await l.open;if(l.open=void 0,l.disposed)return L.CancelStreamAction(d).catch(()=>{}),d;l.handle=d,n({id:d,label:f,resourceKey:a.typeTarget?.type??a.reference?.address.type??"",resourceName:a.reference?.address.id??"",connectionID:a.route.connection,status:"running",startedAt:Date.now()});const p=g=>{if(l.disposed||!Number.isSafeInteger(g.sequence)||g.sequence<=l.sequence)return;l.sequence=g.sequence;const h=g.event,m=h.data?Ue(h.data):void 0,v=m&&typeof m=="object"&&!Array.isArray(m)?m:{};if(h.type==="error"){l.terminal=!0;const S=ce(h.error);s(d,{status:Le(S)?"cancelled":"error",message:S.title,completedAt:Date.now()}),_e(r,S,f),o(l)}else if(h.type==="complete"){l.terminal=!0;const S=typeof v.message=="string"?v.message:`${f} completed`;s(d,{status:"completed",message:S,completedAt:Date.now()}),r(S,"success"),o(l)}else s(d,{message:typeof v.message=="string"?v.message:void 0,progress:(typeof v.ready=="number"||typeof v.ready=="bigint")&&(typeof v.desired=="number"||typeof v.desired=="bigint")?{ready:Number(v.ready),desired:Number(v.desired)}:void 0})};l.unsubscribe=K.On(`action/stream/${d}`,g=>p(g.data)),l.attach=L.AttachStreamAction(d);const y=await l.attach;return l.attach=void 0,p(y),d}catch(d){if(l.terminal&&l.handle)return l.handle;throw l.disposed||(l.handle&&s(l.handle,{status:Le(d)?"cancelled":"error",message:ce(d).title,completedAt:Date.now()}),_e(r,d,`Failed to start "${a.action}"`)),o(l),d}},[e,n,s,r,o]),u=E.useCallback(a=>{for(const f of i.current)if(f.handle===a){o(f,!0);return}},[o]);return{startStreamAction:c,cancelStreamAction:u}};function rn(t,e){return`${t}/${e}/graph/CHANGED`}function Je(t,e,r,n){const s=W.c(16),i=O.useQueryClient(),o=E.useRef(r);let c,u;s[0]!==r?(c=()=>{o.current=r},u=[r],s[0]=r,s[1]=c,s[2]=u):(c=s[1],u=s[2]),E.useLayoutEffect(c,u);let a;s[3]!==r?(a=JSON.stringify(r),s[3]=r,s[4]=a):a=s[4];const f=a;let l;s[5]!==e||s[6]!==n||s[7]!==t||s[8]!==i?(l=()=>{if(!n||!t||!e)return;const p=K.On(rn(t,e),()=>{i.invalidateQueries({queryKey:o.current,exact:!0})});return()=>{p()}},s[5]=e,s[6]=n,s[7]=t,s[8]=i,s[9]=l):l=s[9];let d;s[10]!==e||s[11]!==n||s[12]!==f||s[13]!==t||s[14]!==i?(d=[i,t,e,f,n],s[10]=e,s[11]=n,s[12]=f,s[13]=t,s[14]=i,s[15]=d):d=s[15],E.useEffect(l,d)}const Kr={owns:{outgoing:"Owns",incoming:"Owned by"},runs_on:{outgoing:"Runs on",incoming:"Running here"},uses:{outgoing:"Uses",incoming:"Used by"},exposes:{outgoing:"Exposes",incoming:"Exposed by"},manages:{outgoing:"Manages",incoming:"Managed by"},member_of:{outgoing:"Member of",incoming:"Members"},selects:{outgoing:"Selects",incoming:"Selected by"}};function Br(t,e){const r=Kr[t];if(r)return r[e];const n=t.replace(/_/g," ");return e==="outgoing"?n:`${n} (incoming)`}function sn(t,e){return e.map(r=>{const n=Q.sameGraphNode(r.source,t);return{resource:n?r.target:r.source,type:r.type,direction:n?"outgoing":"incoming",label:r.label}})}const zr=t=>{const e=W.c(38),{pluginID:r,reference:n,route:s,direction:i,relationshipType:o,enabled:c,refetchInterval:u}=t,a=i===void 0?"both":i,f=c===void 0?!0:c,l=u===void 0?!1:u,d=G(r),p=o??null;let y;e[0]!==a||e[1]!==d||e[2]!==n||e[3]!==s||e[4]!==p?(y=["RESOURCE_RELATED",d,n,s,a,p],e[0]=a,e[1]=d,e[2]=n,e[3]=s,e[4]=p,e[5]=y):y=e[5];const g=y,h=f&&!!n.address.id;let m;e[6]!==d||e[7]!==s.connection||e[8]!==h?(m={pluginID:d,connectionID:s.connection,enabled:h},e[6]=d,e[7]=s.connection,e[8]=h,e[9]=m):m=e[9];const v=oe(m),S=ae(d,s.connection),b=f&&!!d&&!!s.connection&&!!n.address.id&&v.phase==="connected";Je(d,s.connection,g,b);let w;e[10]!==a||e[11]!==S||e[12]!==d||e[13]!==b||e[14]!==n||e[15]!==o||e[16]!==s?(w=b?M=>{const{signal:k,queryKey:F}=M;return S(F,k,()=>L.GetRelated(d,n,s,a,o??null))}:O.skipToken,e[10]=a,e[11]=S,e[12]=d,e[13]=b,e[14]=n,e[15]=o,e[16]=s,e[17]=w):w=e[17];let x;e[18]!==b||e[19]!==g||e[20]!==l||e[21]!==w?(x={queryKey:g,queryFn:w,enabled:b,refetchInterval:l},e[18]=b,e[19]=g,e[20]=l,e[21]=w,e[22]=x):x=e[22];const I=O.useQuery(x);let _,R;if(e[23]!==d||e[24]!==I.data||e[25]!==n||e[26]!==s){const M={pluginId:d,reference:n};let k;e[29]!==I.data?(k=I.data??[],e[29]=I.data,e[30]=k):k=e[30],_=k,R=sn(M,_),e[23]=d,e[24]=I.data,e[25]=n,e[26]=s,e[27]=_,e[28]=R}else _=e[27],R=e[28];let N;return e[31]!==_||e[32]!==I.error||e[33]!==I.isFetching||e[34]!==I.isLoading||e[35]!==I.refetch||e[36]!==R?(N={related:R,edges:_,isLoading:I.isLoading,isFetching:I.isFetching,error:I.error,refetch:I.refetch},e[31]=_,e[32]=I.error,e[33]=I.isFetching,e[34]=I.isLoading,e[35]=I.refetch,e[36]=R,e[37]=N):N=e[37],N},Jr=t=>{const e=W.c(27),{pluginID:r,reference:n,route:s,maxDepth:i,enabled:o,refetchInterval:c}=t,u=i===void 0?3:i,a=o===void 0?!0:o,f=c===void 0?!1:c,l=G(r);let d;e[0]!==u||e[1]!==l||e[2]!==n||e[3]!==s?(d=["RESOURCE_DEPENDENCY_TREE",l,n,s,u],e[0]=u,e[1]=l,e[2]=n,e[3]=s,e[4]=d):d=e[4];const p=d,y=a&&!!n.address.id;let g;e[5]!==l||e[6]!==s.connection||e[7]!==y?(g={pluginID:l,connectionID:s.connection,enabled:y},e[5]=l,e[6]=s.connection,e[7]=y,e[8]=g):g=e[8];const h=oe(g),m=ae(l,s.connection),v=a&&!!l&&!!s.connection&&!!n.address.id&&h.phase==="connected";Je(l,s.connection,p,v);let S;e[9]!==m||e[10]!==u||e[11]!==l||e[12]!==v||e[13]!==n||e[14]!==s?(S=v?_=>{const{signal:R,queryKey:N}=_;return m(N,R,()=>L.GetDependencyTree(l,n,s,u))}:O.skipToken,e[9]=m,e[10]=u,e[11]=l,e[12]=v,e[13]=n,e[14]=s,e[15]=S):S=e[15];let b;e[16]!==v||e[17]!==p||e[18]!==f||e[19]!==S?(b={queryKey:p,queryFn:S,enabled:v,refetchInterval:f},e[16]=v,e[17]=p,e[18]=f,e[19]=S,e[20]=b):b=e[20];const w=O.useQuery(b),x=w.data??null;let I;return e[21]!==w.error||e[22]!==w.isFetching||e[23]!==w.isLoading||e[24]!==w.refetch||e[25]!==x?(I={tree:x,isLoading:w.isLoading,isFetching:w.isFetching,error:w.error,refetch:w.refetch},e[21]=w.error,e[22]=w.isFetching,e[23]=w.isLoading,e[24]=w.refetch,e[25]=x,e[26]=I):I=e[26],I},Hr=t=>{const e=W.c(28),{pluginID:r,reference:n,route:s,upDepth:i,downDepth:o,enabled:c}=t,u=i===void 0?2:i,a=o===void 0?3:o,f=c===void 0?!0:c,l=G(r);let d;e[0]!==a||e[1]!==l||e[2]!==n||e[3]!==s||e[4]!==u?(d=["RESOURCE_GRAPH",l,n,s,u,a],e[0]=a,e[1]=l,e[2]=n,e[3]=s,e[4]=u,e[5]=d):d=e[5];const p=d,y=f&&!!n.address.id;let g;e[6]!==l||e[7]!==s.connection||e[8]!==y?(g={pluginID:l,connectionID:s.connection,enabled:y},e[6]=l,e[7]=s.connection,e[8]=y,e[9]=g):g=e[9];const h=oe(g),m=ae(l,s.connection),v=f&&!!l&&!!s.connection&&!!n.address.id&&h.phase==="connected";Je(l,s.connection,p,v);let S;e[10]!==a||e[11]!==m||e[12]!==l||e[13]!==v||e[14]!==n||e[15]!==s||e[16]!==u?(S=v?_=>{const{signal:R,queryKey:N}=_;return m(N,R,()=>L.GetSubgraph(l,n,s,u,a))}:O.skipToken,e[10]=a,e[11]=m,e[12]=l,e[13]=v,e[14]=n,e[15]=s,e[16]=u,e[17]=S):S=e[17];let b;e[18]!==v||e[19]!==p||e[20]!==S?(b={queryKey:p,queryFn:S,enabled:v,retry:!1},e[18]=v,e[19]=p,e[20]=S,e[21]=b):b=e[21];const w=O.useQuery(b),x=w.data??null;let I;return e[22]!==w.error||e[23]!==w.isFetching||e[24]!==w.isLoading||e[25]!==w.refetch||e[26]!==x?(I={graph:x,isLoading:w.isLoading,isFetching:w.isFetching,error:w.error,refetch:w.refetch},e[22]=w.error,e[23]=w.isFetching,e[24]=w.isLoading,e[25]=w.refetch,e[26]=x,e[27]=I):I=e[27],I},Vr=()=>{const t=E.useContext(gt);if(!t)throw new Error("useSettings must be used within a SettingsProvider");return t},Yr=1,Zr=t=>{const e=W.c(19);let r,n,s,i;if(e[0]!==t){const{to:g,withinContext:h,onClick:m,onAuxClick:v,...S}=t;i=g,n=m,r=v,s=S,e[0]=t,e[1]=r,e[2]=n,e[3]=s,e[4]=i}else r=e[1],n=e[2],s=e[3],i=e[4];const{pluginId:o}=Ge(),c=E.useContext(Ke);o||console.error("Link used outside of a plugin context");const u=`/_plugin/${o}${i.startsWith("/")?"":"/"}${i}`;let a;e[5]!==n||e[6]!==u||e[7]!==c?(a=g=>{n?.(g),!(g.defaultPrevented||!c||!(g.ctrlKey||g.metaKey))&&(g.preventDefault(),c.openInNewTab(u,{background:!0}))},e[5]=n,e[6]=u,e[7]=c,e[8]=a):a=e[8];const f=a;let l;e[9]!==r||e[10]!==u||e[11]!==c?(l=g=>{r?.(g),!(g.defaultPrevented||!c||g.button!==Yr)&&(g.preventDefault(),c.openInNewTab(u,{background:!0}))},e[9]=r,e[10]=u,e[11]=c,e[12]=l):l=e[12];const d=l;let p;e[13]===Symbol.for("react.memo_cache_sentinel")?(p={textDecoration:"none",color:"inherit"},e[13]=p):p=e[13];let y;return e[14]!==d||e[15]!==f||e[16]!==s||e[17]!==u?(y=D.jsx($e.Link,{style:p,...s,to:u,onClick:f,onAuxClick:d}),e[14]=d,e[15]=f,e[16]=s,e[17]=u,e[18]=y):y=e[18],y};function Xr(){const t=W.c(10),e=$e.useNavigate(),r=$e.useLocation(),{pluginId:n}=Ge();n||console.error("usePluginRouter used outside of a plugin context");const s=`/_plugin/${n}`;let i;t[0]!==r.pathname||t[1]!==s?(i=r.pathname.startsWith(s)?r.pathname.slice(s.length)||"/":r.pathname,t[0]=r.pathname,t[1]=s,t[2]=i):i=t[2];const o=i;let c;t[3]!==e||t[4]!==s?(c=(f,l)=>{const{...d}=l??{};f.startsWith("/")?e(`${s}${f}`,d):e(f,d)},t[3]=e,t[4]=s,t[5]=c):c=t[5];const u=c;let a;return t[6]!==r||t[7]!==u||t[8]!==o?(a={location:r,navigate:u,pluginPath:o},t[6]=r,t[7]=u,t[8]=o,t[9]=a):a=t[9],a}class es{}class ts{_extensions;root;pages;_routes;get extensions(){return this._extensions||[]}get Routes(){if(!this._routes&&this.root)return[{path:"",index:!0,Component:this.root}];if(!this._routes?.length)throw new Error("cannot use plugin without a root page or router");return this._routes}get Window(){if(!this._routes&&this.root)return D.jsx(this.root,{});const e=$e.createMemoryRouter(this._routes||[]);return D.jsx(ln.RouterProvider,{router:e})}registerExtensionPoints(e){return this._extensions=e||[],this}setRootPage(e){return this.root=e,this}withPage(e,r){return this.pages||(this.pages={}),this.pages[e]?(console.warn("Cannot register page with the same name. Please use a different name."),this):(this.pages[e]=r,this)}withRoutes(e){return this._routes=e,this}}var on=(t=>(t.MISSING_MANIFEST="MISSING_MANIFEST",t.MISSING_PLUGIN="MISSING_PLUGIN",t.MISSING_ENTRYPOINT="MISSING_ENTRYPOINT",t))(on||{});const cn="omniview/global-search/open";function ns(t={}){window.dispatchEvent(new CustomEvent(cn,{detail:t}))}const an="omniview/resource/icons";class rs extends E.Component{state={failed:!1,resetToken:this.props.resetToken};static getDerivedStateFromProps(e,r){return e.resetToken!==r.resetToken?{failed:!1,resetToken:e.resetToken}:null}static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?this.props.fallback:this.props.children}}function ss(t,e){try{return t?.schemaVersion!==1||typeof t.resolve!="function"?void 0:t.resolve(e)}catch{return}}function os(t){const e=W.c(7);let r,n;e[0]!==t?({icon:r,...n}=t,e[0]=t,e[1]=r,e[2]=n):(r=e[1],n=e[2]);const s=n["aria-hidden"]??!0;let i;return e[3]!==r||e[4]!==n||e[5]!==s?(i=D.jsx(r,{...n,"aria-hidden":s}),e[3]=r,e[4]=n,e[5]=s,e[6]=i):i=e[6],i}function is(t){const e=W.c(17);let r,n,s,i;e[0]!==t?({pluginId:n,resourceKey:i,fallback:r,...s}=t,e[0]=t,e[1]=r,e[2]=n,e[3]=s,e[4]=i):(r=e[1],n=e[2],s=e[3],i=e[4]);const{version:o,contributions:c}=mt(an);let u;e[5]!==r||e[6]!==s?(u=r===void 0?D.jsx("svg",{width:s.size??16,height:s.size??16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",className:s.className,"aria-hidden":s["aria-hidden"]??!0,children:D.jsx("path",{d:"m12 3 9 5v8l-9 5-9-5V8l9-5Zm0 9 9-4M12 12 3 8m9 4v9"})}):r,e[5]=r,e[6]=s,e[7]=u):u=e[7];const a=u;let f;if(e[8]!==c||e[9]!==a||e[10]!==n||e[11]!==s||e[12]!==i||e[13]!==o){f=Symbol.for("react.early_return_sentinel");e:for(const d of c){if(d.plugin!==n)continue;const p=ss(d.value,i);if(p){f=D.jsx(rs,{resetToken:d,fallback:a,children:D.jsx(E.Suspense,{fallback:a,children:D.jsx(os,{icon:p,...s})})},JSON.stringify([n,i,o,d.id]));break e}}e[8]=c,e[9]=a,e[10]=n,e[11]=s,e[12]=i,e[13]=o,e[14]=f}else f=e[14];if(f!==Symbol.for("react.early_return_sentinel"))return f;let l;return e[15]!==a?(l=D.jsx(D.Fragment,{children:a}),e[15]=a,e[16]=l):l=e[16],l}function cs(t){const e=W.c(23);let r,n,s;e[0]!==t?({pluginID:r,enabled:s,...n}=t,e[0]=t,e[1]=r,e[2]=n,e[3]=s):(r=e[1],n=e[2],s=e[3]);const i=s===void 0?!0:s,o=G(r),c=i&&!!n.type;let u;e[4]!==o||e[5]!==n.route.connection||e[6]!==c?(u={pluginID:o,connectionID:n.route.connection,enabled:c},e[4]=o,e[5]=n.route.connection,e[6]=c,e[7]=u):u=e[7];const a=oe(u),f=ae(o,n.route.connection),l=i&&!!o&&!!n.route.connection&&!!n.type&&a.phase==="connected";let d;e[8]!==o||e[9]!==n?(d=[o,"resource-v2","resolve-target",n],e[8]=o,e[9]=n,e[10]=d):d=e[10];let p;e[11]!==f||e[12]!==o||e[13]!==l||e[14]!==n?(p=l?v=>{const{signal:S,queryKey:b}=v;return f(b,S,()=>L.ResolveTarget(o,n))}:O.skipToken,e[11]=f,e[12]=o,e[13]=l,e[14]=n,e[15]=p):p=e[15];let y;e[16]!==l||e[17]!==d||e[18]!==p?(y={queryKey:d,queryFn:p,enabled:l,retry:!1,placeholderData:void 0},e[16]=l,e[17]=d,e[18]=p,e[19]=y):y=e[19];const g=O.useQuery(y),h=l&&g.isSuccess&&!g.isFetching?g.data:void 0;let m;return e[20]!==g||e[21]!==h?(m={...g,data:h},e[20]=g,e[21]=h,e[22]=m):m=e[22],m}exports.SyncPolicy=Q.SyncPolicy;exports.WatchState=Q.WatchState;exports.sameGraphNode=Q.sameGraphNode;exports.ALL_SESSIONS_KEY=Ce;exports.BottomDrawerContext=Ft;exports.ConfirmationModalContext=Mt;exports.ConnectionBoundary=zn;exports.ConnectionBoundaryFallback=Yt;exports.ErrorTypes=Y;exports.ExtensionPointRegistry=_n;exports.ExtensionPointStore=Ut;exports.ExtensionProvider=In;exports.GLOBAL_SEARCH_OPEN_EVENT=cn;exports.Link=Zr;exports.OperationsContext=yt;exports.OperationsProvider=yn;exports.PluginContext=Qe;exports.PluginContextProvider=dn;exports.PluginErrorCode=on;exports.PluginWindow=ts;exports.PluginWindowRootProps=es;exports.RESOURCE_ICON_EXTENSION_POINT_ID=an;exports.ResourceIcon=is;exports.RightDrawerContext=qt;exports.SettingsContext=gt;exports.SettingsProvider=hn;exports.SnackbarProvider=Rn;exports.WindowActionsContext=Ke;exports.WindowActionsProvider=mn;exports.actionToSnackbar=Pt;exports.applyBatch=lt;exports.connectionListQueryKey=Jt;exports.createErrorHandler=ne;exports.defaultState=Lt;exports.graphChangedEvent=rn;exports.isCancelledError=Le;exports.jsonTextToValue=Qr;exports.jsonToValue=ft;exports.navigateActivePage=Tt;exports.openGlobalSearch=ns;exports.parseAppError=ce;exports.readCurrentConnectionMetadataString=sr;exports.registerActivePageNavigator=un;exports.relationshipLabel=Br;exports.requireConnectionReady=Fe;exports.resourceQueryKeys=me;exports.showAppError=_e;exports.toRelatedResources=sn;exports.useActiveSyncs=Wr;exports.useBottomDrawer=wt;exports.useConfirmationModal=Er;exports.useConnection=Tn;exports.useConnectionMetadata=Vn;exports.useConnectionMetadataConnections=er;exports.useConnectionMetadataSelector=nr;exports.useConnectionProfiles=Mn;exports.useConnectionReadiness=oe;exports.useConnectionStatus=qn;exports.useConnections=Pn;exports.useDependencyTree=Jr;exports.useEditorSchemas=Fr;exports.useEventBatcher=tn;exports.useExec=ar;exports.useExecuteAction=Lr;exports.useExtensionPoint=Cn;exports.useExtensionPointSnapshot=mt;exports.useExtensionRegistry=Wt;exports.useLogs=lr;exports.useMetricProviders=dr;exports.useMetricProvidersForResource=en;exports.useMetricStream=pr;exports.useOperations=nn;exports.usePluginContext=Ge;exports.usePluginData=ir;exports.usePluginRouter=Xr;exports.usePluginSettings=pn;exports.usePortForwardSessions=hr;exports.useRefetchOnGraphChange=Je;exports.useRelatedResources=zr;exports.useResolvedPluginId=G;exports.useResolvedResourceTarget=cs;exports.useResource=wr;exports.useResourceActions=Ar;exports.useResourceAreaComponent=Cr;exports.useResourceGraph=Hr;exports.useResourceGroups=Ir;exports.useResourceMetrics=fr;exports.useResourceMutations=Pr;exports.useResourcePortForwarder=br;exports.useResourceSearch=_r;exports.useResourceType=Dr;exports.useResourceTypes=kr;exports.useResources=Tr;exports.useRightDrawer=cr;exports.useScopeValues=Fn;exports.useSettings=Vr;exports.useSnackbar=ue;exports.useStreamAction=Gr;exports.useWatchState=qr;exports.useWindowActions=vn;exports.valueToJSON=Ue;exports.valueToJSONText=pt;exports.withConnectionReady=On;
|